<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>52</ID>
      <Description>"Compact View Mode"</Description>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
--Make parts of the main form invisible.
controlMainForm = getMainForm()
control_setVisible(wincontrol_getControl(controlMainForm,0), false)
control_setVisible(wincontrol_getControl(controlMainForm,2), false)
control_setVisible(wincontrol_getControl(controlMainForm,3), false)

[DISABLE]
{$lua}
--Make parts of the main form visible.
controlMainForm = getMainForm()
control_setVisible(wincontrol_getControl(controlMainForm,0), true)
control_setVisible(wincontrol_getControl(controlMainForm,2), true)
control_setVisible(wincontrol_getControl(controlMainForm,3), true)
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>68</ID>
      <Description>"-----"</Description>
      <LastState Value="" RealAddress="00000000"/>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry>
      <ID>2</ID>
      <Description>"Find CharacterController Stats"</Description>
      <Options moHideChildren="1"/>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Health is a float and is even read in the pause screen.
//Find what's reading that.
//VampireSurvivors.Runtime.dll
//VampireSurvivors.Objects.Characters.CharacterController

[ENABLE]

aobscanmodule(readhealth,GameAssembly.dll,F3 0F 10 BB 58 01 00 00 48 85 C0 74 76) // should be unique
alloc(newmem,$1000,readhealth)

label(code)
label(return)

globalalloc(_charactercontroller,8)

newmem:

code:
  push rax //Push a register to the stack to free it for use.
  mov rax,_charactercontroller //Copy our allocated address into it.
  mov [rax],rbx //Copy our desired value into where rbx is pointing.
  pop rax //Restore the value of rbx and pretend nothing happened.
  movss xmm7,[rbx+00000158]
  jmp return

readhealth:
  jmp newmem
  nop 3
return:
registersymbol(readhealth)

[DISABLE]

readhealth:
  db F3 0F 10 BB 58 01 00 00

unregistersymbol(readhealth)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 7FFBDFED85F3

7FFBDFED85D3: 84 C0                    - test al,al
7FFBDFED85D5: 75 15                    - jne 7FFBDFED85EC
7FFBDFED85D7: 0F 2E 35 BE 92 94 00     - ucomiss xmm6,[7FFBE082189C]
7FFBDFED85DE: 7A 02                    - jp 7FFBDFED85E2
7FFBDFED85E0: 74 0A                    - je 7FFBDFED85EC
7FFBDFED85E2: 0F 57 FF                 - xorps xmm7,xmm7
7FFBDFED85E5: 0F 2E F7                 - ucomiss xmm6,xmm7
7FFBDFED85E8: 7A 02                    - jp 7FFBDFED85EC
7FFBDFED85EA: 74 63                    - je 7FFBDFED864F
7FFBDFED85EC: 48 8B 83 48 01 00 00     - mov rax,[rbx+00000148]
// ---------- INJECTING HERE ----------
7FFBDFED85F3: F3 0F 10 BB 58 01 00 00  - movss xmm7,[rbx+00000158]
// ---------- DONE INJECTING  ----------
7FFBDFED85FB: 48 85 C0                 - test rax,rax
7FFBDFED85FE: 74 76                    - je 7FFBDFED8676
7FFBDFED8600: 48 8B 80 80 00 00 00     - mov rax,[rax+00000080]
7FFBDFED8607: 48 85 C0                 - test rax,rax
7FFBDFED860A: 74 6A                    - je 7FFBDFED8676
7FFBDFED860C: F3 0F 10 70 14           - movss xmm6,[rax+14]
7FFBDFED8611: F3 0F 58 70 10           - addss xmm6,[rax+10]
7FFBDFED8616: 0F 28 C6                 - movaps xmm0,xmm6
7FFBDFED8619: E8 F2 B2 76 FE           - call 7FFBDE643910
7FFBDFED861E: 84 C0                    - test al,al
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>11</ID>
          <Description>"Base"</Description>
          <LastState Value="0" RealAddress="1BDF44FFB40"/>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>808080</Color>
          <VariableType>Binary</VariableType>
          <BitStart>0</BitStart>
          <BitLength>1</BitLength>
          <ShowAsBinary>0</ShowAsBinary>
          <Address>[_charactercontroller]</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>107</ID>
          <Description>"Invincibility (Seconds)"</Description>
          <LastState Value="0" RealAddress="1BDF44FFC44"/>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>[_charactercontroller]+104</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>114</ID>
          <Description>"Stats"</Description>
          <LastState Value="0" RealAddress="1BDF44FFC88"/>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Binary</VariableType>
          <BitStart>0</BitStart>
          <BitLength>1</BitLength>
          <ShowAsBinary>0</ShowAsBinary>
          <Address>[_charactercontroller]+148</Address>
          <CheatEntries>
            <CheatEntry>
              <ID>115</ID>
              <Description>"Power"</Description>
              <LastState Value="2.349999428" RealAddress="1BE99FB37F0"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>10</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>116</ID>
              <Description>"Area"</Description>
              <LastState Value="1.699999928" RealAddress="1BE99FB37D0"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>18</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>117</ID>
              <Description>"Speed"</Description>
              <LastState Value="1.299999952" RealAddress="1BE99FB37B0"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>20</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>118</ID>
              <Description>"MoveSpeed"</Description>
              <LastState Value="1.600000024" RealAddress="1BE99FB3750"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>119</ID>
              <Description>"Growth"</Description>
              <LastState Value="1.149999857" RealAddress="1BE99FB3730"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>30</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>120</ID>
              <Description>"Luck"</Description>
              <LastState Value="1.800000191" RealAddress="1BE99FB3710"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>38</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>121</ID>
              <Description>"Duration"</Description>
              <LastState Value="1.399999857" RealAddress="1BE99FB36D0"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>40</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>122</ID>
              <Description>"Cooldown (1+value=)"</Description>
              <LastState Value="0.5500001311" RealAddress="1BE99FB3790"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>48</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>123</ID>
              <Description>"Amount"</Description>
              <LastState Value="1" RealAddress="1BE99FB3770"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>50</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>124</ID>
              <Description>"Armor"</Description>
              <LastState Value="4" RealAddress="1BE99FB36F0"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>58</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>125</ID>
              <Description>"Greed"</Description>
              <LastState Value="1.500000119" RealAddress="1BE99FB36B0"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>60</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>126</ID>
              <Description>"Regen"</Description>
              <LastState Value="1.500000119" RealAddress="1BE99FB3690"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>68</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>127</ID>
              <Description>"Rerolls"</Description>
              <LastState Value="10" RealAddress="1BE99FB3650"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>70</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>128</ID>
              <Description>"Skips"</Description>
              <LastState Value="10" RealAddress="1BE99FB3630"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>78</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>129</ID>
              <Description>"MaxHP"</Description>
              <LastState Value="397.4344482" RealAddress="1BE99FB3670"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>80</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134</ID>
              <Description>"Magnet"</Description>
              <Options moManualExpandCollapse="1"/>
              <LastState Value="2.110000134" RealAddress="1BE99FB35F0"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>88</Offset>
              </Offsets>
              <CheatEntries>
                <CheatEntry>
                  <ID>130</ID>
                  <Description>"_magnet-&gt;body-&gt;_radius"</Description>
                  <LastState Value="1.865636706" RealAddress="1BE48A45B84"/>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[_charactercontroller]+178</Address>
                  <Offsets>
                    <Offset>44</Offset>
                    <Offset>20</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>137</ID>
                  <Description>"_magnet-&gt;Radius-&gt;_val"</Description>
                  <LastState Value="186.5636749" RealAddress="1BE9789ABB0"/>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[_charactercontroller]+178</Address>
                  <Offsets>
                    <Offset>10</Offset>
                    <Offset>68</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>136</ID>
                  <Description>"_magnet-&gt;Percentage-&gt;_val"</Description>
                  <LastState Value="3.109999895" RealAddress="1BE9789AB90"/>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[_charactercontroller]+178</Address>
                  <Offsets>
                    <Offset>10</Offset>
                    <Offset>70</Offset>
                  </Offsets>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>131</ID>
              <Description>"Curse"</Description>
              <LastState Value="1.500000119" RealAddress="1BE99FB35D0"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>90</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>132</ID>
              <Description>"Banish"</Description>
              <LastState Value="10" RealAddress="1BE99FB3610"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>98</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>133</ID>
              <Description>"Revivals"</Description>
              <LastState Value="9" RealAddress="1BE985501C0"/>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Double</VariableType>
              <Address>[_charactercontroller]+148</Address>
              <Offsets>
                <Offset>10</Offset>
                <Offset>A0</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>111</ID>
          <Description>"HP"</Description>
          <LastState Value="0" RealAddress="1BDF44FFC98"/>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>[_charactercontroller]+158</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>113</ID>
          <Description>"Level"</Description>
          <LastState Value="134" RealAddress="1BDF44FFC9C"/>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>[_charactercontroller]+15C</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>4</ID>
          <Description>"EXP"</Description>
          <LastState Value="142097.75" RealAddress="1BDF44FFCAC"/>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>[_charactercontroller]+16C</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>135</ID>
      <Description>"-----"</Description>
      <LastState Value="" RealAddress="00000000"/>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry>
      <ID>65</ID>
      <Description>"Find Timer"</Description>
      <Options moHideChildren="1"/>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//The in-game timer is a float that matches what the game shows you.
//So like 4:28 would be a value of 260 seconds.

[ENABLE]

aobscanmodule(readtimer,GameAssembly.dll,F3 0F 10 B0 28 02 00 00 48) // should be unique
alloc(newmem,$1000,readtimer)

label(code)
label(return)

globalalloc(_gameplaybase,8) //8 bytes for a 64-bit address.

newmem:

code:
  push rbx //Push a register to the stack to free it for use.
  mov rbx,_gameplaybase //Copy our allocated address into it.
  mov [rbx],rax //Copy our desired value into where rbx is pointing.
  pop rbx //Restore the value of rbx and pretend nothing happened.
  //Original code.
  movss xmm6,[rax+00000228]
  jmp return

readtimer:
  jmp newmem
  nop 3
return:
registersymbol(readtimer)

[DISABLE]

readtimer:
  db F3 0F 10 B0 28 02 00 00

unregistersymbol(readtimer)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 7FF9CA3EE132

7FF9CA3EE0F5: C6 05 EF 13 2F 01 01     - mov byte ptr [7FF9CB6DF4EB],01
7FF9CA3EE0FC: 48 8B 05 45 DF 08 01     - mov rax,[7FF9CB47C048]
7FF9CA3EE103: 48 89 9C 24 90 00 00 00  - mov [rsp+00000090],rbx
7FF9CA3EE10B: 48 89 B4 24 98 00 00 00  - mov [rsp+00000098],rsi
7FF9CA3EE113: 0F 29 74 24 70           - movaps [rsp+70],xmm6
7FF9CA3EE118: 48 8B 88 B8 00 00 00     - mov rcx,[rax+000000B8]
7FF9CA3EE11F: 48 8B 01                 - mov rax,[rcx]
7FF9CA3EE122: 48 85 C0                 - test rax,rax
7FF9CA3EE125: 0F 84 BD 01 00 00        - je 7FF9CA3EE2E8
7FF9CA3EE12B: 48 8B 8F 90 00 00 00     - mov rcx,[rdi+00000090]
// ---------- INJECTING HERE ----------
7FF9CA3EE132: F3 0F 10 B0 28 02 00 00  - movss xmm6,[rax+00000228]
// ---------- DONE INJECTING  ----------
7FF9CA3EE13A: 48 85 C9                 - test rcx,rcx
7FF9CA3EE13D: 0F 84 A5 01 00 00        - je 7FF9CA3EE2E8
7FF9CA3EE143: 45 33 C0                 - xor r8d,r8d
7FF9CA3EE146: 33 D2                    - xor edx,edx
7FF9CA3EE148: E8 63 FB 98 FE           - call 7FF9C8D7DCB0
7FF9CA3EE14D: 48 8B B7 90 00 00 00     - mov rsi,[rdi+00000090]
7FF9CA3EE154: 0F 28 C6                 - movaps xmm0,xmm6
7FF9CA3EE157: F3 0F 5E 05 99 29 D5 00  - divss xmm0,[7FF9CB140AF8]
7FF9CA3EE15F: E8 34 43 64 FD           - call 7FF9C7A32498
7FF9CA3EE164: 48 8B 0D 6D DC 06 01     - mov rcx,[7FF9CB45BDD8]
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>66</ID>
          <Description>"Seconds"</Description>
          <LastState Value="1802" RealAddress="1BDF43C66A8"/>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>[_gameplaybase]+228</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>67</ID>
      <Description>"-----"</Description>
      <LastState Value="" RealAddress="00000000"/>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols>
    <SymbolEntry>
      <Name>_charactercontroller</Name>
      <Address>1BCC0390040</Address>
    </SymbolEntry>
  </UserdefinedSymbols>
  <DisassemblerComments>
    <DisassemblerComment>
      <Address>"pmain.dll"+7297F</Address>
      <Comment>------------------1</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"pmain.dll"+72991</Address>
      <Comment>------------------2</Comment>
    </DisassemblerComment>
  </DisassemblerComments>
</CheatTable>
