<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <CheatEntries>
    <CheatEntry>
      <ID>19</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>16</ID>
      <Description>"Min. stock EXP (Usage: spend EXP)"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : WO3U.exe
  Version: 
  Date   : 2022-09-25
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_MIN_STOCK_EXP,WO3U.exe,8B 90 D8 4E 03 00 E8) // should be unique
alloc(newmem,$1000,INJECT_MIN_STOCK_EXP)

label(code)
label(return)

newmem:

code:
  mov edx,[rax+00034ED8]
  //
  cmp edx, #99999
  jae endp
  mov edx, #99999
  mov [rax+00034ED8], edx

endp:
  //
  jmp return

INJECT_MIN_STOCK_EXP:
  jmp newmem
  nop
return:
registersymbol(INJECT_MIN_STOCK_EXP)

[DISABLE]

INJECT_MIN_STOCK_EXP:
  db 8B 90 D8 4E 03 00

unregistersymbol(INJECT_MIN_STOCK_EXP)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: WO3U.exe+32EDD6

WO3U.exe+32EDA4: 83 79 20 01                    - cmp dword ptr [rcx+20],01
WO3U.exe+32EDA8: 74 22                          - je WO3U.exe+32EDCC
WO3U.exe+32EDAA: 48 8B 01                       - mov rax,[rcx]
WO3U.exe+32EDAD: 48 C7 41 20 01 00 00 00        - mov qword ptr [rcx+20],00000001
WO3U.exe+32EDB5: 89 69 28                       - mov [rcx+28],ebp
WO3U.exe+32EDB8: C7 41 2C 0C 00 00 00           - mov [rcx+2C],0000000C
WO3U.exe+32EDBF: C7 81 94 00 00 00 03 00 00 00  - mov [rcx+00000094],00000003
WO3U.exe+32EDC9: FF 50 30                       - call qword ptr [rax+30]
WO3U.exe+32EDCC: 48 8B 05 75 5F 89 00           - mov rax,[WO3U.exe+BC4D48]
WO3U.exe+32EDD3: 48 8B CB                       - mov rcx,rbx
// ---------- INJECTING HERE ----------
WO3U.exe+32EDD6: 8B 90 D8 4E 03 00              - mov edx,[rax+00034ED8]
// ---------- DONE INJECTING  ----------
WO3U.exe+32EDDC: E8 2F 02 00 00                 - call WO3U.exe+32F010
WO3U.exe+32EDE1: 48 8B 05 60 5F 89 00           - mov rax,[WO3U.exe+BC4D48]
WO3U.exe+32EDE8: F6 80 B2 4D 03 00 01           - test byte ptr [rax+00034DB2],01
WO3U.exe+32EDEF: 75 21                          - jne WO3U.exe+32EE12
WO3U.exe+32EDF1: 48 8B 05 28 93 89 00           - mov rax,[WO3U.exe+BC8120]
WO3U.exe+32EDF8: 8B 48 08                       - mov ecx,[rax+08]
WO3U.exe+32EDFB: 8D 41 F9                       - lea eax,[rcx-07]
WO3U.exe+32EDFE: A9 F6 FF FF FF                 - test eax,FFFFFFF6
WO3U.exe+32EE03: 75 0D                          - jne WO3U.exe+32EE12
WO3U.exe+32EE05: 83 F9 10                       - cmp ecx,10
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>12</ID>
      <Description>"Min. money (Usage: visit weaponsmith)"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : WO3U.exe
  Version: 
  Date   : 2022-09-25
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_MIN_MONEY,WO3U.exe,8B 98 DC 4E 03 00) // should be unique
alloc(newmem,$1000,INJECT_MIN_MONEY)

label(code)
label(return)
label(i_base_money_addr)

newmem:
  mov [i_base_money_addr], rax

code:
  mov ebx,[rax+00034EDC]

  //
  cmp ebx, #300000
  jae endp
  mov ebx, #300000
  mov [rax+00034EDC], ebx
endp:
  //

  jmp return
align 10 cc
  i_base_money_addr:
  dq 0


INJECT_MIN_MONEY:
  jmp newmem
  nop
return:
registersymbol(INJECT_MIN_MONEY)
registersymbol(i_base_money_addr)

[DISABLE]

INJECT_MIN_MONEY:
  db 8B 98 DC 4E 03 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: WO3U.exe+34F212

WO3U.exe+34F1DB: F3 0F 11 74 24 20        - movss [rsp+20],xmm6
WO3U.exe+34F1E1: 41 B1 01                 - mov r9l,01
WO3U.exe+34F1E4: 48 8D 96 68 02 00 00     - lea rdx,[rsi+00000268]
WO3U.exe+34F1EB: 4C 8B C0                 - mov r8,rax
WO3U.exe+34F1EE: 49 8B CE                 - mov rcx,r14
WO3U.exe+34F1F1: E8 4A AB E9 FF           - call WO3U.exe+1E9D40
WO3U.exe+34F1F6: 48 8B 05 4B 5B 87 00     - mov rax,[WO3U.exe+BC4D48]
WO3U.exe+34F1FD: B9 70 00 00 00           - mov ecx,00000070
WO3U.exe+34F202: 4C 89 A4 24 98 02 00 00  - mov [rsp+00000298],r12
WO3U.exe+34F20A: 4C 89 AC 24 58 02 00 00  - mov [rsp+00000258],r13
// ---------- INJECTING HERE ----------
WO3U.exe+34F212: 8B 98 DC 4E 03 00        - mov ebx,[rax+00034EDC]
// ---------- DONE INJECTING  ----------
WO3U.exe+34F218: E8 D3 08 F2 FF           - call WO3U.exe+26FAF0
WO3U.exe+34F21D: 48 8B D0                 - mov rdx,rax
WO3U.exe+34F220: 48 8D 4D A0              - lea rcx,[rbp-60]
WO3U.exe+34F224: 44 8B C3                 - mov r8d,ebx
WO3U.exe+34F227: E8 D4 6F E3 FF           - call WO3U.exe+186200
WO3U.exe+34F22C: F3 0F 10 44 24 64        - movss xmm0,[rsp+64]
WO3U.exe+34F232: 4C 8D 44 24 50           - lea r8,[rsp+50]
WO3U.exe+34F237: F3 0F 58 86 9C 00 00 00  - addss xmm0,[rsi+0000009C]
WO3U.exe+34F23F: 41 B9 07 00 00 00        - mov r9d,00000007
WO3U.exe+34F245: C7 44 24 50 00 00 C0 41  - mov [rsp+50],41C00000
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>15</ID>
          <Description>"Stock EXP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_money_addr</Address>
          <Offsets>
            <Offset>34ED8</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>13</ID>
          <Description>"Gems"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_money_addr</Address>
          <Offsets>
            <Offset>34EDC</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>14</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_money_addr</Address>
          <Offsets>
            <Offset>34EE0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>57</ID>
          <Description>"Crystals"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_money_addr</Address>
          <Offsets>
            <Offset>4113C</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>23</ID>
      <Description>"Battle: Controlled player"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : WO3U.exe
  Version: 
  Date   : 2022-09-25
  Author :
}

[ENABLE]

aobscanmodule(INJECT_GET_CTRL_PLAYER_DATA,WO3U.exe,AC 00 00 00 8B 43 EC 89 43 F0 F3 0F 2C 86 98 01 00 00) // should be unique
alloc(newmem,$1000,INJECT_GET_CTRL_PLAYER_DATA)

label(code)
label(return)
label(i_base_ctrl_player_addr)
label(i_ctrl_player_hp_addr)

newmem:
  mov [i_base_ctrl_player_addr], rsi
  push r15
  lea r15, [rsi+1A0]
  mov [i_ctrl_player_hp_addr], r15
  pop r15
  {
  vmovss xmm15, [rsi+000001A4]
  vmovss xmm14, [rsi+000001A8]
  vsubss xmm13, xmm15, xmm14
  vmovss xmm12, [vf_10]
  vucomiss xmm13, xmm12
  jbe next1
  vsubss xmm14, xmm15, xmm12
  vmovss [rsi+000001A8], xmm14
  }
next1:


code:
  cvttss2si eax,[rsi+00000198]
  jmp return
align 10 cc
  i_base_ctrl_player_addr:
  dq 0
  i_ctrl_player_hp_addr:
  dq 0
  vf_10:
  dd (float)3

INJECT_GET_CTRL_PLAYER_DATA+0A:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_GET_CTRL_PLAYER_DATA)
registersymbol(i_base_ctrl_player_addr)
registersymbol(i_ctrl_player_hp_addr)

[DISABLE]

INJECT_GET_CTRL_PLAYER_DATA+0A:
  db F3 0F 2C 86 98 01 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: WO3U.exe+17DA52

WO3U.exe+17DA28: 4B 8D 0C 40              - lea rcx,[r8+r8*2]
WO3U.exe+17DA2C: 48 C1 E1 04              - shl rcx,04
WO3U.exe+17DA30: 48 8D 47 04              - lea rax,[rdi+04]
WO3U.exe+17DA34: 48 03 C1                 - add rax,rcx
WO3U.exe+17DA37: 48 89 87 70 2D 00 00     - mov [rdi+00002D70],rax
WO3U.exe+17DA3E: 66 90                    - nop 2
WO3U.exe+17DA40: 39 AF 94 00 00 00        - cmp [rdi+00000094],ebp
WO3U.exe+17DA46: 0F 85 AC 00 00 00        - jne WO3U.exe+17DAF8
WO3U.exe+17DA4C: 8B 43 EC                 - mov eax,[rbx-14]
WO3U.exe+17DA4F: 89 43 F0                 - mov [rbx-10],eax
// ---------- INJECTING HERE ----------
WO3U.exe+17DA52: F3 0F 2C 86 98 01 00 00  - cvttss2si eax,[rsi+00000198]
// ---------- DONE INJECTING  ----------
WO3U.exe+17DA5A: 89 43 E8                 - mov [rbx-18],eax
WO3U.exe+17DA5D: F3 0F 2C 86 9C 01 00 00  - cvttss2si eax,[rsi+0000019C]
WO3U.exe+17DA65: 89 43 EC                 - mov [rbx-14],eax
WO3U.exe+17DA68: F3 0F 2C 86 A4 01 00 00  - cvttss2si eax,[rsi+000001A4]
WO3U.exe+17DA70: 89 43 F8                 - mov [rbx-08],eax
WO3U.exe+17DA73: F3 0F 2C 86 A8 01 00 00  - cvttss2si eax,[rsi+000001A8]
WO3U.exe+17DA7B: 89 43 FC                 - mov [rbx-04],eax
WO3U.exe+17DA7E: 44 38 7E 1C              - cmp [rsi+1C],r15l
WO3U.exe+17DA82: 75 04                    - jne WO3U.exe+17DA88
WO3U.exe+17DA84: 32 C0                    - xor al,al
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>31</ID>
          <Description>"Inf. HP (Turn off when hit bug)"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : WO3U.exe
  Version: 
  Date   : 2022-09-25
  Author :
}

[ENABLE]

aobscanmodule(INJECT_CTRL_PLAYER_HP,WO3U.exe,F3 0F 11 51 08 F3 0F 58 49) // should be unique
alloc(newmem,$1000,INJECT_CTRL_PLAYER_HP)

label(code)
label(return)

newmem:
  push r15
  lea r15, [rcx+08]
  cmp [i_ctrl_player_hp_addr], r15
  pop r15
  jne code

  //vmovss xmm15, [rcx+0C]
  //vmovss xmm14, [vf_150]
  //vucomiss xmm15, xmm14
  //jbe code
  //vmovss xmm14, [rcx+04]
  //vmovss xmm15, [rcx+08]
  //vucomiss xmm14, xmm15
  //jne code
  //vmovss xmm15, [rcx+18]
  //vmovss xmm14, [vf_999]
  //vucomiss xmm15, xmm14
  //jne code

  vmovss xmm15, [rcx]
  vmovss [rcx+08], xmm15
  vmovss [rcx+04], xmm15
  vmovss xmm2, [rcx]


code:
  movss [rcx+08],xmm2
  jmp return
align 10 cc
  vf_150:
  dd (float)150
  vf_999:
  dd (float)999

INJECT_CTRL_PLAYER_HP:
  jmp newmem
return:
registersymbol(INJECT_CTRL_PLAYER_HP)

[DISABLE]

INJECT_CTRL_PLAYER_HP:
  db F3 0F 11 51 08

unregistersymbol(INJECT_CTRL_PLAYER_HP)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: WO3U.exe+641A4

WO3U.exe+64180: F3 0F 10 51 04           - movss xmm2,[rcx+04]
WO3U.exe+64185: F3 0F 10 05 AB B8 A7 00  - movss xmm0,[WO3U.exe+ADFA38]
WO3U.exe+6418D: 0F 2F C2                 - comiss xmm0,xmm2
WO3U.exe+64190: 77 4C                    - ja WO3U.exe+641DE
WO3U.exe+64192: 0F 57 DB                 - xorps xmm3,xmm3
WO3U.exe+64195: 0F 57 E4                 - xorps xmm4,xmm4
WO3U.exe+64198: F3 0F 5F DA              - maxss xmm3,xmm2
WO3U.exe+6419C: 0F 2F DA                 - comiss xmm3,xmm2
WO3U.exe+6419F: 77 03                    - ja WO3U.exe+641A4
WO3U.exe+641A1: 0F 28 D3                 - movaps xmm2,xmm3
// ---------- INJECTING HERE ----------
WO3U.exe+641A4: F3 0F 11 51 08           - movss [rcx+08],xmm2
// ---------- DONE INJECTING  ----------
WO3U.exe+641A9: F3 0F 58 49 04           - addss xmm1,[rcx+04]
WO3U.exe+641AE: F3 0F 5F E1              - maxss xmm4,xmm1
WO3U.exe+641B2: F3 0F 10 09              - movss xmm1,[rcx]
WO3U.exe+641B6: 0F 2F E1                 - comiss xmm4,xmm1
WO3U.exe+641B9: 77 03                    - ja WO3U.exe+641BE
WO3U.exe+641BB: 0F 28 CC                 - movaps xmm1,xmm4
WO3U.exe+641BE: F3 0F 11 49 04           - movss [rcx+04],xmm1
WO3U.exe+641C3: 45 84 C0                 - test r8l,r8l
WO3U.exe+641C6: 74 19                    - je WO3U.exe+641E1
WO3U.exe+641C8: 0F 2F C1                 - comiss xmm0,xmm1
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>28</ID>
          <Description>"Max HP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>i_base_ctrl_player_addr</Address>
          <Offsets>
            <Offset>198</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>24</ID>
          <Description>"Cur HP1"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>i_base_ctrl_player_addr</Address>
          <Offsets>
            <Offset>19C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>25</ID>
          <Description>"Cur HP2"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>i_base_ctrl_player_addr</Address>
          <Offsets>
            <Offset>1A0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>26</ID>
          <Description>"Max Musou gauge"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>i_base_ctrl_player_addr</Address>
          <Offsets>
            <Offset>1A4</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>27</ID>
          <Description>"Musou gauge"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>i_base_ctrl_player_addr</Address>
          <Offsets>
            <Offset>1A8</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>8</ID>
      <Description>"Fast group skill gauge"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : WO3U.exe
  Version: 
  Date   : 2022-09-25
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_FAST_GSKILL_GAUGE,WO3U.exe,66 03 C3 66 3B C2) // should be unique
alloc(newmem,$1000,INJECT_FAST_GSKILL_GAUGE)

label(code)
label(return)
label(vf_musou_multi)
label(i_base_musou_addr)

newmem:
  mov [i_base_musou_addr], rdi
  push r15
  push r14
  xor r15, r15
  xor r14, r14
  mov r15w, ax
  mov r14w, bx
  cvtsi2ss xmm15, r15d
  cvtsi2ss xmm14, r14d
  vmovss xmm13, [vf_musou_multi]
  vmulss xmm14, xmm14, xmm13
  cvtss2si r14d, xmm14
  mov bx, r14w

next1:

endp:
  pop r14
  pop r15

code:
  add ax,bx
  cmp ax,dx
  jmp return
align 10 cc
  vf_musou_multi:
  dd (float)9.333
  vf_30000:
  dd (float)30000.0
  i_base_musou_addr:
  dq 0


INJECT_FAST_GSKILL_GAUGE:
  jmp newmem
  nop
return:
registersymbol(INJECT_FAST_GSKILL_GAUGE)
registersymbol(vf_musou_multi)
registersymbol(i_base_musou_addr)

[DISABLE]

INJECT_FAST_GSKILL_GAUGE:
  db 66 03 C3 66 3B C2

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: WO3U.exe+C8E0B

WO3U.exe+C8DE3: F3 41 0F 5E C3        - divss xmm0,xmm11
WO3U.exe+C8DE8: EB 04                 - jmp WO3U.exe+C8DEE
WO3U.exe+C8DEA: 41 0F 28 C2           - movaps xmm0,xmm10
WO3U.exe+C8DEE: F3 41 0F 59 C3        - mulss xmm0,xmm11
WO3U.exe+C8DF3: F3 48 0F 2C C0        - cvttss2si rax,xmm0
WO3U.exe+C8DF8: 03 D8                 - add ebx,eax
WO3U.exe+C8DFA: 0F B7 87 A4 05 00 00  - movzx eax,word ptr [rdi+000005A4]
WO3U.exe+C8E01: BA 30 75 00 00        - mov edx,00007530
WO3U.exe+C8E06: 66 3B C2              - cmp ax,dx
WO3U.exe+C8E09: 73 11                 - jae WO3U.exe+C8E1C
// ---------- INJECTING HERE ----------
WO3U.exe+C8E0B: 66 03 C3              - add ax,bx
// ---------- DONE INJECTING  ----------
WO3U.exe+C8E0E: 66 3B C2              - cmp ax,dx
WO3U.exe+C8E11: 66 0F 47 C2           - cmova ax,dx
WO3U.exe+C8E15: 66 89 87 A4 05 00 00  - mov [rdi+000005A4],ax
WO3U.exe+C8E1C: 66 44 3B FA           - cmp r15w,dx
WO3U.exe+C8E20: 73 60                 - jae WO3U.exe+C8E82
WO3U.exe+C8E22: BB 68 19 00 00        - mov ebx,00001968
WO3U.exe+C8E27: 41 F6 04 24 01        - test byte ptr [r12],01
WO3U.exe+C8E2C: 74 08                 - je WO3U.exe+C8E36
WO3U.exe+C8E2E: 45 33 FF              - xor r15d,r15d
WO3U.exe+C8E31: 41 8B CF              - mov ecx,r15d
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>9</ID>
          <Description>"Multiplier (don't set too high)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>vf_musou_multi</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>20</ID>
          <Description>"Gauge"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_musou_addr</Address>
          <Offsets>
            <Offset>5a4</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>29</ID>
      <Description>"Fast musou gauge"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : WO3U.exe
  Version: 
  Date   : 2022-09-25
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_FAST_MUSOU2,WO3U.exe,F3 0F 11 81 A8 01 00 00) // should be unique
alloc(newmem,$1000,INJECT_FAST_MUSOU2)

label(code)
label(return)
label(vf_mosou2_multi)

newmem:
  vmovss xmm15, [rcx+000001A8]
  vucomiss xmm0, xmm15
  jbe code
  vsubss xmm14, xmm0, xmm15
  vmovss xmm13, [vf_mosou2_multi]
  vmulss xmm14, xmm14, xmm13
  vaddss xmm0, xmm15, xmm14


code:
  movss [rcx+000001A8],xmm0
  jmp return
align 10 cc
  vf_mosou2_multi:
  dd (float)16.345


INJECT_FAST_MUSOU2:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_FAST_MUSOU2)
registersymbol(vf_mosou2_multi)

[DISABLE]

INJECT_FAST_MUSOU2:
  db F3 0F 11 81 A8 01 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: WO3U.exe+2BED4

WO3U.exe+2BEBA: 7A 06                    - jp WO3U.exe+2BEC2
WO3U.exe+2BEBC: 75 04                    - jne WO3U.exe+2BEC2
WO3U.exe+2BEBE: B0 01                    - mov al,01
WO3U.exe+2BEC0: EB 02                    - jmp WO3U.exe+2BEC4
WO3U.exe+2BEC2: 32 C0                    - xor al,al
WO3U.exe+2BEC4: F3 0F 58 CC              - addss xmm1,xmm4
WO3U.exe+2BEC8: F3 0F 5F D9              - maxss xmm3,xmm1
WO3U.exe+2BECC: 0F 2F D8                 - comiss xmm3,xmm0
WO3U.exe+2BECF: 77 03                    - ja WO3U.exe+2BED4
WO3U.exe+2BED1: 0F 28 C3                 - movaps xmm0,xmm3
// ---------- INJECTING HERE ----------
WO3U.exe+2BED4: F3 0F 11 81 A8 01 00 00  - movss [rcx+000001A8],xmm0
// ---------- DONE INJECTING  ----------
WO3U.exe+2BEDC: 84 C0                    - test al,al
WO3U.exe+2BEDE: 75 0E                    - jne WO3U.exe+2BEEE
WO3U.exe+2BEE0: 0F 2E 81 A4 01 00 00     - ucomiss xmm0,[rcx+000001A4]
WO3U.exe+2BEE7: 7A 05                    - jp WO3U.exe+2BEEE
WO3U.exe+2BEE9: 75 03                    - jne WO3U.exe+2BEEE
WO3U.exe+2BEEB: B0 01                    - mov al,01
WO3U.exe+2BEED: C3                       - ret 
WO3U.exe+2BEEE: 32 C0                    - xor al,al
WO3U.exe+2BEF0: C3                       - ret 
WO3U.exe+2BEF1: CC                       - int 3 
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>30</ID>
          <Description>"Multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>vf_mosou2_multi</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>34</ID>
      <Description>"View Weapon (Usage: Weapon selection)"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : WO3U.exe
  Version: 
  Date   : 2022-09-25
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_WEAPON_INFO,WO3U.exe,0F B6 49 0B 03 C1) // should be unique
alloc(newmem,$1000,INJECT_WEAPON_INFO)

label(code)
label(return)
label(i_base_weapon_addr)

newmem:
  mov [i_base_weapon_addr], rcx

code:
  movzx ecx,byte ptr [rcx+0B]
  add eax,ecx
  jmp return
align 10 cc
  i_base_weapon_addr:
  dq 0


INJECT_WEAPON_INFO:
  jmp newmem
  nop
return:
registersymbol(INJECT_WEAPON_INFO)
registersymbol(i_base_weapon_addr)

[DISABLE]

INJECT_WEAPON_INFO:
  db 0F B6 49 0B 03 C1

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: WO3U.exe+207DA0

WO3U.exe+207D71: 48 89 45 E7                    - mov [rbp-19],rax
WO3U.exe+207D75: 41 8B 4A 1C                    - mov ecx,[r10+1C]
WO3U.exe+207D79: BA FF FF FF FF                 - mov edx,FFFFFFFF
WO3U.exe+207D7E: 41 0F 96 C1                    - setbe r9l
WO3U.exe+207D82: 40 80 FF 04                    - cmp dil,04
WO3U.exe+207D86: 0F 46 D7                       - cmovbe edx,edi
WO3U.exe+207D89: 66 41 83 BC C0 C8 B2 08 00 00  - cmp word ptr [r8+rax*8+0008B2C8],00
WO3U.exe+207D93: 41 0F 9F C0                    - setg r8l
WO3U.exe+207D97: E8 04 3C 05 00                 - call WO3U.exe+25B9A0
WO3U.exe+207D9C: 48 8B 4D DF                    - mov rcx,[rbp-21]
// ---------- INJECTING HERE ----------
WO3U.exe+207DA0: 0F B6 49 0B                    - movzx ecx,byte ptr [rcx+0B]
// ---------- DONE INJECTING  ----------
WO3U.exe+207DA4: 03 C1                          - add eax,ecx
WO3U.exe+207DA6: 48 8B 4D BF                    - mov rcx,[rbp-41]
WO3U.exe+207DAA: 89 45 D3                       - mov [rbp-2D],eax
WO3U.exe+207DAD: 40 80 FF 04                    - cmp dil,04
WO3U.exe+207DB1: 48 8B 45 E7                    - mov rax,[rbp-19]
WO3U.exe+207DB5: 0F BF 94 C1 C4 B2 08 00        - movsx edx,word ptr [rcx+rax*8+0008B2C4]
WO3U.exe+207DBD: 8B 8C C1 E8 B2 08 00           - mov ecx,[rcx+rax*8+0008B2E8]
WO3U.exe+207DC4: 89 55 D7                       - mov [rbp-29],edx
WO3U.exe+207DC7: BA FF FF FF FF                 - mov edx,FFFFFFFF
WO3U.exe+207DCC: 44 8B C2                       - mov r8d,edx
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>35</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>47</ID>
          <Description>"Item ID"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>8</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>45</ID>
          <Description>"# of Slots"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>A</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>36</ID>
          <Description>"+Damage"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>B</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>48</ID>
          <Description>"Slot 1 Skill#"</Description>
          <DropDownList DisplayValueAsItem="1">0:Flame/炎
1:Ice/冰
2:Bolt/雷
3:Wind/風
4:Slay/斬
5:Agility/神速
6:Reach/增廣
7:Chronos/連鎖
8:Brawn/地擊
9:Might/天擊
10:Destruction/亂擊
11:Cavalier/騎擊
12:Frenzy/極擊
13:Flak/破天
14:Blast/波擊
15:Courage/勇猛
16:Absorption/吸生
17:Osmosis/吸活
18:Celerity/速攻
19:Prosperity/蒐集
20:Providence/奪取
21:Guerdon/獎賞
22:Wisdom/武勲
23:Diligence/磨練
24:Industry/熟習
25:Harmony/調和
255:N/A
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>49</ID>
          <Description>"Slot 2 Skill#"</Description>
          <DropDownListLink>Slot 1 Skill#</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>D</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>50</ID>
          <Description>"Slot 3 Skill#"</Description>
          <DropDownListLink>Slot 1 Skill#</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>E</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>51</ID>
          <Description>"Slot 4 Skill#"</Description>
          <DropDownListLink>Slot 1 Skill#</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>F</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>52</ID>
          <Description>"Slot 5 Skill#"</Description>
          <DropDownListLink>Slot 1 Skill#</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>10</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>53</ID>
          <Description>"Slot 6 Skill#"</Description>
          <DropDownListLink>Slot 1 Skill#</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>11</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>54</ID>
          <Description>"Slot 7 Skill#"</Description>
          <DropDownListLink>Slot 1 Skill#</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>12</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>55</ID>
          <Description>"Slot 8 Skill#"</Description>
          <DropDownListLink>Slot 1 Skill#</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>13</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>37</ID>
          <Description>"Slot 1 Lv"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>14</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>38</ID>
          <Description>"Slot 2 Lv"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>15</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>39</ID>
          <Description>"Slot 3 Lv"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>16</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>40</ID>
          <Description>"Slot 4 Lv"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>17</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>41</ID>
          <Description>"Slot 5 Lv"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>18</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>42</ID>
          <Description>"Slot 6 Lv"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>19</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>43</ID>
          <Description>"Slot 7 Lv"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>1A</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>44</ID>
          <Description>"Slot 8 Lv"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>i_base_weapon_addr</Address>
          <Offsets>
            <Offset>1B</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>17</ID>
      <Description>"_WIP"</Description>
      <Options moHideChildren="1"/>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>6</ID>
          <Description>"Musou gauge"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : WO3U.exe
  Version: 
  Date   : 2022-09-25
  Author :
}

[ENABLE]

aobscanmodule(INJECT_MUSOU_GAUGE,WO3U.exe,F3 0F 11 87 F0 33 00 00) // should be unique
alloc(newmem,$1000,INJECT_MUSOU_GAUGE)

label(code)
label(return)

newmem:
  vmovss xmm15, [vf_299]
  vucomiss xmm0, xmm15
  jae code
  vmovss xmm0, [vf_299]
  movss [rdi+000033F8],xmm0

code:
  movss [rdi+000033F0],xmm0
  jmp return
align 10 cc
  vf_299:
  dd (float)299

INJECT_MUSOU_GAUGE:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_MUSOU_GAUGE)

[DISABLE]

INJECT_MUSOU_GAUGE:
  db F3 0F 11 87 F0 33 00 00

unregistersymbol(INJECT_MUSOU_GAUGE)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: WO3U.exe+17DD0E

WO3U.exe+17DCD1: 48 8D 8F 88 2D 00 00           - lea rcx,[rdi+00002D88]
WO3U.exe+17DCD8: E8 23 E8 FF FF                 - call WO3U.exe+17C500
WO3U.exe+17DCDD: 4C 63 1F                       - movsxd  r11,dword ptr [rdi]
WO3U.exe+17DCE0: 49 69 CB 68 19 00 00           - imul rcx,r11,00001968
WO3U.exe+17DCE7: 48 03 0D 32 70 A4 00           - add rcx,[WO3U.exe+BC4D20]
WO3U.exe+17DCEE: 0F B7 81 A4 05 00 00           - movzx eax,word ptr [rcx+000005A4]
WO3U.exe+17DCF5: C7 87 F4 33 00 00 00 00 96 43  - mov [rdi+000033F4],43960000
WO3U.exe+17DCFF: 66 0F 6E C0                    - movd xmm0,eax
WO3U.exe+17DD03: 0F 5B C0                       - cvtdq2ps xmm0,xmm0
WO3U.exe+17DD06: F3 0F 5E 05 4E 20 96 00        - divss xmm0,[WO3U.exe+ADFD5C]
// ---------- INJECTING HERE ----------
WO3U.exe+17DD0E: F3 0F 11 87 F0 33 00 00        - movss [rdi+000033F0],xmm0
// ---------- DONE INJECTING  ----------
WO3U.exe+17DD16: 0F B7 91 A4 05 00 00           - movzx edx,word ptr [rcx+000005A4]
WO3U.exe+17DD1D: B9 30 75 00 00                 - mov ecx,00007530
WO3U.exe+17DD22: F3 0F 5E 05 4A 23 96 00        - divss xmm0,[WO3U.exe+AE0074]
WO3U.exe+17DD2A: 66 3B D1                       - cmp dx,cx
WO3U.exe+17DD2D: 0F 93 C0                       - setae al
WO3U.exe+17DD30: 88 87 00 34 00 00              - mov [rdi+00003400],al
WO3U.exe+17DD36: F3 0F 11 87 F8 33 00 00        - movss [rdi+000033F8],xmm0
WO3U.exe+17DD3E: 73 09                          - jae WO3U.exe+17DD49
WO3U.exe+17DD40: 44 89 BF FC 33 00 00           - mov [rdi+000033FC],r15d
WO3U.exe+17DD47: EB 29                          - jmp WO3U.exe+17DD72
}
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>18</ID>
      <Description>"WARRIORS OROCHI 3 Ultimate Definitive Edition v1.0.0.1 /  https://opencheattables.com  /  CE 7.4+"</Description>
      <Color>400080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
  </CheatEntries>
  <CheatCodes>
    <CodeEntry>
      <Description>Code :cvttss2si eax,[rsi+00000198]</Description>
      <AddressString>WO3U.exe+17DA52</AddressString>
      <Before>
        <Byte>43</Byte>
        <Byte>EC</Byte>
        <Byte>89</Byte>
        <Byte>43</Byte>
        <Byte>F0</Byte>
      </Before>
      <Actual>
        <Byte>F3</Byte>
        <Byte>0F</Byte>
        <Byte>2C</Byte>
        <Byte>86</Byte>
        <Byte>98</Byte>
        <Byte>01</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Actual>
      <After>
        <Byte>89</Byte>
        <Byte>43</Byte>
        <Byte>E8</Byte>
        <Byte>F3</Byte>
        <Byte>0F</Byte>
      </After>
    </CodeEntry>
  </CheatCodes>
  <UserdefinedSymbols/>
</CheatTable>
