
//alloc(newmem,2048,"DiabloImmortal.exe"+225B786)
//alloc(newmem,2048,"DiabloImmortal.exe"+262A866)
//alloc(newmem,2048,"DiabloImmortal.exe"+1EC13D6)
//alloc(newmem,2048,"DiabloImmortal.exe"+2629886)
alloc(newmem,2048,"DiabloImmortal.exe"+2326D4D)


label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:

// func remove
//movss xmm0,[rax+08]
//movss [rsp+28],xmm0
//movss xmm1,[rax+0C]
//movss [rsp+2C],xmm1
// mov rax,[rsi+000002F0] cu mov rax,[rsi+00000370] ( cu mov rax,[rsi+00000330] )

// new function
movss xmm0,[rax+08]
//movss [rsp+48],xmm0
//movss xmm1,[rax+0C]
//movss [rsp+4C],xmm1
//mov rbp,[7FF757C1FF70]
//mov rax,[rbp+000002F8]

// rax+8 = rdi+460+8 = float hp120
// rax+0 = rbx+418+0 = y1 41100000
// rax+C = rbx+460+C = y2 41819999

// rax+4 = rdi+418+4 = x  4421D99A
// rax+B8 = rdi+418+B8 = x  42860000


// NEW
// rax+8 = rdi+2F0+0 = float hp120
// rax+0 = rbx+2E8+0 = y1 41100000
// rax+C = rbx+2F4+0 = y2 41819999

// rax+4 = rdi+2F4+4 = x  4421D99A
// rax+B8 = rdi+418+B8 = x  42860000




// rbx+74 = size y1 float
// rbx+70 = size x  float ( tang dan )

// rbx+A8 = y float
// rbx+AC = x float

// rbx+40 = auto y float > A8
// rbx+44 = auto x float > AC


// rbx+2E8 = auto size hp float max 120
// rbx+2F4 = auto size hp float max 120
// rbx+2F0 = auto x hp float max 120

// new 1
// rbx+3C8 = auto size hp hex  41100000
// rbx+3D4 = auto size hp hex  41819999
// rbx+3D0 = auto x hp float max 120

// new 2
// rbx+3D0 = auto size hp hex  41100000
// rbx+3DC = auto size hp hex  41819999
// rbx+3D8 = auto x hp float max 120


push rax // address
mov rax,newmem+500 // address 0x0 value vtmem

cmp [rbx+3D0],41100000
jne if01
cmp [rbx+3DC],41819999
jne if01

mov [rax],rbx
if01:

     // drop item quest time > test
//cmp [rbx+AC],(float)100 // 268-20
//jb if03
//cmp [rbx+AC],(float)600 // 268+20
//ja if03
//cmp [rbx+A8],(float)100 // 310-20
//jb if03
//cmp [rbx+A8],(float)600 // 310+20
//ja if03
    //mov [rsp+24],(float)400 // check mat hinh > vi tri movss [rsp+24],xmm1
//mov [rax+8*3],rbx
//if03:

// drop item quest time
cmp [rbx+74],(float)27 // 30-3
jb if04
cmp [rbx+74],(float)33 // 30+3
ja if04
cmp [rbx+A8],(float)505 // 511-6
jb if04
cmp [rbx+A8],(float)517 // 511+6
ja if04
cmp [rbx+AC],(float)254 // 274-20
jb if04
cmp [rbx+AC],(float)284 // 274+10
ja if04
cmp [rbx+40],(float)23 // 26-3
jb if04
cmp [rbx+40],(float)29 // 26+3
ja if04
cmp [rbx+44],(float)3 // 5-2
jb if04
cmp [rbx+44],(float)7 // 5+2
ja if04
mov [rax+8*4],rbx
if04:


pop rax


exit:
jmp returnhere


//"DiabloImmortal.exe"+262A866:
//"DiabloImmortal.exe"+1EC13D6:
//"DiabloImmortal.exe"+2629886:
"DiabloImmortal.exe"+2326D4D:

jmp newmem
returnhere:

