<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="46">
  <CheatEntries>
    <CheatEntry>
      <ID>252</ID>
      <Description>"Tormented Souls"</Description>
      <Options moHideChildren="1" moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1"/>
      <Color>C08000</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

aobscanmodule(One,GameAssembly.dll,0F B6 40 78 48 83 C4 28 C3 E8 E2)
aobscanmodule(Two,GameAssembly.dll,0F B6 80 D2 00 00 00)
aobscanmodule(Three,GameAssembly.dll,44 0F B6 40 10 45)
aobscanmodule(Four,GameAssembly.dll,0F B6 80 D1 00 00 00)
aobscanmodule(Five,GameAssembly.dll,F3 0F 58 B0 A0 00 00 00)

alloc(newmemOne,$1000,One)
alloc(newmemTwo,$1000,Two)
alloc(newmemThree,$1000,Three)
alloc(newmemFour,$1000,Four)
alloc(newmemFive,$1000,Five)
alloc(Six,8)
alloc(Seven,1)
alloc(Eight,1)
alloc(Nine,1)
alloc(Ten,8)

registersymbol(One)
registersymbol(Two)
registersymbol(Three)
registersymbol(Four)
registersymbol(Five)
registersymbol(Six)
registersymbol(Seven)
registersymbol(Eight)
registersymbol(Nine)
registersymbol(Ten)

label(codeOne)
label(codeTwo)
label(codeThree)
label(codeFour)
label(codeFive)
label(codeSix)
label(codeSeven)
label(codeEight)
label(returnOne)
label(returnTwo)
label(returnThree)
label(returnFour)
label(returnFive)

Six:
  dq 0

Seven:
  db 0

Eight:
  db 0

Nine:
  db 0

Ten:
  dq 0

newmemOne:

codeOne:
  mov qword ptr [Six],rax
  movzx eax,byte ptr [rax+78]
  add rsp,28
  jmp returnOne

One:
  jmp newmemOne
  nop 3

returnOne:

newmemTwo:
  cmp byte ptr [Seven],1
  jne codeTwo
  mov byte ptr [rax+000000D2],1
  jmp codeThree

codeTwo:
  mov byte ptr [rax+000000D2],0

codeThree:
  movzx eax,byte ptr [rax+000000D2]
  jmp returnTwo

Two:
  jmp newmemTwo
  nop 2

returnTwo:

newmemThree:
  cmp byte ptr [Eight],1
  jne codeFour
  mov byte ptr [rax+10],1
  jmp codeFive

codeFour:
  mov byte ptr [rax+10],0

codeFive:
  movzx r8d,byte ptr [rax+10]
  jmp returnThree

Three:
  jmp newmemThree

returnThree:

newmemFour:
  cmp byte ptr [Nine],1
  jne codeSix
  mov byte ptr [rax+000000D1],1
  jmp codeSeven

codeSix:
  mov byte ptr [rax+000000D1],0

codeSeven:
  movzx eax,byte ptr [rax+000000D1]
  jmp returnFour

Four:
  jmp newmemFour
  nop 2

returnFour:

newmemFive:

codeEight:
  mov qword ptr [Ten],rax
  addss xmm6,[rax+000000A0]
  jmp returnFive

Five:
  jmp newmemFive
  nop 3

returnFive:

{$lua}
  if not clockTimer then
  clockTimer = createTimer(nil,false)
  clockTimer.Interval = 100
  if not Eleven then
  Eleven = allocateMemory(64)
  registerSymbol("Eleven")
  end
  local previousTime = -1
  local lastTime = ""
  clockTimer.OnTimer = function()
  local addr = getAddress("[Ten]+A0")
  if not addr or addr == 0 then return end
  local currentTime = readString(Eleven) or ""
  if currentTime ~= lastTime then
  local splitTime = {}
  for n in currentTime:gmatch("%d+") do table.insert(splitTime,tonumber(n)) end
  local totalSeconds
  if #splitTime == 3 then
  totalSeconds = splitTime[1]*3600+splitTime[2]*60+splitTime[3]
  elseif #splitTime == 2 then
  totalSeconds = splitTime[1]*60+splitTime[2]
  elseif #splitTime == 1 then
  totalSeconds = splitTime[1]
  end
  if totalSeconds and totalSeconds &gt;= 0 then
  if totalSeconds &gt; 86399 then totalSeconds = 86399 end
  writeFloat(addr,totalSeconds)
  previousTime = totalSeconds
  end
  lastTime = currentTime
  end
  local ok,timeValue = pcall(readFloat,addr)
  if not ok or not timeValue or timeValue &lt; 0 then
  writeString(Eleven,"Waiting")
  return
  end
  local rounded = math.floor(timeValue+0.5)
  if rounded ~= previousTime then
  if rounded &gt; 86399 then rounded = 86399 end
  local hours = math.floor(rounded/3600)
  local minutes = math.floor((rounded%3600)/60)
  local seconds = rounded%60
  local display = string.format("%02d:%02d:%02d",hours,minutes,seconds)
  for i = 0,63 do writeBytes(Eleven+i,0) end
  writeString(Eleven,display)
  lastTime = display
  previousTime = rounded
  end
  end
  clockTimer.Enabled = true
  end
{$asm}

[DISABLE]

One:
  db 0F B6 40 78 48 83 C4 28

Two:
  db 0F B6 80 D2 00 00 00

Three:
  db 44 0F B6 40 10

Four:
  db 0F B6 80 D1 00 00 00

Five:
  db F3 0F 58 B0 A0 00 00 00

unregistersymbol(One)
unregistersymbol(Two)
unregistersymbol(Three)
unregistersymbol(Four)
unregistersymbol(Five)
unregistersymbol(Six)
unregistersymbol(Seven)
unregistersymbol(Eight)
unregistersymbol(Nine)
unregistersymbol(Ten)

dealloc(newmemOne)
dealloc(newmemTwo)
dealloc(newmemThree)
dealloc(newmemFour)
dealloc(newmemFive)
dealloc(Six)
dealloc(Seven)
dealloc(Eight)
dealloc(Nine)
dealloc(Ten)

{$lua}
  if clockTimer then
  clockTimer.destroy()
  clockTimer = nil
  end
{$asm}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>253</ID>
          <Description>"==== General ===="</Description>
          <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
          <Color>C080FF</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>254</ID>
              <Description>"Infinite Health"</Description>
              <Color>C08000</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(Twelve,GameAssembly.dll,F3 0F 10 40 14 48 83 C4 28 C3 E8 74)
aobscanmodule(Thirteen,GameAssembly.dll,F3 0F 10 40 10 48 83 C4 28 C3 E8 14)

alloc(newmemOne,$1000,Twelve)
alloc(newmemTwo,$1000,Thirteen)
alloc(Fourteen,8)
alloc(Fifteen,8)

registersymbol(Twelve)
registersymbol(Thirteen)
registersymbol(Fourteen)
registersymbol(Fifteen)

label(codeOne)
label(codeTwo)
label(returnOne)
label(returnTwo)

Fourteen:
  dq 0

Fifteen:
  dq 0

newmemOne:

codeOne:
  mov qword ptr [Fourteen],rax
  movss xmm0,[rax+14]
  jmp returnOne

Twelve:
  jmp newmemOne

returnOne:

newmemTwo:

codeTwo:
  mov qword ptr [Fifteen],rax
  movss xmm0,[rax+10]
  mov rdx,[Fourteen]
  movss xmm1,[rdx+14]
  movss [rax+10],xmm1
  jmp returnTwo

Thirteen:
  jmp newmemTwo

returnTwo:

[DISABLE]

Twelve:
  db F3 0F 10 40 14

Thirteen:
  db F3 0F 10 40 10

unregistersymbol(Twelve)
unregistersymbol(Thirteen)
unregistersymbol(Fourteen)
unregistersymbol(Fifteen)

dealloc(newmemOne)
dealloc(newmemTwo)
dealloc(Fourteen)
dealloc(Fifteen)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>255</ID>
              <Description>"⬆You will still die if you stay in the darkness."</Description>
              <Color>C0C0C0</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>256</ID>
              <Description>"Infinite Ammunition"</Description>
              <Color>C08000</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(Sixteen,GameAssembly.dll,89 78 50 48 83 C4 20 5F C3 E8 8C)
registersymbol(Sixteen)

GameAssembly.dll+45E166:
  db 90 90 90

[DISABLE]

Sixteen:
  db 89 78 50

unregistersymbol(Sixteen)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>257</ID>
              <Description>"Untouchable"</Description>
              <Color>C08000</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

Seven:
  db 1

[DISABLE]

Seven:
  db 0
</AssemblerScript>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>258</ID>
          <Description>"==== Extras ====="</Description>
          <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
          <Color>C080FF</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>259</ID>
              <Description>"Debug Menu"</Description>
              <Color>C08000</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

Nine:
  db 1

[DISABLE]

Nine:
  db 0
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>260</ID>
              <Description>"⬆Press END in-game to toggle the menu."</Description>
              <Color>C0C0C0</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>261</ID>
              <Description>"Unlock Doors"</Description>
              <Color>C08000</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

Eight:
  db 1

[DISABLE]

Eight:
  db 0
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>262</ID>
              <Description>"⬆Only works on doors that don’t require an item to open."</Description>
              <Color>C0C0C0</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>276</ID>
              <Description>"Toggle Lights"</Description>
              <Color>C08000</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

{$lua}
  if syntaxcheck then return end
  if getOpenedProcessID() == 0 then return end
  pcall(function()
  local lights = getAddressSafe("Six")
  if not lights then return end
  local base = readQword(lights)
  if not base then return end
  local addr = base+0x78
  local current = readBytes(addr,1,false)
  if current == nil then return end
  if current == 0 then
  writeBytes(addr,1)
  elseif current == 1 then
  writeBytes(addr,0)
  end
  end)
  local t = createTimer(nil,false)
  t.Interval = 150
  t.OnTimer = function(timer)
  timer.destroy()
  memrec.Active = false
  end
  t.Enabled = true
{$asm}

[DISABLE]
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>277</ID>
              <Description>"⬆Toggles the lights, then disables."</Description>
              <Color>C0C0C0</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>278</ID>
              <Description>"⬆Toggle the lights off before you turn the generator on."</Description>
              <Color>C0C0C0</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>264</ID>
              <Description>"No Darkness Damage"</Description>
              <Color>C08000</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(Seventeen,GameAssembly.dll,F3 0F 11 83 94 00 00 00 EB)
alloc(newmem,$1000,Seventeen)

label(code)
label(return)

newmem:

code:
  xorps xmm0,xmm0
  movss [rbx+00000094],xmm0
  jmp return

Seventeen:
  jmp newmem
  nop 3

return:
registersymbol(Seventeen)

[DISABLE]

Seventeen:
  db F3 0F 11 83 94 00 00 00

unregistersymbol(Seventeen)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>265</ID>
              <Description>"Nudity Censored"</Description>
              <Color>C08000</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(Eighteen,GameAssembly.dll,80 78 23 00 0F 84 A4 00 00 00)
registersymbol(Eighteen)

GameAssembly.dll+4966FE:
  db C6 40 23 01

[DISABLE]

Eighteen:
  db 80 78 23 00

unregistersymbol(Eighteen)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>266</ID>
              <Description>"⬆Must be enabled prior to scene loading."</Description>
              <Color>C0C0C0</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>267</ID>
              <Description>"Outfit"</Description>
              <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">*:Waiting
0:Dress
1:Jeans
2:Floating Head
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>[Ten]+E4</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>268</ID>
              <Description>"⬆Use a door to force a load and apply outfit changes."</Description>
              <Color>C0C0C0</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>269</ID>
          <Description>"=== Statistics ===="</Description>
          <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
          <Color>C080FF</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>270</ID>
              <Description>"Total Time"</Description>
              <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">??:Waiting
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>String</VariableType>
              <Length>8</Length>
              <Unicode>0</Unicode>
              <CodePage>0</CodePage>
              <ZeroTerminate>1</ZeroTerminate>
              <Address>Eleven</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>271</ID>
              <Description>"Saves"</Description>
              <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">??:Waiting
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>[Ten]+A4</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>272</ID>
              <Description>"Defeated Enemies"</Description>
              <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">??:Waiting
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>[Ten]+A8</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>273</ID>
              <Description>"Medical Kits Found"</Description>
              <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">??:Waiting
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>[Ten]+AC</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>274</ID>
              <Description>"Travelled Distance"</Description>
              <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">??:Waiting
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>[Ten]+E0</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>275</ID>
              <Description>"Damage Received"</Description>
              <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">??:Waiting
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>[Ten]+DC</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <Comments>Created by: Outrun
https://opencheattables.com
</Comments>
</CheatTable>
