<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <CheatEntries>
    <CheatEntry>
      <ID>0</ID>
      <Description>"Compact Mode"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
--https://forum.cheatengine.org/viewtopic.php?t=570055
LuaCall(function cycleFullCompact(sender,force) local state = not(compactmenuitem.Caption == 'Compact View Mode'); if force~=nil then state = not force end; compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode'; getMainForm().Splitter1.Visible = state; getMainForm().Panel4.Visible    = state; getMainForm().Panel5.Visible    = state; end; function addCompactMenu() if compactmenualreadyexists then return end; local parent = getMainForm().Menu.Items; compactmenuitem = createMenuItem(parent); parent.add(compactmenuitem); compactmenuitem.Caption = 'Compact View Mode'; compactmenuitem.OnClick = cycleFullCompact; compactmenualreadyexists = 'yes'; end; addCompactMenu(); cycleFullCompact(nil,true))

[DISABLE]
LuaCall(cycleFullCompact(nil,false))

</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>1</ID>
      <Description>"Enable"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
if syntaxcheck then
    return
end
if process == nil then
    ShowMessage("Process is not selected.")
elseif readInteger(process) == 0 then
    ShowMessage("Process cannot be opened.")
else
    if monopipe ~= nil and monopipe.ProcessID ~= getOpenedProcessID() then
        monopipe.destroy()
        monopipe = nil
    end
    if monopipe == nil then
        LaunchMonoDataCollector()
    end
end


{$asm}
define(BattleSequenceControlbattleConditionIsAnnihilateProc, "BattleSequenceControl.battleCondition.IsAnnihilate")
define(CAMPCampMoneyManagerSetMoneyProc, "CAMP.CampMoneyManager.SetMoney")
define(GameDataManagerConsumeShopGoldProc, "GameDataManager.ConsumeShopGold")
define(utrpg_guishopShopMenuSellSetLineupProc, "utrpg_gui.shop.ShopMenuSell.SetLineup")
define(BattleSequenceControlEnergyControlAddEnergyProc, "BattleSequenceControl.EnergyControl.AddEnergy")
define(CAMPCampStatusMenuManagerUpdateCharaStatusDataProc, "CAMP.CampStatusMenuManager.UpdateCharaStatusData")
define(utrpg_guiBattleResultCharaTabProcAdditiveExpProc, "utrpg_gui.BattleResultCharaTab.ProcAdditiveExp")
define(BattleSequenceControlCharaStatusControlForwardTimeProc, "BattleSequenceControl.CharaStatusControl.ForwardTime")
define(BattleSequenceControlbattleCharaControlSubLifeProc, "BattleSequenceControl.battleCharaControl.SubLife")
define(CurrentMoveExecPlayerMoveInputProc, "CurrentMove.ExecPlayerMoveInput")


registersymbol(BattleSequenceControlbattleConditionIsAnnihilateProc)
registersymbol(CAMPCampMoneyManagerSetMoneyProc)
registersymbol(GameDataManagerConsumeShopGoldProc)
registersymbol(utrpg_guishopShopMenuSellSetLineupProc)
registersymbol(BattleSequenceControlEnergyControlAddEnergyProc)
registersymbol(CAMPCampStatusMenuManagerUpdateCharaStatusDataProc)
registersymbol(utrpg_guiBattleResultCharaTabProcAdditiveExpProc)
registersymbol(BattleSequenceControlCharaStatusControlForwardTimeProc)
registersymbol(BattleSequenceControlbattleCharaControlSubLifeProc)
registersymbol(CurrentMoveExecPlayerMoveInputProc)

[DISABLE]
{$lua}
if syntaxcheck then return end;if not syntaxcheck and monopipe then monopipe=nil,monopipe.Destroy()end

{$asm}
unregistersymbol(*)

</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>9</ID>
          <Description>"Wait IL2CPP to complete, then re-enable once again"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>43</ID>
          <Description>"Battle: Party HP/Force"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : MonochromeMobius Rights and Wrongs Forgotten.exe
  Version: 
  Date   : 2022-12-21
  Author : bbfox@https://opencheattables.com
}

[ENABLE]
//aobscanmodule(INJECT_BATTLE_PARTY_HP_FORCE,GameAssembly.dll,4C 8D 83 80 00 00 00 48 89 7C) // should be unique
aobscanregion(INJECT_BATTLE_PARTY_HP_FORCE,BattleSequenceControlCharaStatusControlForwardTimeProc+F0,BattleSequenceControlCharaStatusControlForwardTimeProc+1F0,4C 8D 83 80 00 00 00) // should be unique
alloc(newmem,$1000,INJECT_BATTLE_PARTY_HP_FORCE)

label(code)
label(return)
label(vf_player_hp_min_ratio2)
label(vf_player_force_min_ratio2)

newmem:
  push rdx
  mov rdx, [rbx+20] //bcc_
  test rdx, rdx
  jz endp
  mov rdx, [rdx+18] //&lt;CharaData_&gt;k__BackingField
  test rdx, rdx
  jz endp
  cmp dword ptr [rdx+A0], 0 //pKind_
  jnz endp
  vmovss xmm15, [rdx+38] // lifeMax_
  vmovss xmm14, [vf_player_hp_min_ratio2]
  vmulss xmm14, xmm14, xmm15
  vmovss xmm15, [rdx+34] // life_
  vcomiss xmm15, xmm14
  jae check_p_force
  vmovss [rdx+34], xmm14

check_p_force:
  vmovss xmm15, [rdx+40] // forceMax_
  vmovss xmm14, [vf_player_force_min_ratio2]
  vmulss xmm15, xmm14, xmm15
  vmovss xmm15, [rdx+3C] // force_
  vcomiss xmm15, xmm14
  jae player_endp
  vmovss [rdx+3C], xmm14

player_endp:

endp:
  pop rdx

code:
  lea r8,[rbx+00000080]
  jmp return

align 10 cc
  vf_player_hp_min_ratio2:
  dd (float)0.333333
  vf_player_force_min_ratio2:
  dd (float)0.333333
  db EB 3B 54 68 69 73 20 74
  db 61 62 6C 65 20 63 6F 6D 65 73 20 66 72 6F 6D 20
  db 68 74 74 70 73 3A 2F
  db 2F 6F 70 65 6E 63 68 65
  db 61 74
  db 74 61 62 6C 65 73 2E 63 6F 6D
  db 20 2F 20 43 45 20 37 2E 34 2B

INJECT_BATTLE_PARTY_HP_FORCE:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_BATTLE_PARTY_HP_FORCE)
registersymbol(vf_player_hp_min_ratio2)
registersymbol(vf_player_force_min_ratio2)
[DISABLE]

INJECT_BATTLE_PARTY_HP_FORCE:
  db 4C 8D 83 80 00 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+1083C8C

GameAssembly.dll+1083C55: F3 0F 11 83 94 00 00 00  - movss [rbx+00000094],xmm0
GameAssembly.dll+1083C5D: 0F 2F B3 98 00 00 00     - comiss xmm6,[rbx+00000098]
GameAssembly.dll+1083C64: 0F 28 74 24 30           - movaps xmm6,[rsp+30]
GameAssembly.dll+1083C69: 76 14                    - jna GameAssembly.dll+1083C7F
GameAssembly.dll+1083C6B: 33 C9                    - xor ecx,ecx
GameAssembly.dll+1083C6D: E8 3E 25 F3 00           - call UnityEngine.Time.get_time
GameAssembly.dll+1083C72: F3 0F 58 43 38           - addss xmm0,[rbx+38]
GameAssembly.dll+1083C77: F3 0F 11 83 98 00 00 00  - movss [rbx+00000098],xmm0
GameAssembly.dll+1083C7F: 8B 93 8C 00 00 00        - mov edx,[rbx+0000008C]
GameAssembly.dll+1083C85: 4C 8D 8B 94 00 00 00     - lea r9,[rbx+00000094]
// ---------- INJECTING HERE ----------
GameAssembly.dll+1083C8C: 4C 8D 83 80 00 00 00     - lea r8,[rbx+00000080]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+1083C93: 48 89 7C 24 28           - mov [rsp+28],rdi
GameAssembly.dll+1083C98: 48 8B CB                 - mov rcx,rbx
GameAssembly.dll+1083C9B: C6 44 24 20 01           - mov byte ptr [rsp+20],01
GameAssembly.dll+1083CA0: E8 6B 00 00 00           - call BattleSequenceControl.CharaStatusControl.GaugeDiffValue
GameAssembly.dll+1083CA5: 48 8B 03                 - mov rax,[rbx]
GameAssembly.dll+1083CA8: 48 8B CB                 - mov rcx,rbx
GameAssembly.dll+1083CAB: 48 8B 90 A0 02 00 00     - mov rdx,[rax+000002A0]
GameAssembly.dll+1083CB2: FF 90 98 02 00 00        - call qword ptr [rax+00000298]
GameAssembly.dll+1083CB8: 8B 93 90 00 00 00        - mov edx,[rbx+00000090]
GameAssembly.dll+1083CBE: 4C 8D 8B 98 00 00 00     - lea r9,[rbx+00000098]
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>44</ID>
              <Description>"Min. HP ratio"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>vf_player_hp_min_ratio2</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>45</ID>
              <Description>"Min. force ratio"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>vf_player_force_min_ratio2</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>32</ID>
          <Description>"Battle: Energy multiplier"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : MonochromeMobius Rights and Wrongs Forgotten.exe
  Version: 
  Date   : 2022-12-21
  Author : bbfox2https://opencheattables.com
}

[ENABLE]
//aobscanmodule(INJECT_ENERGY_MULTI,GameAssembly.dll,03 C7 66 0F 6E C0) // should be unique
aobscanregion(INJECT_ENERGY_MULTI,BattleSequenceControlEnergyControlAddEnergyProc+50,BattleSequenceControlEnergyControlAddEnergyProc+e0,03 C7 66 0F 6E C0) // should be unique
alloc(newmem,$1000,INJECT_ENERGY_MULTI)

label(code)
label(return)
label(vf_battle_energy_multi)

newmem:
  push r14
  mov r14d, [r8+A0] //pKind_
  test r14d, r14d
  jnz endp

  cvtsi2ss xmm15, edi
  vmovss xmm14, [vf_battle_energy_multi]
  vmulss xmm15, xmm15, xmm14
  vcvtss2si edi, xmm15

endp:
  pop r14

code:
  add eax,edi
  movd xmm0,eax
  jmp return
align 10 cc
  vf_battle_energy_multi:
  dd (float)1.5

INJECT_ENERGY_MULTI:
  jmp newmem
  nop

return:
registersymbol(INJECT_ENERGY_MULTI)
registersymbol(vf_battle_energy_multi)

[DISABLE]

INJECT_ENERGY_MULTI:
  db 03 C7 66 0F 6E C0

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+DFBF40

GameAssembly.dll+DFBF14: 0F 84 94 00 00 00        - je GameAssembly.dll+DFBFAE
GameAssembly.dll+DFBF1A: 48 8B 48 18              - mov rcx,[rax+18]
GameAssembly.dll+DFBF1E: 48 85 C9                 - test rcx,rcx
GameAssembly.dll+DFBF21: 0F 84 87 00 00 00        - je GameAssembly.dll+DFBFAE
GameAssembly.dll+DFBF27: 48 8B 81 10 01 00 00     - mov rax,[rcx+00000110]
GameAssembly.dll+DFBF2E: 48 85 C0                 - test rax,rax
GameAssembly.dll+DFBF31: 74 7B                    - je GameAssembly.dll+DFBFAE
GameAssembly.dll+DFBF33: 0F B6 50 11              - movzx edx,byte ptr [rax+11]
GameAssembly.dll+DFBF37: F3 41 0F 2C 40 44        - cvttss2si eax,[r8+44]
GameAssembly.dll+DFBF3D: 0F 57 C9                 - xorps xmm1,xmm1
// ---------- INJECTING HERE ----------
GameAssembly.dll+DFBF40: 03 C7                    - add eax,edi
// ---------- DONE INJECTING  ----------
GameAssembly.dll+DFBF42: 66 0F 6E C0              - movd xmm0,eax
GameAssembly.dll+DFBF46: 0F 5B C0                 - cvtdq2ps xmm0,xmm0
GameAssembly.dll+DFBF49: 0F 2F C8                 - comiss xmm1,xmm0
GameAssembly.dll+DFBF4C: 77 12                    - ja GameAssembly.dll+DFBF60
GameAssembly.dll+DFBF4E: F3 0F 10 0D 26 9D EC 02  - movss xmm1,[GameAssembly.dll+3CC5C7C]
GameAssembly.dll+DFBF56: 0F 2F C1                 - comiss xmm0,xmm1
GameAssembly.dll+DFBF59: 76 08                    - jna GameAssembly.dll+DFBF63
GameAssembly.dll+DFBF5B: 0F 28 C1                 - movaps xmm0,xmm1
GameAssembly.dll+DFBF5E: EB 03                    - jmp GameAssembly.dll+DFBF63
GameAssembly.dll+DFBF60: 0F 57 C0                 - xorps xmm0,xmm0
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>33</ID>
              <Description>"multiplier"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>vf_battle_energy_multi</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>80</ID>
          <Description>"Battle: Damage control"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : MonochromeMobius Rights and Wrongs Forgotten.exe
  Version:
  Date   : 2022-12-21
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

//aobscanmodule(INJECT_BATTLE_DAMAGE_CONTROL,GameAssembly.dll,F3 0F 58 43 34 E8 E4) // should be unique
aobscanregion(INJECT_BATTLE_DAMAGE_CONTROL,BattleSequenceControlbattleCharaControlSubLifeProc+12,BattleSequenceControlbattleCharaControlSubLifeProc+92,F3 0F 58 43 34) // should be unique
alloc(newmem,$1000,INJECT_BATTLE_DAMAGE_CONTROL)

label(code)
label(return)
label(vf_damage_to_player_multi)
label(vf_damage_to_enemy_multi)

newmem:
  cmp dword ptr [rbx+A0], 0 //pKind_
  jne to_enemy
to_player:
  vmovss xmm14, [vf_damage_to_player_multi]
  vmulss xmm0, xmm0, xmm14
  jmp code

to_enemy:
  vmovss xmm14, [vf_damage_to_enemy_multi]
  vmulss xmm0, xmm0, xmm14
  jmp code

code:
  addss xmm0,[rbx+34]
  jmp return
align 10 cc
  vf_damage_to_player_multi:
  dd (float)0.85
  vf_damage_to_enemy_multi:
  dd (float)1.15

INJECT_BATTLE_DAMAGE_CONTROL:
  jmp newmem
return:
registersymbol(INJECT_BATTLE_DAMAGE_CONTROL)
registersymbol(vf_damage_to_player_multi)
registersymbol(vf_damage_to_enemy_multi)

[DISABLE]

INJECT_BATTLE_DAMAGE_CONTROL:
  db F3 0F 58 43 34

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+D4329A

GameAssembly.dll+D43274: 48 8B 59 18           - mov rbx,[rcx+18]
GameAssembly.dll+D43278: 41 0F B6 F1           - movzx esi,r9l
GameAssembly.dll+D4327C: 0F 29 74 24 20        - movaps [rsp+20],xmm6
GameAssembly.dll+D43281: 41 0F B6 E8           - movzx ebp,r8l
GameAssembly.dll+D43285: 48 8B F9              - mov rdi,rcx
GameAssembly.dll+D43288: 48 85 DB              - test rbx,rbx
GameAssembly.dll+D4328B: 0F 84 0B 02 00 00     - je GameAssembly.dll+D4349C
GameAssembly.dll+D43291: F7 DA                 - neg edx
GameAssembly.dll+D43293: 66 0F 6E C2           - movd xmm0,edx
GameAssembly.dll+D43297: 0F 5B C0              - cvtdq2ps xmm0,xmm0
// ---------- INJECTING HERE ----------
GameAssembly.dll+D4329A: F3 0F 58 43 34        - addss xmm0,[rbx+34]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+D4329F: E8 E4 3F 8B FF        - call GameAssembly.dll+5F7288
GameAssembly.dll+D432A4: F3 0F 10 4B 38        - movss xmm1,[rbx+38]
GameAssembly.dll+D432A9: 0F 57 F6              - xorps xmm6,xmm6
GameAssembly.dll+D432AC: 0F 2F C1              - comiss xmm0,xmm1
GameAssembly.dll+D432AF: F3 0F 11 43 34        - movss [rbx+34],xmm0
GameAssembly.dll+D432B4: 77 0E                 - ja GameAssembly.dll+D432C4
GameAssembly.dll+D432B6: 0F 2F F0              - comiss xmm6,xmm0
GameAssembly.dll+D432B9: 76 0E                 - jna GameAssembly.dll+D432C9
GameAssembly.dll+D432BB: C7 43 34 00 00 00 00  - mov [rbx+34],00000000
GameAssembly.dll+D432C2: EB 05                 - jmp GameAssembly.dll+D432C9
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>81</ID>
              <Description>"Damage to player multiplier"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>vf_damage_to_player_multi</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>82</ID>
              <Description>"Damage to enemy multiplier"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>vf_damage_to_enemy_multi</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>41</ID>
          <Description>"Battle: EXP multiplier"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : MonochromeMobius Rights and Wrongs Forgotten.exe
  Version:
  Date   : 2022-12-21
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

//aobscanmodule(INJECT_BATTLE_EXP_MULTI,GameAssembly.dll,8B 4A 60 41 03 C9) // should be unique
aobscanregion(INJECT_BATTLE_EXP_MULTI,utrpg_guiBattleResultCharaTabProcAdditiveExpProc+166,utrpg_guiBattleResultCharaTabProcAdditiveExpProc+1F6,8B 4A 60 41 03 C9) // should be unique
alloc(newmem,$1000,INJECT_BATTLE_EXP_MULTI)

label(code)
label(return)
label(vf_battle_exp_multi)

newmem:
  cvtsi2ss xmm15, r9d
  vmovss xmm14, [vf_battle_exp_multi]
  vmulss xmm15, xmm15, xmm14
  vcvtss2si r9d, xmm15

code:
  mov ecx,[rdx+60]
  add ecx,r9d
  jmp return
align 10 cc
  vf_battle_exp_multi:
  dd (float)1.333333333


INJECT_BATTLE_EXP_MULTI:
  jmp newmem
  nop
return:
registersymbol(INJECT_BATTLE_EXP_MULTI)
registersymbol(vf_battle_exp_multi)
[DISABLE]

INJECT_BATTLE_EXP_MULTI:
  db 8B 4A 60 41 03 C9

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+1935178

GameAssembly.dll+1935152: 41 2B C8           - sub ecx,r8d
GameAssembly.dll+1935155: 41 3B D0           - cmp edx,r8d
GameAssembly.dll+1935158: 48 8B 53 50        - mov rdx,[rbx+50]
GameAssembly.dll+193515C: 0F 4F C1           - cmovg eax,ecx
GameAssembly.dll+193515F: 89 43 5C           - mov [rbx+5C],eax
GameAssembly.dll+1935162: 48 85 D2           - test rdx,rdx
GameAssembly.dll+1935165: 0F 84 5F 05 00 00  - je GameAssembly.dll+19356CA
GameAssembly.dll+193516B: 48 8B 52 18        - mov rdx,[rdx+18]
GameAssembly.dll+193516F: 48 85 D2           - test rdx,rdx
GameAssembly.dll+1935172: 0F 84 52 05 00 00  - je GameAssembly.dll+19356CA
// ---------- INJECTING HERE ----------
GameAssembly.dll+1935178: 8B 4A 60           - mov ecx,[rdx+60]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+193517B: 41 03 C9           - add ecx,r9d
GameAssembly.dll+193517E: 78 0F              - js GameAssembly.dll+193518F
GameAssembly.dll+1935180: 81 F9 FF E0 F5 05  - cmp ecx,05F5E0FF
GameAssembly.dll+1935186: 7E 0A              - jle GameAssembly.dll+1935192
GameAssembly.dll+1935188: B9 FF E0 F5 05     - mov ecx,05F5E0FF
GameAssembly.dll+193518D: EB 03              - jmp GameAssembly.dll+1935192
GameAssembly.dll+193518F: 41 8B CE           - mov ecx,r14d
GameAssembly.dll+1935192: 89 4A 60           - mov [rdx+60],ecx
GameAssembly.dll+1935195: 48 8B 53 50        - mov rdx,[rbx+50]
GameAssembly.dll+1935199: 48 85 D2           - test rdx,rdx
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>42</ID>
              <Description>"multiplier"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>vf_battle_exp_multi</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>86</ID>
          <Description>"inf. running"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : MonochromeMobius Rights and Wrongs Forgotten.exe
  Version:
  Date   : 2022-12-21
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

//aobscanmodule(INJECT_INF_STAMINA,GameAssembly.dll,F3 44 0F 11 11 48) // should be unique
aobscanregion(INJECT_INF_STAMINA,CurrentMoveExecPlayerMoveInputProc+369,CurrentMoveExecPlayerMoveInputProc+429,F3 44 0F 11 11 48) // should be unique
alloc(newmem,$1000,INJECT_INF_STAMINA)

label(code)
label(return)

newmem:
  movss xmm14, [vf_06]
  comiss xmm10, xmm14
  jae code
  movss xmm10, [vf_06]
code:
  movss [rcx],xmm10
  jmp return
align 10 cc
  vf_06:
  dd (float)0.6

INJECT_INF_STAMINA:
  jmp newmem
return:
registersymbol(INJECT_INF_STAMINA)

[DISABLE]

INJECT_INF_STAMINA:
  db F3 44 0F 11 11

unregistersymbol(INJECT_INF_STAMINA)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+CFC7A9

GameAssembly.dll+CFC778: F3 0F 10 78 14        - movss xmm7,[rax+14]
GameAssembly.dll+CFC77D: 33 C9                 - xor ecx,ecx
GameAssembly.dll+CFC77F: F3 0F 10 77 3C        - movss xmm6,[rdi+3C]
GameAssembly.dll+CFC784: E8 07 9C 2B 01        - call UnityEngine.Time.get_fixedDeltaTime
GameAssembly.dll+CFC789: 48 8B 05 50 94 3D 03  - mov rax,[GameAssembly.dll+40D5BE0]
GameAssembly.dll+CFC790: F3 41 0F 59 FB        - mulss xmm7,xmm11
GameAssembly.dll+CFC795: 48 8B 88 B8 00 00 00  - mov rcx,[rax+000000B8]
GameAssembly.dll+CFC79C: F3 0F 5E FE           - divss xmm7,xmm6
GameAssembly.dll+CFC7A0: F3 0F 59 F8           - mulss xmm7,xmm0
GameAssembly.dll+CFC7A4: F3 44 0F 5C D7        - subss xmm10,xmm7
// ---------- INJECTING HERE ----------
GameAssembly.dll+CFC7A9: F3 44 0F 11 11        - movss [rcx],xmm10
// ---------- DONE INJECTING  ----------
GameAssembly.dll+CFC7AE: 48 8B 0D 2B 94 3D 03  - mov rcx,[GameAssembly.dll+40D5BE0]
GameAssembly.dll+CFC7B5: 48 8B 81 B8 00 00 00  - mov rax,[rcx+000000B8]
GameAssembly.dll+CFC7BC: 44 0F 2F 00           - comiss xmm8,[rax]
GameAssembly.dll+CFC7C0: 0F 82 97 01 00 00     - jb GameAssembly.dll+CFC95D
GameAssembly.dll+CFC7C6: F6 81 33 01 00 00 04  - test byte ptr [rcx+00000133],04
GameAssembly.dll+CFC7CD: 74 15                 - je GameAssembly.dll+CFC7E4
GameAssembly.dll+CFC7CF: 44 39 B9 E0 00 00 00  - cmp [rcx+000000E0],r15d
GameAssembly.dll+CFC7D6: 75 0C                 - jne GameAssembly.dll+CFC7E4
GameAssembly.dll+CFC7D8: E8 73 AE 89 FF        - call GameAssembly.dll+597650
GameAssembly.dll+CFC7DD: 48 8B 0D FC 93 3D 03  - mov rcx,[GameAssembly.dll+40D5BE0]
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>13</ID>
          <Description>"Get money"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : MonochromeMobius Rights and Wrongs Forgotten.exe
  Version: 
  Date   : 2022-12-21
  Author : bbfox@https://opencheattables.com
}

[ENABLE]
//aobscanmodule(INJECT_GET_MONEY,GameAssembly.dll,41 8B 49 68 45 33 C0) // should be unique
aobscanregion(INJECT_GET_MONEY,CAMPCampMoneyManagerSetMoneyProc+21,CAMPCampMoneyManagerSetMoneyProc+91,41 8B 49 68 45 33 C0) // should be unique
alloc(newmem,$1000,INJECT_GET_MONEY)

label(code)
label(return)
label(i_base_money_addr)

newmem:
  mov [i_base_money_addr], r9

code:
  mov ecx,[r9+68]
  xor r8d,r8d
  jmp return

align 10 cc
  i_base_money_addr:
  dq 0

INJECT_GET_MONEY:
  jmp newmem
  nop 2

return:
registersymbol(INJECT_GET_MONEY)
registersymbol(i_base_money_addr)

[DISABLE]

INJECT_GET_MONEY:
  db 41 8B 49 68 45 33 C0

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+106CACD

GameAssembly.dll+106CAA3: 74 18                 - je GameAssembly.dll+106CABD
GameAssembly.dll+106CAA5: 83 B8 E0 00 00 00 00  - cmp dword ptr [rax+000000E0],00
GameAssembly.dll+106CAAC: 75 0F                 - jne GameAssembly.dll+106CABD
GameAssembly.dll+106CAAE: 48 8B C8              - mov rcx,rax
GameAssembly.dll+106CAB1: E8 9A AB 52 FF        - call GameAssembly.dll+597650
GameAssembly.dll+106CAB6: 48 8B 05 FB 7E 06 03  - mov rax,[GameAssembly.dll+40D49B8]
GameAssembly.dll+106CABD: 48 8B 80 B8 00 00 00  - mov rax,[rax+000000B8]
GameAssembly.dll+106CAC4: 4C 8B 48 08           - mov r9,[rax+08]
GameAssembly.dll+106CAC8: 4D 85 C9              - test r9,r9
GameAssembly.dll+106CACB: 74 33                 - je GameAssembly.dll+106CB00
// ---------- INJECTING HERE ----------
GameAssembly.dll+106CACD: 41 8B 49 68           - mov ecx,[r9+68]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+106CAD1: 45 33 C0              - xor r8d,r8d
GameAssembly.dll+106CAD4: 48 8B 5B 18           - mov rbx,[rbx+18]
GameAssembly.dll+106CAD8: 33 D2                 - xor edx,edx
GameAssembly.dll+106CADA: E8 C1 18 E4 FF        - call UtrpgUtils.FormatMoneyText
GameAssembly.dll+106CADF: 48 85 DB              - test rbx,rbx
GameAssembly.dll+106CAE2: 74 1C                 - je GameAssembly.dll+106CB00
GameAssembly.dll+106CAE4: 4C 8B 0B              - mov r9,[rbx]
GameAssembly.dll+106CAE7: 48 8B D0              - mov rdx,rax
GameAssembly.dll+106CAEA: 48 8B CB              - mov rcx,rbx
GameAssembly.dll+106CAED: 4D 8B 81 F0 05 00 00  - mov r8,[r9+000005F0]
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>15</ID>
              <Description>"Usage: Open Menu"</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>14</ID>
              <Description>"Money"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_money_addr</Address>
              <Offsets>
                <Offset>68</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>16</ID>
              <Description>"game_difficulty"</Description>
              <DropDownList DisplayValueAsItem="1">0:Normal
1:Hard
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_money_addr</Address>
              <Offsets>
                <Offset>B4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>19</ID>
              <Description>"new_game_plus_loop_counter"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_money_addr</Address>
              <Offsets>
                <Offset>B8</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>17</ID>
              <Description>"battle_count"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_money_addr</Address>
              <Offsets>
                <Offset>1C8</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>18</ID>
              <Description>"battle_escape"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_money_addr</Address>
              <Offsets>
                <Offset>1CC</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>100</ID>
              <Description>"field_move_length"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>i_base_money_addr</Address>
              <Offsets>
                <Offset>218</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>23</ID>
          <Description>"Set consumable item count"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : MonochromeMobius Rights and Wrongs Forgotten.exe
  Version:
  Date   : 2022-12-21
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanregion(INJECT_SET_ITEM_COUNT,GameAssembly.dll+203D61,GameAssembly.dll+306D61,0F 10 44 CA 20 4C 8D 43 10 41 0F 11 00) // should be unique
alloc(newmem,$1000,INJECT_SET_ITEM_COUNT)

label(code)
label(return)
label(i_min_consume_item_threshold)

newmem:
  push r15
  mov r15d, [rdx+rcx*8+28]
  cmp r15d, [i_min_consume_item_threshold]
  jb endp
  cmp r15d, 32
  jae endp
  mov r15d, 32
  mov [rdx+rcx*8+28], r15d

endp:
  pop r15

code:
  movups xmm0,[rdx+rcx*8+20]
  jmp return
align 10 cc
  i_min_consume_item_threshold:
  dd 2
INJECT_SET_ITEM_COUNT:
  jmp newmem
return:
registersymbol(INJECT_SET_ITEM_COUNT)
registersymbol(i_min_consume_item_threshold)

[DISABLE]

INJECT_SET_ITEM_COUNT:
  db 0F 10 44 CA 20

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+206D61

GameAssembly.dll+206D31: 4C 63 4B 08           - movsxd  r9,dword ptr [rbx+08]
GameAssembly.dll+206D35: 44 3B 49 18           - cmp r9d,[rcx+18]
GameAssembly.dll+206D39: 0F 83 85 00 00 00     - jae GameAssembly.dll+206DC4
GameAssembly.dll+206D3F: 48 8B 51 10           - mov rdx,[rcx+10]
GameAssembly.dll+206D43: 48 85 D2              - test rdx,rdx
GameAssembly.dll+206D46: 0F 84 B8 00 00 00     - je GameAssembly.dll+206E04
GameAssembly.dll+206D4C: 44 3B 4A 18           - cmp r9d,[rdx+18]
GameAssembly.dll+206D50: 0F 83 B4 00 00 00     - jae GameAssembly.dll+206E0A
GameAssembly.dll+206D56: 83 3D EB 98 02 04 00  - cmp dword ptr [GameAssembly.dll+4230648],00
GameAssembly.dll+206D5D: 4B 8D 0C 49           - lea rcx,[r9+r9*2]
// ---------- INJECTING HERE ----------
GameAssembly.dll+206D61: 0F 10 44 CA 20        - movups xmm0,[rdx+rcx*8+20]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+206D66: 4C 8D 43 10           - lea r8,[rbx+10]
GameAssembly.dll+206D6A: 41 0F 11 00           - movups [r8],xmm0
GameAssembly.dll+206D6E: F2 0F 10 4C CA 30     - movsd xmm1,[rdx+rcx*8+30]
GameAssembly.dll+206D74: F2 41 0F 11 48 10     - movsd [r8+10],xmm1
GameAssembly.dll+206D7A: 74 39                 - je GameAssembly.dll+206DB5
GameAssembly.dll+206D7C: 49 C1 E8 0C           - shr r8,0C
GameAssembly.dll+206D80: 48 8D 0D 79 6F 08 04  - lea rcx,[GameAssembly.dll+428DD00]
GameAssembly.dll+206D87: 41 81 E0 FF FF 1F 00  - and r8d,001FFFFF
GameAssembly.dll+206D8E: 41 8B C0              - mov eax,r8d
GameAssembly.dll+206D91: 48 C1 E8 06           - shr rax,06
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>24</ID>
              <Description>"Usage: Menu -&gt; Item -&gt; consumable item"</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>25</ID>
              <Description>"Item count must &gt;= threshold"</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>78</ID>
              <Description>"threshold"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_min_consume_item_threshold</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>74</ID>
          <Description>"Set material count"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : MonochromeMobius Rights and Wrongs Forgotten.exe
  Version:
  Date   : 2022-12-21
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_BROWSE_MATERIAL,GameAssembly.dll,8B 74 C1 30 49 8B 4A 18 48 C7 44 24 28 00 00 00 00 F6 81 32 01 00 00 01 75 05 E8 B2) // should be unique
alloc(newmem,$1000,INJECT_BROWSE_MATERIAL)

label(code)
label(return)
label(i_min_material_threshold)

newmem:
  mov esi,[rcx+rax*8+30]
  cmp esi, [i_min_material_threshold]
  jb code
  cmp esi, 32
  jae code
  mov esi, 32
  mov [rcx+rax*8+30], esi
code:
  mov esi,[rcx+rax*8+30]
  mov rcx,[r10+18]
  jmp return
align 10 cc
  i_min_material_threshold:
  dd 2
INJECT_BROWSE_MATERIAL:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_BROWSE_MATERIAL)
registersymbol(i_min_material_threshold)
[DISABLE]

INJECT_BROWSE_MATERIAL:
  db 8B 74 C1 30 49 8B 4A 18

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+1F0D9DF

GameAssembly.dll+1F0D9B9: 83 7C C1 20 00              - cmp dword ptr [rcx+rax*8+20],00
GameAssembly.dll+1F0D9BE: 7D 08                       - jnl GameAssembly.dll+1F0D9C8
GameAssembly.dll+1F0D9C0: 8D 42 01                    - lea eax,[rdx+01]
GameAssembly.dll+1F0D9C3: 89 43 0C                    - mov [rbx+0C],eax
GameAssembly.dll+1F0D9C6: EB C0                       - jmp GameAssembly.dll+1F0D988
GameAssembly.dll+1F0D9C8: 48 89 74 24 40              - mov [rsp+40],rsi
GameAssembly.dll+1F0D9CD: 4B 8D 04 40                 - lea rax,[r8+r8*2]
GameAssembly.dll+1F0D9D1: 48 89 7C 24 48              - mov [rsp+48],rdi
GameAssembly.dll+1F0D9D6: 48 8B 7C C1 28              - mov rdi,[rcx+rax*8+28]
GameAssembly.dll+1F0D9DB: 4B 8D 04 40                 - lea rax,[r8+r8*2]
// ---------- INJECTING HERE ----------
GameAssembly.dll+1F0D9DF: 8B 74 C1 30                 - mov esi,[rcx+rax*8+30]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+1F0D9E3: 49 8B 4A 18                 - mov rcx,[r10+18]
GameAssembly.dll+1F0D9E7: 48 C7 44 24 28 00 00 00 00  - mov qword ptr [rsp+28],00000000
GameAssembly.dll+1F0D9F0: F6 81 32 01 00 00 01        - test byte ptr [rcx+00000132],01
GameAssembly.dll+1F0D9F7: 75 05                       - jne GameAssembly.dll+1F0D9FE
GameAssembly.dll+1F0D9F9: E8 B2 5F 67 FE              - call GameAssembly.DllCanUnloadNow+4F30
GameAssembly.dll+1F0D9FE: 8B 05 44 2C 32 02           - mov eax,[GameAssembly.dll+4230648]
GameAssembly.dll+1F0DA04: 4C 8D 0D 15 A0 33 02        - lea r9,[GameAssembly.dll+4247A20]
GameAssembly.dll+1F0DA0B: 48 89 7C 24 20              - mov [rsp+20],rdi
GameAssembly.dll+1F0DA10: 48 8B 7C 24 48              - mov rdi,[rsp+48]
GameAssembly.dll+1F0DA15: 85 C0                       - test eax,eax
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>75</ID>
              <Description>"Usage: Menu -&gt; item -&gt; material"</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>76</ID>
              <Description>"Item count must &gt;= threshold"</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>77</ID>
              <Description>"threshold"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_min_material_threshold</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>49</ID>
          <Description>"Char status viewer"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : MonochromeMobius Rights and Wrongs Forgotten.exe
  Version:
  Date   : 2022-12-21
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

//aobscanmodule(INJECT_GET_CHAR_DATA,GameAssembly.dll,33 C9 8B 5F 30) // should be unique
aobscanregion(INJECT_GET_CHAR_DATA,CAMPCampStatusMenuManagerUpdateCharaStatusDataProc+506,CAMPCampStatusMenuManagerUpdateCharaStatusDataProc+7F6,33 C9 8B 5F 30) // should be unique
alloc(newmem,$1000,INJECT_GET_CHAR_DATA)

label(code)
label(return)
label(i_base_char_data_addr)

newmem:
  mov [i_base_char_data_addr], rdi
code:
  xor ecx,ecx
  mov ebx,[rdi+30]
  jmp return
align 10 cc
  i_base_char_data_addr:
  dq 0
INJECT_GET_CHAR_DATA:
  jmp newmem
return:
registersymbol(INJECT_GET_CHAR_DATA)
registersymbol(i_base_char_data_addr)
[DISABLE]

INJECT_GET_CHAR_DATA:
  db 33 C9 8B 5F 30

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+106D8E6

GameAssembly.dll+106D8BB: 33 C9                 - xor ecx,ecx
GameAssembly.dll+106D8BD: E8 4E 6D 20 00        - call StringsManager.UtrpgString
GameAssembly.dll+106D8C2: 48 85 DB              - test rbx,rbx
GameAssembly.dll+106D8C5: 0F 84 72 08 00 00     - je GameAssembly.dll+106E13D
GameAssembly.dll+106D8CB: 4C 8B 0B              - mov r9,[rbx]
GameAssembly.dll+106D8CE: 48 8B CB              - mov rcx,rbx
GameAssembly.dll+106D8D1: 48 8B 10              - mov rdx,[rax]
GameAssembly.dll+106D8D4: 4D 8B 81 F0 05 00 00  - mov r8,[r9+000005F0]
GameAssembly.dll+106D8DB: 41 FF 91 E8 05 00 00  - call qword ptr [r9+000005E8]
GameAssembly.dll+106D8E2: 4C 8B 76 48           - mov r14,[rsi+48]
// ---------- INJECTING HERE ----------
GameAssembly.dll+106D8E6: 33 C9                 - xor ecx,ecx
// ---------- DONE INJECTING  ----------
GameAssembly.dll+106D8E8: 8B 5F 30              - mov ebx,[rdi+30]
GameAssembly.dll+106D8EB: E8 00 34 D2 00        - call System.Globalization.NumberFormatInfo.get_CurrentInfo
GameAssembly.dll+106D8F0: 45 33 C9              - xor r9d,r9d
GameAssembly.dll+106D8F3: 4C 8B C0              - mov r8,rax
GameAssembly.dll+106D8F6: 33 D2                 - xor edx,edx
GameAssembly.dll+106D8F8: 8B CB                 - mov ecx,ebx
GameAssembly.dll+106D8FA: E8 51 E2 D1 00        - call System.Number.FormatInt32
GameAssembly.dll+106D8FF: 33 D2                 - xor edx,edx
GameAssembly.dll+106D901: 48 8B C8              - mov rcx,rax
GameAssembly.dll+106D904: E8 A7 80 78 FF        - call Extensions.HanToZenNum
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>72</ID>
              <Description>"Usage: Menu -&gt;Status -&gt; Select char -&gt; Detail"</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>50</ID>
              <Description>"Name"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>String</VariableType>
              <Length>128</Length>
              <Unicode>1</Unicode>
              <CodePage>0</CodePage>
              <ZeroTerminate>1</ZeroTerminate>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>14</Offset>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>51</ID>
              <Description>"level_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>30</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>52</ID>
              <Description>"life_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>34</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>53</ID>
              <Description>"lifeMax_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>38</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>54</ID>
              <Description>"force_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>3C</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>55</ID>
              <Description>"forceMax_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>40</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>56</ID>
              <Description>"energy_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>44</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>57</ID>
              <Description>"ableEnergy_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Byte</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>48</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>58</ID>
              <Description>"str_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>4C</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>59</ID>
              <Description>"int_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>50</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>60</ID>
              <Description>"defence_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>54</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>61</ID>
              <Description>"mind_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>58</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>62</ID>
              <Description>"agility_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>5C</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>63</ID>
              <Description>"exp_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>60</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>64</ID>
              <Description>"nextLevelExp_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>64</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>65</ID>
              <Description>"fly_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Byte</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>AC</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>99</ID>
              <Description>"+charaInfo"</Description>
              <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>87</ID>
                  <Description>"EnableWP"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Byte</VariableType>
                  <Address>i_base_char_data_addr</Address>
                  <Offsets>
                    <Offset>10</Offset>
                    <Offset>110</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>88</ID>
                  <Description>"ModeWP"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Byte</VariableType>
                  <Address>i_base_char_data_addr</Address>
                  <Offsets>
                    <Offset>11</Offset>
                    <Offset>110</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>89</ID>
                  <Description>"EnableStand"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Byte</VariableType>
                  <Address>i_base_char_data_addr</Address>
                  <Offsets>
                    <Offset>12</Offset>
                    <Offset>110</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>90</ID>
                  <Description>"ModeMask"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Byte</VariableType>
                  <Address>i_base_char_data_addr</Address>
                  <Offsets>
                    <Offset>13</Offset>
                    <Offset>110</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>91</ID>
                  <Description>"ModeGiant"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Byte</VariableType>
                  <Address>i_base_char_data_addr</Address>
                  <Offsets>
                    <Offset>14</Offset>
                    <Offset>110</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>92</ID>
                  <Description>"ModeStand"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Byte</VariableType>
                  <Address>i_base_char_data_addr</Address>
                  <Offsets>
                    <Offset>15</Offset>
                    <Offset>110</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>93</ID>
                  <Description>"GemCount"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_char_data_addr</Address>
                  <Offsets>
                    <Offset>18</Offset>
                    <Offset>110</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>94</ID>
                  <Description>"GemMaxCount"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_char_data_addr</Address>
                  <Offsets>
                    <Offset>1C</Offset>
                    <Offset>110</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>95</ID>
                  <Description>"ModeWing"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Byte</VariableType>
                  <Address>i_base_char_data_addr</Address>
                  <Offsets>
                    <Offset>20</Offset>
                    <Offset>110</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>96</ID>
                  <Description>"EnableWarrior"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Byte</VariableType>
                  <Address>i_base_char_data_addr</Address>
                  <Offsets>
                    <Offset>21</Offset>
                    <Offset>110</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>97</ID>
                  <Description>"ModeWarrior"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Byte</VariableType>
                  <Address>i_base_char_data_addr</Address>
                  <Offsets>
                    <Offset>22</Offset>
                    <Offset>110</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>98</ID>
                  <Description>"isNPC"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Byte</VariableType>
                  <Address>i_base_char_data_addr</Address>
                  <Offsets>
                    <Offset>23</Offset>
                    <Offset>110</Offset>
                  </Offsets>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>66</ID>
              <Description>"oddBonusPoint_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>140</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>67</ID>
              <Description>"buffStr_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Double</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>150</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>68</ID>
              <Description>"buffInt_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Double</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>158</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>69</ID>
              <Description>"buffDefence_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Double</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>160</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>70</ID>
              <Description>"buffMind_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Double</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>168</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>71</ID>
              <Description>"buffAgility_"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Double</VariableType>
              <Address>i_base_char_data_addr</Address>
              <Offsets>
                <Offset>170</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>26</ID>
      <Description>"Monochrome Mobius: Rights and Wrongs Forgotten (2022/12/21  /  https://opencheattables.com  /  CE 7.4+"</Description>
      <Color>400080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <LuaScript>function AOBScanModule(moduleName, signature, aobSignaturePrivileges, alignmentType, alignmentParam)
	--checkArgType(moduleName, 1, 'string')
	if not signature or not moduleName then return end
	index = index or 1
	local modStartAddr = getAddress(moduleName)
	local modEndAddr = modStartAddr + getModuleSize(moduleName)
	local ms = createMemScan()
	if type(signature) == 'table' then
		local sig = ''
		for i, byte in ipairs(signature) do
			sig = sig..string.format('%02X', byte)
		end
		signature = sig
	end
	ms.firstScan(soExactValue, vtByteArray, nil, signature, nil, modStartAddr, modEndAddr,
				 aobSignaturePrivileges, alignmentType, alignmentParam, true, true, false, false)
	ms.waitTillDone()
	local results = createFoundList(ms)
	results.initialize()
	ms.destroy()
	return results
end
registerLuaFunctionHighlight('AOBScanModule')



AddressList.Header.OnSectionClick = nil
</LuaScript>
</CheatTable>
