<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>30</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>115</ID>
      <Description>"[自動選擇遊戲程序] 一鍵開啟或關閉大部份指令碼 / (Auto attach) Turn some scripts on/off"</Description>
      <Color>4080FF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript Async="1">[ENABLE]
{$lua}
if (syntaxcheck) then return end
if memrec then print(memrec.Description) end
getLuaEngine().menuItem5.doClick()

P_NAME = 'game_64.exe'

if (p_ated == nil) and (getProcessIDFromProcessName(P_NAME) ~= nil) then
	openProcess(P_NAME)
    p_ated = true
    Sleep(100)
end

battle_array = {30,130,155,157,231,223,166,125,145,54,137,141,206,207,159,170,235,245,183,254,          252}


local a_len = #(battle_array)

local i = 0

for i = 1, a_len do
  getAddressList().getMemoryRecordByID(battle_array[i]).Active = true
  sleep(1)
end

print("Scripts ON; Total " .. a_len .. " items.")
getLuaEngine().Close()

[DISABLE]
{$lua}
if (syntaxcheck) then return end
if memrec then print(memrec.Description) end

p_ated = nil

battle_array_close = {252,       30,130,155,157,231,223,166,125,145,54,137,141,206,207,159,170,235,245,183,254,        210,247,258}

local a_len1 = #(battle_array_close)

local i = 0

for i = 1, a_len1 do
  getAddressList().getMemoryRecordByID(battle_array_close[i]).Active = false
end

print("Scripts OFF.")

getLuaEngine().Close()


</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>130</ID>
      <Description>"[戰鬥] 設定最小BP值 / Battle: set min. BP"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-06-10
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_SET_MIN_BP,$process,0F B6 8B 00 02 00 00) // should be unique
alloc(newmem,$1000,INJECT_SET_MIN_BP)

label(code)
label(return)
label(i_min_bp)

newmem:
  mov cl, [rbx+00000200]
  cmp cl, [i_min_bp]
  jae @F
  mov cl, [i_min_bp]
  mov [rbx+00000200], cl

code:
  movzx ecx,byte ptr [rbx+00000200]
  jmp return
align 10 cc
  i_min_bp:
  db 2
INJECT_SET_MIN_BP:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_SET_MIN_BP)
registersymbol(i_min_bp)

[DISABLE]

INJECT_SET_MIN_BP:
  db 0F B6 8B 00 02 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+282250

game_64.exe+28221B: 48 8B 8B 18 02 00 00           - mov rcx,[rbx+00000218]
game_64.exe+282222: 45 33 C9                       - xor r9d,r9d
game_64.exe+282225: 0F 28 D6                       - movaps xmm2,xmm6
game_64.exe+282228: 41 0F 28 C9                    - movaps xmm1,xmm9
game_64.exe+28222C: 48 8B 01                       - mov rax,[rcx]
game_64.exe+28222F: FF 90 08 01 00 00              - call qword ptr [rax+00000108]
game_64.exe+282235: 44 0F 28 4C 24 50              - movaps xmm9,[rsp+50]
game_64.exe+28223B: 44 0F 28 44 24 60              - movaps xmm8,[rsp+60]
game_64.exe+282241: C7 83 04 02 00 00 02 00 00 00  - mov [rbx+00000204],00000002
game_64.exe+28224B: E9 4A 01 00 00                 - jmp game_64.exe+28239A
// ---------- INJECTING HERE ----------
game_64.exe+282250: 0F B6 8B 00 02 00 00           - movzx ecx,byte ptr [rbx+00000200]
// ---------- DONE INJECTING  ----------
game_64.exe+282257: 0F B6 83 08 02 00 00           - movzx eax,byte ptr [rbx+00000208]
game_64.exe+28225E: 3A C1                          - cmp al,cl
game_64.exe+282260: 74 11                          - je game_64.exe+282273
game_64.exe+282262: 1B C0                          - sbb eax,eax
game_64.exe+282264: 88 8B 08 02 00 00              - mov [rbx+00000208],cl
game_64.exe+28226A: 83 C0 05                       - add eax,05
game_64.exe+28226D: 89 83 04 02 00 00              - mov [rbx+00000204],eax
game_64.exe+282273: 83 BB 04 02 00 00 03           - cmp dword ptr [rbx+00000204],03
game_64.exe+28227A: 0F 84 1A 01 00 00              - je game_64.exe+28239A
game_64.exe+282280: F3 0F 10 3D 38 42 66 00        - movss xmm7,[game_64.exe+8E64C0]
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>131</ID>
          <Description>"最小值 / min. BP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Byte</VariableType>
          <Address>i_min_bp</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>155</ID>
      <Description>"[戰鬥] CP無限 / Battle: inf CP"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_BATTLE_CP_FULL,$process,03 00 00 2B C7 85 C0 0F 4F C8) // should be unique
alloc(newmem,$1000,INJECT_BATTLE_CP_FULL)

label(code)
label(return)

newmem:
  cmp byte ptr [rbx+000002F0], 0
  jne code
  xor edi, edi
  mov eax, edx

code:
  sub eax,edi
  test eax,eax
  cmovg ecx,eax
  jmp return

INJECT_BATTLE_CP_FULL+03:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_BATTLE_CP_FULL)

[DISABLE]

INJECT_BATTLE_CP_FULL+03:
  db 2B C7 85 C0 0F 4F C8

unregistersymbol(INJECT_BATTLE_CP_FULL)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+DEE44

game_64.exe+DEE17: 48 8B 4B 08                    - mov rcx,[rbx+08]
game_64.exe+DEE1B: E8 20 4D 03 00                 - call game_64.exe+113B40
game_64.exe+DEE20: 48 85 C0                       - test rax,rax
game_64.exe+DEE23: 74 0F                          - je game_64.exe+DEE34
game_64.exe+DEE25: F7 80 F0 02 00 00 00 00 20 00  - test [rax+000002F0],00200000
game_64.exe+DEE2F: 48 8B D8                       - mov rbx,rax
game_64.exe+DEE32: 75 DC                          - jne game_64.exe+DEE10
game_64.exe+DEE34: 0F B7 83 00 03 00 00           - movzx eax,word ptr [rbx+00000300]
game_64.exe+DEE3B: 33 C9                          - xor ecx,ecx
game_64.exe+DEE3D: 0F B7 93 02 03 00 00           - movzx edx,word ptr [rbx+00000302]
// ---------- INJECTING HERE ----------
game_64.exe+DEE44: 2B C7                          - sub eax,edi
// ---------- DONE INJECTING  ----------
game_64.exe+DEE46: 85 C0                          - test eax,eax
game_64.exe+DEE48: 0F 4F C8                       - cmovg ecx,eax
game_64.exe+DEE4B: 3B CA                          - cmp ecx,edx
game_64.exe+DEE4D: 66 0F 4C D1                    - cmovl dx,cx
game_64.exe+DEE51: 66 89 93 00 03 00 00           - mov [rbx+00000300],dx
game_64.exe+DEE58: 48 8B 5C 24 30                 - mov rbx,[rsp+30]
game_64.exe+DEE5D: 48 83 C4 20                    - add rsp,20
game_64.exe+DEE61: 5F                             - pop rdi
game_64.exe+DEE62: C3                             - ret 
game_64.exe+DEE63: CC                             - int 3 
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>157</ID>
      <Description>"[戰鬥] EP無限 / Battle: inf EP"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_BAT_INF_EP,$process,0F B7 48 08 66 3B 0F 0F 83) // should be unique
alloc(newmem,$1000,INJECT_BAT_INF_EP)

label(code)
label(return)

newmem:
  mov cx, [rax+0A]
  mov [rax+08], cx

code:
  movzx ecx,word ptr [rax+08]
  cmp cx,[rdi]
  jmp return

INJECT_BAT_INF_EP:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_BAT_INF_EP)

[DISABLE]

INJECT_BAT_INF_EP:
  db 0F B7 48 08 66 3B 0F

unregistersymbol(INJECT_BAT_INF_EP)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+C80D3

game_64.exe+C80AE: F3 48 0F 2C C0     - cvttss2si rax,xmm0
game_64.exe+C80B3: 66 89 07           - mov [rdi],ax
game_64.exe+C80B6: 41 80 7E 24 15     - cmp byte ptr [r14+24],15
game_64.exe+C80BB: 75 0D              - jne game_64.exe+C80CA
game_64.exe+C80BD: 0F B7 44 24 2A     - movzx eax,word ptr [rsp+2A]
game_64.exe+C80C2: 66 39 07           - cmp [rdi],ax
game_64.exe+C80C5: 76 03              - jna game_64.exe+C80CA
game_64.exe+C80C7: 66 89 07           - mov [rdi],ax
game_64.exe+C80CA: 48 8B 4D 78        - mov rcx,[rbp+78]
game_64.exe+C80CE: E8 6D 9E 01 00     - call game_64.exe+E1F40
// ---------- INJECTING HERE ----------
game_64.exe+C80D3: 0F B7 48 08        - movzx ecx,word ptr [rax+08]
// ---------- DONE INJECTING  ----------
game_64.exe+C80D7: 66 3B 0F           - cmp cx,[rdi]
game_64.exe+C80DA: 0F 83 E3 FD FF FF  - jae game_64.exe+C7EC3
game_64.exe+C80E0: 32 C0              - xor al,al
game_64.exe+C80E2: E9 DE FD FF FF     - jmp game_64.exe+C7EC5
game_64.exe+C80E7: CC                 - int 3 
game_64.exe+C80E8: CC                 - int 3 
game_64.exe+C80E9: CC                 - int 3 
game_64.exe+C80EA: CC                 - int 3 
game_64.exe+C80EB: CC                 - int 3 
game_64.exe+C80EC: CC                 - int 3 
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>231</ID>
      <Description>"[戰鬥] 增幅強化倍率 / Overdrive multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-06
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_OVERDRIVE_MULTI,$process,01 83 14 0B 00 00) // should be unique
alloc(newmem,$1000,INJECT_OVERDRIVE_MULTI)

label(code)
label(return)
label(vf_od_multi)
label(i_base_od_addr)

newmem:
  mov [i_base_od_addr], rbx

  vcvtsi2ss xmm15, xmm15, eax
  vmovss xmm14, [vf_od_multi]
  vmulss xmm15, xmm15, xmm14
  vcvtss2si eax, xmm15

code:
  add [rbx+00000B14],eax
  jmp return
align 10 cc
  vf_od_multi:
  dd (float)1.66667
  i_base_od_addr:
  dq 0

INJECT_OVERDRIVE_MULTI:
  jmp newmem
  nop
return:
registersymbol(INJECT_OVERDRIVE_MULTI)
registersymbol(vf_od_multi)
registersymbol(i_base_od_addr)
[DISABLE]

INJECT_OVERDRIVE_MULTI:
  db 01 83 14 0B 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+303749

game_64.exe+30370D: C6 44 24 30 00              - mov byte ptr [rsp+30],00
game_64.exe+303712: F3 44 0F 11 4C 24 28        - movss [rsp+28],xmm9
game_64.exe+303719: F3 44 0F 11 4C 24 20        - movss [rsp+20],xmm9
game_64.exe+303720: E8 DB A4 F3 FF              - call game_64.exe+23DC00
game_64.exe+303725: 8B 84 24 A8 01 00 00        - mov eax,[rsp+000001A8]
game_64.exe+30372C: 41 FF C7                    - inc r15d
game_64.exe+30372F: 81 C6 E8 03 00 00           - add esi,000003E8
game_64.exe+303735: 44 3B BB 10 0B 00 00        - cmp r15d,[rbx+00000B10]
game_64.exe+30373C: 0F 82 BE FB FF FF           - jb game_64.exe+303300
game_64.exe+303742: 8B 84 24 98 01 00 00        - mov eax,[rsp+00000198]
// ---------- INJECTING HERE ----------
game_64.exe+303749: 01 83 14 0B 00 00           - add [rbx+00000B14],eax
// ---------- DONE INJECTING  ----------
game_64.exe+30374F: 44 0F 28 BC 24 A0 00 00 00  - movaps xmm15,[rsp+000000A0]
game_64.exe+303758: 44 0F 28 B4 24 B0 00 00 00  - movaps xmm14,[rsp+000000B0]
game_64.exe+303761: 44 0F 28 AC 24 C0 00 00 00  - movaps xmm13,[rsp+000000C0]
game_64.exe+30376A: 44 0F 28 A4 24 D0 00 00 00  - movaps xmm12,[rsp+000000D0]
game_64.exe+303773: 44 0F 28 9C 24 E0 00 00 00  - movaps xmm11,[rsp+000000E0]
game_64.exe+30377C: 44 0F 28 94 24 F0 00 00 00  - movaps xmm10,[rsp+000000F0]
game_64.exe+303785: 44 0F 28 8C 24 00 01 00 00  - movaps xmm9,[rsp+00000100]
game_64.exe+30378E: 44 0F 28 84 24 10 01 00 00  - movaps xmm8,[rsp+00000110]
game_64.exe+303797: 0F 28 BC 24 20 01 00 00     - movaps xmm7,[rsp+00000120]
game_64.exe+30379F: 0F 28 B4 24 30 01 00 00     - movaps xmm6,[rsp+00000130]
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>233</ID>
          <Description>"倍率 / multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_od_multi</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>232</ID>
          <Description>"值 / value"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_od_addr</Address>
          <Offsets>
            <Offset>B14</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>223</ID>
      <Description>"[戰鬥] Link經驗值倍率 / Battle: Link XP multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-06
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_LINK_MULTI2,$process,12 1E 00 41 89 84 9E A4 6E 00 00) // should be unique
alloc(newmem,$1000,INJECT_LINK_MULTI2)

label(code)
label(return)
label(vf_link_multi)
label(vf_link_extra_pt)

newmem:
  cmp [r14+rbx*4+00006EA4],eax
  jae code

  cvtsi2ss xmm15, eax
  cvtsi2ss xmm14, [r14+rbx*4+00006EA4]

  subss xmm15, xmm14
  movss xmm13, [vf_link_multi]
  mulss xmm15, xmm13
  movss xmm13, [vf_link_extra_pt]
  addss xmm15, xmm13
  addss xmm14, xmm15

  cvtss2si eax, xmm14

code:
  mov [r14+rbx*4+00006EA4],eax
  jmp return
align 10 cc
  vf_link_multi:
  dd (float)3.33333
  vf_link_extra_pt:
  dd (float)2

INJECT_LINK_MULTI2+03:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_LINK_MULTI2)
registersymbol(vf_link_multi)
registersymbol(vf_link_extra_pt)

[DISABLE]

INJECT_LINK_MULTI2+03:
  db 41 89 84 9E A4 6E 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+1256E3

game_64.exe+1256B0: 48 03 D8                 - add rbx,rax
game_64.exe+1256B3: 44 0F B7 C6              - movzx r8d,si
game_64.exe+1256B7: 41 0F B7 D4              - movzx edx,r12w
game_64.exe+1256BB: 48 8B 8F 18 12 00 00     - mov rcx,[rdi+00001218]
game_64.exe+1256C2: E8 99 12 1E 00           - call game_64.exe+306960
game_64.exe+1256C7: 42 88 84 33 A4 53 00 00  - mov [rbx+r14+000053A4],al
game_64.exe+1256CF: 44 0F B7 C6              - movzx r8d,si
game_64.exe+1256D3: 41 0F B7 D4              - movzx edx,r12w
game_64.exe+1256D7: 48 8B 8F 18 12 00 00     - mov rcx,[rdi+00001218]
game_64.exe+1256DE: E8 1D 12 1E 00           - call game_64.exe+306900
// ---------- INJECTING HERE ----------
game_64.exe+1256E3: 41 89 84 9E A4 6E 00 00  - mov [r14+rbx*4+00006EA4],eax
// ---------- DONE INJECTING  ----------
game_64.exe+1256EB: 48 8B 8F 18 12 00 00     - mov rcx,[rdi+00001218]
game_64.exe+1256F2: 48 81 C1 11 5A 00 00     - add rcx,00005A11
game_64.exe+1256F9: 44 0F B7 C6              - movzx r8d,si
game_64.exe+1256FD: 41 0F B7 D4              - movzx edx,r12w
game_64.exe+125701: E8 2A 12 1E 00           - call game_64.exe+306930
game_64.exe+125706: 42 88 84 33 A4 65 00 00  - mov [rbx+r14+000065A4],al
game_64.exe+12570E: 41 B9 FF FF 00 00        - mov r9d,0000FFFF
game_64.exe+125714: 41 FF C5                 - inc r13d
game_64.exe+125717: 8B 87 D8 00 00 00        - mov eax,[rdi+000000D8]
game_64.exe+12571D: 0F BA F0 1F              - btr eax,1F
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>224</ID>
          <Description>"倍率 / multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_link_multi</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>225</ID>
          <Description>"額外EXP / Extra pt"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_link_extra_pt</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>166</ID>
      <Description>"[戰鬥] 主結晶迴路EXP倍率 / Battle: master quartz XP multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_QXP_MULTI,$process ,89 41 04 0F B6 84 0F 9C 66 EC FF) // should be unique
alloc(newmem,$1000,INJECT_QXP_MULTI)

label(code)
label(return)
label(vf_qz_xp_multi)

newmem:
  test eax, eax
  jz code
  cmp [rcx+04],eax
  jae code


  mov [i_oldqxp], eax
  cvtsi2ss xmm7, eax
  cvtsi2ss xmm6, dword ptr [rcx+04]

  //vcvtsi2ss xmm15, xmm15, eax
  //vcvtsi2ss xmm13, xmm13, [rcx+04]
  //vmovss xmm14, [vf_qz_xp_multi]
  //vsubss xmm12, xmm15, xmm13
  //vmulss xmm12, xmm12, xmm14
  //vaddss xmm15, xmm12, xmm13
  //vroundss xmm15, xmm15, xmm15, 0
  //vcvtss2si eax, xmm15
  //jmp exp_calc

  movss xmm5, [vf_7199]
  ucomiss xmm7, xmm5
  je endp
  ucomiss xmm6, xmm5
  je endp
  movss xmm5, [vf_22999]
  ucomiss xmm7, xmm5
  je endp
  ucomiss xmm6, xmm5
  je endp
  movss xmm5, [vf_48999]
  ucomiss xmm7, xmm5
  je endp
  ucomiss xmm6, xmm5
  je endp
  movss xmm5, [vf_89999]
  ucomiss xmm7, xmm5
  je endp
  ucomiss xmm6, xmm5
  je endp

  ucomiss xmm6, xmm7
  jae endp

exp_calc:

  movss xmm5, [vf_qz_xp_multi]

  subss xmm7, xmm6 // delta
  mulss xmm5, xmm7
  addss xmm6, xmm5

  //jmp exp_calc2

  push rbx

  cmp dword ptr [rcx],1
  je to_L1

  cmp dword ptr [rcx],2
  je to_L2

  cmp dword ptr [rcx],3
  je to_L3

  cmp dword ptr [rcx],4
  je to_L4

  jmp endp_pre

to_L1:
  movss xmm5, [vf_7199]
  jmp calc_final

to_L2:
  movss xmm5, [vf_22999]
  jmp calc_final

to_L3:
  movss xmm5, [vf_48999]
  jmp calc_final

to_L4:
  movss xmm5, [vf_89999]
  //jmp calc_final

calc_final:
  ucomiss xmm6, xmm5
  jbe calc_ok

  movss xmm6, xmm5

calc_ok:
exp_calc2:
  cvtss2si eax, xmm6

  mov [i_newqxp], eax

endp_pre:

  // no need to pop because do not calculate level
  //jmp endp

  pop rbx

endp:



code:
  mov [rcx+04],eax
  movzx eax,byte ptr [rdi+rcx-00139964]
  jmp return
align 10 cc
  vf_qz_xp_multi:
  dd (float)3.3333333333
  vf_7199:
  dd (float)7199
  vf_22999:
  dd (float)22999
  vf_48999:
  dd (float)48999
  vf_89999:
  dd (float)89999
  i_oldqxp:
  dd 0
  i_newqxp:
  dd 0


INJECT_QXP_MULTI:
  jmp newmem
  nop 6
return:
registersymbol(INJECT_QXP_MULTI)
registersymbol(vf_qz_xp_multi)
[DISABLE]

INJECT_QXP_MULTI:
  db 89 41 04 0F B6 84 0F 9C 66 EC FF

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+23FC76

game_64.exe+23FC44: E8 D7 7D ED FF           - call game_64.exe+117A20
game_64.exe+23FC49: 41 FF C6                 - inc r14d
game_64.exe+23FC4C: 49 83 C7 20              - add r15,20
game_64.exe+23FC50: 41 81 FE 00 08 00 00     - cmp r14d,00000800
game_64.exe+23FC57: 7C B7                    - jl game_64.exe+23FC10
game_64.exe+23FC59: 48 8D 8D 18 F7 19 00     - lea rcx,[rbp+0019F718]
game_64.exe+23FC60: BA 1F 00 00 00           - mov edx,0000001F
game_64.exe+23FC65: 0F B6 84 0F BC 62 EC FF  - movzx eax,byte ptr [rdi+rcx-00139D44]
game_64.exe+23FC6D: 88 01                    - mov [rcx],al
game_64.exe+23FC6F: 8B 84 0F C0 62 EC FF     - mov eax,[rdi+rcx-00139D40]
// ---------- INJECTING HERE ----------
game_64.exe+23FC76: 89 41 04                 - mov [rcx+04],eax
// ---------- DONE INJECTING  ----------
game_64.exe+23FC79: 0F B6 84 0F 9C 66 EC FF  - movzx eax,byte ptr [rdi+rcx-00139964]
game_64.exe+23FC81: 88 81 E0 03 00 00        - mov [rcx+000003E0],al
game_64.exe+23FC87: 8B 84 0F A0 66 EC FF     - mov eax,[rdi+rcx-00139960]
game_64.exe+23FC8E: 89 81 E4 03 00 00        - mov [rcx+000003E4],eax
game_64.exe+23FC94: 48 8D 49 20              - lea rcx,[rcx+20]
game_64.exe+23FC98: 48 83 EA 01              - sub rdx,01
game_64.exe+23FC9C: 75 C7                    - jne game_64.exe+23FC65
game_64.exe+23FC9E: 0F B6 86 C0 84 07 00     - movzx eax,byte ptr [rsi+000784C0]
game_64.exe+23FCA5: 88 85 70 8D 1B 00        - mov [rbp+001B8D70],al
game_64.exe+23FCAB: 8B 86 C4 84 07 00        - mov eax,[rsi+000784C4]
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>167</ID>
          <Description>"倍率 / multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_qz_xp_multi</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>125</ID>
      <Description>"[戰鬥] 設定最低戰門評價 / Set min. Tactical Bonus"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-06-09
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_SET_MIN_TP_FACTOR,$process,8B 8E 40 02 00 00 8D) // should be unique
alloc(newmem,$1000,INJECT_SET_MIN_TP_FACTOR)

label(code)
label(return)
label(vf_min_tp_factor)

newmem:
  push r15
  mov r15, [rsi+218]
  vmovss xmm15, [vf_min_tp_factor]
  vmovss xmm14, [r15+200]
  vucomiss xmm14, xmm15
  jae endp

  vmovss [r15+200], xmm15

endp:
  pop r15

code:
  mov ecx,[rsi+00000240]
  jmp return
align 10 cc
  vf_3:
  dd (float)3
  vf_min_tp_factor:
  dd (float)2.1

INJECT_SET_MIN_TP_FACTOR:
  jmp newmem
  nop
return:
registersymbol(INJECT_SET_MIN_TP_FACTOR)
registersymbol(vf_min_tp_factor)

[DISABLE]

INJECT_SET_MIN_TP_FACTOR:
  db 8B 8E 40 02 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+119E05

game_64.exe+119DD7: 48 33 C4                    - xor rax,rsp
game_64.exe+119DDA: 48 89 85 90 00 00 00        - mov [rbp+00000090],rax
game_64.exe+119DE1: 44 0F 28 C9                 - movaps xmm9,xmm1
game_64.exe+119DE5: 48 8B F1                    - mov rsi,rcx
game_64.exe+119DE8: 48 89 4D C0                 - mov [rbp-40],rcx
game_64.exe+119DEC: E8 FF 51 09 00              - call game_64.exe+1AEFF0
game_64.exe+119DF1: 4C 8B B8 C8 67 00 00        - mov r15,[rax+000067C8]
game_64.exe+119DF8: 4C 89 7D A8                 - mov [rbp-58],r15
game_64.exe+119DFC: 4D 8B 6F 30                 - mov r13,[r15+30]
game_64.exe+119E00: 4C 89 6C 24 78              - mov [rsp+78],r13
// ---------- INJECTING HERE ----------
game_64.exe+119E05: 8B 8E 40 02 00 00           - mov ecx,[rsi+00000240]
// ---------- DONE INJECTING  ----------
game_64.exe+119E0B: 8D 41 FC                    - lea eax,[rcx-04]
game_64.exe+119E0E: F3 0F 10 35 52 C6 7C 00     - movss xmm6,[game_64.exe+8E6468]
game_64.exe+119E16: F3 44 0F 10 05 A1 C6 7C 00  - movss xmm8,[game_64.exe+8E64C0]
game_64.exe+119E1F: 0F 57 FF                    - xorps xmm7,xmm7
game_64.exe+119E22: 83 F8 07                    - cmp eax,07
game_64.exe+119E25: 76 0C                       - jna game_64.exe+119E33
game_64.exe+119E27: 8D 41 EA                    - lea eax,[rcx-16]
game_64.exe+119E2A: 83 F8 02                    - cmp eax,02
game_64.exe+119E2D: 0F 87 82 01 00 00           - ja game_64.exe+119FB5
game_64.exe+119E33: 80 BE 38 05 00 00 00        - cmp byte ptr [rsi+00000538],00
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>126</ID>
          <Description>"係數 / Factor"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_min_tp_factor</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>145</ID>
      <Description>"[戰鬥] 傷害倍率 / Battle: Damage multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_BATTLE_DMG_CTRL,$process,2B C6 85 C0 0F 4F E8) // should be unique
alloc(newmem,$1000,INJECT_BATTLE_DMG_CTRL)

label(code)
label(return)
label(vf_damage_multi_to_player)
label(vf_damage_multi_to_enemy)
label(vf_damage_multi_to_h_enemy)
label(is_fill_ep)
label(is_fill_cp)
label(i_hp_new)
label(i_hp_old)
label(is_player_no_dead)
label(i_high_hp_enemy_threshold)

newmem:
  mov [i_hp_old], esi

  vcvtsi2ss xmm15, xmm15, esi  // damage
  vcvtsi2ss xmm13, xmm13, eax  // current HP
  vcvtsi2ss xmm12, xmm12, ebx  // max HP
  vbroadcastss xmm12, xmm12
  vbroadcastss xmm13, xmm13
  vbroadcastss xmm15, xmm15

  vmovaps xmm14, [vf_damage_multi_to_player]

  vmulps xmm15, xmm15, xmm14 // new damages
  vsubps xmm13, xmm13, xmm15 // new HPs evaluation

  vxorps xmm14, xmm14, xmm14

  cmp byte ptr [rdi+000002F0], 0
  jne to_enemy

to_player:
  cmp dword ptr [is_fill_ep], 1
  jne @F
  push r15
  mov r15w, [rdi+000002FE]
  mov [rdi+000002FC] r15w
  pop r15

@@:
  cmp dword ptr [is_fill_cp], 1
  jne @F
  push r15
  mov r15w, [rdi+00000302]
  mov [rdi+00000300] r15w
  pop r15

@@:
  cmp dword ptr [is_player_no_dead], 1
  jne @F
  vucomiss xmm13, xmm14
  jae @F

  vxorps xmm15, xmm15, xmm15

@@:
  cmp esi, 0
  jl @F
  vcvtss2si esi, xmm15
@@:
  mov [i_hp_new], esi
  jmp code

to_enemy:
  cmp eax, [i_high_hp_enemy_threshold]
  jae @F
  vshufps xmm15, xmm15, xmm15, 55
  jmp enemy_hp_cnv

@@:
  vshufps xmm15, xmm15, xmm15, A2

enemy_hp_cnv:
  vcvtss2si esi, xmm15
  mov [i_hp_new], esi


code:
  sub eax,esi
  test eax,eax
  cmovg ebp,eax
  jmp return
align 10 cc
  vf_damage_multi_to_player:
  dd (float)0.9
  vf_damage_multi_to_enemy:
  dd (float)1
  vf_damage_multi_to_h_enemy:
  dd (float)5.5566
  dd 0
  is_fill_ep:
  dd 1
  is_fill_cp:
  dd 1
  tmp1:
  dd 0
  is_player_no_dead:
  dd 0
  i_high_hp_enemy_threshold:
  dd #74283
  i_hp_new:
  dd 0
  i_hp_old:
  dd 0
  vf_1:
  dd (float)1


INJECT_BATTLE_DMG_CTRL:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_BATTLE_DMG_CTRL)
registersymbol(vf_damage_multi_to_player)
registersymbol(vf_damage_multi_to_enemy)
registersymbol(vf_damage_multi_to_h_enemy)
registersymbol(is_fill_ep)
registersymbol(is_fill_cp)
registersymbol(i_hp_new)
registersymbol(i_hp_old)
registersymbol(is_player_no_dead)
registersymbol(i_high_hp_enemy_threshold)

[DISABLE]

INJECT_BATTLE_DMG_CTRL:
  db 2B C6 85 C0 0F 4F E8

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+DF108

game_64.exe+DF0E4: 48 8B D7                 - mov rdx,rdi
game_64.exe+DF0E7: E8 44 91 01 00           - call game_64.exe+F8230
game_64.exe+DF0EC: EB 16                    - jmp game_64.exe+DF104
game_64.exe+DF0EE: 41 0F BF 48 0C           - movsx ecx,word ptr [r8+0C]
game_64.exe+DF0F3: B8 1F 85 EB 51           - mov eax,51EB851F
game_64.exe+DF0F8: 0F AF 4C 24 34           - imul ecx,[rsp+34]
game_64.exe+DF0FD: F7 E1                    - mul ecx
game_64.exe+DF0FF: C1 EA 05                 - shr edx,05
game_64.exe+DF102: 03 DA                    - add ebx,edx
game_64.exe+DF104: 8B 44 24 20              - mov eax,[rsp+20]
// ---------- INJECTING HERE ----------
game_64.exe+DF108: 2B C6                    - sub eax,esi
// ---------- DONE INJECTING  ----------
game_64.exe+DF10A: 85 C0                    - test eax,eax
game_64.exe+DF10C: 0F 4F E8                 - cmovg ebp,eax
game_64.exe+DF10F: 8B 87 F0 02 00 00        - mov eax,[rdi+000002F0]
game_64.exe+DF115: 3B EB                    - cmp ebp,ebx
game_64.exe+DF117: 0F 4C DD                 - cmovl ebx,ebp
game_64.exe+DF11A: 48 8B AC 24 80 00 00 00  - mov rbp,[rsp+00000080]
game_64.exe+DF122: C1 E8 1C                 - shr eax,1C
game_64.exe+DF125: 89 9F F4 02 00 00        - mov [rdi+000002F4],ebx
game_64.exe+DF12B: A8 01                    - test al,01
game_64.exe+DF12D: 74 1D                    - je game_64.exe+DF14C
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>146</ID>
          <Description>"受傷時EP回滿? / Fill EP after hit?"</Description>
          <DropDownListLink>YN</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>is_fill_ep</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>147</ID>
          <Description>"受傷時CP回滿? / Fill CP after hit?"</Description>
          <DropDownListLink>YN</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>is_fill_cp</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>148</ID>
          <Description>"對玩家傷害倍率 / Multiplier to player"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_damage_multi_to_player</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>149</ID>
          <Description>"對敵人傷害倍率 / Multiplier to enemy"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_damage_multi_to_enemy</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>226</ID>
          <Description>"對高HP敵人傷害倍率 / mul. to enemy w/ high HP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_damage_multi_to_h_enemy</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>227</ID>
          <Description>"高HP定義值 / High HP enemy threshold"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_high_hp_enemy_threshold</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>150</ID>
          <Description>"試著使玩家HP不變0? / Try to keep player HP &gt; 0?"</Description>
          <DropDownListLink>YN</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>is_player_no_dead</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>54</ID>
      <Description>"釣魚快速捲線 / Fash fishing"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-05-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_FAST_FISHING,$process,F3 0F 58 8B 84 02 00 00) // should be unique
alloc(newmem,$1000,INJECT_FAST_FISHING)

label(code)
label(return)

newmem:
  vxorps xmm14, xmm14, xmm14
  vucomiss xmm1, xmm14
  jae @F
  vmovss xmm14, [vf_010]
  vmulss xmm1, xmm1, xmm14

@@:

code:
  addss xmm1,[rbx+00000284]
  jmp return
align 10 cc
  vf_01:
  dd (float)-1
  vf_010:
  dd (float)-11

INJECT_FAST_FISHING:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_FAST_FISHING)

[DISABLE]

INJECT_FAST_FISHING:
  db F3 0F 58 8B 84 02 00 00

unregistersymbol(INJECT_FAST_FISHING)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+274C69

game_64.exe+274C30: 41 0F 28 D8              - movaps xmm3,xmm8
game_64.exe+274C34: 89 7C 24 20              - mov [rsp+20],edi
game_64.exe+274C38: F3 0F 11 83 70 02 00 00  - movss [rbx+00000270],xmm0
game_64.exe+274C40: F3 0F 10 48 1C           - movss xmm1,[rax+1C]
game_64.exe+274C45: F3 0F 59 8B 44 02 00 00  - mulss xmm1,[rbx+00000244]
game_64.exe+274C4D: 0F 57 0D CC CC 70 00     - xorps xmm1,[game_64.exe+981920]
game_64.exe+274C54: F3 0F 5F C8              - maxss xmm1,xmm0
game_64.exe+274C58: 41 0F 28 C2              - movaps xmm0,xmm10
game_64.exe+274C5C: F3 0F 11 8B 70 02 00 00  - movss [rbx+00000270],xmm1
game_64.exe+274C64: F3 41 0F 59 CB           - mulss xmm1,xmm11
// ---------- INJECTING HERE ----------
game_64.exe+274C69: F3 0F 58 8B 84 02 00 00  - addss xmm1,[rbx+00000284]
// ---------- DONE INJECTING  ----------
game_64.exe+274C71: F3 0F 5D C1              - minss xmm0,xmm1
game_64.exe+274C75: F3 0F 10 0D 47 EE 5F 00  - movss xmm1,[game_64.exe+873AC4]
game_64.exe+274C7D: F3 0F 5F D0              - maxss xmm2,xmm0
game_64.exe+274C81: F3 0F 11 93 84 02 00 00  - movss [rbx+00000284],xmm2
game_64.exe+274C89: F3 0F 59 15 13 EE 5F 00  - mulss xmm2,[game_64.exe+873AA4]
game_64.exe+274C91: 48 8B 8B 48 03 00 00     - mov rcx,[rbx+00000348]
game_64.exe+274C98: F3 0F 5C CA              - subss xmm1,xmm2
game_64.exe+274C9C: F3 0F 10 15 D8 ED 5F 00  - movss xmm2,[game_64.exe+873A7C]
game_64.exe+274CA4: 48 8B 01                 - mov rax,[rcx]
game_64.exe+274CA7: FF 90 E0 00 00 00        - call qword ptr [rax+000000E0]
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>137</ID>
      <Description>"選單-&gt; Item: 設定道具數 / Menu -&gt;item: set item #"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_SET_MIN_ITEM_CNT,$process,66 42 83 7C 01 02 00) // should be unique
alloc(newmem,$1000,INJECT_SET_MIN_ITEM_CNT)

label(code)
label(return)
label(i_min_item_cnt)
label(i_set_to_item_cnt)
label(i_max_item_cnt)

newmem:
  push r15
  mov r15w, [rcx+r8+02]
  cmp r15w, [i_min_item_cnt]
  jb endp
  cmp r15w, [i_max_item_cnt]
  jb set_cnt
  mov r15w, [i_max_item_cnt]
  jmp endp_pre
set_cnt:
  mov r15w, [i_set_to_item_cnt]

endp_pre:
  mov [rcx+r8+02], r15w


endp:
  pop r15


code:
  cmp word ptr [rcx+r8+02],00
  jmp return
align 10 cc
  i_min_item_cnt:
  dw 2
  i_set_to_item_cnt:
  dw #70
  i_max_item_cnt:
  dw #92


INJECT_SET_MIN_ITEM_CNT:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_SET_MIN_ITEM_CNT)
registersymbol(i_min_item_cnt)
registersymbol(i_set_to_item_cnt)
registersymbol(i_max_item_cnt)

[DISABLE]

INJECT_SET_MIN_ITEM_CNT:
  db 66 42 83 7C 01 02 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+1827F6

game_64.exe+1827CF: CC                    - int 3 
game_64.exe+1827D0: 4C 8B 05 89 31 A9 00  - mov r8,[game_64.exe+C15960]
game_64.exe+1827D7: 33 C0                 - xor eax,eax
game_64.exe+1827D9: 41 8B 90 68 E0 19 00  - mov edx,[r8+0019E068]
game_64.exe+1827E0: 81 E2 FF FF FF 7F     - and edx,7FFFFFFF
game_64.exe+1827E6: 76 1D                 - jna game_64.exe+182805
game_64.exe+1827E8: 4D 8B 80 70 E0 19 00  - mov r8,[r8+0019E070]
game_64.exe+1827EF: 90                    - nop 
game_64.exe+1827F0: 8B C8                 - mov ecx,eax
game_64.exe+1827F2: 48 C1 E1 05           - shl rcx,05
// ---------- INJECTING HERE ----------
game_64.exe+1827F6: 66 42 83 7C 01 02 00  - cmp word ptr [rcx+r8+02],00
// ---------- DONE INJECTING  ----------
game_64.exe+1827FD: 74 06                 - je game_64.exe+182805
game_64.exe+1827FF: FF C0                 - inc eax
game_64.exe+182801: 3B C2                 - cmp eax,edx
game_64.exe+182803: 72 EB                 - jb game_64.exe+1827F0
game_64.exe+182805: C3                    - ret 
game_64.exe+182806: CC                    - int 3 
game_64.exe+182807: CC                    - int 3 
game_64.exe+182808: CC                    - int 3 
game_64.exe+182809: CC                    - int 3 
game_64.exe+18280A: CC                    - int 3 
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>138</ID>
          <Description>"原本數量必需&gt;= / Item # must &gt;="</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_min_item_cnt</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>139</ID>
          <Description>"設定數量為: / Set # to:"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_set_to_item_cnt</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>140</ID>
          <Description>"設定上限值 / set uppper limit"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_max_item_cnt</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>141</ID>
      <Description>"使用道具：設定數量為.. / Use item -&gt; set count # to .."</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_DROP_ITEM_SET_CNT,$process,0F B7 4A 02 0F B7 C7) // should be unique
alloc(newmem,$1000,INJECT_DROP_ITEM_SET_CNT)

label(code)
label(return)
label(i_drop_set_min)
label(i_last_drop_item_addr)

newmem:
  mov [i_last_drop_item_addr], rdx
  mov cx, [i_drop_set_min]
  mov word ptr [rdx+02], cx
  xor di, di

code:
  movzx ecx,word ptr [rdx+02]
  movzx eax,di
  jmp return
align 10 cc
  i_last_drop_item_addr:
  dq 0
  i_drop_set_min:
  dw #69

INJECT_DROP_ITEM_SET_CNT:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_DROP_ITEM_SET_CNT)
registersymbol(i_drop_set_min)
registersymbol(i_last_drop_item_addr)

[DISABLE]

INJECT_DROP_ITEM_SET_CNT:
  db 0F B7 4A 02 0F B7 C7

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+25F20E

game_64.exe+25F1F2: 48 C1 E0 05              - shl rax,05
game_64.exe+25F1F6: 66 39 1C 10              - cmp [rax+rdx],bx
game_64.exe+25F1FA: 74 09                    - je game_64.exe+25F205
game_64.exe+25F1FC: FF C1                    - inc ecx
game_64.exe+25F1FE: 41 3B C9                 - cmp ecx,r9d
game_64.exe+25F201: 72 ED                    - jb game_64.exe+25F1F0
game_64.exe+25F203: EB 1E                    - jmp game_64.exe+25F223
game_64.exe+25F205: 8B C1                    - mov eax,ecx
game_64.exe+25F207: 48 C1 E0 05              - shl rax,05
game_64.exe+25F20B: 48 03 D0                 - add rdx,rax
// ---------- INJECTING HERE ----------
game_64.exe+25F20E: 0F B7 4A 02              - movzx ecx,word ptr [rdx+02]
// ---------- DONE INJECTING  ----------
game_64.exe+25F212: 0F B7 C7                 - movzx eax,di
game_64.exe+25F215: 2B C8                    - sub ecx,eax
game_64.exe+25F217: 8B C6                    - mov eax,esi
game_64.exe+25F219: 85 C9                    - test ecx,ecx
game_64.exe+25F21B: 66 0F 4F C1              - cmovg ax,cx
game_64.exe+25F21F: 66 89 42 02              - mov [rdx+02],ax
game_64.exe+25F223: 40 38 B4 24 90 00 00 00  - cmp [rsp+00000090],sil
game_64.exe+25F22B: 0F 84 7D 03 00 00        - je game_64.exe+25F5AE
game_64.exe+25F231: 41 8B 06                 - mov eax,[r14]
game_64.exe+25F234: 25 FF FF FF 7F           - and eax,7FFFFFFF
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>142</ID>
          <Description>"設定數量 / set amount"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_drop_set_min</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>143</ID>
          <Description>"ID"</Description>
          <DropDownListLink>IDs</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_last_drop_item_addr</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>144</ID>
          <Description>"Amount"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_last_drop_item_addr</Address>
          <Offsets>
            <Offset>2</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>206</ID>
      <Description>"買道具數量&gt;2：設定數量 &gt; 70 / Buy item  &amp; #&gt;2 ==&gt; set # to 70"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_BUY_ITEM_SET_CNT,$process,41 0F B7 51 02 45) // should be unique
alloc(newmem,$1000,INJECT_BUY_ITEM_SET_CNT)

label(code)
label(return)

newmem:
  cmp word ptr [r9+02], #70
  jae code
  mov word ptr [r9+02], #70

code:
  movzx edx,word ptr [r9+02]
  jmp return

INJECT_BUY_ITEM_SET_CNT:
  jmp newmem
return:
registersymbol(INJECT_BUY_ITEM_SET_CNT)

[DISABLE]

INJECT_BUY_ITEM_SET_CNT:
  db 41 0F B7 51 02

unregistersymbol(INJECT_BUY_ITEM_SET_CNT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+255A4F

game_64.exe+255A32: 48 C1 E0 05     - shl rax,05
game_64.exe+255A36: 66 42 39 2C 00  - cmp [rax+r8],bp
game_64.exe+255A3B: 74 08           - je game_64.exe+255A45
game_64.exe+255A3D: FF C1           - inc ecx
game_64.exe+255A3F: 3B CA           - cmp ecx,edx
game_64.exe+255A41: 72 ED           - jb game_64.exe+255A30
game_64.exe+255A43: EB 36           - jmp game_64.exe+255A7B
game_64.exe+255A45: 44 8B C9        - mov r9d,ecx
game_64.exe+255A48: 49 C1 E1 05     - shl r9,05
game_64.exe+255A4C: 4D 03 C8        - add r9,r8
// ---------- INJECTING HERE ----------
game_64.exe+255A4F: 41 0F B7 51 02  - movzx edx,word ptr [r9+02]
// ---------- DONE INJECTING  ----------
game_64.exe+255A54: 45 0F B6 45 64  - movzx r8d,byte ptr [r13+64]
game_64.exe+255A59: 41 0F B7 C7     - movzx eax,r15w
game_64.exe+255A5D: 8D 0C 10        - lea ecx,[rax+rdx]
game_64.exe+255A60: 41 3B C8        - cmp ecx,r8d
game_64.exe+255A63: 76 08           - jna game_64.exe+255A6D
game_64.exe+255A65: 45 0F B7 F8     - movzx r15d,r8w
game_64.exe+255A69: 66 44 2B FA     - sub r15w,dx
game_64.exe+255A6D: 66 41 03 D7     - add dx,r15w
game_64.exe+255A71: 66 41 89 51 02  - mov [r9+02],dx
game_64.exe+255A76: E9 BE 00 00 00  - jmp game_64.exe+255B39
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>207</ID>
      <Description>"買東西不扣錢反增加 / Buy item will increase amount of Mira"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_BUY_COCO_NO_DEC,$process,2B C2 89 81 18 FF 19 00) // should be unique
alloc(newmem,$1000,INJECT_BUY_COCO_NO_DEC)

label(code)
label(return)

newmem:
  cmp edx, 0
  jle code
  neg edx

code:
  sub eax,edx
  mov [rcx+0019FF18],eax
  jmp return

INJECT_BUY_COCO_NO_DEC:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_BUY_COCO_NO_DEC)

[DISABLE]

INJECT_BUY_COCO_NO_DEC:
  db 2B C2 89 81 18 FF 19 00

unregistersymbol(INJECT_BUY_COCO_NO_DEC)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+25F171

game_64.exe+25F15A: CC                             - int 3 
game_64.exe+25F15B: CC                             - int 3 
game_64.exe+25F15C: CC                             - int 3 
game_64.exe+25F15D: CC                             - int 3 
game_64.exe+25F15E: CC                             - int 3 
game_64.exe+25F15F: CC                             - int 3 
game_64.exe+25F160: 48 8B 0D F9 67 9B 00           - mov rcx,[game_64.exe+C15960]
game_64.exe+25F167: 8B 81 18 FF 19 00              - mov eax,[rcx+0019FF18]
game_64.exe+25F16D: 3B C2                          - cmp eax,edx
game_64.exe+25F16F: 76 09                          - jna game_64.exe+25F17A
// ---------- INJECTING HERE ----------
game_64.exe+25F171: 2B C2                          - sub eax,edx
// ---------- DONE INJECTING  ----------
game_64.exe+25F173: 89 81 18 FF 19 00              - mov [rcx+0019FF18],eax
game_64.exe+25F179: C3                             - ret 
game_64.exe+25F17A: C7 81 18 FF 19 00 00 00 00 00  - mov [rcx+0019FF18],00000000
game_64.exe+25F184: C3                             - ret 
game_64.exe+25F185: CC                             - int 3 
game_64.exe+25F186: CC                             - int 3 
game_64.exe+25F187: CC                             - int 3 
game_64.exe+25F188: CC                             - int 3 
game_64.exe+25F189: CC                             - int 3 
game_64.exe+25F18A: CC                             - int 3 
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>159</ID>
      <Description>"最後裝備之結晶迴路ID / last equipped quartz ID"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_LAST_EQU_QUARTZ,$process,41 0F B7 2C 0F) // should be unique
alloc(newmem,$1000,INJECT_LAST_EQU_QUARTZ)

label(code)
label(return)
label(i_last_equ_quartz_addr)

newmem:
  push r14
  lea r14, [r15+rcx]
  mov [i_last_equ_quartz_addr], r14
  pop r14

code:
  movzx ebp,word ptr [r15+rcx]
  jmp return
align 10 cc
  i_last_equ_quartz_addr:
  dq 0

INJECT_LAST_EQU_QUARTZ:
  jmp newmem
return:
registersymbol(INJECT_LAST_EQU_QUARTZ)
registersymbol(i_last_equ_quartz_addr)

[DISABLE]

INJECT_LAST_EQU_QUARTZ:
  db 41 0F B7 2C 0F

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+25D208

game_64.exe+25D1D7: 48 89 6C 24 50           - mov [rsp+50],rbp
game_64.exe+25D1DC: 0F B7 C7                 - movzx eax,di
game_64.exe+25D1DF: 4C 89 64 24 58           - mov [rsp+58],r12
game_64.exe+25D1E4: 41 BC 0F 27 00 00        - mov r12d,0000270F
game_64.exe+25D1EA: 4C 89 7C 24 60           - mov [rsp+60],r15
game_64.exe+25D1EF: 48 8D 0C C0              - lea rcx,[rax+rax*8]
game_64.exe+25D1F3: 0F B7 C3                 - movzx eax,bx
game_64.exe+25D1F6: 48 03 C8                 - add rcx,rax
game_64.exe+25D1F9: 4C 8D 3C 4D B8 F3 19 00  - lea r15,[rcx*2+0019F3B8]
game_64.exe+25D201: 48 8B 0D 58 87 9B 00     - mov rcx,[game_64.exe+C15960]
// ---------- INJECTING HERE ----------
game_64.exe+25D208: 41 0F B7 2C 0F           - movzx ebp,word ptr [r15+rcx]
// ---------- DONE INJECTING  ----------
game_64.exe+25D20D: 66 41 3B EC              - cmp bp,r12w
game_64.exe+25D211: 0F 84 B2 00 00 00        - je game_64.exe+25D2C9
game_64.exe+25D217: 48 8B 89 80 2A 12 00     - mov rcx,[rcx+00122A80]
game_64.exe+25D21E: 0F B7 D5                 - movzx edx,bp
game_64.exe+25D221: E8 2A C9 F6 FF           - call game_64.exe+1C9B50
game_64.exe+25D226: 48 8B D8                 - mov rbx,rax
game_64.exe+25D229: 48 85 C0                 - test rax,rax
game_64.exe+25D22C: 74 57                    - je game_64.exe+25D285
game_64.exe+25D22E: 80 7C 24 70 00           - cmp byte ptr [rsp+70],00
game_64.exe+25D233: 74 31                    - je game_64.exe+25D266
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>160</ID>
          <Description>"ID:"</Description>
          <DropDownListLink>IDs</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_last_equ_quartz_addr</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>210</ID>
      <Description>"顯示裝備的結晶迴路 / Get equipped quartz / unordered"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_ALL_EQP_QUARTZ,$process,0F B7 84 50 B8 F3 19 00) // should be unique
alloc(newmem,$1000,INJECT_GET_ALL_EQP_QUARTZ)

label(code)
label(return)
label(i_base_eqp_quartz_addr)
label(i_eqp_quartz_idx)

newmem:
  mov [i_base_eqp_quartz_addr], rax

  test r8d, r8d
  jnz code
  mov [i_eqp_quartz_idx], edx

code:
  movzx eax,word ptr [rax+rdx*2+0019F3B8]
  jmp return
align 10 cc
  i_base_eqp_quartz_addr:
  dq 0
  i_eqp_quartz_idx:
  dd 0


INJECT_GET_ALL_EQP_QUARTZ:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_GET_ALL_EQP_QUARTZ)
registersymbol(i_base_eqp_quartz_addr)
registersymbol(i_eqp_quartz_idx)

[DISABLE]

INJECT_GET_ALL_EQP_QUARTZ:
  db 0F B7 84 50 B8 F3 19 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+259768

game_64.exe+259744: 72 06                    - jb game_64.exe+25974C
game_64.exe+259746: B8 0F 27 00 00           - mov eax,0000270F
game_64.exe+25974B: C3                       - ret 
game_64.exe+25974C: 66 41 83 F8 09           - cmp r8w,09
game_64.exe+259751: 73 F3                    - jae game_64.exe+259746
game_64.exe+259753: 0F B7 C2                 - movzx eax,dx
game_64.exe+259756: 41 0F B7 C8              - movzx ecx,r8w
game_64.exe+25975A: 48 8D 14 C0              - lea rdx,[rax+rax*8]
game_64.exe+25975E: 48 8B 05 FB C1 9B 00     - mov rax,[game_64.exe+C15960]
game_64.exe+259765: 48 03 D1                 - add rdx,rcx
// ---------- INJECTING HERE ----------
game_64.exe+259768: 0F B7 84 50 B8 F3 19 00  - movzx eax,word ptr [rax+rdx*2+0019F3B8]
// ---------- DONE INJECTING  ----------
game_64.exe+259770: C3                       - ret 
game_64.exe+259771: CC                       - int 3 
game_64.exe+259772: CC                       - int 3 
game_64.exe+259773: CC                       - int 3 
game_64.exe+259774: CC                       - int 3 
game_64.exe+259775: CC                       - int 3 
game_64.exe+259776: CC                       - int 3 
game_64.exe+259777: CC                       - int 3 
game_64.exe+259778: CC                       - int 3 
game_64.exe+259779: CC                       - int 3 
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>211</ID>
          <Description>"Master ID"</Description>
          <DropDownListLink>IDs</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_eqp_quartz_addr</Address>
          <Offsets>
            <Offset>0019F3B8+[i_eqp_quartz_idx]*2</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>212</ID>
          <Description>"ID #1"</Description>
          <DropDownListLink>IDs</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_eqp_quartz_addr</Address>
          <Offsets>
            <Offset>19F3BA+[i_eqp_quartz_idx]*2</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>213</ID>
          <Description>"ID #2"</Description>
          <DropDownListLink>IDs</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_eqp_quartz_addr</Address>
          <Offsets>
            <Offset>19F3BC+[i_eqp_quartz_idx]*2</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>214</ID>
          <Description>"ID #3"</Description>
          <DropDownListLink>IDs</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_eqp_quartz_addr</Address>
          <Offsets>
            <Offset>19F3BE+[i_eqp_quartz_idx]*2</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>215</ID>
          <Description>"ID #4"</Description>
          <DropDownListLink>IDs</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_eqp_quartz_addr</Address>
          <Offsets>
            <Offset>19F3C0+[i_eqp_quartz_idx]*2</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>216</ID>
          <Description>"ID #5"</Description>
          <DropDownListLink>IDs</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_eqp_quartz_addr</Address>
          <Offsets>
            <Offset>19F3C2+[i_eqp_quartz_idx]*2</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>217</ID>
          <Description>"ID #6"</Description>
          <DropDownListLink>IDs</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_eqp_quartz_addr</Address>
          <Offsets>
            <Offset>19F3C4+[i_eqp_quartz_idx]*2</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>218</ID>
          <Description>"ID #7"</Description>
          <DropDownListLink>IDs</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_eqp_quartz_addr</Address>
          <Offsets>
            <Offset>19F3C6+[i_eqp_quartz_idx]*2</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>219</ID>
          <Description>"ID #8"</Description>
          <DropDownListLink>IDs</DropDownListLink>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_eqp_quartz_addr</Address>
          <Offsets>
            <Offset>19F3C8+[i_eqp_quartz_idx]*2</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>170</ID>
      <Description>"取得目前耀晶數 / Get seph."</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_SEPHS,$process,8B 84 88 D8 FE 19 00) // should be unique
alloc(newmem,$1000,INJECT_GET_SEPHS)

label(code)
label(return)
label(i_base_seph_addr)
label(i_min_seph)

newmem:
  test ecx, ecx
  jnz chk_min
  mov [i_base_seph_addr], rax

chk_min:
  push r15
  mov r15d, [i_min_seph]
  cmp [rax+rcx*4+0019FED8], r15d
  jae chk_next
  mov [rax+rcx*4+0019FED8], r15d

chk_next:
  test ecx, ecx
  jnz endp

  // piece
  cmp [rax+19FEF4], r15d
  jae @F
  mov [rax+19FEF4], r15d

  // Mira
@@:
  cmp [rax+19FF18], r15d
  jae @F
  mov [rax+19FF18], r15d

endp:
  pop r15


code:
  mov eax,[rax+rcx*4+0019FED8]
  jmp return
align 10 cc
  i_base_seph_addr:
  dq 0
  i_min_seph:
  dd #4567

INJECT_GET_SEPHS:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_GET_SEPHS)
registersymbol(i_base_seph_addr)
registersymbol(i_min_seph)

[DISABLE]

INJECT_GET_SEPHS:
  db 8B 84 88 D8 FE 19 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+25CB6A

game_64.exe+25CB4F: 48 83 C4 28           - add rsp,28
game_64.exe+25CB53: C3                    - ret 
game_64.exe+25CB54: 0F B6 40 59           - movzx eax,byte ptr [rax+59]
game_64.exe+25CB58: 48 83 C4 28           - add rsp,28
game_64.exe+25CB5C: C3                    - ret 
game_64.exe+25CB5D: CC                    - int 3 
game_64.exe+25CB5E: CC                    - int 3 
game_64.exe+25CB5F: CC                    - int 3 
game_64.exe+25CB60: 48 8B 05 F9 8D 9B 00  - mov rax,[game_64.exe+C15960]
game_64.exe+25CB67: 48 63 CA              - movsxd  rcx,edx
// ---------- INJECTING HERE ----------
game_64.exe+25CB6A: 8B 84 88 D8 FE 19 00  - mov eax,[rax+rcx*4+0019FED8]
// ---------- DONE INJECTING  ----------
game_64.exe+25CB71: C3                    - ret 
game_64.exe+25CB72: CC                    - int 3 
game_64.exe+25CB73: CC                    - int 3 
game_64.exe+25CB74: CC                    - int 3 
game_64.exe+25CB75: CC                    - int 3 
game_64.exe+25CB76: CC                    - int 3 
game_64.exe+25CB77: CC                    - int 3 
game_64.exe+25CB78: CC                    - int 3 
game_64.exe+25CB79: CC                    - int 3 
game_64.exe+25CB7A: CC                    - int 3 
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>171</ID>
          <Description>"Usage: 選單-&gt; Item / menu -&gt; Item"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>181</ID>
          <Description>"最小值 / min. value"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_min_seph</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>204</ID>
          <Description>"Data+"</Description>
          <Options moHideChildren="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>172</ID>
              <Description>"地 / Earth"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_seph_addr</Address>
              <Offsets>
                <Offset>19FED8</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>173</ID>
              <Description>"水 / Water"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_seph_addr</Address>
              <Offsets>
                <Offset>19FEDC</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>174</ID>
              <Description>"火 / Fire"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_seph_addr</Address>
              <Offsets>
                <Offset>19FEE0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>175</ID>
              <Description>"風 / Wind"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_seph_addr</Address>
              <Offsets>
                <Offset>19FEE4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>176</ID>
              <Description>"時 / Time"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_seph_addr</Address>
              <Offsets>
                <Offset>19FEE8</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>177</ID>
              <Description>"空 / Space"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_seph_addr</Address>
              <Offsets>
                <Offset>19FEEC</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>178</ID>
              <Description>"幻 / Mirage"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_seph_addr</Address>
              <Offsets>
                <Offset>19FEF0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>179</ID>
              <Description>"石塊 / Piece"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_seph_addr</Address>
              <Offsets>
                <Offset>19FEF4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>180</ID>
              <Description>"Mira"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_seph_addr</Address>
              <Offsets>
                <Offset>19FF18</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>208</ID>
              <Description>"Fishpoint"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_seph_addr</Address>
              <Offsets>
                <Offset>1A44CC</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>209</ID>
              <Description>"Fishpoint Total"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_seph_addr</Address>
              <Offsets>
                <Offset>1A44D0</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>254</ID>
      <Description>"滑雪板必勝 / Snowboard game: always win"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-06
  Author : bbfox2https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_SNOWBOARD_GAME,$process,F3 0F 10 97 48 01 00 00) // should be unique
alloc(newmem,$1000,INJECT_SNOWBOARD_GAME)

label(code)
label(return)

newmem:
  vmovss xmm15, [rdi+0000013E]
  vmovss [rdi+00000140], xmm15


  vmovss xmm15, [rdi+00000144]
  vmovss xmm14, [vf_20]
  vsubss xmm15, xmm15, xmm14
  vmovss [rdi+00000148], xmm15

code:
  movss xmm2,[rdi+00000148]
  jmp return
align 10 cc
  vf_20:
  dd (float)20

INJECT_SNOWBOARD_GAME:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_SNOWBOARD_GAME)

[DISABLE]

INJECT_SNOWBOARD_GAME:
  db F3 0F 10 97 48 01 00 00

unregistersymbol(INJECT_SNOWBOARD_GAME)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+28230C

game_64.exe+2822D1: F3 0F 11 6C 24 48           - movss [rsp+48],xmm5
game_64.exe+2822D7: 41 0F 28 CB                 - movaps xmm1,xmm11
game_64.exe+2822DB: F3 0F 58 0D B9 8A 5D 00     - addss xmm1,[game_64.exe+85AD9C]
game_64.exe+2822E3: F3 0F 11 64 24 40           - movss [rsp+40],xmm4
game_64.exe+2822E9: F3 0F 11 5C 24 38           - movss [rsp+38],xmm3
game_64.exe+2822EF: 41 0F 28 D8                 - movaps xmm3,xmm8
game_64.exe+2822F3: F3 44 0F 11 54 24 30        - movss [rsp+30],xmm10
game_64.exe+2822FA: F3 0F 11 7C 24 28           - movss [rsp+28],xmm7
game_64.exe+282300: F3 44 0F 11 44 24 20        - movss [rsp+20],xmm8
game_64.exe+282307: E8 E4 67 F1 FF              - call game_64.exe+198AF0
// ---------- INJECTING HERE ----------
game_64.exe+28230C: F3 0F 10 97 48 01 00 00     - movss xmm2,[rdi+00000148]
// ---------- DONE INJECTING  ----------
game_64.exe+282314: 48 8D 55 B0                 - lea rdx,[rbp-50]
game_64.exe+282318: F3 44 0F 58 1D 6F 28 5F 00  - addss xmm11,[game_64.exe+874B90]
game_64.exe+282321: 45 0F 28 E9                 - movaps xmm13,xmm9
game_64.exe+282325: 48 8B CF                    - mov rcx,rdi
game_64.exe+282328: F3 44 0F 58 2D AB EF 6F 00  - addss xmm13,[game_64.exe+9812DC]
game_64.exe+282331: E8 0A F1 FF FF              - call game_64.exe+281440
game_64.exe+282336: F3 0F 10 AF 44 01 00 00     - movss xmm5,[rdi+00000144]
game_64.exe+28233E: 41 0F 2E E8                 - ucomiss xmm5,xmm8
game_64.exe+282342: F3 0F 10 1B                 - movss xmm3,[rbx]
game_64.exe+282346: F3 0F 10 4B 04              - movss xmm1,[rbx+04]
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>258</ID>
      <Description>"卡片遊戲 BLADE II / Card game BLADE II"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-07
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_BLADE_SCORE,$process,0F B7 94 30 2C 05 00 00) // should be unique
alloc(newmem,$1000,INJECT_GET_BLADE_SCORE)

label(code)
label(return)
label(i_card_addr1)
label(i_card_addr2)

newmem:
  push r15
  lea r15, [rax+rsi+0000052C]
  cmp r15, [i_card_addr1]
  je endp
  cmp r15, [i_card_addr2]
  je endp
  cmp qword ptr [i_card_addr1], 0
  je set1
  cmp qword ptr [i_card_addr2], 0
  je set2

fr_set1:
  mov [i_card_addr1], r15
  mov qword ptr [i_card_addr2], 0
  jmp endp

set1:
  mov [i_card_addr1], r15
  jmp endp
set2:
  mov [i_card_addr2], r15
  jmp endp


endp:
  pop r15

code:
  movzx edx,word ptr [rax+rsi+0000052C]
  jmp return
align 10 cc
  i_card_addr1:
  dq 0
  i_card_addr2:
  dq 0

INJECT_GET_BLADE_SCORE:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_GET_BLADE_SCORE)
registersymbol(i_card_addr1)
registersymbol(i_card_addr2)
[DISABLE]

INJECT_GET_BLADE_SCORE:
  db 0F B7 94 30 2C 05 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+279A65

game_64.exe+279A35: 48 8B CB                 - mov rcx,rbx
game_64.exe+279A38: E8 93 F3 FF FF           - call game_64.exe+278DD0
game_64.exe+279A3D: 80 7C 24 50 00           - cmp byte ptr [rsp+50],00
game_64.exe+279A42: 0F 57 D2                 - xorps xmm2,xmm2
game_64.exe+279A45: 48 8B 5C 24 30           - mov rbx,[rsp+30]
game_64.exe+279A4A: 75 08                    - jne game_64.exe+279A54
game_64.exe+279A4C: F3 0F 10 15 1C D1 5E 00  - movss xmm2,[game_64.exe+866B70]
game_64.exe+279A54: 48 69 C5 B8 00 00 00     - imul rax,rbp,000000B8
game_64.exe+279A5B: 48 8D 8E 88 04 00 00     - lea rcx,[rsi+00000488]
game_64.exe+279A62: 48 03 C8                 - add rcx,rax
// ---------- INJECTING HERE ----------
game_64.exe+279A65: 0F B7 94 30 2C 05 00 00  - movzx edx,word ptr [rax+rsi+0000052C]
// ---------- DONE INJECTING  ----------
game_64.exe+279A6D: 66 03 D7                 - add dx,di
game_64.exe+279A70: E8 EB 24 00 00           - call game_64.exe+27BF60
game_64.exe+279A75: 48 8B 7C 24 48           - mov rdi,[rsp+48]
game_64.exe+279A7A: 48 8B 6C 24 38           - mov rbp,[rsp+38]
game_64.exe+279A7F: 48 83 C4 20              - add rsp,20
game_64.exe+279A83: 5E                       - pop rsi
game_64.exe+279A84: C3                       - ret 
game_64.exe+279A85: CC                       - int 3 
game_64.exe+279A86: CC                       - int 3 
game_64.exe+279A87: CC                       - int 3 
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>259</ID>
          <Description>"#1 Score"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_card_addr1</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>260</ID>
          <Description>"#2 Score"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_card_addr2</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>235</ID>
      <Description>"取得AP和羈絆點數等統計 / Get AP &amp; some stats."</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-06
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_MAIN_STATS,$process,8B 84 81 AC 32 00 00) // should be unique
alloc(newmem,$1000,INJECT_GET_MAIN_STATS)

label(code)
label(return)
label(i_base_stat_addr)

newmem:
  mov [i_base_stat_addr], rcx

code:
  mov eax,[rcx+rax*4+000032AC]
  jmp return
align 10 cc
  i_base_stat_addr:
  dq 0


INJECT_GET_MAIN_STATS:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_GET_MAIN_STATS)
registersymbol(i_base_stat_addr)

[DISABLE]

INJECT_GET_MAIN_STATS:
  db 8B 84 81 AC 32 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+237EF7

game_64.exe+237EE3: 8B 84 91 AC 32 00 00  - mov eax,[rcx+rdx*4+000032AC]
game_64.exe+237EEA: C3                    - ret 
game_64.exe+237EEB: CC                    - int 3 
game_64.exe+237EEC: CC                    - int 3 
game_64.exe+237EED: CC                    - int 3 
game_64.exe+237EEE: CC                    - int 3 
game_64.exe+237EEF: CC                    - int 3 
game_64.exe+237EF0: 83 FA 60              - cmp edx,60
game_64.exe+237EF3: 73 0A                 - jae game_64.exe+237EFF
game_64.exe+237EF5: 8B C2                 - mov eax,edx
// ---------- INJECTING HERE ----------
game_64.exe+237EF7: 8B 84 81 AC 32 00 00  - mov eax,[rcx+rax*4+000032AC]
// ---------- DONE INJECTING  ----------
game_64.exe+237EFE: C3                    - ret 
game_64.exe+237EFF: 33 C0                 - xor eax,eax
game_64.exe+237F01: C3                    - ret 
game_64.exe+237F02: CC                    - int 3 
game_64.exe+237F03: CC                    - int 3 
game_64.exe+237F04: CC                    - int 3 
game_64.exe+237F05: CC                    - int 3 
game_64.exe+237F06: CC                    - int 3 
game_64.exe+237F07: CC                    - int 3 
game_64.exe+237F08: CC                    - int 3 
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>245</ID>
          <Description>"開啟綜合成績頁 / Open Main note menu"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>252</ID>
          <Description>"保持最少1點羈絆值 / Keep min. bonding pt."</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-06
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_MIN_BONBING_PT,$process,44 89 84 81 AC 32 00 00 C3 88) // should be unique
alloc(newmem,$1000,INJECT_MIN_BONBING_PT)

label(code)
label(return)

newmem:
  cmp rcx, [i_base_stat_addr]
  jne code
  cmp eax, 9
  jne code

  test r8d, r8d
  jnz code

  mov r8d, 1

code:
  mov [rcx+rax*4+000032AC],r8d
  jmp return

INJECT_MIN_BONBING_PT:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_MIN_BONBING_PT)

[DISABLE]

INJECT_MIN_BONBING_PT:
  db 44 89 84 81 AC 32 00 00

unregistersymbol(INJECT_MIN_BONBING_PT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+243DC7

game_64.exe+243DB9: C3                       - ret 
game_64.exe+243DBA: CC                       - int 3 
game_64.exe+243DBB: CC                       - int 3 
game_64.exe+243DBC: CC                       - int 3 
game_64.exe+243DBD: CC                       - int 3 
game_64.exe+243DBE: CC                       - int 3 
game_64.exe+243DBF: CC                       - int 3 
game_64.exe+243DC0: 83 FA 60                 - cmp edx,60
game_64.exe+243DC3: 73 0A                    - jae game_64.exe+243DCF
game_64.exe+243DC5: 8B C2                    - mov eax,edx
// ---------- INJECTING HERE ----------
game_64.exe+243DC7: 44 89 84 81 AC 32 00 00  - mov [rcx+rax*4+000032AC],r8d
// ---------- DONE INJECTING  ----------
game_64.exe+243DCF: C3                       - ret 
game_64.exe+243DD0: 88 91 6A 24 00 00        - mov [rcx+0000246A],dl
game_64.exe+243DD6: C3                       - ret 
game_64.exe+243DD7: CC                       - int 3 
game_64.exe+243DD8: CC                       - int 3 
game_64.exe+243DD9: CC                       - int 3 
game_64.exe+243DDA: CC                       - int 3 
game_64.exe+243DDB: CC                       - int 3 
game_64.exe+243DDC: CC                       - int 3 
game_64.exe+243DDD: CC                       - int 3 
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>236</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_stat_addr</Address>
          <Offsets>
            <Offset>32BC</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>237</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_stat_addr</Address>
          <Offsets>
            <Offset>32C0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>238</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_stat_addr</Address>
          <Offsets>
            <Offset>32CC</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>250</ID>
          <Description>"羈絆點數 / bonding pt."</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_stat_addr</Address>
          <Offsets>
            <Offset>32D0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>239</ID>
          <Description>"最大羈絆點數 / Max bonding pt."</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_stat_addr</Address>
          <Offsets>
            <Offset>32D4</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>240</ID>
          <Description>"階級 / Grade"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_stat_addr</Address>
          <Offsets>
            <Offset>32E0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>241</ID>
          <Description>"總計AP / Total AP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_stat_addr</Address>
          <Offsets>
            <Offset>32E4</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>242</ID>
          <Description>"課外活動達成次數 / # of Extracurricular Activities"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_stat_addr</Address>
          <Offsets>
            <Offset>32E8</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>243</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_stat_addr</Address>
          <Offsets>
            <Offset>3310</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>244</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_stat_addr</Address>
          <Offsets>
            <Offset>3350</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>183</ID>
      <Description>"取得戰歷資料 / Get Battle Stats."</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_BATT_STATS,$process,44 8B 0C 06 E8 2F 2E D7 FF) // should be unique
alloc(newmem,$1000,INJECT_BATT_STATS)

label(code)
label(return)
label(i_base_bstats_addr)

newmem:
  cmp esi, 1A6E24
  jne code
  push r15
  lea r15, [rsi+rax]
  mov [i_base_bstats_addr], r15
  pop r15


code:
  mov r9d,[rsi+rax]
  call game_64.exe+BB9F0
  jmp return
align 10 cc
  i_base_bstats_addr:
  dq 0

INJECT_BATT_STATS:
  jmp newmem
  nop 4
return:
registersymbol(INJECT_BATT_STATS)
registersymbol(i_base_bstats_addr)

[DISABLE]

INJECT_BATT_STATS:
  db 44 8B 0C 06 E8 2F 2E D7 FF

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+348BB8

game_64.exe+348B78: E8 13 D0 EE FF              - call game_64.exe+235B90
game_64.exe+348B7D: F3 44 0F 10 3D 12 22 51 00  - movss xmm15,[game_64.exe+85AD98]
game_64.exe+348B86: 41 0F B7 DF                 - movzx ebx,r15w
game_64.exe+348B8A: F3 44 0F 10 05 E9 DD 50 00  - movss xmm8,[game_64.exe+85697C]
game_64.exe+348B93: BE 24 6E 1A 00              - mov esi,001A6E24
game_64.exe+348B98: F3 44 0F 10 0D DB 7A 51 00  - movss xmm9,[game_64.exe+86067C]
game_64.exe+348BA1: 48 8B 05 B8 CD 8C 00        - mov rax,[game_64.exe+C15960]
game_64.exe+348BA8: 4C 8D 05 19 4E 53 00        - lea r8,[game_64.exe+87D9C8]
game_64.exe+348BAF: BA 40 00 00 00              - mov edx,00000040
game_64.exe+348BB4: 48 8D 4D E0                 - lea rcx,[rbp-20]
// ---------- INJECTING HERE ----------
game_64.exe+348BB8: 44 8B 0C 06                 - mov r9d,[rsi+rax]
// ---------- DONE INJECTING  ----------
game_64.exe+348BBC: E8 2F 2E D7 FF              - call game_64.exe+BB9F0
game_64.exe+348BC1: F3 0F 10 45 A4              - movss xmm0,[rbp-5C]
game_64.exe+348BC6: 0F 57 C9                    - xorps xmm1,xmm1
game_64.exe+348BC9: F3 0F 58 05 13 B0 51 00     - addss xmm0,[game_64.exe+863BE4]
game_64.exe+348BD1: F3 0F 10 7D A0              - movss xmm7,[rbp-60]
game_64.exe+348BD6: 41 0F 28 D9                 - movaps xmm3,xmm9
game_64.exe+348BDA: F3 0F 58 3D 0A 87 63 00     - addss xmm7,[game_64.exe+9812EC]
game_64.exe+348BE2: 44 89 7C 24 78              - mov [rsp+78],r15d
game_64.exe+348BE7: 41 0F 28 D2                 - movaps xmm2,xmm10
game_64.exe+348BEB: 44 88 7C 24 70              - mov [rsp+70],r15b
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>185</ID>
          <Description>"開啟戰歷頁 / Open Battle note menu"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>184</ID>
          <Description>"累計戰鬥次數 / Battle total #"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>186</ID>
          <Description>"累計勝利次數 / Battle Win"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>4</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>187</ID>
          <Description>"無法戰鬥次數 / Battle lost"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>8</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>188</ID>
          <Description>"戰鬥撤退次數 / Battle retreat"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>189</ID>
          <Description>"擊敗敵人次數 / Enemy killed"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>10</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>190</ID>
          <Description>"先制攻擊出現次數 / Single advantage"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>14</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>191</ID>
          <Description>"優勢攻擊出現次數 / Double advantage"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>18</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>192</ID>
          <Description>"奇襲攻擊出現次數 / Triple advantage"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>1C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>193</ID>
          <Description>"背後遇襲遭遇次數 / Back attack"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>20</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>194</ID>
          <Description>"重試次數 / Retry"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>24</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>195</ID>
          <Description>"S-Break發動次數 / S-Break #"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>28</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>196</ID>
          <Description>"迴避反擊發動次數 / Counter attack"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>2C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>197</ID>
          <Description>"驅動解除發動次數 / Break casting"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>30</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>198</ID>
          <Description>"失落魔法發動次數 / Lost arts #"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>34</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>199</ID>
          <Description>"連結攻擊發動次數 / Link attack"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>38</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>200</ID>
          <Description>"追擊發動次數 / Follow attack"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>3C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>201</ID>
          <Description>"連續猛攻發動次數 / Rush attack"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>40</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>202</ID>
          <Description>"爆裂猛攻發動次數 / Burst attack"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>44</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>203</ID>
          <Description>"增幅強化發動次數 / Overdrive"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_bstats_addr</Address>
          <Offsets>
            <Offset>48</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>247</ID>
      <Description>"取得遊戲總時間(秒) / Get game time in sec."</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : game_64.exe
  Version: 
  Date   : 2024-07-06
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_GAME_TIME,$process,39 8B D8 40 00 00) // should be unique
alloc(newmem,$1000,INJECT_GET_GAME_TIME)

label(code)
label(return)
label(i_base_time_addr)

newmem:
  mov [i_base_time_addr], rbx

code:
  cmp [rbx+000040D8],ecx
  jmp return
align 10 cc
  i_base_time_addr:
  dq 0

INJECT_GET_GAME_TIME:
  jmp newmem
  nop
return:
registersymbol(INJECT_GET_GAME_TIME)
registersymbol(i_base_time_addr)

[DISABLE]

INJECT_GET_GAME_TIME:
  db 39 8B D8 40 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: game_64.exe+2450FA

game_64.exe+2450DB: 03 D1                 - add edx,ecx
game_64.exe+2450DD: C1 FA 05              - sar edx,05
game_64.exe+2450E0: 8B C2                 - mov eax,edx
game_64.exe+2450E2: C1 E8 1F              - shr eax,1F
game_64.exe+2450E5: 03 D0                 - add edx,eax
game_64.exe+2450E7: 6B C2 3C              - imul eax,edx,3C
game_64.exe+2450EA: 2B C8                 - sub ecx,eax
game_64.exe+2450EC: B8 3B 00 00 00        - mov eax,0000003B
game_64.exe+2450F1: 81 FA 60 EA 00 00     - cmp edx,0000EA60
game_64.exe+2450F7: 0F 4D C8              - cmovge ecx,eax
// ---------- INJECTING HERE ----------
game_64.exe+2450FA: 39 8B D8 40 00 00     - cmp [rbx+000040D8],ecx
// ---------- DONE INJECTING  ----------
game_64.exe+245100: 74 06                 - je game_64.exe+245108
game_64.exe+245102: 89 8B D8 40 00 00     - mov [rbx+000040D8],ecx
game_64.exe+245108: 48 8B BB D8 1C 00 00  - mov rdi,[rbx+00001CD8]
game_64.exe+24510F: C6 83 B2 38 00 00 01  - mov byte ptr [rbx+000038B2],01
game_64.exe+245116: 40 38 B3 B0 38 00 00  - cmp [rbx+000038B0],sil
game_64.exe+24511D: 0F 85 B5 02 00 00     - jne game_64.exe+2453D8
game_64.exe+245123: 48 85 FF              - test rdi,rdi
game_64.exe+245126: 0F 84 AC 02 00 00     - je game_64.exe+2453D8
game_64.exe+24512C: 48 8B CF              - mov rcx,rdi
game_64.exe+24512F: E8 BC 80 FC FF        - call game_64.exe+20D1F0
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>248</ID>
          <Description>"遊戲總時間 / Game time"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Double</VariableType>
          <Address>i_base_time_addr</Address>
          <Offsets>
            <Offset>40D0</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>151</ID>
      <Description>"英雄傳說 閃之軌跡II：改 –The Erebonian Civil War- / THE LEGEND OF HEROES: SEN NO KISEKI II KAI -The Erebonian Civil War-"</Description>
      <Color>009F00</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry>
      <ID>152</ID>
      <Description>"https://opencheattables.com  /  CE 7.5+"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <Color>009F00</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>153</ID>
          <Description>"YN"</Description>
          <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>220</ID>
          <Description>"IDs"</Description>
          <DropDownList DisplayValueAsItem="1">----:(主迴路)
3200:力量
3201:聖典
3202:隼鷹
3203:天使
3204:勇氣
3205:權杖
3206:鋼鐵
3207:北風
3208:渡鴉
3209:幻象
3211:神盾
3213:永恆
3214:金牛
3215:罪惡
3216:小丑
3222:巨石
3227:雷神
3210:羽翼
3242:白羊
3243:寶盒
----:(結晶迴路)
3331:革命
3332:玄武刃
3334:不動珠
3387:瀑布
3389:青龍刀
3390:仙道珠
3410:攻擊1
3433:業火
3433:修羅
3437:武神珠
3480:薫風
3483:雷神珠
3484:風神珠
3526:死神
3528:神速珠
3529:魔王珠
3570:探知
3576:熾天使
3578:覇道
3579:天帝珠
3621:情報
3625:幻妖牙
3572:龍瞳
3577:麒麟牙
3618:神聖之力R
9999:空白(裝備用)
52685:(無效)
</DropDownList>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>255</ID>
              <Description>"Master ID"</Description>
              <DropDownListLink>IDs</DropDownListLink>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>2 Bytes</VariableType>
              <Address>i_base_eqp_quartz_addr</Address>
              <Offsets>
                <Offset>0019F3B8+[i_eqp_quartz_idx]*2</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
