<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <CheatEntries>
    <CheatEntry>
      <ID>0</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>1</ID>
      <Description>"Enable"</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(ResourceManagerClearItemCountsProc, "ResourceManager.ClearItemCounts")
define(ResidenceUpdateFirewoodProc, "Residence.UpdateFirewood")
define(ResidenceUpdateWaterProc, "Residence.UpdateWater")
define(VillagerEatIfNecessaryProc, "Villager.EatIfNecessary")
define(ItemStorageRemoveItemsProc, "ItemStorage.RemoveItems")
define(Characterget_movementSpeedProc, "Character.get_movementSpeed")


//Residence.UpdateFirewood   GameAssembly.dll+80E820
//GameAssembly.dll+80E9E4

//Residence.UpdateWater GameAssembly.dll+80EE42
//GameAssembly.dll+80EF60 (11E)

//Villager.EatIfNecessary
//GameAssembly.dll+5A64EF - 41 B8 01000000        - mov r8d,00000001

//Villager.CalculateToolWear   GameAssembly.dll+5A4CD0
//GameAssembly.dll+5A4E49


//ItemStorage.RemoveItems  GameAssembly.dll+938C74



registersymbol(ResourceManagerClearItemCountsProc)
registersymbol(ResidenceUpdateFirewoodProc)
registersymbol(ResidenceUpdateWaterProc)
registersymbol(VillagerEatIfNecessaryProc)
registersymbol(ItemStorageRemoveItemsProc)
registersymbol(Characterget_movementSpeedProc)

[DISABLE]
{$lua}
if syntaxcheck then return end;if not syntaxcheck and monopipe then monopipe=nil,monopipe.Destroy()end

{$asm}
unregistersymbol(*)

</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>2</ID>
          <Description>"Enable twice: 1st: waiting for IL2CPP to complete, then re-enable again"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>30</ID>
          <Description>"No residence firewood consumes"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Farthest Frontier.exe
  Version: 
  Date   : 2023-01-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

//aobscanmodule(INJECT_RESIDENCE_FIREWOOD_BURN_RATE,GameAssembly.dll,F3 0F 58 87 78 05 00 00) // should be unique
aobscanregion(INJECT_RESIDENCE_FIREWOOD_BURN_RATE,ResidenceUpdateFirewoodProc+1B0,ResidenceUpdateFirewoodProc+200,F3 0F 58 87 ?? ?? 00 00 F3 0F 11 87 ?? ?? 00 00 48 8B 0D) // should be unique
alloc(newmem,$1000,INJECT_RESIDENCE_FIREWOOD_BURN_RATE)

alloc(INJECT_RESIDENCE_FIREWOOD_BURN_RATEo,8)

label(code)
label(return)


INJECT_RESIDENCE_FIREWOOD_BURN_RATEo:
  readmem(INJECT_RESIDENCE_FIREWOOD_BURN_RATE, 8)

newmem:


code:
  //addss xmm0,[rdi+00000578]
  jmp return

INJECT_RESIDENCE_FIREWOOD_BURN_RATE:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_RESIDENCE_FIREWOOD_BURN_RATE)
registersymbol(INJECT_RESIDENCE_FIREWOOD_BURN_RATEo)

[DISABLE]

INJECT_RESIDENCE_FIREWOOD_BURN_RATE:
  //db F3 0F 58 87 78 05 00 00
  readmem(INJECT_RESIDENCE_FIREWOOD_BURN_RATEo, 8)

unregistersymbol(*)
unregistersymbol(INJECT_RESIDENCE_FIREWOOD_BURN_RATEo)
dealloc(newmem)
dealloc(INJECT_RESIDENCE_FIREWOOD_BURN_RATEo)
{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+80E9E4

GameAssembly.dll+80E9B8: E8 33 F0 F9 FF           - call ParticleFXPlayer.Stop
GameAssembly.dll+80E9BD: 4C 8B 7C 24 50           - mov r15,[rsp+50]
GameAssembly.dll+80E9C2: 48 8B B4 24 80 00 00 00  - mov rsi,[rsp+00000080]
GameAssembly.dll+80E9CA: 48 8B 6C 24 78           - mov rbp,[rsp+78]
GameAssembly.dll+80E9CF: 48 8B 5C 24 70           - mov rbx,[rsp+70]
GameAssembly.dll+80E9D4: 48 83 C4 58              - add rsp,58
GameAssembly.dll+80E9D8: 41 5E                    - pop r14
GameAssembly.dll+80E9DA: 5F                       - pop rdi
GameAssembly.dll+80E9DB: C3                       - ret 
GameAssembly.dll+80E9DC: F3 0F 10 87 7C 05 00 00  - movss xmm0,[rdi+0000057C]
// ---------- INJECTING HERE ----------
GameAssembly.dll+80E9E4: F3 0F 58 87 78 05 00 00  - addss xmm0,[rdi+00000578]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+80E9EC: F3 0F 11 87 7C 05 00 00  - movss [rdi+0000057C],xmm0
GameAssembly.dll+80E9F4: 48 8B 0D 15 3C 6F 01     - mov rcx,[GameAssembly.dll+1F02610]
GameAssembly.dll+80E9FB: F6 81 33 01 00 00 01     - test byte ptr [rcx+00000133],01
GameAssembly.dll+80EA02: 74 0E                    - je GameAssembly.dll+80EA12
GameAssembly.dll+80EA04: 44 39 B1 E0 00 00 00     - cmp [rcx+000000E0],r14d
GameAssembly.dll+80EA0B: 75 05                    - jne GameAssembly.dll+80EA12
GameAssembly.dll+80EA0D: E8 BE 30 98 FF           - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+80EA12: 45 33 C0                 - xor r8d,r8d
GameAssembly.dll+80EA15: 33 D2                    - xor edx,edx
GameAssembly.dll+80EA17: 48 8B CB                 - mov rcx,rbx
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>38</ID>
          <Description>"No residence water consumes"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Farthest Frontier.exe
  Version: 
  Date   : 2023-01-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

//aobscanmodule(INJECT_RESIDENCE_WATER_USAGE_RATE,GameAssembly.dll,F3 0F 58 8F 80 05 00 00) // should be unique
aobscanmodule(INJECT_RESIDENCE_WATER_USAGE_RATE,GameAssembly.dll,F3 0F 58 8F ?? ?? 00 00 0F 2F 0D ?? ?? ?? ?? F3 0F 11 8F ?? ?? 00 00) // should be unique
alloc(newmem,$1000,INJECT_RESIDENCE_WATER_USAGE_RATE)

alloc(INJECT_RESIDENCE_WATER_USAGE_RATEo,8)

label(code)
label(return)


INJECT_RESIDENCE_WATER_USAGE_RATEo:
  readmem(INJECT_RESIDENCE_WATER_USAGE_RATE, 8)

newmem:

code:
  //addss xmm1,[rdi+00000580]
  jmp return

INJECT_RESIDENCE_WATER_USAGE_RATE:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_RESIDENCE_WATER_USAGE_RATE)
registersymbol(INJECT_RESIDENCE_WATER_USAGE_RATEo)

[DISABLE]

INJECT_RESIDENCE_WATER_USAGE_RATE:
  //db F3 0F 58 8F 80 05 00 00
  readmem(INJECT_RESIDENCE_WATER_USAGE_RATEo, 8)

unregistersymbol(INJECT_RESIDENCE_WATER_USAGE_RATE)
unregistersymbol(INJECT_RESIDENCE_WATER_USAGE_RATEo)
dealloc(newmem)
dealloc(INJECT_RESIDENCE_WATER_USAGE_RATEo)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+80EF68

GameAssembly.dll+80EF38: 89 9F 84 05 00 00        - mov [rdi+00000584],ebx
GameAssembly.dll+80EF3E: 4C 8B 7C 24 50           - mov r15,[rsp+50]
GameAssembly.dll+80EF43: 4C 8B 74 24 58           - mov r14,[rsp+58]
GameAssembly.dll+80EF48: 48 8B B4 24 80 00 00 00  - mov rsi,[rsp+00000080]
GameAssembly.dll+80EF50: 48 8B 6C 24 78           - mov rbp,[rsp+78]
GameAssembly.dll+80EF55: 48 8B 5C 24 70           - mov rbx,[rsp+70]
GameAssembly.dll+80EF5A: 48 83 C4 60              - add rsp,60
GameAssembly.dll+80EF5E: 5F                       - pop rdi
GameAssembly.dll+80EF5F: C3                       - ret 
GameAssembly.dll+80EF60: F3 0F 10 8F 84 05 00 00  - movss xmm1,[rdi+00000584]
// ---------- INJECTING HERE ----------
GameAssembly.dll+80EF68: F3 0F 58 8F 80 05 00 00  - addss xmm1,[rdi+00000580]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+80EF70: 0F 2F 0D 29 20 11 01     - comiss xmm1,[GameAssembly.dll+1920FA0]
GameAssembly.dll+80EF77: F3 0F 11 8F 84 05 00 00  - movss [rdi+00000584],xmm1
GameAssembly.dll+80EF7F: 72 BD                    - jb GameAssembly.dll+80EF3E
GameAssembly.dll+80EF81: 0F 57 C0                 - xorps xmm0,xmm0
GameAssembly.dll+80EF84: 8B C0                    - mov eax,eax
GameAssembly.dll+80EF86: 45 33 C0                 - xor r8d,r8d
GameAssembly.dll+80EF89: F2 48 0F 2A C0           - cvtsi2sd xmm0,rax
GameAssembly.dll+80EF8E: 66 0F 5A C0              - cvtpd2ps xmm0,xmm0
GameAssembly.dll+80EF92: E8 C9 31 50 00           - call UnityEngine.Mathf.Min
GameAssembly.dll+80EF97: F3 48 0F 2C F0           - cvttss2si rsi,xmm0
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>36</ID>
          <Description>"Villager consume 0 food"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Farthest Frontier.exe
  Version: 
  Date   : 2023-01-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_VILLAGER_NO_NEED_EAT,GameAssembly.dll,41 B8 01 00 00 00 48 8B D6 49) // should be unique
alloc(newmem,$1000,INJECT_VILLAGER_NO_NEED_EAT)

label(code)
label(return)

newmem:

code:
  mov r8d,00000001
  //
  xor r8d, r8d
  //
  jmp return

INJECT_VILLAGER_NO_NEED_EAT:
  jmp newmem
  nop
return:
registersymbol(INJECT_VILLAGER_NO_NEED_EAT)

[DISABLE]

INJECT_VILLAGER_NO_NEED_EAT:
  db 41 B8 01 00 00 00

unregistersymbol(INJECT_VILLAGER_NO_NEED_EAT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+5A64EF

GameAssembly.dll+5A64C9: 85 C0                 - test eax,eax
GameAssembly.dll+5A64CB: 74 C3                 - je GameAssembly.dll+5A6490
GameAssembly.dll+5A64CD: 4C 8B B3 48 01 00 00  - mov r14,[rbx+00000148]
GameAssembly.dll+5A64D4: 33 D2                 - xor edx,edx
GameAssembly.dll+5A64D6: 48 8B CB              - mov rcx,rbx
GameAssembly.dll+5A64D9: E8 82 7E 75 00        - call UnityEngine.Component.get_gameObject
GameAssembly.dll+5A64DE: 4D 85 F6              - test r14,r14
GameAssembly.dll+5A64E1: 0F 84 EA 00 00 00     - je GameAssembly.dll+5A65D1
GameAssembly.dll+5A64E7: 4C 89 64 24 20        - mov [rsp+20],r12
GameAssembly.dll+5A64EC: 4C 8B C8              - mov r9,rax
// ---------- INJECTING HERE ----------
GameAssembly.dll+5A64EF: 41 B8 01 00 00 00     - mov r8d,00000001
// ---------- DONE INJECTING  ----------
GameAssembly.dll+5A64F5: 48 8B D6              - mov rdx,rsi
GameAssembly.dll+5A64F8: 49 8B CE              - mov rcx,r14
GameAssembly.dll+5A64FB: E8 70 27 39 00        - call ItemStorageRemoveItemsProc
GameAssembly.dll+5A6500: 48 8B 8B D0 00 00 00  - mov rcx,[rbx+000000D0]
GameAssembly.dll+5A6507: 48 85 C9              - test rcx,rcx
GameAssembly.dll+5A650A: 0F 84 B6 00 00 00     - je GameAssembly.dll+5A65C6
GameAssembly.dll+5A6510: 45 33 C9              - xor r9d,r9d
GameAssembly.dll+5A6513: 45 8D 41 01           - lea r8d,[r9+01]
GameAssembly.dll+5A6517: 48 8B D6              - mov rdx,rsi
GameAssembly.dll+5A651A: E8 91 5B 32 00        - call VillagerHealth.Eat
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>121</ID>
          <Description>"Try to prevent item corruption"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Farthest Frontier.exe
  Version: 
  Date   : 2023-01-14
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_SET_MIN_FIELD_RAW_FOOD,GameAssembly.dll,8B CA FF C2 41 03 44 88 20 83 FA 65) // should be unique
alloc(newmem,$1000,INJECT_SET_MIN_FIELD_RAW_FOOD)

label(code)
label(return)
//ItemBundle.get_numberOfItems

newmem:
  cmp edx, #33 // move/add 25% or below buckets to 100% one
  ja code

  pushfq
  push r15
  push rcx

  mov ecx,edx
  mov r15d, [r8+rcx*4+20]
  test r15d, r15d
  jz endp


  push r15
  xor r15, r15
  mov [r8+rcx*4+20], r15d
  pop r15

  mov ecx, 64

  cmp dword ptr [r8+rcx*4+20], 0
  jne do_add_it

do_set_it:
  mov [r8+rcx*4+20], r15d
  jmp endp

do_add_it:
  add [r8+rcx*4+20], r15d

endp:
  pop rcx
  pop r15
  popfq


code:
  mov ecx,edx
  inc edx
  add eax,[r8+rcx*4+20]
  jmp return
align 10 cc
  i_tmp1:
  dd 0
  i_last_var_addr:
  dq 0

INJECT_SET_MIN_FIELD_RAW_FOOD:
  jmp newmem
  nop 4
return:
registersymbol(INJECT_SET_MIN_FIELD_RAW_FOOD)
[DISABLE]

INJECT_SET_MIN_FIELD_RAW_FOOD:
  db 8B CA FF C2 41 03 44 88 20

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+4B1A0B

GameAssembly.dll+4B19EE: CC                    - int 3 
GameAssembly.dll+4B19EF: CC                    - int 3 
ItemBundle.get_numberOfItems: 48 83 EC 28           - sub rsp,28
GameAssembly.dll+4B19F4: 4C 8B 81 98 00 00 00  - mov r8,[rcx+00000098]
GameAssembly.dll+4B19FB: 33 C0                 - xor eax,eax
GameAssembly.dll+4B19FD: 8D 50 01              - lea edx,[rax+01]
GameAssembly.dll+4B1A00: 4D 85 C0              - test r8,r8
GameAssembly.dll+4B1A03: 74 19                 - je GameAssembly.dll+4B1A1E
GameAssembly.dll+4B1A05: 41 3B 50 18           - cmp edx,[r8+18]
GameAssembly.dll+4B1A09: 73 19                 - jae GameAssembly.dll+4B1A24
// ---------- INJECTING HERE ----------
GameAssembly.dll+4B1A0B: 8B CA                 - mov ecx,edx
// ---------- DONE INJECTING  ----------
GameAssembly.dll+4B1A0D: FF C2                 - inc edx
GameAssembly.dll+4B1A0F: 41 03 44 88 20        - add eax,[r8+rcx*4+20]
GameAssembly.dll+4B1A14: 83 FA 65              - cmp edx,65
GameAssembly.dll+4B1A17: 7C E7                 - jl GameAssembly.dll+4B1A00
GameAssembly.dll+4B1A19: 48 83 C4 28           - add rsp,28
GameAssembly.dll+4B1A1D: C3                    - ret 
GameAssembly.dll+4B1A1E: E8 7D 63 D5 FF        - call GameAssembly.dll+207DA0
GameAssembly.dll+4B1A23: CC                    - int 3 
GameAssembly.dll+4B1A24: E8 87 5F D5 FF        - call GameAssembly.dll+2079B0
GameAssembly.dll+4B1A29: 48 8B C8              - mov rcx,rax
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>111</ID>
          <Description>"Set villager move speed / life"</Description>
          <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Farthest Frontier.exe
  Version: 
  Date   : 2023-01-07
  Author : bbfox@https://opencheattables.com
}

[ENABLE]
//Character.get_movementSpeed
aobscanmodule(INJECT_SET_VILLAGER_DATA,GameAssembly.dll,F3 0F 10 73 44 F3) // should be unique
alloc(newmem,$1000,INJECT_SET_VILLAGER_DATA)

label(code)
label(return)
label(vf_moving_speed_multi)
label(vf_shoe_bonus_base)
label(is_set_life)
label(is_set_armor)
label(vf_min_armor_value)

newmem:
  cmp dword ptr [is_set_life], 1
  jne check_armor

  push r15
  mov r15, [rbx+70]
  test r15, r15
  jz endp1
  vmovss xmm15, [r15+58] //&lt;baseMaxLife&gt;k__BackingField
  vmovss xmm14, [r15+48] //_life
  vucomiss xmm14, xmm15
  jae endp1
  vmovss [r15+48], xmm15 //_life

endp1:
  pop r15


check_armor:
  cmp dword ptr [is_set_armor], 1
  jne code

  push r15
  mov r15, [rbx+70]
  test r15, r15
  jz endp2
  vmovss xmm15, [vf_min_armor_value]
  vmovss xmm14, [r15+5C] //baseArmor
  vucomiss xmm14, xmm15
  jae endp2
  vmovss [r15+5C], xmm15

endp2:
  pop r15


code:
  // orig code
  movss xmm6,[rbx+44]
  //

  vmovss xmm14, [vf_moving_speed_multi]
  vmulss xmm6, xmm6, xmm14

  vmovss xmm15, [vf_shoe_bonus_base]
  vmovss [rbx+4C], xmm15

  jmp return
align 10 cc
  vf_moving_speed_multi:
  dd (float)1.5
  vf_shoe_bonus_base:
  dd (float)0.9
  is_set_life:
  dd 0
  is_set_armor:
  dd 1
  vf_20:
  dd (float)20
  vf_min_armor_value:
  dd (float)45

INJECT_SET_VILLAGER_DATA:
  jmp newmem
return:
registersymbol(INJECT_SET_VILLAGER_DATA)
registersymbol(vf_moving_speed_multi)
registersymbol(vf_shoe_bonus_base)
registersymbol(is_set_life)
registersymbol(is_set_armor)
registersymbol(vf_min_armor_value)
[DISABLE]

INJECT_SET_VILLAGER_DATA:
  db F3 0F 10 73 44

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+A367B5

GameAssembly.dll+A36785: 57                    - push rdi
GameAssembly.dll+A36786: 48 83 EC 30           - sub rsp,30
GameAssembly.dll+A3678A: 80 3D 14 2F 53 01 00  - cmp byte ptr [GameAssembly.dll+1F696A5],00
GameAssembly.dll+A36791: 48 8B D9              - mov rbx,rcx
GameAssembly.dll+A36794: 0F 29 74 24 20        - movaps [rsp+20],xmm6
GameAssembly.dll+A36799: 75 13                 - jne GameAssembly.dll+A367AE
GameAssembly.dll+A3679B: 48 8D 0D 6E BE 4C 01  - lea rcx,[GameAssembly.dll+1F02610]
GameAssembly.dll+A367A2: E8 69 14 7D FF        - call GameAssembly.dll+207C10
GameAssembly.dll+A367A7: C6 05 F7 2E 53 01 01  - mov byte ptr [GameAssembly.dll+1F696A5],01
GameAssembly.dll+A367AE: 48 8B 0D 5B BE 4C 01  - mov rcx,[GameAssembly.dll+1F02610]
// ---------- INJECTING HERE ----------
GameAssembly.dll+A367B5: F3 0F 10 73 44        - movss xmm6,[rbx+44]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+A367BA: F3 0F 59 73 40        - mulss xmm6,[rbx+40]
GameAssembly.dll+A367BF: 48 8B 7B 70           - mov rdi,[rbx+70]
GameAssembly.dll+A367C3: F6 81 33 01 00 00 01  - test byte ptr [rcx+00000133],01
GameAssembly.dll+A367CA: 74 0E                 - je GameAssembly.dll+A367DA
GameAssembly.dll+A367CC: 83 B9 E0 00 00 00 00  - cmp dword ptr [rcx+000000E0],00
GameAssembly.dll+A367D3: 75 05                 - jne GameAssembly.dll+A367DA
GameAssembly.dll+A367D5: E8 F6 B2 75 FF        - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+A367DA: 45 33 C0              - xor r8d,r8d
GameAssembly.dll+A367DD: 33 D2                 - xor edx,edx
GameAssembly.dll+A367DF: 48 8B CF              - mov rcx,rdi
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>112</ID>
              <Description>"Moving speed multiplier"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>vf_moving_speed_multi</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>113</ID>
              <Description>"Shoe bonus"</Description>
              <DropDownList DisplayValueAsItem="1">0.1000000015:Default
0.3:3x
0.8999999762:0.9x
1.5:15x
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>vf_shoe_bonus_base</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>114</ID>
              <Description>"Set life when moving? (not recommended)"</Description>
              <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>is_set_life</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>115</ID>
              <Description>"Set min. armor when moving?"</Description>
              <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>is_set_armor</Address>
              <CheatEntries>
                <CheatEntry>
                  <ID>116</ID>
                  <Description>"Min. armor value"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>C08000</Color>
                  <VariableType>Float</VariableType>
                  <Address>vf_min_armor_value</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>18</ID>
          <Description>"Item gather number multiplier"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Farthest Frontier.exe
  Version: 
  Date   : 2023-01-04
  Author : bbfox@https://opencheattables.com
}

[ENABLE]
//ItemBundle.AddItems #2
aobscanmodule(INJECT_MASS_ADD,GameAssembly.dll,01 41 20 41 83 F8 65) // should be unique
alloc(newmem,$1000,INJECT_MASS_ADD)

label(code)
label(return)
label(vf_item_add_multi)
label(i_item_cnt_threshold)

newmem:
  cmp eax, 0
  je code
  push r15
  mov r15d, [i_item_cnt_threshold]
  cmp dword ptr [rcx+20], r15d
  pop r15
  jae code

  cvtsi2ss xmm15, eax
  vmovss xmm14, [vf_item_add_multi]
  vmulss xmm15, xmm15, xmm14
  vcvtss2si eax, xmm15
  push r15
  mov r15d, [rcx+20]
  pop r15

code:
  add [rcx+20],eax
  cmp r8d,65
  jmp return
align 10 cc
  vf_item_add_multi:
  dd (float)1.4
  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
  i_item_cnt_threshold:
  dd 64
  i_item_min_cnt_threshold:
  dd 2

INJECT_MASS_ADD:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_MASS_ADD)
registersymbol(vf_item_add_multi)
registersymbol(i_item_cnt_threshold)
[DISABLE]

INJECT_MASS_ADD:
  db 01 41 20 41 83 F8 65

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+4B0855

GameAssembly.dll+4B0832: 4A 8D 0C 80           - lea rcx,[rax+r8*4]
GameAssembly.dll+4B0836: 48 85 D2              - test rdx,rdx
GameAssembly.dll+4B0839: 74 28                 - je GameAssembly.dll+4B0863
GameAssembly.dll+4B083B: 48 8B 82 98 00 00 00  - mov rax,[rdx+00000098]
GameAssembly.dll+4B0842: 48 85 C0              - test rax,rax
GameAssembly.dll+4B0845: 74 1C                 - je GameAssembly.dll+4B0863
GameAssembly.dll+4B0847: 44 3B 40 18           - cmp r8d,[rax+18]
GameAssembly.dll+4B084B: 73 1C                 - jae GameAssembly.dll+4B0869
GameAssembly.dll+4B084D: 42 8B 44 80 20        - mov eax,[rax+r8*4+20]
GameAssembly.dll+4B0852: 41 FF C0              - inc r8d
// ---------- INJECTING HERE ----------
GameAssembly.dll+4B0855: 01 41 20              - add [rcx+20],eax
// ---------- DONE INJECTING  ----------
GameAssembly.dll+4B0858: 41 83 F8 65           - cmp r8d,65
GameAssembly.dll+4B085C: 72 C2                 - jb GameAssembly.dll+4B0820
GameAssembly.dll+4B085E: 48 83 C4 28           - add rsp,28
GameAssembly.dll+4B0862: C3                    - ret 
GameAssembly.dll+4B0863: E8 38 75 D5 FF        - call GameAssembly.dll+207DA0
GameAssembly.dll+4B0868: CC                    - int 3 
GameAssembly.dll+4B0869: E8 42 71 D5 FF        - call GameAssembly.dll+2079B0
GameAssembly.dll+4B086E: 48 8B C8              - mov rcx,rax
GameAssembly.dll+4B0871: 33 D2                 - xor edx,edx
GameAssembly.dll+4B0873: E8 E8 74 D5 FF        - call GameAssembly.dll+207D60
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>20</ID>
              <Description>"All items include wastes"</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>19</ID>
              <Description>"Multiplier"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>vf_item_add_multi</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>29</ID>
              <Description>"Threshold"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_item_cnt_threshold</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>27</ID>
          <Description>"Experimental: Object values (choose one)"</Description>
          <Options moHideChildren="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>11</ID>
              <Description>"Selected resource, type 1"</Description>
              <Options moHideChildren="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript Async="1">{ Game   : Farthest Frontier.exe
  Version: 
  Date   : 2023-01-03
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_SELECTED_OBJECT,GameAssembly.dll,8B 44 88 20 89 44 8A 20 FF) // should be unique
alloc(newmem,$1000,INJECT_SELECTED_OBJECT)

label(code)
label(return)
label(i_base_sel_object_addr1)
label(i_base_sel_object_addr2)
label(i_base_sel_object_addr3)
label(i_base_sel_object_addr4)
label(i_base_sel_object_addr5)
label(i_base_sel_object_addr6)
label(i_base_sel_object_addr7)
label(i_base_sel_object_addr8)
label(i_base_sel_object_addr9)
label(i_base_sel_object_addr10)
label(is_reset_data1)

newmem:
  cmp qword ptr [i_rbp_tmp], 0
  jne check_same_obj
  mov [i_rbp_tmp], rbp

check_same_obj:
  cmp qword ptr [i_rbp_tmp], rbp
  je do_start
  jmp clear_data2

  cmp dword ptr [is_reset_data1], 1
  jne do_start

clear_data2:
  mov qword ptr [i_base_sel_object_addr1], 0
  mov qword ptr [i_base_sel_object_addr2], 0
  mov qword ptr [i_base_sel_object_addr3], 0
  mov qword ptr [i_base_sel_object_addr4], 0
  mov qword ptr [i_base_sel_object_addr5], 0
  mov qword ptr [i_base_sel_object_addr6], 0
  mov qword ptr [i_base_sel_object_addr7], 0
  mov qword ptr [i_base_sel_object_addr8], 0
  mov qword ptr [i_base_sel_object_addr9], 0
  mov qword ptr [i_base_sel_object_addr10], 0
  mov dword ptr [is_reset_data1], 0
  mov qword ptr [i_rbp_tmp], rbp

do_start:
  push r15

  lea r15, [rax+rcx*4+20]
  cmp [r15], 0
  je endp

check1:
  cmp [i_base_sel_object_addr1], r15
  je endp

  cmp qword ptr [i_base_sel_object_addr1], 0
  jne check2
  mov [i_base_sel_object_addr1], r15
  jmp endp

check2:
  cmp [i_base_sel_object_addr2], r15
  je endp

  cmp qword ptr [i_base_sel_object_addr2], 0
  jne check3
  mov [i_base_sel_object_addr2], r15
  jmp endp

check3:
  cmp [i_base_sel_object_addr3], r15
  je endp

  cmp qword ptr [i_base_sel_object_addr3], 0
  jne check4
  mov [i_base_sel_object_addr3], r15
  jmp endp

check4:
  cmp [i_base_sel_object_addr4], r15
  je endp

  cmp qword ptr [i_base_sel_object_addr4], 0
  jne check5
  mov [i_base_sel_object_addr4], r15
  jmp endp

check5:
  cmp [i_base_sel_object_addr5], r15
  je endp

  cmp qword ptr [i_base_sel_object_addr5], 0
  jne check6
  mov [i_base_sel_object_addr5], r15
  jmp endp

check6:
  cmp [i_base_sel_object_addr6], r15
  je endp

  cmp qword ptr [i_base_sel_object_addr6], 0
  jne check7
  mov [i_base_sel_object_addr6], r15
  jmp endp


check7:
  cmp [i_base_sel_object_addr7], r15
  je endp

  cmp qword ptr [i_base_sel_object_addr7], 0
  jne check8
  mov [i_base_sel_object_addr7], r15
  jmp endp


check8:
  cmp [i_base_sel_object_addr8], r15
  je endp

  cmp qword ptr [i_base_sel_object_addr8], 0
  jne check9
  mov [i_base_sel_object_addr8], r15
  jmp endp


check9:
  cmp [i_base_sel_object_addr9], r15
  je endp

  cmp qword ptr [i_base_sel_object_addr9], 0
  jne check10
  mov [i_base_sel_object_addr9], r15
  jmp endp

check10:
  cmp [i_base_sel_object_addr10], r15
  je endp

  cmp qword ptr [i_base_sel_object_addr10], 0
  jne endp
  mov [i_base_sel_object_addr10], r15
  jmp endp

endp:

  pop r15

code:
  mov eax,[rax+rcx*4+20]
  mov [rdx+rcx*4+20],eax
  jmp return
align 10 cc
  i_rbp_tmp:
  dq 0
  i_base_sel_object_addr1:
  dq 0
  i_base_sel_object_addr2:
  dq 0
  i_base_sel_object_addr3:
  dq 0
  i_base_sel_object_addr4:
  dq 0
  i_base_sel_object_addr5:
  dq 0
  i_base_sel_object_addr6:
  dq 0
  i_base_sel_object_addr7:
  dq 0
  i_base_sel_object_addr8:
  dq 0
  i_base_sel_object_addr9:
  dq 0
  i_base_sel_object_addr10:
  dq 0
  is_reset_data1:
  dd 0


INJECT_SELECTED_OBJECT:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_SELECTED_OBJECT)
registersymbol(i_base_sel_object_addr1)
registersymbol(i_base_sel_object_addr2)
registersymbol(i_base_sel_object_addr3)
registersymbol(i_base_sel_object_addr4)
registersymbol(i_base_sel_object_addr5)
registersymbol(i_base_sel_object_addr6)
registersymbol(i_base_sel_object_addr7)
registersymbol(i_base_sel_object_addr8)
registersymbol(i_base_sel_object_addr9)
registersymbol(i_base_sel_object_addr10)
registersymbol(is_reset_data1)

[DISABLE]

INJECT_SELECTED_OBJECT:
  db 8B 44 88 20 89 44 8A 20

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+4B1845

GameAssembly.dll+4B1823: 48 8B 86 98 00 00 00  - mov rax,[rsi+00000098]
GameAssembly.dll+4B182A: 48 85 C0              - test rax,rax
GameAssembly.dll+4B182D: 74 4D                 - je GameAssembly.dll+4B187C
GameAssembly.dll+4B182F: 3B 48 18              - cmp ecx,[rax+18]
GameAssembly.dll+4B1832: 73 5E                 - jae GameAssembly.dll+4B1892
GameAssembly.dll+4B1834: 48 8B 97 98 00 00 00  - mov rdx,[rdi+00000098]
GameAssembly.dll+4B183B: 48 85 D2              - test rdx,rdx
GameAssembly.dll+4B183E: 74 3C                 - je GameAssembly.dll+4B187C
GameAssembly.dll+4B1840: 3B 4A 18              - cmp ecx,[rdx+18]
GameAssembly.dll+4B1843: 73 3D                 - jae GameAssembly.dll+4B1882
// ---------- INJECTING HERE ----------
GameAssembly.dll+4B1845: 8B 44 88 20           - mov eax,[rax+rcx*4+20]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+4B1849: 89 44 8A 20           - mov [rdx+rcx*4+20],eax
GameAssembly.dll+4B184D: FF C1                 - inc ecx
GameAssembly.dll+4B184F: 83 F9 65              - cmp ecx,65
GameAssembly.dll+4B1852: 7C CF                 - jl GameAssembly.dll+4B1823
GameAssembly.dll+4B1854: 8B 86 A0 00 00 00     - mov eax,[rsi+000000A0]
GameAssembly.dll+4B185A: 48 8B 5C 24 38        - mov rbx,[rsp+38]
GameAssembly.dll+4B185F: 89 87 A0 00 00 00     - mov [rdi+000000A0],eax
GameAssembly.dll+4B1865: 8B 86 A4 00 00 00     - mov eax,[rsi+000000A4]
GameAssembly.dll+4B186B: 48 8B 74 24 40        - mov rsi,[rsp+40]
GameAssembly.dll+4B1870: 89 87 A4 00 00 00     - mov [rdi+000000A4],eax
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>37</ID>
                  <Description>"1. Pause game"</Description>
                  <Color>8000FF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>21</ID>
                  <Description>"2. Select object"</Description>
                  <Color>8000FF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>39</ID>
                  <Description>"3. Up to 10 values for single object"</Description>
                  <Color>8000FF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>55</ID>
                  <Description>"4. Data refresh speed is fast"</Description>
                  <Color>8000FF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>26</ID>
                  <Description>"Reset data?"</Description>
                  <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>C08000</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>is_reset_data1</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>12</ID>
                  <Description>"Number 1"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr1</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>23</ID>
                  <Description>"Number 2"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>22</ID>
                  <Description>"Number 3"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr3</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>24</ID>
                  <Description>"Number 4"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr4</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>25</ID>
                  <Description>"Number 5"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr5</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>31</ID>
                  <Description>"Number 6"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr6</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>32</ID>
                  <Description>"Number 7"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr7</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>33</ID>
                  <Description>"Number 8"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr8</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>34</ID>
                  <Description>"Number 9"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr9</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>35</ID>
                  <Description>"Number 10"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr10</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>40</ID>
              <Description>"Selected resource, type 2"</Description>
              <Options moHideChildren="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript Async="1">{ Game   : Farthest Frontier.exe
  Version: 
  Date   : 2023-01-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_SELECTED_OBJECT2,GameAssembly.dll,8B 44 88 20 89 44 8A 20 FF) // should be unique
alloc(newmem,$1000,INJECT_SELECTED_OBJECT2)

label(code)
label(return)
label(i_base_sel_object_addr2_1)
label(is_reset_data2)

newmem:
  cmp qword ptr [i_rbp_tmp], 0
  jne check_same_obj
  mov [i_rbp_tmp], rbp

check_same_obj:
  cmp qword ptr [i_rbp_tmp], rbp
  je do_start
  jmp clear_data2


  cmp dword ptr [is_reset_data2], 1
  jne do_start

clear_data2:
  push r15
  push r14
  xor r14, r14


clear_loop:
  mov r15, i_base_sel_object_addr2_1
  lea r15, [r15+r14d*8]
  mov qword ptr [r15], 0
  inc r14d
  cmp r14d, 40
  jb clear_loop

  mov dword ptr [is_reset_data2], 0
  mov dword ptr [i_idx], 0

endp_c:
  pop r14
  pop r15
  mov qword ptr [i_rbp_tmp], rbp

do_start:
  push r15
  push r14
  push r13

  xor r13, r13

  lea r15, [rax+rcx*4+20]
  cmp [r15], 0
  je endp

check_loop:
  cmp r13d, 40
  jae end_loop

  mov r14, i_base_sel_object_addr2_1
  lea r14, [r14+r13d*8]

  cmp qword ptr [r14], 0
  jne next1
  mov [r14], r15
  inc r13d
  jmp end_loop


next1:
  cmp qword ptr [r14], r15
  je end_loop


next_loop:
  inc r13d
  cmp r13d, 40
  jae end_loop
  jmp check_loop

end_loop:
  cmp r13d, 40
  jb endp
  mov r13d, 40

endp:
  pop r13
  pop r14
  pop r15

code:
  mov eax,[rax+rcx*4+20]
  mov [rdx+rcx*4+20],eax
  jmp return
align 10 cc
  is_reset_data2:
  dd 0
  i_idx:
  dd 0
  i_rbp_tmp:
  dq 0
  i_base_sel_object_addr2_1:
  dq 0
  align 100 0
  db 0
  align 100 0
  db 0
  align 100 0
  db 0
  align 100 0
  db 0
  align 100 0
  db 0

INJECT_SELECTED_OBJECT2:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_SELECTED_OBJECT2)
registersymbol(i_base_sel_object_addr2_1)
registersymbol(is_reset_data2)

[DISABLE]

INJECT_SELECTED_OBJECT2:
  db 8B 44 88 20 89 44 8A 20

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+4B1845

GameAssembly.dll+4B1823: 48 8B 86 98 00 00 00  - mov rax,[rsi+00000098]
GameAssembly.dll+4B182A: 48 85 C0              - test rax,rax
GameAssembly.dll+4B182D: 74 4D                 - je GameAssembly.dll+4B187C
GameAssembly.dll+4B182F: 3B 48 18              - cmp ecx,[rax+18]
GameAssembly.dll+4B1832: 73 5E                 - jae GameAssembly.dll+4B1892
GameAssembly.dll+4B1834: 48 8B 97 98 00 00 00  - mov rdx,[rdi+00000098]
GameAssembly.dll+4B183B: 48 85 D2              - test rdx,rdx
GameAssembly.dll+4B183E: 74 3C                 - je GameAssembly.dll+4B187C
GameAssembly.dll+4B1840: 3B 4A 18              - cmp ecx,[rdx+18]
GameAssembly.dll+4B1843: 73 3D                 - jae GameAssembly.dll+4B1882
// ---------- INJECTING HERE ----------
GameAssembly.dll+4B1845: 8B 44 88 20           - mov eax,[rax+rcx*4+20]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+4B1849: 89 44 8A 20           - mov [rdx+rcx*4+20],eax
GameAssembly.dll+4B184D: FF C1                 - inc ecx
GameAssembly.dll+4B184F: 83 F9 65              - cmp ecx,65
GameAssembly.dll+4B1852: 7C CF                 - jl GameAssembly.dll+4B1823
GameAssembly.dll+4B1854: 8B 86 A0 00 00 00     - mov eax,[rsi+000000A0]
GameAssembly.dll+4B185A: 48 8B 5C 24 38        - mov rbx,[rsp+38]
GameAssembly.dll+4B185F: 89 87 A0 00 00 00     - mov [rdi+000000A0],eax
GameAssembly.dll+4B1865: 8B 86 A4 00 00 00     - mov eax,[rsi+000000A4]
GameAssembly.dll+4B186B: 48 8B 74 24 40        - mov rsi,[rsp+40]
GameAssembly.dll+4B1870: 89 87 A4 00 00 00     - mov [rdi+000000A4],eax
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>41</ID>
                  <Description>"1. Pause game"</Description>
                  <Color>8000FF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>42</ID>
                  <Description>"2. Select object"</Description>
                  <Color>8000FF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>43</ID>
                  <Description>"3. Up to 64 values for single object"</Description>
                  <Color>8000FF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>56</ID>
                  <Description>"4. Data refresh speed is slower (~ 5 seconds)"</Description>
                  <Color>8000FF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>45</ID>
                  <Description>"Number 1"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>46</ID>
                  <Description>"Number 2"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+8</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>47</ID>
                  <Description>"Number 3"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+10</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>48</ID>
                  <Description>"Number 4"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+18</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>49</ID>
                  <Description>"Number 5"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+20</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>50</ID>
                  <Description>"Number 6"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+28</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>51</ID>
                  <Description>"Number 7"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+30</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>52</ID>
                  <Description>"Number 8"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+38</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>53</ID>
                  <Description>"Number 9"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+40</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>54</ID>
                  <Description>"Number 10"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+48</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>57</ID>
                  <Description>"Number 11"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+50</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>58</ID>
                  <Description>"Number 12"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+58</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>59</ID>
                  <Description>"Number 13"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+60</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>60</ID>
                  <Description>"Number 14"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+68</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>61</ID>
                  <Description>"Number 15"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+70</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>62</ID>
                  <Description>"Number 16"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+78</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>63</ID>
                  <Description>"Number 17"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+80</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>64</ID>
                  <Description>"Number 18"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+88</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>65</ID>
                  <Description>"Number 19"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+90</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>66</ID>
                  <Description>"Number 20"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+98</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>67</ID>
                  <Description>"Number 21"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+A0</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>68</ID>
                  <Description>"Number 22"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+A8</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>69</ID>
                  <Description>"Number 23"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+B0</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>70</ID>
                  <Description>"Number 24"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+B8</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>71</ID>
                  <Description>"Number 25"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+C0</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>72</ID>
                  <Description>"Number 26"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+C8</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>73</ID>
                  <Description>"Number 27"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+D0</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>74</ID>
                  <Description>"Number 28"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+D8</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>75</ID>
                  <Description>"Number 29"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+E0</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>76</ID>
                  <Description>"Number 30"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+E8</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>77</ID>
                  <Description>"Number 31"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+F0</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>78</ID>
                  <Description>"Number 32"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+F8</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>79</ID>
                  <Description>"Number 33"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+100</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>80</ID>
                  <Description>"Number 34"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+108</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>81</ID>
                  <Description>"Number 35"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+110</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>82</ID>
                  <Description>"Number 36"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+118</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>83</ID>
                  <Description>"Number 37"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+120</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>84</ID>
                  <Description>"Number 38"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+128</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>85</ID>
                  <Description>"Number 39"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+130</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>86</ID>
                  <Description>"Number 40"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+138</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>87</ID>
                  <Description>"Number 41"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+140</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>88</ID>
                  <Description>"Number 42"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+148</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>89</ID>
                  <Description>"Number 43"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+150</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>90</ID>
                  <Description>"Number 44"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+158</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>91</ID>
                  <Description>"Number 45"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+160</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>92</ID>
                  <Description>"Number 46"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+168</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>93</ID>
                  <Description>"Number 47"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+170</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>94</ID>
                  <Description>"Number 48"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+178</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>95</ID>
                  <Description>"Number 49"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+180</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>96</ID>
                  <Description>"Number 50"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+188</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>97</ID>
                  <Description>"Number 51"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+190</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>98</ID>
                  <Description>"Number 52"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+198</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>99</ID>
                  <Description>"Number 53"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+1A0</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>100</ID>
                  <Description>"Number 54"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+1A8</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>101</ID>
                  <Description>"Number 55"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+1B0</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>102</ID>
                  <Description>"Number 56"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+1B8</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>103</ID>
                  <Description>"Number 57"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+1C0</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>104</ID>
                  <Description>"Number 58"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+1C8</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>105</ID>
                  <Description>"Number 59"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+1D0</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>106</ID>
                  <Description>"Number 60"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+1D8</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>107</ID>
                  <Description>"Number 61"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+1E0</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>108</ID>
                  <Description>"Number 62"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+1E8</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>109</ID>
                  <Description>"Number 63"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+1F0</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>110</ID>
                  <Description>"Number 64"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_sel_object_addr2_1+1F8</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>119</ID>
          <Description>"_WIP"</Description>
          <Options moHideChildren="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>118</ID>
              <Description>"UIBuildingInfoWindowTradingPost.UpdateGoldDisplays "</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Farthest Frontier.exe
  Version: 
  Date   : 2023-01-12
  Author :
}

[ENABLE]

aobscanmodule(INJECT_T1,GameAssembly.dll,41 03 44 88 20 83 FA 65) // should be unique
alloc(newmem,$1000,INJECT_T1)

label(code)
label(return)

newmem:
  push r15
  lea r15, [r8+rcx*4+20]
  lea r15, [r8+rcx*4+20]

endp:
  pop r15


code:
  add eax,[r8+rcx*4+20]
  jmp return

INJECT_T1:
  jmp newmem
return:
registersymbol(INJECT_T1)

[DISABLE]

INJECT_T1:
  db 41 03 44 88 20

unregistersymbol(INJECT_T1)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+4B1A0F

ItemBundle.get_numberOfItems: 48 83 EC 28           - sub rsp,28
GameAssembly.dll+4B19F4: 4C 8B 81 98 00 00 00  - mov r8,[rcx+00000098]
GameAssembly.dll+4B19FB: 33 C0                 - xor eax,eax
GameAssembly.dll+4B19FD: 8D 50 01              - lea edx,[rax+01]
GameAssembly.dll+4B1A00: 4D 85 C0              - test r8,r8
GameAssembly.dll+4B1A03: 74 19                 - je GameAssembly.dll+4B1A1E
GameAssembly.dll+4B1A05: 41 3B 50 18           - cmp edx,[r8+18]
GameAssembly.dll+4B1A09: 73 19                 - jae GameAssembly.dll+4B1A24
GameAssembly.dll+4B1A0B: 8B CA                 - mov ecx,edx
GameAssembly.dll+4B1A0D: FF C2                 - inc edx
// ---------- INJECTING HERE ----------
GameAssembly.dll+4B1A0F: 41 03 44 88 20        - add eax,[r8+rcx*4+20]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+4B1A14: 83 FA 65              - cmp edx,65
GameAssembly.dll+4B1A17: 7C E7                 - jl GameAssembly.dll+4B1A00
GameAssembly.dll+4B1A19: 48 83 C4 28           - add rsp,28
GameAssembly.dll+4B1A1D: C3                    - ret 
GameAssembly.dll+4B1A1E: E8 7D 63 D5 FF        - call GameAssembly.dll+207DA0
GameAssembly.dll+4B1A23: CC                    - int 3 
GameAssembly.dll+4B1A24: E8 87 5F D5 FF        - call GameAssembly.dll+2079B0
GameAssembly.dll+4B1A29: 48 8B C8              - mov rcx,rax
GameAssembly.dll+4B1A2C: 33 D2                 - xor edx,edx
GameAssembly.dll+4B1A2E: E8 2D 63 D5 FF        - call GameAssembly.dll+207D60
}
</AssemblerScript>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>28</ID>
      <Description>"Farthest Frontier v0.8.0  /  https://opencheattables.com  /  CE 7.4+"</Description>
      <Color>800080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <LuaScript>--[[
from https://forum.cheatengine.org/viewtopic.php?p=5659739&amp;sid=72bd2d145c30bf0d344304bce17ea990#5659739
FauDrei
--]]
function toHex(num)
    if num == 0 then
        return '0'
    end
    local neg = false
    if num &lt; 0 then
        neg = true
        num = num * -1
    end
    local hexstr = "0123456789ABCDEF"
    local result = ""
    while num &gt; 0 do
        local n = math.mod(num, 16)
        result = string.sub(hexstr, n + 1, n + 1) .. result
        num = math.floor(num / 16)
    end
    if neg then
        result = '-' .. result
    end
    return result
end


function reEscape(s)
  local escPatChars = [[().%+-*?[^]]
  s = s:gsub('.',function(c) if escPatChars:find(c,1,true) then return '%'..c end end)
  return s
end

function findMethodAddrBySignature(namespace,classname,methodname,signature,check)
  local meth = findMethodBySignature(namespace,classname,methodname,signature,check)
  if meth~=nil and meth&gt;0 then
    return mono_compile_method(meth)
  end
end

function findMethodBySignature(namespace,classname,methodname,signature,check)
  assert(type(signature)=='string',"invalid signature")
  signature="^"..reEscape(signature:gsub(";",","))
  local class = mono_findClass(namespace,classname)
  if type(class)~='number' or class==0 then return nil end
  local methods=mono_class_enumMethods(class)
  if type(methods)~='table' or #methods&lt;1 then return nil end
  if check then  print('check:'..methodname..": &lt;"..signature.."&gt; vs ") end
  for i=1,#methods do
   if methodname == methods[i].name then
     local sign = mono_method_getSignature(methods[i].method)
     if check then  print("  &gt;&gt; &lt;"..sign..'&gt;') end
     if sign:match(signature) then
       return methods[i].method
     end
   end
  end
end

--registerLuaFunctionHighlight('tohex')
registerLuaFunctionHighlight('toHex')
registerLuaFunctionHighlight('reEscape')
registerLuaFunctionHighlight('findMethodAddrBySignature')
registerLuaFunctionHighlight('findMethodBySignature')

</LuaScript>
</CheatTable>
