

//alloc(newmem,2048,"DiabloImmortal.exe"+124F06E)
alloc(newmem,2048,"DiabloImmortal.exe"+13F12C6)


label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
// movsd xmm0,[rbx+00000100]
mov eax,[rbx+00000108]
// movsd [rbx+000000F4],xmm0
// movsd xmm0,[rdi]

// player view x y
// rbx+100 = x
// rbx+108 = y
// rbx+10C = zoom
// rbx+118 = zoom x
// rbx+11C = zoom y

push rax // address
mov rax,newmem+500 // address 0x0 value vtmem
//mov byte ptr [rcx+6C],01 // test


mov [rax],rbx

cmp rbx,00000000
je exit01
mov [rbx+10C],42700000 // 60% zoom
mov [rbx+120],00000000 // 0 rotation x
mov [rbx+124],C1700000 // -15 rotation z
//mov [rbx+128],C1700000 // -15 rotation y
mov [rbx+118],(float)2 // 2 rotation y
exit01:


// check 0 = stop 1 = run
mov r12,[rbx+00000108]

cmp [rax+8*1],r12 // 425+20
jne exit02
mov [rax+8*3],0
exit02:

cmp [rax+8*1],r12 // 425+20
je exit03
mov [rax+8*3],1
exit03:

mov [rax+8*1],r12

mov r12,[rbx+00000100]
cmp [rax+8*2],r12 // 425+20
je exit04
mov [rax+8*3],1
exit04:

mov [rax+8*2],r12
// end check 0 = stop 1 = run



pop rax



exit:
jmp returnhere




//"DiabloImmortal.exe"+124F06E:
"DiabloImmortal.exe"+13F12C6:


jmp newmem
nop
returnhere:

