<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>10</ID>
      <Description>"Activate Mono"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
LaunchMonoDataCollector()
{$asm}

[DISABLE]
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>36</ID>
          <Description>"10.000 XP each loot"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,PlayerHealth:set_XP+63)
define(bytes,89 B7 04 01 00 00)

[ENABLE]

assert(address,bytes)
alloc(newmem,$100,PlayerHealth:set_XP+63)

label(code)
label(return)

newmem:
  mov esi,#10000
code:
  mov [rdi+00000104],esi
  jmp return

address:
  jmp newmem
  nop
return:

[DISABLE]

address:
  db bytes
  // mov [rdi+00000104],esi

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: PlayerHealth:set_XP+63

PlayerHealth:set_XP+36: 44 0F B6 87 D1 00 00 00        - movzx r8d,byte ptr [rdi+000000D1]
PlayerHealth:set_XP+3e: 66 0F 57 C0                    - xorpd xmm0,xmm0
PlayerHealth:set_XP+42: 48 8B C8                       - mov rcx,rax
PlayerHealth:set_XP+45: 48 8B D7                       - mov rdx,rdi
PlayerHealth:set_XP+48: F2 0F 10 D8                    - movsd xmm3,xmm0
PlayerHealth:set_XP+4c: F2 0F 5A DB                    - cvtsd2ss xmm3,xmm3
PlayerHealth:set_XP+50: 83 38 00                       - cmp dword ptr [rax],00
PlayerHealth:set_XP+53: 66 66 90                       - nop 3
PlayerHealth:set_XP+56: 49 BB E0 BD 9A BD EA 01 00 00  - mov r11,BehaviourTriggerCollection:Invoke
PlayerHealth:set_XP+60: 41 FF D3                       - call r11
// ---------- INJECTING HERE ----------
PlayerHealth:set_XP+63: 89 B7 04 01 00 00              - mov [rdi+00000104],esi
// ---------- DONE INJECTING  ----------
PlayerHealth:set_XP+69: 48 8B 87 A0 00 00 00           - mov rax,[rdi+000000A0]
PlayerHealth:set_XP+70: 48 63 97 04 01 00 00           - movsxd  rdx,dword ptr [rdi+00000104]
PlayerHealth:set_XP+77: 48 8B C8                       - mov rcx,rax
PlayerHealth:set_XP+7a: 83 38 00                       - cmp dword ptr [rax],00
PlayerHealth:set_XP+7d: 90                             - nop 
PlayerHealth:set_XP+7e: 49 BB C0 20 0F E7 EA 01 00 00  - mov r11,BedtimeCore.Utility.SafeAction`1[System.Int32]:Invoke
PlayerHealth:set_XP+88: 41 FF D3                       - call r11
PlayerHealth:set_XP+8b: 48 63 87 04 01 00 00           - movsxd  rax,dword ptr [rdi+00000104]
PlayerHealth:set_XP+92: 48 89 45 E0                    - mov [rbp-20],rax
PlayerHealth:set_XP+96: 48 8B CF                       - mov rcx,rdi
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>39</ID>
          <Description>"Get Player Data"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,PlayerHealth:RegenerateHealth+16)
define(bytes,48 63 8E D8 00 00 00)

[ENABLE]
assert(address,bytes)
alloc(newmem,$100,PlayerHealth:RegenerateHealth+16)

label(code)
label(return)
label(base)

newmem:
  mov [base],rsi
code:
  movsxd  rax,dword ptr [rsi+0000010C]
  jmp return

base:
  dq 0

address:
  jmp newmem
  nop 2
return:
registersymbol(base)
[DISABLE]

address:
  db bytes
  // movsxd  rax,dword ptr [rsi+0000010C]

dealloc(newmem)
unregistersymbol(base)
{
// ORIGINAL CODE - INJECTION POINT: PlayerHealth:RegenerateHealth+f

1EAE700F8D7: 00 00                          - add [rax],al
1EAE700F8D9: 00 00                          - add [rax],al
1EAE700F8DB: 00 00                          - add [rax],al
1EAE700F8DD: 00 00                          - add [rax],al
1EAE700F8DF: 00 55 48                       - add [rbp+48],dl
PlayerHealth:RegenerateHealth+2: 8B EC                          - mov ebp,esp
PlayerHealth:RegenerateHealth+4: 48 83 EC 40                    - sub rsp,40
PlayerHealth:RegenerateHealth+8: 48 89 75 F8                    - mov [rbp-08],rsi
PlayerHealth:RegenerateHealth+c: 48 8B F1                       - mov rsi,rcx
PlayerHealth:RegenerateHealth+f: 48 63 86 0C 01 00 00           - movsxd  rax,dword ptr [rsi+0000010C]
// ---------- INJECTING HERE ----------
PlayerHealth:RegenerateHealth+16: 48 63 8E D8 00 00 00           - movsxd  rcx,dword ptr [rsi+000000D8]
// ---------- DONE INJECTING  ----------
PlayerHealth:RegenerateHealth+1d: 3B C1                          - cmp eax,ecx
PlayerHealth:RegenerateHealth+1f: 0F 84 18 01 00 00              - je PlayerHealth:RegenerateHealth+13d
PlayerHealth:RegenerateHealth+25: 0F B6 86 01 01 00 00           - movzx eax,byte ptr [rsi+00000101]
PlayerHealth:RegenerateHealth+2c: 85 C0                          - test eax,eax
PlayerHealth:RegenerateHealth+2e: 75 1B                          - jne PlayerHealth:RegenerateHealth+4b
PlayerHealth:RegenerateHealth+30: 48 8D 64 24 00                 - lea rsp,[rsp+00]
PlayerHealth:RegenerateHealth+35: 90                             - nop 
PlayerHealth:RegenerateHealth+36: 49 BB 20 59 CB B5 EA 01 00 00  - mov r11,CombatManager:get_InCombat
PlayerHealth:RegenerateHealth+40: 41 FF D3                       - call r11
PlayerHealth:RegenerateHealth+43: 85 C0                          - test eax,eax
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>40</ID>
              <Description>"Base Address"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <GroupHeader>1</GroupHeader>
              <Address>base</Address>
              <Offsets>
                <Offset>0</Offset>
              </Offsets>
              <CheatEntries>
                <CheatEntry>
                  <ID>43</ID>
                  <Description>"Current Health"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>0000FF</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>+10c</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>41</ID>
                  <Description>"Max Health"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>+d8</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>42</ID>
                  <Description>"Experience"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>+104</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>49</ID>
      <Description>"debug"</Description>
      <Options moHideChildren="1"/>
      <Color>C0C0C0</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>48</ID>
          <Description>"Auto Assemble script"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,PlayerFight:AttackTarget+29)
define(bytes,49 8B F1 4D 63 B7 EC 00 00 00 41 BD 01 00 00 00)

[ENABLE]
assert(address,bytes)
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  mov r9,#100
code:
  mov rsi,r9
  movsxd  r14,dword ptr [r15+000000EC]
  mov r13d,00000001
  jmp return

address:
  jmp far newmem
  nop 2
return:

[DISABLE]

address:
  db bytes
  // mov rsi,r9
  // movsxd  r14,dword ptr [r15+000000EC]
  // mov r13d,00000001

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: PlayerFight:AttackTarget+29

PlayerFight:AttackTarget+1: 48 8B EC                       - mov rbp,rsp
PlayerFight:AttackTarget+4: 48 81 EC 80 00 00 00           - sub rsp,00000080
PlayerFight:AttackTarget+b: 48 89 75 D8                    - mov [rbp-28],rsi
PlayerFight:AttackTarget+f: 48 89 7D E0                    - mov [rbp-20],rdi
PlayerFight:AttackTarget+13: 4C 89 6D E8                    - mov [rbp-18],r13
PlayerFight:AttackTarget+17: 4C 89 75 F0                    - mov [rbp-10],r14
PlayerFight:AttackTarget+1b: 4C 89 7D F8                    - mov [rbp-08],r15
PlayerFight:AttackTarget+1f: 4C 8B F9                       - mov r15,rcx
PlayerFight:AttackTarget+22: 48 8B FA                       - mov rdi,rdx
PlayerFight:AttackTarget+25: 4C 89 45 A0                    - mov [rbp-60],r8
// ---------- INJECTING HERE ----------
PlayerFight:AttackTarget+29: 49 8B F1                       - mov rsi,r9
// ---------- DONE INJECTING  ----------
PlayerFight:AttackTarget+2c: 4D 63 B7 EC 00 00 00           - movsxd  r14,dword ptr [r15+000000EC]
PlayerFight:AttackTarget+33: 41 BD 01 00 00 00              - mov r13d,00000001
PlayerFight:AttackTarget+39: FF CE                          - dec esi
PlayerFight:AttackTarget+3b: 83 FE 04                       - cmp esi,04
PlayerFight:AttackTarget+3e: 73 3A                          - jae PlayerFight:AttackTarget+7a
PlayerFight:AttackTarget+40: 48 8B C6                       - mov rax,rsi
PlayerFight:AttackTarget+43: 48 C1 E0 03                    - shl rax,03
PlayerFight:AttackTarget+47: 8B C8                          - mov ecx,eax
PlayerFight:AttackTarget+49: 48 B8 30 E4 85 D1 28 02 00 00  - mov rax,00000228D185E430
PlayerFight:AttackTarget+53: 48 03 C1                       - add rax,rcx
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>47</ID>
          <Description>"One-Hit-Kill vs Tentacles"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,Ratacle:set_Health+43)
define(bytes,89 87 C4 00 00 00)

[ENABLE]
assert(address,bytes)
address:
  mov eax,100
  mov [rdi+000000C4],eax

[DISABLE]

address:
  db bytes
  // mov [rdi+000000C4],eax

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Ratacle:set_Health+43

Ratacle:set_Health+1a: 4C 63 87 C0 00 00 00           - movsxd  r8,dword ptr [rdi+000000C0]
Ratacle:set_Health+21: 48 8B 47 60                    - mov rax,[rdi+60]
Ratacle:set_Health+25: 48 63 40 18                    - movsxd  rax,dword ptr [rax+18]
Ratacle:set_Health+29: FF C0                          - inc eax
Ratacle:set_Health+2b: 44 0F AF C0                    - imul r8d,eax
Ratacle:set_Health+2f: 48 8B CE                       - mov rcx,rsi
Ratacle:set_Health+32: 33 D2                          - xor edx,edx
Ratacle:set_Health+34: 66 90                          - nop 2
Ratacle:set_Health+36: 49 BB C0 EA FE B4 EA 01 00 00  - mov r11,UnityEngine.Mathf:Clamp
Ratacle:set_Health+40: 41 FF D3                       - call r11
// ---------- INJECTING HERE ----------
Ratacle:set_Health+43: 89 87 C4 00 00 00              - mov [rdi+000000C4],eax
// ---------- DONE INJECTING  ----------
Ratacle:set_Health+49: 48 8B 87 80 00 00 00           - mov rax,[rdi+00000080]
Ratacle:set_Health+50: 48 63 8F C4 00 00 00           - movsxd  rcx,dword ptr [rdi+000000C4]
Ratacle:set_Health+57: F3 0F 2A C1                    - cvtsi2ss xmm0,ecx
Ratacle:set_Health+5b: F3 0F 5A C0                    - cvtss2sd xmm0,xmm0
Ratacle:set_Health+5f: 48 63 8F C0 00 00 00           - movsxd  rcx,dword ptr [rdi+000000C0]
Ratacle:set_Health+66: 48 8B 57 60                    - mov rdx,[rdi+60]
Ratacle:set_Health+6a: 48 63 52 18                    - movsxd  rdx,dword ptr [rdx+18]
Ratacle:set_Health+6e: FF C2                          - inc edx
Ratacle:set_Health+70: 0F AF CA                       - imul ecx,edx
Ratacle:set_Health+73: F3 0F 2A C9                    - cvtsi2ss xmm1,ecx
}
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <Structures StructVersion="2">
    <Structure Name="PlayerHealth" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
      <Elements>
        <Element Offset="16" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000010" Description="m_CachedPtr" DisplayMethod="unsigned integer"/>
        <Element Offset="24" Vartype="2 Bytes" Bytesize="2" OffsetHex="00000018" Description="identifier" DisplayMethod="unsigned integer"/>
        <Element Offset="26" Vartype="Byte" Bytesize="1" OffsetHex="0000001A" Description="lockBehaviourTriggers" DisplayMethod="unsigned integer"/>
        <Element Offset="32" Vartype="Byte" Bytesize="1" OffsetHex="00000020" Description="&lt;WasEnabledAtStart&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="40" Vartype="Pointer" Bytesize="8" OffsetHex="00000028" Description="onHealthPickup" DisplayMethod="unsigned integer"/>
        <Element Offset="48" Vartype="Pointer" Bytesize="8" OffsetHex="00000030" Description="onXPPickup" DisplayMethod="unsigned integer"/>
        <Element Offset="56" Vartype="Pointer" Bytesize="8" OffsetHex="00000038" Description="onLevelUp" DisplayMethod="unsigned integer"/>
        <Element Offset="64" Vartype="Pointer" Bytesize="8" OffsetHex="00000040" Description="XPNeededAtLevel" DisplayMethod="unsigned integer"/>
        <Element Offset="72" Vartype="Pointer" Bytesize="8" OffsetHex="00000048" Description="gettingHitShake" DisplayMethod="unsigned integer"/>
        <Element Offset="80" Vartype="Pointer" Bytesize="8" OffsetHex="00000050" Description="playerDieSmokePrefab" DisplayMethod="unsigned integer"/>
        <Element Offset="88" Vartype="Pointer" Bytesize="8" OffsetHex="00000058" Description="coughVoice" DisplayMethod="unsigned integer"/>
        <Element Offset="96" Vartype="Pointer" Bytesize="8" OffsetHex="00000060" Description="firstCoughVoice" DisplayMethod="unsigned integer"/>
        <Element Offset="104" Vartype="Pointer" Bytesize="8" OffsetHex="00000068" Description="hurtVoices" DisplayMethod="unsigned integer"/>
        <Element Offset="112" Vartype="Pointer" Bytesize="8" OffsetHex="00000070" Description="deathVoices" DisplayMethod="unsigned integer"/>
        <Element Offset="120" Vartype="Pointer" Bytesize="8" OffsetHex="00000078" Description="invulnVoices" DisplayMethod="unsigned integer"/>
        <Element Offset="128" Vartype="Pointer" Bytesize="8" OffsetHex="00000080" Description="deathSnapshot" DisplayMethod="unsigned integer"/>
        <Element Offset="136" Vartype="Pointer" Bytesize="8" OffsetHex="00000088" Description="takeDamage" DisplayMethod="unsigned integer"/>
        <Element Offset="144" Vartype="Pointer" Bytesize="8" OffsetHex="00000090" Description="healthChanged" DisplayMethod="unsigned integer"/>
        <Element Offset="152" Vartype="Pointer" Bytesize="8" OffsetHex="00000098" Description="maxHealthChanged" DisplayMethod="unsigned integer"/>
        <Element Offset="160" Vartype="Pointer" Bytesize="8" OffsetHex="000000A0" Description="baublesChanged" DisplayMethod="unsigned integer"/>
        <Element Offset="168" Vartype="Pointer" Bytesize="8" OffsetHex="000000A8" Description="baublesNeededChanged" DisplayMethod="unsigned integer"/>
        <Element Offset="176" Vartype="Pointer" Bytesize="8" OffsetHex="000000B0" Description="onDeath" DisplayMethod="unsigned integer"/>
        <Element Offset="184" Vartype="Pointer" Bytesize="8" OffsetHex="000000B8" Description="wasHit" DisplayMethod="unsigned integer"/>
        <Element Offset="192" Vartype="Pointer" Bytesize="8" OffsetHex="000000C0" Description="onPreLoadState" DisplayMethod="unsigned integer"/>
        <Element Offset="200" Vartype="Pointer" Bytesize="8" OffsetHex="000000C8" Description="loadResult" DisplayMethod="unsigned integer"/>
        <Element Offset="208" Vartype="Byte" Bytesize="1" OffsetHex="000000D0" Description="wasHealthPickedUp" DisplayMethod="unsigned integer"/>
        <Element Offset="209" Vartype="Byte" Bytesize="1" OffsetHex="000000D1" Description="wasXPPickedUp" DisplayMethod="unsigned integer"/>
        <Element Offset="210" Vartype="Byte" Bytesize="1" OffsetHex="000000D2" Description="wasLevelUp" DisplayMethod="unsigned integer"/>
        <Element Offset="212" Vartype="4 Bytes" Bytesize="4" OffsetHex="000000D4" Description="baseMaxHealth" DisplayMethod="unsigned integer"/>
        <Element Offset="216" Vartype="4 Bytes" Bytesize="4" OffsetHex="000000D8" Description="maxHealth" DisplayMethod="unsigned integer"/>
        <Element Offset="220" Vartype="4 Bytes" Bytesize="4" OffsetHex="000000DC" Description="XPNeededNext" DisplayMethod="unsigned integer"/>
        <Element Offset="224" Vartype="4 Bytes" Bytesize="4" OffsetHex="000000E0" Description="ignoredDamageWhenDodging" DisplayMethod="unsigned integer"/>
        <Element Offset="228" Vartype="Float" Bytesize="4" OffsetHex="000000E4" Description="hitImmunityDuration" DisplayMethod="unsigned integer"/>
        <Element Offset="232" Vartype="Float" Bytesize="4" OffsetHex="000000E8" Description="delayBeforeRegenerating" DisplayMethod="unsigned integer"/>
        <Element Offset="236" Vartype="Float" Bytesize="4" OffsetHex="000000EC" Description="delayBetweenHeartRegen" DisplayMethod="unsigned integer"/>
        <Element Offset="240" Vartype="Float" Bytesize="4" OffsetHex="000000F0" Description="deathDelay" DisplayMethod="unsigned integer"/>
        <Element Offset="244" Vartype="Float" Bytesize="4" OffsetHex="000000F4" Description="respawnHealthFactor" DisplayMethod="unsigned integer"/>
        <Element Offset="248" Vartype="4 Bytes" Bytesize="4" OffsetHex="000000F8" Description="minimumRespawnHealth" DisplayMethod="unsigned integer"/>
        <Element Offset="252" Vartype="Float" Bytesize="4" OffsetHex="000000FC" Description="regenHealthFactor" DisplayMethod="unsigned integer"/>
        <Element Offset="256" Vartype="Byte" Bytesize="1" OffsetHex="00000100" Description="isInvulnerable" DisplayMethod="unsigned integer"/>
        <Element Offset="257" Vartype="Byte" Bytesize="1" OffsetHex="00000101" Description="regenInCombat" DisplayMethod="unsigned integer"/>
        <Element Offset="260" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000104" Description="xp" DisplayMethod="unsigned integer"/>
        <Element Offset="264" Vartype="Byte" Bytesize="1" OffsetHex="00000108" Description="justDied" DisplayMethod="unsigned integer"/>
        <Element Offset="268" Vartype="4 Bytes" Bytesize="4" OffsetHex="0000010C" Description="health" DisplayMethod="unsigned integer"/>
        <Element Offset="272" Vartype="Float" Bytesize="4" OffsetHex="00000110" Description="regenTime" DisplayMethod="unsigned integer"/>
        <Element Offset="276" Vartype="Float" Bytesize="4" OffsetHex="00000114" Description="damageTime" DisplayMethod="unsigned integer"/>
        <Element Offset="280" Vartype="Float" Bytesize="4" OffsetHex="00000118" Description="combatExitTime" DisplayMethod="unsigned integer"/>
        <Element Offset="284" Vartype="Float" Bytesize="4" OffsetHex="0000011C" Description="heartRegenTime" DisplayMethod="unsigned integer"/>
        <Element Offset="288" Vartype="Float" Bytesize="4" OffsetHex="00000120" Description="coughStartTime" DisplayMethod="unsigned integer"/>
        <Element Offset="292" Vartype="Byte" Bytesize="1" OffsetHex="00000124" Description="coughing" DisplayMethod="unsigned integer"/>
        <Element Offset="296" Vartype="Float" Bytesize="4" OffsetHex="00000128" Description="fadeInTime" DisplayMethod="unsigned integer"/>
        <Element Offset="300" Vartype="Byte" Bytesize="1" OffsetHex="0000012C" Description="haveCoughed" DisplayMethod="unsigned integer"/>
        <Element Offset="304" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000130" Description="incomingHealth" DisplayMethod="unsigned integer"/>
        <Element Offset="308" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000134" Description="lastCheckPointHP" DisplayMethod="unsigned integer"/>
      </Elements>
    </Structure>
  </Structures>
</CheatTable>
