<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <CheatEntries>
    <CheatEntry>
      <ID>2</ID>
      <Description>"Invincibility"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

aobscanmodule(NO_DAMAGE,ys8.exe,F3 0F 11 97 88 10 00 00 F7) // should be unique
alloc(newmem,$1000,NO_DAMAGE)

label(code)
label(return)

newmem:

code:
  cmp [rdi+18],0x000000004C4F4441 // Adol
  je restore_health
  cmp [rdi+18],0x000000414958414C // Laxia
  je restore_health
  cmp [rdi+18],0x0000004441484153 // Sahad
  je restore_health
  cmp [rdi+18],0x00004C454D4D5548 // Hummel
  je restore_health
  cmp [rdi+18],0x00000000414E4144 // Dana
  je restore_health
  cmp [rdi+18],0x004154544F434952 // Ricotta
  je restore_health
  movss [rdi+00001088],xmm2
  jmp return

restore_health:
  movss [rdi+00001088],xmm1
  jmp return

NO_DAMAGE:
  jmp newmem
  nop 3
return:
registersymbol(NO_DAMAGE)

[DISABLE]

NO_DAMAGE:
  db F3 0F 11 97 88 10 00 00

unregistersymbol(NO_DAMAGE)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: ys8.exe+1BD241

ys8.exe+1BD21E: E8 CD A3 01 00                 - call ys8.exe+1D75F0
ys8.exe+1BD223: 83 7F 78 01                    - cmp dword ptr [rdi+78],01
ys8.exe+1BD227: 0F 28 D0                       - movaps xmm2,xmm0
ys8.exe+1BD22A: F3 0F 58 D6                    - addss xmm2,xmm6
ys8.exe+1BD22E: 75 11                          - jne ys8.exe+1BD241
ys8.exe+1BD230: 41 0F 28 CA                    - movaps xmm1,xmm10
ys8.exe+1BD234: F3 0F 5D CA                    - minss xmm1,xmm2
ys8.exe+1BD238: 0F 28 D1                       - movaps xmm2,xmm1
ys8.exe+1BD23B: EB 04                          - jmp ys8.exe+1BD241
ys8.exe+1BD23D: 41 0F 28 D0                    - movaps xmm2,xmm8
// ---------- INJECTING HERE ----------
ys8.exe+1BD241: F3 0F 11 97 88 10 00 00        - movss [rdi+00001088],xmm2
// ---------- DONE INJECTING  ----------
ys8.exe+1BD249: F7 87 B8 09 00 00 00 00 04 00  - test [rdi+000009B8],00040000
ys8.exe+1BD253: 0F 28 FA                       - movaps xmm7,xmm2
ys8.exe+1BD256: 74 14                          - je ys8.exe+1BD26C
ys8.exe+1BD258: 44 0F 2F DA                    - comiss xmm11,xmm2
ys8.exe+1BD25C: 76 0E                          - jna ys8.exe+1BD26C
ys8.exe+1BD25E: C7 87 88 10 00 00 00 00 80 3F  - mov [rdi+00001088],3F800000
ys8.exe+1BD268: 41 0F 28 FB                    - movaps xmm7,xmm11
ys8.exe+1BD26C: 83 7F 78 01                    - cmp dword ptr [rdi+78],01
ys8.exe+1BD270: F3 0F 58 BF C4 10 00 00        - addss xmm7,[rdi+000010C4]
ys8.exe+1BD278: F3 41 0F 58 F8                 - addss xmm7,xmm8
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>4</ID>
      <Description>"Damage Multiplier"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

aobscanmodule(DAMAGE_MULTIPLIER,ys8.exe,F3 41 0F 58 D4 0F) // should be unique
alloc(newmem,$1000,DAMAGE_MULTIPLIER)

label(code)
label(return)
label(dmg_factor)
registersymbol(dmg_factor)

newmem:

code:
  mulss xmm12,[dmg_factor]
  addss xmm2,xmm12
  jmp return

dmg_factor:
  dd (float)1

DAMAGE_MULTIPLIER:
  jmp newmem
return:
registersymbol(DAMAGE_MULTIPLIER)

[DISABLE]

DAMAGE_MULTIPLIER:
  db F3 41 0F 58 D4

unregistersymbol(DAMAGE_MULTIPLIER)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: ys8.exe+1BD1F7

ys8.exe+1BD1D2: F3 0F 58 CE              - addss xmm1,xmm6
ys8.exe+1BD1D6: 0F 2F D1                 - comiss xmm2,xmm1
ys8.exe+1BD1D9: 76 0B                    - jna ys8.exe+1BD1E6
ys8.exe+1BD1DB: F3 0F 11 8F 88 10 00 00  - movss [rdi+00001088],xmm1
ys8.exe+1BD1E3: 0F 28 D1                 - movaps xmm2,xmm1
ys8.exe+1BD1E6: 83 7F 78 01              - cmp dword ptr [rdi+78],01
ys8.exe+1BD1EA: 75 0B                    - jne ys8.exe+1BD1F7
ys8.exe+1BD1EC: 41 0F 28 C2              - movaps xmm0,xmm10
ys8.exe+1BD1F0: F3 0F 5D C1              - minss xmm0,xmm1
ys8.exe+1BD1F4: 0F 28 C8                 - movaps xmm1,xmm0
// ---------- INJECTING HERE ----------
ys8.exe+1BD1F7: F3 41 0F 58 D4           - addss xmm2,xmm12
// ---------- DONE INJECTING  ----------
ys8.exe+1BD1FC: 0F 2F CA                 - comiss xmm1,xmm2
ys8.exe+1BD1FF: 77 40                    - ja NO_DAMAGE
ys8.exe+1BD201: BA 1E 00 00 00           - mov edx,0000001E
ys8.exe+1BD206: 48 8B CF                 - mov rcx,rdi
ys8.exe+1BD209: E8 E2 A3 01 00           - call ys8.exe+1D75F0
ys8.exe+1BD20E: 0F 28 F0                 - movaps xmm6,xmm0
ys8.exe+1BD211: BA 21 00 00 00           - mov edx,00000021
ys8.exe+1BD216: 48 8B CF                 - mov rcx,rdi
ys8.exe+1BD219: F3 41 0F 58 F0           - addss xmm6,xmm8
ys8.exe+1BD21E: E8 CD A3 01 00           - call ys8.exe+1D75F0
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>5</ID>
          <Description>"Damage Factor"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>"dmg_factor"</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <CheatCodes>
    <CodeEntry>
      <Description>Change of movss [rdi+00001088],xmm2</Description>
      <AddressString>ys8.exe+1BD241</AddressString>
      <Before>
        <Byte>04</Byte>
        <Byte>41</Byte>
        <Byte>0F</Byte>
        <Byte>28</Byte>
        <Byte>D0</Byte>
      </Before>
      <Actual>
        <Byte>F3</Byte>
        <Byte>0F</Byte>
        <Byte>11</Byte>
        <Byte>97</Byte>
        <Byte>88</Byte>
        <Byte>10</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Actual>
      <After>
        <Byte>F7</Byte>
        <Byte>87</Byte>
        <Byte>B8</Byte>
        <Byte>09</Byte>
        <Byte>00</Byte>
      </After>
    </CodeEntry>
  </CheatCodes>
  <UserdefinedSymbols/>
</CheatTable>
