<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <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>"Toggle Scripts"</Description>
      <Color>0080FF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript Async="1">[ENABLE]
{$lua}
if (syntaxcheck) then return end
getLuaEngine().menuItem5.doClick()
getLuaEngine().Close()

local enableBattleScripts = {
  0, -- "Compact Mode"
  19, -- "Battle: inf. Pork Bun / Baozi"
  2, -- "Battle: when get hit: try to keep HP / min musou gauge"
  20, -- "Battle: skill pt (戰功) multiplier"
  22, -- "Battle: skill XP multiplier"
  24, -- "Battle: weapon EXP multiplier"
  29, -- "Battle: K.O. count multiplier"
  31, -- "Battle: inf. horse charge"
  32, -- "Battle: Horse EXP multiplier"
  34, -- "Battle: Get gained skill exp"
  41, -- "Level of Peace (太平値) multiplier"
  44, -- "Get last value of Level of Peace"
  46, -- "Get all level of peace value"
  57, -- "Get horse EXP"
  60, -- "Get money"
  14, -- "Musou gauge multiplier"
  16, -- "Skill gauge multiplier"
}
local addressList = getAddressList()
for _, id in ipairs(enableBattleScripts) do
  addressList.getMemoryRecordByID(id).Active = true
end
getLuaEngine().Close()
[DISABLE]
{$lua}
if (syntaxcheck) then return end
getLuaEngine().menuItem5.doClick()
getLuaEngine().Close()

local disableBattleScripts = {
  16, -- "Skill gauge multiplier"
  14, -- "Musou gauge multiplier"
  60, -- "Get money"
  57, -- "Get horse EXP"
  46, -- "Get all level of peace value"
  44, -- "Get last value of Level of Peace"
  41, -- "Level of Peace (太平値) multiplier"
  34, -- "Battle: Get gained skill exp"
  32, -- "Battle: Horse EXP multiplier"
  31, -- "Battle: inf. horse charge"
  29, -- "Battle: K.O. count multiplier"
  24, -- "Battle: weapon EXP multiplier"
  22, -- "Battle: skill XP multiplier"
  20, -- "Battle: skill pt (戰功) multiplier"
  2, -- "Battle: when get hit: try to keep HP / min musou gauge"
  19, -- "Battle: inf. Pork Bun / Baozi"
  0, -- "Compact Mode"
}
local addressList = getAddressList()
for _, id in ipairs(disableBattleScripts) do
  addressList.getMemoryRecordByID(id).Active = false
end
getLuaEngine().Close()
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>2</ID>
      <Description>"Battle: when get hit: try to keep HP / min musou gauge"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DWORIGINS.exe
  Version: 
  Date   : 2025-01-16
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_INF_HP,$process,F3 0F 10 51 38 0F 2F E2) // should be unique
alloc(newmem,$1000,INJECT_INF_HP)

label(code)
label(return)
label(vf_hp_ratio)
label(i_base_hp_addr)
label(vf_min_musou_ratio)
label(vf_frndly_hp_ratio)
label(vf_trash_mob_hp_threshold)

newmem:
  cmp qword ptr [rcx+10], 0
  je code
  push rax
  mov rax, [rcx+10]
  test rax, rax
  jz endp
  cmp dword ptr [rax+2C], 0
  jne to_non_player
  cmp dword ptr [rcx+44], BF800000 // -1
  je to_non_player

to_player:
  mov [i_base_hp_addr], rcx
  movss xmm15, [rcx+34]
  vmovss xmm14, [vf_hp_ratio]
  vmulss xmm15, xmm14, xmm15
  vucomiss xmm15, [rcx+38]
  jbe @F
  movss [rcx+38], xmm15

@@:
  vmovss xmm14, [vf_min_musou_ratio]
  vmovss xmm15, [rcx+40]
  vmulss xmm15, xmm14, xmm15
  vucomiss xmm15, [rcx+44]
  jbe endp
  movss [rcx+44], xmm15

  jmp endp

to_non_player:
  cmp dword ptr [rax+38], 0
  ja to_enemy
  cmp dword ptr [rax+40], 0  // ALSO 9C, a0 = 0
  jne to_enemy
  cmp dword ptr [rcx+44], 0  // trash mob?
  je to_enemy

  //debug
  movss xmm2,[rcx+38]
  //

  movss xmm15, [rcx+34]
  vmovss xmm14, [vf_frndly_hp_ratio]
  vmulss xmm15, xmm14, xmm15
  vucomiss xmm15, [rcx+38]
  jbe @F
  movss [rcx+38], xmm15

@@:

  jmp endp
to_enemy:
  db EB 3B 54
  db 68 69 73 20 74 61 62 6C 65
  db 20 63 6F 6D
  db 65 73 20 66 72 6F 6D 20
  db 68 74 74 70
  db 73 3A 2F 2F 6F 70 65 6E 63 68 65 61
  db 74 74 61 62
  db 6C 65
  db 73 2E
  db 63 6F 6D 20
  db 2F
  db 20
  db 43 45 20 37
  db 2E 34 2B
endp:
  pop rax

code:
  movss xmm2,[rcx+38]
  jmp return
align 10 cc
  vf_400:
  dd (float)100
  vf_hp_ratio:
  dd (float)0.25
  i_base_hp_addr:
  dq 0
  vf_min_musou_ratio:
  dd (float)0.8
  vf_frndly_hp_ratio:
  dd (float)0
  vf_m1:
  dd (float)-1
  vf_trash_mob_hp_threshold:
  dd (float)299


INJECT_INF_HP:
  jmp newmem
return:
registersymbol(INJECT_INF_HP)
registersymbol(vf_hp_ratio)
registersymbol(i_base_hp_addr)
registersymbol(vf_min_musou_ratio)
registersymbol(vf_frndly_hp_ratio)
registersymbol(vf_trash_mob_hp_threshold)

[DISABLE]

INJECT_INF_HP:
  db F3 0F 10 51 38

unregistersymbol(INJECT_INF_HP)
unregistersymbol(vf_hp_ratio)
unregistersymbol(i_base_hp_addr)
unregistersymbol(vf_min_musou_ratio)
unregistersymbol(vf_frndly_hp_ratio)
unregistersymbol(vf_trash_mob_hp_threshold)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DWORIGINS.exe+10B7C3

DWORIGINS.exe+10B7A9: 89 41 34              - mov [rcx+34],eax
DWORIGINS.exe+10B7AC: C3                    - ret 
DWORIGINS.exe+10B7AD: CC                    - int 3 
DWORIGINS.exe+10B7AE: CC                    - int 3 
DWORIGINS.exe+10B7AF: CC                    - int 3 
DWORIGINS.exe+10B7B0: 48 83 EC 28           - sub rsp,28
DWORIGINS.exe+10B7B4: 0F 57 E4              - xorps xmm4,xmm4
DWORIGINS.exe+10B7B7: 48 8B D1              - mov rdx,rcx
DWORIGINS.exe+10B7BA: 0F 2F E1              - comiss xmm4,xmm1
DWORIGINS.exe+10B7BD: 0F 87 B8 00 00 00     - ja DWORIGINS.exe+10B87B
// ---------- INJECTING HERE ----------
DWORIGINS.exe+10B7C3: F3 0F 10 51 38        - movss xmm2,[rcx+38]
// ---------- DONE INJECTING  ----------
DWORIGINS.exe+10B7C8: 0F 2F E2              - comiss xmm4,xmm2
DWORIGINS.exe+10B7CB: 0F 87 AA 00 00 00     - ja DWORIGINS.exe+10B87B
DWORIGINS.exe+10B7D1: 8B 41 18              - mov eax,[rcx+18]
DWORIGINS.exe+10B7D4: 48 A9 00 00 00 20     - test rax,20000000
DWORIGINS.exe+10B7DA: 0F 87 9B 00 00 00     - ja DWORIGINS.exe+10B87B
DWORIGINS.exe+10B7E0: 48 8B 41 10           - mov rax,[rcx+10]
DWORIGINS.exe+10B7E4: 0F 57 C0              - xorps xmm0,xmm0
DWORIGINS.exe+10B7E7: F3 0F 10 59 34        - movss xmm3,[rcx+34]
DWORIGINS.exe+10B7EC: F6 80 00 02 00 00 02  - test byte ptr [rax+00000200],02
DWORIGINS.exe+10B7F3: 74 16                 - je DWORIGINS.exe+10B80B
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>3</ID>
          <Description>"min. HP Ratio"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_hp_ratio</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>4</ID>
          <Description>"Nearby friendly named char min. HP ratio"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_frndly_hp_ratio</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>5</ID>
          <Description>"Min. musou ratio"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_min_musou_ratio</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>6</ID>
          <Description>"Max HP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Float</VariableType>
          <Address>i_base_hp_addr</Address>
          <Offsets>
            <Offset>34</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>7</ID>
          <Description>"HP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Float</VariableType>
          <Address>i_base_hp_addr</Address>
          <Offsets>
            <Offset>38</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>8</ID>
          <Description>"Max musou"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Float</VariableType>
          <Address>i_base_hp_addr</Address>
          <Offsets>
            <Offset>40</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>9</ID>
          <Description>"Musou"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Float</VariableType>
          <Address>i_base_hp_addr</Address>
          <Offsets>
            <Offset>44</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>10</ID>
          <Description>"Max skill"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Float</VariableType>
          <Address>i_base_hp_addr</Address>
          <Offsets>
            <Offset>6C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>11</ID>
          <Description>"Skill"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Float</VariableType>
          <Address>i_base_hp_addr</Address>
          <Offsets>
            <Offset>70</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>12</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Float</VariableType>
          <Address>i_base_hp_addr</Address>
          <Offsets>
            <Offset>110</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>13</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Float</VariableType>
          <Address>i_base_hp_addr</Address>
          <Offsets>
            <Offset>114</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>14</ID>
          <Description>"Musou gauge multiplier"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : DWORIGINS.exe
  Version: 
  Date   : 2025-01-16
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_MUSOU_MULTI,$process,F3 0F 58 CE 0F 2F CA 72 05) // should be unique
alloc(newmem,$1000,INJECT_MUSOU_MULTI)

label(code)
label(return vf_musou_multi)

newmem:
  cmp rbx, [i_base_hp_addr]
  jne code
  vxorps xmm15, xmm15, xmm15
  vucomiss xmm6, xmm15
  jbe code

  vmovss xmm14, [vf_min_musou_ratio]
  vmulss xmm13, xmm14, xmm2
  vucomiss xmm1, xmm13
  jae @F
  movss xmm1, xmm13

@@:
  vmovss xmm15, [vf_musou_multi]
  vmulss xmm6, xmm6, xmm15

code:
  addss xmm1,xmm6
  comiss xmm1,xmm2
  jmp return
align 10 cc
  vf_musou_multi:
  dd (float)3.33333

INJECT_MUSOU_MULTI:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_MUSOU_MULTI vf_musou_multi)

[DISABLE]

INJECT_MUSOU_MULTI:
  db F3 0F 58 CE 0F 2F CA

unregistersymbol(INJECT_MUSOU_MULTI vf_musou_multi)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DWORIGINS.exe+10BD51

DWORIGINS.exe+10BD2B: 76 15              - jna DWORIGINS.exe+10BD42
DWORIGINS.exe+10BD2D: E8 BE 60 96 00     - call DWORIGINS.exe+A71DF0
DWORIGINS.exe+10BD32: 85 C0              - test eax,eax
DWORIGINS.exe+10BD34: 75 0C              - jne DWORIGINS.exe+10BD42
DWORIGINS.exe+10BD36: 8D 48 6C           - lea ecx,[rax+6C]
DWORIGINS.exe+10BD39: E8 12 4E FA FF     - call DWORIGINS.exe+B0B50
DWORIGINS.exe+10BD3E: F3 0F 59 F0        - mulss xmm6,xmm0
DWORIGINS.exe+10BD42: F3 44 0F 10 4B 44  - movss xmm9,[rbx+44]
DWORIGINS.exe+10BD48: F3 0F 10 53 40     - movss xmm2,[rbx+40]
DWORIGINS.exe+10BD4D: 41 0F 28 C9        - movaps xmm1,xmm9
// ---------- INJECTING HERE ----------
DWORIGINS.exe+10BD51: F3 0F 58 CE        - addss xmm1,xmm6
// ---------- DONE INJECTING  ----------
DWORIGINS.exe+10BD55: 0F 2F CA           - comiss xmm1,xmm2
DWORIGINS.exe+10BD58: 72 05              - jb DWORIGINS.exe+10BD5F
DWORIGINS.exe+10BD5A: 0F 28 C2           - movaps xmm0,xmm2
DWORIGINS.exe+10BD5D: EB 07              - jmp DWORIGINS.exe+10BD66
DWORIGINS.exe+10BD5F: 0F 57 C0           - xorps xmm0,xmm0
DWORIGINS.exe+10BD62: F3 0F 5F C1        - maxss xmm0,xmm1
DWORIGINS.exe+10BD66: 0F 2E C2           - ucomiss xmm0,xmm2
DWORIGINS.exe+10BD69: F3 0F 11 43 44     - movss [rbx+44],xmm0
DWORIGINS.exe+10BD6E: 0F 8A 83 01 00 00  - jp DWORIGINS.exe+10BEF7
DWORIGINS.exe+10BD74: 0F 85 7D 01 00 00  - jne DWORIGINS.exe+10BEF7
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>15</ID>
              <Description>"multiplier"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>vf_musou_multi</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>16</ID>
          <Description>"Skill gauge multiplier"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : DWORIGINS.exe
  Version: 
  Date   : 2025-01-16
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_SKILL_MULTI,$process,F3 41 0F 58 4A 70) // should be unique
alloc(newmem,$1000,INJECT_SKILL_MULTI)

label(code)
label(return vf_skill_multi vf_sk_dec_multi)

newmem:
  cmp r10, [i_base_hp_addr]
  jne code
  vxorps xmm15, xmm15, xmm15
  vucomiss xmm1, xmm15
  ja to_plus
  vmovss xmm15, [vf_sk_dec_multi]
  jmp to_calc
to_plus:
  vmovss xmm15, [vf_skill_multi]
to_calc:
  vmulss xmm1, xmm1, xmm15


code:
  addss xmm1,[r10+70]
  jmp return
align 10 cc
  vf_skill_multi:
  dd (float)3.33333333333
  vf_033:
  dd (float)0.33333333
  vf_sk_dec_multi:
  dd (float)0.33333333


INJECT_SKILL_MULTI:
  jmp newmem
  nop
return:
registersymbol(INJECT_SKILL_MULTI vf_skill_multi vf_sk_dec_multi)

[DISABLE]

INJECT_SKILL_MULTI:
  db F3 41 0F 58 4A 70

unregistersymbol(INJECT_SKILL_MULTI vf_skill_multi vf_sk_dec_multi)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DWORIGINS.exe+10C0A6

DWORIGINS.exe+10C081: F6 82 00 02 00 00 04  - test byte ptr [rdx+00000200],04
DWORIGINS.exe+10C088: 74 1C                 - je DWORIGINS.exe+10C0A6
DWORIGINS.exe+10C08A: 0F 2F CB              - comiss xmm1,xmm3
DWORIGINS.exe+10C08D: 76 17                 - jna DWORIGINS.exe+10C0A6
DWORIGINS.exe+10C08F: E8 5C 5D 96 00        - call DWORIGINS.exe+A71DF0
DWORIGINS.exe+10C094: 85 C0                 - test eax,eax
DWORIGINS.exe+10C096: 75 0E                 - jne DWORIGINS.exe+10C0A6
DWORIGINS.exe+10C098: B9 86 00 00 00        - mov ecx,00000086
DWORIGINS.exe+10C09D: E8 AE 4A FA FF        - call DWORIGINS.exe+B0B50
DWORIGINS.exe+10C0A2: F3 0F 59 C8           - mulss xmm1,xmm0
// ---------- INJECTING HERE ----------
DWORIGINS.exe+10C0A6: F3 41 0F 58 4A 70     - addss xmm1,[r10+70]
// ---------- DONE INJECTING  ----------
DWORIGINS.exe+10C0AC: F3 41 0F 10 42 6C     - movss xmm0,[r10+6C]
DWORIGINS.exe+10C0B2: 0F 2F C8              - comiss xmm1,xmm0
DWORIGINS.exe+10C0B5: 73 07                 - jae DWORIGINS.exe+10C0BE
DWORIGINS.exe+10C0B7: 0F 28 C3              - movaps xmm0,xmm3
DWORIGINS.exe+10C0BA: F3 0F 5F C1           - maxss xmm0,xmm1
DWORIGINS.exe+10C0BE: F3 41 0F 11 42 70     - movss [r10+70],xmm0
DWORIGINS.exe+10C0C4: 48 83 C4 28           - add rsp,28
DWORIGINS.exe+10C0C8: C3                    - ret 
DWORIGINS.exe+10C0C9: CC                    - int 3 
DWORIGINS.exe+10C0CA: CC                    - int 3 
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>17</ID>
              <Description>"multiplier"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>vf_skill_multi</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>18</ID>
              <Description>"decrease multiplier"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>vf_sk_dec_multi</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>19</ID>
      <Description>"Battle: inf. Pork Bun / Baozi"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DWORIGINS.exe
  Version: 
  Date   : 2025-01-16
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_INF_DUMPLING,$process,66 83 BF 98 09 00 00 00) // should be unique
alloc(newmem,$1000,INJECT_INF_DUMPLING)

label(code)
label(return)

newmem:
  cmp word ptr [rdi+00000998],3
  jae code
  mov word ptr [rdi+00000998],3

code:
  cmp word ptr [rdi+00000998],00
  jmp return

INJECT_INF_DUMPLING:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_INF_DUMPLING)

[DISABLE]

INJECT_INF_DUMPLING:
  db 66 83 BF 98 09 00 00 00

unregistersymbol(INJECT_INF_DUMPLING)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DWORIGINS.exe+182BC9

DWORIGINS.exe+182BA3: 48 8B 81 B8 45 00 00     - mov rax,[rcx+000045B8]
DWORIGINS.exe+182BAA: 48 85 C0                 - test rax,rax
DWORIGINS.exe+182BAD: 74 59                    - je DWORIGINS.exe+182C08
DWORIGINS.exe+182BAF: F6 80 00 02 00 00 04     - test byte ptr [rax+00000200],04
DWORIGINS.exe+182BB6: 75 07                    - jne DWORIGINS.exe+182BBF
DWORIGINS.exe+182BB8: 48 8B 81 C8 45 00 00     - mov rax,[rcx+000045C8]
DWORIGINS.exe+182BBF: 48 85 C0                 - test rax,rax
DWORIGINS.exe+182BC2: 74 44                    - je DWORIGINS.exe+182C08
DWORIGINS.exe+182BC4: 48 85 FF                 - test rdi,rdi
DWORIGINS.exe+182BC7: 74 3F                    - je DWORIGINS.exe+182C08
// ---------- INJECTING HERE ----------
DWORIGINS.exe+182BC9: 66 83 BF 98 09 00 00 00  - cmp word ptr [rdi+00000998],00
// ---------- DONE INJECTING  ----------
DWORIGINS.exe+182BD1: 74 2B                    - je DWORIGINS.exe+182BFE
DWORIGINS.exe+182BD3: 48 8B 88 00 03 00 00     - mov rcx,[rax+00000300]
DWORIGINS.exe+182BDA: 48 85 C9                 - test rcx,rcx
DWORIGINS.exe+182BDD: 74 0C                    - je DWORIGINS.exe+182BEB
DWORIGINS.exe+182BDF: F3 0F 10 41 34           - movss xmm0,[rcx+34]
DWORIGINS.exe+182BE4: F3 0F 10 49 38           - movss xmm1,[rcx+38]
DWORIGINS.exe+182BE9: EB 06                    - jmp DWORIGINS.exe+182BF1
DWORIGINS.exe+182BEB: 0F 57 C0                 - xorps xmm0,xmm0
DWORIGINS.exe+182BEE: 0F 57 C9                 - xorps xmm1,xmm1
DWORIGINS.exe+182BF1: F3 0F 5C 05 1F 9C 22 03  - subss xmm0,[DWORIGINS.exe+33AC818]
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>20</ID>
      <Description>"Battle: skill pt (戰功) multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DWORIGINS.exe
  Version: 
  Date   : 2025-01-16
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_SKILL_PT_MULTI,$process,66 41 03 C9 66 3B C8 73 0C 66 85 C9 66 44 0F 45 C1 41 0F B7 C0 66 89 82 58) // should be unique
alloc(newmem,$1000,INJECT_SKILL_PT_MULTI)

label(code)
label(return vf_skill_pt_multi)

newmem:
  //push rcx
  //and ecx, 0000FFFF
  vcvtsi2ss xmm15, xmm15, ecx
  vmovss xmm14, [vf_skill_pt_multi]
  vmulss xmm15, xmm15, xmm14
  vmovss xmm14, [vf_999]
  vucomiss xmm15, xmm14
  jbe @F
  vmovss xmm15, [vf_999]
@@:
  vcvtss2si ecx, xmm15
  //pop rcx

code:
  add cx,r9w
  cmp cx,ax
  jmp return
align 10 cc
  vf_skill_pt_multi:
  dd (float)2.5
  vf_999:
  dd (float)999

INJECT_SKILL_PT_MULTI:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_SKILL_PT_MULTI vf_skill_pt_multi)

[DISABLE]

INJECT_SKILL_PT_MULTI:
  db 66 41 03 C9 66 3B C8

unregistersymbol(INJECT_SKILL_PT_MULTI vf_skill_pt_multi)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DWORIGINS.exe+A7613E

DWORIGINS.exe+A76116: 44 0F B7 92 58 04 00 00  - movzx r10d,word ptr [rdx+00000458]
DWORIGINS.exe+A7611E: B8 E7 03 00 00           - mov eax,000003E7
DWORIGINS.exe+A76123: 45 33 C0                 - xor r8d,r8d
DWORIGINS.exe+A76126: 66 44 3B D0              - cmp r10w,ax
DWORIGINS.exe+A7612A: 72 06                    - jb DWORIGINS.exe+A76132
DWORIGINS.exe+A7612C: 44 0F B7 C8              - movzx r9d,ax
DWORIGINS.exe+A76130: EB 0C                    - jmp DWORIGINS.exe+A7613E
DWORIGINS.exe+A76132: 66 45 85 D2              - test r10w,r10w
DWORIGINS.exe+A76136: 45 8B C8                 - mov r9d,r8d
DWORIGINS.exe+A76139: 66 45 0F 45 CA           - cmovne r9w,r10w
// ---------- INJECTING HERE ----------
DWORIGINS.exe+A7613E: 66 41 03 C9              - add cx,r9w
// ---------- DONE INJECTING  ----------
DWORIGINS.exe+A76142: 66 3B C8                 - cmp cx,ax
DWORIGINS.exe+A76145: 73 0C                    - jae DWORIGINS.exe+A76153
DWORIGINS.exe+A76147: 66 85 C9                 - test cx,cx
DWORIGINS.exe+A7614A: 66 44 0F 45 C1           - cmovne r8w,cx
DWORIGINS.exe+A7614F: 41 0F B7 C0              - movzx eax,r8w
DWORIGINS.exe+A76153: 66 89 82 58 04 00 00     - mov [rdx+00000458],ax
DWORIGINS.exe+A7615A: C3                       - ret 
DWORIGINS.exe+A7615B: CC                       - int 3 
DWORIGINS.exe+A7615C: CC                       - int 3 
DWORIGINS.exe+A7615D: CC                       - int 3 
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>21</ID>
          <Description>"multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_skill_pt_multi</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>22</ID>
      <Description>"Battle: skill XP multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DWORIGINS.exe
  Version: 
  Date   : 2025-01-17
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_SKILL_XP_MULTI_3,$process,8D 48 01 3B CD) // should be unique
alloc(newmem,$1000,INJECT_SKILL_XP_MULTI_3)

label(code)
label(return i_skill_xp_multi_3)

newmem:
  push r14
  mov r14, [i_skill_xp_multi_3]
  lea ecx,[rax+r14]
  pop r14

code:
  //lea ecx,[rax+01]
  cmp ecx,ebp
  jmp return
align 10 cc
  i_skill_xp_multi_3:
  db 3
  db 0
  dw 0
  dd 0

INJECT_SKILL_XP_MULTI_3:
  jmp newmem
return:
registersymbol(INJECT_SKILL_XP_MULTI_3 i_skill_xp_multi_3)

[DISABLE]

INJECT_SKILL_XP_MULTI_3:
  db 8D 48 01 3B CD

unregistersymbol(INJECT_SKILL_XP_MULTI_3 i_skill_xp_multi_3)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DWORIGINS.exe+187D55

DWORIGINS.exe+187D29: 0F 84 AD 00 00 00     - je DWORIGINS.exe+187DDC
DWORIGINS.exe+187D2F: 3B DD                 - cmp ebx,ebp
DWORIGINS.exe+187D31: 0F 87 A5 00 00 00     - ja DWORIGINS.exe+187DDC
DWORIGINS.exe+187D37: BA 09 00 00 00        - mov edx,00000009
DWORIGINS.exe+187D3C: 48 8B CE              - mov rcx,rsi
DWORIGINS.exe+187D3F: 44 8D 42 F8           - lea r8d,[rdx-08]
DWORIGINS.exe+187D43: E8 A8 C6 1F 00        - call DWORIGINS.exe+3843F0
DWORIGINS.exe+187D48: 48 63 C3              - movsxd  rax,ebx
DWORIGINS.exe+187D4B: 48 8D 14 86           - lea rdx,[rsi+rax*4]
DWORIGINS.exe+187D4F: 8B 82 00 0A 00 00     - mov eax,[rdx+00000A00]
// ---------- INJECTING HERE ----------
DWORIGINS.exe+187D55: 8D 48 01              - lea ecx,[rax+01]
// ---------- DONE INJECTING  ----------
DWORIGINS.exe+187D58: 3B CD                 - cmp ecx,ebp
DWORIGINS.exe+187D5A: 72 05                 - jb DWORIGINS.exe+187D61
DWORIGINS.exe+187D5C: 0F B7 C5              - movzx eax,bp
DWORIGINS.exe+187D5F: EB 08                 - jmp DWORIGINS.exe+187D69
DWORIGINS.exe+187D61: 33 C0                 - xor eax,eax
DWORIGINS.exe+187D63: 85 C9                 - test ecx,ecx
DWORIGINS.exe+187D65: 66 0F 45 C1           - cmovne ax,cx
DWORIGINS.exe+187D69: 0F B7 C0              - movzx eax,ax
DWORIGINS.exe+187D6C: 89 82 00 0A 00 00     - mov [rdx+00000A00],eax
DWORIGINS.exe+187D72: 48 8B 05 07 9C 83 03  - mov rax,[DWORIGINS.exe+39C1980]
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>23</ID>
          <Description>"multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Byte</VariableType>
          <Address>i_skill_xp_multi_3</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>24</ID>
      <Description>"Battle: weapon EXP multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DWORIGINS.exe
  Version: 
  Date   : 2025-01-16
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_WEAPON_EXP_MULTI,$process,F3 0F 58 94 BD AC 09 00 00) // should be unique
alloc(newmem,$1000,INJECT_WEAPON_EXP_MULTI)

label(code)
label(return vf_weapon_exp_multi i_last_weapon_exp_addr i_base_weapon_addr i_last_weapon_idx)

newmem:
  push r15
  lea r15, [rbp+rdi*4]
  mov [i_base_weapon_addr], rbp
  mov [i_last_weapon_idx], rdi
  mov [i_last_weapon_exp_addr], r15
  pop r15
  vmovss xmm15, [vf_weapon_exp_multi]
  vmulss xmm2, xmm2, xmm15

code:
  addss xmm2,[rbp+rdi*4+000009AC]
  jmp return
align 10 cc
  i_last_weapon_exp_addr:
  dq 0
  i_base_weapon_addr:
  dq 0
  i_last_weapon_idx:
  dq 0
  vf_weapon_exp_multi:
  dd (float)3.33333


INJECT_WEAPON_EXP_MULTI:
  jmp newmem
  nop 4
return:
registersymbol(INJECT_WEAPON_EXP_MULTI vf_weapon_exp_multi i_last_weapon_exp_addr i_base_weapon_addr i_last_weapon_idx)

[DISABLE]

INJECT_WEAPON_EXP_MULTI:
  db F3 0F 58 94 BD AC 09 00 00

unregistersymbol(INJECT_WEAPON_EXP_MULTI vf_weapon_exp_multi i_last_weapon_exp_addr i_base_weapon_addr i_last_weapon_idx)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DWORIGINS.exe+384299

DWORIGINS.exe+384275: 48 3B C8                       - cmp rcx,rax
DWORIGINS.exe+384278: 73 0A                          - jae DWORIGINS.exe+384284
DWORIGINS.exe+38427A: 48 85 C9                       - test rcx,rcx
DWORIGINS.exe+38427D: 48 8B C1                       - mov rax,rcx
DWORIGINS.exe+384280: 48 0F 44 C6                    - cmove rax,rsi
DWORIGINS.exe+384284: 8B C0                          - mov eax,eax
DWORIGINS.exe+384286: 0F 57 C0                       - xorps xmm0,xmm0
DWORIGINS.exe+384289: F3 48 0F 2A C0                 - cvtsi2ss xmm0,rax
DWORIGINS.exe+38428E: F3 0F 11 84 BD D4 09 00 00     - movss [rbp+rdi*4+000009D4],xmm0
DWORIGINS.exe+384297: EB 53                          - jmp DWORIGINS.exe+3842EC
// ---------- INJECTING HERE ----------
DWORIGINS.exe+384299: F3 0F 58 94 BD AC 09 00 00     - addss xmm2,[rbp+rdi*4+000009AC]
// ---------- DONE INJECTING  ----------
DWORIGINS.exe+3842A2: 0F 2F D0                       - comiss xmm2,xmm0
DWORIGINS.exe+3842A5: 72 16                          - jb DWORIGINS.exe+3842BD
DWORIGINS.exe+3842A7: F3 0F 5C D0                    - subss xmm2,xmm0
DWORIGINS.exe+3842AB: 0F 2F D0                       - comiss xmm2,xmm0
DWORIGINS.exe+3842AE: 73 0D                          - jae DWORIGINS.exe+3842BD
DWORIGINS.exe+3842B0: 48 B8 00 00 00 00 00 00 00 80  - mov rax,8000000000000000
DWORIGINS.exe+3842BA: 48 03 D0                       - add rdx,rax
DWORIGINS.exe+3842BD: F3 48 0F 2C CA                 - cvttss2si rcx,xmm2
DWORIGINS.exe+3842C2: B8 3F 42 0F 00                 - mov eax,000F423F
DWORIGINS.exe+3842C7: 48 03 CA                       - add rcx,rdx
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>25</ID>
          <Description>"multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_weapon_exp_multi</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>26</ID>
          <Description>"Gained exp (during battle)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Float</VariableType>
          <Address>i_last_weapon_exp_addr</Address>
          <Offsets>
            <Offset>9AC</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>27</ID>
          <Description>"Base addr."</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>808080</Color>
          <VariableType>8 Bytes</VariableType>
          <Address>i_base_weapon_addr</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>28</ID>
          <Description>"Index"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>808080</Color>
          <VariableType>8 Bytes</VariableType>
          <Address>i_last_weapon_idx</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>29</ID>
      <Description>"Battle: K.O. count multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DWORIGINS.exe
  Version: 
  Date   : 2025-01-17
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_KOCNT_MULTI,$process,8B F9 42 8D 04 39) // should be unique
alloc(newmem,$1000,INJECT_KOCNT_MULTI)

label(code)
label(return vf_ko_cnt_multi)

newmem:
  vcvtsi2ss xmm15, xmm15, r15
  vmovss xmm14, [vf_ko_cnt_multi]
  vmulss xmm15, xmm14, xmm15
  vcvtss2si r15, xmm15

code:
  mov edi,ecx
  lea eax,[rcx+r15]
  jmp return
align 10 cc
  vf_ko_cnt_multi:
  dd (float)2

INJECT_KOCNT_MULTI:
  jmp newmem
  nop
return:
registersymbol(INJECT_KOCNT_MULTI vf_ko_cnt_multi)

[DISABLE]

INJECT_KOCNT_MULTI:
  db 8B F9 42 8D 04 39

unregistersymbol(INJECT_KOCNT_MULTI vf_ko_cnt_multi)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DWORIGINS.exe+22A3D6

DWORIGINS.exe+22A3AF: 4C 89 60 20           - mov [rax+20],r12
DWORIGINS.exe+22A3B3: 4C 89 70 E8           - mov [rax-18],r14
DWORIGINS.exe+22A3B7: E8 94 A7 04 00        - call DWORIGINS.exe+274B50
DWORIGINS.exe+22A3BC: 45 33 E4              - xor r12d,r12d
DWORIGINS.exe+22A3BF: 48 85 C0              - test rax,rax
DWORIGINS.exe+22A3C2: 74 09                 - je DWORIGINS.exe+22A3CD
DWORIGINS.exe+22A3C4: 44 8B B0 D0 01 00 00  - mov r14d,[rax+000001D0]
DWORIGINS.exe+22A3CB: EB 03                 - jmp DWORIGINS.exe+22A3D0
DWORIGINS.exe+22A3CD: 45 8B F4              - mov r14d,r12d
DWORIGINS.exe+22A3D0: 8B 8B D0 01 00 00     - mov ecx,[rbx+000001D0]
// ---------- INJECTING HERE ----------
DWORIGINS.exe+22A3D6: 8B F9                 - mov edi,ecx
// ---------- DONE INJECTING  ----------
DWORIGINS.exe+22A3D8: 42 8D 04 39           - lea eax,[rcx+r15]
DWORIGINS.exe+22A3DC: 3D 9F 86 01 00        - cmp eax,0001869F
DWORIGINS.exe+22A3E1: 77 08                 - ja DWORIGINS.exe+22A3EB
DWORIGINS.exe+22A3E3: 89 83 D0 01 00 00     - mov [rbx+000001D0],eax
DWORIGINS.exe+22A3E9: 8B F8                 - mov edi,eax
DWORIGINS.exe+22A3EB: 2B F9                 - sub edi,ecx
DWORIGINS.exe+22A3ED: 48 8B 8B A0 3D 00 00  - mov rcx,[rbx+00003DA0]
DWORIGINS.exe+22A3F4: E8 57 A7 04 00        - call DWORIGINS.exe+274B50
DWORIGINS.exe+22A3F9: 48 85 C0              - test rax,rax
DWORIGINS.exe+22A3FC: 74 08                 - je DWORIGINS.exe+22A406
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>30</ID>
          <Description>"multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_ko_cnt_multi</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>31</ID>
      <Description>"Battle: inf. horse charge"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DWORIGINS.exe
  Version: 
  Date   : 2025-01-17
  Author : bfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_INF_HORSE_CHARGE,$process,F3 0F 10 80 80 02 00 00 F3) // should be unique
alloc(newmem,$1000,INJECT_INF_HORSE_CHARGE)

label(code)
label(return)

newmem:
  vmovss xmm14, [vf_100]
  vucomiss xmm14, [rax+00000280]
  jbe code
  movss [rax+00000280], xmm14


code:
  movss xmm0,[rax+00000280]
  jmp return
align 10 cc
  vf_100:
  dd (float)100

INJECT_INF_HORSE_CHARGE:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_INF_HORSE_CHARGE)

[DISABLE]

INJECT_INF_HORSE_CHARGE:
  db F3 0F 10 80 80 02 00 00

unregistersymbol(INJECT_INF_HORSE_CHARGE)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DWORIGINS.exe+FCF0AE

DWORIGINS.exe+FCF081: 74 1B                    - je DWORIGINS.exe+FCF09E
DWORIGINS.exe+FCF083: 8B 90 98 7F 00 00        - mov edx,[rax+00007F98]
DWORIGINS.exe+FCF089: 8D 42 F6                 - lea eax,[rdx-0A]
DWORIGINS.exe+FCF08C: 83 F8 02                 - cmp eax,02
DWORIGINS.exe+FCF08F: 0F 86 9F 00 00 00        - jbe DWORIGINS.exe+FCF134
DWORIGINS.exe+FCF095: 83 FA 12                 - cmp edx,12
DWORIGINS.exe+FCF098: 0F 84 96 00 00 00        - je DWORIGINS.exe+FCF134
DWORIGINS.exe+FCF09E: 49 8B 86 D8 02 00 00     - mov rax,[r14+000002D8]
DWORIGINS.exe+FCF0A5: 48 85 C0                 - test rax,rax
DWORIGINS.exe+FCF0A8: 0F 84 92 00 00 00        - je DWORIGINS.exe+FCF140
// ---------- INJECTING HERE ----------
DWORIGINS.exe+FCF0AE: F3 0F 10 80 80 02 00 00  - movss xmm0,[rax+00000280]
// ---------- DONE INJECTING  ----------
DWORIGINS.exe+FCF0B6: F3 0F 10 88 7C 02 00 00  - movss xmm1,[rax+0000027C]
DWORIGINS.exe+FCF0BE: F3 0F 11 45 C8           - movss [rbp-38],xmm0
DWORIGINS.exe+FCF0C3: F3 0F 11 4D CC           - movss [rbp-34],xmm1
DWORIGINS.exe+FCF0C8: 48 85 C9                 - test rcx,rcx
DWORIGINS.exe+FCF0CB: 74 16                    - je DWORIGINS.exe+FCF0E3
DWORIGINS.exe+FCF0CD: 48 8B 41 10              - mov rax,[rcx+10]
DWORIGINS.exe+FCF0D1: 48 85 C0                 - test rax,rax
DWORIGINS.exe+FCF0D4: 74 0D                    - je DWORIGINS.exe+FCF0E3
DWORIGINS.exe+FCF0D6: 81 78 04 FF 03 00 00     - cmp [rax+04],000003FF
DWORIGINS.exe+FCF0DD: C6 45 D0 01              - mov byte ptr [rbp-30],01
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>32</ID>
      <Description>"Battle: Horse EXP multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DWORIGINS.exe
  Version: 
  Date   : 2025-01-18
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_HORSE_EXP_MULTI,$process,42 8D 14 10 48 85 C9) // should be unique
alloc(newmem,$1000,INJECT_HORSE_EXP_MULTI)

label(code)
label(return vf_horse_exp_multi)

newmem:
  vcvtsi2ss xmm15, xmm15, r10
  vmovss xmm14, [vf_horse_exp_multi]
  vmulss xmm15, xmm15, xmm14
  vcvtss2si r10, xmm15

code:
  lea edx,[rax+r10]
  test rcx,rcx
  jmp return
align 10 cc
  vf_horse_exp_multi:
  dd (float)3

INJECT_HORSE_EXP_MULTI:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_HORSE_EXP_MULTI vf_horse_exp_multi)

[DISABLE]

INJECT_HORSE_EXP_MULTI:
  db 42 8D 14 10 48 85 C9

unregistersymbol(INJECT_HORSE_EXP_MULTI vf_horse_exp_multi)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DWORIGINS.exe+38950D

DWORIGINS.exe+3894F5: 8B 01           - mov eax,[rcx]
DWORIGINS.exe+3894F7: 41 3B C7        - cmp eax,r15d
DWORIGINS.exe+3894FA: 72 05           - jb DWORIGINS.exe+389501
DWORIGINS.exe+3894FC: 41 8B C7        - mov eax,r15d
DWORIGINS.exe+3894FF: EB 0C           - jmp DWORIGINS.exe+38950D
DWORIGINS.exe+389501: 85 C0           - test eax,eax
DWORIGINS.exe+389503: 0F 44 C5        - cmove eax,ebp
DWORIGINS.exe+389506: EB 05           - jmp DWORIGINS.exe+38950D
DWORIGINS.exe+389508: 48 8B CD        - mov rcx,rbp
DWORIGINS.exe+38950B: 8B C5           - mov eax,ebp
// ---------- INJECTING HERE ----------
DWORIGINS.exe+38950D: 42 8D 14 10     - lea edx,[rax+r10]
// ---------- DONE INJECTING  ----------
DWORIGINS.exe+389511: 48 85 C9        - test rcx,rcx
DWORIGINS.exe+389514: 74 11           - je DWORIGINS.exe+389527
DWORIGINS.exe+389516: 41 3B D7        - cmp edx,r15d
DWORIGINS.exe+389519: 73 09           - jae DWORIGINS.exe+389524
DWORIGINS.exe+38951B: 85 D2           - test edx,edx
DWORIGINS.exe+38951D: 44 8B FA        - mov r15d,edx
DWORIGINS.exe+389520: 44 0F 44 FD     - cmove r15d,ebp
DWORIGINS.exe+389524: 44 89 39        - mov [rcx],r15d
DWORIGINS.exe+389527: E8 14 B9 6D 00  - call DWORIGINS.exe+A64E40
DWORIGINS.exe+38952C: 8B C8           - mov ecx,eax
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>33</ID>
          <Description>"multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_horse_exp_multi</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>34</ID>
      <Description>"Battle: Get gained skill exp"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DWORIGINS.exe
  Version: 
  Date   : 2025-01-17
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_SKILL_XP_INC,$process,03 8C 82 00 0A 00 00 48 8B 05 * * * * 48 8B 90 70 01 00 00 4C) // should be unique
alloc(newmem,$1000,INJECT_GET_SKILL_XP_INC)

label(code)
label(return i_base_skill_xp_addr1)

newmem:
  push r15
  push r14
  push r13
  lea r15, [rdx+rax*4+00000A00]
  xor r13, r13

loop_1:
  mov r14, i_base_skill_xp_addr1
  lea r14, [r14+r13*8]
  cmp qword ptr [r14], r15
  je endp_pre
  cmp qword ptr [r14], 0
  je write_new_data
  jmp check_next

write_new_data:
  mov [i_idx], r13
  mov [r14], r15
  jmp endp

overwrite_data:
  mov r13, [i_idx]
  inc r13
  cmp r13, 4
  jb overwrite_data_next
  mov r13, 0

overwrite_data_next:
  mov [i_idx], r13
  mov [r14], r15
  jmp endp

check_next:
  inc r13
  cmp r13, 4
  je overwrite_data
  jmp loop_1

endp_pre:
  //mov [i_idx], r13

endp:
  pop r13
  pop r14
  pop r15

code:
  add ecx,[rdx+rax*4+00000A00]
  jmp return
align 10 cc
  i_base_skill_xp_addr1:
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0
  i_idx:
  dq 0

INJECT_GET_SKILL_XP_INC:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_GET_SKILL_XP_INC i_base_skill_xp_addr1)

[DISABLE]

INJECT_GET_SKILL_XP_INC:
  db 03 8C 82 00 0A 00 00

unregistersymbol(INJECT_GET_SKILL_XP_INC i_base_skill_xp_addr1)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DWORIGINS.exe+1033B1F

DWORIGINS.exe+1033AFF: 66 85 C0              - test ax,ax
DWORIGINS.exe+1033B02: 75 09                 - jne DWORIGINS.exe+1033B0D
DWORIGINS.exe+1033B04: 41 8B C4              - mov eax,r12d
DWORIGINS.exe+1033B07: EB 04                 - jmp DWORIGINS.exe+1033B0D
DWORIGINS.exe+1033B09: 41 0F B7 C4           - movzx eax,r12w
DWORIGINS.exe+1033B0D: 0F B7 C8              - movzx ecx,ax
DWORIGINS.exe+1033B10: 48 8B 15 71 DD 98 02  - mov rdx,[DWORIGINS.exe+39C1888]
DWORIGINS.exe+1033B17: 48 85 D2              - test rdx,rdx
DWORIGINS.exe+1033B1A: 74 0A                 - je DWORIGINS.exe+1033B26
DWORIGINS.exe+1033B1C: 48 63 C6              - movsxd  rax,esi
// ---------- INJECTING HERE ----------
DWORIGINS.exe+1033B1F: 03 8C 82 00 0A 00 00  - add ecx,[rdx+rax*4+00000A00]
// ---------- DONE INJECTING  ----------
DWORIGINS.exe+1033B26: 48 8B 05 53 DE 98 02  - mov rax,[DWORIGINS.exe+39C1980]
DWORIGINS.exe+1033B2D: 48 8B 90 70 01 00 00  - mov rdx,[rax+00000170]
DWORIGINS.exe+1033B34: 4C 8B 42 30           - mov r8,[rdx+30]
DWORIGINS.exe+1033B38: 4D 85 C0              - test r8,r8
DWORIGINS.exe+1033B3B: 74 1B                 - je DWORIGINS.exe+1033B58
DWORIGINS.exe+1033B3D: 3B 72 38              - cmp esi,[rdx+38]
DWORIGINS.exe+1033B40: 73 16                 - jae DWORIGINS.exe+1033B58
DWORIGINS.exe+1033B42: 48 8B C6              - mov rax,rsi
DWORIGINS.exe+1033B45: 48 C1 E0 04           - shl rax,04
DWORIGINS.exe+1033B49: 49 03 C0              - add rax,r8
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>35</ID>
          <Description>"Usage: open menu"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>36</ID>
          <Description>"Re-enable when get into new battle zone"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>37</ID>
          <Description>"#1"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_skill_xp_addr1</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>38</ID>
          <Description>"#2"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_skill_xp_addr1+8</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>39</ID>
          <Description>"#3"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_skill_xp_addr1+18</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>40</ID>
          <Description>"#4"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_skill_xp_addr1+10</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>41</ID>
      <Description>"Level of Peace (太平値) multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DWORIGINS.exe
  Version: 
  Date   : 2025-01-17
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_PEACE_LV_MULTI,$process,0F B7 D0 41 03 D1) // should be unique
alloc(newmem,$1000,INJECT_PEACE_LV_MULTI)

label(code)
label(return vf_peace_lv_multi)

newmem:
  vmovss xmm14, [vf_peace_lv_multi]
  vcvtsi2ss xmm15, xmm15, r9d
  vmulss xmm15, xmm14, xmm15
  vcvtss2si r9d, xmm15

code:
  movzx edx,ax
  add edx,r9d
  jmp return
align 10 cc
  vf_peace_lv_multi:
  dd (float)2

INJECT_PEACE_LV_MULTI:
  jmp newmem
  nop
return:
registersymbol(INJECT_PEACE_LV_MULTI vf_peace_lv_multi)

[DISABLE]

INJECT_PEACE_LV_MULTI:
  db 0F B7 D0 41 03 D1

unregistersymbol(INJECT_PEACE_LV_MULTI vf_peace_lv_multi)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DWORIGINS.exe+389A61

DWORIGINS.exe+389A0D - 49 8B 82 B8000000     - mov rax,[r10+000000B8]
DWORIGINS.exe+389A14 - B9 10270000           - mov ecx,00002710
DWORIGINS.exe+389A19 - 4C 8B 40 08           - mov r8,[rax+08]
DWORIGINS.exe+389A1D - 4D 85 C0              - test r8,r8
DWORIGINS.exe+389A20 - 74 3B                 - je DWORIGINS.exe+389A5D
DWORIGINS.exe+389A22 - 4D 39 78 08           - cmp [r8+08],r15
DWORIGINS.exe+389A26 - 76 35                 - jna DWORIGINS.exe+389A5D
DWORIGINS.exe+389A28 - 49 8B 00              - mov rax,[r8]
DWORIGINS.exe+389A2B - 48 8B 10              - mov rdx,[rax]
DWORIGINS.exe+389A2E - 48 85 D2              - test rdx,rdx
DWORIGINS.exe+389A31 - 74 2A                 - je DWORIGINS.exe+389A5D
DWORIGINS.exe+389A33 - 41 83 FC 0D           - cmp r12d,0D
DWORIGINS.exe+389A37 - 73 24                 - jae DWORIGINS.exe+389A5D
DWORIGINS.exe+389A39 - 41 8B C4              - mov eax,r12d
DWORIGINS.exe+389A3C - 0FB7 94 42 76090000   - movzx edx,word ptr [rdx+rax*2+00000976]
DWORIGINS.exe+389A44 - 66 3B D1              - cmp dx,cx
DWORIGINS.exe+389A47: 72 05           - jb DWORIGINS.exe+389A4E
DWORIGINS.exe+389A49: 0F B7 C1        - movzx eax,cx
DWORIGINS.exe+389A4C: EB 13           - jmp DWORIGINS.exe+389A61
DWORIGINS.exe+389A4E: 66 85 D2        - test dx,dx
DWORIGINS.exe+389A51: 75 05           - jne DWORIGINS.exe+389A58
DWORIGINS.exe+389A53: 41 8B C7        - mov eax,r15d
DWORIGINS.exe+389A56: EB 09           - jmp DWORIGINS.exe+389A61
DWORIGINS.exe+389A58: 0F B7 C2        - movzx eax,dx
DWORIGINS.exe+389A5B: EB 04           - jmp DWORIGINS.exe+389A61
DWORIGINS.exe+389A5D: 41 0F B7 C7     - movzx eax,r15w
// ---------- INJECTING HERE ----------
DWORIGINS.exe+389A61: 0F B7 D0        - movzx edx,ax
// ---------- DONE INJECTING  ----------
DWORIGINS.exe+389A64: 41 03 D1        - add edx,r9d
DWORIGINS.exe+389A67: 3B D1           - cmp edx,ecx
DWORIGINS.exe+389A69: 72 05           - jb DWORIGINS.exe+389A70
DWORIGINS.exe+389A6B: 0F B7 D1        - movzx edx,cx
DWORIGINS.exe+389A6E: EB 07           - jmp DWORIGINS.exe+389A77
DWORIGINS.exe+389A70: 85 D2           - test edx,edx
DWORIGINS.exe+389A72: 66 41 0F 44 D7  - cmove dx,r15w
DWORIGINS.exe+389A77: 4D 85 C0        - test r8,r8
DWORIGINS.exe+389A7A: 74 35           - je DWORIGINS.exe+389AB1
DWORIGINS.exe+389A7C: 4D 39 78 08     - cmp [r8+08],r15
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>42</ID>
          <Description>"Notice: This value is only 2-byte (65535 / 32767)"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>43</ID>
          <Description>"multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_peace_lv_multi</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>44</ID>
      <Description>"Get last value of Level of Peace"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DWORIGINS.exe
  Version: 
  Date   : 2025-01-17
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_LAST_PEACE_VAL,$process,0F B7 94 42 76 09 00 00) // should be unique
alloc(newmem,$1000,INJECT_GET_LAST_PEACE_VAL)

label(code)
label(return i_base_last_peace_val_addr)

newmem:
  push r15
  lea r15, [rdx+rax*2]
  mov [i_base_last_peace_val_addr], r15
  pop r15

code:
  movzx edx,word ptr [rdx+rax*2+00000976]
  jmp return
align 10 cc
  i_base_last_peace_val_addr:
  dq 0

INJECT_GET_LAST_PEACE_VAL:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_GET_LAST_PEACE_VAL i_base_last_peace_val_addr)

[DISABLE]

INJECT_GET_LAST_PEACE_VAL:
  db 0F B7 94 42 76 09 00 00

unregistersymbol(INJECT_GET_LAST_PEACE_VAL i_base_last_peace_val_addr)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DWORIGINS.exe+389A3C

DWORIGINS.exe+389A20: 74 3B                    - je DWORIGINS.exe+389A5D
DWORIGINS.exe+389A22: 4D 39 78 08              - cmp [r8+08],r15
DWORIGINS.exe+389A26: 76 35                    - jna DWORIGINS.exe+389A5D
DWORIGINS.exe+389A28: 49 8B 00                 - mov rax,[r8]
DWORIGINS.exe+389A2B: 48 8B 10                 - mov rdx,[rax]
DWORIGINS.exe+389A2E: 48 85 D2                 - test rdx,rdx
DWORIGINS.exe+389A31: 74 2A                    - je DWORIGINS.exe+389A5D
DWORIGINS.exe+389A33: 41 83 FC 0D              - cmp r12d,0D
DWORIGINS.exe+389A37: 73 24                    - jae DWORIGINS.exe+389A5D
DWORIGINS.exe+389A39: 41 8B C4                 - mov eax,r12d
// ---------- INJECTING HERE ----------
DWORIGINS.exe+389A3C: 0F B7 94 42 76 09 00 00  - movzx edx,word ptr [rdx+rax*2+00000976]
// ---------- DONE INJECTING  ----------
DWORIGINS.exe+389A44: 66 3B D1                 - cmp dx,cx
DWORIGINS.exe+389A47: 72 05                    - jb DWORIGINS.exe+389A4E
DWORIGINS.exe+389A49: 0F B7 C1                 - movzx eax,cx
DWORIGINS.exe+389A4C: EB 13                    - jmp INJECT_PEACE_LV_MULTI
DWORIGINS.exe+389A4E: 66 85 D2                 - test dx,dx
DWORIGINS.exe+389A51: 75 05                    - jne DWORIGINS.exe+389A58
DWORIGINS.exe+389A53: 41 8B C7                 - mov eax,r15d
DWORIGINS.exe+389A56: EB 09                    - jmp INJECT_PEACE_LV_MULTI
DWORIGINS.exe+389A58: 0F B7 C2                 - movzx eax,dx
DWORIGINS.exe+389A5B: EB 04                    - jmp INJECT_PEACE_LV_MULTI
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>45</ID>
          <Description>"Last changed value"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_last_peace_val_addr</Address>
          <Offsets>
            <Offset>976</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>46</ID>
      <Description>"Get all level of peace value"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DWORIGINS.exe
  Version: 
  Date   : 2025-01-17
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_ALL_PEACE_VAL,$process,0F B7 8C 42 76 09 00 00) // should be unique
alloc(newmem,$1000,INJECT_GET_ALL_PEACE_VAL)

label(code)
label(return i_base_peace_val_addr)

newmem:
  cmp qword ptr [i_base_peace_val_addr], 0
  jne code
  push r15
  lea r15, [rdx+00000976]
  mov [i_base_peace_val_addr], r15
  pop r15


code:
  movzx ecx,word ptr [rdx+rax*2+00000976]
  jmp return
align 10 cc
  i_base_peace_val_addr:
  dq 0

INJECT_GET_ALL_PEACE_VAL:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_GET_ALL_PEACE_VAL i_base_peace_val_addr)

[DISABLE]

INJECT_GET_ALL_PEACE_VAL:
  db 0F B7 8C 42 76 09 00 00

unregistersymbol(INJECT_GET_ALL_PEACE_VAL i_base_peace_val_addr)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DWORIGINS.exe+A6C0FA

DWORIGINS.exe+A6C0DF: 74 38                    - je DWORIGINS.exe+A6C119
DWORIGINS.exe+A6C0E1: 48 83 78 08 00           - cmp qword ptr [rax+08],00
DWORIGINS.exe+A6C0E6: 76 31                    - jna DWORIGINS.exe+A6C119
DWORIGINS.exe+A6C0E8: 48 8B 00                 - mov rax,[rax]
DWORIGINS.exe+A6C0EB: 48 8B 10                 - mov rdx,[rax]
DWORIGINS.exe+A6C0EE: 48 85 D2                 - test rdx,rdx
DWORIGINS.exe+A6C0F1: 74 26                    - je DWORIGINS.exe+A6C119
DWORIGINS.exe+A6C0F3: 83 F9 0D                 - cmp ecx,0D
DWORIGINS.exe+A6C0F6: 73 21                    - jae DWORIGINS.exe+A6C119
DWORIGINS.exe+A6C0F8: 8B C1                    - mov eax,ecx
// ---------- INJECTING HERE ----------
DWORIGINS.exe+A6C0FA: 0F B7 8C 42 76 09 00 00  - movzx ecx,word ptr [rdx+rax*2+00000976]
// ---------- DONE INJECTING  ----------
DWORIGINS.exe+A6C102: B8 10 27 00 00           - mov eax,00002710
DWORIGINS.exe+A6C107: 66 3B C8                 - cmp cx,ax
DWORIGINS.exe+A6C10A: 73 0F                    - jae DWORIGINS.exe+A6C11B
DWORIGINS.exe+A6C10C: 33 C0                    - xor eax,eax
DWORIGINS.exe+A6C10E: 66 85 C9                 - test cx,cx
DWORIGINS.exe+A6C111: 66 0F 45 C1              - cmovne ax,cx
DWORIGINS.exe+A6C115: 0F B7 C0                 - movzx eax,ax
DWORIGINS.exe+A6C118: C3                       - ret 
DWORIGINS.exe+A6C119: 33 C0                    - xor eax,eax
DWORIGINS.exe+A6C11B: 0F B7 C0                 - movzx eax,ax
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>47</ID>
          <Description>"#1"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_peace_val_addr</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>48</ID>
          <Description>"#2 / 豫"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_peace_val_addr</Address>
          <Offsets>
            <Offset>2</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>49</ID>
          <Description>"#3 / 冀"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_peace_val_addr</Address>
          <Offsets>
            <Offset>4</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>50</ID>
          <Description>"#4 / 兗"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_peace_val_addr</Address>
          <Offsets>
            <Offset>6</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>51</ID>
          <Description>"#5"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_peace_val_addr</Address>
          <Offsets>
            <Offset>8</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>52</ID>
          <Description>"#6"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_peace_val_addr</Address>
          <Offsets>
            <Offset>A</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>53</ID>
          <Description>"#7 / 荊"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_peace_val_addr</Address>
          <Offsets>
            <Offset>C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>54</ID>
          <Description>"#8"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_peace_val_addr</Address>
          <Offsets>
            <Offset>E</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>55</ID>
          <Description>"#9 / 幽"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_peace_val_addr</Address>
          <Offsets>
            <Offset>16</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>56</ID>
          <Description>"#10"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_peace_val_addr</Address>
          <Offsets>
            <Offset>12</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>57</ID>
      <Description>"Get horse EXP"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DWORIGINS.exe
  Version: 
  Date   : 2025-01-18
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_HORSE_EXP,$process,8B 00 BE 3F 42 0F 00) // should be unique
alloc(newmem,$1000,INJECT_GET_HORSE_EXP)

label(code)
label(return i_base_horse_exp_addr)

newmem:
  mov [i_base_horse_exp_addr], rax

code:
  mov eax,[rax]
  mov esi,000F423F
  jmp return
align 10 cc
  i_base_horse_exp_addr:
  dq 0

INJECT_GET_HORSE_EXP:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_GET_HORSE_EXP i_base_horse_exp_addr)

[DISABLE]

INJECT_GET_HORSE_EXP:
  db 8B 00 BE 3F 42 0F 00

unregistersymbol(INJECT_GET_HORSE_EXP i_base_horse_exp_addr)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DWORIGINS.exe+13E7D81

DWORIGINS.exe+13E7D5F: 41 BF 00 00 00 00  - mov r15d,00000000
DWORIGINS.exe+13E7D65: 49 0F 44 C7        - cmove rax,r15
DWORIGINS.exe+13E7D69: 48 3B C8           - cmp rcx,rax
DWORIGINS.exe+13E7D6C: 76 0A              - jna DWORIGINS.exe+13E7D78
DWORIGINS.exe+13E7D6E: 41 8B CF           - mov ecx,r15d
DWORIGINS.exe+13E7D71: 48 85 D2           - test rdx,rdx
DWORIGINS.exe+13E7D74: 49 0F 45 C8        - cmovne rcx,r8
DWORIGINS.exe+13E7D78: 49 8B 04 C9        - mov rax,[r9+rcx*8]
DWORIGINS.exe+13E7D7C: 48 85 C0           - test rax,rax
DWORIGINS.exe+13E7D7F: 74 18              - je DWORIGINS.exe+13E7D99
// ---------- INJECTING HERE ----------
DWORIGINS.exe+13E7D81: 8B 00              - mov eax,[rax]
// ---------- DONE INJECTING  ----------
DWORIGINS.exe+13E7D83: BE 3F 42 0F 00     - mov esi,000F423F
DWORIGINS.exe+13E7D88: 3B C6              - cmp eax,esi
DWORIGINS.exe+13E7D8A: 73 10              - jae DWORIGINS.exe+13E7D9C
DWORIGINS.exe+13E7D8C: 8B F0              - mov esi,eax
DWORIGINS.exe+13E7D8E: 85 C0              - test eax,eax
DWORIGINS.exe+13E7D90: 41 0F 44 F7        - cmove esi,r15d
DWORIGINS.exe+13E7D94: EB 06              - jmp DWORIGINS.exe+13E7D9C
DWORIGINS.exe+13E7D96: 45 33 FF           - xor r15d,r15d
DWORIGINS.exe+13E7D99: 41 8B F7           - mov esi,r15d
DWORIGINS.exe+13E7D9C: 41 8B CE           - mov ecx,r14d
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>58</ID>
          <Description>"Usage: Equip-&gt;Horse"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>59</ID>
          <Description>"EXP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_horse_exp_addr</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>60</ID>
      <Description>"Get money"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DWORIGINS.exe
  Version: 
  Date   : 2025-01-16
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_MONEY,$process,8B 89 84 03 00 00 3B) // should be unique
alloc(newmem,$1000,INJECT_GET_MONEY)

label(code)
label(return i_base_money_addr)

newmem:
  mov [i_base_money_addr], rcx

code:
  mov ecx,[rcx+00000384]
  jmp return
align 10 cc
  i_base_money_addr:
  dq 0

INJECT_GET_MONEY:
  jmp newmem
  nop
return:
registersymbol(INJECT_GET_MONEY i_base_money_addr)

[DISABLE]

INJECT_GET_MONEY:
  db 8B 89 84 03 00 00

unregistersymbol(INJECT_GET_MONEY i_base_money_addr)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DWORIGINS.exe+13D6615

DWORIGINS.exe+13D65F7: 49 8B 40 08           - mov rax,[r8+08]
DWORIGINS.exe+13D65FB: 48 8B 40 08           - mov rax,[rax+08]
DWORIGINS.exe+13D65FF: 48 85 C0              - test rax,rax
DWORIGINS.exe+13D6602: 74 28                 - je DWORIGINS.exe+13D662C
DWORIGINS.exe+13D6604: 48 39 78 08           - cmp [rax+08],rdi
DWORIGINS.exe+13D6608: 76 22                 - jna DWORIGINS.exe+13D662C
DWORIGINS.exe+13D660A: 48 8B 00              - mov rax,[rax]
DWORIGINS.exe+13D660D: 48 8B 08              - mov rcx,[rax]
DWORIGINS.exe+13D6610: 48 85 C9              - test rcx,rcx
DWORIGINS.exe+13D6613: 74 17                 - je DWORIGINS.exe+13D662C
// ---------- INJECTING HERE ----------
DWORIGINS.exe+13D6615: 8B 89 84 03 00 00     - mov ecx,[rcx+00000384]
// ---------- DONE INJECTING  ----------
DWORIGINS.exe+13D661B: 3B CB                 - cmp ecx,ebx
DWORIGINS.exe+13D661D: 72 04                 - jb DWORIGINS.exe+13D6623
DWORIGINS.exe+13D661F: 8B C3                 - mov eax,ebx
DWORIGINS.exe+13D6621: EB 0B                 - jmp DWORIGINS.exe+13D662E
DWORIGINS.exe+13D6623: 85 C9                 - test ecx,ecx
DWORIGINS.exe+13D6625: 8B C7                 - mov eax,edi
DWORIGINS.exe+13D6627: 0F 45 C1              - cmovne eax,ecx
DWORIGINS.exe+13D662A: EB 02                 - jmp DWORIGINS.exe+13D662E
DWORIGINS.exe+13D662C: 8B C7                 - mov eax,edi
DWORIGINS.exe+13D662E: 4C 8D 25 4B 94 E5 01  - lea r12,[DWORIGINS.exe+322FA80]
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>61</ID>
          <Description>"money"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_money_addr</Address>
          <Offsets>
            <Offset>384</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>62</ID>
          <Description>"Skill Points / 武功"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_money_addr</Address>
          <Offsets>
            <Offset>458</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>63</ID>
          <Description>"Old Coins / 古銭"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_money_addr</Address>
          <Offsets>
            <Offset>45A</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>64</ID>
          <Description>"Pyroxene / 輝石"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_money_addr</Address>
          <Offsets>
            <Offset>4BE</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>65</ID>
      <Description>"DYNASTY WARRIORS: ORIGINS; 真・三國無双 ORIGINS  /  https://opencheattables.com"</Description>
      <Color>00A800</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
