<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <CheatEntries>
    <CheatEntry>
      <ID>114982</ID>
      <Description>"&lt;=== Attach to process  and activate mono"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <Color>0000FF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
if syntaxcheck then return end
  if(getCEVersion() &lt; 7.4) then
    ShowMessage('Warning! CE version should be 7.4 or above')
  end

OpenProcess("LWIW.exe")
  if(process == nil) then
    ShowMessage('The process is NOT found!')
  end

LaunchMonoDataCollector()
{$asm}
// LuaCall(function cycleFullCompact(sender,force) local state = not(compactmenuitem.Caption == 'Compact View Mode'); if force~=nil then state = not force end; compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode'; getMainForm().Splitter1.Visible = state; getMainForm().Panel4.Visible    = state; getMainForm().Panel5.Visible    = state; end; function addCompactMenu() if compactmenualreadyexists then return end; local parent = getMainForm().Menu.Items; compactmenuitem = createMenuItem(parent); parent.add(compactmenuitem); compactmenuitem.Caption = 'Compact View Mode'; compactmenuitem.OnClick = cycleFullCompact; compactmenualreadyexists = 'yes'; end; addCompactMenu(); cycleFullCompact(nil,true))



[DISABLE]
 
 
// LuaCall(cycleFullCompact(nil,false))
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>12</ID>
          <Description>"F1: Get 10$ every time you hit F1"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
{$lua}
function my_mono_invoke_method(domain, method, args)  --make it easier to call
  local c=mono_method_getClass(method)
  local instance = mono_class_findInstancesOfClassListOnly(domain,c)
  instance = instance[1]

  local params = mono_method_get_parameters(method)
  if #args ~= #params.parameters then
    print('ERROR:my_mono_invoke_method : wrong length of args')
    return
  end

  local i
  local args_t={}
  for i=1, #params.parameters do
    args_t[i] = {}
    args_t[i].type = monoTypeToVartypeLookup[params.parameters[i].type]
	args_t[i].value = args[i]
  end

  if method==nil or method==0 then
    print('ERROR:my_mono_invoke_method : method==0')
	return
  end

  if instance==nil or instance==0 then
    print('ERROR:my_mono_invoke_method : instance==0')
	return
  end

  local r=mono_invoke_method(domain, method, instance, args_t)
  return r
end

local methodId = mono_findMethod('', 'ScarlettCheatController', 'AddMoney')  --find target method
my_mono_invoke_method('',methodId,'')

memrec.OnActivate = function(memrec, preState, curState)
  if (not preState) and curState then
    local t = createTimer()
    t.Interval = 100
    t.OnTimer = function(t)
      t.destroy() -- destroy timer so it doesn't run again
      memrec.Active = false -- disable this script
    end
  end
  return true -- don't interrupt, not sure how it'd be handled...
end

{$asm}
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>112</Key>
              </Keys>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>0</ID>
          <Description>"F2: Unlimited Stamina"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,SunnySideUp.EntityStamina:ConsumeStamina)
define(bytes,55)

[ENABLE]
assert(address,bytes)

address:
  ret

[DISABLE]

address:
  db bytes
  // push rbp

{
// ORIGINAL CODE - INJECTION POINT: SunnySideUp.EntityStamina:ConsumeStamina

27F04B5A389: 00 B6 AF CF 7D 02     - add [rsi+027DCFAF],dh
27F04B5A38F: 00 00                 - add [rax],al
27F04B5A391: 00 00                 - add [rax],al
27F04B5A393: 00 00                 - add [rax],al
27F04B5A395: 00 00                 - add [rax],al
27F04B5A397: 00 00                 - add [rax],al
27F04B5A399: 00 00                 - add [rax],al
27F04B5A39B: 00 00                 - add [rax],al
27F04B5A39D: 00 00                 - add [rax],al
27F04B5A39F: 00                    - db 00 
// ---------- INJECTING HERE ----------
SunnySideUp.EntityStamina:ConsumeStamina: 55                    - push rbp
// ---------- DONE INJECTING  ----------
SunnySideUp.EntityStamina:ConsumeStamina+1: 48 8B EC              - mov rbp,rsp
SunnySideUp.EntityStamina:ConsumeStamina+4: 48 81 EC A0 00 00 00  - sub rsp,000000A0
SunnySideUp.EntityStamina:ConsumeStamina+b: 48 89 75 F8           - mov [rbp-08],rsi
SunnySideUp.EntityStamina:ConsumeStamina+f: 48 8B F1              - mov rsi,rcx
SunnySideUp.EntityStamina:ConsumeStamina+12: F3 0F 11 4D A8        - movss [rbp-58],xmm1
SunnySideUp.EntityStamina:ConsumeStamina+17: F3 0F 10 45 A8        - movss xmm0,[rbp-58]
SunnySideUp.EntityStamina:ConsumeStamina+1c: F3 0F 5A C0           - cvtss2sd xmm0,xmm0
SunnySideUp.EntityStamina:ConsumeStamina+20: 48 8B CE              - mov rcx,rsi
SunnySideUp.EntityStamina:ConsumeStamina+23: F2 0F 10 C8           - movsd xmm1,xmm0
SunnySideUp.EntityStamina:ConsumeStamina+27: F2 0F 5A C9           - cvtsd2ss xmm1,xmm1
}
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>113</Key>
              </Keys>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>114983</ID>
          <Description>"F3: Freeze Time"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,SunnySideUp.Time.TimeIncreaser:AddMinutesByDelay)
define(bytes,55)

[ENABLE]
address:
  ret

[DISABLE]

address:
  db bytes
  // push rbp

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: SunnySideUp.Time.TimeIncreaser:AddMinutesByDelay

2761A3DB439: 41 FF D3                 - call r11
2761A3DB43C: 08 70 B1                 - or [rax-4F],dh
2761A3DB43F: 83 66 75 02              - and dword ptr [rsi+75],02
2761A3DB443: 00 00                    - add [rax],al
2761A3DB445: 00 00                    - add [rax],al
2761A3DB447: 00 00                    - add [rax],al
2761A3DB449: 00 00                    - add [rax],al
2761A3DB44B: 00 00                    - add [rax],al
2761A3DB44D: 00 00                    - add [rax],al
2761A3DB44F: 00                       - db 00 
// ---------- INJECTING HERE ----------
SunnySideUp.Time.TimeIncreaser:AddMinutesByDelay: 55                       - push rbp
// ---------- DONE INJECTING  ----------
SunnySideUp.Time.TimeIncreaser:AddMinutesByDelay+1: 48 8B EC                 - mov rbp,rsp
SunnySideUp.Time.TimeIncreaser:AddMinutesByDelay+4: 48 81 EC 80 00 00 00     - sub rsp,00000080
SunnySideUp.Time.TimeIncreaser:AddMinutesByDelay+b: 48 89 75 F8              - mov [rbp-08],rsi
SunnySideUp.Time.TimeIncreaser:AddMinutesByDelay+f: 48 8B F1                 - mov rsi,rcx
SunnySideUp.Time.TimeIncreaser:AddMinutesByDelay+12: 48 C7 45 E8 00 00 00 00  - mov qword ptr [rbp-18],00000000
SunnySideUp.Time.TimeIncreaser:AddMinutesByDelay+1a: F3 0F 10 46 24           - movss xmm0,[rsi+24]
SunnySideUp.Time.TimeIncreaser:AddMinutesByDelay+1f: F3 0F 5A C0              - cvtss2sd xmm0,xmm0
SunnySideUp.Time.TimeIncreaser:AddMinutesByDelay+23: F2 0F 11 45 E0           - movsd [rbp-20],xmm0
SunnySideUp.Time.TimeIncreaser:AddMinutesByDelay+28: 48 8D 64 24 00           - lea rsp,[rsp+00]
SunnySideUp.Time.TimeIncreaser:AddMinutesByDelay+2d: 90                       - nop 
}
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>114</Key>
              </Keys>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>114995</ID>
          <Description>"F4: don't remove used items from inventory - only use for crafting/dealing!"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,Opsive.UltimateInventorySystem.Core.InventoryCollections.FixedSizeItemCollection:RemoveInternal)
define(bytes,55)

[ENABLE]
address:
  ret

[DISABLE]

address:
  db bytes

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Opsive.UltimateInventorySystem.Core.InventoryCollections.FixedSizeItemCollection:RemoveInternal

228BFC847F9: 04 02                 - add al,02
228BFC847FB: 05 04 03 01 50        - add eax,50010304
228BFC84800: 00 00                 - add [rax],al
228BFC84802: 00 00                 - add [rax],al
228BFC84804: 00 00                 - add [rax],al
228BFC84806: 00 00                 - add [rax],al
228BFC84808: 00 00                 - add [rax],al
228BFC8480A: 00 00                 - add [rax],al
228BFC8480C: 00 00                 - add [rax],al
228BFC8480E: 00 00                 - add [rax],al
// ---------- INJECTING HERE ----------
Opsive.UltimateInventorySystem.Core.InventoryCollections.FixedSizeItemCollection:RemoveInternal: 55                    - push rbp
// ---------- DONE INJECTING  ----------
Opsive.UltimateInventorySystem.Core.InventoryCollections.FixedSizeItemCollection:RemoveInternal+1: 48 8B EC              - mov rbp,rsp
Opsive.UltimateInventorySystem.Core.InventoryCollections.FixedSizeItemCollection:RemoveInternal+4: 48 81 EC 60 02 00 00  - sub rsp,00000260
Opsive.UltimateInventorySystem.Core.InventoryCollections.FixedSizeItemCollection:RemoveInternal+b: 48 89 5D C8           - mov [rbp-38],rbx
Opsive.UltimateInventorySystem.Core.InventoryCollections.FixedSizeItemCollection:RemoveInternal+f: 48 89 75 D0           - mov [rbp-30],rsi
Opsive.UltimateInventorySystem.Core.InventoryCollections.FixedSizeItemCollection:RemoveInternal+13: 48 89 7D D8           - mov [rbp-28],rdi
Opsive.UltimateInventorySystem.Core.InventoryCollections.FixedSizeItemCollection:RemoveInternal+17: 4C 89 65 E0           - mov [rbp-20],r12
Opsive.UltimateInventorySystem.Core.InventoryCollections.FixedSizeItemCollection:RemoveInternal+1b: 4C 89 6D E8           - mov [rbp-18],r13
Opsive.UltimateInventorySystem.Core.InventoryCollections.FixedSizeItemCollection:RemoveInternal+1f: 4C 89 75 F0           - mov [rbp-10],r14
Opsive.UltimateInventorySystem.Core.InventoryCollections.FixedSizeItemCollection:RemoveInternal+23: 4C 89 7D F8           - mov [rbp-08],r15
Opsive.UltimateInventorySystem.Core.InventoryCollections.FixedSizeItemCollection:RemoveInternal+27: 48 89 55 C0           - mov [rbp-40],rdx
}
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>115</Key>
              </Keys>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
          <CheatEntries>
            <CheatEntry>
              <ID>114997</ID>
              <Description>"deactivate before using items you WANT to get rid of like the weights in the puzzles"</Description>
              <Color>0000FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>114998</ID>
              <Description>"can be used to duplicate items by "moving" them into the cabinet in the witches house :)"</Description>
              <Color>008000</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>114989</ID>
          <Description>"F5: unlimited duration for broomstick"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,SunnySideUp.Broomstick:ConsumeDurability)
define(bytes,55)

[ENABLE]
address:
  ret

[DISABLE]

address:
  db bytes
  // push rbp

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: SunnySideUp.Broomstick:ConsumeDurability

228BE8AE459: 04 02           - add al,02
228BE8AE45B: 05 04 03 01 50  - add eax,50010304
228BE8AE460: 00 00           - add [rax],al
228BE8AE462: 00 00           - add [rax],al
228BE8AE464: 00 00           - add [rax],al
228BE8AE466: 00 00           - add [rax],al
228BE8AE468: 00 00           - add [rax],al
228BE8AE46A: 00 00           - add [rax],al
228BE8AE46C: 00 00           - add [rax],al
228BE8AE46E: 00 00           - add [rax],al
// ---------- INJECTING HERE ----------
SunnySideUp.Broomstick:ConsumeDurability: 55              - push rbp
// ---------- DONE INJECTING  ----------
SunnySideUp.Broomstick:ConsumeDurability+1: 48 8B EC        - mov rbp,rsp
SunnySideUp.Broomstick:ConsumeDurability+4: 48 83 EC 50     - sub rsp,50
SunnySideUp.Broomstick:ConsumeDurability+8: 48 89 75 F0     - mov [rbp-10],rsi
SunnySideUp.Broomstick:ConsumeDurability+c: 48 89 7D F8     - mov [rbp-08],rdi
SunnySideUp.Broomstick:ConsumeDurability+10: 48 8B F1        - mov rsi,rcx
SunnySideUp.Broomstick:ConsumeDurability+13: F3 0F 11 4D E0  - movss [rbp-20],xmm1
SunnySideUp.Broomstick:ConsumeDurability+18: 48 8B 46 38     - mov rax,[rsi+38]
SunnySideUp.Broomstick:ConsumeDurability+1c: 48 89 45 D8     - mov [rbp-28],rax
SunnySideUp.Broomstick:ConsumeDurability+20: 48 8B 46 48     - mov rax,[rsi+48]
SunnySideUp.Broomstick:ConsumeDurability+24: 48 8B C8        - mov rcx,rax
}
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>116</Key>
              </Keys>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>114988</ID>
          <Description>"3000 durability for everything that can loose durability - maybe a good idea or not."</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,SunnySideUp.Durability:set_CurrentValue+13)
define(bytes,F3 0F 11 4D E8)

[ENABLE]

assert(address,bytes)
alloc(newmem,$1000,22878454883)

label(code)
label(return)

newmem:
  push eax
  mov eax,(float)3000
  mov [rbp-18],eax
  pop eax
code:
  movss [rbp-18],xmm1
  jmp return

address:
  jmp newmem
return:

[DISABLE]

address:
  db bytes
  // movss [rbp-18],xmm1

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: SunnySideUp.Durability:set_CurrentValue+13

22878454868: 00 00           - add [rax],al
2287845486A: 00 00           - add [rax],al
2287845486C: 00 00           - add [rax],al
2287845486E: 00 00           - add [rax],al
SunnySideUp.Durability:set_CurrentValue: 55              - push rbp
SunnySideUp.Durability:set_CurrentValue+1: 48 8B EC        - mov rbp,rsp
SunnySideUp.Durability:set_CurrentValue+4: 48 83 EC 40     - sub rsp,40
SunnySideUp.Durability:set_CurrentValue+8: 48 89 75 F0     - mov [rbp-10],rsi
SunnySideUp.Durability:set_CurrentValue+c: 48 89 7D F8     - mov [rbp-08],rdi
SunnySideUp.Durability:set_CurrentValue+10: 48 8B F1        - mov rsi,rcx
// ---------- INJECTING HERE ----------
SunnySideUp.Durability:set_CurrentValue+13: F3 0F 11 4D E8  - movss [rbp-18],xmm1
// ---------- DONE INJECTING  ----------
SunnySideUp.Durability:set_CurrentValue+18: F3 0F 10 45 E8  - movss xmm0,[rbp-18]
SunnySideUp.Durability:set_CurrentValue+1d: F3 0F 5A C0     - cvtss2sd xmm0,xmm0
SunnySideUp.Durability:set_CurrentValue+21: F2 0F 5A E8     - cvtsd2ss xmm5,xmm0
SunnySideUp.Durability:set_CurrentValue+25: F3 0F 11 6E 4C  - movss [rsi+4C],xmm5
SunnySideUp.Durability:set_CurrentValue+2a: 48 8B 46 28     - mov rax,[rsi+28]
SunnySideUp.Durability:set_CurrentValue+2e: 48 8B C8        - mov rcx,rax
SunnySideUp.Durability:set_CurrentValue+31: 48 8B F9        - mov rdi,rcx
SunnySideUp.Durability:set_CurrentValue+34: 48 85 C0        - test rax,rax
SunnySideUp.Durability:set_CurrentValue+37: 75 02           - jne SunnySideUp.Durability:set_CurrentValue+3b
SunnySideUp.Durability:set_CurrentValue+39: EB 28           - jmp SunnySideUp.Durability:set_CurrentValue+63
}
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>15</ID>
      <Description>"Debug (does not do what I want it to do but at least I had an idea)"</Description>
      <Options moHideChildren="1"/>
      <Color>C0C0C0</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>11</ID>
          <Description>"enable cheat"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,SunnySideUp.Cheat.Command.SpeedCommands:Update+1e)
define(bytes,0F 84 5F 00 00 00)

[ENABLE]
address:
  nop 6
return:

[DISABLE]

address:
  db bytes
  // je SunnySideUp.Cheat.Command.SpeedCommands:Update+83

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: SunnySideUp.Cheat.Command.SpeedCommands:Update+1e

27E7B689D7D: 00 00                          - add [rax],al
27E7B689D7F: 00 55 48                       - add [rbp+48],dl
SunnySideUp.Cheat.Command.SpeedCommands:Update+2: 8B EC                          - mov ebp,esp
SunnySideUp.Cheat.Command.SpeedCommands:Update+4: 48 83 EC 30                    - sub rsp,30
SunnySideUp.Cheat.Command.SpeedCommands:Update+8: 48 89 75 F8                    - mov [rbp-08],rsi
SunnySideUp.Cheat.Command.SpeedCommands:Update+c: 48 8B F1                       - mov rsi,rcx
SunnySideUp.Cheat.Command.SpeedCommands:Update+f: 48 B8 80 29 C7 66 7C 02 00 00  - mov rax,0000027C66C72980
SunnySideUp.Cheat.Command.SpeedCommands:Update+19: 0F B6 00                       - movzx eax,byte ptr [rax]
SunnySideUp.Cheat.Command.SpeedCommands:Update+1c: 85 C0                          - test eax,eax
// ---------- INJECTING HERE ----------
SunnySideUp.Cheat.Command.SpeedCommands:Update+1e: 0F 84 5F 00 00 00              - je SunnySideUp.Cheat.Command.SpeedCommands:Update+83
// ---------- DONE INJECTING  ----------
SunnySideUp.Cheat.Command.SpeedCommands:Update+24: B9 62 00 00 00                 - mov ecx,00000062
SunnySideUp.Cheat.Command.SpeedCommands:Update+29: 48 8D 64 24 00                 - lea rsp,[rsp+00]
SunnySideUp.Cheat.Command.SpeedCommands:Update+2e: 49 BB 4B 22 E0 79 7E 02 00 00  - mov r11,0000027E79E0224B
SunnySideUp.Cheat.Command.SpeedCommands:Update+38: 41 FF D3                       - call r11
SunnySideUp.Cheat.Command.SpeedCommands:Update+3b: 85 C0                          - test eax,eax
SunnySideUp.Cheat.Command.SpeedCommands:Update+3d: 74 16                          - je SunnySideUp.Cheat.Command.SpeedCommands:Update+55
SunnySideUp.Cheat.Command.SpeedCommands:Update+3f: 48 8B CE                       - mov rcx,rsi
SunnySideUp.Cheat.Command.SpeedCommands:Update+42: 48 8D 6D 00                    - lea rbp,[rbp+00]
SunnySideUp.Cheat.Command.SpeedCommands:Update+46: 49 BB 83 9E 68 7B 7E 02 00 00  - mov r11,0000027E7B689E83
SunnySideUp.Cheat.Command.SpeedCommands:Update+50: 41 FF D3                       - call r11
SunnySideUp.Cheat.Command.SpeedCommands:Update+53: EB 2E                          - jmp SunnySideUp.Cheat.Command.SpeedCommands:Update+83
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>10</ID>
          <Description>"always 20 items per Stack"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+c2)
define(bytes,49 63 47 20 33 D2)

[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+c2)

label(code)
label(return)

newmem:
  mov eax,#-4
  mov [r15+20],eax
code:
  movsxd  rax,dword ptr [r15+20]
  xor edx,edx
  jmp return

address:
  jmp newmem
  nop
return:

[DISABLE]

address:
  db bytes
  // movsxd  rax,dword ptr [r15+20]
  // xor edx,edx

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+c2

SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+92: 48 8B C8                       - mov rcx,rax
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+95: 48 8B 00                       - mov rax,[rax]
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+98: 49 BA 40 43 7D 83 7E 02 00 00  - mov r10,0000027E837D4340
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+a2: FF 90 78 FF FF FF              - call qword ptr [rax-00000088]
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+a8: 4C 8B F8                       - mov r15,rax
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+ab: 48 63 46 5C                    - movsxd  rax,dword ptr [rsi+5C]
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+af: 48 89 85 70 FE FF FF           - mov [rbp-00000190],rax
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+b6: 41 83 3F 00                    - cmp dword ptr [r15],00
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+ba: 49 8B 4F 10                    - mov rcx,[r15+10]
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+be: 41 83 3F 00                    - cmp dword ptr [r15],00
// ---------- INJECTING HERE ----------
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+c2: 49 63 47 20                    - movsxd  rax,dword ptr [r15+20]
// ---------- DONE INJECTING  ----------
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+c6: 33 D2                          - xor edx,edx
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+c8: 48 89 95 80 FE FF FF           - mov [rbp-00000180],rdx
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+cf: 48 89 95 88 FE FF FF           - mov [rbp-00000178],rdx
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+d6: 48 89 8D 80 FE FF FF           - mov [rbp-00000180],rcx
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+dd: 89 85 88 FE FF FF              - mov [rbp-00000178],eax
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+e3: 48 8B 85 80 FE FF FF           - mov rax,[rbp-00000180]
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+ea: 48 89 85 90 FE FF FF           - mov [rbp-00000170],rax
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+f1: 48 8B 85 88 FE FF FF           - mov rax,[rbp-00000178]
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+f8: 48 89 85 98 FE FF FF           - mov [rbp-00000168],rax
SunnySideUp.MatrixInventoryMediation+&lt;GetSequentially&gt;d__3:MoveNext+ff: 48 8B 85 90 FE FF FF           - mov rax,[rbp-00000170]
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>14</ID>
          <Description>"give Item"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
{$lua}
function my_mono_invoke_method(domain, method, args)  --make it easier to call
  local c=mono_method_getClass(method)
  local instance = mono_class_findInstancesOfClassListOnly(domain,c)
  instance = instance[1]

  local params = mono_method_get_parameters(method)
  if #args ~= #params.parameters then
    print('ERROR:my_mono_invoke_method : wrong length of args')
    return
  end

  local i
  local args_t={}
  for i=1, #params.parameters do
    args_t[i] = {}
    args_t[i].type = monoTypeToVartypeLookup[params.parameters[i].type]
	args_t[i].value = args[i]
  end

  if method==nil or method==0 then
    print('ERROR:my_mono_invoke_method : method==0')
	return
  end

  if instance==nil or instance==0 then
    print('ERROR:my_mono_invoke_method : instance==0')
	return
  end

  local r=mono_invoke_method(domain, method, instance, args_t)
  return r
end

memrec.OnActivate = function(memrec, preState, curState)
  if (not preState) and curState then
    local t = createTimer()
    t.Interval = 100
    t.OnTimer = function(t)
      t.destroy() -- destroy timer so it doesn't run again
      memrec.Active = false -- disable this script
    end
  end
  return true -- don't interrupt, not sure how it'd be handled...
end

local methodId = mono_findMethod('', 'ItemCommands', 'GiveItem')  --find target method
--my_mono_invoke_method('',methodId,'Witchflower Extract')


{$asm}
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys/>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>6</ID>
          <Description>"Get Inventory Data (press 'S' to update)"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,SunnySideUp.InventoryUIController:get_IsOpened+12)
define(bytes,83 39 00 0F B6 80 B8 00 00 00)

[ENABLE]

assert(address,bytes)
alloc(newmem,$50,SunnySideUp.InventoryUIController:get_IsOpened+12)
//alloc(inventory,8)

label(code)
label(return)
label(inventory)

newmem:
  mov [inventory],rcx
code:
  cmp dword ptr [rcx],00
  movzx eax,byte ptr [rax+000000B8]
  jmp return

inventory:
  dq 0

address:
  jmp newmem
  nop 5
return:
registersymbol(inventory)
[DISABLE]

address:
  db bytes
  // cmp dword ptr [rcx],00
  // movzx eax,byte ptr [rax+000000B8]

dealloc(*)
unregistersymbol(inventory)
{
// ORIGINAL CODE - INJECTION POINT: SunnySideUp.InventoryUIController:get_IsOpened+12

27F04CC5426: 00 00                 - add [rax],al
27F04CC5428: 00 00                 - add [rax],al
27F04CC542A: 00 00                 - add [rax],al
27F04CC542C: 00 00                 - add [rax],al
27F04CC542E: 00 00                 - add [rax],al
SunnySideUp.InventoryUIController:get_IsOpened: 48 83 EC 08           - sub rsp,08
SunnySideUp.InventoryUIController:get_IsOpened+4: 48 89 0C 24           - mov [rsp],rcx
SunnySideUp.InventoryUIController:get_IsOpened+8: 48 8B C1              - mov rax,rcx
SunnySideUp.InventoryUIController:get_IsOpened+b: 48 8B 40 20           - mov rax,[rax+20]
SunnySideUp.InventoryUIController:get_IsOpened+f: 48 8B C8              - mov rcx,rax
// ---------- INJECTING HERE ----------
SunnySideUp.InventoryUIController:get_IsOpened+12: 83 39 00              - cmp dword ptr [rcx],00
// ---------- DONE INJECTING  ----------
SunnySideUp.InventoryUIController:get_IsOpened+15: 0F B6 80 B8 00 00 00  - movzx eax,byte ptr [rax+000000B8]
SunnySideUp.InventoryUIController:get_IsOpened+1c: 48 83 C4 08           - add rsp,08
SunnySideUp.InventoryUIController:get_IsOpened+20: C3                    - ret 
27F04CC5451: 00 00                 - add [rax],al
27F04CC5453: 00 00                 - add [rax],al
27F04CC5455: 00 00                 - add [rax],al
27F04CC5457: 00 01                 - add [rcx],al
27F04CC5459: 04 01                 - add al,01
27F04CC545B: 00 04 02              - add [rdx+rax],al
27F04CC545E: 00 00                 - add [rax],al
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>7</ID>
              <Description>"InventoryUI"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <GroupHeader>1</GroupHeader>
              <Address>inventory</Address>
              <Offsets>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>13</ID>
          <Description>"push game time 1h forward every time you hit F3"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
{$lua}
function my_mono_invoke_method(domain, method, args)  --make it easier to call
  local c=mono_method_getClass(method)
  local instance = mono_class_findInstancesOfClassListOnly(domain,c)
  instance = instance[1]

  local params = mono_method_get_parameters(method)
  if #args ~= #params.parameters then
    print('ERROR:my_mono_invoke_method : wrong length of args')
    return
  end

  local i
  local args_t={}
  for i=1, #params.parameters do
    args_t[i] = {}
    args_t[i].type = monoTypeToVartypeLookup[params.parameters[i].type]
	args_t[i].value = args[i]
  end

  if method==nil or method==0 then
    print('ERROR:my_mono_invoke_method : method==0')
	return
  end

  if instance==nil or instance==0 then
    print('ERROR:my_mono_invoke_method : instance==0')
	return
  end

  local r=mono_invoke_method(domain, method, instance, args_t)
  return r
end

local methodId = mono_findMethod('', 'ScarlettCheatController', 'AddHour')  --find target method
my_mono_invoke_method('',methodId,'')

memrec.OnActivate = function(memrec, preState, curState)
  if (not preState) and curState then
    local t = createTimer()
    t.Interval = 100
    t.OnTimer = function(t)
      t.destroy() -- destroy timer so it doesn't run again
      memrec.Active = false -- disable this script
    end
  end
  return true -- don't interrupt, not sure how it'd be handled...
end

{$asm}
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys/>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>114984</ID>
          <Description>"destroy all items in inventory"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
{$lua}
function my_mono_invoke_method(domain, method, args)  --make it easier to call
  -- print("Domain:" .. domain .. "\n Method:" .. method .. "\n args:" .. args)
  local c=mono_method_getClass(method)
  local instance = mono_class_findInstancesOfClassListOnly(domain,c)
  instance = instance[1]

  local params = mono_method_get_parameters(method)
  -- print("Parameters :" .. #params.parameters .. "\n" )
  if #args ~= #params.parameters then
    print('ERROR:my_mono_invoke_method : wrong length of args')
    return
  end

  local i
  local args_t={}
  for i=1, #params.parameters do
    args_t[i] = {}
    args_t[i].type = monoTypeToVartypeLookup[params.parameters[i].type]
	args_t[i].value = args[i]
  end

  if method==nil or method==0 then
    print('ERROR:my_mono_invoke_method : method==0')
	return
  end

  if instance==nil or instance==0 then
    print('ERROR:my_mono_invoke_method : instance==0')
	return
  end

  local r=mono_invoke_method(domain, method, instance, args_t)
  return r
end

local methodId = mono_findMethod('', 'ItemCollection', 'RemoveAll')  --find target method
my_mono_invoke_method('',methodId, '1')

{$asm}
 
[DISABLE]
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys/>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>114990</ID>
          <Description>"Instant Roasting"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,SunnySideUp.RoastIngredients:get_Time+b)
define(bytes,48 63 40 30 48 83 C4 08)

[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,SunnySideUp.RoastIngredients:get_Time+b)

label(code)
label(return)

newmem:
  mov rax,0
code:
  // movsxd  rax,dword ptr [rax+30]
  add rsp,08
  jmp return

address:
  jmp newmem
  nop 3
return:

[DISABLE]

address:
  db bytes
  // movsxd  rax,dword ptr [rax+30]
  // add rsp,08

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: SunnySideUp.RoastIngredients:get_Time+b

228BFC6E5F2: 00 00        - add [rax],al
228BFC6E5F4: 00 00        - add [rax],al
228BFC6E5F6: 00 00        - add [rax],al
228BFC6E5F8: 00 00        - add [rax],al
228BFC6E5FA: 00 00        - add [rax],al
228BFC6E5FC: 00 00        - add [rax],al
228BFC6E5FE: 00 00        - add [rax],al
SunnySideUp.RoastIngredients:get_Time: 48 83 EC 08  - sub rsp,08
SunnySideUp.RoastIngredients:get_Time+4: 48 89 0C 24  - mov [rsp],rcx
SunnySideUp.RoastIngredients:get_Time+8: 48 8B C1     - mov rax,rcx
// ---------- INJECTING HERE ----------
SunnySideUp.RoastIngredients:get_Time+b: 48 63 40 30  - movsxd  rax,dword ptr [rax+30]
// ---------- DONE INJECTING  ----------
SunnySideUp.RoastIngredients:get_Time+f: 48 83 C4 08  - add rsp,08
SunnySideUp.RoastIngredients:get_Time+13: C3           - ret 
228BFC6E614: 00 00        - add [rax],al
228BFC6E616: 00 00        - add [rax],al
228BFC6E618: 01 04 01     - add [rcx+rax],eax
228BFC6E61B: 00 04 02     - add [rdx+rax],al
228BFC6E61E: 00 00        - add [rax],al
228BFC6E620: 00 00        - add [rax],al
228BFC6E622: 00 00        - add [rax],al
228BFC6E624: 00 00        - add [rax],al
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>114991</ID>
          <Description>"get holding time"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,SunnySideUp.Holdable:get_HoldingTime+b)
define(bytes,F3 0F 10 40 44)

[ENABLE]

assert(address,bytes)
alloc(newmem,$1000,SunnySideUp.Holdable:get_HoldingTime+b)

label(code)
label(return)

newmem:
  mov [rax+44],0
code:
  movss xmm0,[rax+44]
  jmp return

address:
  jmp newmem
return:

[DISABLE]

address:
  db bytes
  // movss xmm0,[rax+44]

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: SunnySideUp.Holdable:get_HoldingTime+b

228BFC96452: 00 00           - add [rax],al
228BFC96454: 00 00           - add [rax],al
228BFC96456: 00 00           - add [rax],al
228BFC96458: 00 00           - add [rax],al
228BFC9645A: 00 00           - add [rax],al
228BFC9645C: 00 00           - add [rax],al
228BFC9645E: 00 00           - add [rax],al
SunnySideUp.Holdable:get_HoldingTime: 48 83 EC 08     - sub rsp,08
SunnySideUp.Holdable:get_HoldingTime+4: 48 89 0C 24     - mov [rsp],rcx
SunnySideUp.Holdable:get_HoldingTime+8: 48 8B C1        - mov rax,rcx
// ---------- INJECTING HERE ----------
SunnySideUp.Holdable:get_HoldingTime+b: F3 0F 10 40 44  - movss xmm0,[rax+44]
// ---------- DONE INJECTING  ----------
SunnySideUp.Holdable:get_HoldingTime+10: F3 0F 5A C0     - cvtss2sd xmm0,xmm0
SunnySideUp.Holdable:get_HoldingTime+14: F2 0F 5A C0     - cvtsd2ss xmm0,xmm0
SunnySideUp.Holdable:get_HoldingTime+18: 48 83 C4 08     - add rsp,08
SunnySideUp.Holdable:get_HoldingTime+1c: C3              - ret 
228BFC9647D: 00 00           - add [rax],al
228BFC9647F: 00 01           - add [rcx],al
228BFC96481: 04 01           - add al,01
228BFC96483: 00 04 02        - add [rdx+rax],al
228BFC96486: 00 00           - add [rax],al
228BFC96488: 00 00           - add [rax],al
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>114992</ID>
          <Description>"set holding time"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,SunnySideUp.Holdable:set_HoldingTime+e)
define(bytes,F3 0F 10 44 24 08)

[ENABLE]

assert(address,bytes)
alloc(newmem,$1000,SunnySideUp.Holdable:set_HoldingTime+e)

label(code)
label(return)

newmem:
  mov [rsp+8],0
code:
  movss xmm0,[rsp+08]
  jmp return

address:
  jmp newmem
  nop
return:

[DISABLE]

address:
  db bytes
  // movss xmm0,[rsp+08]

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: SunnySideUp.Holdable:set_HoldingTime+e

228F77C2D32: 00 00              - add [rax],al
228F77C2D34: 00 00              - add [rax],al
228F77C2D36: 00 00              - add [rax],al
228F77C2D38: 00 00              - add [rax],al
228F77C2D3A: 00 00              - add [rax],al
228F77C2D3C: 00 00              - add [rax],al
228F77C2D3E: 00 00              - add [rax],al
SunnySideUp.Holdable:set_HoldingTime: 48 83 EC 18        - sub rsp,18
SunnySideUp.Holdable:set_HoldingTime+4: 48 89 0C 24        - mov [rsp],rcx
SunnySideUp.Holdable:set_HoldingTime+8: F3 0F 11 4C 24 08  - movss [rsp+08],xmm1
// ---------- INJECTING HERE ----------
SunnySideUp.Holdable:set_HoldingTime+e: F3 0F 10 44 24 08  - movss xmm0,[rsp+08]
// ---------- DONE INJECTING  ----------
SunnySideUp.Holdable:set_HoldingTime+14: F3 0F 5A C0        - cvtss2sd xmm0,xmm0
SunnySideUp.Holdable:set_HoldingTime+18: 48 8B 04 24        - mov rax,[rsp]
SunnySideUp.Holdable:set_HoldingTime+1c: F2 0F 5A E8        - cvtsd2ss xmm5,xmm0
SunnySideUp.Holdable:set_HoldingTime+20: F3 0F 11 68 44     - movss [rax+44],xmm5
SunnySideUp.Holdable:set_HoldingTime+25: 48 83 C4 18        - add rsp,18
SunnySideUp.Holdable:set_HoldingTime+29: C3                 - ret 
228F77C2D6A: 00 00              - add [rax],al
228F77C2D6C: 00 00              - add [rax],al
228F77C2D6E: 00 00              - add [rax],al
228F77C2D70: 01 04 01           - add [rcx+rax],eax
}
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
