<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>15</ID>
      <Description>"Enable Console"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : eu5.exe
  Version: 1.0.2
  Date   : 2025-11-06
  Author : nigel11

  Allows console to be opened with ~ and allows all commands
}

[ENABLE]

aobscanmodule(ALLOWCMD,eu5.exe,00 00 75 07 32 C0 48 83 C4 28 C3 B0 01 48 83 C4 28)
aobscanmodule(OPENCONSOLE,eu5.exe,75 0D C6 81 D8 06 00 00 00)


ALLOWCMD+0B:
  xor al,al
  add rsp,28

OPENCONSOLE:
  jmp eu5.exe+28184BF
  mov byte ptr [rcx+000006D8],00

return:
registersymbol(OPENCONSOLE)
registersymbol(ALLOWCMD)

[DISABLE]

OPENCONSOLE:
  db 75 0D C6 81 D8 06 00 00 00

ALLOWCMD+0B:
  db B0 01 48 83 C4 28

unregistersymbol(OPENCONSOLE)
unregistersymbol(ALLOWCMD)
{
// search string refs for console_edit
// ORIGINAL CODE - INJECTION POINT: eu5.exe+28184B0

eu5.exe+281849A: 48 83 C4 40           - add rsp,40
eu5.exe+281849E: 5D                    - pop rbp
eu5.exe+281849F: C3                    - ret
eu5.exe+28184A0: 40 53                 - push rbx
eu5.exe+28184A2: 48 83 EC 30           - sub rsp,30
eu5.exe+28184A6: CC                    - int 3
eu5.exe+28184A7: 3D FA BB 8F 04        - cmp eax,048FBBFA
eu5.exe+28184AC: 00 48 8B              - add [rax-75],cl
eu5.exe+28184AF: D9                    - db D9
eu5.exe+28184B0: 75 0D                 - jne eu5.exe+28184BF
// ---------- INJECTING HERE ----------
eu5.exe+28184B2: C6 81 D8 06 00 00 00  - mov byte ptr [rcx+000006D8],00
// ---------- DONE INJECTING  ----------
eu5.exe+28184B9: 48 83 C4 30           - add rsp,30
eu5.exe+28184BD: 5B                    - pop rbx
eu5.exe+28184BE: C3                    - ret
eu5.exe+28184BF: 48 8B 89 E0 06 00 00  - mov rcx,[rcx+000006E0]
eu5.exe+28184C6: 48 85 C9              - test rcx,rcx
eu5.exe+28184C9: 74 65                 - je eu5.exe+2818530
eu5.exe+28184CB: 48 83 79 28 00        - cmp qword ptr [rcx+28],00
eu5.exe+28184D0: 74 5E                 - je eu5.exe+2818530
eu5.exe+28184D2: 48 8B 01              - mov rax,[rcx]
eu5.exe+28184D5: FF 50 18              - call qword ptr [rax+18]
}
{
// string block_command
// ORIGINAL CODE - INJECTION POINT: eu5.exe+689FD1

eu5.exe+689FAD: 48 8B 01              - mov rax,[rcx]
eu5.exe+689FB0: FF 50 50              - call qword ptr [rax+50]
eu5.exe+689FB3: E8 F8 DF 38 01        - call eu5.exe+1A17FB0
eu5.exe+689FB8: 80 3D DF D1 A5 06 00  - cmp byte ptr [eu5.exe+70E719E],00
eu5.exe+689FBF: 75 09                 - jne eu5.exe+689FCA
eu5.exe+689FC1: 80 B8 32 01 00 00 00  - cmp byte ptr [rax+00000132],00
eu5.exe+689FC8: 75 07                 - jne eu5.exe+689FD1
eu5.exe+689FCA: 32 C0                 - xor al,al
eu5.exe+689FCC: 48 83 C4 28           - add rsp,28
eu5.exe+689FD0: C3                    - ret
// ---------- INJECTING HERE ----------
eu5.exe+689FD1: B0 01                 - mov al,01
// ---------- DONE INJECTING  ----------
eu5.exe+689FD3: 48 83 C4 28           - add rsp,28
eu5.exe+689FD7: C3                    - ret
eu5.exe+689FD8: CC                    - int 3
eu5.exe+689FD9: CC                    - int 3
eu5.exe+689FDA: CC                    - int 3
eu5.exe+689FDB: CC                    - int 3
eu5.exe+689FDC: CC                    - int 3
eu5.exe+689FDD: CC                    - int 3
eu5.exe+689FDE: CC                    - int 3
eu5.exe+689FDF: CC                    - int 3
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>12</ID>
      <Description>"Ironman Hook"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : eu5.exe
  Version: 1.0.2
  Date   : 2025-11-05
  Author : nigel11

  Set to 1 or 0 to enable/disable ironman
  achivements seem to work
  disable once address is found incase of game crashes
}

[ENABLE]

aobscanmodule(injIronmanHook,eu5.exe,44 38 B8 32 01 00 00)
alloc(newmem,32,injIronmanHook)
alloc(ptrIronman,8)

label(code)
label(return)


newmem:
  mov [ptrIronman],rax

code:
  cmp [rax+00000132],r15b
  jmp return

injIronmanHook:
  jmp newmem
  nop 2

return:
registersymbol(injIronmanHook)
registersymbol(ptrIronman)


[DISABLE]

injIronmanHook:
  db 44 38 B8 32 01 00 00

unregistersymbol(injIronmanHook)
dealloc(newmem)
//unregistersymbol(ptrIronman)
//dealloc(ptrIronman)

{
// ORIGINAL CODE - INJECTION POINT: eu5.exe+3692D9A

eu5.exe+3692D71: 48 89 9C 24 80 00 00 00  - mov [rsp+00000080],rbx
eu5.exe+3692D79: 48 8B 06                 - mov rax,[rsi]
eu5.exe+3692D7C: 48 8B CE                 - mov rcx,rsi
eu5.exe+3692D7F: FF 50 50                 - call qword ptr [rax+50]
eu5.exe+3692D82: 48 8B E8                 - mov rbp,rax
eu5.exe+3692D85: E8 56 61 37 FE           - call eu5.exe+1A08EE0
eu5.exe+3692D8A: 45 33 FF                 - xor r15d,r15d
eu5.exe+3692D8D: 41 8D 7F 06              - lea edi,[r15+06]
eu5.exe+3692D91: 44 38 3D 3A BF BE 03     - cmp [eu5.exe+727ECD2],r15b
eu5.exe+3692D98: 75 65                    - jne eu5.exe+3692DFF
// ---------- INJECTING HERE ----------
eu5.exe+3692D9A: 44 38 B8 32 01 00 00     - cmp [rax+00000132],r15b
// ---------- DONE INJECTING  ----------
eu5.exe+3692DA1: 74 5C                    - je eu5.exe+3692DFF
eu5.exe+3692DA3: 48 89 5C 24 78           - mov [rsp+78],rbx
eu5.exe+3692DA8: 8B 55 10                 - mov edx,[rbp+10]
eu5.exe+3692DAB: 48 8D 4C 24 78           - lea rcx,[rsp+78]
eu5.exe+3692DB0: E8 5B 48 35 FE           - call eu5.exe+19E7610
eu5.exe+3692DB5: 44 8B C0                 - mov r8d,eax
eu5.exe+3692DB8: 8B 55 18                 - mov edx,[rbp+18]
eu5.exe+3692DBB: 85 D2                    - test edx,edx
eu5.exe+3692DBD: 74 32                    - je eu5.exe+3692DF1
eu5.exe+3692DBF: 83 EA 01                 - sub edx,01
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>8</ID>
          <Description>"Ironman"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>ptrIronman</Address>
          <Offsets>
            <Offset>132</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
