<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>8</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>1</ID>
          <Description>"Find Player"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
aobscanregion(FindPlayer,Forestrike.Characters.ForestrikePlayer.OnUpdate,Forestrike.Characters.ForestrikePlayer.OnUpdate+A4,80 B9 10 02 00 00 00)
alloc(newmem1,$1000,FindPlayer)
registersymbol(FindPlayer)
registersymbol(pPlayer)
label(return1)
alloc(pPlayer,8)

pPlayer:
  dq 0

newmem1:
  cmp byte ptr [rcx+00000210],00
  mov [pPlayer],rcx
  jmp return1

FindPlayer:
  jmp newmem1
  nop 2
return1:

[DISABLE]
FindPlayer:
  db 80 B9 10 02 00 00 00

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: FindPlayer - GameAssembly.dll+74DA3A

GameAssembly.dll+74DA1E: 48 8B 5C 24 30        - mov rbx,[rsp+30]
GameAssembly.dll+74DA23: 48 83 C4 20           - add rsp,20
GameAssembly.dll+74DA27: 5F                    - pop rdi
GameAssembly.dll+74DA28: C3                    - ret
GameAssembly.dll+74DA29: E8 52 01 BE FF        - call GameAssembly.il2cpp_method_get_class+A0
GameAssembly.dll+74DA2E: CC                    - int 3
GameAssembly.dll+74DA2F: CC                    - int 3
Forestrike.Characters.ForestrikePlayer.OnUpdate: 48 89 5C 24 08        - mov [rsp+08],rbx
GameAssembly.dll+74DA35: 57                    - push rdi
GameAssembly.dll+74DA36: 48 83 EC 20           - sub rsp,20
// ---------- INJECTING HERE ----------
GameAssembly.dll+74DA3A: 80 B9 10 02 00 00 00  - cmp byte ptr [rcx+00000210],00
// ---------- DONE INJECTING  ----------
GameAssembly.dll+74DA41: 48 8B D9              - mov rbx,rcx
GameAssembly.dll+74DA44: 74 3A                 - je GameAssembly.dll+74DA80
GameAssembly.dll+74DA46: 33 C9                 - xor ecx,ecx
GameAssembly.dll+74DA48: E8 73 D2 08 00        - call Forestrike.FGC.get_InputManager
GameAssembly.dll+74DA4D: 48 85 C0              - test rax,rax
GameAssembly.dll+74DA50: 74 7D                 - je GameAssembly.dll+74DACF
GameAssembly.dll+74DA52: 33 D2                 - xor edx,edx
GameAssembly.dll+74DA54: 48 8B C8              - mov rcx,rax
GameAssembly.dll+74DA57: E8 E4 6C 09 00        - call Forestrike.InputManager.get_CurrentCategory
GameAssembly.dll+74DA5C: 83 F8 02              - cmp eax,02

--------------------------------------

// ORIGINAL CODE - INJECTION POINT: FindCoins - GameAssembly.dll+7F9606

GameAssembly.dll+7F95E5: 44 89 44 24 18        - mov [rsp+18],r8d
GameAssembly.dll+7F95EA: 48 89 54 24 10        - mov [rsp+10],rdx
GameAssembly.dll+7F95EF: 48 89 4C 24 08        - mov [rsp+08],rcx
GameAssembly.dll+7F95F4: 56                    - push rsi
GameAssembly.dll+7F95F5: 57                    - push rdi
GameAssembly.dll+7F95F6: 41 54                 - push r12
GameAssembly.dll+7F95F8: 41 56                 - push r14
GameAssembly.dll+7F95FA: 41 57                 - push r15
GameAssembly.dll+7F95FC: 48 81 EC A0 00 00 00  - sub rsp,000000A0
GameAssembly.dll+7F9603: 45 8B F0              - mov r14d,r8d
// ---------- INJECTING HERE ----------
GameAssembly.dll+7F9606: 4C 8B E2              - mov r12,rdx
// ---------- DONE INJECTING  ----------
GameAssembly.dll+7F9609: 4C 8B F9              - mov r15,rcx
GameAssembly.dll+7F960C: 80 3D 13 DB 89 03 00  - cmp byte ptr [GameAssembly.dll+4097126],00
GameAssembly.dll+7F9613: 75 5B                 - jne GameAssembly.dll+7F9670
GameAssembly.dll+7F9615: 48 8D 0D 2C E6 62 03  - lea rcx,[GameAssembly.dll+3E27C48]
GameAssembly.dll+7F961C: E8 BF 42 B3 FF        - call GameAssembly.il2cpp_get_exception_argument_null+3E0
GameAssembly.dll+7F9621: 48 8D 0D 18 B9 61 03  - lea rcx,[GameAssembly.dll+3E14F40]
GameAssembly.dll+7F9628: E8 B3 42 B3 FF        - call GameAssembly.il2cpp_get_exception_argument_null+3E0
GameAssembly.dll+7F962D: 48 8D 0D DC B9 61 03  - lea rcx,[GameAssembly.dll+3E15010]
GameAssembly.dll+7F9634: E8 A7 42 B3 FF        - call GameAssembly.il2cpp_get_exception_argument_null+3E0
GameAssembly.dll+7F9639: 48 8D 0D A0 BA 61 03  - lea rcx,[GameAssembly.dll+3E150E0]
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>4</ID>
              <Description>"Ki"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayer</Address>
              <Offsets>
                <Offset>44</Offset>
                <Offset>80</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>3</ID>
              <Description>"God Mode"</Description>
              <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Off
1:On
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Byte</VariableType>
              <Address>pPlayer</Address>
              <Offsets>
                <Offset>7A</Offset>
                <Offset>90</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>5</ID>
              <Description>"No Ki Consumption"</Description>
              <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Off
1:On
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Byte</VariableType>
              <Address>pPlayer</Address>
              <Offsets>
                <Offset>48</Offset>
                <Offset>80</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>11</ID>
              <Description>"Free Items"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]
aobscanregion(NoCheck,Forestrike.CurrencyInstance.HaveEnough,Forestrike.CurrencyInstance.HaveEnough+5,40 53 55)
aobscanregion(NoSpend,Forestrike.CurrencyInstance.Spend,Forestrike.CurrencyInstance.Spend+5,40 55)
registersymbol(NoCheck)
registersymbol(NoSpend)

NoCheck:
  mov al,1
  ret

NoSpend:
  ret

[DISABLE]
NoCheck:
  db 40 53 55

NoSpend:
  db 40

unregistersymbol(NoCheck)
unregistersymbol(NoSpend)
</AssemblerScript>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <CheatCodes>
    <CodeEntry>
      <Description>Change of call Forestrike.CurrencyInstance.HaveEnough</Description>
      <AddressString>GameAssembly.dll+617E5A</AddressString>
      <Before>
        <Byte>8B</Byte>
        <Byte>D0</Byte>
        <Byte>48</Byte>
        <Byte>8B</Byte>
        <Byte>CE</Byte>
      </Before>
      <Actual>
        <Byte>E8</Byte>
        <Byte>D1</Byte>
        <Byte>D5</Byte>
        <Byte>1D</Byte>
        <Byte>00</Byte>
      </Actual>
      <After>
        <Byte>84</Byte>
        <Byte>C0</Byte>
        <Byte>74</Byte>
        <Byte>5A</Byte>
        <Byte>48</Byte>
      </After>
    </CodeEntry>
  </CheatCodes>
  <UserdefinedSymbols/>
</CheatTable>
