Click here to Skip to main content
15,894,405 members
Articles / Web Development / HTML

.NET CLR Injection: Modify IL Code during Run-time

Rate me:
Please Sign up or sign in to vote.
4.98/5 (240 votes)
7 Aug 2014LGPL310 min read 598.6K   18.4K   352  
Modify methods' IL codes on runtime even if they have been JIT-compiled, supports release mode / x64 & x86, and variants of .NET versions, from 2.0 to 4.5.
;
;    EasyHook - The reinvention of Windows API hooking
; 
;    Copyright (C) 2009 Christoph Husse
;
;    This library is free software; you can redistribute it and/or
;    modify it under the terms of the GNU Lesser General Public
;    License as published by the Free Software Foundation; either
;    version 2.1 of the License, or (at your option) any later version.
;
;    This library is distributed in the hope that it will be useful,
;    but WITHOUT ANY WARRANTY; without even the implied warranty of
;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
;    Lesser General Public License for more details.
;
;    You should have received a copy of the GNU Lesser General Public
;    License along with this library; if not, write to the Free Software
;    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
;
;    Please visit http://www.codeplex.com/easyhook for more information
;    about the project and latest updates.
;

; This code was generated by IDA Pro 5.0, by disassembling the machine
; code of the x86 ILD engine. Of course I had to apply some tricky workarounds
; to get a label-based jump table instead of an value-base one, which would
; make the file uneditable... I also had to rewrite many sections to be
; compatible with 64-Bit processors. 

; I am not really sure where I got the related binary from but it was
; a dutch reverse engineering site with no license information applied!
; Of course it was downloadable for free...


.386
.model flat, c
.code

public GetInstructionLength_x86@8

GetInstructionLength_x86@8 PROC

		push	ebp		; start
		sub	esp, 27h
		mov	ebp, esp
		push	ecx
		push	edx
		push	esi
		push    edi
		call	StartLDE
		jmp	 F1_


		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F3_

		jmp	 F6_

		jmp	 F5_

		jmp	 F5_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F3_

		jmp	 F6_

		jmp	 F5_

		jmp	 Esc_2byte

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F3_

		jmp	 F6_

		jmp	 F5_

		jmp	 F5_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F3_

		jmp	 F6_

		jmp	 F5_

		jmp	 F6_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F3_

		jmp	 F6_

		jmp	 F12_

		jmp	 F5_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F3_

		jmp	 F6_

		jmp	 F12_

		jmp	 F5_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F3_

		jmp	 F6_

		jmp	 F12_

		jmp	 F5_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F3_

		jmp	 F6_

		jmp	 F12_

		jmp	 F5_

		jmp	 F11_

		jmp	 F11_

		jmp	 F11_

		jmp	 F11_

		jmp	 F11_

		jmp	 F11_

		jmp	 F11_

		jmp	 F11_

		jmp	 F10_

		jmp	 F10_

		jmp	 F10_

		jmp	 F10_

		jmp	 F10_

		jmp	 F10_

		jmp	 F10_

		jmp	 F10_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F17_

		jmp	 F1_

		jmp	 F12_

		jmp	 F12_

		jmp	 PrefOpSize

		jmp	 PrefAdSize

		jmp	 PUSH_Iv

		jmp	 IMUL_GvEvIv

		jmp	 F3_

		jmp	 F8_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F8_

		jmp	 G1_EvIv

		jmp	 G1_EbIb2

		jmp	 F8_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 POP_Ev

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 CALLF_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F20_

		jmp	 F21_

		jmp	 F20_

		jmp	 F21_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F3_

		jmp	 F6_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F7_

		jmp	 F7_

		jmp	 F7_

		jmp	 F7_

		jmp	 F7_

		jmp	 F7_

		jmp	 F7_

		jmp	 F7_

		jmp	 F8_

		jmp	 F8_

		jmp	 F19_

		jmp	 F2_

		jmp	 F17_

		jmp	 F17_

		jmp	 F8_

		jmp	 F13_

		jmp	 F15_

		jmp	 F2_

		jmp	 F19_

		jmp	 F2_

		jmp	 F2_

		jmp	 F3_

		jmp	 F5_

		jmp	 F2_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F14_

		jmp	 F14_

		jmp	 F2_

		jmp	 F2_

		jmp	 D8_

		jmp	 D9_

		jmp	 DA_

		jmp	 DB_

		jmp	 DC_

		jmp	 DD_

		jmp	 DE_

		jmp	 DF_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F3_

		jmp	 F6_

		jmp	 F6_

		jmp	 JMP_far

		jmp	 F3_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F12_

		jmp	 F2_

		jmp	 PrefREPNE

		jmp	 PrefREP

		jmp	 F2_

		jmp	 F2_

		jmp	 G3_Eb

		jmp	 G3_Ev

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 G4_IncDec

		jmp	 G5_IncDec

		jmp	 G6_

		jmp	 G7_

		jmp	 F1_

		jmp	 F1_

		jmp	 ECHEC_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 ECHEC_

		jmp	 F2_

		jmp	 ECHEC_

		jmp	 F1_

		jmp	 F2_

		jmp	 ECHEC_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 G16_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F18_

		jmp	 F18_

		jmp	 F18_

		jmp	 F18_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 Esc_tableA4

		jmp	 ECHEC_

		jmp	 Esc_tableA5

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F4_

		jmp	 F4_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 G12_

		jmp	 G13_

		jmp	 G14_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F2_

		jmp	 F1_

		jmp	 F1_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F6_

		jmp	 F6_

		jmp	 F16_

		jmp	 F16_

		jmp	 F16_

		jmp	 F16_

		jmp	 F6_

		jmp	 F6_

		jmp	 F6_

		jmp	 F6_

		jmp	 F6_

		jmp	 F6_

		jmp	 F6_

		jmp	 F6_

		jmp	 F6_

		jmp	 F6_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F1_

		jmp	 F8_

		jmp	 F1_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F1_

		jmp	 F8_

		jmp	 F1_

		jmp	 G15_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F2_

		jmp	 G8_EvIb

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 G9_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F2_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F23_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F23_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 LDDQU_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 ECHEC_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 F4_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 F4_

		jmp	 F4_

		jmp	 ECHEC_

		jmp	 F4_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 F1_

		jmp	 F1_

		jmp	 F1_

		jmp	 ECHEC_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 ECHEC_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 F4_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 F22_

		jmp	 F22_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 FF4_

		jmp	 FF4_

		jmp	 FF4_

		jmp	 FF4_

		jmp	 FF4_

		jmp	 FF4_

		jmp	 FF4_

		jmp	 F1_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 FF4_

		jmp	 FF4_

		jmp	 FF4_

		jmp	 FF4_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 FF4_

		jmp	 FF4_

		jmp	 FF4_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 FF4_

		jmp	 FF4_

		jmp	 FF4_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 FF4_

		jmp	 FF4_

		jmp	 FF4_

		jmp	 FF4_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 ECHEC_

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 Addr_SIB

		jmp	 Addr_disp32

		jmp	 Addr_ESI

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 Addr_SIB

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 Addr_SIB

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

		jmp	 NOTHING

GetInstructionLength_x86@8 ENDP

; ��������������� S U B	R O U T	I N E ���������������������������������������


		public StartLDE
StartLDE	proc near		; CODE XREF: LDE(x,x)+9p
		pop	esi
		push	dword ptr [ebp+2Fh]
		pop	dword ptr [ebp+23h]
		mov	byte ptr [ebp+22h], 0
		mov	dword ptr [ebp+2], 20h ; ' '
		mov	dword ptr [ebp+6], 20h ; ' '
		cmp	dword ptr [ebp+33h], 40h ; '@'
		jnz	short loc_10B4
		mov	dword ptr [ebp+6], 40h ; '@'

loc_10B4:				; CODE XREF: StartLDE+1Dj
		mov	eax, [ebp+23h]
		movzx	ecx, byte ptr [eax]
		;lea	eax, [eax+ecx*4]
		;add	eax, [eax]
		;add	eax, 4
		;call	eax
		mov eax, ecx
		mov ecx, 5
		mul ecx
		add eax, esi
		call	eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_10CF
		mov	eax, [ebp+23h]
		sub	eax, [ebp+2Fh]

loc_10CF:				; CODE XREF: StartLDE+39j
		pop edi
		pop	esi
		pop	edx
		pop	ecx
		add	esp, 27h
		pop	ebp
		retn	8
StartLDE	endp ; sp =  3Ch


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public MOD_RM
MOD_RM		proc near		; CODE XREF: F1_p F18_p ...
		mov	dword ptr [ebp+1Ah], 0
		mov	eax, [ebp+23h]
		movzx	eax, byte ptr [eax+1]
		and	eax, 0C7h
		mov	ecx, 40h ; '@'
		xor	edx, edx
		div	ecx
		mov	[ebp+0Ah], eax
		cmp	eax, 1
		jnz	short loc_1101
		add	dword ptr [ebp+1Ah], 1

loc_1101:				; CODE XREF: MOD_RM+22j
		cmp	eax, 2
		jnz	short loc_110A
		add	dword ptr [ebp+1Ah], 4

loc_110A:				; CODE XREF: MOD_RM+2Bj
		mov	[ebp+0Eh], edx
		;lea	eax, [eax+edx*4]
		;add	eax, [eax]
		;add	eax, 4
		;call	eax
		shl	eax, 5
		
		mov ecx, 4
		mov edi, edx
		mov edx, 0
		div ecx
		
		mov edx, 5
		mul edx
		
		mov [ebp + 30], eax
		mov eax, edi
		mov edx, 5
		mul edx
		mov edx, [ebp + 30]
		add eax, edx
		add eax, esi
		add	eax, 1400h
		call	eax
		retn
MOD_RM		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public Reg_Opcode
Reg_Opcode	proc near		; CODE XREF: POP_Evp G3_Eb+5p	...
		mov	eax, [ebp+23h]
		movzx	eax, byte ptr [eax+1]
		and	eax, 38h
		shr	eax, 3
		mov	[ebp+16h], eax
		retn
Reg_Opcode	endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public NOTHING
NOTHING		proc near		; CODE XREF: code:0000100Ej
					; code:00001012j ...
		retn
NOTHING		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public Addr_SIB
Addr_SIB	proc near		; CODE XREF: code:0000101Ej
					; code:0000103Ej ...
		cmp	dword ptr [ebp+6], 20h ; ' '
		jl	short locret_115B
		add	dword ptr [ebp+1Ah], 1
		mov	eax, [ebp+23h]
		movzx	eax, byte ptr [eax+2]
		and	eax, 7
		mov	[ebp+12h], eax
		cmp	dword ptr [ebp+12h], 5
		jnz	short locret_115B
		cmp	dword ptr [ebp+0Ah], 0
		jnz	short locret_115B
		add	dword ptr [ebp+1Ah], 4

locret_115B:				; CODE XREF: Addr_SIB+4j Addr_SIB+1Bj	...
		retn
Addr_SIB	endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public Addr_disp32
Addr_disp32	proc near		; CODE XREF: code:00001022j
		cmp	dword ptr [ebp+6], 20h ; ' '
		jl	short locret_1166
		add	dword ptr [ebp+1Ah], 4

locret_1166:				; CODE XREF: Addr_disp32+4j
		retn
Addr_disp32	endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public Addr_ESI
Addr_ESI	proc near		; CODE XREF: code:00001026j
		cmp	dword ptr [ebp+6], 10h
		jnz	short locret_1171
		add	dword ptr [ebp+1Ah], 2

locret_1171:				; CODE XREF: Addr_ESI+4j
		retn
Addr_ESI	endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F1_
F1_		proc near		; CODE XREF: LDE(x,x)+Ej
					; code:00000012j ...
		call	MOD_RM
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
F1_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F2_
F2_		proc near		; CODE XREF: code:0000014Ej
					; code:00000152j ...
		inc	dword ptr [ebp+23h]
		retn
F2_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F3_
F3_		proc near		; CODE XREF: code:0000001Ej
					; code:0000003Ej ...
		add	dword ptr [ebp+23h], 2
		retn
F3_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F4_
F4_		proc near		; CODE XREF: code:000005BEj
					; code:000005C2j ...
		cmp	dword ptr [ebp+2], 10h
		jnz	short loc_1197
		call	F1_
		retn


loc_1197:				; CODE XREF: F4_+4j
		call	ECHEC_
		retn
F4_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public FF4_
FF4_		proc near		; CODE XREF: code:00000C2Ej
					; code:00000C32j ...
		cmp	dword ptr [ebp+2], 10h
		jnz	short loc_11AC
		call	F1_
		inc	dword ptr [ebp+23h]
		retn


loc_11AC:				; CODE XREF: FF4_+4j
		call	ECHEC_
		retn
FF4_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F5_
F5_		proc near		; CODE XREF: code:00000026j
					; code:0000002Aj ...
		cmp	dword ptr [ebp+33h], 40h ; '@'
		jnz	short loc_11BE
		call	ECHEC_
		retn


loc_11BE:				; CODE XREF: F5_+4j
		inc	dword ptr [ebp+23h]
		retn
F5_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F6_
F6_		proc near		; CODE XREF: code:00000022j
					; code:00000042j ...
		cmp	dword ptr [ebp+2], 20h ; ' '
		jl	short loc_11CD
		add	dword ptr [ebp+23h], 5
		retn


loc_11CD:				; CODE XREF: F6_+4j
		add	dword ptr [ebp+23h], 3
		retn
F6_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F7_
F7_		proc near		; CODE XREF: code:000002EEj
					; code:000002F2j ...
		cmp	dword ptr [ebp+2], 40h ; '@'
		jnz	short loc_11DD
		add	dword ptr [ebp+23h], 9
		retn


loc_11DD:				; CODE XREF: F7_+4j
		cmp	dword ptr [ebp+2], 20h ; ' '
		jnz	short loc_11E8
		add	dword ptr [ebp+23h], 5
		retn


loc_11E8:				; CODE XREF: F7_+Fj
		add	dword ptr [ebp+23h], 3
		retn
F7_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F8_
F8_		proc near		; CODE XREF: code:000001BAj
					; code:0000020Ej ...
		call	F1_
		inc	dword ptr [ebp+23h]
		retn
F8_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F10_
F10_		proc near		; CODE XREF: code:0000012Ej
					; code:00000132j ...
		cmp	dword ptr [ebp+33h], 40h ; '@'
		jnz	short loc_121E
		mov	dword ptr [ebp+2], 40h ; '@'
		inc	dword ptr [ebp+23h]
		mov	eax, [ebp+23h]
		movzx	ecx, byte ptr [eax]
		;lea	eax, [esi+ecx*4]
		;add	eax, [eax]
		;add	eax, 4
		;call	eax
		mov eax, ecx
		mov ecx, 5
		mul ecx
		add eax, esi
		call	eax
		mov	dword ptr [ebp+2], 20h ; ' '
		retn


loc_121E:				; CODE XREF: F10_+4j
		inc	dword ptr [ebp+23h]
		retn
F10_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F11_
F11_		proc near		; CODE XREF: code:0000010Ej
					; code:00000112j ...
		cmp	dword ptr [ebp+33h], 40h ; '@'
		jnz	short loc_124B
		inc	dword ptr [ebp+23h]
		inc	byte ptr [ebp+22h]
		cmp	byte ptr [ebp+22h], 0Fh
		jnz	short loc_123A
		call	ECHEC_
		retn


loc_123A:				; CODE XREF: F11_+10j
		mov	eax, [ebp+23h]
		movzx	ecx, byte ptr [eax]
		;lea	eax, [esi+ecx*4]
		;add	eax, [eax]
		;add	eax, 4
		;call	eax
		mov eax, ecx
		mov ecx, 5
		mul ecx
		add eax, esi
		call	eax
		retn


loc_124B:				; CODE XREF: F11_+4j
		add	dword ptr [ebp+23h], 1
		retn
F11_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F12_
F12_		proc near		; CODE XREF: code:000000A6j
					; code:000000C6j ...
		inc	dword ptr [ebp+23h]
		inc	byte ptr [ebp+22h]
		cmp	byte ptr [ebp+22h], 0Fh
		jnz	short loc_1262
		call	ECHEC_
		retn


loc_1262:				; CODE XREF: F12_+Aj
		mov	eax, [ebp+23h]
		movzx	ecx, byte ptr [eax]
		;lea	eax, [esi+ecx*4]
		;add	eax, [eax]
		;add	eax, 4
		;call	eax
		mov eax, ecx
		mov ecx, 5
		mul ecx
		add eax, esi
		call	eax
		retn
F12_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F13_
F13_		proc near		; CODE XREF: code:0000032Aj
		cmp	dword ptr [ebp+2], 20h ; ' '
		jl	short loc_1283
		call	F1_
		add	dword ptr [ebp+23h], 4
		retn


loc_1283:				; CODE XREF: F13_+4j
		call	F1_
		add	dword ptr [ebp+23h], 2
		retn
F13_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F14_
F14_		proc near		; CODE XREF: code:0000035Ej
					; code:00000362j
		cmp	dword ptr [ebp+33h], 40h ; '@'
		jnz	short loc_1299
		call	ECHEC_
		retn


loc_1299:				; CODE XREF: F14_+4j
		add	dword ptr [ebp+23h], 2
		retn
F14_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F15_
F15_		proc near		; CODE XREF: code:0000032Ej
		add	dword ptr [ebp+23h], 4
		retn
F15_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F16_
F16_		proc near		; CODE XREF: code:00000616j
					; code:0000061Aj ...
		add	dword ptr [ebp+23h], 5
		retn
F16_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F17_
F17_		proc near		; CODE XREF: code:00000196j
					; code:0000031Ej ...
		cmp	dword ptr [ebp+33h], 40h ; '@'
		jnz	short loc_12B4
		call	ECHEC_
		retn


loc_12B4:				; CODE XREF: F17_+4j
		call	F1_
		retn
F17_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F18_
F18_		proc near		; CODE XREF: code:0000048Ej
					; code:00000492j ...
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jnz	short loc_12CB
		call	F1_
		retn


loc_12CB:				; CODE XREF: F18_+9j
		call	ECHEC_
		retn
F18_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F19_
F19_		proc near		; CODE XREF: code:00000316j
					; code:00000336j
		add	dword ptr [ebp+23h], 3
		retn
F19_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F20_
F20_		proc near		; CODE XREF: code:0000028Ej
					; code:00000296j
		cmp	dword ptr [ebp+6], 40h ; '@'
		jnz	short loc_12E1
		add	dword ptr [ebp+23h], 9
		retn


loc_12E1:				; CODE XREF: F20_+4j
		add	dword ptr [ebp+23h], 5
		retn
F20_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F21_
F21_		proc near		; CODE XREF: code:00000292j
					; code:0000029Aj
		cmp	dword ptr [ebp+6], 10h
		jnz	short loc_12F1
		add	dword ptr [ebp+23h], 3
		retn


loc_12F1:				; CODE XREF: F21_+4j
		cmp	dword ptr [ebp+6], 20h ; ' '
		jnz	short loc_12FC
		add	dword ptr [ebp+23h], 5
		retn


loc_12FC:				; CODE XREF: F21_+Fj
		add	dword ptr [ebp+23h], 9
		retn
F21_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F22_
F22_		proc near		; CODE XREF: code:00000BCEj
					; code:00000BD2j
		cmp	byte ptr [ebp+0], 1
		jnz	short loc_130D
		call	F1_
		retn


loc_130D:				; CODE XREF: F22_+4j
		call	ECHEC_
		retn
F22_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public F23_
F23_		proc near		; CODE XREF: code:00000766j
					; code:000007A6j
		cmp	byte ptr [ebp+0], 1
		jnz	short loc_131F
		call	F1_
		retn


loc_131F:				; CODE XREF: F23_+4j
		cmp	byte ptr [ebp+1], 1
		jnz	short loc_132B
		call	F1_
		retn


loc_132B:				; CODE XREF: F23_+10j
		cmp	dword ptr [ebp+2], 10h
		jnz	short loc_1337
		call	F1_
		retn


loc_1337:				; CODE XREF: F23_+1Cj
		call	ECHEC_
		retn
F23_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public CALLF_
CALLF_		proc near		; CODE XREF: code:00000276j
		cmp	dword ptr [ebp+33h], 40h ; '@'
		jnz	short loc_1349
		call	ECHEC_
		retn


loc_1349:				; CODE XREF: CALLF_+4j
		cmp	dword ptr [ebp+2], 20h ; ' '
		jnz	short loc_1354
		add	dword ptr [ebp+23h], 7
		retn


loc_1354:				; CODE XREF: CALLF_+10j
		add	dword ptr [ebp+23h], 5
		retn
CALLF_		endp


		retn

; ��������������� S U B	R O U T	I N E ���������������������������������������


		public IMUL_GvEvIv
IMUL_GvEvIv	proc near		; CODE XREF: code:000001B2j
		cmp	dword ptr [ebp+2], 10h
		jz	short loc_1370
		call	MOD_RM
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 6
		retn


loc_1370:				; CODE XREF: IMUL_GvEvIv+4j
		call	MOD_RM
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 4
		retn
IMUL_GvEvIv	endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public JMP_far
JMP_far		proc near		; CODE XREF: code:000003B6j
		cmp	dword ptr [ebp+33h], 40h ; '@'
		jnz	short loc_138C
		call	ECHEC_
		retn


loc_138C:				; CODE XREF: JMP_far+4j
		cmp	dword ptr [ebp+2], 20h ; ' '
		jnz	short loc_1397
		add	dword ptr [ebp+23h], 7
		retn


loc_1397:				; CODE XREF: JMP_far+10j
		add	dword ptr [ebp+23h], 5
		retn
JMP_far		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public POP_Ev
POP_Ev		proc near		; CODE XREF: code:0000024Aj
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 0
		jnz	short loc_13AD
		call	F1_
		retn


loc_13AD:				; CODE XREF: POP_Ev+9j
		call	ECHEC_
		retn
POP_Ev		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public PUSH_Iv
PUSH_Iv		proc near		; CODE XREF: code:000001AEj
		cmp	dword ptr [ebp+33h], 40h ; '@'
		jnz	short loc_13BE
		add	dword ptr [ebp+23h], 5
		retn


loc_13BE:				; CODE XREF: PUSH_Iv+4j
		cmp	dword ptr [ebp+2], 20h ; ' '
		jnz	short loc_13C9
		add	dword ptr [ebp+23h], 5
		retn


loc_13C9:				; CODE XREF: PUSH_Iv+Fj
		add	dword ptr [ebp+23h], 3
		retn
PUSH_Iv		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public LDDQU_
LDDQU_		proc near		; CODE XREF: code:000007CEj
		cmp	byte ptr [ebp+0], 1
		jnz	short loc_13DA
		call	F1_
		retn


loc_13DA:				; CODE XREF: LDDQU_+4j
		call	ECHEC_
		retn
LDDQU_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public ECHEC_
ECHEC_		proc near		; CODE XREF: code:0000041Ej
					; code:00000436j ...
		mov	eax, 0FFFFFFFFh
		retn
ECHEC_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public G1_EbIb2
G1_EbIb2	proc near		; CODE XREF: code:00000216j
		cmp	dword ptr [ebp+33h], 40h ; '@'
		jnz	short loc_13F2
		call	ECHEC_
		retn


loc_13F2:				; CODE XREF: G1_EbIb2+4j
		call	F1_
		add	dword ptr [ebp+23h], 1
		retn
G1_EbIb2	endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public G1_EvIv
G1_EvIv		proc near		; CODE XREF: code:00000212j
		cmp	dword ptr [ebp+2], 20h ; ' '
		jl	short loc_140C
		call	F1_
		add	dword ptr [ebp+23h], 4
		retn


loc_140C:				; CODE XREF: G1_EvIv+4j
		call	F1_
		add	dword ptr [ebp+23h], 2
		retn
G1_EvIv		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public G3_Eb
G3_Eb		proc near		; CODE XREF: code:000003E6j
		call	MOD_RM
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 0
		jnz	short loc_1431
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 3
		retn


loc_1431:				; CODE XREF: G3_Eb+Ej
		cmp	dword ptr [ebp+16h], 1
		jnz	short loc_143D
		call	ECHEC_
		retn


loc_143D:				; CODE XREF: G3_Eb+1Fj
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
G3_Eb		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public G3_Ev
G3_Ev		proc near		; CODE XREF: code:000003EAj
		cmp	dword ptr [ebp+2], 20h ; ' '
		jl	short loc_1480
		call	MOD_RM
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 0
		jnz	short loc_1469
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 6
		retn


loc_1469:				; CODE XREF: G3_Ev+14j
		cmp	dword ptr [ebp+16h], 1
		jnz	short loc_1475
		call	ECHEC_
		retn


loc_1475:				; CODE XREF: G3_Ev+25j
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn


loc_1480:				; CODE XREF: G3_Ev+4j
		call	MOD_RM
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 0
		jnz	short loc_149B
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 4
		retn


loc_149B:				; CODE XREF: G3_Ev+46j
		cmp	dword ptr [ebp+16h], 1
		jnz	short loc_14A7
		call	ECHEC_
		retn


loc_14A7:				; CODE XREF: G3_Ev+57j
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
G3_Ev		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public G4_IncDec
G4_IncDec	proc near		; CODE XREF: code:00000406j
		call	MOD_RM
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 1
		jle	short loc_14C8
		call	ECHEC_
		retn


loc_14C8:				; CODE XREF: G4_IncDec+Ej
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
G4_IncDec	endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public G5_IncDec
G5_IncDec	proc near		; CODE XREF: code:0000040Aj
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 6
		jle	short loc_14E4
		call	ECHEC_
		retn


loc_14E4:				; CODE XREF: G5_IncDec+9j
		call	MOD_RM
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
G5_IncDec	endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public G6_
G6_		proc near		; CODE XREF: code:0000040Ej
		call	MOD_RM
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 5
		jle	short loc_150A
		call	ECHEC_
		retn


loc_150A:				; CODE XREF: G6_+Ej
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
G6_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public G7_
G7_		proc near		; CODE XREF: code:00000412j
		call	MOD_RM
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 0
		jnz	short loc_153F
		cmp	dword ptr [ebp+0Ah], 3
		jnz	loc_15DB
		cmp	dword ptr [ebp+0Eh], 4
		jle	loc_15DB
		call	ECHEC_
		retn


loc_153F:				; CODE XREF: G7_+Ej
		cmp	dword ptr [ebp+16h], 1
		jnz	short loc_155F
		cmp	dword ptr [ebp+0Ah], 3
		jnz	loc_15DB
		cmp	dword ptr [ebp+0Eh], 1
		jle	loc_15DB
		call	ECHEC_
		retn


loc_155F:				; CODE XREF: G7_+2Ej
		cmp	dword ptr [ebp+16h], 2
		jnz	short loc_1575
		cmp	dword ptr [ebp+0Ah], 3
		jnz	loc_15DB
		call	ECHEC_
		retn


loc_1575:				; CODE XREF: G7_+4Ej
		cmp	dword ptr [ebp+16h], 3
		jnz	short loc_1587
		cmp	dword ptr [ebp+0Ah], 3
		jnz	short loc_15DB
		call	ECHEC_
		retn


loc_1587:				; CODE XREF: G7_+64j
		cmp	dword ptr [ebp+16h], 4
		jnz	short loc_1599
		cmp	dword ptr [ebp+0Ah], 3
		jnz	short loc_15DB
		call	ECHEC_
		retn


loc_1599:				; CODE XREF: G7_+76j
		cmp	dword ptr [ebp+16h], 5
		jnz	short loc_15A5
		call	ECHEC_
		retn


loc_15A5:				; CODE XREF: G7_+88j
		cmp	dword ptr [ebp+16h], 6
		jnz	short loc_15B7
		cmp	dword ptr [ebp+0Ah], 3
		jnz	short loc_15DB
		call	ECHEC_
		retn


loc_15B7:				; CODE XREF: G7_+94j
		cmp	dword ptr [ebp+16h], 7
		jnz	short loc_15DB
		cmp	dword ptr [ebp+0Ah], 3
		jnz	short loc_15DB
		cmp	dword ptr [ebp+33h], 40h ; '@'
		jnz	short loc_15D5
		cmp	dword ptr [ebp+0Eh], 0
		jz	short loc_15DB
		call	ECHEC_
		retn


loc_15D5:				; CODE XREF: G7_+B2j
		call	ECHEC_
		retn


loc_15DB:				; CODE XREF: G7_+14j G7_+1Ej ...
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
G7_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public G8_EvIb
G8_EvIb		proc near		; CODE XREF: code:000006F6j
		call	MOD_RM
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 4
		jge	short loc_15FC
		call	ECHEC_
		retn


loc_15FC:				; CODE XREF: G8_EvIb+Ej
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 3
		retn
G8_EvIb		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public G9_
G9_		proc near		; CODE XREF: code:0000072Aj
		call	MOD_RM
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 0
		jnz	short loc_161D
		call	ECHEC_
		retn


loc_161D:				; CODE XREF: G9_+Ej
		cmp	dword ptr [ebp+16h], 2
		jnz	short loc_1629
		call	ECHEC_
		retn


loc_1629:				; CODE XREF: G9_+1Aj
		cmp	dword ptr [ebp+16h], 3
		jnz	short loc_1635
		call	ECHEC_
		retn


loc_1635:				; CODE XREF: G9_+26j
		cmp	dword ptr [ebp+16h], 4
		jnz	short loc_1641
		call	ECHEC_
		retn


loc_1641:				; CODE XREF: G9_+32j
		cmp	dword ptr [ebp+16h], 5
		jnz	short loc_164D
		call	ECHEC_
		retn


loc_164D:				; CODE XREF: G9_+3Ej
		cmp	dword ptr [ebp+16h], 7
		jle	short loc_1659
		call	ECHEC_
		retn


loc_1659:				; CODE XREF: G9_+4Aj
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
G9_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public G12_
G12_		proc near		; CODE XREF: code:000005D2j
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 0
		jnz	short loc_1675
		call	ECHEC_
		retn


loc_1675:				; CODE XREF: G12_+9j
		cmp	dword ptr [ebp+16h], 1
		jnz	short loc_1681
		call	ECHEC_
		retn


loc_1681:				; CODE XREF: G12_+15j
		cmp	dword ptr [ebp+16h], 2
		jnz	short loc_1698
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jz	short loc_16E4
		call	ECHEC_
		retn


loc_1698:				; CODE XREF: G12_+21j
		cmp	dword ptr [ebp+16h], 3
		jnz	short loc_16A4
		call	ECHEC_
		retn


loc_16A4:				; CODE XREF: G12_+38j
		cmp	dword ptr [ebp+16h], 4
		jnz	short loc_16BB
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jz	short loc_16E4
		call	ECHEC_
		retn


loc_16BB:				; CODE XREF: G12_+44j
		cmp	dword ptr [ebp+16h], 5
		jnz	short loc_16C7
		call	ECHEC_
		retn


loc_16C7:				; CODE XREF: G12_+5Bj
		cmp	dword ptr [ebp+16h], 6
		jnz	short loc_16DE
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jz	short loc_16E4
		call	ECHEC_
		retn


loc_16DE:				; CODE XREF: G12_+67j
		call	ECHEC_
		retn


loc_16E4:				; CODE XREF: G12_+2Cj G12_+4Fj ...
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 3
		retn
G12_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public G13_
G13_		proc near		; CODE XREF: code:000005D6j
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 0
		jnz	short loc_1700
		call	ECHEC_
		retn


loc_1700:				; CODE XREF: G13_+9j
		cmp	dword ptr [ebp+16h], 1
		jnz	short loc_170C
		call	ECHEC_
		retn


loc_170C:				; CODE XREF: G13_+15j
		cmp	dword ptr [ebp+16h], 2
		jnz	short loc_1723
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jz	short loc_176F
		call	ECHEC_
		retn


loc_1723:				; CODE XREF: G13_+21j
		cmp	dword ptr [ebp+16h], 3
		jnz	short loc_172F
		call	ECHEC_
		retn


loc_172F:				; CODE XREF: G13_+38j
		cmp	dword ptr [ebp+16h], 4
		jnz	short loc_1746
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jz	short loc_176F
		call	ECHEC_
		retn


loc_1746:				; CODE XREF: G13_+44j
		cmp	dword ptr [ebp+16h], 5
		jnz	short loc_1752
		call	ECHEC_
		retn


loc_1752:				; CODE XREF: G13_+5Bj
		cmp	dword ptr [ebp+16h], 6
		jnz	short loc_1769
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jz	short loc_176F
		call	ECHEC_
		retn


loc_1769:				; CODE XREF: G13_+67j
		call	ECHEC_
		retn


loc_176F:				; CODE XREF: G13_+2Cj G13_+4Fj ...
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 3
		retn
G13_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public G14_
G14_		proc near		; CODE XREF: code:000005DAj
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 0
		jnz	short loc_178B
		call	ECHEC_
		retn


loc_178B:				; CODE XREF: G14_+9j
		cmp	dword ptr [ebp+16h], 1
		jnz	short loc_1797
		call	ECHEC_
		retn


loc_1797:				; CODE XREF: G14_+15j
		cmp	dword ptr [ebp+16h], 2
		jnz	short loc_17B2
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jz	loc_1827
		call	ECHEC_
		retn


loc_17B2:				; CODE XREF: G14_+21j
		cmp	dword ptr [ebp+16h], 3
		jnz	short loc_17D5
		cmp	dword ptr [ebp+2], 10h
		jnz	short loc_17CF
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jz	short loc_1827
		call	ECHEC_
		retn


loc_17CF:				; CODE XREF: G14_+42j
		call	ECHEC_
		retn


loc_17D5:				; CODE XREF: G14_+3Cj
		cmp	dword ptr [ebp+16h], 4
		jnz	short loc_17E1
		call	ECHEC_
		retn


loc_17E1:				; CODE XREF: G14_+5Fj
		cmp	dword ptr [ebp+16h], 5
		jnz	short loc_17ED
		call	ECHEC_
		retn


loc_17ED:				; CODE XREF: G14_+6Bj
		cmp	dword ptr [ebp+16h], 6
		jnz	short loc_1804
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jz	short loc_1827
		call	ECHEC_
		retn


loc_1804:				; CODE XREF: G14_+77j
		cmp	dword ptr [ebp+16h], 7
		jnz	short loc_1821
		cmp	dword ptr [ebp+2], 10h
		jnz	short loc_1821
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jz	short loc_1827
		call	ECHEC_
		retn


loc_1821:				; CODE XREF: G14_+8Ej G14_+94j
		call	ECHEC_
		retn


loc_1827:				; CODE XREF: G14_+2Cj G14_+4Dj ...
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 3
		retn
G14_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public G15_
G15_		proc near		; CODE XREF: code:000006C6j
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 0
		jnz	short loc_1852
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jnz	loc_18EC
		call	ECHEC_
		retn


loc_1852:				; CODE XREF: G15_+9j
		cmp	dword ptr [ebp+16h], 1
		jnz	short loc_186D
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jnz	loc_18EC
		call	ECHEC_
		retn


loc_186D:				; CODE XREF: G15_+24j
		cmp	dword ptr [ebp+16h], 2
		jnz	short loc_1888
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jnz	loc_18EC
		call	ECHEC_
		retn


loc_1888:				; CODE XREF: G15_+3Fj
		cmp	dword ptr [ebp+16h], 3
		jnz	short loc_189F
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jnz	short loc_18EC
		call	ECHEC_
		retn


loc_189F:				; CODE XREF: G15_+5Aj
		cmp	dword ptr [ebp+16h], 4
		jnz	short loc_18AB
		call	ECHEC_
		retn


loc_18AB:				; CODE XREF: G15_+71j
		cmp	dword ptr [ebp+16h], 5
		jnz	short loc_18C2
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jnz	short loc_18EC
		call	ECHEC_
		retn


loc_18C2:				; CODE XREF: G15_+7Dj
		cmp	dword ptr [ebp+16h], 6
		jnz	short loc_18D9
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jnz	short loc_18EC
		call	ECHEC_
		retn


loc_18D9:				; CODE XREF: G15_+94j
		cmp	dword ptr [ebp+16h], 7
		jg	short loc_18E6
		call	MOD_RM
		jmp	short loc_18EC


loc_18E6:				; CODE XREF: G15_+ABj
		call	ECHEC_
		retn


loc_18EC:				; CODE XREF: G15_+14j G15_+2Fj ...
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
G15_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public G16_
G16_		proc near		; CODE XREF: code:0000046Ej
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 0
		jnz	short loc_1913
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jnz	short loc_195E
		call	ECHEC_
		retn


loc_1913:				; CODE XREF: G16_+9j
		cmp	dword ptr [ebp+16h], 1
		jnz	short loc_192A
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jnz	short loc_195E
		call	ECHEC_
		retn


loc_192A:				; CODE XREF: G16_+20j
		cmp	dword ptr [ebp+16h], 2
		jnz	short loc_1941
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jnz	short loc_195E
		call	ECHEC_
		retn


loc_1941:				; CODE XREF: G16_+37j
		cmp	dword ptr [ebp+16h], 3
		jnz	short loc_1958
		call	MOD_RM
		cmp	dword ptr [ebp+0Ah], 3
		jnz	short loc_195E
		call	ECHEC_
		retn


loc_1958:				; CODE XREF: G16_+4Ej
		call	ECHEC_
		retn


loc_195E:				; CODE XREF: G16_+14j G16_+2Bj ...
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
G16_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public PrefOpSize
PrefOpSize	proc near		; CODE XREF: code:000001A6j
		inc	dword ptr [ebp+23h]
		mov	dword ptr [ebp+2], 10h
		inc	byte ptr [ebp+22h]
		cmp	byte ptr [ebp+22h], 0Fh
		jnz	short loc_1982
		call	ECHEC_
		retn


loc_1982:				; CODE XREF: PrefOpSize+11j
		mov	eax, [ebp+23h]
		movzx	ecx, byte ptr [eax]
		;lea	eax, [esi+ecx*4]
		;add	eax, [eax]
		;add	eax, 4
		;call	eax
		mov eax, ecx
		mov ecx, 5
		mul ecx
		add eax, esi
		call	eax
		mov	dword ptr [ebp+2], 20h ; ' '
		retn
PrefOpSize	endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public PrefAdSize
PrefAdSize	proc near		; CODE XREF: code:000001AAj
		inc	dword ptr [ebp+23h]
		inc	byte ptr [ebp+22h]
		cmp	byte ptr [ebp+22h], 0Fh
		jnz	short loc_19AC
		call	ECHEC_
		retn


loc_19AC:				; CODE XREF: PrefAdSize+Aj
		mov	ecx, [ebp+6]
		shr	ecx, 1
		mov	[ebp+6], ebx
		mov	eax, [ebp+23h]
		movzx	ecx, byte ptr [eax]
		;lea	eax, [esi+ecx*4]
		;add	eax, [eax]
		;add	eax, 4
		;call	eax
		mov eax, ecx
		mov ecx, 5
		mul ecx
		add eax, esi
		call	eax
		mov	ebx, [ebp+6]
		shl	ecx, 1
		mov	[ebp+6], ecx
		retn
PrefAdSize	endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public PrefREPNE
PrefREPNE	proc near		; CODE XREF: code:000003D6j
		inc	dword ptr [ebp+23h]
		inc	byte ptr [ebp+22h]
		cmp	byte ptr [ebp+22h], 0Fh
		jnz	short loc_19DF
		call	ECHEC_
		retn


loc_19DF:				; CODE XREF: PrefREPNE+Aj
		mov	eax, [ebp+23h]
		movzx	eax, byte ptr [eax]
		cmp	al, 0A4h ; '�'
		jz	short loc_19FB
		cmp	al, 0A7h ; '�'
		jz	short loc_19FB
		cmp	al, 0AEh ; '�'
		jz	short loc_19FB
		cmp	al, 0AFh ; '�'
		jz	short loc_19FB
		cmp	al, 0Fh
		jz	short loc_19FB
		jmp	short loc_19FF


loc_19FB:				; CODE XREF: PrefREPNE+1Aj
					; PrefREPNE+1Ej ...
		mov	byte ptr [ebp+0], 1

loc_19FF:				; CODE XREF: PrefREPNE+2Cj
		mov	eax, [ebp+23h]
		movzx	ecx, byte ptr [eax]
		;lea	eax, [esi+ecx*4]
		;add	eax, [eax]
		;add	eax, 4
		;call	eax
		mov eax, ecx
		mov ecx, 5
		mul ecx
		add eax, esi
		call	eax
		mov	byte ptr [ebp+0], 0
		retn
PrefREPNE	endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public PrefREP
PrefREP		proc near		; CODE XREF: code:000003DAj
		inc	dword ptr [ebp+23h]
		inc	byte ptr [ebp+22h]
		cmp	byte ptr [ebp+22h], 0Fh
		jnz	short loc_1A26
		call	ECHEC_
		retn


loc_1A26:				; CODE XREF: PrefREP+Aj
		mov	eax, [ebp+23h]
		movzx	eax, byte ptr [eax]
		cmp	al, 90h	; '�'
		jz	short loc_1A6E
		cmp	al, 0A4h ; '�'
		jz	short loc_1A6E
		cmp	al, 0A5h ; '�'
		jz	short loc_1A6E
		cmp	al, 0A6h ; '�'
		jz	short loc_1A6E
		cmp	al, 0A7h ; '�'
		jz	short loc_1A6E
		cmp	al, 0AAh ; '�'
		jz	short loc_1A6E
		cmp	al, 0ABh ; '�'
		jz	short loc_1A6E
		cmp	al, 0ACh ; '�'
		jz	short loc_1A6E
		cmp	al, 0ADh ; '�'
		jz	short loc_1A6E
		cmp	al, 0AEh ; '�'
		jz	short loc_1A6E
		cmp	al, 0AFh ; '�'
		jz	short loc_1A6E
		cmp	al, 6Ch	; 'l'
		jz	short loc_1A6E
		cmp	al, 6Dh	; 'm'
		jz	short loc_1A6E
		cmp	al, 6Eh	; 'n'
		jz	short loc_1A6E
		cmp	al, 6Fh	; 'o'
		jz	short loc_1A6E
		cmp	al, 0Fh
		jz	short loc_1A6E
		jmp	short loc_1A72


loc_1A6E:				; CODE XREF: PrefREP+1Aj PrefREP+1Ej ...
		mov	byte ptr [ebp+1], 1

loc_1A72:				; CODE XREF: PrefREP+58j
		mov	eax, [ebp+23h]
		movzx	ecx, byte ptr [eax]
		;lea	eax, [esi+ecx*4]
		;add	eax, [eax]
		;add	eax, 4
		;call	eax
		mov eax, ecx
		mov ecx, 5
		mul ecx
		add eax, esi
		call	eax
		mov	byte ptr [ebp+1], 0
		retn
PrefREP		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public Esc_2byte
Esc_2byte	proc near		; CODE XREF: code:0000004Aj
		inc	dword ptr [ebp+23h]
		inc	byte ptr [ebp+22h]
		cmp	byte ptr [ebp+22h], 0Fh
		jnz	short loc_1A99
		call	ECHEC_
		retn


loc_1A99:				; CODE XREF: Esc_2byte+Aj
		mov	eax, [ebp+23h]
		movzx	ecx, byte ptr [eax]
		;lea	eax, [esi+ecx*4+400h]
		;add	eax, [eax]
		;add	eax, 4
		;call	eax
		mov eax, ecx
		mov ecx, 5
		mul ecx
		add eax, esi
		add eax, 500h
		call	eax
		retn
Esc_2byte	endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public Esc_tableA4
Esc_tableA4	proc near		; CODE XREF: code:000004EEj
		inc	dword ptr [ebp+23h]
		inc	byte ptr [ebp+22h]
		cmp	byte ptr [ebp+22h], 0Fh
		jnz	short loc_1AC0
		call	ECHEC_
		retn


loc_1AC0:				; CODE XREF: Esc_tableA4+Aj
		mov	eax, [ebp+23h]
		movzx	ecx, byte ptr [eax]
		;lea	eax, [esi+ecx*4+800h]
		;add	eax, [eax]
		;add	eax, 4
		;call	eax
		mov eax, ecx
		mov ecx, 5
		mul ecx
		add eax, esi
		add eax, 0A00h
		call	eax
		retn
Esc_tableA4	endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public Esc_tableA5
Esc_tableA5	proc near		; CODE XREF: code:000004F6j
		inc	dword ptr [ebp+23h]
		inc	byte ptr [ebp+22h]
		cmp	byte ptr [ebp+22h], 0Fh
		jnz	short loc_1AE7
		call	ECHEC_
		retn


loc_1AE7:				; CODE XREF: Esc_tableA5+Aj
		mov	eax, [ebp+23h]
		movzx	ecx, byte ptr [eax]
		;lea	eax, [esi+ecx*4+0C00h]
		;add	eax, [eax]
		;add	eax, 4
		;call	eax
		mov eax, ecx
		mov ecx, 5
		mul ecx
		add eax, esi
		add eax, 0F00h
		call	eax
		retn
Esc_tableA5	endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public D8_
D8_		proc near		; CODE XREF: code:0000036Ej
		mov	dword ptr [ebp+1Ah], 0
		mov	eax, [ebp+23h]
		movzx	eax, byte ptr [eax+1]
		cmp	eax, 0BFh ; '�'
		jg	short loc_1B22
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 7
		jle	short loc_1B22
		call	ECHEC_
		retn


loc_1B22:				; CODE XREF: D8_+13j D8_+1Ej
		call	MOD_RM
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
D8_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public D9_
D9_		proc near		; CODE XREF: code:00000372j
		mov	dword ptr [ebp+1Ah], 0
		mov	eax, [ebp+23h]
		movzx	eax, byte ptr [eax+1]
		cmp	eax, 0BFh ; '�'
		jg	short loc_1B5E
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 1
		jnz	short loc_1BBB
		cmp	dword ptr [ebp+16h], 7
		jle	short loc_1BBB
		call	ECHEC_
		retn


loc_1B5E:				; CODE XREF: D9_+13j
		cmp	eax, 0C0h ; '�'
		jl	short loc_1BBB
		mov	edx, eax
		shr	edx, 4
		mov	ecx, eax
		and	ecx, 0Fh
		cmp	edx, 0Dh
		jnz	short loc_1B7F
		cmp	ecx, 0
		jz	short loc_1BBB
		call	ECHEC_
		retn


loc_1B7F:				; CODE XREF: D9_+40j
		cmp	edx, 0Eh
		jnz	short loc_1BBB
		cmp	ecx, 2
		jnz	short loc_1B8F
		call	ECHEC_
		retn


loc_1B8F:				; CODE XREF: D9_+55j
		cmp	ecx, 3
		jnz	short loc_1B9A
		call	ECHEC_
		retn


loc_1B9A:				; CODE XREF: D9_+60j
		cmp	ecx, 6
		jnz	short loc_1BA5
		call	ECHEC_
		retn


loc_1BA5:				; CODE XREF: D9_+6Bj
		cmp	ecx, 7
		jnz	short loc_1BB0
		call	ECHEC_
		retn


loc_1BB0:				; CODE XREF: D9_+76j
		cmp	ecx, 0Fh
		jnz	short loc_1BBB
		call	ECHEC_
		retn


loc_1BBB:				; CODE XREF: D9_+1Ej D9_+24j ...
		call	MOD_RM
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
D9_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public DA_
DA_		proc near		; CODE XREF: code:00000376j
		mov	dword ptr [ebp+1Ah], 0
		mov	eax, [ebp+23h]
		movzx	eax, byte ptr [eax+1]
		cmp	eax, 0BFh ; '�'
		jg	short loc_1BF1
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 7
		jle	short loc_1C1D
		call	ECHEC_
		retn


loc_1BF1:				; CODE XREF: DA_+13j
		cmp	eax, 0C0h ; '�'
		jl	short loc_1C1D
		mov	edx, eax
		shr	edx, 4
		mov	ecx, eax
		and	ecx, 0Fh
		cmp	edx, 0Eh
		jnz	short loc_1C12
		cmp	ecx, 9
		jz	short loc_1C1D
		call	ECHEC_
		retn


loc_1C12:				; CODE XREF: DA_+3Aj
		cmp	edx, 0Fh
		jnz	short loc_1C1D
		call	ECHEC_
		retn


loc_1C1D:				; CODE XREF: DA_+1Ej DA_+2Bj ...
		call	MOD_RM
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
DA_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public DB_
DB_		proc near		; CODE XREF: code:0000037Aj
		mov	dword ptr [ebp+1Ah], 0
		mov	eax, [ebp+23h]
		movzx	eax, byte ptr [eax+1]
		cmp	eax, 0BFh ; '�'
		jg	short loc_1C61
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 4
		jz	short loc_1C5B
		cmp	dword ptr [ebp+16h], 6
		jz	short loc_1C5B
		cmp	dword ptr [ebp+16h], 7
		jg	short loc_1C5B
		jmp	short loc_1C9C


loc_1C5B:				; CODE XREF: DB_+1Ej DB_+24j ...
		call	ECHEC_
		retn


loc_1C61:				; CODE XREF: DB_+13j
		cmp	eax, 0C0h ; '�'
		jl	short loc_1C9C
		mov	edx, eax
		shr	edx, 4
		mov	ecx, eax
		and	ecx, 0Fh
		cmp	edx, 0Eh
		jnz	short loc_1C8C
		cmp	ecx, 8
		jge	short loc_1C9C
		cmp	ecx, 3
		jz	short loc_1C9C
		cmp	ecx, 2
		jz	short loc_1C9C
		call	ECHEC_
		retn


loc_1C8C:				; CODE XREF: DB_+48j
		cmp	edx, 0Fh
		jnz	short loc_1C9C
		cmp	ecx, 8
		jl	short loc_1C9C
		call	ECHEC_
		retn


loc_1C9C:				; CODE XREF: DB_+2Cj DB_+39j ...
		call	MOD_RM
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
DB_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public DC_
DC_		proc near		; CODE XREF: code:0000037Ej
		mov	dword ptr [ebp+1Ah], 0
		mov	eax, [ebp+23h]
		movzx	eax, byte ptr [eax+1]
		cmp	eax, 0BFh ; '�'
		jg	short loc_1CD2
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 7
		jle	short loc_1CEE
		call	ECHEC_
		retn


loc_1CD2:				; CODE XREF: DC_+13j
		cmp	eax, 0C0h ; '�'
		jl	short loc_1CEE
		mov	edx, eax
		shr	edx, 4
		mov	ecx, eax
		and	ecx, 0Fh
		cmp	edx, 0Dh
		jnz	short loc_1CEE
		call	ECHEC_
		retn


loc_1CEE:				; CODE XREF: DC_+1Ej DC_+2Bj ...
		call	MOD_RM
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
DC_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public DD_
DD_		proc near		; CODE XREF: code:00000382j
		mov	dword ptr [ebp+1Ah], 0
		mov	eax, [ebp+23h]
		movzx	eax, byte ptr [eax+1]
		cmp	eax, 0BFh ; '�'
		jg	short loc_1D2C
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 5
		jz	short loc_1D26
		cmp	dword ptr [ebp+16h], 7
		jg	short loc_1D26
		jmp	short loc_1D58


loc_1D26:				; CODE XREF: DD_+1Ej DD_+24j
		call	ECHEC_
		retn


loc_1D2C:				; CODE XREF: DD_+13j
		cmp	eax, 0C0h ; '�'
		jl	short loc_1D58
		mov	edx, eax
		shr	edx, 4
		mov	ecx, eax
		and	ecx, 0Fh
		cmp	edx, 0Ch
		jnz	short loc_1D4D
		cmp	ecx, 8
		jl	short loc_1D58
		call	ECHEC_
		retn


loc_1D4D:				; CODE XREF: DD_+42j
		cmp	edx, 0Fh
		jnz	short loc_1D58
		call	ECHEC_
		retn


loc_1D58:				; CODE XREF: DD_+26j DD_+33j ...
		call	MOD_RM
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
DD_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public DE_
DE_		proc near		; CODE XREF: code:00000386j
		mov	dword ptr [ebp+1Ah], 0
		mov	eax, [ebp+23h]
		movzx	eax, byte ptr [eax+1]
		cmp	eax, 0BFh ; '�'
		jg	short loc_1D8E
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 7
		jle	short loc_1DAF
		call	ECHEC_
		retn


loc_1D8E:				; CODE XREF: DE_+13j
		cmp	eax, 0C0h ; '�'
		jl	short loc_1DAF
		mov	edx, eax
		shr	edx, 4
		mov	ecx, eax
		and	ecx, 0Fh
		cmp	edx, 0Dh
		jnz	short loc_1DAF
		cmp	ecx, 9
		jz	short loc_1DAF
		call	ECHEC_
		retn


loc_1DAF:				; CODE XREF: DE_+1Ej DE_+2Bj ...
		call	MOD_RM
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
DE_		endp


; ��������������� S U B	R O U T	I N E ���������������������������������������


		public DF_
DF_		proc near		; CODE XREF: code:0000038Aj
		mov	dword ptr [ebp+1Ah], 0
		mov	eax, [ebp+23h]
		movzx	eax, byte ptr [eax+1]
		cmp	eax, 0BFh ; '�'
		jg	short loc_1DE5
		call	Reg_Opcode
		cmp	dword ptr [ebp+16h], 7
		jle	short loc_1E31
		call	ECHEC_
		retn


loc_1DE5:				; CODE XREF: DF_+13j
		cmp	eax, 0C0h ; '�'
		jl	short loc_1E31
		mov	edx, eax
		shr	edx, 4
		mov	ecx, eax
		and	ecx, 0Fh
		cmp	edx, 0Ch
		jnz	short loc_1E01
		call	ECHEC_
		retn


loc_1E01:				; CODE XREF: DF_+3Aj
		cmp	edx, 0Dh
		jnz	short loc_1E0C
		call	ECHEC_
		retn


loc_1E0C:				; CODE XREF: DF_+45j
		cmp	edx, 0Eh
		jnz	short loc_1E21
		cmp	ecx, 0
		jz	short loc_1E31
		cmp	ecx, 8
		jge	short loc_1E31
		call	ECHEC_
		retn


loc_1E21:				; CODE XREF: DF_+50j
		cmp	edx, 0Fh
		jnz	short loc_1E31
		cmp	ecx, 8
		jl	short loc_1E31
		call	ECHEC_
		retn


loc_1E31:				; CODE XREF: DF_+1Ej DF_+2Bj ...
		call	MOD_RM
		mov	eax, [ebp+1Ah]
		add	[ebp+23h], eax
		add	dword ptr [ebp+23h], 2
		retn
DF_		endp
		
END

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The GNU Lesser General Public License (LGPLv3)


Written By
Team Leader
China China
Jerry is from China. He was captivated by computer programming since 13 years old when first time played with Q-Basic.



  • Windows / Linux & C++
  • iOS & Obj-C
  • .Net & C#
  • Flex/Flash & ActionScript
  • HTML / CSS / Javascript
  • Gaming Server programming / video, audio processing / image & graphics


Contact: vcer(at)qq.com
Chinese Blog: http://blog.csdn.net/wangjia184

Comments and Discussions