<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>9</ID>
      <Description>"Enable table"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
mono_initialize()
LaunchMonoDataCollector()
{$asm}
[DISABLE]
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>7</ID>
          <Description>"Infinite Health"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
aobscanregion(InfHealth,Creature:DamageCreature+ba0,Creature:DamageCreature+c50,89 48 14 49 8B 85 B0 00 00 00) // should be unique
alloc(newmem,$1000,InfHealth)
registersymbol(InfHealth)
label(skip)
label(return)

newmem:
  push r13
  mov r13,[r13+20]
  cmp [r13+104],1
  pop r13
  je skip
  mov [rax+14],ecx
skip:
  mov rax,[r13+000000B0]
  jmp return

InfHealth:
  jmp newmem
  nop 5
return:

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
InfHealth:
  db 89 48 14 49 8B 85 B0 00 00 00

unregistersymbol(InfHealth)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Creature:DamageCreature+c11

Creature:DamageCreature+bdb: 83 BD E0 FD FF FF 00           - cmp dword ptr [rbp-00000220],00
Creature:DamageCreature+be2: 7E 19                          - jle Creature:DamageCreature+bfd
Creature:DamageCreature+be4: F3 0F 10 05 74 07 00 00        - movss xmm0,[Creature:DamageCreature+1360]
Creature:DamageCreature+bec: F3 0F 5A C0                    - cvtss2sd xmm0,xmm0
Creature:DamageCreature+bf0: F2 0F 5A E8                    - cvtsd2ss xmm5,xmm0
Creature:DamageCreature+bf4: F3 41 0F 11 AD 54 01 00 00     - movss [r13+00000154],xmm5
Creature:DamageCreature+bfd: 49 8B 85 B0 00 00 00           - mov rax,[r13+000000B0]
Creature:DamageCreature+c04: 48 8B D0                       - mov rdx,rax
Creature:DamageCreature+c07: 48 63 48 14                    - movsxd  rcx,dword ptr [rax+14]
Creature:DamageCreature+c0b: 2B 8D E0 FD FF FF              - sub ecx,[rbp-00000220]
// ---------- INJECTING HERE ----------
Creature:DamageCreature+c11: 89 48 14                       - mov [rax+14],ecx
// ---------- DONE INJECTING  ----------
Creature:DamageCreature+c14: 49 8B 85 B0 00 00 00           - mov rax,[r13+000000B0]
Creature:DamageCreature+c1b: 48 63 40 14                    - movsxd  rax,dword ptr [rax+14]
Creature:DamageCreature+c1f: 85 C0                          - test eax,eax
Creature:DamageCreature+c21: 0F 8F 47 06 00 00              - jg Creature:DamageCreature+126e
Creature:DamageCreature+c27: 49 8B 45 30                    - mov rax,[r13+30]
Creature:DamageCreature+c2b: 48 8B C8                       - mov rcx,rax
Creature:DamageCreature+c2e: 33 D2                          - xor edx,edx
Creature:DamageCreature+c30: 83 38 00                       - cmp dword ptr [rax],00
Creature:DamageCreature+c33: 66 66 90                       - nop 3
Creature:DamageCreature+c36: 49 BB E0 CF 08 5D 1D 02 00 00  - mov r11,UnityEngine.Collider:set_enabled
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>8</ID>
          <Description>"Infinite Armor"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
aobscanregion(InfArmor,Creature:DamageCreature+ac0,Creature:DamageCreature+b70,89 48 1C 49 8B 85 B0 00 00 00) // should be unique
alloc(newmem,$1000,InfArmor)
registersymbol(InfArmor)
label(skip)
label(return)

newmem:
  push r13
  mov r13,[r13+20]
  cmp [r13+104],1
  pop r13
  je skip
  mov [rax+1C],ecx
skip:
  mov rax,[r13+000000B0]
  jmp return

InfArmor:
  jmp newmem
  nop 5
return:

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
InfArmor:
  db 89 48 14 49 8B 85 B0 00 00 00

unregistersymbol(InfArmor)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Creature:DamageCreature+b1a

Creature:DamageCreature+ae6: 49 BB 70 9D 52 18 1D 02 00 00  - mov r11,SoundPlayer:PlaySoundOnce
Creature:DamageCreature+af0: 41 FF D3                       - call r11
Creature:DamageCreature+af3: 49 8B 85 B0 00 00 00           - mov rax,[r13+000000B0]
Creature:DamageCreature+afa: 48 63 40 1C                    - movsxd  rax,dword ptr [rax+1C]
Creature:DamageCreature+afe: 85 C0                          - test eax,eax
Creature:DamageCreature+b00: 0F 8E B5 00 00 00              - jng Creature:DamageCreature+bbb
Creature:DamageCreature+b06: 49 8B 85 B0 00 00 00           - mov rax,[r13+000000B0]
Creature:DamageCreature+b0d: 48 8B D0                       - mov rdx,rax
Creature:DamageCreature+b10: 48 63 48 1C                    - movsxd  rcx,dword ptr [rax+1C]
Creature:DamageCreature+b14: 2B 8D D8 FD FF FF              - sub ecx,[rbp-00000228]
// ---------- INJECTING HERE ----------
Creature:DamageCreature+b1a: 89 48 1C                       - mov [rax+1C],ecx
// ---------- DONE INJECTING  ----------
Creature:DamageCreature+b1d: 49 8B 85 B0 00 00 00           - mov rax,[r13+000000B0]
Creature:DamageCreature+b24: 48 63 40 1C                    - movsxd  rax,dword ptr [rax+1C]
Creature:DamageCreature+b28: 85 C0                          - test eax,eax
Creature:DamageCreature+b2a: 0F 8D 9C 00 00 00              - jnl Creature:DamageCreature+bcc
Creature:DamageCreature+b30: 49 8B 85 B0 00 00 00           - mov rax,[r13+000000B0]
Creature:DamageCreature+b37: 48 63 40 1C                    - movsxd  rax,dword ptr [rax+1C]
Creature:DamageCreature+b3b: 33 FF                          - xor edi,edi
Creature:DamageCreature+b3d: 48 8B F0                       - mov rsi,rax
Creature:DamageCreature+b40: 85 C0                          - test eax,eax
Creature:DamageCreature+b42: 0F 8D 43 00 00 00              - jnl Creature:DamageCreature+b8b
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>6</ID>
          <Description>"Infinite Ammo"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
aobscanregion(InfAmmo1,Inventory:TryToTakeAmmo,Inventory:TryToTakeAmmo+5,48 83 EC 18)
aobscanregion(InfAmmo2,Inventory:TakeAmmo,Inventory:TakeAmmo+5,48 83 EC 28)
registersymbol(InfAmmo1)
registersymbol(InfAmmo2)

InfAmmo1:
  ret

InfAmmo2:
  ret

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
InfAmmo1:
  db 48

InfAmmo2:
  db 48

unregistersymbol(InfAmmo1)
unregistersymbol(InfAmmo2)

{
// ORIGINAL CODE - INJECTION POINT: Inventory:TryToTakeAmmo

21D1857D8BB: 08 F8              - or al,bh
21D1857D8BD: 49 24 41           - and al,41
21D1857D8C0: 1B 02              - sbb eax,[rdx]
21D1857D8C2: 00 00              - add [rax],al
21D1857D8C4: 00 00              - add [rax],al
21D1857D8C6: 00 00              - add [rax],al
21D1857D8C8: 00 00              - add [rax],al
21D1857D8CA: 00 00              - add [rax],al
21D1857D8CC: 00 00              - add [rax],al
21D1857D8CE: 00 00              - add [rax],al
// ---------- INJECTING HERE ----------
Inventory:TryToTakeAmmo: 48 83 EC 18        - sub rsp,18
// ---------- DONE INJECTING  ----------
Inventory:TryToTakeAmmo+4: 48 89 34 24        - mov [rsp],rsi
Inventory:TryToTakeAmmo+8: 48 89 7C 24 08     - mov [rsp+08],rdi
Inventory:TryToTakeAmmo+d: 4C 89 7C 24 10     - mov [rsp+10],r15
Inventory:TryToTakeAmmo+12: 4C 8B F9           - mov r15,rcx
Inventory:TryToTakeAmmo+15: 48 8B FA           - mov rdi,rdx
Inventory:TryToTakeAmmo+18: 49 8B F0           - mov rsi,r8
Inventory:TryToTakeAmmo+1b: 49 8B 47 10        - mov rax,[r15+10]
Inventory:TryToTakeAmmo+1f: 48 63 CF           - movsxd  rcx,edi
Inventory:TryToTakeAmmo+22: 39 48 18           - cmp [rax+18],ecx
Inventory:TryToTakeAmmo+25: 0F 86 60 00 00 00  - jbe Inventory:TryToTakeAmmo+8b
}
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
