<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <CheatEntries>
    <CheatEntry>
      <ID>19021</ID>
      <Description>"Allow VEH"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{$LUA}
if syntaxcheck then return end
local symbolName = "KERNELBASE.SetThreadContext"

[ENABLE]
local bt = {195, 144, 144, 144} --C3 90 90 90 (ret nop nop nop)
writeBytes(symbolName, bt)

[DISABLE]
local bt = {72, 131, 236, 40} --48 83 EC 28 (sub rsp, 28)
writeBytes(symbolName, bt)
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>19042</ID>
      <Description>"[Pointers]"</Description>
      <Options moHideChildren="1"/>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>19046</ID>
          <Description>"Data"</Description>
          <Options moHideChildren="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>1337092194</ID>
              <Description>"Buff Slot 1? Bonus"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BF3C0</Address>
              <Offsets>
                <Offset>90</Offset>
                <Offset>68</Offset>
                <Offset>20</Offset>
                <Offset>150</Offset>
                <Offset>10</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>1337092195</ID>
              <Description>"Air Master Extra Jump"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Byte</VariableType>
              <Address>SOR4.exe+14BF3C0</Address>
              <Offsets>
                <Offset>92</Offset>
                <Offset>80</Offset>
                <Offset>20</Offset>
                <Offset>150</Offset>
                <Offset>10</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>19056</ID>
              <Description>"Combo Timer"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BF3B8</Address>
              <Offsets>
                <Offset>6C</Offset>
                <Offset>D8</Offset>
                <Offset>28</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>19045</ID>
              <Description>"Extra Life Score"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BF3B8</Address>
              <Offsets>
                <Offset>88</Offset>
                <Offset>D8</Offset>
                <Offset>28</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>19058</ID>
              <Description>"No New Lives Score"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BF3B8</Address>
              <Offsets>
                <Offset>8C</Offset>
                <Offset>D8</Offset>
                <Offset>28</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>1337092190</ID>
              <Description>"Extra Star Score"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BF3C0</Address>
              <Offsets>
                <Offset>BC</Offset>
                <Offset>150</Offset>
                <Offset>10</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>1337092199</ID>
              <Description>"Extra Star Score Per Milestone"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BF3C0</Address>
              <Offsets>
                <Offset>C0</Offset>
                <Offset>150</Offset>
                <Offset>10</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>26</ID>
          <Description>"Character Select"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>2 Bytes</VariableType>
          <Address>SOR4.exe+14BFE38</Address>
          <Offsets>
            <Offset>10</Offset>
            <Offset>8</Offset>
            <Offset>10</Offset>
            <Offset>88</Offset>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>20</ID>
          <Description>"Combo"</Description>
          <Options moHideChildren="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>15</ID>
              <Description>"Combo"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>68</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>16</ID>
              <Description>"Combo Time"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>64</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>21</ID>
          <Description>"Player 1"</Description>
          <Options moHideChildren="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>19052</ID>
              <Description>"Health"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>3A</Offset>
                <Offset>10</Offset>
                <Offset>8</Offset>
                <Offset>10</Offset>
                <Offset>10</Offset>
                <Offset>1A0</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>1337092197</ID>
              <Description>"Max Jumps"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>13C</Offset>
                <Offset>10</Offset>
                <Offset>8</Offset>
                <Offset>10</Offset>
                <Offset>10</Offset>
                <Offset>1A0</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>19041</ID>
              <Description>"Time (Multiplayer)"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>1C</Offset>
                <Offset>18</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>19037</ID>
              <Description>"Base"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>0</Offset>
                <Offset>10</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>22</ID>
              <Description>"Lives"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>20</Offset>
                <Offset>10</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
              <Hotkeys>
                <Hotkey>
                  <Action>Set Value</Action>
                  <Keys>
                    <Key>17</Key>
                    <Key>97</Key>
                  </Keys>
                  <Value>3</Value>
                  <ID>0</ID>
                </Hotkey>
              </Hotkeys>
            </CheatEntry>
            <CheatEntry>
              <ID>19048</ID>
              <Description>"Health (Visual)"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Byte</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>26</Offset>
                <Offset>10</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>17</ID>
              <Description>"Friendly Damage"</Description>
              <ShowAsSigned>1</ShowAsSigned>
              <VariableType>Byte</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>2A</Offset>
                <Offset>10</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>9</ID>
              <Description>"Stars"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>30</Offset>
                <Offset>10</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
              <Hotkeys>
                <Hotkey>
                  <Action>Set Value</Action>
                  <Keys>
                    <Key>17</Key>
                    <Key>97</Key>
                  </Keys>
                  <Value>2</Value>
                  <ID>0</ID>
                </Hotkey>
              </Hotkeys>
            </CheatEntry>
            <CheatEntry>
              <ID>10</ID>
              <Description>"Score"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>34</Offset>
                <Offset>10</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>24</ID>
              <Description>"Damage"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>2 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>3A</Offset>
                <Offset>10</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
              <Hotkeys>
                <Hotkey>
                  <Action>Increase Value</Action>
                  <Keys>
                    <Key>17</Key>
                    <Key>98</Key>
                  </Keys>
                  <Value>300</Value>
                  <ID>0</ID>
                </Hotkey>
              </Hotkeys>
            </CheatEntry>
            <CheatEntry>
              <ID>19</ID>
              <Description>"First Hit (flag)"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>5C</Offset>
                <Offset>10</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>27</ID>
          <Description>"Player 2"</Description>
          <Options moHideChildren="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>19053</ID>
              <Description>"Health"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>3A</Offset>
                <Offset>18</Offset>
                <Offset>8</Offset>
                <Offset>10</Offset>
                <Offset>10</Offset>
                <Offset>1A0</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>29</ID>
              <Description>"Lives"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>A8</Offset>
                <Offset>10</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
              <Hotkeys>
                <Hotkey>
                  <Action>Set Value</Action>
                  <Keys>
                    <Key>17</Key>
                    <Key>97</Key>
                  </Keys>
                  <Value>3</Value>
                  <ID>0</ID>
                </Hotkey>
              </Hotkeys>
            </CheatEntry>
            <CheatEntry>
              <ID>31</ID>
              <Description>"Health (Visual)"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>2 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>AE</Offset>
                <Offset>10</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>30</ID>
              <Description>"Friendly Damage"</Description>
              <ShowAsSigned>1</ShowAsSigned>
              <VariableType>Byte</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>B0</Offset>
                <Offset>10</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>34</ID>
              <Description>"Stars"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>B8</Offset>
                <Offset>10</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
              <Hotkeys>
                <Hotkey>
                  <Action>Set Value</Action>
                  <Keys>
                    <Key>17</Key>
                    <Key>97</Key>
                  </Keys>
                  <Value>2</Value>
                  <ID>0</ID>
                </Hotkey>
              </Hotkeys>
            </CheatEntry>
            <CheatEntry>
              <ID>32</ID>
              <Description>"Score"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>BC</Offset>
                <Offset>10</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>36</ID>
              <Description>"Damage"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>2 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>C2</Offset>
                <Offset>10</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>35</ID>
              <Description>"First Hit (flag)"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>E4</Offset>
                <Offset>10</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>19051</ID>
              <Description>"Time"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>SOR4.exe+14BFE38</Address>
              <Offsets>
                <Offset>34</Offset>
                <Offset>18</Offset>
                <Offset>58</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>19027</ID>
      <Description>"[DEBUG]"</Description>
      <Options moHideChildren="1"/>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>19026</ID>
          <Description>"Select Same Char"</Description>
          <Color>0000FF</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : SOR4.exe
  Version: 
  Date   : 2020-05-10
  Author : Marcus101RR

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(gSelectSame,SOR4.exe,24 28 48 8B 09 48 85 C9) // should be unique
alloc(newmem,$1000,gSelectSame)

label(code)
label(return)

newmem:

code:
  mov rcx,[rcx]
  mov rcx,00000000
  test rcx,rcx
  jmp return

gSelectSame+02:
  jmp newmem
  nop
return:
registersymbol(gSelectSame)

[DISABLE]

gSelectSame+02:
  db 48 8B 09 48 85 C9

unregistersymbol(gSelectSame)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "SOR4.exe"+2FFCBD

"SOR4.exe"+2FFC97: 45 33 FF              -  xor r15d,r15d
"SOR4.exe"+2FFC9A: 45 85 F6              -  test r14d,r14d
"SOR4.exe"+2FFC9D: 7E 4D                 -  jle SOR4.exe+2FFCEC
"SOR4.exe"+2FFC9F: 49 63 CF              -  movsxd  rcx,r15d
"SOR4.exe"+2FFCA2: 48 6B C9 70           -  imul rcx,rcx,70
"SOR4.exe"+2FFCA6: 48 8D 74 0D 10        -  lea rsi,[rbp+rcx+10]
"SOR4.exe"+2FFCAB: 48 8D 7C 24 28        -  lea rdi,[rsp+28]
"SOR4.exe"+2FFCB0: B9 0E 00 00 00        -  mov ecx,0000000E
"SOR4.exe"+2FFCB5: F3 48 A5              - repe  movsq 
"SOR4.exe"+2FFCB8: 48 8D 4C 24 28        -  lea rcx,[rsp+28]
// ---------- INJECTING HERE ----------
"SOR4.exe"+2FFCBD: 48 8B 09              -  mov rcx,[rcx]
"SOR4.exe"+2FFCC0: 48 85 C9              -  test rcx,rcx
// ---------- DONE INJECTING  ----------
"SOR4.exe"+2FFCC3: 75 07                 -  jne SOR4.exe+2FFCCC
"SOR4.exe"+2FFCC5: 48 8D 0D 5C 73 07 01  -  lea rcx,[SOR4.exe+1377028]
"SOR4.exe"+2FFCCC: 48 8B D3              -  mov rdx,rbx
"SOR4.exe"+2FFCCF: 48 85 D2              -  test rdx,rdx
"SOR4.exe"+2FFCD2: 75 07                 -  jne SOR4.exe+2FFCDB
"SOR4.exe"+2FFCD4: 48 8D 15 4D 73 07 01  -  lea rdx,[SOR4.exe+1377028]
"SOR4.exe"+2FFCDB: E8 10 63 F8 FF        -  call SOR4.exe+285FF0
"SOR4.exe"+2FFCE0: 84 C0                 -  test al,al
"SOR4.exe"+2FFCE2: 75 1D                 -  jne SOR4.exe+2FFD01
"SOR4.exe"+2FFCE4: 41 FF C7              -  inc r15d
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>1337092187</ID>
          <Description>"Fetch Base Addresses (Easy)"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{$lua}
if syntaxcheck then return end
[ENABLE]
  print(string.format("Fetching Base Addresses..."))

  local aobList = {
  "48 8D 05 ?? ?? ?? ?? 48 8B 00 48 8B 00 48 8D 0D ?? ?? ?? ?? 83 79 08 01 75 01 C3 48 8B D0 E9 ?? ?? ?? ?? 48 8D 05 ?? ?? ?? ?? 48 8B 00 48 8B 00 C3 48 8D 05 ?? ?? ?? ?? 48 8B 00 48 8B 00 48 8D 0D ?? ?? ?? ?? 83 79 08 01 75 01 C3"
  }
  local aobNames = {
  "Base Pointer (Add +AB8)"
  }

  local xbase = readInteger(process)and GetAddress(process)
  print(string.format("Base: %X",xbase))
  for i = 1, #aobList do
        local aob = AOBScan(aobList[i],"+X*C*W")
        local instruct = getAddressSafe(aob[0])
        local distance = getAddressSafe(instruct)+3
        distance = readInteger(distance)

        local instructSize = getInstructionSize(instruct)

        local address = (instruct + distance + instructSize) - xbase
        print(string.format("%s: SOR4.exe+%X",aobNames[i],address))
  end
[DISABLE]
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <CheatCodes>
    <CodeEntry>
      <Description>Move Addresses</Description>
      <AddressString>SOR4.exe+4F356</AddressString>
      <Before>
        <Byte>08</Byte>
        <Byte>48</Byte>
        <Byte>8B</Byte>
        <Byte>42</Byte>
        <Byte>10</Byte>
      </Before>
      <Actual>
        <Byte>48</Byte>
        <Byte>89</Byte>
        <Byte>41</Byte>
        <Byte>10</Byte>
      </Actual>
      <After>
        <Byte>48</Byte>
        <Byte>8B</Byte>
        <Byte>42</Byte>
        <Byte>18</Byte>
        <Byte>48</Byte>
      </After>
    </CodeEntry>
    <CodeEntry>
      <Description>Score Add</Description>
      <AddressString>SOR4.exe+467E4B</AddressString>
      <Before>
        <Byte>4D</Byte>
        <Byte>08</Byte>
        <Byte>8B</Byte>
        <Byte>56</Byte>
        <Byte>28</Byte>
      </Before>
      <Actual>
        <Byte>44</Byte>
        <Byte>8B</Byte>
        <Byte>43</Byte>
        <Byte>1C</Byte>
      </Actual>
      <After>
        <Byte>41</Byte>
        <Byte>B9</Byte>
        <Byte>02</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </After>
    </CodeEntry>
    <CodeEntry>
      <Description>Buff Data</Description>
      <AddressString>SOR4.exe+464574</AddressString>
      <Before>
        <Byte>10</Byte>
        <Byte>8B</Byte>
        <Byte>E9</Byte>
        <Byte>EB</Byte>
        <Byte>41</Byte>
      </Before>
      <Actual>
        <Byte>8B</Byte>
        <Byte>AB</Byte>
        <Byte>90</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Actual>
      <After>
        <Byte>45</Byte>
        <Byte>33</Byte>
        <Byte>FF</Byte>
        <Byte>8B</Byte>
        <Byte>4C</Byte>
      </After>
    </CodeEntry>
  </CheatCodes>
  <UserdefinedSymbols/>
  <Comments>Mr X DLC Base Address +8
</Comments>
</CheatTable>
