<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="46">
  <CheatEntries>
    <CheatEntry>
      <ID>186</ID>
      <Description>"Enable Mono"</Description>
      <Options moHideChildren="1" moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
if not syntaxcheck then
  LaunchMonoDataCollector()
end
{$asm}

[DISABLE]



</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>187</ID>
          <Description>"Hooks"</Description>
          <Options moAlwaysHideChildren="1" moActivateChildrenAsWell="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>167</ID>
              <Description>"HOOK: Restory.Gameplay.TimeSystems.GameCalendar:set_CurrentDateTime"</Description>
              <Options moHideChildren="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>define(hook,"Restory.Gameplay.TimeSystems.GameCalendar:set_CurrentDateTime")
define(bytes,55 48 8B EC 48)

[enable]

assert(hook, bytes)
alloc(newmem,$1000, hook)
alloc(GameCalendar,8)
registersymbol(GameCalendar)
{
  RCX: GameCalendar (this)
  RDX: System.DateTime value

  Returns RAX (System.Void)
}

GameCalendar:
  dq 0

newmem:
  mov [GameCalendar],rcx
  // original code
  // push rbp
  // mov rbp,rsp
  // sub rsp,30
  readmem(hook,8)
  jmp hook+8

hook:
  jmp long newmem

[disable]

hook:
  db bytes

dealloc(newmem)
unregistersymbol(GameCalendar)
dealloc(GameCalendar)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>174</ID>
              <Description>"HOOK: Restory.Gameplay.Equipment.ElementCleaner:CleanAndCalculateProgress"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>define(hook,"Restory.Gameplay.Equipment.ElementCleaner:CleanAndCalculateProgress")
define(bytes,55 48 8B EC 48)

[enable]

assert(hook, bytes)
alloc(newmem,$1000, hook)
alloc(CleanProgress,8)
registersymbol(CleanProgress)
{
  RCX: ElementCleaner (this)
  RDX: UnityEngine.Vector2 screenPosition

  Returns RAX (Mandragora.PWS.CleaningProgressInPercentage)
}

CleanProgress:
  dq 0

newmem:
  mov [CleanProgress],rcx
  // original code
  // push rbp
  // mov rbp,rsp
  // sub rsp,00000090
  readmem(hook,11)
  jmp hook+B

hook:
  jmp long newmem

[disable]

hook:
  db bytes

dealloc(newmem)
unregistersymbol(CleanProgress)
dealloc(CleanProgress)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>189</ID>
              <Description>"HOOK: Restory.UI.Presenters.GUI_PcWidgetWallet:ResolveMoneyInWalletChanged"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>define(hook,"Restory.UI.Presenters.GUI_PcWidgetWallet:ResolveMoneyInWalletChanged")
define(bytes,55 48 8B EC 48)

[enable]

assert(hook, bytes)
alloc(newmem,$1000, hook)
alloc(Wallet,8)
registersymbol(Wallet)
{
  RCX: GUI_PcWidgetWallet (this)

  Returns RAX (System.Void)
}

Wallet:
  dq 0

newmem:
  mov [Wallet],rcx
  // original code
  // push rbp
  // mov rbp,rsp
  // sub rsp,50
  readmem(hook,8)
  jmp hook+8

hook:
  jmp long newmem

[disable]

hook:
  db bytes

dealloc(newmem)
unregistersymbol(Wallet)
dealloc(Wallet)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>195</ID>
              <Description>"HOOK: Restory.Gameplay.Elements.ThreadedElement:InitInteraction"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>define(hook,"Restory.Gameplay.Elements.ThreadedElement:InitInteraction")
define(bytes,55 48 8B EC 48)

[enable]

assert(hook, bytes)
alloc(newmem,$1000, hook)
alloc(ScrewInteract,8)
registersymbol(ScrewInteract)
{
  RCX: ThreadedElement (this)
  RDX: Restory.Data.Equipment.ToolInfo toolInfo

  Returns RAX (System.Void)
}

ScrewInteract:
  dq 0

newmem:
  mov [ScrewInteract],rcx
  // original code
  // push rbp
  // mov rbp,rsp
  // sub rsp,60
  readmem(hook,8)
  jmp hook+8

hook:
  jmp long newmem

[disable]

hook:
  db bytes

dealloc(newmem)
unregistersymbol(ScrewInteract)
dealloc(ScrewInteract)
</AssemblerScript>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>188</ID>
          <Description>"Options"</Description>
          <Options moHideChildren="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>173</ID>
              <Description>"Time (Unpause The Game First)"</Description>
              <Options moHideChildren="1"/>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>168</ID>
                  <Description>"GameCalendar instance"</Description>
                  <ShowAsHex>1</ShowAsHex>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>8 Bytes</VariableType>
                  <Address>[GameCalendar]</Address>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>169</ID>
                      <Description>"UDateTime"</Description>
                      <ShowAsHex>1</ShowAsHex>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>8 Bytes</VariableType>
                      <Address>+30</Address>
                      <Offsets>
                        <Offset>0</Offset>
                      </Offsets>
                      <CheatEntries>
                        <CheatEntry>
                          <ID>170</ID>
                          <Description>"Current Time"</Description>
                          <ShowAsSigned>0</ShowAsSigned>
                          <Color>00FF00</Color>
                          <VariableType>4 Bytes</VariableType>
                          <Address>+10</Address>
                        </CheatEntry>
                      </CheatEntries>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>193</ID>
              <Description>"Money (Buy Something First)"</Description>
              <Options moHideChildren="1"/>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>190</ID>
                  <Description>"GUI_PcWidgetWallet instance"</Description>
                  <ShowAsHex>1</ShowAsHex>
                  <VariableType>8 Bytes</VariableType>
                  <Address>[Wallet]</Address>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>191</ID>
                      <Description>"Wallet"</Description>
                      <ShowAsHex>1</ShowAsHex>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>8 Bytes</VariableType>
                      <Address>+30</Address>
                      <Offsets>
                        <Offset>0</Offset>
                      </Offsets>
                      <CheatEntries>
                        <CheatEntry>
                          <ID>192</ID>
                          <Description>"Money"</Description>
                          <ShowAsSigned>0</ShowAsSigned>
                          <Color>00FF00</Color>
                          <VariableType>4 Bytes</VariableType>
                          <Address>+30</Address>
                        </CheatEntry>
                      </CheatEntries>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>185</ID>
              <Description>"Clean Progress (Start Cleaning Something First)"</Description>
              <Options moHideChildren="1"/>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>175</ID>
                  <Description>"CleanProgress instance"</Description>
                  <ShowAsHex>1</ShowAsHex>
                  <VariableType>8 Bytes</VariableType>
                  <Address>[CleanProgress]</Address>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>176</ID>
                      <Description>"TextureMaskHolder"</Description>
                      <ShowAsHex>1</ShowAsHex>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>8 Bytes</VariableType>
                      <Address>+A0</Address>
                      <Offsets>
                        <Offset>0</Offset>
                      </Offsets>
                      <CheatEntries>
                        <CheatEntry>
                          <ID>181</ID>
                          <Description>"DirtyPixelsCount (Set all to 0)"</Description>
                          <ShowAsHex>1</ShowAsHex>
                          <ShowAsSigned>0</ShowAsSigned>
                          <VariableType>8 Bytes</VariableType>
                          <Address>+50</Address>
                          <Offsets>
                            <Offset>0</Offset>
                          </Offsets>
                          <CheatEntries>
                            <CheatEntry>
                              <ID>182</ID>
                              <Description>"R"</Description>
                              <ShowAsSigned>0</ShowAsSigned>
                              <Color>00FF00</Color>
                              <VariableType>4 Bytes</VariableType>
                              <Address>+10</Address>
                            </CheatEntry>
                            <CheatEntry>
                              <ID>184</ID>
                              <Description>"G"</Description>
                              <ShowAsSigned>0</ShowAsSigned>
                              <Color>00FF00</Color>
                              <VariableType>4 Bytes</VariableType>
                              <Address>+14</Address>
                            </CheatEntry>
                            <CheatEntry>
                              <ID>183</ID>
                              <Description>"B"</Description>
                              <ShowAsSigned>0</ShowAsSigned>
                              <Color>00FF00</Color>
                              <VariableType>4 Bytes</VariableType>
                              <Address>+18</Address>
                            </CheatEntry>
                          </CheatEntries>
                        </CheatEntry>
                      </CheatEntries>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>199</ID>
              <Description>"Screw Progress (Unscrew Something First)"</Description>
              <Options moHideChildren="1"/>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>196</ID>
                  <Description>"ScrewInteract instance"</Description>
                  <ShowAsHex>1</ShowAsHex>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>8 Bytes</VariableType>
                  <Address>[ScrewInteract]</Address>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>198</ID>
                      <Description>"Unscrew Speed"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <Color>00FF00</Color>
                      <VariableType>Float</VariableType>
                      <Address>+E4</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <Structures StructVersion="2">
    <Structure Name="DirtyPixelsCount" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
      <Elements>
        <Element Offset="16" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000010" Description="R" DisplayMethod="unsigned integer"/>
        <Element Offset="20" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000014" Description="G" DisplayMethod="unsigned integer"/>
        <Element Offset="24" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000018" Description="B" DisplayMethod="unsigned integer"/>
      </Elements>
    </Structure>
    <Structure Name="ThreadedElement" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
      <Elements>
        <Element Offset="16" Vartype="Pointer" Bytesize="8" OffsetHex="00000010" Description="m_CachedPtr" DisplayMethod="unsigned integer"/>
        <Element Offset="24" Vartype="Pointer" Bytesize="8" OffsetHex="00000018" Description="m_CancellationTokenSource" DisplayMethod="unsigned integer"/>
        <Element Offset="32" Vartype="Pointer" Bytesize="8" OffsetHex="00000020" Description="&lt;OnActivated&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="40" Vartype="Pointer" Bytesize="8" OffsetHex="00000028" Description="&lt;OnDeactivated&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="48" Vartype="Pointer" Bytesize="8" OffsetHex="00000030" Description="&lt;OnSelectionStateChanged&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="56" Vartype="Pointer" Bytesize="8" OffsetHex="00000038" Description="&lt;OnHighlightedStateChanged&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="64" Vartype="Pointer" Bytesize="8" OffsetHex="00000040" Description="&lt;OnBlockedStateChanged&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="72" Vartype="Pointer" Bytesize="8" OffsetHex="00000048" Description="&lt;OnDetached&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="80" Vartype="Pointer" Bytesize="8" OffsetHex="00000050" Description="&lt;OnInteractionComplete&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="88" Vartype="Pointer" Bytesize="8" OffsetHex="00000058" Description="&lt;OnInteractionCanceled&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="96" Vartype="Pointer" Bytesize="8" OffsetHex="00000060" Description="&lt;OnDragging&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="104" Vartype="Pointer" Bytesize="8" OffsetHex="00000068" Description="&lt;OnInstalled&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="112" Vartype="Pointer" Bytesize="8" OffsetHex="00000070" Description="&lt;OnOverCompatibleEquipmentStateChanged&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="120" Vartype="Pointer" Bytesize="8" OffsetHex="00000078" Description="&lt;ProjectionData&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="128" Vartype="Pointer" Bytesize="8" OffsetHex="00000080" Description="elementInfo" DisplayMethod="unsigned integer"/>
        <Element Offset="136" Vartype="Pointer" Bytesize="8" OffsetHex="00000088" Description="conditionHandler" DisplayMethod="unsigned integer"/>
        <Element Offset="144" Vartype="Pointer" Bytesize="8" OffsetHex="00000090" Description="placementPositionHandler" DisplayMethod="unsigned integer"/>
        <Element Offset="152" Vartype="Pointer" Bytesize="8" OffsetHex="00000098" Description="behaviorSwitcher" DisplayMethod="unsigned integer"/>
        <Element Offset="160" Vartype="Pointer" Bytesize="8" OffsetHex="000000A0" Description="tweener" DisplayMethod="unsigned integer"/>
        <Element Offset="168" Vartype="Byte" Bytesize="1" OffsetHex="000000A8" Description="&lt;InSocket&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="172" Vartype="Float" Bytesize="4" OffsetHex="000000AC" Description="&lt;Progress&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="176" Vartype="Byte" Bytesize="1" OffsetHex="000000B0" Description="&lt;IsInstalling&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="177" Vartype="Byte" Bytesize="1" OffsetHex="000000B1" Description="&lt;IsActivated&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="178" Vartype="Byte" Bytesize="1" OffsetHex="000000B2" Description="useCustomMaxZoom" DisplayMethod="unsigned integer"/>
        <Element Offset="180" Vartype="Float" Bytesize="4" OffsetHex="000000B4" Description="customMaxZoom" DisplayMethod="unsigned integer"/>
        <Element Offset="184" Vartype="Byte" Bytesize="1" OffsetHex="000000B8" Description="detectableWhenBlocked" DisplayMethod="unsigned integer"/>
        <Element Offset="185" Vartype="Byte" Bytesize="1" OffsetHex="000000B9" Description="isInitialized" DisplayMethod="unsigned integer"/>
        <Element Offset="186" Vartype="Byte" Bytesize="1" OffsetHex="000000BA" Description="isBlocked" DisplayMethod="unsigned integer"/>
        <Element Offset="187" Vartype="Byte" Bytesize="1" OffsetHex="000000BB" Description="isSelected" DisplayMethod="unsigned integer"/>
        <Element Offset="188" Vartype="Byte" Bytesize="1" OffsetHex="000000BC" Description="isHighlighted" DisplayMethod="unsigned integer"/>
        <Element Offset="189" Vartype="Byte" Bytesize="1" OffsetHex="000000BD" Description="isDragging" DisplayMethod="unsigned integer"/>
        <Element Offset="190" Vartype="Byte" Bytesize="1" OffsetHex="000000BE" Description="isOverCompatibleEquipment" DisplayMethod="unsigned integer"/>
        <Element Offset="191" Vartype="Byte" Bytesize="1" OffsetHex="000000BF" Description="isOnSurface" DisplayMethod="unsigned integer"/>
        <Element Offset="192" Vartype="Pointer" Bytesize="8" OffsetHex="000000C0" Description="&lt;OnStartedHolding&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="200" Vartype="Pointer" Bytesize="8" OffsetHex="000000C8" Description="&lt;OnStoppedHolding&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="208" Vartype="Pointer" Bytesize="8" OffsetHex="000000D0" Description="&lt;OnImmediateShortInteraction&gt;k__BackingField" DisplayMethod="unsigned integer"/>
        <Element Offset="216" Vartype="Pointer" Bytesize="8" OffsetHex="000000D8" Description="rotationTweener" DisplayMethod="unsigned integer"/>
        <Element Offset="224" Vartype="Byte" Bytesize="1" OffsetHex="000000E0" Description="isSelfScrewingWithoutTool" DisplayMethod="unsigned integer"/>
        <Element Offset="228" Vartype="Float" Bytesize="4" OffsetHex="000000E4" Description="selfUnscrewingSpeed" DisplayMethod="unsigned integer"/>
        <Element Offset="232" Vartype="Byte" Bytesize="1" OffsetHex="000000E8" Description="shouldBeInstalled" DisplayMethod="unsigned integer"/>
        <Element Offset="233" Vartype="Byte" Bytesize="1" OffsetHex="000000E9" Description="isCurrentlyBeingHeld" DisplayMethod="unsigned integer"/>
      </Elements>
    </Structure>
  </Structures>
</CheatTable>
