<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <CheatEntries>
    <CheatEntry>
      <ID>2</ID>
      <Description>"Only turn on when needed! or game will detect cheat!"</Description>
      <Color>8000FF</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry>
      <ID>0</ID>
      <Description>"Lock resources (skirmish map)"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : AoE2DE_s.exe
  Version:
  Date   : 2022-12-08
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_PLAYER_RESOURCES,$process,01 00 00 49 8B 42 18 49 BB 1B 8E 3A 43 45 08 3C 1D) // should be unique
alloc(newmem,$1000,INJECT_PLAYER_RESOURCES)

label(code)
label(return)
label(is_res_lock_on)
label(is_try_to_decrypt_encrypt)
label(vf_min_resource)

newmem:
  push rbx
  push rax
  push rdx

  mov rbx,[r10+18]
  mov eax, [rbx+10]
  cmp eax, 1
  jne endp

  mov rbx,[rbx+108]

  // encrypt resource
  cmp dword ptr [is_try_to_decrypt_encrypt], 1
  jne chk_lock_res

  //101.102.5558.0
  //mov r11,4EFA2C18CBD3C884
  //mov rbx,0CDAD4EF0E7FA52E
  //mov rdi,5F37C54769DFD8B1
  //mov rsi,74757C9ED9786E07

  // 101.102.8319.0
  // mov r11,1D3C0845433A8E1B
  // rbx,506C4D9D35C71C6D
  // mov rdi,67B90128F4306D95
  // mov rsi,285EDA70F12123D5
  // sub rax,r11
  // mov [rsp+38],rax
  // mov rax,[rsp+38]
  // xor rax,rbx
  // mov [rsp+38],rax
  // mov rax,[rsp+38]
  // sub rax,rdi
  // mov [rsp+38],rax
  // mov rax,[rsp+38]
  // xor rax,rsi

  xor rax, rax
  vmovss xmm15, [vf_min_resource]
  cvtps2dq xmm15, xmm15
  movd eax, xmm15
  cvtsi2ss xmm14, eax
  movd rax, xmm14

  //01.102.5558.0
  //mov rsi,74757C9ED9786E07
  //add rax, rsi
  //mov rsi,5F37C54769DFD8B1
  //add rax, rsi
  //mov rsi,0CDAD4EF0E7FA52E
  //xor rax, rsi
  //mov rsi,4EFA2C18CBD3C884
  //add rax, rsi


  mov rsi,285EDA70F12123D5
  xor rax, rsi
  mov rsi,67B90128F4306D95
  add rax, rsi
  mov rsi,506C4D9D35C71C6D
  xor rax, rsi
  mov rsi,1D3C0845433A8E1B
  add rax, rsi

  //mov [rbx+8], rax


chk_lock_res:
  cmp dword ptr [is_res_lock_on], 1
  jne endp
  //mov eax, 527C159D /4090
  //mov eax, 53F4AC1A
  mov [rbx], rax
  mov [rbx+8], rax
  mov [rbx+10], rax
  mov [rbx+18], rax



endp:
  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

  pop rdx
  pop rax
  pop rbx

code:
  mov rax,[r10+18]
  mov r11,4EFA2C18CBD3C884
  jmp return
align 10 cc
  is_res_lock_on:
  dd 1
  is_try_to_decrypt_encrypt:
  dd 1
  vf_5000:
  dd (float)5000
  vf_min_resource:
  dd (float)5678
  i_tmp1:
  dq 0

INJECT_PLAYER_RESOURCES+03:
  jmp newmem
  nop 9
return:
registersymbol(INJECT_PLAYER_RESOURCES)
registersymbol(is_res_lock_on)
registersymbol(is_try_to_decrypt_encrypt)
registersymbol(vf_min_resource)

[DISABLE]

INJECT_PLAYER_RESOURCES+03:
  db 49 8B 42 18 49 BB 1B 8E 3A 43 45 08 3C 1D

unregistersymbol(*)
dealloc(newmem)

{
// 101.102.8319.0
// ORIGINAL CODE - INJECTION POINT: AoE2DE_s.exe+152FF15

AoE2DE_s.exe+152FEEA: 76 09                          - jna AoE2DE_s.exe+152FEF5
AoE2DE_s.exe+152FEEC: F3 41 0F 11 41 1C              - movss [r9+1C],xmm0
AoE2DE_s.exe+152FEF2: 0F 28 C8                       - movaps xmm1,xmm0
AoE2DE_s.exe+152FEF5: 66 41 0F 6E 41 10              - movd xmm0,[r9+10]
AoE2DE_s.exe+152FEFB: 0F 5B C0                       - cvtdq2ps xmm0,xmm0
AoE2DE_s.exe+152FEFE: F3 0F 5E C8                    - divss xmm1,xmm0
AoE2DE_s.exe+152FF02: F3 0F 2C C9                    - cvttss2si ecx,xmm1
AoE2DE_s.exe+152FF06: E9 24 01 00 00                 - jmp AoE2DE_s.exe+153002F
AoE2DE_s.exe+152FF0B: 80 7A 01 00                    - cmp byte ptr [rdx+01],00
AoE2DE_s.exe+152FF0F: 0F 85 A4 01 00 00              - jne AoE2DE_s.exe+15300B9
// ---------- INJECTING HERE ----------
AoE2DE_s.exe+152FF15: 49 8B 42 18                    - mov rax,[r10+18]
// ---------- DONE INJECTING  ----------
AoE2DE_s.exe+152FF19: 49 BB 1B 8E 3A 43 45 08 3C 1D  - mov r11,1D3C0845433A8E1B
AoE2DE_s.exe+152FF23: 48 63 52 08                    - movsxd  rdx,dword ptr [rdx+08]
AoE2DE_s.exe+152FF27: 48 BB 6D 1C C7 35 9D 4D 6C 50  - mov rbx,506C4D9D35C71C6D
AoE2DE_s.exe+152FF31: 48 BF 95 6D 30 F4 28 01 B9 67  - mov rdi,67B90128F4306D95
AoE2DE_s.exe+152FF3B: 48 BE D5 23 21 F1 70 DA 5E 28  - mov rsi,285EDA70F12123D5
AoE2DE_s.exe+152FF45: 48 8B 88 08 01 00 00           - mov rcx,[rax+00000108]
AoE2DE_s.exe+152FF4C: 48 8B 04 D1                    - mov rax,[rcx+rdx*8]
AoE2DE_s.exe+152FF50: 48 89 44 24 38                 - mov [rsp+38],rax
AoE2DE_s.exe+152FF55: 48 8B 44 24 38                 - mov rax,[rsp+38]
AoE2DE_s.exe+152FF5A: 49 2B C3                       - sub rax,r11
AoE2DE_s.exe+152FF5D - 48 89 44 24 38        - mov [rsp+38],rax
AoE2DE_s.exe+152FF62 - 48 8B 44 24 38        - mov rax,[rsp+38]
AoE2DE_s.exe+152FF67 - 48 33 C3              - xor rax,rbx
AoE2DE_s.exe+152FF6A - 48 89 44 24 38        - mov [rsp+38],rax
AoE2DE_s.exe+152FF6F - 48 8B 44 24 38        - mov rax,[rsp+38]
AoE2DE_s.exe+152FF74 - 48 2B C7              - sub rax,rdi
AoE2DE_s.exe+152FF77 - 48 89 44 24 38        - mov [rsp+38],rax
AoE2DE_s.exe+152FF7C - 48 8B 44 24 38        - mov rax,[rsp+38]
AoE2DE_s.exe+152FF81 - 48 33 C6              - xor rax,rsi
AoE2DE_s.exe+152FF84 - 48 89 44 24 38        - mov [rsp+38],rax
AoE2DE_s.exe+152FF89 - 48 8B 44 24 38        - mov rax,[rsp+38]
AoE2DE_s.exe+152FF8E - 49 63 51 0C           - movsxd  rdx,dword ptr [r9+0C]
AoE2DE_s.exe+152FF92 - 48 89 44 24 38        - mov [rsp+38],rax
AoE2DE_s.exe+152FF97 - F3 44 0F2C 44 24 38   - cvttss2si r8d,[rsp+38]
AoE2DE_s.exe+152FF9E - 66 41 0F6E C0         - movd xmm0,r8d
AoE2DE_s.exe+152FFA3 - 0F5B C0               - cvtdq2ps xmm0,xmm0
AoE2DE_s.exe+152FFA6 - F3 41 0F11 41 1C      - movss [r9+1C],xmm0
AoE2DE_s.exe+152FFAC - 49 8B 42 18           - mov rax,[r10+18]
AoE2DE_s.exe+152FFB0 - 48 8B 88 08010000     - mov rcx,[rax+00000108]
AoE2DE_s.exe+152FFB7 - 48 8B 04 D1           - mov rax,[rcx+rdx*8]
AoE2DE_s.exe+152FFBB - 33 C9                 - xor ecx,ecx
AoE2DE_s.exe+152FFBD - 48 89 44 24 38        - mov [rsp+38],rax
AoE2DE_s.exe+152FFC2 - 48 8B 44 24 38        - mov rax,[rsp+38]
AoE2DE_s.exe+152FFC7 - 49 2B C3              - sub rax,r11
AoE2DE_s.exe+152FFCA - 48 89 44 24 38        - mov [rsp+38],rax
AoE2DE_s.exe+152FFCF - 48 8B 44 24 38        - mov rax,[rsp+38]
AoE2DE_s.exe+152FFD4 - 48 33 C3              - xor rax,rbx
AoE2DE_s.exe+152FFD7 - 48 89 44 24 38        - mov [rsp+38],rax
AoE2DE_s.exe+152FFDC - 48 8B 44 24 38        - mov rax,[rsp+38]
AoE2DE_s.exe+152FFE1 - 48 2B C7              - sub rax,rdi
AoE2DE_s.exe+152FFE4 - 48 89 44 24 38        - mov [rsp+38],rax
AoE2DE_s.exe+152FFE9 - 48 8B 44 24 38        - mov rax,[rsp+38]
AoE2DE_s.exe+152FFEE - 48 33 C6              - xor rax,rsi
AoE2DE_s.exe+152FFF1 - 48 89 44 24 38        - mov [rsp+38],rax
AoE2DE_s.exe+152FFF6 - 48 8B 44 24 38        - mov rax,[rsp+38]
AoE2DE_s.exe+152FFFB - 45 8B 59 10           - mov r11d,[r9+10]
AoE2DE_s.exe+152FFFF - 48 89 44 24 38        - mov [rsp+38],rax
AoE2DE_s.exe+1530004 - F3 0F2C 44 24 38      - cvttss2si eax,[rsp+38]
AoE2DE_s.exe+153000A - 66 0F6E C0            - movd xmm0,eax
AoE2DE_s.exe+153000E - 0F5B C0               - cvtdq2ps xmm0,xmm0
AoE2DE_s.exe+1530011 - F3 41 0F11 41 20      - movss [r9+20],xmm0
AoE2DE_s.exe+1530017 - 45 85 DB              - test r11d,r11d

}

{
//101.102.5558.0
// ORIGINAL CODE - INJECTION POINT: AoE2DE.exe+1541C64

AoE2DE.exe+1541C30: 0F 87 C2 03 00 00              - ja AoE2DE.exe+1541FF8
AoE2DE.exe+1541C36: 48 89 5C 24 30                 - mov [rsp+30],rbx
AoE2DE.exe+1541C3B: 48 8D 0D BE E3 AB FE           - lea rcx,[AoE2DE.exe]
AoE2DE.exe+1541C42: 48 89 74 24 40                 - mov [rsp+40],rsi
AoE2DE.exe+1541C47: 48 89 7C 24 20                 - mov [rsp+20],rdi
AoE2DE.exe+1541C4C: 44 8B 84 81 00 20 54 01        - mov r8d,[rcx+rax*4+01542000]
AoE2DE.exe+1541C54: 4C 03 C1                       - add r8,rcx
AoE2DE.exe+1541C57: 41 FF E0                       - jmp r8
AoE2DE.exe+1541C5A: 80 7A 01 00                    - cmp byte ptr [rdx+01],00
AoE2DE.exe+1541C5E: 0F 85 85 03 00 00              - jne AoE2DE.exe+1541FE9
// ---------- INJECTING HERE ----------
AoE2DE.exe+1541C64: 49 8B 42 18                    - mov rax,[r10+18]
// ---------- DONE INJECTING  ----------
AoE2DE.exe+1541C68: 49 BB 84 C8 D3 CB 18 2C FA 4E  - mov r11,4EFA2C18CBD3C884
AoE2DE.exe+1541C72: 48 63 52 08                    - movsxd  rdx,dword ptr [rdx+08]
AoE2DE.exe+1541C76: 48 BB 2E A5 7F 0E EF D4 DA 0C  - mov rbx,0CDAD4EF0E7FA52E
AoE2DE.exe+1541C80: 48 BF B1 D8 DF 69 47 C5 37 5F  - mov rdi,5F37C54769DFD8B1
AoE2DE.exe+1541C8A: 48 BE 07 6E 78 D9 9E 7C 75 74  - mov rsi,74757C9ED9786E07
AoE2DE.exe+1541C94: 48 8B 88 F0 00 00 00           - mov rcx,[rax+000000F0]
AoE2DE.exe+1541C9B: 48 8B 04 D1                    - mov rax,[rcx+rdx*8]
AoE2DE.exe+1541C9F: 33 C9                          - xor ecx,ecx
AoE2DE.exe+1541CA1: 48 89 44 24 38                 - mov [rsp+38],rax
AoE2DE.exe+1541CA6: 48 8B 44 24 38                 - mov rax,[rsp+38]
AoE2DE.exe+1541CAB - 49 2B C3              - sub rax,r11
AoE2DE.exe+1541CAE - 48 89 44 24 38        - mov [rsp+38],rax
AoE2DE.exe+1541CB3 - 48 8B 44 24 38        - mov rax,[rsp+38]
AoE2DE.exe+1541CB8 - 48 33 C3              - xor rax,rbx
AoE2DE.exe+1541CBB - 48 89 44 24 38        - mov [rsp+38],rax
AoE2DE.exe+1541CC0 - 48 8B 44 24 38        - mov rax,[rsp+38]
AoE2DE.exe+1541CC5 - 48 2B C7              - sub rax,rdi
AoE2DE.exe+1541CC8 - 48 89 44 24 38        - mov [rsp+38],rax
AoE2DE.exe+1541CCD - 48 8B 44 24 38        - mov rax,[rsp+38]
AoE2DE.exe+1541CD2 - 48 2B C6              - sub rax,rsi
AoE2DE.exe+1541CD5 - 48 89 44 24 38        - mov [rsp+38],rax
AoE2DE.exe+1541CDA - 48 8B 44 24 38        - mov rax,[rsp+38]
AoE2DE.exe+1541CDF - 45 8B 41 10           - mov r8d,[r9+10]
AoE2DE.exe+1541CE3 - 48 89 44 24 38        - mov [rsp+38],rax
AoE2DE.exe+1541CE8 - F3 0F2C 44 24 38      - cvttss2si eax,[rsp+38]
AoE2DE.exe+1541CEE - 66 0F6E C0            - movd xmm0,eax
AoE2DE.exe+1541CF2 - 0F5B C0               - cvtdq2ps xmm0,xmm0
AoE2DE.exe+1541CF5 - F3 41 0F11 41 1C      - movss [r9+1C],xmm0
AoE2DE.exe+1541CFB - 45 85 C0              - test r8d,r8d

}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>3</ID>
          <Description>"Set resource to:"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF0080</Color>
          <VariableType>Float</VariableType>
          <Address>vf_min_resource</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>4</ID>
          <Description>"Set resource?"</Description>
          <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>is_res_lock_on</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>1</ID>
      <Description>"Steam, Xbox Games (maybe?): Age of Empires II: Definitive Edition  101.102.8319.0 /  https://opencheattables.com  /  CE 7.4"</Description>
      <Color>400080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
