<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <CheatEntries>
    <CheatEntry>
      <ID>18</ID>
      <Description>"Init. (Enable after game save loaded)"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$asm}
//define(maindll, "????")
define(game_exp2, "GameCore_XP2_FinalRelease.dll")
define(game_exp1, "GameCore_XP1_FinalRelease.dll")
define(game_exp0, "GameCore_Base_FinalRelease.dll")

//registersymbol(maindll)
registersymbol(game_exp2)
registersymbol(game_exp1)
registersymbol(game_exp0)



[DISABLE]
{$asm}
unregistersymbol(maindll)
unregistersymbol(game_exp2)
unregistersymbol(game_exp1)
unregistersymbol(game_exp0)


</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>19</ID>
          <Description>"init. 2 "</Description>
          <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
{$lua}
if syntaxcheck then return end
--if memrec then print(memrec.Description) end

if ( getAddressSafe("game_exp2") ~= nil ) then
  registerSymbol("maindll", "GameCore_XP2_FinalRelease.dll")
end

if getAddressSafe("game_exp0") ~= nil then
  registerSymbol("maindll", "GameCore_Base_FinalRelease.dll")
end

if getAddressSafe("game_exp1") ~= nil then
  registerSymbol("maindll", "GameCore_XP1_FinalRelease.dll")
end

 
[DISABLE]
{$asm}
unregistersymbol(maindll)
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>20</ID>
              <Description>"Research speed multiplier"</Description>
              <Options moHideChildren="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript Async="1">{ Game   : CivilizationVI_DX12.exe
  Version: 
  Date   : 2022-11-16
  Author : bbfox@http://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_RESEARCH_MULTI,maindll,41 89 04 0F 8B CF) // should be unique
alloc(newmem,$1000,INJECT_RESEARCH_MULTI)

label(code)
label(return)
label(vf_research_multi)
label(i_last_research_addr)

newmem:
  cmp word ptr [rsi+58], 0
  jne code
  vmovss xmm14, [vf_research_multi]
  cvtsi2ss xmm15, eax
  vmulss xmm15, xmm15, xmm14
  vcvtss2si eax, xmm15
  push r14
  lea r14, [r15+rcx]
  mov [i_last_research_addr], r14
  pop r14
  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
code:
  mov [r15+rcx],eax
  mov ecx,edi
  jmp return
align 10 cc
  vf_research_multi:
  dd (float)1.5
  i_last_research_addr:
  dq 0
INJECT_RESEARCH_MULTI:
  jmp newmem
  nop
return:
registersymbol(INJECT_RESEARCH_MULTI)
registersymbol(vf_research_multi)
registersymbol(i_last_research_addr)
[DISABLE]

INJECT_RESEARCH_MULTI:
  db 41 89 04 0F 8B CF

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameCore_XP2_FinalRelease.dll+3338D2

GameCore_XP2_FinalRelease.dll+33389B: 4C 89 A4 24 40 02 00 00  - mov [rsp+00000240],r12
GameCore_XP2_FinalRelease.dll+3338A3: 48 8D 8E 78 01 00 00     - lea rcx,[rsi+00000178]
GameCore_XP2_FinalRelease.dll+3338AA: 4C 89 B4 24 48 02 00 00  - mov [rsp+00000248],r14
GameCore_XP2_FinalRelease.dll+3338B2: 4C 89 BC 24 10 02 00 00  - mov [rsp+00000210],r15
GameCore_XP2_FinalRelease.dll+3338BA: E8 81 FA 1A 00           - call GameCore_XP2_FinalRelease.dll+4E3340
GameCore_XP2_FinalRelease.dll+3338BF: 48 63 CF                 - movsxd  rcx,edi
GameCore_XP2_FinalRelease.dll+3338C2: 45 32 E4                 - xor r12b,r12b
GameCore_XP2_FinalRelease.dll+3338C5: 4C 8D 3C 8D 00 00 00 00  - lea r15,[rcx*4+00000000]
GameCore_XP2_FinalRelease.dll+3338CD: 48 8B 08                 - mov rcx,[rax]
GameCore_XP2_FinalRelease.dll+3338D0: 8B 03                    - mov eax,[rbx]
// ---------- INJECTING HERE ----------
GameCore_XP2_FinalRelease.dll+3338D2: 41 89 04 0F              - mov [r15+rcx],eax
// ---------- DONE INJECTING  ----------
GameCore_XP2_FinalRelease.dll+3338D6: 8B CF                    - mov ecx,edi
GameCore_XP2_FinalRelease.dll+3338D8: E8 93 D3 E7 FF           - call GameCore_XP2_FinalRelease.dll+1B0C70
GameCore_XP2_FinalRelease.dll+3338DD: 8B D8                    - mov ebx,eax
GameCore_XP2_FinalRelease.dll+3338DF: E8 1C D5 F1 FF           - call GameCore_XP2_FinalRelease.dll+250E00
GameCore_XP2_FinalRelease.dll+3338E4: 48 8B C8                 - mov rcx,rax
GameCore_XP2_FinalRelease.dll+3338E7: 45 33 C0                 - xor r8d,r8d
GameCore_XP2_FinalRelease.dll+3338EA: 8B D3                    - mov edx,ebx
GameCore_XP2_FinalRelease.dll+3338EC: E8 7F D6 F1 FF           - call GameCore_XP2_FinalRelease.dll+250F70
GameCore_XP2_FinalRelease.dll+3338F1: 48 8B 96 88 01 00 00     - mov rdx,[rsi+00000188]
GameCore_XP2_FinalRelease.dll+3338F8: C1 E0 08                 - shl eax,08
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>21</ID>
                  <Description>"Multiplier"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>C08000</Color>
                  <VariableType>Float</VariableType>
                  <Address>vf_research_multi</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>47</ID>
                  <Description>"Last research"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_last_research_addr</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>16</ID>
              <Description>"Research complete in one turn"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : CivilizationVI_DX12.exe
  Version: 
  Date   : 2022-11-16
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

//aobscanmodule(INJECT_FAST_RESEARCH,GameCore_XP2_FinalRelease.dll,48 8B 96 88 01 00 00 C1) // should be unique
aobscanmodule(INJECT_FAST_RESEARCH,maindll,48 8B 96 88 01 00 00 C1) // should be unique
alloc(newmem,$1000,INJECT_FAST_RESEARCH)

label(code)
label(return)

newmem:
  cmp word ptr [rsi+58], 0
  jne code
  mov rdx,[rsi+00000188] // select research index. rdx = research record base address, r15 = selector
  push rbx
  mov rbx, rax
  shl ebx, 8
  mov [r15+rdx], ebx
  pop rbx

code:
  mov rdx,[rsi+00000188]
  jmp return

INJECT_FAST_RESEARCH:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_FAST_RESEARCH)

[DISABLE]

INJECT_FAST_RESEARCH:
  db 48 8B 96 88 01 00 00

unregistersymbol(INJECT_FAST_RESEARCH)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameCore_XP2_FinalRelease.dll+3338F1

GameCore_XP2_FinalRelease.dll+3338D0: 8B 03                 - mov eax,[rbx]
GameCore_XP2_FinalRelease.dll+3338D2: 41 89 04 0F           - mov [r15+rcx],eax
GameCore_XP2_FinalRelease.dll+3338D6: 8B CF                 - mov ecx,edi
GameCore_XP2_FinalRelease.dll+3338D8: E8 93 D3 E7 FF        - call GameCore_XP2_FinalRelease.dll+1B0C70
GameCore_XP2_FinalRelease.dll+3338DD: 8B D8                 - mov ebx,eax
GameCore_XP2_FinalRelease.dll+3338DF: E8 1C D5 F1 FF        - call GameCore_XP2_FinalRelease.dll+250E00
GameCore_XP2_FinalRelease.dll+3338E4: 48 8B C8              - mov rcx,rax
GameCore_XP2_FinalRelease.dll+3338E7: 45 33 C0              - xor r8d,r8d
GameCore_XP2_FinalRelease.dll+3338EA: 8B D3                 - mov edx,ebx
GameCore_XP2_FinalRelease.dll+3338EC: E8 7F D6 F1 FF        - call GameCore_XP2_FinalRelease.dll+250F70
// ---------- INJECTING HERE ----------
GameCore_XP2_FinalRelease.dll+3338F1: 48 8B 96 88 01 00 00  - mov rdx,[rsi+00000188]
// ---------- DONE INJECTING  ----------
GameCore_XP2_FinalRelease.dll+3338F8: C1 E0 08              - shl eax,08
GameCore_XP2_FinalRelease.dll+3338FB: 41 39 04 17           - cmp [r15+rdx],eax
GameCore_XP2_FinalRelease.dll+3338FF: 0F 8C 56 02 00 00     - jl GameCore_XP2_FinalRelease.dll+333B5B
GameCore_XP2_FinalRelease.dll+333905: 41 B0 01              - mov r8b,01
GameCore_XP2_FinalRelease.dll+333908: 8B D7                 - mov edx,edi
GameCore_XP2_FinalRelease.dll+33390A: 48 8B CE              - mov rcx,rsi
GameCore_XP2_FinalRelease.dll+33390D: E8 1E 09 00 00        - call GameCore_XP2_FinalRelease.dll+334230
GameCore_XP2_FinalRelease.dll+333912: 48 8D 8E 78 01 00 00  - lea rcx,[rsi+00000178]
GameCore_XP2_FinalRelease.dll+333919: E8 22 FA 1A 00        - call GameCore_XP2_FinalRelease.dll+4E3340
GameCore_XP2_FinalRelease.dll+33391E: 45 33 F6              - xor r14d,r14d
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>24</ID>
              <Description>"Get faith"</Description>
              <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript Async="1">{ Game   : CivilizationVI_DX12.exe
  Version: 
  Date   : 2022-11-16
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_FAITH,maindll,39 81 B0 00 00 00 74) // should be unique
alloc(newmem,$1000,INJECT_GET_FAITH)

label(code)
label(return)
label(i_base_faith_addr)
label(i_faith_display)

newmem:
  mov [i_base_faith_addr], rcx
  push rbx
  xor rbx, rbx
  mov ebx, eax
  sar ebx, 8
  mov [i_faith_display], ebx
  pop rbx

code:
  cmp [rcx+000000B0],eax
  jmp return
align 10 cc
  i_base_faith_addr:
  dq 0
  i_faith_display:
  dd 0
INJECT_GET_FAITH:
  jmp newmem
  nop
return:
registersymbol(INJECT_GET_FAITH)
registersymbol(i_base_faith_addr)
registersymbol(i_faith_display)

[DISABLE]

INJECT_GET_FAITH:
  db 39 81 B0 00 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameCore_XP2_FinalRelease.dll+3134D2

GameCore_XP2_FinalRelease.dll+3134BC: CC                    - int 3 
GameCore_XP2_FinalRelease.dll+3134BD: CC                    - int 3 
GameCore_XP2_FinalRelease.dll+3134BE: CC                    - int 3 
GameCore_XP2_FinalRelease.dll+3134BF: CC                    - int 3 
GameCore_XP2_FinalRelease.dll+3134C0: 48 89 5C 24 10        - mov [rsp+10],rbx
GameCore_XP2_FinalRelease.dll+3134C5: 57                    - push rdi
GameCore_XP2_FinalRelease.dll+3134C6: 48 83 EC 20           - sub rsp,20
GameCore_XP2_FinalRelease.dll+3134CA: 8B 02                 - mov eax,[rdx]
GameCore_XP2_FinalRelease.dll+3134CC: 48 8B FA              - mov rdi,rdx
GameCore_XP2_FinalRelease.dll+3134CF: 48 8B D9              - mov rbx,rcx
// ---------- INJECTING HERE ----------
GameCore_XP2_FinalRelease.dll+3134D2: 39 81 B0 00 00 00     - cmp [rcx+000000B0],eax
// ---------- DONE INJECTING  ----------
GameCore_XP2_FinalRelease.dll+3134D8: 74 6B                 - je GameCore_XP2_FinalRelease.dll+313545
GameCore_XP2_FinalRelease.dll+3134DA: 44 0F B6 44 24 30     - movzx r8d,byte ptr [rsp+30]
GameCore_XP2_FinalRelease.dll+3134E0: 48 81 C1 A0 00 00 00  - add rcx,000000A0
GameCore_XP2_FinalRelease.dll+3134E7: E8 F4 F9 10 00        - call GameCore_XP2_FinalRelease.dll+422EE0
GameCore_XP2_FinalRelease.dll+3134EC: 8B 07                 - mov eax,[rdi]
GameCore_XP2_FinalRelease.dll+3134EE: 4C 8D 44 24 30        - lea r8,[rsp+30]
GameCore_XP2_FinalRelease.dll+3134F3: 48 8B 93 90 00 00 00  - mov rdx,[rbx+00000090]
GameCore_XP2_FinalRelease.dll+3134FA: 89 44 24 30           - mov [rsp+30],eax
GameCore_XP2_FinalRelease.dll+3134FE: 48 8B 05 93 34 87 00  - mov rax,[GameCore_XP2_FinalRelease.dll+B86998]
GameCore_XP2_FinalRelease.dll+313505: 8B 92 D8 00 00 00     - mov edx,[rdx+000000D8]
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>25</ID>
                  <Description>"Faith * 256"</Description>
                  <DropDownList DisplayValueAsItem="1">25600:100
256000:1000
</DropDownList>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_faith_addr</Address>
                  <Offsets>
                    <Offset>B0</Offset>
                  </Offsets>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>26</ID>
                      <Description>"Display value"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <Color>808080</Color>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_faith_display</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>27</ID>
              <Description>"Get Gold"</Description>
              <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript Async="1">{ Game   : CivilizationVI_DX12.exe
  Version: 
  Date   : 2022-11-17
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_GOLD,maindll,41 8B 86 A8 00 00 00 49) // should be unique
alloc(newmem,$1000,INJECT_GET_GOLD)

label(code)
label(return)
label(i_base_player_gold_addr)
label(i_player_base_addr)
label(i_gold_display)

newmem:
  cmp word ptr [r14+58], 0
  jne code

  push r15
{$try}
  mov r15, [r14+90]
  test r15, r15
  jmp no_error1
{$except}
  xor r15, r15
no_error1:
  test r15, r15
  pop r15
  jz code

  mov [i_base_player_gold_addr], r14

  push r15
  mov r15, [r14+90]
  mov [i_player_base_addr], r15
  mov r15d, [r14+000000A8]
  sar r15d, 8
  mov [i_gold_display], r15d

  pop r15

code:
  mov eax,[r14+000000A8]
  jmp return
align 10 cc
  i_base_player_gold_addr:
  dq 0
  i_player_base_addr:
  dq 0
  i_plyer_id:
  dw 0
  i_gold_display:
  dd 0
INJECT_GET_GOLD:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_GET_GOLD)
registersymbol(i_base_player_gold_addr)
registersymbol(i_player_base_addr)
registersymbol(i_gold_display)

[DISABLE]

INJECT_GET_GOLD:
  db 41 8B 86 A8 00 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A192

GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A167: CC                       - int 3 
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A168: 48 8B C8                 - mov rcx,rax
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A16B: E8 B0 6C 8C 00           - call GameCore_XP2_FinalRelease.HksCompilerSettings::setIntLiteralsEnabled+30
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A170: 48 8D 4D F8              - lea rcx,[rbp-08]
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A174: 48 C7 45 A8 0F 00 00 00  - mov qword ptr [rbp-58],0000000F
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A17C: 4C 89 65 A0              - mov [rbp-60],r12
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A180: 44 88 65 90              - mov [rbp-70],r12b
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A184: E8 07 D6 FA FF           - call GameCore_XP2_FinalRelease.dll+73BF0
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A189: 48 8D 4D C8              - lea rcx,[rbp-38]
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A18D: E8 FE D5 FA FF           - call GameCore_XP2_FinalRelease.dll+73BF0
// ---------- INJECTING HERE ----------
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A192: 41 8B 86 A8 00 00 00     - mov eax,[r14+000000A8]
// ---------- DONE INJECTING  ----------
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A199: 49 8B CE                 - mov rcx,r14
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A19C: 41 89 87 C8 00 00 00     - mov [r15+000000C8],eax
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A1A3: E8 A8 B4 27 00           - call GameCore_XP2_FinalRelease.dll+341AB0
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A1A8: 49 8B CE                 - mov rcx,r14
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A1AB: 41 89 87 CC 00 00 00     - mov [r15+000000CC],eax
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A1B2: E8 E9 B4 27 00           - call GameCore_XP2_FinalRelease.dll+341B00
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A1B7: 49 8B CE                 - mov rcx,r14
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A1BA: 41 89 87 D0 00 00 00     - mov [r15+000000D0],eax
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A1C1: E8 CA B5 27 00           - call GameCore_XP2_FinalRelease.dll+341BF0
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+A1C6: 41 89 87 D4 00 00 00     - mov [r15+000000D4],eax
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>29</ID>
                  <Description>"Active: end turn"</Description>
                  <Color>8000FF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>28</ID>
                  <Description>"Gold * 256 (affected after next turn)"</Description>
                  <DropDownList DisplayValueAsItem="1">2560000:10000
25600000:100000
</DropDownList>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_player_gold_addr</Address>
                  <Offsets>
                    <Offset>A8</Offset>
                  </Offsets>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>12</ID>
                      <Description>"Display value after turn changed"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <Color>808080</Color>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_gold_display</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>45</ID>
                  <Description>"_unknown"</Description>
                  <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
                  <Color>808080</Color>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>30</ID>
                      <Description>"PlayerBase"</Description>
                      <ShowAsHex>1</ShowAsHex>
                      <ShowAsSigned>0</ShowAsSigned>
                      <Color>808080</Color>
                      <VariableType>8 Bytes</VariableType>
                      <Address>i_player_base_addr</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>31</ID>
                      <Description>"GoldBase"</Description>
                      <ShowAsHex>1</ShowAsHex>
                      <ShowAsSigned>0</ShowAsSigned>
                      <Color>808080</Color>
                      <VariableType>8 Bytes</VariableType>
                      <Address>i_base_player_gold_addr</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>32</ID>
                      <Description>"???"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <Color>808080</Color>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_base_player_gold_addr</Address>
                      <Offsets>
                        <Offset>C8</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>33</ID>
                      <Description>"???"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <Color>808080</Color>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_base_player_gold_addr</Address>
                      <Offsets>
                        <Offset>CC</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>34</ID>
                      <Description>"???"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <Color>808080</Color>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_base_player_gold_addr</Address>
                      <Offsets>
                        <Offset>D0</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>35</ID>
                      <Description>"???"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <Color>808080</Color>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_base_player_gold_addr</Address>
                      <Offsets>
                        <Offset>D4</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>36</ID>
                      <Description>"???"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <Color>808080</Color>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_base_player_gold_addr</Address>
                      <Offsets>
                        <Offset>D8</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>37</ID>
                      <Description>"???"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <Color>808080</Color>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_base_player_gold_addr</Address>
                      <Offsets>
                        <Offset>DC</Offset>
                      </Offsets>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>38</ID>
              <Description>"(Expansion 2) Unit: when move:"</Description>
              <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : CivilizationVI_DX12.exe
  Version: 
  Date   : 2022-11-17
  Author : bbfox@https://opencheattables.com
}

[ENABLE]
aobscanmodule(INJECT_INF_UNIT_MOVE,maindll,48 8B 82 B8 0B 00 00 48) // should be unique
alloc(newmem,$1000,INJECT_INF_UNIT_MOVE)

label(code)
label(return)
label(is_inf_action)
label(is_min_hp)

newmem:
  cmp word ptr [rdx+60], 0
  jne code
  cmp dword ptr [rdx+4F0], 700
  ja check_inf_action
  push r15
  mov rax,[rdx+00000BB8]
  mov r15d, 700
  mov [rax+F0], r15d
  mov [rdx+4F0], r15d
  pop r15

check_inf_action:
  cmp dword ptr [is_inf_action], 1
  jne check_unit_hp
  mov dword ptr [rdx+508], 1

check_unit_hp:
  cmp dword ptr [is_min_hp], 1
  jne code
  cmp dword ptr [rdx+4C0], 10
  jbe code
  mov dword ptr [rdx+4C0], 10

code:
  mov rax,[rdx+00000BB8]
  jmp return
align 10 cc
  is_inf_action:
  dd 0
  is_min_hp:
  dd 1

INJECT_INF_UNIT_MOVE:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_INF_UNIT_MOVE)
registersymbol(is_inf_action)
registersymbol(is_min_hp)

[DISABLE]

INJECT_INF_UNIT_MOVE:
  db 48 8B 82 B8 0B 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameCore_XP2_FinalRelease.dll+657690

GameCore_XP2_FinalRelease.dll+657686: CC                    - int 3 
GameCore_XP2_FinalRelease.dll+657687: CC                    - int 3 
GameCore_XP2_FinalRelease.dll+657688: CC                    - int 3 
GameCore_XP2_FinalRelease.dll+657689: CC                    - int 3 
GameCore_XP2_FinalRelease.dll+65768A: CC                    - int 3 
GameCore_XP2_FinalRelease.dll+65768B: CC                    - int 3 
GameCore_XP2_FinalRelease.dll+65768C: CC                    - int 3 
GameCore_XP2_FinalRelease.dll+65768D: CC                    - int 3 
GameCore_XP2_FinalRelease.dll+65768E: CC                    - int 3 
GameCore_XP2_FinalRelease.dll+65768F: CC                    - int 3 
// ---------- INJECTING HERE ----------
GameCore_XP2_FinalRelease.dll+657690: 48 8B 82 B8 0B 00 00  - mov rax,[rdx+00000BB8]
// ---------- DONE INJECTING  ----------
GameCore_XP2_FinalRelease.dll+657697: 48 85 C0              - test rax,rax
GameCore_XP2_FinalRelease.dll+65769A: 74 0C                 - je GameCore_XP2_FinalRelease.dll+6576A8
GameCore_XP2_FinalRelease.dll+65769C: 83 B8 68 02 00 00 01  - cmp dword ptr [rax+00000268],01
GameCore_XP2_FinalRelease.dll+6576A3: 76 03                 - jna GameCore_XP2_FinalRelease.dll+6576A8
GameCore_XP2_FinalRelease.dll+6576A5: B0 01                 - mov al,01
GameCore_XP2_FinalRelease.dll+6576A7: C3                    - ret 
GameCore_XP2_FinalRelease.dll+6576A8: 32 C0                 - xor al,al
GameCore_XP2_FinalRelease.dll+6576AA: C3                    - ret 
GameCore_XP2_FinalRelease.dll+6576AB: CC                    - int 3 
GameCore_XP2_FinalRelease.dll+6576AC: CC                    - int 3 
}
// XP2:
// unit actions left
// rdx+4F0 (*256)
// rax = rdx+bb8
// rax+f0 (*256)
/// to-do
// find player ID? word ptr (rdx+60) = 0
// HP (minus): rdx+4c0

// XP1:
// unit actions left
// rdx+480 (*256)
// rax = rdx+a08
// rax+f0 (*256)
/// to-do
// find player ID? word ptr (rdx+60) = 0
// HP (minus): rdx+4c0
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>40</ID>
                  <Description>"inf. actions?"</Description>
                  <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>C08000</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>is_inf_action</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>41</ID>
                  <Description>"Keep min. HP as possible?"</Description>
                  <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>C08000</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>is_min_hp</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>55</ID>
              <Description>"(Base &amp; Expansion 1) Unit: when move:"</Description>
              <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : CivilizationVI_DX12.exe
  Version: 
  Date   : 2022-11-18
  Author : bbfox@https://opencheattables.com
}

[ENABLE]
aobscanmodule(INJECT_INF_UNIT_MOVE_BASE,maindll,48 8B 82 ?? ?? 00 00 48 85 C0 74 0C 83 B8 68 02 00 00 01) // should be unique
alloc(newmem,$1000,INJECT_INF_UNIT_MOVE_BASE)
alloc(INJECT_INF_UNIT_MOVE_BASEo,7)



label(code)
label(return)
label(is_inf_action)
label(is_min_hp)

INJECT_INF_UNIT_MOVE_BASEo:
  readmem(INJECT_INF_UNIT_MOVE_BASE, 7)

newmem:
  cmp word ptr [rdx+60], 0
  jne code
  cmp dword ptr [rdx+480], 700
  ja check_inf_action
  push r15
  //mov rax,[rdx+00000A08]  XP1
  //mov rax,[rdx+000009F0]  Base
  reassemble(INJECT_INF_UNIT_MOVE_BASE)
  mov r15d, 700
  mov [rax+F0], r15d
  mov [rdx+480], r15d
  pop r15

check_inf_action:
  cmp dword ptr [is_inf_action], 1
  jne check_unit_hp
  mov dword ptr [rdx+498], 1

check_unit_hp:
  cmp dword ptr [is_min_hp], 1
  jne code
  cmp dword ptr [rdx+450], 10
  jbe code
  mov dword ptr [rdx+450], 10

code:
  //mov rax,[rdx+000009F0] XP1
  //mov rax,[rdx+000009F0] base
  reassemble(INJECT_INF_UNIT_MOVE_BASE)
  jmp return
align 10 cc
  is_inf_action:
  dd 0
  is_min_hp:
  dd 1

INJECT_INF_UNIT_MOVE_BASE:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_INF_UNIT_MOVE_BASE)
registersymbol(is_inf_action)
registersymbol(is_min_hp)
registersymbol(INJECT_INF_UNIT_MOVE_BASEo)
[DISABLE]

INJECT_INF_UNIT_MOVE_BASE:
  //db 48 8B 82 F0 09 00 00
  readmem(INJECT_INF_UNIT_MOVE_BASEo,7)

unregistersymbol(*)
unregistersymbol(INJECT_INF_UNIT_MOVE_BASEo)
dealloc(newmem)
dealloc(INJECT_INF_UNIT_MOVE_BASEo)

{
// ORIGINAL CODE - INJECTION POINT: GameCore_Base_FinalRelease.dll+4DE300

GameCore_Base_FinalRelease.dll+4DE2F6: CC                    - int 3
GameCore_Base_FinalRelease.dll+4DE2F7: CC                    - int 3
GameCore_Base_FinalRelease.dll+4DE2F8: CC                    - int 3
GameCore_Base_FinalRelease.dll+4DE2F9: CC                    - int 3
GameCore_Base_FinalRelease.dll+4DE2FA: CC                    - int 3
GameCore_Base_FinalRelease.dll+4DE2FB: CC                    - int 3
GameCore_Base_FinalRelease.dll+4DE2FC: CC                    - int 3
GameCore_Base_FinalRelease.dll+4DE2FD: CC                    - int 3
GameCore_Base_FinalRelease.dll+4DE2FE: CC                    - int 3
GameCore_Base_FinalRelease.dll+4DE2FF: CC                    - int 3
// ---------- INJECTING HERE ----------
GameCore_Base_FinalRelease.dll+4DE300: 48 8B 82 F0 09 00 00  - mov rax,[rdx+000009F0]
// ---------- DONE INJECTING  ----------
GameCore_Base_FinalRelease.dll+4DE307: 48 85 C0              - test rax,rax
GameCore_Base_FinalRelease.dll+4DE30A: 74 0C                 - je GameCore_Base_FinalRelease.dll+4DE318
GameCore_Base_FinalRelease.dll+4DE30C: 83 B8 68 02 00 00 01  - cmp dword ptr [rax+00000268],01
GameCore_Base_FinalRelease.dll+4DE313: 76 03                 - jna GameCore_Base_FinalRelease.dll+4DE318
GameCore_Base_FinalRelease.dll+4DE315: B0 01                 - mov al,01
GameCore_Base_FinalRelease.dll+4DE317: C3                    - ret
GameCore_Base_FinalRelease.dll+4DE318: 32 C0                 - xor al,al
GameCore_Base_FinalRelease.dll+4DE31A: C3                    - ret
GameCore_Base_FinalRelease.dll+4DE31B: CC                    - int 3
GameCore_Base_FinalRelease.dll+4DE31C: CC                    - int 3
}

{
// ORIGINAL CODE - INJECTION POINT: GameCore_XP1_FinalRelease.dll+571BC0

GameCore_XP1_FinalRelease.dll+571BB6: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BB7: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BB8: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BB9: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BBA: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BBB: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BBC: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BBD: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BBE: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BBF: CC                    - int 3
// ---------- INJECTING HERE ----------
GameCore_XP1_FinalRelease.dll+571BC0: 48 8B 82 08 0A 00 00  - mov rax,[rdx+00000A08]
// ---------- DONE INJECTING  ----------
GameCore_XP1_FinalRelease.dll+571BC7: 48 85 C0              - test rax,rax
GameCore_XP1_FinalRelease.dll+571BCA: 74 0C                 - je GameCore_XP1_FinalRelease.dll+571BD8
GameCore_XP1_FinalRelease.dll+571BCC: 83 B8 68 02 00 00 01  - cmp dword ptr [rax+00000268],01
GameCore_XP1_FinalRelease.dll+571BD3: 76 03                 - jna GameCore_XP1_FinalRelease.dll+571BD8
GameCore_XP1_FinalRelease.dll+571BD5: B0 01                 - mov al,01
GameCore_XP1_FinalRelease.dll+571BD7: C3                    - ret
GameCore_XP1_FinalRelease.dll+571BD8: 32 C0                 - xor al,al
GameCore_XP1_FinalRelease.dll+571BDA: C3                    - ret
GameCore_XP1_FinalRelease.dll+571BDB: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BDC: CC                    - int 3
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>56</ID>
                  <Description>"inf. actions?"</Description>
                  <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>C08000</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>is_inf_action</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>57</ID>
                  <Description>"Keep min. HP as possible?"</Description>
                  <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>C08000</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>is_min_hp</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>43</ID>
              <Description>"Unit: XP multiplier"</Description>
              <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : CivilizationVI_DX12.exe
  Version: 
  Date   : 2022-11-18
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_UNIT_EXP_MULTI,maindll,45 01 7E 0C 4C 89 A4 24 B0 00 00 00) // should be unique
alloc(newmem,$1000,INJECT_UNIT_EXP_MULTI)

label(code)
label(return)
label(vf_xp_multi)
label(is_keep_lv1)

newmem:
  push r14
  mov r14, [r14]
  mov r14w, [r14+60]
  cmp r14w, 0
  pop r14
  jne code
  vmovss xmm14, [vf_xp_multi]
  cvtsi2ss xmm15, r15d
  vmulss xmm15, xmm15, xmm14
  vcvtss2si r15d, xmm15

  cmp dword ptr [is_keep_lv1], 1
  jne code
  cmp dword ptr [r14+10], 1
  je code
  mov dword ptr [r14+10], 1

code:
  add [r14+0C],r15d
  mov [rsp+000000B0],r12
  jmp return
align 10 cc
  vf_xp_multi:
  dd (float)1.5
  is_keep_lv1:
  dd 1

INJECT_UNIT_EXP_MULTI:
  jmp newmem
  nop 7
return:
registersymbol(INJECT_UNIT_EXP_MULTI)
registersymbol(vf_xp_multi)
registersymbol(is_keep_lv1)

[DISABLE]

INJECT_UNIT_EXP_MULTI:
  db 45 01 7E 0C 4C 89 A4 24 B0 00 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameCore_XP2_FinalRelease.dll+394604

GameCore_XP2_FinalRelease.dll+3945D5: 8B 99 C0 04 00 00        - mov ebx,[rcx+000004C0]
GameCore_XP2_FinalRelease.dll+3945DB: E8 60 CD 00 00           - call GameCore_XP2_FinalRelease.dll+3A1340
GameCore_XP2_FinalRelease.dll+3945E0: 3B D8                    - cmp ebx,eax
GameCore_XP2_FinalRelease.dll+3945E2: 0F 8D FC 01 00 00        - jnl GameCore_XP2_FinalRelease.dll+3947E4
GameCore_XP2_FinalRelease.dll+3945E8: 49 8B 0E                 - mov rcx,[r14]
GameCore_XP2_FinalRelease.dll+3945EB: E8 E0 DA 00 00           - call GameCore_XP2_FinalRelease.dll+3A20D0
GameCore_XP2_FinalRelease.dll+3945F0: 84 C0                    - test al,al
GameCore_XP2_FinalRelease.dll+3945F2: 0F 85 EC 01 00 00        - jne GameCore_XP2_FinalRelease.dll+3947E4
GameCore_XP2_FinalRelease.dll+3945F8: 41 8B 5E 10              - mov ebx,[r14+10]
GameCore_XP2_FinalRelease.dll+3945FC: F2 0F 10 0D 24 D2 65 00  - movsd xmm1,[GameCore_XP2_FinalRelease.dll+9F1828]
// ---------- INJECTING HERE ----------
GameCore_XP2_FinalRelease.dll+394604: 45 01 7E 0C              - add [r14+0C],r15d
// ---------- DONE INJECTING  ----------
GameCore_XP2_FinalRelease.dll+394608: 4C 89 A4 24 B0 00 00 00  - mov [rsp+000000B0],r12
GameCore_XP2_FinalRelease.dll+394610: 66 0F 6E C3              - movd xmm0,ebx
GameCore_XP2_FinalRelease.dll+394614: F3 0F E6 C0              - cvtdq2pd xmm0,xmm0,xmm0
GameCore_XP2_FinalRelease.dll+394618: E8 43 97 61 00           - call GameCore_XP2_FinalRelease.dll+9ADD60
GameCore_XP2_FinalRelease.dll+39461D: 48 8B 0D 7C 23 7F 00     - mov rcx,[GameCore_XP2_FinalRelease.dll+B869A0]
GameCore_XP2_FinalRelease.dll+394624: 41 BC 01 00 00 00        - mov r12d,00000001
GameCore_XP2_FinalRelease.dll+39462A: F2 0F 2C C0              - cvttsd2si eax,xmm0
GameCore_XP2_FinalRelease.dll+39462E: 03 C3                    - add eax,ebx
GameCore_XP2_FinalRelease.dll+394630: 99                       - cdq 
GameCore_XP2_FinalRelease.dll+394631: 2B C2                    - sub eax,edx
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>44</ID>
                  <Description>"Multiplier"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>C08000</Color>
                  <VariableType>Float</VariableType>
                  <Address>vf_xp_multi</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>39</ID>
              <Description>"_WIP"</Description>
              <Options moHideChildren="1"/>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>3</ID>
                  <Description>"Get gold (read only)"</Description>
                  <Options moHideChildren="1"/>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>{ Game   : CivilizationVI_DX12.exe
  Version: 
  Date   : 2022-11-16
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

//aobscanmodule(INJECT_GET_MONEY,GameCore_XP2_FinalRelease.dll,89 81 C8 00 00 00 48 8B) // should be unique
aobscanmodule(INJECT_GET_MONEY,maindll,89 81 C8 00 00 00 48 8B) // should be unique
alloc(newmem,$1000,INJECT_GET_MONEY)

label(code)
label(return)
label(i_base_player_gold_addr)
label(i_plyer_id)
label(i_player_base_addr)
label(i_gold_display)
newmem:
  push r15
  push r14

  mov r15, [rcx]
  test r15, r15
  je endp

  mov r14d, [r15+24]
  cmp r14d, 1
  jne endp

  mov r14d, [r15]
  test r14d, r14d
  jne endp

  mov [i_plyer_id], r14w

  mov [i_base_player_gold_addr], rcx
  mov r15d, [rcx+c8]
  sar r15d, 8
  mov [i_gold_display], r15d
  mov r15, [rcx]
  mov [i_player_base_addr], r15

endp:
  pop r14
  pop r15

code:
  mov [rcx+000000C8],eax
  jmp return
align 10 cc
  i_base_player_gold_addr:
  dq 0
  i_player_base_addr:
  dq 0
  i_plyer_id:
  dw 0
  i_gold_display:
  dd 0

INJECT_GET_MONEY:
  jmp newmem
  nop
return:
registersymbol(INJECT_GET_MONEY)
registersymbol(i_base_player_gold_addr)
registersymbol(i_plyer_id)
registersymbol(i_player_base_addr)
registersymbol(i_gold_display)
[DISABLE]

INJECT_GET_MONEY:
  db 89 81 C8 00 00 00

unregistersymbol(INJECT_GET_MONEY)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A50

GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A3B: CC                 - int 3 
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A3C: CC                 - int 3 
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A3D: CC                 - int 3 
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A3E: CC                 - int 3 
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A3F: CC                 - int 3 
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A40: 48 89 5C 24 08     - mov [rsp+08],rbx
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A45: 57                 - push rdi
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A46: 48 83 EC 20        - sub rsp,20
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A4A: 8B 42 04           - mov eax,[rdx+04]
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A4D: 48 8B DA           - mov rbx,rdx
// ---------- INJECTING HERE ----------
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A50: 89 81 C8 00 00 00  - mov [rcx+000000C8],eax
// ---------- DONE INJECTING  ----------
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A56: 48 8B F9           - mov rdi,rcx
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A59: 8B 42 08           - mov eax,[rdx+08]
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A5C: 89 81 CC 00 00 00  - mov [rcx+000000CC],eax
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A62: 8B 42 0C           - mov eax,[rdx+0C]
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A65: 89 81 D0 00 00 00  - mov [rcx+000000D0],eax
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A6B: 8B 42 10           - mov eax,[rdx+10]
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A6E: 89 81 D4 00 00 00  - mov [rcx+000000D4],eax
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A74: 8B 42 14           - mov eax,[rdx+14]
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A77: 89 81 D8 00 00 00  - mov [rcx+000000D8],eax
GameCore_XP2_FinalRelease.HksCompilerSettings::_isHksGlobalMemoTestingMode+9A7D: 8B 42 18           - mov eax,[rdx+18]
}
</AssemblerScript>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>4</ID>
                      <Description>"Active: end turn"</Description>
                      <Color>8000FF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>14</ID>
                      <Description>"PBase"</Description>
                      <ShowAsHex>1</ShowAsHex>
                      <ShowAsSigned>0</ShowAsSigned>
                      <Color>808080</Color>
                      <VariableType>8 Bytes</VariableType>
                      <Address>i_player_base_addr</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>15</ID>
                      <Description>"Base"</Description>
                      <ShowAsHex>1</ShowAsHex>
                      <ShowAsSigned>0</ShowAsSigned>
                      <Color>808080</Color>
                      <VariableType>8 Bytes</VariableType>
                      <Address>i_base_player_gold_addr</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>11</ID>
                      <Description>"Gold*256"</Description>
                      <DropDownList DisplayValueAsItem="1">2560000:10000
25600000:100000
</DropDownList>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_base_player_gold_addr</Address>
                      <Offsets>
                        <Offset>C8</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>6</ID>
                      <Description>"????"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_base_player_gold_addr</Address>
                      <Offsets>
                        <Offset>CC</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>7</ID>
                      <Description>"????"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_base_player_gold_addr</Address>
                      <Offsets>
                        <Offset>D0</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>8</ID>
                      <Description>"????"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_base_player_gold_addr</Address>
                      <Offsets>
                        <Offset>D4</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>9</ID>
                      <Description>"????"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_base_player_gold_addr</Address>
                      <Offsets>
                        <Offset>D8</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>10</ID>
                      <Description>"????"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_base_player_gold_addr</Address>
                      <Offsets>
                        <Offset>DC</Offset>
                      </Offsets>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>49</ID>
                  <Description>"(Expansion 1) Unit: when move:"</Description>
                  <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>{ Game   : CivilizationVI_DX12.exe
  Version: 
  Date   : 2022-11-18
  Author : bbfox@https://opencheattables.com
}

[ENABLE]
aobscanmodule(INJECT_INF_UNIT_MOVE_XP1,maindll,48 8B 82 08 0A 00 00 48) // should be unique
alloc(newmem,$1000,INJECT_INF_UNIT_MOVE_XP1)

label(code)
label(return)
label(is_inf_action)
label(is_min_hp)

newmem:
  cmp word ptr [rdx+60], 0
  jne code
  cmp dword ptr [rdx+480], 700
  ja check_inf_action
  push r15
  mov rax,[rdx+00000A08]
  mov r15d, 700
  mov [rax+F0], r15d
  mov [rdx+480], r15d
  pop r15

check_inf_action:
  cmp dword ptr [is_inf_action], 1
  jne check_unit_hp
  mov dword ptr [rdx+498], 1

check_unit_hp:
  cmp dword ptr [is_min_hp], 1
  jne code
  cmp dword ptr [rdx+450], 10
  jbe code
  mov dword ptr [rdx+450], 10

code:
  mov rax,[rdx+00000A08]
  jmp return
align 10 cc
  is_inf_action:
  dd 0
  is_min_hp:
  dd 1

INJECT_INF_UNIT_MOVE_XP1:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_INF_UNIT_MOVE_XP1)
registersymbol(is_inf_action)
registersymbol(is_min_hp)

[DISABLE]

INJECT_INF_UNIT_MOVE_XP1:
  db 48 8B 82 08 0A 00 0 0 48

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameCore_XP1_FinalRelease.dll+571BC0

GameCore_XP1_FinalRelease.dll+571BB6: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BB7: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BB8: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BB9: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BBA: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BBB: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BBC: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BBD: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BBE: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BBF: CC                    - int 3
// ---------- INJECTING HERE ----------
GameCore_XP1_FinalRelease.dll+571BC0: 48 8B 82 08 0A 00 00  - mov rax,[rdx+00000A08]
// ---------- DONE INJECTING  ----------
GameCore_XP1_FinalRelease.dll+571BC7: 48 85 C0              - test rax,rax
GameCore_XP1_FinalRelease.dll+571BCA: 74 0C                 - je GameCore_XP1_FinalRelease.dll+571BD8
GameCore_XP1_FinalRelease.dll+571BCC: 83 B8 68 02 00 00 01  - cmp dword ptr [rax+00000268],01
GameCore_XP1_FinalRelease.dll+571BD3: 76 03                 - jna GameCore_XP1_FinalRelease.dll+571BD8
GameCore_XP1_FinalRelease.dll+571BD5: B0 01                 - mov al,01
GameCore_XP1_FinalRelease.dll+571BD7: C3                    - ret
GameCore_XP1_FinalRelease.dll+571BD8: 32 C0                 - xor al,al
GameCore_XP1_FinalRelease.dll+571BDA: C3                    - ret
GameCore_XP1_FinalRelease.dll+571BDB: CC                    - int 3
GameCore_XP1_FinalRelease.dll+571BDC: CC                    - int 3
}

</AssemblerScript>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>50</ID>
                      <Description>"inf. actions?"</Description>
                      <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
                      <ShowAsSigned>0</ShowAsSigned>
                      <Color>C08000</Color>
                      <VariableType>4 Bytes</VariableType>
                      <Address>is_inf_action</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>51</ID>
                      <Description>"Keep min. HP as possible?"</Description>
                      <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
                      <ShowAsSigned>0</ShowAsSigned>
                      <Color>C08000</Color>
                      <VariableType>4 Bytes</VariableType>
                      <Address>is_min_hp</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>48</ID>
      <Description>"Sid Meier’s Civilization® VI 1.0.12.9 (564030)  /  https://opencheattables.com  /  CE 7.4+"</Description>
      <Color>400080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols>
    <SymbolEntry>
      <Name>maindll</Name>
      <Address>GameCore_XP1_FinalRelease.dll</Address>
    </SymbolEntry>
  </UserdefinedSymbols>
  <Comments>aobscanmodule(INJECT,GameCore_XP2_FinalRelease.dll,41 8B 86 A8 00 00 00 49) // should be unique
</Comments>
</CheatTable>
