<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="51">
  <CheatEntries>
    <CheatEntry>
      <ID>0</ID>
      <Description>"enable"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
if syntaxcheck then return end

if LaunchMonoDataCollector() == 0 then
  showMessage("Failed to initialize Mono features.")
  return
end

showMessage("Mono features activated!")
[DISABLE]
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>1</ID>
          <Description>"infinite weapon reward rerolls (once acquired)"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,"VampireSurvivors.UI.LevelUpPage.Reroll"+0x153)
define(bytes,F3 0F 5C 05 21 CD D1 01)

[ENABLE]

assert(address,bytes)
alloc(newmem,$1000,"VampireSurvivors.UI.LevelUpPage.Reroll"+0x153)

label(code)
label(return)

newmem:

code:
  jmp return

address:
  jmp newmem
  nop 3
return:

[DISABLE]

address:
  db bytes

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+6CF37B3

GameAssembly.dll+6CF3786: 48 85 C0                 - test rax,rax
GameAssembly.dll+6CF3789: 0F 84 0A 02 00 00        - je GameAssembly.dll+6CF3999
GameAssembly.dll+6CF378F: 48 89 05 0A 59 CA 02     - mov [GameAssembly.dll+99990A0],rax
GameAssembly.dll+6CF3796: FF D0                    - call rax
GameAssembly.dll+6CF3798: 0F 2F 83 C8 00 00 00     - comiss xmm0,[rbx+000000C8]
GameAssembly.dll+6CF379F: 72 62                    - jb GameAssembly.dll+6CF3803
GameAssembly.dll+6CF37A1: 48 8B 53 70              - mov rdx,[rbx+70]
GameAssembly.dll+6CF37A5: 48 85 D2                 - test rdx,rdx
GameAssembly.dll+6CF37A8: 0F 84 02 02 00 00        - je GameAssembly.dll+6CF39B0
GameAssembly.dll+6CF37AE: F3 0F 10 42 10           - movss xmm0,[rdx+10]
// ---------- INJECTING HERE ----------
GameAssembly.dll+6CF37B3: F3 0F 5C 05 21 CD D1 01  - subss xmm0,[GameAssembly.dll+8A104DC]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+6CF37BB: 66 0F 7E C0              - movd eax,xmm0
GameAssembly.dll+6CF37BF: 0F BA F0 1F              - btr eax,1F
GameAssembly.dll+6CF37C3: 3D 00 00 80 7F           - cmp eax,7F800000
GameAssembly.dll+6CF37C8: 74 24                    - je GameAssembly.dll+6CF37EE
GameAssembly.dll+6CF37CA: 66 0F 7E C0              - movd eax,xmm0
GameAssembly.dll+6CF37CE: 0F BA F0 1F              - btr eax,1F
GameAssembly.dll+6CF37D2: 3D 00 00 80 7F           - cmp eax,7F800000
GameAssembly.dll+6CF37D7: 77 15                    - ja GameAssembly.dll+6CF37EE
GameAssembly.dll+6CF37D9: 0F 2E 05 70 E0 D1 01     - ucomiss xmm0,[GameAssembly.dll+8A11850]
GameAssembly.dll+6CF37E0: 7A 14                    - jp GameAssembly.dll+6CF37F6
}

</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>2</ID>
          <Description>"Make Magnet Powerup Full Map"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,VampireSurvivors.Objects.Pickups.Pickup.InternalUpdate)
define(bytes,40 53 48 83 EC 40)

[ENABLE]

assert(address,bytes)
alloc(newmem,$1000,VampireSurvivors.Objects.Pickups.Pickup.InternalUpdate)

label(code)
label(return)

newmem:
mov [rcx+108],1
code:
  push rbx
  sub rsp,40
  jmp return

address:
  jmp newmem
  nop
return:

aobscanmodule(magnetradius,GameAssembly.dll,F3 0F 58 40 10 33 D2 E8 25 ED DA FF)
alloc(newmem2,$1000,magnetradius)
label(code2 return2)

newmem2:
mov [rax+10],(float)99999999
code2:
  addss xmm0,[rax+10]
  jmp return2

magnetradius:
  jmp newmem2
return2:
registersymbol(magnetradius)

[DISABLE]

address:
 db bytes

magnetradius:
  db F3 0F 58 40 10

//GameAssembly.dll+6DB0D57 - 0F84 A7020000         - je GameAssembly.dll+6DB1004
//GameAssembly.dll+6DB0D5D - 48 8B 41 70           - mov rax,[rcx+70]
//GameAssembly.dll+6DB0D61 - 48 85 C0              - test rax,rax
//GameAssembly.dll+6DB0D64 - 0F84 95020000         - je GameAssembly.dll+6DB0FFF
//GameAssembly.dll+6DB0D6A - F3 0F10 40 14         - movss xmm0,[rax+14]
//magnetradius             - F3 0F58 40 10         - addss xmm0,[rax+10]
//GameAssembly.dll+6DB0D74 - 33 D2                 - xor edx,edx
//GameAssembly.dll+6DB0D76 - E8 25EDDAFF           - call VampireSurvivors.Framework.NumberTypes.EggFloat.Cap
//GameAssembly.dll+6DB0D7B - 0F28 F8               - movaps xmm7,xmm0
//GameAssembly.dll+6DB0D7E - 48 8B 05 43898102     - mov rax,[GameAssembly.dll+95C96C8]
//GameAssembly.dll+6DB0D85 - 48 89 47 20           - mov [rdi+20],rax
//GameAssembly.dll+6DB0D89 - 48 8D 4F 20           - lea rcx,[rdi+20]
//GameAssembly.dll+6DB0D8D - E8 CE60D0F9           - call GameAssembly.dll+AB6E60
//GameAssembly.dll+6DB0D92 - 48 8B 4E 70           - mov rcx,[rsi+70]
//GameAssembly.dll+6DB0D96 - 48 85 C9              - test rcx,rcx
//GameAssembly.dll+6DB0D99 - 0F84 79020000         - je GameAssembly.dll+6DB1018
//GameAssembly.dll+6DB0D9F - 48 8B 05 FA657302     - mov rax,[GameAssembly.dll+94E73A0]



</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>4</ID>
          <Description>"coin multiplier"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

// GameAssembly.dll+6E43968 - 48 8B 92 00050000     - mov rdx,[rdx+00000500]
// GameAssembly.dll+6E4396F - FF D0                 - call rax
// GameAssembly.dll+6E43971 - F3 0F59 F8            - mulss xmm7,xmm0  &lt;&lt; inject here.  replace xmm0 with multiplayer var
// GameAssembly.dll+6E43975 - 33 D2                 - xor edx,edx
// GameAssembly.dll+6E43977 - 48 8B CF              - mov rcx,rdi
// GameAssembly.dll+6E4397A - E8 4118FFFF           - call VampireSurvivors.Objects.PlayerOptions.get_Config
// GameAssembly.dll+6E4397F - 33 D2                 - xor edx,edx
aobscanmodule(coin_multiplier,GameAssembly.dll,f3 0f 59 f8 33 d2 48 8b cf)
alloc(newmem,$1000,coin_multiplier)
registersymbol(cMulti)
label(code return cMulti)

newmem:

code:
  mulss xmm7,[cMulti] //cMulti is float
  xor edx, edx
  jmp return

cMulti:
dd (float)5

coin_multiplier:
  jmp newmem
  nop
return:
registersymbol(coin_multiplier)

[DISABLE]

coin_multiplier:
  db f3 0f 59 f8 33 d2 48 8b cf

unregistersymbol(*)
dealloc(*)


</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>5</ID>
              <Description>"coin multiplier amount"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>cMulti</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>3</ID>
          <Description>"experience Multiplier"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
aobscanmodule(exp_multiplier,GameAssembly.dll,F3 0F 11 B7 3c 02 00 00)
alloc(newmem,$1000,exp_multiplier)
registersymbol(xpMulti)
label(code return xpMulti)
newmem:

code:
  mulss xmm6,[xpMulti]
  movss [rdi+0000023c],xmm6
  jmp return

xpMulti:
dd (float)1.05

exp_multiplier:
  jmp newmem
  nop 3
return:
registersymbol(exp_multiplier)

[DISABLE]

exp_multiplier:
  db F3 0F 11 B7 3c 02 00 00

unregistersymbol(*)
dealloc(*)


</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>6</ID>
              <Description>"exp multiplyer amount"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>xpMulti</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>7</ID>
          <Description>"lvl up item edit w/ candybox"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,VampireSurvivors.UI.LevelUpPage.SpawnWeapon)
define(bytes,44 89 4C 24 20)

[ENABLE]

assert(address,bytes)
alloc(newmem,$1000,VampireSurvivors.UI.LevelUpPage.SpawnWeapon)
registersymbol(rewardItem)
label(rewardItem)

label(code)
label(return)

newmem:
  mov r8, [rewardItem]

code:
  mov [rsp+20],r9d
  jmp return

rewardItem:
  dd 0x58

address:
  jmp newmem
return:

[DISABLE]

address:
  db bytes
  // mov [rsp+20],r9d

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: VampireSurvivors.UI.LevelUpPage.SpawnWeapon

GameAssembly.dll+6D041EE: 5F              - pop rdi
GameAssembly.dll+6D041EF: E9 BC 27 D9 F9  - jmp GameAssembly.dll+A969B0
GameAssembly.dll+6D041F4: E8 57 33 DB F9  - call GameAssembly.il2cpp_value_box+1C0
GameAssembly.dll+6D041F9: CC              - int 3 
GameAssembly.dll+6D041FA: CC              - int 3 
GameAssembly.dll+6D041FB: CC              - int 3 
GameAssembly.dll+6D041FC: CC              - int 3 
GameAssembly.dll+6D041FD: CC              - int 3 
GameAssembly.dll+6D041FE: CC              - int 3 
GameAssembly.dll+6D041FF: CC              - int 3 
// ---------- INJECTING HERE ----------
VampireSurvivors.UI.LevelUpPage.SpawnWeapon: 44 89 4C 24 20  - mov [rsp+20],r9d
// ---------- DONE INJECTING  ----------
GameAssembly.dll+6D04205: 44 89 44 24 18  - mov [rsp+18],r8d
GameAssembly.dll+6D0420A: 48 89 54 24 10  - mov [rsp+10],rdx
GameAssembly.dll+6D0420F: 48 89 4C 24 08  - mov [rsp+08],rcx
GameAssembly.dll+6D04214: 53              - push rbx
GameAssembly.dll+6D04215: 56              - push rsi
GameAssembly.dll+6D04216: 57              - push rdi
GameAssembly.dll+6D04217: 41 54           - push r12
GameAssembly.dll+6D04219: 41 55           - push r13
GameAssembly.dll+6D0421B: 41 56           - push r14
GameAssembly.dll+6D0421D: 41 57           - push r15
}
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>97</Key>
              </Keys>
              <ID>0</ID>
              <ActivateSound>Activate</ActivateSound>
              <DeactivateSound>Deactivate</DeactivateSound>
            </Hotkey>
          </Hotkeys>
          <CheatEntries>
            <CheatEntry>
              <ID>8</ID>
              <Description>"No description"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>rewardItem</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
