<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>1000</ID>
      <Description>"[$ASM] Invincible"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>define(bytes,83 C4 08 85 C0)
[ENABLE]
aobscanmodule(HEALTHY,Behavior.dll,D9 45 0C D8 F1)
registersymbol(HEALTHY)
assert(HEALTHY+1F,bytes)
alloc(GET_PLAYER_DAMAGE_FLOW,1,HEALTHY+1F)
label(return code damagedbyAI)

// a lot of stuff access this one.
// Yet its has access to health, when during play player gets hit.

GET_PLAYER_DAMAGE_FLOW:
add esp,08

cmp [ESI+0008],#6
jne originalcode

@@:
CMP [ESI+004C],#1
jne @f
CMP [ESI+0080],#0
jne originalcode
jmp code

@@:
cmp [ESI+003C],#1
jne damagedbyAI
jmp code

damagedbyAI:
cmp [ESI+0060],1
jne originalcode
cmp [ESI+007C],1
jne originalcode
cmp [ESI+0024],2
jne originalcode

CMP [ESI+0180],0
jne originalcode

mov edx,[ESI+000C]
mov ecx,[ESI+028C]
mov [ecx+0020],edx
jmp originalcode

code:

cmp [ESI+002C],#0
je originalcode
mov eax,0

originalcode:
test eax,eax
jmp return

HEALTHY+1F:
jmp GET_PLAYER_DAMAGE_FLOW
return:

[DISABLE]
HEALTHY+1F:
db bytes
unregistersymbol(HEALTHY)
dealloc(GET_PLAYER_DAMAGE_FLOW)
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>1001</ID>
      <Description>"[$ASM] Firepower"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
aobscanmodule(WEAPONS,Objects.dll,8B 81 E4 00 00 00 C3)
registersymbol(WEAPONS)
WEAPONS:
db 89 81 E4 00 00 00
[DISABLE]
WEAPONS:
db 8B 81 E4 00 00 00

unregistersymbol(WEAPONS)
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>1002</ID>
      <Description>"[$ASM] Get Cordinates"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
aobscanmodule(aob_coord,Controls.dll,8D BC 24 90 00 00 00)
alloc(newmem,$1000)

label(code)
label(return q)

newmem:
mov [q],eax
code:
  lea edi,[esp+00000090]
  jmp return
q:
dq 00
aob_coord:
  jmp newmem
  nop 2
return:
registersymbol(aob_coord q)

[DISABLE]
aob_coord:
  db 8D BC 24 90 00 00 00

unregistersymbol(aob_coord)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Controls.dll+4B6E1

Controls.dll+4B6BE: DC 1D F8 3E BE 02     - fcomp qword ptr [Controls.dll+73EF8]
Controls.dll+4B6C4: DF E0                 - fnstsw ax
Controls.dll+4B6C6: F6 C4 40              - test ah,40
Controls.dll+4B6C9: 0F 85 D8 0D 00 00     - jne Controls.dll+4C4A7
Controls.dll+4B6CF: 89 4D 40              - mov [ebp+40],ecx
Controls.dll+4B6D2: 8B 4D 38              - mov ecx,[ebp+38]
Controls.dll+4B6D5: 8B 11                 - mov edx,[ecx]
Controls.dll+4B6D7: FF 52 18              - call dword ptr [edx+18]
Controls.dll+4B6DA: B9 10 00 00 00        - mov ecx,00000010
Controls.dll+4B6DF: 8B F0                 - mov esi,eax
// ---------- INJECTING HERE ----------
Controls.dll+4B6E1: 8D BC 24 90 00 00 00  - lea edi,[esp+00000090]
// ---------- DONE INJECTING  ----------
Controls.dll+4B6E8: F3 A5                 - repe movsd 
Controls.dll+4B6EA: 8B 4D 34              - mov ecx,[ebp+34]
Controls.dll+4B6ED: 8B 01                 - mov eax,[ecx]
Controls.dll+4B6EF: FF 50 18              - call dword ptr [eax+18]
Controls.dll+4B6F2: 8B F0                 - mov esi,eax
Controls.dll+4B6F4: 8B 45 5C              - mov eax,[ebp+5C]
Controls.dll+4B6F7: B9 10 00 00 00        - mov ecx,00000010
Controls.dll+4B6FC: 8D BC 24 40 01 00 00  - lea edi,[esp+00000140]
Controls.dll+4B703: 83 E8 00              - sub eax,00
Controls.dll+4B706: F3 A5                 - repe movsd 
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>1003</ID>
          <Description>"Z"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>q</Address>
          <Offsets>
            <Offset>+2C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>1004</ID>
          <Description>"X"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>q</Address>
          <Offsets>
            <Offset>+1C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>1005</ID>
          <Description>"Y"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>q</Address>
          <Offsets>
            <Offset>+C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>1006</ID>
          <Description>""</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>q</Address>
          <Offsets>
            <Offset>28</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>1007</ID>
          <Description>""</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>q</Address>
          <Offsets>
            <Offset>24</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>1008</ID>
      <Description>"[$ASM] Get Heli movement speed"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
aobscanmodule(MSPEED_AOB,Controls.dll,D8 0D C8 33 BE 02 D9 05)
registersymbol(MSPEED_AOB MSPEED_Ptr)
label(MSPEED_Ptr)
(long)[MSPEED_AOB+2]:
MSPEED_Ptr:
[DISABLE]
unregistersymbol(MSPEED_AOB MSPEED_Ptr)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>1009</ID>
          <Description>"Speed"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>MSPEED_Ptr</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
