

//alloc(newmem,2048,"DiabloImmortal.exe"+1F1F2FF)
alloc(newmem,2048,"DiabloImmortal.exe"+251DA35)


label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:


// byte ptr [rdi+158],3F > 0F tat fog

// byte ptr [rdi+228],20 = bat 00 = tat
// new byte ptr [rdi+1D0],20 = bat 00 = tat
// -78

//[rdi+298] = float X LEFT+UP 511
//[rdi+29C] = float Y LEFT+UP 510

//[rdi+2E0] = float X RIGHT+DOWN 677
//[rdi+2E4] = float Y RIGHT+DOWN 383

//[rdi+28C] = float 572
//[rdi+78] = float (float)0.42

// new
//[rdi+238] = float X LEFT+UP 511
//[rdi+23C] = float Y LEFT+UP 510

//[rdi+280] = float X RIGHT+DOWN 677
//[rdi+284] = float Y RIGHT+DOWN 383

//[rdi+214] = float 572
//[rdi+78] = float (float)0.42

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

// xoa fog byte ptr [rdi+158] = 3F > 0F
cmp rdi,0 // address check
je if01
cmp byte ptr [rdi+158],3F // 425+20
jne if01
cmp [rdi+214],(float)572 // 425+20
jne if01
cmp byte ptr [rdi+1D0],20
jne if01
mov byte ptr [rdi+158],0F // number map
if01:




// tat map byte ptr [rdi+228] = 20 > 0
cmp rdi,0 // address check
je if02
cmp [rdi+214],(float)572 // 425+20
jne if02
cmp [rdi+78],3ED70A3E // (float)0.42
jne if02
cmp byte ptr [rdi+1D0],20
jne if02
mov [rax+8*60],rdi
if02:


// distance player center map
cmp rdi,0 // address check
je if03
cmp byte ptr [rdi+158],0F // 425+20
jne if03
cmp [rax+0],28 // for loop < 50 (190)  5 (28) 10 (48) 20 (90)
ja if01
cmp [rdi+214],(float)572 // 425+20
jne if03
cmp [rdi+78],3ED70A3E // (float)0.42
jne if03
cmp byte ptr [rdi+1D0],20
jne if03

cmp [rdi+238],(float)500 // >  510
jb if03
cmp [rdi+238],(float)697 // < 677
ja if03
cmp [rdi+280],(float)48 // >  510
jb if03
cmp [rdi+280],(float)697 // < 677
ja if03

cmp [rdi+23C],(float)373 // > 383
jb if03
cmp [rdi+23C],(float)520 // < 510
ja if03
cmp [rdi+284],(float)373 // > 383
jb if03
cmp [rdi+284],(float)520 // < 510
ja if03

cmp [rax+8*1],rdi // < 510
je if03
cmp [rax+8*2],rdi // < 510
je if03
cmp [rax+8*3],rdi // < 510
je if03
cmp [rax+8*4],rdi // < 510
je if03
cmp [rax+8*5],rdi // < 510
je if03
cmp [rax+8*6],rdi // < 510
je if03
cmp [rax+8*7],rdi // < 510
je if03
cmp [rax+8*8],rdi // < 510
je if03
cmp [rax+8*9],rdi // < 510
je if03
cmp [rax+8*10],rdi // < 510
je if03
cmp [rax+8*11],rdi // < 510
je if03
cmp [rax+8*12],rdi // < 510
je if03

cmp [rax+rbx],00 // [rax+8*1]  *2  *3 *4 *5
jne if03
mov [rax+0],rbx
mov [rax+rbx],rdi
if03:






// check map 1 2 3 4 >  1 > [rdi+1D0] = 0
//cmp rdi,0 // address check
//je if03_m
//cmp byte ptr [rdi+000001D0],20
//jne if03_m

//cmp [rax+8*1],rdi // < 510
//jne if03_m
//cmp [rax+8*2],0 // < 510
//je if03_m
//cmp [rax+8*3],0 // < 510
//je if03_m
//cmp [rax+8*4],0 // < 510
//je if03_m

//mov byte ptr [rdi+000001D0],0
//if03_m:

//																		    ;cmp [rax+08],rdi 08      cmp dword ptr [rax+10],00     cmp dword ptr [rax+18],00
//;$op_code01 &= "48 83 FF 00 74 40 90 90 90 90 80 BF 28 02 00 00 20 75 33 90 90 90 90 48 39 78 08 75 29 90 90 90 90 83 78 10 00 74 1F 90 90 90 90 83 78 18 00 74 15 90 90 90 90 83 78 20 00 74 0B 90 90 90 90 C6 87 28 02 00 00 00"

//For $lp = 1-1 to 9-1
//$h01 = Hex(0x8*(1+$lp),2)
//$h02 = Hex(0x8*(2+$lp),2)
//$h03 = Hex(0x8*(2+$lp),2)
//$h04 = Hex(0x8*(2+$lp),2)
// $op_code01 &= "48 83 FF 00 74 40 90 90 90 90 80 BF D0 01 00 00 20 75 33 90 90 9090483978"& $h01 &"75 29909090908378"& $h02 &" 00 741F909090908378"& $h03 &" 00 74 15 90 90 90 90 83 78 "& $h04 &" 00 74 0B 90 90 90 90 C6 87 D0 01 00 00 00"
//Next




pop rbx
pop rax

//mov [rdi+000002C0],rbx  //mov [rdi+00000320],rbx ( cu )
mov r14,[rsp+00000188]
//mov r15,[rsp+38]
//mov bpl,01
//test byte ptr [rdi+000001D0],20  //test byte ptr [rdi+1D0],20 ( cu ) // ko du byte > mov r14,[rsp+00000188]







exit:
jmp returnhere



//"DiabloImmortal.exe"+1F1F2FF:
"DiabloImmortal.exe"+251DA35:


jmp newmem
nop
nop
nop
returnhere:

