<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="24">
  <CheatEntries>
    <CheatEntry>
      <ID>1</ID>
      <Description>"Auto Assemble script"</Description>
      <Options moHideChildren="1"/>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Turmoil
  Version: v0.0.0.292
  Date   : 2016-06-03
  Author : JCDenton

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(MoneyCalc_INJECT,TurmoilSteam.exe,DD 00 DD 1F 5F 5E 5D 5B 59) // should be unique
alloc(newmem,$1000)

label(code)
label(start)
label(reset)
label(return)
label(pMoneyStart)
label(pMoneyStartCount)
label(pMoneyAdd)
label(pMoneyOld)
label(pMoneyNew)
label(pMoneySet)
label(Infinite_Money)

newmem:
  fld qword ptr [edi]
  fistp qword ptr [pMoneyOld]
  mov ebx,[pMoneyOld]
  cmp ebx,#2000
  jne code
  fld qword ptr [eax]
  fistp qword ptr [pMoneyNew]
  cmp [pMoneyNew],#1850
  jne code
  mov [pMoneySet],#1
  mov [pMoneyAdd],edi
  cmp [pMoneyStart],#1
  jne Infinite_Money
  {
  mov [edi], 0x00000000
  mov [edi+4], 0x412AFFFF
  }
  fld qword ptr [pMoneyStartCount]
  fstp qword ptr [edi]
  jmp Infinite_Money

start:
  push ebx
  cmp [pMoneySet],#1
  jne newmem
  cmp [pMoneyAdd],edi
  jne code
  cmp [edi+4],0
  je reset

Infinite_Money:
  mov [pMoneyOld],#0
  mov [pMoneyNew],#0
  fld qword ptr [edi]
  fistp qword ptr [pMoneyOld]
  fld qword ptr [eax]
  fistp qword ptr [pMoneyNew]
  mov ebx,[pMoneyOld]
  cmp ebx,[pMoneyNew]
  jb code
  pop ebx
  pop edi
  jmp return

reset:
  mov [pMoneySet],#0
  mov [pMoneyAdd],0

code:
  pop ebx
  fld qword ptr [eax]
  fstp qword ptr [edi]
  pop edi
  jmp return

pMoneyStart:
  dd (int)1

pMoneyStartCount:
  dq (double)500000

pMoneySet:
  dd (int)0

pMoneyAdd:
  dd 0

pMoneyOld:
  dd (int)0

pMoneyNew:
  dd (int)0

MoneyCalc_INJECT:
  jmp start
return:
registersymbol(MoneyCalc_INJECT)
registersymbol(pMoneyAdd)
registersymbol(pMoneySet)
registersymbol(pMoneyStart)
registersymbol(pMoneyStartCount)

[DISABLE]

MoneyCalc_INJECT:
  db DD 00 DD 1F 5F

unregistersymbol(MoneyCalc_INJECT)
unregistersymbol(pMoneyAdd)
unregistersymbol(pMoneySet)
unregistersymbol(pMoneyStart)
unregistersymbol(pMoneyStartCount)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "TurmoilSteam.exe"+109E4D

"TurmoilSteam.exe"+109E3B: 89 07                 -  mov [edi],eax
"TurmoilSteam.exe"+109E3D: 85 C0                 -  test eax,eax
"TurmoilSteam.exe"+109E3F: 0F 84 2E 02 00 00     -  je TurmoilSteam.exe+10A073
"TurmoilSteam.exe"+109E45: FF 00                 -  inc [eax]
"TurmoilSteam.exe"+109E47: 5F                    -  pop edi
"TurmoilSteam.exe"+109E48: 5E                    -  pop esi
"TurmoilSteam.exe"+109E49: 5D                    -  pop ebp
"TurmoilSteam.exe"+109E4A: 5B                    -  pop ebx
"TurmoilSteam.exe"+109E4B: 59                    -  pop ecx
"TurmoilSteam.exe"+109E4C: C3                    -  ret 
// ---------- INJECTING HERE ----------
"TurmoilSteam.exe"+109E4D: DD 00                 -  fld qword ptr [eax]
"TurmoilSteam.exe"+109E4F: DD 1F                 -  fstp qword ptr [edi]
"TurmoilSteam.exe"+109E51: 5F                    -  pop edi
// ---------- DONE INJECTING  ----------
"TurmoilSteam.exe"+109E52: 5E                    -  pop esi
"TurmoilSteam.exe"+109E53: 5D                    -  pop ebp
"TurmoilSteam.exe"+109E54: 5B                    -  pop ebx
"TurmoilSteam.exe"+109E55: 59                    -  pop ecx
"TurmoilSteam.exe"+109E56: C3                    -  ret 
"TurmoilSteam.exe"+109E57: 8B 00                 -  mov eax,[eax]
"TurmoilSteam.exe"+109E59: 89 07                 -  mov [edi],eax
"TurmoilSteam.exe"+109E5B: 5F                    -  pop edi
"TurmoilSteam.exe"+109E5C: 5E                    -  pop esi
"TurmoilSteam.exe"+109E5D: 5D                    -  pop ebp
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>7</ID>
          <Description>"Start Money"</Description>
          <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
          <VariableType>4 Bytes</VariableType>
          <Address>pMoneyStart</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>9</ID>
          <Description>"Start Money Count"</Description>
          <VariableType>Double</VariableType>
          <Address>pMoneyStartCount</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>3</ID>
          <Description>"Money Address Set?"</Description>
          <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
          <VariableType>4 Bytes</VariableType>
          <Address>pMoneySet</Address>
          <Hotkeys>
            <Hotkey>
              <Action>Set Value</Action>
              <Keys>
                <Key>81</Key>
              </Keys>
              <Value>0</Value>
              <Description>Rest the flage before start</Description>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>8</ID>
          <Description>"Address"</Description>
          <VariableType>Double</VariableType>
          <Address>pMoneyAdd</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols>
    <SymbolEntry>
      <Name>start</Name>
      <Address>00B30047</Address>
    </SymbolEntry>
  </UserdefinedSymbols>
  <Comments>Info about this table:
</Comments>
</CheatTable>
