<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="46">
  <CheatEntries>
    <CheatEntry>
      <ID>112</ID>
      <Description>"Skinny &amp; Franko: Fists of Violence"</Description>
      <Options moHideChildren="1" moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1"/>
      <Color>C08000</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

{$lua}
  LaunchMonoDataCollector()
{$asm}

define(One,FSM.Behaviour.UpdateKillCounter:UpdateCounter+18c)
define(Two,LevelStats:Tick+12)

alloc(newmemOne,$1000,One)
alloc(newmemTwo,$1000,Two)
alloc(Three,8)
alloc(Four,8)
alloc(Five,64)

registersymbol(One)
registersymbol(Two)
registersymbol(Three)
registersymbol(Four)
registersymbol(Five)

label(codeOne)
label(codeTwo)
label(returnOne)
label(returnTwo)

Three:
  dq 0

Four:
  dq 0

newmemOne:
  cmp [rax+4C],0
  jne codeOne
  mov qword ptr [Three],rax

codeOne:
  movsxd  rcx,dword ptr [rax]
  inc ecx
  jmp returnOne

One:
  jmp newmemOne

returnOne:

newmemTwo:

codeTwo:
  mov qword ptr [Four],rax
  movss xmm0,[rax]
  cvtss2sd xmm0,xmm0
  jmp returnTwo

Two:
  jmp newmemTwo
  nop 3

returnTwo:

{$lua}
  if not timer then
  timer = createTimer(nil,false)
  timer.Interval = 100
  local last = ""
  timer.OnTimer = function()
  local addr = readQword("Four")
  local out = getAddress("Five")
  if not out then return end
  local str = readString(out) or ""
  local display = "Waiting"
  if addr and addr ~= 0 and str ~= "" and str ~= last then
  local secs
  local nums = {}
  for n in str:gmatch("%d+") do table.insert(nums,tonumber(n)) end
  if #nums == 2 then
  secs = nums[1]*60+nums[2]
  elseif #nums == 1 then
  local digits = tostring(nums[1])
  if #digits &lt;= 2 then
  secs = tonumber(digits)
  elseif #digits == 3 then
  secs = tonumber(digits:sub(1,1))*60+tonumber(digits:sub(2))
  elseif #digits == 4 then
  secs = tonumber(digits:sub(1,2))*60+tonumber(digits:sub(3))
  end
  end
  if secs and secs &gt; 2 then
  if secs &gt; 5999 then secs = 5999 end
  writeFloat(addr,secs)
  end
  last = str
  end
  if addr and addr ~= 0 then
  local ok,val = pcall(readFloat,addr)
  if ok and val and val &gt; 2 then
  local total = math.floor(val+0.5)
  if total &gt; 5999 then total = 5999 end
  local minutes = math.floor(total/60)
  local seconds = total % 60
  display = string.format("%02d:%02d",minutes,seconds)
  end
  end
  for i = 0,63 do writeBytes(out+i,0) end
  writeString(out,display)
  end
  timer.Enabled = true
  end
{$asm}

[DISABLE]

One:
  db 48 63 08 FF C1

Two:
  db F3 0F 10 00 F3 0F 5A C0

unregistersymbol(One)
unregistersymbol(Two)
unregistersymbol(Three)
unregistersymbol(Four)
unregistersymbol(Five)

dealloc(newmemOne)
dealloc(newmemTwo)
dealloc(Three)
dealloc(Four)
dealloc(Five)

{$lua}
  if timer then
  timer.destroy()
  timer = nil
  end
{$asm}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>113</ID>
          <Description>"==== General ===="</Description>
          <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
          <Color>C080FF</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>114</ID>
              <Description>"Freeze Time"</Description>
              <Color>C08000</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

LevelStats:Tick+4e:
  db 90 90 90 90

[DISABLE]

LevelStats:Tick+4e:
  db F3 0F 11 28
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>115</ID>
              <Description>"Infinite Lives"</Description>
              <Color>C08000</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

Components.Lives:AddLives+9e:
  db 90 90 90 90

[DISABLE]

Components.Lives:AddLives+9e:
  db 41 89 47 1C
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>116</ID>
              <Description>"Infinite Health"</Description>
              <Color>C08000</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

define(Six,Components.Health:UpdateFill+3b)
alloc(newmem,$1000,Six)

label(code)
label(return)

newmem:

code:
  mov eax,dword ptr [rsi+18]
  mov dword ptr [rsi+1C],eax
  cdqe
  test eax, eax
  jmp return

Six:
  jmp newmem
  nop

return:
registersymbol(Six)

[DISABLE]

Six:
  db 48 63 46 1C 85 C0

unregistersymbol(Six)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>117</ID>
              <Description>"Infinite Berserk"</Description>
              <Color>C08000</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

define(Seven,FSM.Condiction.BerserkLevelIs:Check+15)
define(Eight,FSM.Behaviour.BerserkChange:Enter+114)

alloc(newmemOne,$1000,Seven)
alloc(newmemTwo,$1000,Eight)

registersymbol(Seven)
registersymbol(Eight)

label(codeOne)
label(codeTwo)
label(returnOne)
label(returnTwo)

newmemOne:

codeOne:
  mov eax,[rcx+18]
  mov [rcx+1C],eax
  movsxd  rax,dword ptr [rcx+1C]
  movsxd  rcx,dword ptr [rcx+34]
  jmp returnOne

Seven:
  jmp newmemOne
  nop 3

returnOne:

newmemTwo:

codeTwo:
  mov eax,[r15+18]
  mov [r15+1C],eax
  jmp FSM.Behaviour.BerserkChange:Enter+122
  jmp returnTwo

Eight:
  jmp newmemTwo
  nop

returnTwo:

[DISABLE]

Seven:
  db 48 63 41 1C 48 63 49 34

Eight:
  db 41 89 47 1C EB 08

unregistersymbol(Seven)
unregistersymbol(Eight)

dealloc(newmemOne)
dealloc(newmemTwo)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>118</ID>
              <Description>"Infinite Stamina"</Description>
              <Color>C08000</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

define(Nine,FSM.Behaviour.RegenerateStamina:Update+c0)
alloc(newmem,$1000,Nine)

label(code)
label(return)

newmem:

code:
  mov eax,[r15+18]
  mov [r15+1C],eax
  movsxd  rax,dword ptr [r15+1C]
  jmp return

Nine:
  jmp newmem
  nop 3

return:
registersymbol(Nine)

[DISABLE]

Nine:
  db 41 89 47 1C 49 63 47 1C

unregistersymbol(Nine)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>119</ID>
              <Description>"Infinite Combo"</Description>
              <Color>C08000</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

HitChainCombo:ResetCombo:
  db C3

[DISABLE]

HitChainCombo:ResetCombo:
  db 55
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>120</ID>
              <Description>"⬆Disable before the end of the level, or the combo will not be counted."</Description>
              <Color>C0C0C0</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>121</ID>
              <Description>"Quick Kills"</Description>
              <Color>C08000</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

define(Ten,CharacterUI:Update+10b)
define(Eleven,FSM.Behaviour.BossUIControl:UpdateBossBarFill+f0)

alloc(newmemOne,$1000,Ten)
alloc(newmemTwo,$1000,Eleven)

registersymbol(Ten)
registersymbol(Eleven)

label(codeOne)
label(codeTwo)
label(returnOne)
label(returnTwo)

newmemOne:

codeOne:
  mov dword ptr [rax+1C],0
  movsxd  rax,dword ptr [rax+1C]
  cvtsi2ss xmm0,eax
  jmp returnOne

Ten:
  jmp newmemOne
  nop 3

returnOne:

newmemTwo:

codeTwo:
  mov dword ptr [rax+1C],0
  movsxd  rax,dword ptr [rax+1C]
  mov [rsi+64],eax
  jmp returnTwo

Eleven:
  jmp newmemTwo
  nop 2

returnTwo:

[DISABLE]

Ten:
  db 48 63 40 1C F3 0F 2A C0

Eleven:
  db 48 63 40 1C 89 46 64

unregistersymbol(Ten)
unregistersymbol(Eleven)

dealloc(newmemOne)
dealloc(newmemTwo)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>122</ID>
              <Description>"⬆Makes some berserk moves look odd when the enemy dies on the first hit."</Description>
              <Color>C0C0C0</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>123</ID>
          <Description>"==== Extras ====="</Description>
          <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
          <Color>C080FF</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>124</ID>
              <Description>"Time"</Description>
              <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">??:Waiting
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>String</VariableType>
              <Length>7</Length>
              <Unicode>0</Unicode>
              <CodePage>0</CodePage>
              <ZeroTerminate>1</ZeroTerminate>
              <Address>Five</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>127</ID>
              <Description>"Kills"</Description>
              <Options moDeactivateChildrenAsWell="1"/>
              <Color>C08000</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>125</ID>
                  <Description>"Player 1"</Description>
                  <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">??:Waiting
</DropDownList>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>808080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[Three]</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>126</ID>
                  <Description>"Player 2"</Description>
                  <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">??:Waiting
</DropDownList>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>808080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[Three]+4</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <Comments>Created by: Outrun
https://opencheattables.com</Comments>
</CheatTable>
