اقتباس:
[enable]
registersymbol(DX)
registersymbol(DXListOffset)
registersymbol(DXType)
alloc(DX, 1024)
alloc(DXListOffset, 4)
alloc(DXType,4)
alloc(DXFindChar, 1024)
alloc(ESIList, 1024)
alloc(EDIValue, 4)
alloc(DXMap,4)
label(CompareOffset)
label(StoreESI)
label(DoNormal)
label(LeaveMe)
label(DXMonster)
label(NoDupe)
label(DoVac)
alloc(DXCounter,4)
registersymbol(VacTime)
registersymbol(TotalTime)
alloc(VacTime,4)
alloc(TotalTime,4)
alloc(DXCounter,4)
label(DXPause)
label(DXResetCounter)
label(DXReset)
DXCounter:
add [eax],al
add [eax],al
VacTime:
js 0ff90c16
add [eax],al
TotalTime:
or [edi],al
add [eax],al
DXCounter:
sub al,01
add [eax],al
//Original Code
DXListOffset:
add [eax],al
add [eax],al
DXType:
add [eax],al
add [eax],al
DX:
push eax
push ebx
push ecx
push edx
mov ebx,[DXType]
cmp ebx, 00 // 0 = Do Nothing
je NoDupe
cmp ebx, 01
je DXFindChar
cmp ebx, 02
je DoVac
cmp ebx, 03
je DoVac
//Modified Code
cmp ebx, 04
je DXReset
jmp DoNormal
DXFindChar:
mov [esi+114],edi
mov eax,0
mov ebx,DXListOffset
mov ecx,ESIList
mov edx,EDIValue
CompareOffset:
cmp eax,[ebx]
je StoreESI
cmp esi,[ecx+eax*4]
je LeaveMe
inc eax
jmp CompareOffset
StoreESI:
mov [ecx+eax*4],esi
inc eax
mov [ebx],eax
mov [edx],edi
DoVac:
mov eax,[DXCounter]
cmp eax,[VacTime]
inc eax
mov [DXCounter],eax
jae DXPause
//Original
mov ebx,[DXListOffset]
dec ebx
mov ecx,ESIList
mov eax,[ecx+ebx*4]
cmp esi,eax
je DoNormal
mov ebx,[DXType]
cmp ebx, 02
jne DXMonster
mov edi,[eax+114]
jmp DoNormal
DXMonster:
cmp ebx, 03
jne NoDupe
mov edi,[EDIValue]
jmp DoNormal
NoDupe:
mov ebx, 0
mov [DXListOffset],ebx
mov [DXCounter],0
DoNormal:
mov [esi+114],edi
LeaveMe:
pop edx
pop ecx
pop ebx
pop eax
jmp 671d14
DXPause:
cmp eax,[TotalTime]
jae DXResetCounter
jmp DoNormal
DXResetCounter:
mov [DXCounter],0
jmp DoNormal
DXReset:
mov ebx, 0
mov [DXListOffset],ebx
mov [DXCounter],0
mov [DXType],1
jmp DoNormal
00671D0E:
jmp DX
nop
[disable]
00671D0E:
mov [esi+114],edi
dealloc(DXFindChar)
dealloc(DXListOffset)
dealloc(ESIList)
dealloc(DX)
dealloc(EDIValue)
dealloc(DXCounter)
unregistersymbol(DX)
unregistersymbol(DXListOffset)
unregistersymbol(DXType)