<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>97</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>27</ID>
          <Description>"Infinite Lives"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
aobscanmodule(InfLives,GameAssembly.dll,89 43 2C 48 8B 8B A0 00 00 00 48 85 C9 ?? ?? 8B 46)
registersymbol(InfLives)

InfLives:
  nop 3

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
InfLives:
  db 89 43 2C

unregistersymbol(InfLives)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+6CC9D7

GameAssembly.dll+6CC9B7: 72 21                 - jb GameAssembly.dll+6CC9DA
GameAssembly.dll+6CC9B9: 48 8B 80 C8 00 00 00  - mov rax,[rax+000000C8]
GameAssembly.dll+6CC9C0: 0F B6 C9              - movzx ecx,cl
GameAssembly.dll+6CC9C3: 48 39 54 C8 F8        - cmp [rax+rcx*8-08],rdx
GameAssembly.dll+6CC9C8: 75 10                 - jne GameAssembly.dll+6CC9DA
GameAssembly.dll+6CC9CA: 8B 43 2C              - mov eax,[rbx+2C]
GameAssembly.dll+6CC9CD: 41 2B C0              - sub eax,r8d
GameAssembly.dll+6CC9D0: 33 C9                 - xor ecx,ecx
GameAssembly.dll+6CC9D2: 85 C0                 - test eax,eax
GameAssembly.dll+6CC9D4: 0F 4E C1              - cmovle eax,ecx
// ---------- INJECTING HERE ----------
GameAssembly.dll+6CC9D7: 89 43 2C              - mov [rbx+2C],eax
// ---------- DONE INJECTING  ----------
GameAssembly.dll+6CC9DA: 48 8B 8B A0 00 00 00  - mov rcx,[rbx+000000A0]
GameAssembly.dll+6CC9E1: 48 85 C9              - test rcx,rcx
GameAssembly.dll+6CC9E4: 74 30                 - je GameAssembly.dll+6CCA16
GameAssembly.dll+6CC9E6: 8B 46 08              - mov eax,[rsi+08]
GameAssembly.dll+6CC9E9: 4C 8D 4C 24 30        - lea r9,[rsp+30]
GameAssembly.dll+6CC9EE: F2 0F 10 06           - movsd xmm0,[rsi]
GameAssembly.dll+6CC9F2: 4C 8B C7              - mov r8,rdi
GameAssembly.dll+6CC9F5: 4C 8B 51 18           - mov r10,[rcx+18]
GameAssembly.dll+6CC9F9: 48 8B D3              - mov rdx,rbx
GameAssembly.dll+6CC9FC: 89 44 24 38           - mov [rsp+38],eax
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>25</ID>
          <Description>"Godmode"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
aobscanregion(FindPlayer,Fabraz.PlayerCharacter.BaseCharacterController.Update,Fabraz.PlayerCharacter.BaseCharacterController.Update+30,48 8B D9 33 C9) // should be unique
alloc(newmem,$1000,FindPlayer)
alloc(pPlayer,8)
registersymbol(pPlayer)
registersymbol(FindPlayer)
label(return)

newmem:
  mov rbx,rcx
  push rbx
  mov rbx,[rbx+178]
  mov rbx,[rbx+10]
  add rbx,50
  mov [pPlayer],rbx
  mov [rbx],0
  pop rbx
  xor ecx,ecx
  jmp return

FindPlayer:
  jmp newmem
return:

[DISABLE]
[pPlayer]:
  db 1

FindPlayer:
  db 48 8B D9 33 C9

unregistersymbol(FindPlayer)
unregistersymbol(pPlayer)
dealloc(pPlayer)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+5BD446

GameAssembly.dll+5BD438: CC                    - int 3 
GameAssembly.dll+5BD439: CC                    - int 3 
GameAssembly.dll+5BD43A: CC                    - int 3 
GameAssembly.dll+5BD43B: CC                    - int 3 
GameAssembly.dll+5BD43C: CC                    - int 3 
GameAssembly.dll+5BD43D: CC                    - int 3 
GameAssembly.dll+5BD43E: CC                    - int 3 
GameAssembly.dll+5BD43F: CC                    - int 3 
Fabraz.PlayerCharacter.BaseCharacterController.Update: 40 53                 - push rbx
GameAssembly.dll+5BD442: 48 83 EC 20           - sub rsp,20
// ---------- INJECTING HERE ----------
GameAssembly.dll+5BD446: 48 8B D9              - mov rbx,rcx
// ---------- DONE INJECTING  ----------
GameAssembly.dll+5BD449: 33 C9                 - xor ecx,ecx
GameAssembly.dll+5BD44B: E8 B0 F3 5E 02        - call UnityEngine.Time.get_deltaTime
GameAssembly.dll+5BD450: 4C 8B 03              - mov r8,[rbx]
GameAssembly.dll+5BD453: 0F 28 C8              - movaps xmm1,xmm0
GameAssembly.dll+5BD456: 48 8B CB              - mov rcx,rbx
GameAssembly.dll+5BD459: 49 8B 80 D8 0A 00 00  - mov rax,[r8+00000AD8]
GameAssembly.dll+5BD460: 4D 8B 80 E0 0A 00 00  - mov r8,[r8+00000AE0]
GameAssembly.dll+5BD467: 48 83 C4 20           - add rsp,20
GameAssembly.dll+5BD46B: 5B                    - pop rbx
GameAssembly.dll+5BD46C: 48 FF E0              - jmp rax
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>5</ID>
          <Description>"Infinite Jumps"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
aobscanregion(InfJump,Fabraz.PlayerCharacter.Bubsy.BubsyCharacterController.CanFlutterJump,Fabraz.PlayerCharacter.Bubsy.BubsyCharacterController.CanFlutterJump+10,40 53 48 83 EC 20)
registersymbol(InfJump)

InfJump:
  mov al,1
  ret

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
InfJump:
  db 40 53 48 83

unregistersymbol(InfJump)

{
// ORIGINAL CODE - INJECTION POINT: Fabraz.PlayerCharacter.Bubsy.BubsyCharacterController.CanFlutterJump

GameAssembly.dll+5C2F16: CC                    - int 3
GameAssembly.dll+5C2F17: CC                    - int 3
GameAssembly.dll+5C2F18: CC                    - int 3
GameAssembly.dll+5C2F19: CC                    - int 3
GameAssembly.dll+5C2F1A: CC                    - int 3
GameAssembly.dll+5C2F1B: CC                    - int 3
GameAssembly.dll+5C2F1C: CC                    - int 3
GameAssembly.dll+5C2F1D: CC                    - int 3
GameAssembly.dll+5C2F1E: CC                    - int 3
GameAssembly.dll+5C2F1F: CC                    - int 3
// ---------- INJECTING HERE ----------
Fabraz.PlayerCharacter.Bubsy.BubsyCharacterController.CanFlutterJump: 40 53                 - push rbx
// ---------- DONE INJECTING  ----------
GameAssembly.dll+5C2F22: 48 83 EC 20           - sub rsp,20
GameAssembly.dll+5C2F26: 80 3D 17 6F 9F 03 00  - cmp byte ptr [GameAssembly.dll+3FB9E44],00
GameAssembly.dll+5C2F2D: 48 8B D9              - mov rbx,rcx
GameAssembly.dll+5C2F30: 75 1F                 - jne GameAssembly.dll+5C2F51
GameAssembly.dll+5C2F32: 48 8D 0D 07 24 80 03  - lea rcx,[GameAssembly.dll+3DC5340]
GameAssembly.dll+5C2F39: E8 D2 AC E8 FF        - call GameAssembly.il2cpp_get_exception_argument_null+3F0
GameAssembly.dll+5C2F3E: 48 8D 0D E3 9E 7D 03  - lea rcx,[GameAssembly.dll+3D9CE28]
GameAssembly.dll+5C2F45: E8 C6 AC E8 FF        - call GameAssembly.il2cpp_get_exception_argument_null+3F0
GameAssembly.dll+5C2F4A: C6 05 F3 6E 9F 03 01  - mov byte ptr [GameAssembly.dll+3FB9E44],01
GameAssembly.dll+5C2F51: 48 8B 83 48 01 00 00  - mov rax,[rbx+00000148]
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>21</ID>
          <Description>"Infinite Glide"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
aobscanregion(InfGlide,Fabraz.PlayerCharacter.BaseCharacterController.Update_ColliderTrapEscape,Fabraz.PlayerCharacter.BaseCharacterController.Update_ColliderTrapEscape+10,40 53 48 83)
aobscanregion(NoGTimer,Fabraz.PlayerCharacter.Bubsy.BubsyCharacterController.UpdateStates+E67,Fabraz.PlayerCharacter.Bubsy.BubsyCharacterController.UpdateStates+F37,F3 0F 11 40 14 48 8B 83)
alloc(newmem,$1000,NoGTimer)
alloc(retValues,8)
registersymbol(InfGlide)
registersymbol(NoGTimer)
registersymbol(retValues)
label(return)

InfGlide:
  ret

newmem:
  push rbx
  mov rbx,[rax+48]
  mov [retValues],rbx
  mov [rbx+28],0
  mov [rbx+2C],0
  pop rbx
  jmp return

NoGTimer:
  jmp newmem
return:

[DISABLE]
[retValues]+28:
  dd (float)-2

[retValues]+2C:
  dd (float)-6

InfGlide:
  db 40

NoGTimer:
  db F3 0F 11 40 14

unregistersymbol(InfGlide)
unregistersymbol(NoGTimer)
unregistersymbol(retValues)
dealloc(retValues)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Fabraz.PlayerCharacter.BaseCharacterController.Update_ColliderTrapEscape

GameAssembly.dll+5BAFF6: CC                    - int 3
GameAssembly.dll+5BAFF7: CC                    - int 3
GameAssembly.dll+5BAFF8: CC                    - int 3
GameAssembly.dll+5BAFF9: CC                    - int 3
GameAssembly.dll+5BAFFA: CC                    - int 3
GameAssembly.dll+5BAFFB: CC                    - int 3
GameAssembly.dll+5BAFFC: CC                    - int 3
GameAssembly.dll+5BAFFD: CC                    - int 3
GameAssembly.dll+5BAFFE: CC                    - int 3
GameAssembly.dll+5BAFFF: CC                    - int 3
// ---------- INJECTING HERE ----------
Fabraz.PlayerCharacter.BaseCharacterController.Update_ColliderTrapEscape: 40 53                 - push rbx
// ---------- DONE INJECTING  ----------
GameAssembly.dll+5BB002: 48 83 EC 60           - sub rsp,60
GameAssembly.dll+5BB006: 80 3D D0 ED 9F 03 00  - cmp byte ptr [GameAssembly.dll+3FB9DDD],00
GameAssembly.dll+5BB00D: 48 8B D9              - mov rbx,rcx
GameAssembly.dll+5BB010: 0F 29 7C 24 40        - movaps [rsp+40],xmm7
GameAssembly.dll+5BB015: 0F 28 F9              - movaps xmm7,xmm1
GameAssembly.dll+5BB018: 75 1F                 - jne GameAssembly.dll+5BB039
GameAssembly.dll+5BB01A: 48 8D 0D 1F A3 80 03  - lea rcx,[GameAssembly.dll+3DC5340]
GameAssembly.dll+5BB021: E8 EA 2B E9 FF        - call GameAssembly.il2cpp_get_exception_argument_null+3F0
GameAssembly.dll+5BB026: 48 8D 0D FB 1D 7E 03  - lea rcx,[GameAssembly.dll+3D9CE28]
GameAssembly.dll+5BB02D: E8 DE 2B E9 FF        - call GameAssembly.il2cpp_get_exception_argument_null+3F0



// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+5DE319

GameAssembly.dll+5DE2EB: 4C 89 71 28           - mov [rcx+28],r14
GameAssembly.dll+5DE2EF: 33 D2                 - xor edx,edx
GameAssembly.dll+5DE2F1: 48 83 C1 28           - add rcx,28
GameAssembly.dll+5DE2F5: E8 46 EC E6 FF        - call GameAssembly.il2cpp_value_box+20
GameAssembly.dll+5DE2FA: E9 50 F6 FF FF        - jmp GameAssembly.dll+5DD94F
GameAssembly.dll+5DE2FF: 48 8B 83 50 01 00 00  - mov rax,[rbx+00000150]
GameAssembly.dll+5DE306: 48 85 C0              - test rax,rax
GameAssembly.dll+5DE309: 0F 84 D8 02 00 00     - je GameAssembly.dll+5DE5E7
GameAssembly.dll+5DE30F: F3 0F 10 45 FF        - movss xmm0,[rbp-01]
GameAssembly.dll+5DE314: F3 0F 58 40 14        - addss xmm0,[rax+14]
// ---------- INJECTING HERE ----------
GameAssembly.dll+5DE319: F3 0F 11 40 14        - movss [rax+14],xmm0
// ---------- DONE INJECTING  ----------
GameAssembly.dll+5DE31E: 48 8B 83 50 01 00 00  - mov rax,[rbx+00000150]
GameAssembly.dll+5DE325: 48 85 C0              - test rax,rax
GameAssembly.dll+5DE328: 0F 84 B9 02 00 00     - je GameAssembly.dll+5DE5E7
GameAssembly.dll+5DE32E: 48 8B 48 48           - mov rcx,[rax+48]
GameAssembly.dll+5DE332: 48 8B D0              - mov rdx,rax
GameAssembly.dll+5DE335: 48 85 C9              - test rcx,rcx
GameAssembly.dll+5DE338: 0F 84 A9 02 00 00     - je GameAssembly.dll+5DE5E7
GameAssembly.dll+5DE33E: 8B 40 14              - mov eax,[rax+14]
GameAssembly.dll+5DE341: 89 41 24              - mov [rcx+24],eax
GameAssembly.dll+5DE344: 48 8B 83 50 01 00 00  - mov rax,[rbx+00000150]
}
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
