<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>2</ID>
      <Description>"Instant Hand Mine"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Factorio 1.1.104
  Version: 
  Date   : 2024-03-31
  Author : User

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(instantHandMineAOB,Factorio.exe,76 50 33 C0 48 89 46 70) // should be unique

instantHandMineAOB:
  nop 2

registersymbol(instantHandMineAOB)

[DISABLE]

instantHandMineAOB:
  db 76 50 33 C0 48 89 46 70

unregistersymbol(instantHandMineAOB)

{
// ORIGINAL CODE - INJECTION POINT: Factorio.ManualMiner::performMining+3C7

Factorio.ManualMiner::performMining+394: F2 0F 5E 35 14 E4 77 01  - divsd xmm6,[Factorio.exe+18A6550]
Factorio.ManualMiner::performMining+39C: 48 8B 8E 88 00 00 00     - mov rcx,[rsi+Factorio.dtor_list_head+38]
Factorio.ManualMiner::performMining+3A3: 48 8B 01                 - mov rax,[rcx]
Factorio.ManualMiner::performMining+3A6: FF 50 20                 - call qword ptr [rax+20]
Factorio.ManualMiner::performMining+3A9: F2 0F 59 C6              - mulsd xmm0,xmm6
Factorio.ManualMiner::performMining+3AD: F2 0F 58 46 70           - addsd xmm0,[rsi+70]
Factorio.ManualMiner::performMining+3B2: F2 0F 11 46 70           - movsd [rsi+70],xmm0
Factorio.ManualMiner::performMining+3B7: 48 8B 4E 28              - mov rcx,[rsi+28]
Factorio.ManualMiner::performMining+3BB: 48 8B 41 48              - mov rax,[rcx+48]
Factorio.ManualMiner::performMining+3BF: 66 0F 2F 80 80 02 00 00  - comisd xmm0,[rax+Factorio.ssprintf_buffer+130]
// ---------- INJECTING HERE ----------
Factorio.ManualMiner::performMining+3C7: 76 50                    - jna Factorio.ManualMiner::performMining+419
// ---------- DONE INJECTING  ----------
Factorio.ManualMiner::performMining+3C9: 33 C0                    - xor eax,eax
Factorio.ManualMiner::performMining+3CB: 48 89 46 70              - mov [rsi+70],rax
Factorio.ManualMiner::performMining+3CF: 48 8B 49 48              - mov rcx,[rcx+48]
Factorio.ManualMiner::performMining+3D3: E8 18 55 1D 00           - call Factorio.EntityPrototype::getMinedSound
Factorio.ManualMiner::performMining+3D8: 4C 8B F0                 - mov r14,rax
Factorio.ManualMiner::performMining+3DB: 41 B0 01                 - mov r8b,01
Factorio.ManualMiner::performMining+3DE: 48 8B 56 28              - mov rdx,[rsi+28]
Factorio.ManualMiner::performMining+3E2: 48 8B CE                 - mov rcx,rsi
Factorio.ManualMiner::performMining+3E5: E8 A6 04 00 00           - call Factorio.ManualMiner::mineEntity
Factorio.ManualMiner::performMining+3EA: 0F B6 F8                 - movzx edi,al
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>7</ID>
      <Description>"Instant Drill Mine"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Factorio 1.1.104
  Version: 
  Date   : 2024-03-31
  Author : User

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(instantDrillMineAOB,Factorio.exe,0F 82 81 01 00 00 4C) // should be unique

instantDrillMineAOB:
  nop 6

registersymbol(instantDrillMineAOB)

[DISABLE]

instantDrillMineAOB:
  db 0F 82 81 01 00 00

unregistersymbol(instantDrillMineAOB)

{
// ORIGINAL CODE - INJECTION POINT: Factorio.MiningDrill::performMining+8A

Factorio.MiningDrill::performMining+4E: C6 81 29 02 00 00 01        - mov byte ptr [rcx+Factorio.ssprintf_buffer+D9],01
Factorio.MiningDrill::performMining+55: 48 8D 05 1C 91 2B 01        - lea rax,[Factorio.StuckItemsFallback::`vftable']
Factorio.MiningDrill::performMining+5C: 48 89 44 24 38              - mov [rsp+38],rax
Factorio.MiningDrill::performMining+61: 48 8D 81 D8 01 00 00        - lea rax,[rcx+Factorio.ssprintf_buffer+88]
Factorio.MiningDrill::performMining+68: 48 89 45 87                 - mov [rbp-79],rax
Factorio.MiningDrill::performMining+6C: 48 8B 81 48 01 00 00        - mov rax,[rcx+Factorio.dtor_list_head+F8]
Factorio.MiningDrill::performMining+73: F2 0F 10 81 60 02 00 00     - movsd xmm0,[rcx+Factorio.ssprintf_buffer+110]
Factorio.MiningDrill::performMining+7B: 45 33 FF                    - xor r15d,r15d
Factorio.MiningDrill::performMining+7E: 4C 8D 0D 1B 18 3F 01        - lea r9,[Factorio.ResourceMiningCollector::`vftable']
Factorio.MiningDrill::performMining+85: 66 0F 2F 40 08              - comisd xmm0,[rax+08]
// ---------- INJECTING HERE ----------
Factorio.MiningDrill::performMining+8A: 0F 82 81 01 00 00           - jb Factorio.MiningDrill::performMining+211
// ---------- DONE INJECTING  ----------
Factorio.MiningDrill::performMining+90: 4C 8D A1 B0 01 00 00        - lea r12,[rcx+Factorio.ssprintf_buffer+60]
Factorio.MiningDrill::performMining+97: 66 0F 1F 84 00 00 00 00 00  - nop word ptr [rax+rax+00000000]
Factorio.MiningDrill::performMining+A0: F2 0F 5C 40 08              - subsd xmm0,[rax+08]
Factorio.MiningDrill::performMining+A5: F2 0F 11 83 60 02 00 00     - movsd [rbx+Factorio.ssprintf_buffer+110],xmm0
Factorio.MiningDrill::performMining+AD: 4C 89 65 8F                 - mov [rbp-71],r12
Factorio.MiningDrill::performMining+B1: 0F 57 C0                    - xorps xmm0,xmm0
Factorio.MiningDrill::performMining+B4: F3 0F 7F 45 97              - movdqu [rbp-69],xmm0
Factorio.MiningDrill::performMining+B9: 4C 89 7D A7                 - mov [rbp-59],r15
Factorio.MiningDrill::performMining+BD: 48 8B 83 80 00 00 00        - mov rax,[rbx+Factorio.dtor_list_head+30]
Factorio.MiningDrill::performMining+C4: 48 8B 88 28 03 00 00        - mov rcx,[rax+Factorio.ssprintf_buffer+1D8]
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>3</ID>
      <Description>"Get Cursor Stack Pointer"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Factorio 1.1.104
  Version: 
  Date   : 2024-03-31
  Author : User

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(getCursorStackAOB,Factorio.exe,C3 CC CC CC CC CC CC CC CC 48 8B 81 30 FF) // should be unique
alloc(newmem,$1000,getCursorStackAOB)
alloc(cursorStack,8)

label(code)
label(return)

newmem:
  mov qword ptr [cursorStack],rax

code:
  ret 
  int 3 
  int 3 
  int 3 
  int 3 
  jmp return

getCursorStackAOB:
  jmp newmem
return:
registersymbol(getCursorStackAOB)
registersymbol(cursorStack)

[DISABLE]

getCursorStackAOB:
  db C3 CC CC CC CC

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: Factorio.Character::getCursorStack+7

Factorio.exe+5ED2B: CC                    - int 3 
Factorio.exe+5ED2C: CC                    - int 3 
Factorio.exe+5ED2D: CC                    - int 3 
Factorio.exe+5ED2E: CC                    - int 3 
Factorio.exe+5ED2F: CC                    - int 3 
Factorio.Character::transferToStorageInterface: 48 81 C1 D8 FE FF FF  - add rcx,FFFFFFFFFFFFFED8
Factorio.Character::transferToStorageInterface+7: 45 33 C0              - xor r8d,r8d
Factorio.Character::transferToStorageInterface+A: E9 01 FD FF FF        - jmp Factorio.exe+5EA40
Factorio.exe+5ED3F: CC                    - int 3 
Factorio.Character::getCursorStack: 48 8D 81 08 05 00 00  - lea rax,[rcx+Factorio._tls+1B8]
// ---------- INJECTING HERE ----------
Factorio.Character::getCursorStack+7: C3                    - ret 
// ---------- DONE INJECTING  ----------
Factorio.Character::getCursorStack+8: CC                    - int 3 
Factorio.exe+5ED49: CC                    - int 3 
Factorio.exe+5ED4A: CC                    - int 3 
Factorio.exe+5ED4B: CC                    - int 3 
Factorio.exe+5ED4C: CC                    - int 3 
Factorio.exe+5ED4D: CC                    - int 3 
Factorio.exe+5ED4E: CC                    - int 3 
Factorio.exe+5ED4F: CC                    - int 3 
Factorio.Character::getPickingPosition: 48 8B 81 30 FF FF FF  - mov rax,[rcx-Factorio.dtor_list_head+80]
Factorio.Character::getPickingPosition+7: 48 89 02              - mov [rdx],rax
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>4</ID>
      <Description>""</Description>
      <ShowAsSigned>0</ShowAsSigned>
      <VariableType>4 Bytes</VariableType>
      <Address>cursorStack</Address>
      <Offsets>
        <Offset>0</Offset>
      </Offsets>
    </CheatEntry>
    <CheatEntry>
      <ID>5</ID>
      <Description>"Unfinished Instant Machine Craft"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Factorio 1.1.104
  Version: 
  Date   : 2024-03-31
  Author : User

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(unfinInstCraftMachAOB,Factorio.exe,0F 85 F9 00 00 00 F2) // should be unique

unfinInstCraftMachAOB:
  jmp Factorio.CraftingMachine::useRecipeOnSource+1ED
  nop

registersymbol(unfinInstCraftMachAOB)

[DISABLE]

unfinInstCraftMachAOB:
  db 0F 85 F9 00 00 00

unregistersymbol(unfinInstCraftMachAOB)

{
// ORIGINAL CODE - INJECTION POINT: Factorio.CraftingMachine::useRecipeOnSource+EE

Factorio.CraftingMachine::useRecipeOnSource+C9: F2 0F 10 83 A8 01 00 00           - movsd xmm0,[rbx+Factorio.ssprintf_buffer+58]
Factorio.CraftingMachine::useRecipeOnSource+D1: 0F 57 FF                          - xorps xmm7,xmm7
Factorio.CraftingMachine::useRecipeOnSource+D4: 66 0F 2F C6                       - comisd xmm0,xmm6
Factorio.CraftingMachine::useRecipeOnSource+D8: 72 58                             - jb Factorio.CraftingMachine::useRecipeOnSource+132
Factorio.CraftingMachine::useRecipeOnSource+DA: 48 8B 03                          - mov rax,[rbx]
Factorio.CraftingMachine::useRecipeOnSource+DD: 45 33 C0                          - xor r8d,r8d
Factorio.CraftingMachine::useRecipeOnSource+E0: 48 8B D7                          - mov rdx,rdi
Factorio.CraftingMachine::useRecipeOnSource+E3: 48 8B CB                          - mov rcx,rbx
Factorio.CraftingMachine::useRecipeOnSource+E6: FF 90 48 0B 00 00                 - call qword ptr [rax+00000B48]
Factorio.CraftingMachine::useRecipeOnSource+EC: 3C 01                             - cmp al,01
// ---------- INJECTING HERE ----------
Factorio.CraftingMachine::useRecipeOnSource+EE: 0F 85 F9 00 00 00                 - jne Factorio.CraftingMachine::useRecipeOnSource+1ED
// ---------- DONE INJECTING  ----------
Factorio.CraftingMachine::useRecipeOnSource+F4: F2 0F 10 8B A8 01 00 00           - movsd xmm1,[rbx+Factorio.ssprintf_buffer+58]
Factorio.CraftingMachine::useRecipeOnSource+FC: 0F 57 C0                          - xorps xmm0,xmm0
Factorio.CraftingMachine::useRecipeOnSource+FF: F2 0F 5C 4F 50                    - subsd xmm1,[rdi+50]
Factorio.CraftingMachine::useRecipeOnSource+104: 48 8B 03                          - mov rax,[rbx]
Factorio.CraftingMachine::useRecipeOnSource+107: 48 8B CB                          - mov rcx,rbx
Factorio.CraftingMachine::useRecipeOnSource+10A: 48 C7 83 A8 01 00 00 00 00 00 00  - mov qword ptr [rbx+Factorio.ssprintf_buffer+58],00000000
Factorio.CraftingMachine::useRecipeOnSource+115: F2 0F 5F C1                       - maxsd xmm0,xmm1
Factorio.CraftingMachine::useRecipeOnSource+119: F2 0F 11 83 B0 01 00 00           - movsd [rbx+Factorio.ssprintf_buffer+60],xmm0
Factorio.CraftingMachine::useRecipeOnSource+121: FF 90 18 0B 00 00                 - call qword ptr [rax+00000B18]
Factorio.CraftingMachine::useRecipeOnSource+127: 84 C0                             - test al,al
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>6</ID>
      <Description>"An Other Unfinished Instant Machine Craft"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Factorio 1.1.104
  Version: 
  Date   : 2024-03-31
  Author : User

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(anotherunfinmachcraftaob,Factorio.exe,72 41 0F 1F 84 00 00 00 00 00) // should be unique

anotherunfinmachcraftaob:
  nop 2

registersymbol(anotherunfinmachcraftaob)

[DISABLE]

anotherunfinmachcraftaob:
  db 72 41 0F 1F 84 00 00 00 00 00

unregistersymbol(anotherunfinmachcraftaob)

{
// ORIGINAL CODE - INJECTION POINT: Factorio.CraftingMachine::useRecipeOnSource+86

Factorio.CraftingMachine::useRecipeOnSource+60: F2 0F 58 C7              - addsd xmm0,xmm7
Factorio.CraftingMachine::useRecipeOnSource+64: 4A 8B 0C C2              - mov rcx,[rdx+r8*8]
Factorio.CraftingMachine::useRecipeOnSource+68: 48 8B 51 70              - mov rdx,[rcx+70]
Factorio.CraftingMachine::useRecipeOnSource+6C: 0F B7 C8                 - movzx ecx,ax
Factorio.CraftingMachine::useRecipeOnSource+6F: 4C 8B 02                 - mov r8,[rdx]
Factorio.CraftingMachine::useRecipeOnSource+72: 48 8D 3C 49              - lea rdi,[rcx+rcx*2]
Factorio.CraftingMachine::useRecipeOnSource+76: 48 C1 E7 05              - shl rdi,05
Factorio.CraftingMachine::useRecipeOnSource+7A: 49 03 38                 - add rdi,[r8]
Factorio.CraftingMachine::useRecipeOnSource+7D: F2 0F 10 77 50           - movsd xmm6,[rdi+50]
Factorio.CraftingMachine::useRecipeOnSource+82: 66 0F 2F C6              - comisd xmm0,xmm6
// ---------- INJECTING HERE ----------
Factorio.CraftingMachine::useRecipeOnSource+86: 72 41                    - jb Factorio.CraftingMachine::useRecipeOnSource+C9
// ---------- DONE INJECTING  ----------
Factorio.CraftingMachine::useRecipeOnSource+88: 0F 1F 84 00 00 00 00 00  - nop dword ptr [rax+rax+00000000]
Factorio.CraftingMachine::useRecipeOnSource+90: 48 8B 03                 - mov rax,[rbx]
Factorio.CraftingMachine::useRecipeOnSource+93: 48 8B D7                 - mov rdx,rdi
Factorio.CraftingMachine::useRecipeOnSource+96: 48 8B CB                 - mov rcx,rbx
Factorio.CraftingMachine::useRecipeOnSource+99: FF 90 30 0B 00 00        - call qword ptr [rax+00000B30]
Factorio.CraftingMachine::useRecipeOnSource+9F: 3C 01                    - cmp al,01
Factorio.CraftingMachine::useRecipeOnSource+A1: 0F 85 46 01 00 00        - jne Factorio.CraftingMachine::useRecipeOnSource+1ED
Factorio.CraftingMachine::useRecipeOnSource+A7: 48 8B 03                 - mov rax,[rbx]
Factorio.CraftingMachine::useRecipeOnSource+AA: 48 8B CB                 - mov rcx,rbx
Factorio.CraftingMachine::useRecipeOnSource+AD: FF 90 18 0B 00 00        - call qword ptr [rax+00000B18]
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
