alloc(newmem,4048,"DiabloImmortal.exe"+20B880F)
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:

// [rdi+158],3F > 0F tat fog

push rax // address
push rbx // address
mov rax,newmem+500 // address 0x0 value vtmem

mov rbx,[rax+0] //> chuyen rcx = rbx = [rax+20]
add rbx,8

cmp rdi,0 // address check
je if01
cmp byte ptr [rdi+158],3F // 425+20
jne if01
cmp [rax+0],90 // for loop < 50 (190)  10 (48) 20 (90)
ja if01
cmp [rdi+28C],(float)572 // 425+20
jne if01
cmp [rdi+78],3ED70A3E // (float)0.42
jne if01
cmp byte ptr [rdi+00000228],20
jne if01
//mov [rdi+00000228],20
mov [rax+0],rbx
mov [rax+rbx],rdi
mov byte ptr [rdi+158],0F // number map
if01:





cmp rdi,0 // address check
je if02
cmp [rdi+28C],(float)572 // 425+20
jne if02
cmp [rdi+78],3ED70A3E // (float)0.42
jne if02
cmp byte ptr [rdi+00000228],20
jne if02
mov [rax+8*60],rdi
if02:



pop rbx
pop rax



test byte ptr [rdi+00000228],20

exit:
jmp returnhere

"DiabloImmortal.exe"+20B880F:
jmp newmem
nop
nop
returnhere:

