
//alloc(newmem,2048,"DiabloImmortal.exe"+B50ED2)
//alloc(newmem,2048,"DiabloImmortal.exe"+B5AF02)
//alloc(newmem,2048,"DiabloImmortal.exe"+B56FB2)
//alloc(newmem,2048,"DiabloImmortal.exe"+B57C12)
alloc(newmem,2048,"DiabloImmortal.exe"+CAA092)

label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:

// 000000 4D 6F 6E 73 74 65 72 000000  Monster

// new rcx+C8 = 00726574 // Monster  PlayerAvatar
// new rcx+E8 = float x
// new rcx+F0 = float y
// new rcx + 38 = r14 = id enemy

// new rdx+70 = 696C635F _realFightState
// new rdx+470 = _teamId text
// new rdx+30 = _teamId text


// rcx + 38 = r14 = id enemy
// [rcx + 38] > 0 = 66 68 npc summon
// rcx+A8 = 736E6F4D // Monster
// rcx+AC = 00726574 // Monster
// rcx+C8 = float x
// rcx+D0 = float y

// rdx = text target or client combat
// rdx+28 = 696C635F _clientCombatSwitch
// rdx+2F = 626D6F43 _clientCombatSwitch
// rdx+28 = 67726174 targetid
// rdx+28 = 69417369 isAiInMaster

// rdx = text target or client combat
// rdx+28 = 696C635F _clientCombatSwitch
// rdx+2F = 626D6F43 _clientCombatSwitch
// rdx+28 = 67726174 targetid
// rdx+28 = 69417369 isAiInMaster

// rdx+28 = 656E776F // ownerid > bi tan cong bat id
// rdx+28 = trang thai text
// rdx+370 = _teamId text

// xor r8d,r8d
mov rcx,[rax+20]
mov rax,[rcx]
//mov rsi,[rax+000001D8] // cu mov rsi,[rax+000001B8]
      // them mov rcx,[rcx]  // > tach ra de lay rcx = rbx > text monster
// vi thieu bytes jmp > mov rcx,[rax+20]
// mov rcx,rsi




push rax // address
push rcx // address
push rbx // address

mov rax,newmem+500 // address 0x0 value vtmem

mov rcx,[rcx] //> chuyen rcx = rbx = [rax+20]
mov rbx,[rax+0] //> chuyen rcx = rbx = [rax+20]

cmp [rcx+C8],736E6F4D // Monster
jne exit01
cmp [rax+0],48 // for loop < 10
ja exit01
cmp [rax+rbx+0],rcx // for loop < 10 <> rcx
je exit01
mov [rax+rbx+8],rcx // rcx > chuyen thanh rbx+38 = id enemy //mov [rax+8],rsi
add rbx,8
mov [rax+0],rbx
exit01:

cmp [rax+0],40 // for loop > 10 > = 0
jb exit04
mov [rax+0],0
exit04:

cmp byte ptr[r14+0],09 // id enemy > 9
jb exit02
cmp [r14+1],00000000 // id enemy
jne exit02

cmp [rcx+C8],736E6F4D // Monster
jne exit02
    //cmp [rdx+28],6165725F // _realFight enemy attack not damage
    //jne exit02
//cmp [rdx+28],4973695F // _isInCharmState
//jne exit02
cmp [rdx+470],6165745F // _teamId
je exit02
cmp [rdx+470+4],0064496D // _teamId
je exit02

// 11 HEX AUTO ASSEMBLY = 17 DEC AUTOIT
mov [rax+8*11],rcx // rcx > chuyen thanh rbx+38 = id enemy //mov [rax+8],rsi
//mov [rax+8*12],rdx // target id

exit02:

cmp [rcx+C8],63617053 // SpaceBox
jne exit03
cmp [rcx+C8+4],786F4265 // SpaceBox
jne exit03

// 21 HEX AUTO ASSEMBLY = 33 DEC AUTOIT
mov [rax+8*21],rcx // rcx > chuyen thanh rbx+38 = id enemy //mov [rax+8],rsi
//mov [rax+8*22],rdx // target id

exit03:

pop rbx
pop rcx
pop rax



exit:
jmp returnhere




//"DiabloImmortal.exe"+B50ED2:
//"DiabloImmortal.exe"+B5AF02:
//"DiabloImmortal.exe"+B56FB2:
//"DiabloImmortal.exe"+B57C12:
"DiabloImmortal.exe"+CAA092:


jmp newmem
nop
nop
returnhere:

