<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="46">
  <CheatEntries>
    <CheatEntry>
      <ID>15</ID>
      <Description>"Enable Console"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : eu5.exe
  Version: 1.0.0
  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+2809ACF

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)
{
// ORIGINAL CODE - INJECTION POINT: eu5.exe+2809AC0

eu5.exe+2809A9E: 48 8B 5C 24 50        - mov rbx,[rsp+50]
eu5.exe+2809AA3: 32 C0                 - xor al,al
eu5.exe+2809AA5: 48 8B 7C 24 58        - mov rdi,[rsp+58]
eu5.exe+2809AAA: 48 83 C4 40           - add rsp,40
eu5.exe+2809AAE: 5D                    - pop rbp
eu5.exe+2809AAF: C3                    - ret 
eu5.exe+2809AB0: 40 53                 - push rbx
eu5.exe+2809AB2: 48 83 EC 30           - sub rsp,30
eu5.exe+2809AB6: 80 3D 1C 21 AA 04 00  - cmp byte ptr [eu5.exe+72ABBD9],00
eu5.exe+2809ABD: 48 8B D9              - mov rbx,rcx
// ---------- INJECTING HERE ----------
eu5.exe+2809AC0: 75 0D                 - jne eu5.exe+2809ACF
// ---------- DONE INJECTING  ----------
eu5.exe+2809AC2: C6 81 D8 06 00 00 00  - mov byte ptr [rcx+000006D8],00
eu5.exe+2809AC9: 48 83 C4 30           - add rsp,30
eu5.exe+2809ACD: 5B                    - pop rbx
eu5.exe+2809ACE: C3                    - ret 
eu5.exe+2809ACF: 48 8B 89 E0 06 00 00  - mov rcx,[rcx+000006E0]
eu5.exe+2809AD6: 48 85 C9              - test rcx,rcx
eu5.exe+2809AD9: 74 65                 - je eu5.exe+2809B40
eu5.exe+2809ADB: 48 83 79 28 00        - cmp qword ptr [rcx+28],00
eu5.exe+2809AE0: 74 5E                 - je eu5.exe+2809B40
eu5.exe+2809AE2: 48 8B 01              - mov rax,[rcx]
}
{
call eu5.7FF6558B8CF0

// ORIGINAL CODE - INJECTION POINT: eu5.exe+688D41
eu5.exe+688D1D: 48 8B 01              - mov rax,[rcx]
eu5.exe+688D20: FF 50 50              - call qword ptr [rax+50]
eu5.exe+688D23: E8 B8 01 38 01        - call eu5.exe+1A08EE0
eu5.exe+688D28: 80 3D A3 5F BF 06 00  - cmp byte ptr [eu5.exe+727ECD2],00
eu5.exe+688D2F: 75 09                 - jne eu5.exe+688D3A
eu5.exe+688D31: 80 B8 32 01 00 00 00  - cmp byte ptr [rax+00000132],00
eu5.exe+688D38: 75 07                 - jne eu5.exe+688D41
eu5.exe+688D3A: 32 C0                 - xor al,al
eu5.exe+688D3C: 48 83 C4 28           - add rsp,28
eu5.exe+688D40: C3                    - ret
// ---------- INJECTING HERE ----------
eu5.exe+688D41: B0 01                 - mov al,01
// ---------- DONE INJECTING  ----------
eu5.exe+688D43: 48 83 C4 28           - add rsp,28
eu5.exe+688D47: C3                    - ret
eu5.exe+688D48: CC                    - int 3
eu5.exe+688D49: CC                    - int 3
eu5.exe+688D4A: CC                    - int 3
eu5.exe+688D4B: CC                    - int 3
eu5.exe+688D4C: CC                    - int 3
eu5.exe+688D4D: CC                    - int 3
eu5.exe+688D4E: CC                    - int 3
eu5.exe+688D4F: 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.0
  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>
  <CheatCodes>
    <CodeEntry>
      <Description>Change of jmp 7FF655220000</Description>
      <AddressString>eu5.exe+3692D9A</AddressString>
      <Before>
        <Byte>BF</Byte>
        <Byte>BE</Byte>
        <Byte>03</Byte>
        <Byte>75</Byte>
        <Byte>65</Byte>
      </Before>
      <Actual>
        <Byte>E9</Byte>
        <Byte>61</Byte>
        <Byte>D2</Byte>
        <Byte>95</Byte>
        <Byte>FC</Byte>
      </Actual>
      <After>
        <Byte>66</Byte>
        <Byte>90</Byte>
        <Byte>74</Byte>
        <Byte>5C</Byte>
        <Byte>48</Byte>
      </After>
    </CodeEntry>
  </CheatCodes>
  <UserdefinedSymbols/>
</CheatTable>
