
//alloc(newmem,2048,"DiabloImmortal.exe"+3BE2DE)
//alloc(newmem,2048,"DiabloImmortal.exe"+3C65AE)
//alloc(newmem,2048,"DiabloImmortal.exe"+3C0FBE)
//alloc(newmem,2048,"DiabloImmortal.exe"+3C20FE)
alloc(newmem,2048,"DiabloImmortal.exe"+435B23)


label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
// movaps [rax-68],xmm11
movaps xmm11,xmm3 // ko du byte > movaps [rax-68],xmm11
movaps xmm10,xmm2
// mov rbx,rcx
// cmp byte ptr [rcx+6C],00

// rcx+6C = bat 1 tat 0
// rcx+2C = y hp
// rcx+30 = x hp
// rcx+34 = % hp

// summon = y 50 x 78 % 7.8 float
// enemy = y 50 x 52 % 23.39999962
// 42480000 42500000 41BB3333
// rbx+0 = float object x hp
// rbx+4 = float object y hp
// rbx+10 = float object x 3d
// rbx+18 = float object y 3d

// rsi+0 =
// rdi+0 = name path png

// new 01
// rcx+6C = bat 1 tat 0
// rcx+34 = y hp 42480000
// rcx+28 = x hp 42500000
// rcx+58 = % hp
// rdi+0 = float object x hp
// rdi+4 = float object y hp


push rax // addresscc
push r9 // address

mov rax,newmem+500 // address 0x0 value vtmem


mov r9,[rax+8*50] //> chuyen rcx = rbx = [rax+20]

//mov byte ptr [rcx+6C],01 // test

cmp byte ptr [rcx+6C],00
jne exit01
cmp [rcx+34],42480000 // y hp do
jne exit01
cmp [rcx+28],42500000 // x hp do
jne exit01


mov [rax],rcx // 6C bat = 0 tat = 1, +2C x y hp
mov [rax+8],rdi // float x float y
mov byte ptr [rax+10],1 // hp enemy
mov [rax+18],rdi // rdi png

exit01:

// cmp byte ptr [rcx+6C],00 // npc summon
// jne exit03
// cmp [rcx+2C],42480000 // x ? npc
// jne exit03
// cmp [rcx+30],429C0000 // sx ? npc
// jne exit03
// cmp [rcx+34],40F9999A // s ? npc
// jne exit03

// cmp [rax+8*50],48 // for loop < 10
// ja exit03
// cmp [rax+r9+8*10],rbx // for loop < 10 <> rbx *11 > *10
// je exit03
// mov [rax+r9+8*11],rbx // float x float y
// add r9,8
// mov [rax+8*50],r9
// exit03:

// cmp [rax+8*50],40 // for loop > 10 > = 0
// jb exit04
// mov [rax+8*50],0
// exit04:



// cmp byte ptr [rax+8*30],00 // npc ? bat = 0 tat = 1
// jne exit02
// cmp byte ptr [rcx+6C],00 // npc ?
// jne exit02
// cmp [rcx+28],00000000 // x ? npc
// jne exit02
// cmp [rcx+30],42820000 // sx ? npc
// jne exit02
// cmp [rcx+34],42820000 // s ? npc
// jne exit02

// mov [rax],rcx // 6C bat = 0 tat = 1, +2C x y hp
// mov [rax+8],rbx // float x float y
// mov byte ptr [rax+10],2 // npc ?
// mov [rax+18],rdi // rdi png
// exit02:



//cmp byte ptr [rcx+6C],01 // test all bar %
//jne exit09
//mov [rax+100],rcx // 6C bat = 0 tat = 1, +2C x y hp
//mov [rax+108],rbx // float x float y
//mov [rax+118],rdi // rdi png
//exit09:





pop r9


cmp byte ptr [rcx+6C],00 // time drop item quest
jne exit10
cmp [rcx+2C],42680000 // y hp do 58
jne exit10
cmp [rcx+30],4334B333 // sx hp do 180.6999969
jne exit10
cmp [rcx+34],41266666 // sy hp do 10.39999962
jne exit10

mov [rax+8*61],rcx // 6C bat = 0 tat = 1, +2C x y hp
exit10:


pop rax


exit:
jmp returnhere


//"DiabloImmortal.exe"+3BE2DE:
//"DiabloImmortal.exe"+3C65AE:
//"DiabloImmortal.exe"+3C0FBE:
//"DiabloImmortal.exe"+3C20FE:
"DiabloImmortal.exe"+435B23:

jmp newmem
nop
nop
nop
returnhere:

