<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <CheatEntries>
    <CheatEntry>
      <ID>10</ID>
      <Description>"Compact mode"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
--https://forum.cheatengine.org/viewtopic.php?t=570055
LuaCall(function cycleFullCompact(sender,force) local state = not(compactmenuitem.Caption == 'Compact View Mode'); if force~=nil then state = not force end; compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode'; getMainForm().Splitter1.Visible = state; getMainForm().Panel4.Visible    = state; getMainForm().Panel5.Visible    = state; end; function addCompactMenu() if compactmenualreadyexists then return end; local parent = getMainForm().Menu.Items; compactmenuitem = createMenuItem(parent); parent.add(compactmenuitem); compactmenuitem.Caption = 'Compact View Mode'; compactmenuitem.OnClick = cycleFullCompact; compactmenualreadyexists = 'yes'; end; addCompactMenu(); cycleFullCompact(nil,true))

[DISABLE]
LuaCall(cycleFullCompact(nil,false))
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>247</ID>
      <Description>"Enable (enable twice: 1st: waiting for IL2CPP to complete, then enable again)"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
if syntaxcheck then
    return
end
if process == nil then
    ShowMessage("Process is not selected.")
elseif readInteger(process) == 0 then
    ShowMessage("Process cannot be opened.")
else
    if monopipe ~= nil and monopipe.ProcessID ~= getOpenedProcessID() then
        monopipe.destroy()
        monopipe = nil
    end
    if monopipe == nil then
        LaunchMonoDataCollector()
    end
end


{$asm}
define(PlayerControllerManagedUpdateProc,"PlayerController.ManagedUpdate")
define(PlayerControllerDealDamageToPlayerProc,"PlayerController.DealDamageToPlayer")
define(PlayerControllerHealPlayerProc,"PlayerController.HealPlayer")
define(SkillTalentUIElementUpdateTalentProc,"SkillTalentUIElement.UpdateTalent")
define(PlayerControllerAddSkillProc,"PlayerController.AddSkill")
define(EntityUtilityGetDamageInfoProc,"EntityUtility.GetDamageInfo")
define(AttackPlayerClientSystemRegisterPlayerHitProc,"AttackPlayerClientSystem.RegisterPlayerHit")
define(PlayerStateWalkUpdateProc,"PlayerState.Walk.Update")
define(PlayerStateFishingUpdateMiniGameProc,"PlayerState.Fishing.UpdateMiniGame")
define(PlayerControllerReduceDurabilityOfHeldEquipmentProc,"PlayerController.ReduceDurabilityOfHeldEquipment")
define(PlayerControllerReduceDurabilityOfEquipmentProc,"PlayerController.ReduceDurabilityOfEquipment")
define(SaveManagerAddSkillValueProc,"SaveManager.AddSkillValue")
define(InventoryHandlerGetExistingAmountOfObjectProc,"InventoryHandler.GetExistingAmountOfObject")
define(PlayerStatePlayerBaseStateUpdateMiniGameProc, "PlayerState.PlayerBaseState.UpdateMiniGame")


registersymbol(PlayerControllerManagedUpdateProc)
registersymbol(PlayerControllerDealDamageToPlayerProc)
registersymbol(PlayerControllerHealPlayerProc)
registersymbol(SkillTalentUIElementUpdateTalentProc)
registersymbol(PlayerControllerAddSkillProc)
registersymbol(EntityUtilityGetDamageInfoProc)
registersymbol(AttackPlayerClientSystemRegisterPlayerHitProc)
registersymbol(PlayerStateWalkUpdateProc)
registersymbol(PlayerStateFishingUpdateMiniGameProc)
registersymbol(PlayerControllerReduceDurabilityOfHeldEquipmentProc)
registersymbol(PlayerControllerReduceDurabilityOfEquipmentProc)
registersymbol(SaveManagerAddSkillValueProc)
registersymbol(InventoryHandlerGetExistingAmountOfObjectProc)
registersymbol(PlayerStatePlayerBaseStateUpdateMiniGameProc)

[DISABLE]
{$lua}
if syntaxcheck then return end;if not syntaxcheck and monopipe then monopipe=nil,monopipe.Destroy()end

{$asm}
unregistersymbol(*)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>996</ID>
          <Description>"Food never below #"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : CoreKeeper.exe
  Version: 
  Date   : 2022-11-11
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_FOOD_DEC,lib_burst_generated.dll,83 FF 64 BA 64 00 00 00) // should be unique
alloc(newmem,$1000,INJECT_FOOD_DEC)

label(code)
label(return)
label(i_food_min)
newmem:
  cmp edi, [i_food_min]
  jge code
  mov edi, [i_food_min]
  mov [r14+rsi], edi

code:
  //cmp ecx,65
  //mov edx,00000064
  cmp edi,64
  mov edx,00000064
  jmp return
align 10 cc
  i_food_min:
  dd #95
INJECT_FOOD_DEC:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_FOOD_DEC)
registersymbol(i_food_min)
[DISABLE]

INJECT_FOOD_DEC:
  db 83 FF 64 BA 64 00 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: lib_burst_generated.dll+14B7E2B

lib_burst_generated.dll+14B7DCF - C441782EF0            - vucomiss xmm14,xmm8
lib_burst_generated.dll+14B7DD4 - C4C17A104C 36 10      - vmovss xmm1,[r14+rsi+10]
lib_burst_generated.dll+14B7DDB - 76 41                 - jna lib_burst_generated.dll+14B7E1E
lib_burst_generated.dll+14B7DDD - 44 89 E2              - mov edx,r12d
lib_burst_generated.dll+14B7DE0 - 0FAF 54 24 70         - imul edx,[rsp+70]
lib_burst_generated.dll+14B7DE5 - 48 63 D2              - movsxd  rdx,edx
lib_burst_generated.dll+14B7DE8 - 48 03 54 24 78        - add rdx,[rsp+78]
lib_burst_generated.dll+14B7DED - 48 8B 3A              - mov rdi,[rdx]
lib_burst_generated.dll+14B7DF0 - 48 83 C2 10           - add rdx,10
lib_burst_generated.dll+14B7DF4 - 48 85 FF              - test rdi,rdi
lib_burst_generated.dll+14B7DF7 - 48 0F45 D7            - cmovne rdx,rdi
lib_burst_generated.dll+14B7DFB: C5 DA 2A 92 CC 00 00 00     - vcvtsi2ss xmm2,esp,[rdx+000000CC]
lib_burst_generated.dll+14B7E03: C5 EA 5E 15 F5 7B 46 00     - vdivss xmm2,xmm2,[lib_burst_generated.dll+191FA00]
lib_burst_generated.dll+14B7E0B: C5 AA 58 D2                 - vaddss xmm2,xmm10,xmm2
lib_burst_generated.dll+14B7E0F: C5 BA 59 D2                 - vmulss xmm2,xmm8,xmm2
lib_burst_generated.dll+14B7E13: C5 F2 58 CA                 - vaddss xmm1,xmm1,xmm2
lib_burst_generated.dll+14B7E17: C4 C1 7A 11 4C 36 10        - vmovss [r14+rsi+10],xmm1
lib_burst_generated.dll+14B7E1E: C4 C1 78 2E CF              - vucomiss xmm1,xmm15
lib_burst_generated.dll+14B7E23: 76 28                       - jna lib_burst_generated.dll+14B7E4D
lib_burst_generated.dll+14B7E25: 41 8B 3C 36                 - mov edi,[r14+rsi]
lib_burst_generated.dll+14B7E29: FF CF                       - dec edi
// ---------- INJECTING HERE ----------
lib_burst_generated.dll+14B7E2B: 83 FF 64                    - cmp edi,64
// ---------- DONE INJECTING  ----------
lib_burst_generated.dll+14B7E2E: BA 64 00 00 00              - mov edx,00000064
lib_burst_generated.dll+14B7E33: 0F 4D FA                    - cmovge edi,edx
lib_burst_generated.dll+14B7E36: 89 FA                       - mov edx,edi
lib_burst_generated.dll+14B7E38: C1 FA 1F                    - sar edx,1F
lib_burst_generated.dll+14B7E3B: C4 E2 68 F2 D7              - andn edx,edx,edi
lib_burst_generated.dll+14B7E40: 41 89 14 36                 - mov [r14+rsi],edx
lib_burst_generated.dll+14B7E44: 41 C7 44 36 10 00 00 00 00  - mov [r14+rsi+10],00000000
lib_burst_generated.dll+14B7E4D: 48 63 E9                    - movsxd  rbp,ecx
lib_burst_generated.dll+14B7E50: 48 03 6C 24 68              - add rbp,[rsp+68]
lib_burst_generated.dll+14B7E55: C4 C1 7A 11 44 36 04        - vmovss [r14+rsi+04],xmm0
lib_burst_generated.dll+14B7E5C - C4C379174436 08 01    - vextractps [r14+rsi+08],xmm0,xmm0,01
lib_burst_generated.dll+14B7E64 - C4C379174436 0C 02    - vextractps [r14+rsi+0C],xmm0,xmm0,02
lib_burst_generated.dll+14B7E6C - 45 8B 3C 36           - mov r15d,[r14+rsi]
lib_burst_generated.dll+14B7E70 - 41 83 FF 18           - cmp r15d,18
lib_burst_generated.dll+14B7E74 - 88 5C 24 43           - mov [rsp+43],bl
lib_burst_generated.dll+14B7E78 - 7E 56                 - jle lib_burst_generated.dll+14B7ED0
lib_burst_generated.dll+14B7E7A - 8B 48 08              - mov ecx,[rax+08]
lib_burst_generated.dll+14B7E7D - 85 C9                 - test ecx,ecx

}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>178</ID>
              <Description>"Min. number"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_food_min</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>2</ID>
          <Description>"Split item set # (turn on when needed, require stack # of 3 or more)"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : CoreKeeper.exe
  Version: 
  Date   : 2022-03-10
  Author : bbfox @https://opencheattables.com/
}

[ENABLE]
aobscanregion(INJECT_ITEM_SPLIT_DEST,lib_burst_generated.dll+161F331, lib_burst_generated.dll+181F331, 44 89 44 3D 04) // should be unique
alloc(newmem,$1000,INJECT_ITEM_SPLIT_DEST)

label(code)
label(return)
label(i_dest_item_addr)
label(i_min_value)

newmem:
  push rax
  lea rax, [rbp+rdi]
  mov [i_dest_item_addr], rax
  pop rax

  cmp r8d, [i_min_value]
  jge code
  cmp r8d, 1
  jle code
  mov r8d, [i_min_value]

code:
  //mov [rsi+r15+04],edi
  mov [rbp+rdi+04],r8d
  jmp return

align 10 cc
  i_dest_item_addr:
  dq 0
  i_min_value:
  dd #995
  i_min_safe_value:
  dd 1


INJECT_ITEM_SPLIT_DEST:
  jmp newmem
return:

registersymbol(i_dest_item_addr)
registersymbol(i_min_value)
registersymbol(INJECT_ITEM_SPLIT_DEST)

[DISABLE]

INJECT_ITEM_SPLIT_DEST:
  db 44 89 44 3D 04

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: lib_burst_generated.dll+171F331

lib_burst_generated.dll+171F306: 48 0F 45 F1           - cmovne rsi,rcx
lib_burst_generated.dll+171F30A: 42 89 04 26           - mov [rsi+r12],eax
lib_burst_generated.dll+171F30E: 42 89 5C 26 04        - mov [rsi+r12+04],ebx
lib_burst_generated.dll+171F313: 42 89 54 26 08        - mov [rsi+r12+08],edx
lib_burst_generated.dll+171F318: 46 89 6C 26 0C        - mov [rsi+r12+0C],r13d
lib_burst_generated.dll+171F31D: 48 8B 45 00           - mov rax,[rbp+00]
lib_burst_generated.dll+171F321: 48 83 C5 10           - add rbp,10
lib_burst_generated.dll+171F325: 48 85 C0              - test rax,rax
lib_burst_generated.dll+171F328: 48 0F 45 E8           - cmovne rbp,rax
lib_burst_generated.dll+171F32C: 44 89 74 3D 00        - mov [rbp+rdi+00],r14d
// ---------- INJECTING HERE ----------
lib_burst_generated.dll+171F331: 44 89 44 3D 04        - mov [rbp+rdi+04],r8d
// ---------- DONE INJECTING  ----------
lib_burst_generated.dll+171F336: 44 89 7C 3D 08        - mov [rbp+rdi+08],r15d
lib_burst_generated.dll+171F33B: 8B 84 24 A0 00 00 00  - mov eax,[rsp+000000A0]
lib_burst_generated.dll+171F342: 89 44 3D 0C           - mov [rbp+rdi+0C],eax
lib_burst_generated.dll+171F346: B0 01                 - mov al,01
lib_burst_generated.dll+171F348: EB 02                 - jmp lib_burst_generated.dll+171F34C
lib_burst_generated.dll+171F34A: 31 C0                 - xor eax,eax
lib_burst_generated.dll+171F34C: 48 81 C4 A8 01 00 00  - add rsp,000001A8
lib_burst_generated.dll+171F353: 5B                    - pop rbx
lib_burst_generated.dll+171F354: 5D                    - pop rbp
lib_burst_generated.dll+171F355: 5F                    - pop rdi
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>3</ID>
              <Description>"Min. value"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_min_value</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>997</ID>
              <Description>"Get item ID &amp; count"</Description>
              <Options moDeactivateChildrenAsWell="1"/>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>998</ID>
                  <Description>"Usage: Open itembox"</Description>
                  <Color>8000FF</Color>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>1000</ID>
                      <Description>"1. Right click on single item (# of items must be 1) to pick item"</Description>
                      <Color>8000FF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>999</ID>
                      <Description>"2. Left click to put it down"</Description>
                      <Color>8000FF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>929</ID>
                  <Description>"Item ID"</Description>
                  <DropDownListLink>-Item ID-</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_dest_item_addr</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>4</ID>
                  <Description>"Item Count (Only for stackable) / Durability (for non-stackable)"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_dest_item_addr</Address>
                  <Offsets>
                    <Offset>4</Offset>
                  </Offsets>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>260</ID>
          <Description>"Freeze durability of held equip."</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : CoreKeeper.exe
  Version: 
  Date   : 2022-04-02
  Author : bbfox @https://opencheattables.com/
}

[ENABLE]

//aobscanmodule(INJECT_HELD_EQUIPMENT,GameAssembly.dll,22 EA FF CC CC CC CC CC 48 89 5C 24 10) // should be unique
aobscanregion(INJECT_HELD_EQUIPMENT,PlayerControllerReduceDurabilityOfHeldEquipmentProc,PlayerControllerReduceDurabilityOfHeldEquipmentProc+10,48 89 5C 24 18) // should be unique
alloc(newmem,$1000,INJECT_HELD_EQUIPMENT)

label(code)
label(return)

newmem:
  ret

code:
  //mov [rsp+10],rbx
  jmp return

INJECT_HELD_EQUIPMENT:
  jmp newmem
return:
registersymbol(INJECT_HELD_EQUIPMENT)

[DISABLE]

INJECT_HELD_EQUIPMENT:
  db 48 89 5C 24 18

unregistersymbol(INJECT_HELD_EQUIPMENT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: PlayerControllerReduceDurabilityOfHeldEquipmentProc

GameAssembly.dll+1A9F236: CC                    - int 3
GameAssembly.dll+1A9F237: CC                    - int 3
GameAssembly.dll+1A9F238: CC                    - int 3
GameAssembly.dll+1A9F239: CC                    - int 3
GameAssembly.dll+1A9F23A: CC                    - int 3
GameAssembly.dll+1A9F23B: CC                    - int 3
GameAssembly.dll+1A9F23C: CC                    - int 3
GameAssembly.dll+1A9F23D: CC                    - int 3
GameAssembly.dll+1A9F23E: CC                    - int 3
GameAssembly.dll+1A9F23F: CC                    - int 3
// ---------- INJECTING HERE ----------
PlayerControllerReduceDurabilityOfHeldEquipmentProc: 48 89 5C 24 18        - mov [rsp+18],rbx
// ---------- DONE INJECTING  ----------
GameAssembly.dll+1A9F245: 48 89 74 24 20        - mov [rsp+20],rsi
GameAssembly.dll+1A9F24A: 57                    - push rdi
GameAssembly.dll+1A9F24B: 48 83 EC 40           - sub rsp,40
GameAssembly.dll+1A9F24F: 80 3D 02 21 A9 02 00  - cmp byte ptr [GameAssembly.dll+4531358],00
GameAssembly.dll+1A9F256: 48 8B F1              - mov rsi,rcx
GameAssembly.dll+1A9F259: 75 2B                 - jne GameAssembly.dll+1A9F286
GameAssembly.dll+1A9F25B: 48 8D 0D 5E 15 89 02  - lea rcx,[GameAssembly.dll+43307C0]
GameAssembly.dll+1A9F262: E8 A9 98 77 FE        - call GameAssembly.dll+218B10
GameAssembly.dll+1A9F267: 48 8D 0D 82 3F 84 02  - lea rcx,[GameAssembly.dll+42E31F0]
GameAssembly.dll+1A9F26E: E8 9D 98 77 FE        - call GameAssembly.dll+218B10
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>261</ID>
          <Description>"Freeze durability of equips except held one"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : CoreKeeper.exe
  Version: 
  Date   : 2022-04-02
  Author : bbfox @https://opencheattables.com/
}

[ENABLE]
aobscanregion(INJECT_REDUCE_DUR_EQUIPMENT,PlayerControllerReduceDurabilityOfEquipmentProc,PlayerControllerReduceDurabilityOfEquipmentProc+A,48 89 5C 24 10) // should be unique


alloc(newmem,$1000,INJECT_REDUCE_DUR_EQUIPMENT)

label(code)
label(return)

newmem:
  ret
code:
  //mov [rsp+10],rbx
  jmp return

INJECT_REDUCE_DUR_EQUIPMENT:
  jmp newmem
return:
registersymbol(INJECT_REDUCE_DUR_EQUIPMENT)

[DISABLE]

INJECT_REDUCE_DUR_EQUIPMENT:
  db 48 89 5C 24 10

unregistersymbol(INJECT_REDUCE_DUR_EQUIPMENT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: PlayerControllerReduceDurabilityOfEquipmentProc

GameAssembly.dll+28620AB: 48 8B 6C 24 50        - mov rbp,[rsp+50]
GameAssembly.dll+28620B0: 48 83 C4 30           - add rsp,30
GameAssembly.dll+28620B4: 5F                    - pop rdi
GameAssembly.dll+28620B5: C3                    - ret
GameAssembly.dll+28620B6: E8 15 72 CD FD        - call GameAssembly.mono_method_get_class+A0
GameAssembly.dll+28620BB: CC                    - int 3
GameAssembly.dll+28620BC: CC                    - int 3
GameAssembly.dll+28620BD: CC                    - int 3
GameAssembly.dll+28620BE: CC                    - int 3
GameAssembly.dll+28620BF: CC                    - int 3
// ---------- INJECTING HERE ----------
PlayerControllerReduceDurabilityOfEquipmentProc: 48 89 5C 24 10        - mov [rsp+10],rbx
// ---------- DONE INJECTING  ----------
GameAssembly.dll+28620C5: 48 89 6C 24 18        - mov [rsp+18],rbp
GameAssembly.dll+28620CA: 57                    - push rdi
GameAssembly.dll+28620CB: 48 83 EC 40           - sub rsp,40
GameAssembly.dll+28620CF: 80 3D 9D 2D 01 02 00  - cmp byte ptr [GameAssembly.dll+4874E73],00
GameAssembly.dll+28620D6: 41 8B E8              - mov ebp,r8d
GameAssembly.dll+28620D9: 48 8B FA              - mov rdi,rdx
GameAssembly.dll+28620DC: 48 8B D9              - mov rbx,rcx
GameAssembly.dll+28620DF: 75 13                 - jne GameAssembly.dll+28620F4
GameAssembly.dll+28620E1: 48 8D 0D 18 2C DF 01  - lea rcx,[GameAssembly.dll+4654D00]
GameAssembly.dll+28620E8: E8 43 70 CD FD        - call GameAssembly.il2cpp_get_exception_argument_null+2B0
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>185</ID>
          <Description>"Player move speed"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : CoreKeeper.exe
  Version: 
  Date   : 2022-03-30
  Author : bbfox @https://opencheattables.com/
}

[ENABLE]


aobscanregion(INJECT_PLAYER_DATA,PlayerControllerManagedUpdateProc+200,PlayerControllerManagedUpdateProc+480,44 39 B7 ?? ?? ?? 00 7F 61 48 8B 8F ?? ?? ?? 00 48 85 C9 0F 84) // should be unique
alloc(newmem,$1000,INJECT_PLAYER_DATA)

alloc(INJECT_PLAYER_DATAo, 7)

label(code)
label(return)
//label(i_char_base_addr)
label(i_char_localHealth_addr)

INJECT_PLAYER_DATAo:
  readmem(INJECT_PLAYER_DATA, 7)

newmem:
  push r13
  push rax

  lea rax, [INJECT_PLAYER_DATAo+3]
  mov eax, [rax]
  lea r13, [rdi+eax]
  mov [i_char_localHealth_addr], r13

  pop rax
  pop r13

  //mov [i_char_base_addr], rdi

code:
  //cmp [rdi+00000A20],esi
  reassemble(INJECT_PLAYER_DATA)
  jmp return

align 10 cc
  i_char_base_addr:
  dq 0
  i_char_localHealth_addr:
  dq 0

INJECT_PLAYER_DATA:
  jmp newmem
  nop 2
return:

//registersymbol(i_char_base_addr)
registersymbol(INJECT_PLAYER_DATA)
registersymbol(INJECT_PLAYER_DATAo)
registersymbol(i_char_localHealth_addr)

[DISABLE]

INJECT_PLAYER_DATA:
  //db 44 39 B7 20 0A 00 00
  readmem(INJECT_PLAYER_DATAo, 7)

unregistersymbol(*)
unregistersymbol(INJECT_PLAYER_DATAo)
dealloc(newmem)
dealloc(INJECT_PLAYER_DATAo)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+285D194

GameAssembly.dll+285D161: C6 87 A4 03 00 00 01     - mov byte ptr [rdi+000003A4],01
GameAssembly.dll+285D168: 48 8B 82 68 04 00 00     - mov rax,[rdx+00000468]
GameAssembly.dll+285D16F: 48 8B 92 70 04 00 00     - mov rdx,[rdx+00000470]
GameAssembly.dll+285D176: FF D0                    - call rax
GameAssembly.dll+285D178: 48 85 C0                 - test rax,rax
GameAssembly.dll+285D17B: 0F 84 3B 14 00 00        - je GameAssembly.dll+285E5BC
GameAssembly.dll+285D181: F3 0F 10 0D 6B 57 01 01  - movss xmm1,[GameAssembly.dll+38728F4]
GameAssembly.dll+285D189: 45 33 C0                 - xor r8d,r8d
GameAssembly.dll+285D18C: 48 8B C8                 - mov rcx,rax
GameAssembly.dll+285D18F: E8 3C 3C 02 00           - call PlayerInput.DisableInputFor
// ---------- INJECTING HERE ----------
GameAssembly.dll+285D194: 44 39 B7 C8 09 00 00     - cmp [rdi+000009C8],r14d
// ---------- DONE INJECTING  ----------
GameAssembly.dll+285D19B: 7F 61                    - jg GameAssembly.dll+285D1FE
GameAssembly.dll+285D19D: 48 8B 8F E8 02 00 00     - mov rcx,[rdi+000002E8]
GameAssembly.dll+285D1A4: 48 85 C9                 - test rcx,rcx
GameAssembly.dll+285D1A7: 0F 84 0F 14 00 00        - je GameAssembly.dll+285E5BC
GameAssembly.dll+285D1AD: 33 D2                    - xor edx,edx
GameAssembly.dll+285D1AF: E8 DC 3E FA FF           - call PlayerState.State.get_isActive
GameAssembly.dll+285D1B4: 84 C0                    - test al,al
GameAssembly.dll+285D1B6: 75 46                    - jne GameAssembly.dll+285D1FE
GameAssembly.dll+285D1B8: 48 8B 8F B8 02 00 00     - mov rcx,[rdi+000002B8]
GameAssembly.dll+285D1BF: 48 85 C9                 - test rcx,rcx
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>186</ID>
              <Description>"localHealth"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>808080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_char_localHealth_addr</Address>
              <Offsets>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>698</ID>
              <Description>"movementSpeed"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>Float</VariableType>
              <Address>i_char_localHealth_addr</Address>
              <Offsets>
                <Offset>-5B0</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>183</ID>
          <Description>"Player HP"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : CoreKeeper.exe
  Version: 
  Date   : 2022-03-30
  Author : bbfox@ https://opencheattables.com
}

[ENABLE]

aobscanregion(INJECT_HP_DAMAGE,PlayerControllerDealDamageToPlayerProc+a0,PlayerControllerDealDamageToPlayerProc+5a0,29 9F ?? ?? ?? ?? 45 33 E4 44 39 A7 ?? ?? ?? ?? 0F 8F ?? ?? ?? ?? 48 8B 9F) // should be unique
alloc(newmem,$1000,INJECT_HP_DAMAGE)

alloc(INJECT_HP_DAMAGEo, 6)

label(code)
label(return)
label(i_player_base_addr)
label(i_player_hp_option)

INJECT_HP_DAMAGEo:
  readmem(INJECT_HP_DAMAGE, 6)

newmem:
  push r13
  push rax

  lea rax, [INJECT_HP_DAMAGEo+2]
  mov eax, [rax]
  //mov [i_player_base_addr], eax
  lea r13, [rdi+eax]
  mov [i_player_base_addr], r13

  //lea r13, [rdi+00000A00]
 // mov [i_player_base_addr], r13

  pop rax
  pop r13

  cmp dword ptr [i_player_hp_option], 0
  je code
  cmp dword ptr [i_player_hp_option], 1
  jne check_hp2
  //add [rdi+00000A00], ebx
  push r13
  mov r13, [i_player_base_addr]
  add [r13], ebx
  pop r13
  jmp endp

check_hp2:
  cmp dword ptr [i_player_hp_option], 2
  jne check_hp3
  mov ebx, 1
  jmp endp

check_hp3:
  cmp dword ptr [i_player_hp_option], 3
  jne endp
  mov ebx, 0
  jmp endp

endp:

code:
  reassemble(INJECT_HP_DAMAGE)
  jmp return

align 10 cc
  i_player_base_addr:
  dq 0
  i_player_hp_option: //0:Normal, 1:try to Keep, 2:1pt, 3:No damage
  dd 1

INJECT_HP_DAMAGE:
  jmp newmem
  nop
return:
registersymbol(i_player_base_addr)
registersymbol(i_player_hp_option)
registersymbol(INJECT_HP_DAMAGE)
registersymbol(INJECT_HP_DAMAGEo)

[DISABLE]

INJECT_HP_DAMAGE:
  //db 29 9F C8 09 00 00
  readmem(INJECT_HP_DAMAGEo, 6)

unregistersymbol(*)
unregistersymbol(INJECT_HP_DAMAGEo)
dealloc(newmem)
dealloc(INJECT_HP_DAMAGEo)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+2852BAC

GameAssembly.dll+2852B1F - 44 0F29 94 24 50010000  - movaps [rsp+00000150],xmm10
GameAssembly.dll+2852B28 - 8B DA                 - mov ebx,edx
GameAssembly.dll+2852B2A - 44 0F28 D3            - movaps xmm10,xmm3
GameAssembly.dll+2852B2E - 48 8B F9              - mov rdi,rcx
GameAssembly.dll+2852B31 - 75 37                 - jne GameAssembly.dll+2852B6A
GameAssembly.dll+2852B33 - 48 8D 0D CE0FD701     - lea rcx,[GameAssembly.dll+45C3B08]
GameAssembly.dll+2852B3A - E8 F165CEFD           - call GameAssembly.il2cpp_get_exception_argument_null+2B0
GameAssembly.dll+2852B3F - 48 8D 0D D210D701     - lea rcx,[GameAssembly.dll+45C3C18]
GameAssembly.dll+2852B46 - E8 E565CEFD           - call GameAssembly.il2cpp_get_exception_argument_null+2B0
GameAssembly.dll+2852B4B - 48 8D 0D 163AD701     - lea rcx,[GameAssembly.dll+45C6568]
GameAssembly.dll+2852B52 - E8 D965CEFD           - call GameAssembly.il2cpp_get_exception_argument_null+2B0
GameAssembly.dll+2852B57 - 48 8D 0D FAC7D801     - lea rcx,[GameAssembly.dll+45DF358]
GameAssembly.dll+2852B5E - E8 CD65CEFD           - call GameAssembly.il2cpp_get_exception_argument_null+2B0
GameAssembly.dll+2852B63: C6 05 03 23 02 02 01     - mov byte ptr [GameAssembly.dll+4874E6D],01
GameAssembly.dll+2852B6A: 80 BF A8 02 00 00 00     - cmp byte ptr [rdi+000002A8],00
GameAssembly.dll+2852B71: 0F 85 90 04 00 00        - jne GameAssembly.dll+2853007
GameAssembly.dll+2852B77: 80 BF E4 09 00 00 00     - cmp byte ptr [rdi+000009E4],00
GameAssembly.dll+2852B7E: 0F 85 83 04 00 00        - jne GameAssembly.dll+2853007
GameAssembly.dll+2852B84: 48 89 B4 24 D0 01 00 00  - mov [rsp+000001D0],rsi
GameAssembly.dll+2852B8C: 4C 89 A4 24 D8 01 00 00  - mov [rsp+000001D8],r12
GameAssembly.dll+2852B94: 4C 89 B4 24 E0 01 00 00  - mov [rsp+000001E0],r14
GameAssembly.dll+2852B9C: 4C 89 BC 24 A0 01 00 00  - mov [rsp+000001A0],r15
GameAssembly.dll+2852BA4: 0F 29 B4 24 90 01 00 00  - movaps [rsp+00000190],xmm6
// ---------- INJECTING HERE ----------
GameAssembly.dll+2852BAC: 29 9F C8 09 00 00        - sub [rdi+000009C8],ebx
// ---------- DONE INJECTING  ----------
GameAssembly.dll+2852BB2: 45 33 E4                 - xor r12d,r12d
GameAssembly.dll+2852BB5: 44 39 A7 C8 09 00 00     - cmp [rdi+000009C8],r12d
GameAssembly.dll+2852BBC: 0F 8F 0E 01 00 00        - jg GameAssembly.dll+2852CD0
GameAssembly.dll+2852BC2: 48 8B 9F A0 00 00 00     - mov rbx,[rdi+000000A0]
GameAssembly.dll+2852BC9: 33 D2                    - xor edx,edx
GameAssembly.dll+2852BCB: 48 8B CF                 - mov rcx,rdi
GameAssembly.dll+2852BCE: E8 7D 11 DB FF           - call PlacementHandler.get_world
GameAssembly.dll+2852BD3: 48 8B 0D 7E C7 D8 01     - mov rcx,[GameAssembly.dll+45DF358]
GameAssembly.dll+2852BDA: 48 8B F0                 - mov rsi,rax
GameAssembly.dll+2852BDD: 44 39 A1 E0 00 00 00     - cmp [rcx+000000E0],r12d
GameAssembly.dll+2852BE4 - 75 05                 - jne GameAssembly.dll+2852BEB
GameAssembly.dll+2852BE6 - E8 8567CEFD           - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+2852BEB - 45 33 C9              - xor r9d,r9d
GameAssembly.dll+2852BEE - 4C 8B C6              - mov r8,rsi
GameAssembly.dll+2852BF1 - 48 8B D3              - mov rdx,rbx
GameAssembly.dll+2852BF4 - 41 8D 49 6C           - lea ecx,[r9+6C]
GameAssembly.dll+2852BF8 - E8 E32CDDFF           - call EntityUtility.GetConditionValue
GameAssembly.dll+2852BFD - 33 C9                 - xor ecx,ecx
GameAssembly.dll+2852BFF - 8B D8                 - mov ebx,eax
GameAssembly.dll+2852C01 - E8 EA91C700           - call UnityEngine.Random.get_value
GameAssembly.dll+2852C06 - 66 0F6E CB            - movd xmm1,ebx
GameAssembly.dll+2852C0A - 0F5B C9               - cvtdq2ps xmm1,xmm1

}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>184</ID>
              <Description>"HP damage option"</Description>
              <DropDownList DisplayValueAsItem="1">0:Normal
1:Try to keep
2:1pt
3:No damage
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_player_hp_option</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>1004</ID>
              <Description>"HP now (when hit)"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>808080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_player_base_addr</Address>
              <Offsets>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>181</ID>
          <Description>"HP recover multiplier"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : CoreKeeper.exe
  Version: 
  Date   : 2022-03-30
  Author : bbfox @https://opencheattables.com/
}

[ENABLE]
aobscanregion(INJECT_FASTER_HP_ADD,PlayerControllerHealPlayerProc+100,PlayerControllerHealPlayerProc+600,48 8B 17 03 DE) // should be unique

alloc(newmem,$1000,INJECT_FASTER_HP_ADD)

label(code)
label(return)
label(vf_addhp_multi)

newmem:
  vmovss xmm15, [vf_addhp_multi]
  cvtsi2ss xmm14, esi
  vmulss xmm15, xmm14, xmm15
  cvtss2si esi, xmm15

code:
  mov rdx,[rdi]
  add ebx,esi
  jmp return

align 10 cc
  vf_addhp_multi:
  dd (float)1.5


INJECT_FASTER_HP_ADD:
  jmp newmem
return:
registersymbol(vf_addhp_multi)
registersymbol(INJECT_FASTER_HP_ADD)

[DISABLE]

INJECT_FASTER_HP_ADD:
  db 48 8B 17 03 DE

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+285A68C

GameAssembly.dll+285A626 - E8 2597DAFF           - call PlacementHandler.get_world
GameAssembly.dll+285A62B - 48 8B 0D 264DD801     - mov rcx,[GameAssembly.dll+45DF358]
GameAssembly.dll+285A632 - 48 8B E8              - mov rbp,rax
GameAssembly.dll+285A635 - 83 B9 E0000000 00     - cmp dword ptr [rcx+000000E0],00
GameAssembly.dll+285A63C - 75 05                 - jne GameAssembly.dll+285A643
GameAssembly.dll+285A63E - E8 2DEDCDFD           - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+285A643 - 45 33 C9              - xor r9d,r9d
GameAssembly.dll+285A646 - 4C 8B C5              - mov r8,rbp
GameAssembly.dll+285A649 - 48 8B D3              - mov rdx,rbx
GameAssembly.dll+285A64C - 41 8D 49 1E           - lea ecx,[r9+1E]
GameAssembly.dll+285A650 - E8 6BAEDCFF           - call EntityUtility.GetConditionEffectValue
GameAssembly.dll+285A655 - 85 C0                 - test eax,eax
GameAssembly.dll+285A657 - 75 2A                 - jne GameAssembly.dll+285A683
GameAssembly.dll+285A659 - 66 0F6E C6            - movd xmm0,esi
GameAssembly.dll+285A65D: 33 D2                    - xor edx,edx
GameAssembly.dll+285A65F: 0F 5B C0                 - cvtdq2ps xmm0,xmm0
GameAssembly.dll+285A662: F3 0F 59 05 4E E5 F1 00  - mulss xmm0,[GameAssembly.dll+3778BB8]
GameAssembly.dll+285A66A: E8 61 14 B7 FF           - call GameAssembly.dll+23CBAD0
GameAssembly.dll+285A66F: F3 0F 10 0D 6D E5 F1 00  - movss xmm1,[GameAssembly.dll+3778BE4]
GameAssembly.dll+285A677: 45 33 C0                 - xor r8d,r8d
GameAssembly.dll+285A67A: E8 E1 52 14 FE           - call Unity.Mathematics.math.max
GameAssembly.dll+285A67F: F3 0F 2C F0              - cvttss2si esi,xmm0
GameAssembly.dll+285A683: 8B 9F C8 09 00 00        - mov ebx,[rdi+000009C8]
GameAssembly.dll+285A689: 48 8B CF                 - mov rcx,rdi
// ---------- INJECTING HERE ----------
GameAssembly.dll+285A68C: 48 8B 17                 - mov rdx,[rdi]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+285A68F: 03 DE                    - add ebx,esi
GameAssembly.dll+285A691: 89 9F C8 09 00 00        - mov [rdi+000009C8],ebx
GameAssembly.dll+285A697: 48 8B 82 88 02 00 00     - mov rax,[rdx+00000288]
GameAssembly.dll+285A69E: 48 8B 92 90 02 00 00     - mov rdx,[rdx+00000290]
GameAssembly.dll+285A6A5: FF D0                    - call rax
GameAssembly.dll+285A6A7: F2 0F 10 87 38 01 00 00  - movsd xmm0,[rdi+00000138]
GameAssembly.dll+285A6AF: 48 8D 54 24 30           - lea rdx,[rsp+30]
GameAssembly.dll+285A6B4: 48 8B AF 70 03 00 00     - mov rbp,[rdi+00000370]
GameAssembly.dll+285A6BB: 48 8D 4C 24 40           - lea rcx,[rsp+40]
GameAssembly.dll+285A6C0: 3B D8                    - cmp ebx,eax
GameAssembly.dll+285A6C2 - F2 0F11 44 24 30      - movsd [rsp+30],xmm0
GameAssembly.dll+285A6C8 - 8B F0                 - mov esi,eax
GameAssembly.dll+285A6CA - 8B 87 40010000        - mov eax,[rdi+00000140]
GameAssembly.dll+285A6D0 - 0F4C F3               - cmovl esi,ebx
GameAssembly.dll+285A6D3 - 89 44 24 38           - mov [rsp+38],eax
GameAssembly.dll+285A6D7 - 48 8B 9F A0000000     - mov rbx,[rdi+000000A0]
GameAssembly.dll+285A6DE - 45 33 C0              - xor r8d,r8d
GameAssembly.dll+285A6E1 - 89 B7 C8090000        - mov [rdi+000009C8],esi
GameAssembly.dll+285A6E7 - E8 642E9700           - call Unity.Mathematics.float3.get_xyz
GameAssembly.dll+285A6EC - 48 85 ED              - test rbp,rbp

}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>182</ID>
              <Description>"Multiplier"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>vf_addhp_multi</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>156</ID>
          <Description>"Spend skill point everywhere+"</Description>
          <Options moHideChildren="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>157</ID>
              <Description>"Allow you to click skill point in any place, UI will display all as "5""</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>155</ID>
              <Description>"Click to display as "all 5""</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : CoreKeeper.exe
  Version: 
  Date   : 2022-03-12
  Author : bbfox @https://opencheattables.com/
}

[ENABLE]
aobscanregion(INJECT_SKILL2,SkillTalentUIElementUpdateTalentProc+170,SkillTalentUIElementUpdateTalentProc+790,8B 84 24 C0 00 00 00 89 87)
alloc(newmem,$1000,INJECT_SKILL2)

label(code)
label(return)

newmem:
  mov eax, 5
  mov [rsp+000000C0], eax

code:
  mov eax,[rsp+000000C0]
  jmp return

INJECT_SKILL2:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_SKILL2)

[DISABLE]

INJECT_SKILL2:
  db 8B 84 24 C0 00 00 00

unregistersymbol(INJECT_SKILL2)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+26E23E2

GameAssembly.dll+26E23B5: 48 8B 4F 50           - mov rcx,[rdi+50]
GameAssembly.dll+26E23B9: 0F 10 06              - movups xmm0,[rsi]
GameAssembly.dll+26E23BC: 0F 11 44 24 40        - movups [rsp+40],xmm0
GameAssembly.dll+26E23C1: F2 0F 10 4E 10        - movsd xmm1,[rsi+10]
GameAssembly.dll+26E23C6: F2 0F 11 4C 24 50     - movsd [rsp+50],xmm1
GameAssembly.dll+26E23CC: 48 85 C9              - test rcx,rcx
GameAssembly.dll+26E23CF: 0F 84 E3 06 00 00     - je GameAssembly.dll+26E2AB8
GameAssembly.dll+26E23D5: 45 33 C0              - xor r8d,r8d
GameAssembly.dll+26E23D8: 48 8B 54 24 50        - mov rdx,[rsp+50]
GameAssembly.dll+26E23DD: E8 0E F3 DE 00        - call UnityEngine.SpriteRenderer.set_sprite
// ---------- INJECTING HERE ----------
GameAssembly.dll+26E23E2: 8B 84 24 C0 00 00 00  - mov eax,[rsp+000000C0]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+26E23E9: 89 87 B8 00 00 00     - mov [rdi+000000B8],eax
GameAssembly.dll+26E23EF: 33 D2                 - xor edx,edx
GameAssembly.dll+26E23F1: 48 8B CF              - mov rcx,rdi
GameAssembly.dll+26E23F4: E8 57 F5 FF FF        - call SkillTalentUIElement.GetCurrentPoints
GameAssembly.dll+26E23F9: 8B D8                 - mov ebx,eax
GameAssembly.dll+26E23FB: 33 C9                 - xor ecx,ecx
GameAssembly.dll+26E23FD: E8 7E DA 0E 00        - call Manager.get_saves
GameAssembly.dll+26E2402: 48 85 C0              - test rax,rax
GameAssembly.dll+26E2405: 0F 84 AD 06 00 00     - je GameAssembly.dll+26E2AB8
GameAssembly.dll+26E240B: 45 33 C0              - xor r8d,r8d
}
</AssemblerScript>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>160</ID>
          <Description>"Skill XP multiplier"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : CoreKeeper.exe
  Version: 
  Date   : 2022-03-13
  Author : bbfox @https://opencheattables.com/
}

[ENABLE]
aobscanregion(INJECT_SKILL_XP_MULTI,PlayerControllerAddSkillProc+120,PlayerControllerAddSkillProc+360,45 8B C7 8B D7 48 8B C8) // should be unique
alloc(newmem,$1000,INJECT_SKILL_XP_MULTI)

label(code)
label(return)
label(vf_skill_xp_multi)

newmem:
  // rdx = skill
  // r14d = xp
  vmovss xmm14, [vf_skill_xp_multi]
  cvtsi2ss xmm15, r15d
  vmulss xmm15, xmm15, xmm14
  cvtss2si r15d, xmm15


code:
  mov r8d,r15d
  mov edx,edi
  jmp return

align 10 cc
  i_skill_xp_multi:
  dd 4
  vf_skill_xp_multi:
  dd (float)6

INJECT_SKILL_XP_MULTI:
  jmp newmem
return:

registersymbol(vf_skill_xp_multi)
registersymbol(INJECT_SKILL_XP_MULTI)

[DISABLE]

INJECT_SKILL_XP_MULTI:
  db 45 8B C7 8B D7

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+2849446

GameAssembly.dll+2849422: 45 8B C6           - mov r8d,r14d
GameAssembly.dll+2849425: 8B D7              - mov edx,edi
GameAssembly.dll+2849427: E8 24 C0 BF FF     - call SkillData.GetConditionDataForSkill
GameAssembly.dll+284942C: 33 C9              - xor ecx,ecx
GameAssembly.dll+284942E: 0F 10 00           - movups xmm0,[rax]
GameAssembly.dll+2849431: 0F 11 45 E7        - movups [rbp-19],xmm0
GameAssembly.dll+2849435: E8 46 6A F8 FF     - call Manager.get_saves
GameAssembly.dll+284943A: 48 85 C0           - test rax,rax
GameAssembly.dll+284943D: 0F 84 85 05 00 00  - je GameAssembly.dll+28499C8
GameAssembly.dll+2849443: 45 33 C9           - xor r9d,r9d
// ---------- INJECTING HERE ----------
GameAssembly.dll+2849446: 45 8B C7           - mov r8d,r15d
// ---------- DONE INJECTING  ----------
GameAssembly.dll+2849449: 8B D7              - mov edx,edi
GameAssembly.dll+284944B: 48 8B C8           - mov rcx,rax
GameAssembly.dll+284944E: E8 3D 9D 04 00     - call SaveManagerAddSkillValueProc
GameAssembly.dll+2849453: 33 C9              - xor ecx,ecx
GameAssembly.dll+2849455: E8 26 6A F8 FF     - call Manager.get_saves
GameAssembly.dll+284945A: 48 85 C0           - test rax,rax
GameAssembly.dll+284945D: 0F 84 65 05 00 00  - je GameAssembly.dll+28499C8
GameAssembly.dll+2849463: 45 33 C0           - xor r8d,r8d
GameAssembly.dll+2849466: 8B D7              - mov edx,edi
GameAssembly.dll+2849468: 48 8B C8           - mov rcx,rax
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>365</ID>
              <Description>"XP multiplier"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>vf_skill_xp_multi</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>164</ID>
          <Description>"Damage multiplier"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : CoreKeeper.exe
  Version: 
  Date   : 2022-03-21
  Author : bbfox @https://opencheattables.com/
}

[ENABLE]
aobscanregion(INJECT_DAMAGE_MULTI,EntityUtilityGetDamageInfoProc+380,EntityUtilityGetDamageInfoProc+1380,44 8B 4D 40 0F B6 D0) // should be unique

alloc(newmem,$1000,INJECT_DAMAGE_MULTI)

label(code)
label(return)
label(vf_damage_multi)

newmem:
  push r13
  movd xmm15, [vf_damage_multi]
  //movd xmm14, r9d
  mov r13d,[rbp+40]
  cvtsi2ss xmm14, r13d
  mulss xmm15, xmm14
  cvtss2si r13d, xmm15
  mov [rbp+40], r13d
  pop r13

code:
  mov r9d,[rbp+40]
  movzx edx,al
  jmp return


align 10 cc
  vf_damage_multi:
  dd (float)1.5
  db EB 3B 54 68 69 73 20 74 61 62 6C 65 20 63 6F 6D 65 73 20 66 72 6F 6D 20 68 74 74 70 73 3A 2F
  db 2F 6F 70 65 6E 63 68 65 61 74 74 61 62 6C 65 73 2E 63 6F 6D 20 2F 20 43 45 20 37 2E 34 2B
INJECT_DAMAGE_MULTI:
  jmp newmem
  nop 2
return:
registersymbol(vf_damage_multi)
registersymbol(INJECT_DAMAGE_MULTI)

[DISABLE]

INJECT_DAMAGE_MULTI:
  db 44 8B 4D 40 0F B6 D0

unregistersymbol(*)
dealloc(newmem)


{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+2625F19

GameAssembly.dll+2625EF0: 48 8B D8                 - mov rbx,rax
GameAssembly.dll+2625EF3: E8 C8 77 FD FD           - call Mono.Security.Uri.get_AbsolutePath
GameAssembly.dll+2625EF8: 45 33 C9                 - xor r9d,r9d
GameAssembly.dll+2625EFB: 48 89 45 30              - mov [rbp+30],rax
GameAssembly.dll+2625EFF: 4C 8B C3                 - mov r8,rbx
GameAssembly.dll+2625F02: 48 8D 4D 30              - lea rcx,[rbp+30]
GameAssembly.dll+2625F06: 48 8B D6                 - mov rdx,rsi
GameAssembly.dll+2625F09: E8 32 15 B4 00           - call Unity.Entities.EntityManager.HasComponent
GameAssembly.dll+2625F0E: 48 8B 8D 88 00 00 00     - mov rcx,[rbp+00000088]
GameAssembly.dll+2625F15: 4C 8D 45 58              - lea r8,[rbp+58]
// ---------- INJECTING HERE ----------
GameAssembly.dll+2625F19: 44 8B 4D 40              - mov r9d,[rbp+40]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+2625F1D: 0F B6 D0                 - movzx edx,al
GameAssembly.dll+2625F20: 48 8B 85 B8 00 00 00     - mov rax,[rbp+000000B8]
GameAssembly.dll+2625F27: 33 DB                    - xor ebx,ebx
GameAssembly.dll+2625F29: 48 89 9C 24 A0 00 00 00  - mov [rsp+000000A0],rbx
GameAssembly.dll+2625F31: 0F 10 01                 - movups xmm0,[rcx]
GameAssembly.dll+2625F34: 48 8B 8D 80 00 00 00     - mov rcx,[rbp+00000080]
GameAssembly.dll+2625F3B: 66 0F 7F 75 C0           - movdqa [rbp-40],xmm6
GameAssembly.dll+2625F40: 0F 29 45 A0              - movaps [rbp-60],xmm0
GameAssembly.dll+2625F44: 0F 10 09                 - movups xmm1,[rcx]
GameAssembly.dll+2625F47: 48 8B 4D 50              - mov rcx,[rbp+50]
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>165</ID>
              <Description>"multiplier"</Description>
              <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">1.5:1.5
2:2
4:4
8:8
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>vf_damage_multi</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>166</ID>
          <Description>"Monster damage to player"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : CoreKeeper.exe
  Version: 
  Date   : 2022-03-21
  Author : bbfox @https://opencheattables.com/
}

[ENABLE]
aobscanregion(INJECT_ENEMY_DAMAGE,AttackPlayerClientSystemRegisterPlayerHitProc+800,AttackPlayerClientSystemRegisterPlayerHitProc+1900,33 D2 89 45 0C) // should be unique


alloc(newmem,$1000,INJECT_ENEMY_DAMAGE)

label(code)
label(return)
label(i_monster_damage_type)
label(i_monster_damage_divisor)

newmem:
  cmp dword ptr [i_monster_damage_type], 0
  je endp

check_1:
  cmp dword ptr [i_monster_damage_type], 1
  jne check_2
  mov eax, 1
  jmp endp

check_2:
  cmp dword ptr [i_monster_damage_type], 2
  jne check_3
  mov eax, 0
  jmp endp

check_3:
  cmp dword ptr [i_monster_damage_type], 3
  jne endp

  movss xmm15, [i_monster_damage_divisor]
  comiss xmm15, [vf_zero]
  ja check_3_1
  movss xmm15, [vf_one]

check_3_1:
  db EB 3B 54 68 69 73 20 74 61 62 6C 65 20 63 6F 6D 65 73 20 66 72 6F 6D 20 68 74 74 70 73 3A 2F
  db 2F 6F 70 65 6E 63 68 65 61 74 74 61 62 6C 65 73 2E 63 6F 6D 20 2F 20 43 45 20 37 2E 34 2B
  cvtsi2ss xmm14, eax
  divss xmm14, xmm15
  cvtss2si eax, xmm14

endp:
code:
  xor edx,edx
  mov [rbp+0C],eax
  jmp return

align 10 cc
  i_monster_damage_type: //0: Normal, 1:1pt, 2:no damage, 3:divide by number
  dd 3
  i_monster_damage_divisor:
  dd (float)1.5
  vf_zero:
  dd 0
  vf_one:
  dd (float)1

INJECT_ENEMY_DAMAGE:
  jmp newmem
return:
registersymbol(i_monster_damage_divisor)
registersymbol(i_monster_damage_type)
registersymbol(INJECT_ENEMY_DAMAGE)

[DISABLE]

INJECT_ENEMY_DAMAGE:
  db 33 D2 89 45 0C

unregistersymbol(*)
dealloc(newmem)


{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+24CFA92

GameAssembly.dll+24CFA61: 4C 89 74 24 50              - mov [rsp+50],r14
GameAssembly.dll+24CFA66: 4C 89 7C 24 48              - mov [rsp+48],r15
GameAssembly.dll+24CFA6B: 40 88 7C 24 40              - mov [rsp+40],dil
GameAssembly.dll+24CFA70: 40 88 7C 24 38              - mov [rsp+38],dil
GameAssembly.dll+24CFA75: 88 44 24 30                 - mov [rsp+30],al
GameAssembly.dll+24CFA79: 0F B6 85 38 04 00 00        - movzx eax,byte ptr [rbp+00000438]
GameAssembly.dll+24CFA80: 40 88 7C 24 28              - mov [rsp+28],dil
GameAssembly.dll+24CFA85: 88 44 24 20                 - mov [rsp+20],al
GameAssembly.dll+24CFA89: 0F 29 45 90                 - movaps [rbp-70],xmm0
GameAssembly.dll+24CFA8D: E8 7E 24 15 00              - call EntityUtility.CalculateDamage
// ---------- INJECTING HERE ----------
GameAssembly.dll+24CFA92: 33 D2                       - xor edx,edx
// ---------- DONE INJECTING  ----------
GameAssembly.dll+24CFA94: 89 45 0C                    - mov [rbp+0C],eax
GameAssembly.dll+24CFA97: 49 8B CD                    - mov rcx,r13
GameAssembly.dll+24CFA9A: 44 8B F8                    - mov r15d,eax
GameAssembly.dll+24CFA9D: E8 EE C5 38 00              - call PlayerController.IsShielded
GameAssembly.dll+24CFAA2: F3 44 0F 10 0D 39 91 2A 01  - movss xmm9,[GameAssembly.dll+3778BE4]
GameAssembly.dll+24CFAAB: 84 C0                       - test al,al
GameAssembly.dll+24CFAAD: 0F 84 5B 06 00 00           - je GameAssembly.dll+24D010E
GameAssembly.dll+24CFAB3: 33 D2                       - xor edx,edx
GameAssembly.dll+24CFAB5: 49 8B CD                    - mov rcx,r13
GameAssembly.dll+24CFAB8: E8 43 01 3A 00              - call PlayerController.get_shieldedAmount
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>167</ID>
              <Description>"Damage type"</Description>
              <DropDownList ReadOnly="1" DisplayValueAsItem="1">0:Normal
1:1pt
2:No damage
3:Divide by divisor below
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_monster_damage_type</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>168</ID>
              <Description>"Divisor"</Description>
              <DropDownListLink>multiplier</DropDownListLink>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>i_monster_damage_divisor</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>259</ID>
          <Description>"Fast fishing - fish bite"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : CoreKeeper.exe
  Version:
  Date   : 2022-04-02
  Author : bbfox @https://opencheattables.com/
}
//Fast fishing - fish bite
[ENABLE]
//After TimerSimple.StartNew
aobscanmodule(INJECT_SET_FISH_BITE_TIME,GameAssembly.dll,F3 0F 11 09 48 8B D9) // should be unique
alloc(newmem,$1000,INJECT_SET_FISH_BITE_TIME)

label(code)
label(return)

newmem:
  vmovss xmm1, [vf_fish_bite_time]

code:
  movss [rcx],xmm1
  mov rbx,rcx
  jmp return

align 10 cc
  vf_fish_bite_time:
  dd (float)0.8

INJECT_SET_FISH_BITE_TIME:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_SET_FISH_BITE_TIME)

[DISABLE]

INJECT_SET_FISH_BITE_TIME:
  db F3 0F 11 09 48 8B D9

unregistersymbol(INJECT_SET_FISH_BITE_TIME)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+21EFA56
TimerSimple.StartNew - 40 53                 - push rbx
..
..
..


GameAssembly.dll+21EFA43: 48 8B C3              - mov rax,rbx
GameAssembly.dll+21EFA46: 48 83 C4 20           - add rsp,20
GameAssembly.dll+21EFA4A: 5B                    - pop rbx
GameAssembly.dll+21EFA4B: C3                    - ret
GameAssembly.dll+21EFA4C: CC                    - int 3
GameAssembly.dll+21EFA4D: CC                    - int 3
GameAssembly.dll+21EFA4E: CC                    - int 3
GameAssembly.dll+21EFA4F: CC                    - int 3
GameAssembly.dll+21EFA50: 40 53                 - push rbx
GameAssembly.dll+21EFA52: 48 83 EC 20           - sub rsp,20
// ---------- INJECTING HERE ----------
GameAssembly.dll+21EFA56: F3 0F 11 09           - movss [rcx],xmm1
// ---------- DONE INJECTING  ----------
GameAssembly.dll+21EFA5A: 48 8B D9              - mov rbx,rcx
GameAssembly.dll+21EFA5D: 45 84 C0              - test r8l,r8l
GameAssembly.dll+21EFA60: 74 0B                 - je GameAssembly.dll+21EFA6D
GameAssembly.dll+21EFA62: C6 41 0C 00           - mov byte ptr [rcx+0C],00
GameAssembly.dll+21EFA66: C7 41 10 00 00 00 00  - mov [rcx+10],00000000
GameAssembly.dll+21EFA6D: 80 79 04 00           - cmp byte ptr [rcx+04],00
GameAssembly.dll+21EFA71: 74 09                 - je GameAssembly.dll+21EFA7C
GameAssembly.dll+21EFA73: 33 C9                 - xor ecx,ecx
GameAssembly.dll+21EFA75: E8 26 16 E8 FE        - call UnityEngine.Time.get_unscaledTime
GameAssembly.dll+21EFA7A: EB 07                 - jmp GameAssembly.dll+21EFA83
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>257</ID>
          <Description>"(not working) Fast fishing - can ignore red fishing line"</Description>
          <Color>808080</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : CoreKeeper.exe
  Version:
  Date   : 2022-04-02
  Author : bbfox @https://opencheattables.com/
}
//Fast fishing - can ignore red fishing line
[ENABLE]
aobscanregion(INJECT_FISH_LINE_TENSION,PlayerStatePlayerBaseStateUpdateMiniGameProc+680, PlayerStatePlayerBaseStateUpdateMiniGameProc+A80,F3 0F 11 BF B0 01 00 00 0F) // should be unique


alloc(newmem,$1000,INJECT_FISH_LINE_TENSION)

label(code)
label(return)

newmem:

  vmovss xmm15, [vf_cast_time]
  vmovss [rdi+9C], xmm15 //castTimer
  vmovss [rdi+C4], xmm15 //pullUpTimer

  vmovss xmm15, [vf_throw_time]
  vmovss [rdi+B0], xmm15 //throwTimer

  vmovss xmm15, [vf_fishStruggleTimer]
  vmovss [rdi+190], xmm15 //fishStruggleTimer

  vmovss xmm7, [vf_line_tension]
  db EB 3B 54
  db 68 69 73 20 74
  db 61 62 6C 65 20 63 6F 6D 65 73 20 66 72 6F 6D 20 68 74
  db 74 70 73 3A 2F
  db 2F 6F 70 65 6E 63 68 65
  db 61 74 74 61 62 6C 65 73
  db 2E 63 6F 6D
  db 20 2F 20 43 45 20 37 2E 34 2B
code:
  movss [rdi+000001B0],xmm7
  jmp return

align 10 cc
  vf_line_tension:
  dd (float)0.1
  vf_cast_time:
  dd (float)0.5
  vf_throw_time:
  dd (float)0.2
  vf_fishStruggleTimer:
  dd (float)5

INJECT_FISH_LINE_TENSION:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_FISH_LINE_TENSION)

[DISABLE]

INJECT_FISH_LINE_TENSION:
  db F3 0F 11 BF B0 01 00 00

unregistersymbol(INJECT_FISH_LINE_TENSION)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+183529E

GameAssembly.dll+1835271: 74 0E                       - je GameAssembly.dll+1835281
GameAssembly.dll+1835273: F3 44 0F 10 8F B4 01 00 00  - movss xmm9,[rdi+000001B4]
GameAssembly.dll+183527C: F3 45 0F 59 CB              - mulss xmm9,xmm11
GameAssembly.dll+1835281: F3 0F 10 B7 B0 01 00 00     - movss xmm6,[rdi+000001B0]
GameAssembly.dll+1835289: 33 C9                       - xor ecx,ecx
GameAssembly.dll+183528B: E8 10 D9 72 FF              - call UnityEngine.Time.get_deltaTime
GameAssembly.dll+1835290: 0F 28 F8                    - movaps xmm7,xmm0
GameAssembly.dll+1835293: F3 41 0F 59 F9              - mulss xmm7,xmm9
GameAssembly.dll+1835298: F3 0F 58 FE                 - addss xmm7,xmm6
GameAssembly.dll+183529C: 33 D2                       - xor edx,edx
// ---------- INJECTING HERE ----------
GameAssembly.dll+183529E: F3 0F 11 BF B0 01 00 00     - movss [rdi+000001B0],xmm7
// ---------- DONE INJECTING  ----------
GameAssembly.dll+18352A6: 0F 28 C7                    - movaps xmm0,xmm7
GameAssembly.dll+18352A9: E8 A2 B4 C1 FF              - call System.Single.IsNaN
GameAssembly.dll+18352AE: 84 C0                       - test al,al
GameAssembly.dll+18352B0: 75 06                       - jne GameAssembly.dll+18352B8
GameAssembly.dll+18352B2: 41 0F 2F F8                 - comiss xmm7,xmm8
GameAssembly.dll+18352B6: 76 04                       - jna GameAssembly.dll+18352BC
GameAssembly.dll+18352B8: 41 0F 28 F8                 - movaps xmm7,xmm8
GameAssembly.dll+18352BC: 33 D2                       - xor edx,edx
GameAssembly.dll+18352BE: 0F 28 C7                    - movaps xmm0,xmm7
GameAssembly.dll+18352C1: E8 8A B4 C1 FF              - call System.Single.IsNaN
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>258</ID>
          <Description>"(not working) Fast fish struggle success"</Description>
          <Color>808080</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : CoreKeeper.exe
  Version:
  Date   : 2022-04-02
  Author : bbfox @https://opencheattables.com/
}
//Fast fish struggle success
[ENABLE]
aobscanregion(INJECT_FAST_FISH_POSITION,PlayerStatePlayerBaseStateUpdateMiniGameProc+80,PlayerStatePlayerBaseStateUpdateMiniGameProc+580,F3 0F 11 87 8C 01 00 00 44) // should be unique
alloc(newmem,$1000,INJECT_FAST_FISH_POSITION)

label(code)
label(return)

newmem:
  vmovss xmm0, [vf_position]

code:  //fishPosition
  movss [rdi+0000018C],xmm0
  jmp return

align 10 cc
  vf_position:
  dd (float)-0.9

INJECT_FAST_FISH_POSITION:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_FAST_FISH_POSITION)

[DISABLE]


INJECT_FAST_FISH_POSITION:
  db F3 0F 11 87 8C 01 00 00 44

unregistersymbol(INJECT_FAST_FISH_POSITION)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+1834C66

GameAssembly.dll+1834C3E: 45 33 C9                    - xor r9d,r9d
GameAssembly.dll+1834C41: 4C 8B C6                    - mov r8,rsi
GameAssembly.dll+1834C44: 48 8B D3                    - mov rdx,rbx
GameAssembly.dll+1834C47: B9 88 00 00 00              - mov ecx,00000088
GameAssembly.dll+1834C4C: E8 7F CA 75 00              - call EntityUtility.GetConditionValue
GameAssembly.dll+1834C51: F7 D8                       - neg eax
GameAssembly.dll+1834C53: 66 0F 6E C0                 - movd xmm0,eax
GameAssembly.dll+1834C57: 0F 5B C0                    - cvtdq2ps xmm0,xmm0
GameAssembly.dll+1834C5A: F3 0F 58 C0                 - addss xmm0,xmm0
GameAssembly.dll+1834C5E: F3 0F 5E 05 12 48 C8 01     - divss xmm0,[GameAssembly.dll+34B9478]
// ---------- INJECTING HERE ----------
GameAssembly.dll+1834C66: F3 0F 11 87 8C 01 00 00     - movss [rdi+0000018C],xmm0
// ---------- DONE INJECTING  ----------
GameAssembly.dll+1834C6E: 44 0F 28 9C 24 90 00 00 00  - movaps xmm11,[rsp+00000090]
GameAssembly.dll+1834C77: 44 0F 28 94 24 A0 00 00 00  - movaps xmm10,[rsp+000000A0]
GameAssembly.dll+1834C80: 44 0F 28 8C 24 B0 00 00 00  - movaps xmm9,[rsp+000000B0]
GameAssembly.dll+1834C89: 44 0F 28 84 24 C0 00 00 00  - movaps xmm8,[rsp+000000C0]
GameAssembly.dll+1834C92: 0F 28 BC 24 D0 00 00 00     - movaps xmm7,[rsp+000000D0]
GameAssembly.dll+1834C9A: 0F 28 B4 24 E0 00 00 00     - movaps xmm6,[rsp+000000E0]
GameAssembly.dll+1834CA2: 4C 8B BC 24 F0 00 00 00     - mov r15,[rsp+000000F0]
GameAssembly.dll+1834CAA: 4C 8B B4 24 F8 00 00 00     - mov r14,[rsp+000000F8]
GameAssembly.dll+1834CB2: 48 8B B4 24 28 01 00 00     - mov rsi,[rsp+00000128]
GameAssembly.dll+1834CBA: 48 8B AC 24 20 01 00 00     - mov rbp,[rsp+00000120]
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>640</ID>
          <Description>"_not working"</Description>
          <Options moHideChildren="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>252</ID>
              <Description>"Move speed multiplier (Disable will cause crash)"</Description>
              <Options moHideChildren="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : CoreKeeper.exe
  Version: 
  Date   : 2022-04-02
  Author : bbfox @https://opencheattables.org/
}

[ENABLE]
aobscanregion(INJECT_WALK_UPDATE2,PlayerStateWalkUpdateProc+300,PlayerStateWalkUpdateProc+800,F3 0F 10 80 60 04 00 00) // should be unique
alloc(newmem,$1000,INJECT_WALK_UPDATE2)

label(code)
label(return)
label(vf_walk_speed_multi)

newmem:
  vmovss xmm15, [vf_walk_speed_multi]
  mulss xmm7,xmm15
  mulss xmm8,xmm15
  mulss xmm9,xmm15

code:
  movss xmm0,[rax+00000460]
  jmp return

align 10 cc
  vf_walk_speed_multi:
  dd (float)1.5


INJECT_WALK_UPDATE2:
  jmp newmem
  nop 4
return:

registersymbol(vf_walk_speed_multi)
registersymbol(INJECT_WALK_UPDATE2)

[DISABLE]

INJECT_WALK_UPDATE2:
  db F3 0F 10 80 60 04 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+8D07C5

GameAssembly.dll+8D079C: F3 0F 10 7D A7           - movss xmm7,[rbp-59]
GameAssembly.dll+8D07A1: 8B 45 AF                 - mov eax,[rbp-51]
GameAssembly.dll+8D07A4: 0F 28 C7                 - movaps xmm0,xmm7
GameAssembly.dll+8D07A7: 41 0F 14 C0              - unpcklps xmm0,xmm8
GameAssembly.dll+8D07AB: F2 0F 11 46 38           - movsd [rsi+38],xmm0
GameAssembly.dll+8D07B0: 89 46 40                 - mov [rsi+40],eax
GameAssembly.dll+8D07B3: 48 8B 46 10              - mov rax,[rsi+10]
GameAssembly.dll+8D07B7: F2 0F 11 45 A7           - movsd [rbp-59],xmm0
GameAssembly.dll+8D07BC: 48 85 C0                 - test rax,rax
GameAssembly.dll+8D07BF: 0F 84 A1 01 00 00        - je GameAssembly.dll+8D0966
// ---------- INJECTING HERE ----------
GameAssembly.dll+8D07C5: F3 0F 10 80 60 04 00 00  - movss xmm0,[rax+00000460]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+8D07CD: F3 0F 59 F8              - mulss xmm7,xmm0
GameAssembly.dll+8D07D1: F3 44 0F 59 C0           - mulss xmm8,xmm0
GameAssembly.dll+8D07D6: F3 44 0F 59 C8           - mulss xmm9,xmm0
GameAssembly.dll+8D07DB: 48 8B 06                 - mov rax,[rsi]
GameAssembly.dll+8D07DE: 48 8B CE                 - mov rcx,rsi
GameAssembly.dll+8D07E1: 48 8B 90 D0 01 00 00     - mov rdx,[rax+000001D0]
GameAssembly.dll+8D07E8: FF 90 C8 01 00 00        - call qword ptr [rax+000001C8]
GameAssembly.dll+8D07EE: 0F 28 F0                 - movaps xmm6,xmm0
GameAssembly.dll+8D07F1: F3 0F 59 FE              - mulss xmm7,xmm6
GameAssembly.dll+8D07F5: F3 44 0F 59 C6           - mulss xmm8,xmm6
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>256</ID>
                  <Description>"multiplier"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>vf_walk_speed_multi</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>503</ID>
              <Description>"Inf. craft materials (No effect) (turn off when not use)"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : CoreKeeper.exe
  Version: 
  Date   : 2022-05-12
  Author : bbfox @ https://opencheattables.org
}

[ENABLE]

//aobscanmodule(INJECT_INF_AMONT_OF_OBJECT,GameAssembly.dll,40 56 57 41 56) // should be unique
aobscanregion(INJECT_INF_AMONT_OF_OBJECT,InventoryHandlerGetExistingAmountOfObjectProc,InventoryHandlerGetExistingAmountOfObjectProc+5,48 89 5C 24 10) // should be unique
alloc(newmem,$1000,INJECT_INF_AMONT_OF_OBJECT)

label(code)
label(return)

newmem:
  mov eax, #999
  ret

code:
  mov [rsp+10],rbx
  jmp return

INJECT_INF_AMONT_OF_OBJECT:
  jmp newmem
return:
registersymbol(INJECT_INF_AMONT_OF_OBJECT)

[DISABLE]

INJECT_INF_AMONT_OF_OBJECT:
  db 48 89 5C 24 10

unregistersymbol(INJECT_INF_AMONT_OF_OBJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: InventoryHandlerGetExistingAmountOfObjectProc

GameAssembly.dll+D598AB: 48 8B 5C 24 40        - mov rbx,[rsp+40]
GameAssembly.dll+D598B0: 48 8B 74 24 48        - mov rsi,[rsp+48]
GameAssembly.dll+D598B5: 48 83 C4 30           - add rsp,30
GameAssembly.dll+D598B9: 5F                    - pop rdi
GameAssembly.dll+D598BA: C3                    - ret
GameAssembly.dll+D598BB: CC                    - int 3
GameAssembly.dll+D598BC: CC                    - int 3
GameAssembly.dll+D598BD: CC                    - int 3
GameAssembly.dll+D598BE: CC                    - int 3
GameAssembly.dll+D598BF: CC                    - int 3
// ---------- INJECTING HERE ----------
InventoryHandlerGetExistingAmountOfObjectProc: 48 89 5C 24 10        - mov [rsp+10],rbx
// ---------- DONE INJECTING  ----------
GameAssembly.dll+D598C5: 48 89 74 24 18        - mov [rsp+18],rsi
GameAssembly.dll+D598CA: 57                    - push rdi
GameAssembly.dll+D598CB: 48 83 EC 60           - sub rsp,60
GameAssembly.dll+D598CF: 8B FA                 - mov edi,edx
GameAssembly.dll+D598D1: 48 8B F1              - mov rsi,rcx
GameAssembly.dll+D598D4: 80 3D 0E 5D 47 03 00  - cmp byte ptr [GameAssembly.dll+41CF5E9],00
GameAssembly.dll+D598DB: 75 37                 - jne GameAssembly.dll+D59914
GameAssembly.dll+D598DD: 48 8D 0D 5C 8C 25 03  - lea rcx,[GameAssembly.dll+3FB2540]
GameAssembly.dll+D598E4: E8 97 9F 8B FF        - call GameAssembly.dll+613880
GameAssembly.dll+D598E9: 48 8D 0D 50 8D 25 03  - lea rcx,[GameAssembly.dll+3FB2640]
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>366</ID>
              <Description>"xxRedirect XP from skill 1 to skill 2"</Description>
              <Options moHideChildren="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : CoreKeeper.exe
  Version: 
  Date   : 2022-04-30
  Author : bbfox @https://opencheattables.com/
}

[ENABLE]
aobscanregion(INJECT_REDIRECT_XP,SaveManagerAddSkillValueProc+d0,SaveManagerAddSkillValueProc+2e0,48 8B 4E 30 44 39 34 28) // should be unique
alloc(newmem,$1000,INJECT_REDIRECT_XP)

label(code)
label(return)
label(i_src_skill)
label(i_dst_skill)

newmem:
  cmp r14d, [i_src_skill]
  jne code
  cmp dword ptr [i_dst_skill], 8
  jg code
  mov r14d, [i_dst_skill]

code:
  mov rcx,[rsi+30]
  cmp [rax+rbp],r14d
  jmp return

align 10 cc
  i_src_skill:
  dd 1
  i_dst_skill:
  dd 6

INJECT_REDIRECT_XP:
  jmp newmem
  nop 3
return:
registersymbol(i_src_skill)
registersymbol(i_dst_skill)
registersymbol(INJECT_REDIRECT_XP)

[DISABLE]

INJECT_REDIRECT_XP:
  db 48 8B 4E 30 44 39 34 28

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+1C7AE7E

GameAssembly.dll+1C7AE58: 48 85 DB           - test rbx,rbx
GameAssembly.dll+1C7AE5B: 0F 84 E4 01 00 00  - je GameAssembly.dll+1C7B045
GameAssembly.dll+1C7AE61: 48 8B 5B 60        - mov rbx,[rbx+60]
GameAssembly.dll+1C7AE65: 48 85 DB           - test rbx,rbx
GameAssembly.dll+1C7AE68: 0F 84 D7 01 00 00  - je GameAssembly.dll+1C7B045
GameAssembly.dll+1C7AE6E: 3B 7B 18           - cmp edi,[rbx+18]
GameAssembly.dll+1C7AE71: 72 07              - jb GameAssembly.dll+1C7AE7A
GameAssembly.dll+1C7AE73: 33 C9              - xor ecx,ecx
GameAssembly.dll+1C7AE75: E8 16 F5 89 FF     - call System.ThrowHelper.ThrowArgumentOutOfRangeException
GameAssembly.dll+1C7AE7A: 48 8B 43 10        - mov rax,[rbx+10]
// ---------- INJECTING HERE ----------
GameAssembly.dll+1C7AE7E: 48 8B 4E 30        - mov rcx,[rsi+30]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+1C7AE82: 44 39 34 28        - cmp [rax+rbp],r14d
GameAssembly.dll+1C7AE86: 74 17              - je GameAssembly.dll+1C7AE9F
GameAssembly.dll+1C7AE88: FF C7              - inc edi
GameAssembly.dll+1C7AE8A: 48 83 C5 08        - add rbp,08
GameAssembly.dll+1C7AE8E: 48 8B C1           - mov rax,rcx
GameAssembly.dll+1C7AE91: 48 85 C9           - test rcx,rcx
GameAssembly.dll+1C7AE94: 0F 84 AB 01 00 00  - je GameAssembly.dll+1C7B045
GameAssembly.dll+1C7AE9A: E9 71 FF FF FF     - jmp GameAssembly.dll+1C7AE10
GameAssembly.dll+1C7AE9F: 48 85 C9           - test rcx,rcx
GameAssembly.dll+1C7AEA2: 0F 84 9D 01 00 00  - je GameAssembly.dll+1C7B045
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>367</ID>
                  <Description>"Skill 1 (only valid when not max)"</Description>
                  <DropDownList DisplayValueAsItem="1">0:Mining
1:Running
2:Melee
3:Vitality
4:Crafting
5:Range
6:Gardening
7:Fishing
8:Cooking
9:N/A
</DropDownList>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>C08000</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_src_skill</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>368</ID>
                  <Description>"Skill 2"</Description>
                  <DropDownList DisplayValueAsItem="1">0:Mining
1:Running
2:Melee
3:Vitality
4:Crafting
5:Range
6:Gardening
7:Fishing
8:Cooking
9:N/A
</DropDownList>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>C08000</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_dst_skill</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>501</ID>
      <Description>"*** Core Keeper 0.5.2.3-d470 EA  /  https://opencheattables.com  /  CE 7.4+ ***"</Description>
      <Options moHideChildren="1"/>
      <Color>800080</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>1001</ID>
          <Description>"-Item ID-"</Description>
          <DropDownList DisplayValueAsItem="1">30:Scarlet pickaxe
31:Scaret Hoe
32:Scarlet Shovel
53:Scarlet Fishrod
110:Torch
111:Campfire
1500:Copper Ore
1510:Iron Ore
1520:Gold Ore
1521:Scarlet Ore
1522:Octarine Ore
1523:Galaxite Ore
6002:Tombstone
8301:Orb Lantern
8511:Scarlet Helm
8600:Copper Breastplate
8611:Scarlet Breastplate
8706:Scarlet Pants
8853:Glow Tulip Ring
8902:Scarlet Sword
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>000</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <LuaScript>AddressList.Header.OnSectionClick = nil
IDs = {501, 182, 365, 364, 165, 168, 178, 3, 186, 184, 367, 368, 167,
       }

function contains(table, val)
   local i = 0
   for i=1, #table do
      if table[i] == val then
         return true
      end
   end
   return false
end


function onMemRecPreExecute(memoryrecord, newstate)
    if contains(IDs, memoryrecord.ID) and newstate then
	    memoryrecord.OnActivate = function(memoryrecord, before, currentstate)
		    return false
	    end
    end
end
</LuaScript>
</CheatTable>
