<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <CheatEntries>
    <CheatEntry>
      <ID>2</ID>
      <Description>"Invincible"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

aobscanmodule(NO_DAMAGE,StarOceanTheLastHope.exe,41 8B 5E 1C 49 8B CE E8 6B) // should be unique
alloc(newmem,$1000,NO_DAMAGE)

label(code)
label(return)

newmem:

code:
  push eax
  mov eax,[r14+14]
  mov [r14+1C],eax
  pop eax
  mov ebx,[r14+1C]
  mov rcx,r14
  jmp return

NO_DAMAGE:
  jmp newmem
  nop 2
return:
registersymbol(NO_DAMAGE)

[DISABLE]

NO_DAMAGE:
  db 41 8B 5E 1C 49 8B CE

unregistersymbol(NO_DAMAGE)
dealloc(newmem)

</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>4</ID>
      <Description>"Experience Multiplier"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

aobscanmodule(EXP_MULTIPLIER,StarOceanTheLastHope.exe,03 56 44 48 8B CE) // should be unique
alloc(newmem,$100,EXP_MULTIPLIER)

label(code)
label(return)
label(exp_factor)
registersymbol(exp_factor)

newmem:

code:
  push eax
  mov eax,[rsi+44]
  imul eax,[exp_factor]
  mov [rsi+44],eax
  pop eax
  add edx,[rsi+44]
  mov rcx,rsi
  jmp return

exp_factor:
  dd 1

EXP_MULTIPLIER:
  jmp newmem
  nop
return:
registersymbol(EXP_MULTIPLIER)

[DISABLE]

EXP_MULTIPLIER:
  db 03 56 44 48 8B CE

unregistersymbol(EXP_MULTIPLIER)
dealloc(newmem)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>5</ID>
          <Description>"Experience Factor"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>"exp_factor"</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>6</ID>
      <Description>"Fol Multiplier"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

aobscanmodule(FOL_MULTIPLIER,StarOceanTheLastHope.exe,41 03 C1 89 46 4C) // should be unique
alloc(newmem,$100,FOL_MULTIPLIER)

label(code)
label(return)
label(fol_factor)
registersymbol(fol_factor)

newmem:

code:
  imul r9d,[fol_factor]
  add eax,r9d
  mov [rsi+4C],eax
  jmp return

fol_factor:
  dd 1

FOL_MULTIPLIER:
  jmp newmem
  nop

return:
registersymbol(FOL_MULTIPLIER)

[DISABLE]

FOL_MULTIPLIER:
  db 41 03 C1 89 46 4C

unregistersymbol(FOL_MULTIPLIER)
dealloc(newmem)

</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>7</ID>
          <Description>"Fol Factor"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>"fol_factor"</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>8</ID>
      <Description>"One Hit Kill"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

aobscanmodule(ONE_HIT_KILL,StarOceanTheLastHope.exe,85 DB 79 04 8B D9) // should be unique
alloc(newmem,$1000,ONE_HIT_KILL)

label(code)
label(return)

newmem:

code:
  cmp [rdi],1
  je @f
  cmp rbx,1
  jl @f
  mov rbx,1
@@:
  test ebx,ebx
  jns StarOceanTheLastHope.exe+7606BE
  mov ebx,ecx
  jmp return

ONE_HIT_KILL:
  jmp newmem
  nop
return:
registersymbol(ONE_HIT_KILL)

[DISABLE]

ONE_HIT_KILL:
  db 85 DB 79 04 8B D9

unregistersymbol(ONE_HIT_KILL)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: StarOceanTheLastHope.exe+7606B6

StarOceanTheLastHope.exe+76069D: CC                    - int 3 
StarOceanTheLastHope.exe+76069E: CC                    - int 3 
StarOceanTheLastHope.exe+76069F: CC                    - int 3 
StarOceanTheLastHope.exe+7606A0: 48 89 5C 24 08        - mov [rsp+08],rbx
StarOceanTheLastHope.exe+7606A5: 57                    - push rdi
StarOceanTheLastHope.exe+7606A6: 48 83 EC 20           - sub rsp,20
StarOceanTheLastHope.exe+7606AA: 8B DA                 - mov ebx,edx
StarOceanTheLastHope.exe+7606AC: 48 8B F9              - mov rdi,rcx
StarOceanTheLastHope.exe+7606AF: E8 DC EC FF FF        - call StarOceanTheLastHope.exe+75F390
StarOceanTheLastHope.exe+7606B4: 33 C9                 - xor ecx,ecx
// ---------- INJECTING HERE ----------
StarOceanTheLastHope.exe+7606B6: 85 DB                 - test ebx,ebx
// ---------- DONE INJECTING  ----------
StarOceanTheLastHope.exe+7606B8: 79 04                 - jns StarOceanTheLastHope.exe+7606BE
StarOceanTheLastHope.exe+7606BA: 8B D9                 - mov ebx,ecx
StarOceanTheLastHope.exe+7606BC: EB 05                 - jmp StarOceanTheLastHope.exe+7606C3
StarOceanTheLastHope.exe+7606BE: 3B D8                 - cmp ebx,eax
StarOceanTheLastHope.exe+7606C0: 0F 4F D8              - cmovg ebx,eax
StarOceanTheLastHope.exe+7606C3: 89 5F 1C              - mov [rdi+1C],ebx
StarOceanTheLastHope.exe+7606C6: 85 DB                 - test ebx,ebx
StarOceanTheLastHope.exe+7606C8: 7F 11                 - jg StarOceanTheLastHope.exe+7606DB
StarOceanTheLastHope.exe+7606CA: 83 8F 9C 03 00 00 08  - or dword ptr [rdi+0000039C],08
StarOceanTheLastHope.exe+7606D1: 89 4F 5C              - mov [rdi+5C],ecx
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
