<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>63</ID>
      <Description>"Compact mode"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
--https://forum.cheatengine.org/viewtopic.php?t=570055
LuaCall(function cycleFullCompact(sender,force) local state = not(compactmenuitem.Caption == 'Compact View Mode'); if force~=nil then state = not force end; compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode'; getMainForm().Splitter1.Visible = state; getMainForm().Panel4.Visible    = state; getMainForm().Panel5.Visible    = state; end; function addCompactMenu() if compactmenualreadyexists then return end; local parent = getMainForm().Menu.Items; compactmenuitem = createMenuItem(parent); parent.add(compactmenuitem); compactmenuitem.Caption = 'Compact View Mode'; compactmenuitem.OnClick = cycleFullCompact; compactmenualreadyexists = 'yes'; end; addCompactMenu(); cycleFullCompact(nil,true))

[DISABLE]
LuaCall(cycleFullCompact(nil,false))
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>1</ID>
      <Description>"Buy cargo discount"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : StarTradersFrontiers.exe
  Version: 
  Date   : 2022-04-13
  Author : bbxfox @ https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_PURCHASE_GOODS,$process,8B 85 6C FE FF FF 29) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(i_base_credit_addr)
label(vf_purchase_multi)

newmem:
  lea eax, [ecx+24]
  mov [i_base_credit_addr], eax
  mov eax,[ebp-00000194]

  cvtsi2ss xmm7, eax
  movss xmm6, [vf_purchase_multi]
  mulss xmm7, xmm6
  cvtss2si eax, xmm7

  mov [ebp-00000194],eax

code:
  mov eax,[ebp-00000194]
  jmp return

align 10 cc
  i_base_credit_addr:
  dd 0
  vf_purchase_multi:
  dd (float)0.5

INJECT_PURCHASE_GOODS:
  jmp newmem
  nop
return:
registersymbol(vf_purchase_multi)
registersymbol(i_base_credit_addr)
registersymbol(INJECT_PURCHASE_GOODS)

[DISABLE]

INJECT_PURCHASE_GOODS:
  db 8B 85 6C FE FF FF

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: StarTradersFrontiers.exe+297325

StarTradersFrontiers.exe+29730B: 8B 30                 - mov esi,[eax]
StarTradersFrontiers.exe+29730D: 8B 01                 - mov eax,[ecx]
StarTradersFrontiers.exe+29730F: FF 50 18              - call dword ptr [eax+18]
StarTradersFrontiers.exe+297312: 8B 8D 64 FE FF FF     - mov ecx,[ebp-0000019C]
StarTradersFrontiers.exe+297318: 50                    - push eax
StarTradersFrontiers.exe+297319: FF 56 2C              - call dword ptr [esi+2C]
StarTradersFrontiers.exe+29731C: 8B 03                 - mov eax,[ebx]
StarTradersFrontiers.exe+29731E: 8B CB                 - mov ecx,ebx
StarTradersFrontiers.exe+297320: FF 50 24              - call dword ptr [eax+24]
StarTradersFrontiers.exe+297323: 8B C8                 - mov ecx,eax
// ---------- INJECTING HERE ----------
StarTradersFrontiers.exe+297325: 8B 85 6C FE FF FF     - mov eax,[ebp-00000194]
// ---------- DONE INJECTING  ----------
StarTradersFrontiers.exe+29732B: 29 41 24              - sub [ecx+24],eax
StarTradersFrontiers.exe+29732E: 79 07                 - jns StarTradersFrontiers.exe+297337
StarTradersFrontiers.exe+297330: C7 41 24 00 00 00 00  - mov [ecx+24],00000000
StarTradersFrontiers.exe+297337: 01 85 60 FE FF FF     - add [ebp-000001A0],eax
StarTradersFrontiers.exe+29733D: 8B 07                 - mov eax,[edi]
StarTradersFrontiers.exe+29733F: 8B CF                 - mov ecx,edi
StarTradersFrontiers.exe+297341: FF 90 C8 02 00 00     - call dword ptr [eax+000002C8]
StarTradersFrontiers.exe+297347: 8B 10                 - mov edx,[eax]
StarTradersFrontiers.exe+297349: 8B C8                 - mov ecx,eax
StarTradersFrontiers.exe+29734B: FF 52 78              - call dword ptr [edx+78]
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>5</ID>
          <Description>"Multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>vf_purchase_multi</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>2</ID>
          <Description>"Credit"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_credit_addr</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>3</ID>
      <Description>"Sell cargo credit multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : StarTradersFrontiers.exe
  Version: 
  Date   : 2022-04-13
  Author : bbxfox @ https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_SELL_GOODS,$process,01 70 24 79 07 C7 40 24 00 00 00 00 8B CE) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(vf_sell_multi)

newmem:
  cvtsi2ss xmm7, esi
  movss xmm6, [vf_sell_multi]
  mulss xmm7, xmm6
  cvtss2si esi, xmm7

code:
  add [eax+24],esi
  reassemble(INJECT_SELL_GOODS+3)
  //jns StarTradersFrontiers.exe+2A37F7
  jmp return

align 10 cc
  vf_sell_multi:
  dd (float)1.5

INJECT_SELL_GOODS:
  jmp newmem
return:

registersymbol(vf_sell_multi)
registersymbol(INJECT_SELL_GOODS)

[DISABLE]

INJECT_SELL_GOODS:
  db 01 70 24 79 07

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: StarTradersFrontiers.exe+2A37EB

StarTradersFrontiers.exe+2A37C9: FF 15 00 93 DB 00     - call dword ptr [StarTradersFrontiers.exe+699300]
StarTradersFrontiers.exe+2A37CF: 83 C4 04              - add esp,04
StarTradersFrontiers.exe+2A37D2: 8B 44 24 54           - mov eax,[esp+54]
StarTradersFrontiers.exe+2A37D6: 03 44 24 34           - add eax,[esp+34]
StarTradersFrontiers.exe+2A37DA: 8B 74 24 58           - mov esi,[esp+58]
StarTradersFrontiers.exe+2A37DE: 03 F0                 - add esi,eax
StarTradersFrontiers.exe+2A37E0: 8B 03                 - mov eax,[ebx]
StarTradersFrontiers.exe+2A37E2: 8B CB                 - mov ecx,ebx
StarTradersFrontiers.exe+2A37E4: 89 74 24 58           - mov [esp+58],esi
StarTradersFrontiers.exe+2A37E8: FF 50 24              - call dword ptr [eax+24]
// ---------- INJECTING HERE ----------
StarTradersFrontiers.exe+2A37EB: 01 70 24              - add [eax+24],esi
// ---------- DONE INJECTING  ----------
StarTradersFrontiers.exe+2A37EE: 79 07                 - jns StarTradersFrontiers.exe+2A37F7
StarTradersFrontiers.exe+2A37F0: C7 40 24 00 00 00 00  - mov [eax+24],00000000
StarTradersFrontiers.exe+2A37F7: 8B CE                 - mov ecx,esi
StarTradersFrontiers.exe+2A37F9: E8 F2 46 21 00        - call StarTradersFrontiers.exe+4B7EF0
StarTradersFrontiers.exe+2A37FE: 8B 4C 24 4C           - mov ecx,[esp+4C]
StarTradersFrontiers.exe+2A3802: 50                    - push eax
StarTradersFrontiers.exe+2A3803: 8B 01                 - mov eax,[ecx]
StarTradersFrontiers.exe+2A3805: FF 50 28              - call dword ptr [eax+28]
StarTradersFrontiers.exe+2A3808: 8B C8                 - mov ecx,eax
StarTradersFrontiers.exe+2A380A: E8 B1 59 21 00        - call StarTradersFrontiers.exe+4B91C0
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>4</ID>
          <Description>"Multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>vf_sell_multi</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>7</ID>
      <Description>"When view Crew Manifest: Min. HP/Morale; extra XP"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : StarTradersFrontiers.exe
  Version: 
  Date   : 2022-04-13
  Author : bbxfox @ https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_CHAR_STAT,$process,8B 81 D0 00 00 00 C3) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(i_extra_exp_per_stat)
label(i_min_morale)
label(i_min_hp)

newmem:
  mov eax, [i_min_morale]
  cmp [ecx+000000CC], eax
  jae @F
  mov [ecx+000000CC], eax

@@:
  mov eax, [i_min_hp]
  cmp [ecx+000000C8], eax
  jae @F
  mov [ecx+000000C8], eax

@@:
  cmp dword ptr [i_extra_exp_per_stat], 0
  je code
  mov eax, [i_extra_exp_per_stat]
  add [ecx+000000D0], eax

  db EB 3B 54 68 69 73 20 74 61 62 6C 65 20 63 6F 6D 65 73 20 66 72 6F 6D 20 68 74 74 70 73 3A 2F
  db 2F 6F 70 65 6E 63 68 65 61 74 74 61 62 6C 65 73 2E 63 6F 6D 20 2F 20 43 45 20 37 2E 34 2B

code:
  mov eax,[ecx+000000D0]
  jmp return

align 10 cc
  i_extra_exp_per_stat:
  dd 0
  i_min_morale:
  dd #118
  i_min_hp:
  dd #119

INJECT_CHAR_STAT:
  jmp newmem
  nop
return:
registersymbol(i_min_morale)
registersymbol(i_min_hp)
registersymbol(i_extra_exp_per_stat)
registersymbol(INJECT_CHAR_STAT)

[DISABLE]

INJECT_CHAR_STAT:
  db 8B 81 D0 00 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: StarTradersFrontiers.exe+3200

StarTradersFrontiers.exe+31EC: CC                 - int 3 
StarTradersFrontiers.exe+31ED: CC                 - int 3 
StarTradersFrontiers.exe+31EE: CC                 - int 3 
StarTradersFrontiers.exe+31EF: CC                 - int 3 
StarTradersFrontiers.exe+31F0: 55                 - push ebp
StarTradersFrontiers.exe+31F1: 8B EC              - mov ebp,esp
StarTradersFrontiers.exe+31F3: 8B 45 08           - mov eax,[ebp+08]
StarTradersFrontiers.exe+31F6: 89 81 CC 00 00 00  - mov [ecx+000000CC],eax
StarTradersFrontiers.exe+31FC: 5D                 - pop ebp
StarTradersFrontiers.exe+31FD: C2 04 00           - ret 0004
// ---------- INJECTING HERE ----------
StarTradersFrontiers.exe+3200: 8B 81 D0 00 00 00  - mov eax,[ecx+000000D0]
// ---------- DONE INJECTING  ----------
StarTradersFrontiers.exe+3206: C3                 - ret 
StarTradersFrontiers.exe+3207: CC                 - int 3 
StarTradersFrontiers.exe+3208: CC                 - int 3 
StarTradersFrontiers.exe+3209: CC                 - int 3 
StarTradersFrontiers.exe+320A: CC                 - int 3 
StarTradersFrontiers.exe+320B: CC                 - int 3 
StarTradersFrontiers.exe+320C: CC                 - int 3 
StarTradersFrontiers.exe+320D: CC                 - int 3 
StarTradersFrontiers.exe+320E: CC                 - int 3 
StarTradersFrontiers.exe+320F: CC                 - int 3 
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>12</ID>
          <Description>"Min. Morale"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_min_morale</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>11</ID>
          <Description>"Min. HP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_min_hp</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>8</ID>
          <Description>"Extra XP when open stat (~*4; no level up)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_extra_exp_per_stat</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>10</ID>
          <Description>"***Not every crew affected (only on screen)"</Description>
          <Color>400080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>16</ID>
      <Description>"Ground battle: hover over char: heal"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : StarTradersFrontiers.exe
  Version: 
  Date   : 2022-04-14
  Author : bbxfox @ https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GROUND_BATTLE_HOVER_CHAR,$process,8B 81 C8 00 00 00 C3) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(is_set_1hk)

newmem:
  lea eax, [ecx+000000B0]
  mov [i_last_hover_char_addr], eax

  //cmp dword ptr [ecx+000000B0], 0
  //je to_enemy
  cmp dword ptr [ecx+000000BC], 0
  je to_enemy


  push eax
  //mov eax,[ecx+000000C8]
  //cmp eax, #120
  //jge @F
  mov eax, #120
  mov [ecx+000000C8], eax
@@:
  //mov eax,[ecx+000000CC]
  //cmp eax, #120
  //jge @F
  mov [ecx+000000CC], eax

@@:
  pop eax
  jmp code

to_enemy:
  cmp dword ptr [is_set_1hk], 1
  jne code
  push eax
  mov eax,[ecx+000000C8]
  cmp eax, #0
  jbe @F
  mov eax, #0
  mov [ecx+000000C8], eax

@@:
  pop eax

code:
  mov eax,[ecx+000000C8]
  jmp return

align 10 cc
  is_set_1hk: //buggy
  dd 0
  i_last_hover_char_addr:
  dd 0

INJECT_GROUND_BATTLE_HOVER_CHAR:
  jmp newmem
  nop
return:
registersymbol(is_set_1hk)
registersymbol(INJECT_GROUND_BATTLE_HOVER_CHAR)

[DISABLE]

INJECT_GROUND_BATTLE_HOVER_CHAR:
  db 8B 81 C8 00 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: StarTradersFrontiers.exe+31C0

StarTradersFrontiers.exe+31AC: CC                 - int 3 
StarTradersFrontiers.exe+31AD: CC                 - int 3 
StarTradersFrontiers.exe+31AE: CC                 - int 3 
StarTradersFrontiers.exe+31AF: CC                 - int 3 
StarTradersFrontiers.exe+31B0: 55                 - push ebp
StarTradersFrontiers.exe+31B1: 8B EC              - mov ebp,esp
StarTradersFrontiers.exe+31B3: 8B 45 08           - mov eax,[ebp+08]
StarTradersFrontiers.exe+31B6: 89 81 C4 00 00 00  - mov [ecx+000000C4],eax
StarTradersFrontiers.exe+31BC: 5D                 - pop ebp
StarTradersFrontiers.exe+31BD: C2 04 00           - ret 0004
// ---------- INJECTING HERE ----------
StarTradersFrontiers.exe+31C0: 8B 81 C8 00 00 00  - mov eax,[ecx+000000C8]
// ---------- DONE INJECTING  ----------
StarTradersFrontiers.exe+31C6: C3                 - ret 
StarTradersFrontiers.exe+31C7: CC                 - int 3 
StarTradersFrontiers.exe+31C8: CC                 - int 3 
StarTradersFrontiers.exe+31C9: CC                 - int 3 
StarTradersFrontiers.exe+31CA: CC                 - int 3 
StarTradersFrontiers.exe+31CB: CC                 - int 3 
StarTradersFrontiers.exe+31CC: CC                 - int 3 
StarTradersFrontiers.exe+31CD: CC                 - int 3 
StarTradersFrontiers.exe+31CE: CC                 - int 3 
StarTradersFrontiers.exe+31CF: CC                 - int 3 
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>34</ID>
          <Description>"***Disable when not in battle"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>19</ID>
          <Description>"Last char. HP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_last_hover_char_addr</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>20</ID>
          <Description>"Last char. morale"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_last_hover_char_addr</Address>
          <Offsets>
            <Offset>4</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>33</ID>
          <Description>"1HK?"</Description>
          <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>is_set_1hk</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>23</ID>
      <Description>"Ship battle: damage multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : StarTradersFrontiers.exe
  Version: 
  Date   : 2022-04-14
  Author : bbxfox @ https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_SHIP_BATTLE,$process,29 78 4C 79 07) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(is_ship_battle_on)
label(i_to_player_ship_damage_option)
label(vf_to_player_divisor)
label(i_to_enemy_ship_damage_option)
label(vf_to_enemy_multiplier)
label(i_last_ship_addr)

newmem:
  push ebx
  lea ebx, [eax+4C]
  mov [i_last_ship_addr], ebx
  pop ebx

  cmp dword ptr [is_ship_battle_on], 1
  jne code

  cmp dword ptr [eax+40], 0
  je to_enemy
  cmp dword ptr [eax+44], 0
  je to_enemy

  cmp dword ptr [i_to_player_ship_damage_option], 0
  je code
  cmp dword ptr [i_to_player_ship_damage_option], 1
  jne check_hp_full

  movss xmm6, [vf_to_player_divisor]
  cvtsi2ss xmm7, edi
  divss xmm7, xmm6
  cvtss2si edi, xmm7
  jmp code


check_hp_full:
  cmp dword ptr [i_to_player_ship_damage_option], 2
  jne code
  push ebx
  mov ebx, [eax+54]
  mov [eax+4C],ebx
  mov edi, 1
  pop ebx


  jmp code
to_enemy:
  cmp dword ptr [i_to_enemy_ship_damage_option], 0
  je code
  cmp dword ptr [i_to_enemy_ship_damage_option], 1
  jne check_enemy_1hk

  movss xmm6, [vf_to_enemy_multiplier]
  cvtsi2ss xmm7, edi
  mulss xmm7, xmm6
  cvtss2si edi, xmm7
  jmp code


check_enemy_1hk:
  cmp dword ptr [eax+4C], 1
  jbe code
  mov dword ptr [eax+4C], 1

code:
  sub [eax+4C],edi
  reassemble(INJECT_SHIP_BATTLE+3)
  //jns StarTradersFrontiers.exe+BE759


  jmp return

align 10 cc
  is_ship_battle_on:
  dd 1
  i_to_player_ship_damage_option: //0: Normal, 1: by divisor, 2: Full
  dd 1
  vf_to_player_divisor:
  dd (float)2
  i_to_enemy_ship_damage_option: //0: Normal, 1: by multiplier, 2: 1hk
  dd 2
  vf_to_enemy_multiplier:
  dd (float)1.5
  i_last_ship_addr:
  dd 0

INJECT_SHIP_BATTLE:
  jmp newmem
return:

registersymbol(i_last_ship_addr)
registersymbol(is_ship_battle_on)
registersymbol(i_to_player_ship_damage_option)
registersymbol(vf_to_player_divisor)
registersymbol(i_to_enemy_ship_damage_option)
registersymbol(vf_to_enemy_multiplier)
registersymbol(INJECT_SHIP_BATTLE)

[DISABLE]

INJECT_SHIP_BATTLE:
  db 29 78 4C 79 07

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: StarTradersFrontiers.exe+BD92D

StarTradersFrontiers.exe+BD911: 50                    - push eax
StarTradersFrontiers.exe+BD912: 53                    - push ebx
StarTradersFrontiers.exe+BD913: 68 F8 21 F6 00        - push StarTradersFrontiers.exe+6D21F8
StarTradersFrontiers.exe+BD918: EB A4                 - jmp StarTradersFrontiers.exe+BD8BE
StarTradersFrontiers.exe+BD91A: 8B 75 C0              - mov esi,[ebp-40]
StarTradersFrontiers.exe+BD91D: 8B 5D BC              - mov ebx,[ebp-44]
StarTradersFrontiers.exe+BD920: 8B CB                 - mov ecx,ebx
StarTradersFrontiers.exe+BD922: 8B 03                 - mov eax,[ebx]
StarTradersFrontiers.exe+BD924: FF 90 F4 00 00 00     - call dword ptr [eax+000000F4]
StarTradersFrontiers.exe+BD92A: 8B 7D DC              - mov edi,[ebp-24]
// ---------- INJECTING HERE ----------
StarTradersFrontiers.exe+BD92D: 29 78 4C              - sub [eax+4C],edi
// ---------- DONE INJECTING  ----------
StarTradersFrontiers.exe+BD930: 79 07                 - jns StarTradersFrontiers.exe+BD939
StarTradersFrontiers.exe+BD932: C7 40 4C 00 00 00 00  - mov [eax+4C],00000000
StarTradersFrontiers.exe+BD939: FF 75 D8              - push [ebp-28]
StarTradersFrontiers.exe+BD93C: 51                    - push ecx
StarTradersFrontiers.exe+BD93D: 57                    - push edi
StarTradersFrontiers.exe+BD93E: 53                    - push ebx
StarTradersFrontiers.exe+BD93F: 8B CE                 - mov ecx,esi
StarTradersFrontiers.exe+BD941: E8 EA 38 FF FF        - call StarTradersFrontiers.exe+B1230
StarTradersFrontiers.exe+BD946: 8B 45 D0              - mov eax,[ebp-30]
StarTradersFrontiers.exe+BD949: 01 83 E4 00 00 00     - add [ebx+000000E4],eax
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>62</ID>
          <Description>"Unknown data+"</Description>
          <Options moHideChildren="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>47</ID>
              <Description>"??"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>[i_base_data_addr]+3C</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>48</ID>
              <Description>"??"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>[i_base_data_addr]+40</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>49</ID>
              <Description>"??"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>[i_base_data_addr]+44</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>50</ID>
              <Description>"??"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>[i_base_data_addr]+48</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>51</ID>
              <Description>"??"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Double</VariableType>
              <Address>[i_base_data_addr]+50</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>52</ID>
              <Description>"??"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Double</VariableType>
              <Address>[i_base_data_addr]+58</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>56</ID>
              <Description>"??"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>[i_base_data_addr]+60</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>57</ID>
              <Description>"??"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[i_base_data_addr]+64</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>58</ID>
              <Description>"??"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>[i_base_data_addr]+68</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>59</ID>
              <Description>"??"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>[i_base_data_addr]+6C</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>60</ID>
              <Description>"??"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>[i_base_data_addr]+70</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>61</ID>
              <Description>"??"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>[i_base_data_addr]+74</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>53</ID>
              <Description>"??"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>[i_base_data_addr]+78</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>54</ID>
              <Description>"??"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>[i_base_data_addr]+7C</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>55</ID>
              <Description>"??"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Double</VariableType>
              <Address>[i_base_data_addr]+80</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>24</ID>
          <Description>"Last ship HP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>[i_last_ship_addr]</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>31</ID>
          <Description>"Last ship max HP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>[i_last_ship_addr]+8</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>25</ID>
          <Description>"Enabled?"</Description>
          <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>is_ship_battle_on</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>26</ID>
          <Description>"Damage to player option"</Description>
          <DropDownList DisplayValueAsItem="1">0:Normal
1:By divisor
2:HP nearly full
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_to_player_ship_damage_option</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>27</ID>
          <Description>"Divisor"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>vf_to_player_divisor</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>28</ID>
          <Description>"Damage to enemy option"</Description>
          <DropDownList DisplayValueAsItem="1">0:Normal
1:By multiplier
2:1 hit kill
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_to_enemy_ship_damage_option</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>29</ID>
          <Description>"Multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>vf_to_enemy_multiplier</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>36</ID>
      <Description>"Rep. grow multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : StarTradersFrontiers.exe
  Version: 
  Date   : 2022-04-14
  Author : bbxfox @ https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_REP_ADD,$process,01 41 1C 5D C2 04 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(vf_rep_multi)

newmem:
  cmp eax, 0
  jae @F
  neg eax
@@:
  cvtsi2ss xmm7, eax
  movss xmm6, [vf_rep_multi]
  mulss xmm7, xmm6
  cvtss2si eax, xmm7

code:
  add [ecx+1C],eax
  pop ebp
  ret 0004
  jmp return

align 10cc
  vf_rep_multi:
  dd (float)1.5

INJECT_REP_ADD:
  jmp newmem
  nop 2
return:
registersymbol(vf_rep_multi)
registersymbol(INJECT_REP_ADD)

[DISABLE]

INJECT_REP_ADD:
  db 01 41 1C 5D C2 04 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: StarTradersFrontiers.exe+10AD6

StarTradersFrontiers.exe+10AC9: CC        - int 3 
StarTradersFrontiers.exe+10ACA: CC        - int 3 
StarTradersFrontiers.exe+10ACB: CC        - int 3 
StarTradersFrontiers.exe+10ACC: CC        - int 3 
StarTradersFrontiers.exe+10ACD: CC        - int 3 
StarTradersFrontiers.exe+10ACE: CC        - int 3 
StarTradersFrontiers.exe+10ACF: CC        - int 3 
StarTradersFrontiers.exe+10AD0: 55        - push ebp
StarTradersFrontiers.exe+10AD1: 8B EC     - mov ebp,esp
StarTradersFrontiers.exe+10AD3: 8B 45 08  - mov eax,[ebp+08]
// ---------- INJECTING HERE ----------
StarTradersFrontiers.exe+10AD6: 01 41 1C  - add [ecx+1C],eax
// ---------- DONE INJECTING  ----------
StarTradersFrontiers.exe+10AD9: 5D        - pop ebp
StarTradersFrontiers.exe+10ADA: C2 04 00  - ret 0004
StarTradersFrontiers.exe+10ADD: CC        - int 3 
StarTradersFrontiers.exe+10ADE: CC        - int 3 
StarTradersFrontiers.exe+10ADF: CC        - int 3 
StarTradersFrontiers.exe+10AE0: 55        - push ebp
StarTradersFrontiers.exe+10AE1: 8B EC     - mov ebp,esp
StarTradersFrontiers.exe+10AE3: 8B 45 08  - mov eax,[ebp+08]
StarTradersFrontiers.exe+10AE6: 01 41 4C  - add [ecx+4C],eax
StarTradersFrontiers.exe+10AE9: 5D        - pop ebp
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>39</ID>
          <Description>"Multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>vf_rep_multi</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>38</ID>
      <Description>"No Rep. negitave trend"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : StarTradersFrontiers.exe
  Version: 
  Date   : 2022-04-14
  Author : bbxfox @ https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_REP_MINUS_X,$process,29 73 1C 83 7B 1C 64) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  add [ebx+1C],esi

code:
  //sub [ebx+1C],esi
  cmp dword ptr [ebx+1C],64
  jmp return

INJECT_REP_MINUS_X:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_REP_MINUS_X)

[DISABLE]

INJECT_REP_MINUS_X:
  db 29 73 1C 83 7B 1C 64

unregistersymbol(INJECT_REP_MINUS_X)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: StarTradersFrontiers.exe+1683BA

StarTradersFrontiers.exe+1683A3: F7 DA                 - neg edx
StarTradersFrontiers.exe+1683A5: 8B 37                 - mov esi,[edi]
StarTradersFrontiers.exe+1683A7: 52                    - push edx
StarTradersFrontiers.exe+1683A8: 8B CF                 - mov ecx,edi
StarTradersFrontiers.exe+1683AA: FF 56 2C              - call dword ptr [esi+2C]
StarTradersFrontiers.exe+1683AD: 8B 17                 - mov edx,[edi]
StarTradersFrontiers.exe+1683AF: FF 73 18              - push [ebx+18]
StarTradersFrontiers.exe+1683B2: 8B CF                 - mov ecx,edi
StarTradersFrontiers.exe+1683B4: FF 52 24              - call dword ptr [edx+24]
StarTradersFrontiers.exe+1683B7: 8B 75 08              - mov esi,[ebp+08]
// ---------- INJECTING HERE ----------
StarTradersFrontiers.exe+1683BA: 29 73 1C              - sub [ebx+1C],esi
// ---------- DONE INJECTING  ----------
StarTradersFrontiers.exe+1683BD: 83 7B 1C 64           - cmp dword ptr [ebx+1C],64
StarTradersFrontiers.exe+1683C1: B9 01 00 00 00        - mov ecx,00000001
StarTradersFrontiers.exe+1683C6: C7 45 08 02 00 00 00  - mov [ebp+08],00000002
StarTradersFrontiers.exe+1683CD: C7 45 FC 03 00 00 00  - mov [ebp-04],00000003
StarTradersFrontiers.exe+1683D4: 7E 0F                 - jle StarTradersFrontiers.exe+1683E5
StarTradersFrontiers.exe+1683D6: B9 03 00 00 00        - mov ecx,00000003
StarTradersFrontiers.exe+1683DB: 89 4D 08              - mov [ebp+08],ecx
StarTradersFrontiers.exe+1683DE: C7 45 FC 04 00 00 00  - mov [ebp-04],00000004
StarTradersFrontiers.exe+1683E5: 8B 43 20              - mov eax,[ebx+20]
StarTradersFrontiers.exe+1683E8: 83 F8 0C              - cmp eax,0C
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>43</ID>
      <Description>"Turn multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : StarTradersFrontiers.exe
  Version: 
  Date   : 2022-04-15
  Author : bbxfox @ https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_TURN_COUNT,$process,01 48 4C 83 78 4C 23) // should be unique
alloc(newmem,$1000)
aobscanmodule(INJECT_TURN_COUNT_2,$process,17 8B CF 8B F0 FF 52 24 01 70 4C 83 78 4C 23) // should be unique
alloc(newmem2,$1000)

label(code)
label(return)
label(i_base_data_addr)
label(vf_turn_multi)

newmem:
  mov [i_base_data_addr], eax
  movss xmm6, [vf_turn_multi]
  cvtsi2ss xmm7, ecx
  mulss xmm7, xmm6
  cvtss2si ecx, xmm7

code:
  add [eax+4C],ecx
  cmp dword ptr [eax+4C],23
  jmp return

align 10 cc
  vf_turn_multi:
  dd (float)0.12
  i_base_data_addr:
  dd 0


INJECT_TURN_COUNT:
  jmp newmem
  nop 2
return:
registersymbol(vf_turn_multi)
registersymbol(i_base_data_addr)
registersymbol(INJECT_TURN_COUNT)


label(code2)
label(return2)

newmem2:
  mov [i_base_data_addr], eax
  movss xmm6, [vf_turn_multi]
  cvtsi2ss xmm7, esi
  mulss xmm7, xmm6
  cvtss2si esi, xmm7


code2:
  add [eax+4C],esi
  cmp dword ptr [eax+4C],23
  jmp return2

INJECT_TURN_COUNT_2+08:
  jmp newmem2
  nop 2
return2:
registersymbol(INJECT_TURN_COUNT_2)


[DISABLE]

INJECT_TURN_COUNT:
  db 01 48 4C 83 78 4C 23

unregistersymbol(*)
dealloc(newmem)

INJECT_TURN_COUNT_2+08:
  db 01 70 4C 83 78 4C 23

unregistersymbol(INJECT_TURN_COUNT_2)
dealloc(newmem2)

{
// ORIGINAL CODE - INJECTION POINT: StarTradersFrontiers.exe+235C45

StarTradersFrontiers.exe+235C29: 8B C8                 - mov ecx,eax
StarTradersFrontiers.exe+235C2B: FF 92 F4 00 00 00     - call dword ptr [edx+000000F4]
StarTradersFrontiers.exe+235C31: 8B 10                 - mov edx,[eax]
StarTradersFrontiers.exe+235C33: 6A 00                 - push 00
StarTradersFrontiers.exe+235C35: 8B C8                 - mov ecx,eax
StarTradersFrontiers.exe+235C37: FF 52 6C              - call dword ptr [edx+6C]
StarTradersFrontiers.exe+235C3A: 8B 03                 - mov eax,[ebx]
StarTradersFrontiers.exe+235C3C: 8B CB                 - mov ecx,ebx
StarTradersFrontiers.exe+235C3E: FF 50 24              - call dword ptr [eax+24]
StarTradersFrontiers.exe+235C41: 8B 4C 24 48           - mov ecx,[esp+48]
// ---------- INJECTING HERE ----------
StarTradersFrontiers.exe+235C45: 01 48 4C              - add [eax+4C],ecx
// ---------- DONE INJECTING  ----------
StarTradersFrontiers.exe+235C48: 83 78 4C 23           - cmp dword ptr [eax+4C],23
StarTradersFrontiers.exe+235C4C: 7D 07                 - jnl StarTradersFrontiers.exe+235C55
StarTradersFrontiers.exe+235C4E: C7 40 4C 23 00 00 00  - mov [eax+4C],00000023
StarTradersFrontiers.exe+235C55: 8B 03                 - mov eax,[ebx]
StarTradersFrontiers.exe+235C57: 8B CB                 - mov ecx,ebx
StarTradersFrontiers.exe+235C59: FF 50 04              - call dword ptr [eax+04]
StarTradersFrontiers.exe+235C5C: 8B 13                 - mov edx,[ebx]
StarTradersFrontiers.exe+235C5E: 8B F0                 - mov esi,eax
StarTradersFrontiers.exe+235C60: 8B CB                 - mov ecx,ebx
StarTradersFrontiers.exe+235C62: 8B 3E                 - mov edi,[esi]
}

{
StarTradersFrontiers.exe+255D3B - 79 07                 - jns StarTradersFrontiers.exe+255D44
StarTradersFrontiers.exe+255D3D - C7 40 24 00000000     - mov [eax+24],00000000
StarTradersFrontiers.exe+255D44 - 8B 03                 - mov eax,[ebx]
StarTradersFrontiers.exe+255D46 - 8B CB                 - mov ecx,ebx
StarTradersFrontiers.exe+255D48 - FF 50 28              - call dword ptr [eax+28]
StarTradersFrontiers.exe+255D4B - 8B 17                 - mov edx,[edi]
StarTradersFrontiers.exe+255D4D - 8B CF                 - mov ecx,edi
StarTradersFrontiers.exe+255D4F - 8B F0                 - mov esi,eax
StarTradersFrontiers.exe+255D51 - FF 52 24              - call dword ptr [edx+24]

StarTradersFrontiers.exe+255D54 - 01 70 4C              - add [eax+4C],esi

StarTradersFrontiers.exe+255D57 - 83 78 4C 23           - cmp dword ptr [eax+4C],23
StarTradersFrontiers.exe+255D5B - 7D 07                 - jnl StarTradersFrontiers.exe+255D64
StarTradersFrontiers.exe+255D5D - C7 40 4C 23000000     - mov [eax+4C],00000023
StarTradersFrontiers.exe+255D64 - 8B 07                 - mov eax,[edi]
StarTradersFrontiers.exe+255D66 - 8B CF                 - mov ecx,edi
StarTradersFrontiers.exe+255D68 - FF 50 04              - call dword ptr [eax+04]
StarTradersFrontiers.exe+255D6B - 8B 4C 24 10           - mov ecx,[esp+10]
StarTradersFrontiers.exe+255D6F - 83 C1 DC              - add ecx,-24
StarTradersFrontiers.exe+255D72 - 8B F0                 - mov esi,eax
StarTradersFrontiers.exe+255D74 - 8B 11                 - mov edx,[ecx]

}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>44</ID>
          <Description>"Multiplier (don't set to too low value)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>vf_turn_multi</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>64</ID>
          <Description>"Base addr."</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>808080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_data_addr</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>45</ID>
          <Description>"Turn (don't set below 40)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>[i_base_data_addr]+4C</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>46</ID>
          <Description>"Caption Name"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>String</VariableType>
          <Length>16</Length>
          <Unicode>0</Unicode>
          <CodePage>0</CodePage>
          <ZeroTerminate>1</ZeroTerminate>
          <Address>[i_base_data_addr]+2C</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>65</ID>
      <Description>"Ship customize: zero turn"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : StarTradersFrontiers.exe
  Version: 
  Date   : 2022-04-15
  Author : bbxfox @ https://opencheattables.com
}

[ENABLE]

//aobscanmodule(INJECT_SHIP_UPGRADE_ZERO_TURN,StarTradersFrontiers.exe,ERROR: Could not find unique AOB, tried code "01 70 4C 83 78 4C 23") // should be unique
aobscanregion(INJECT_SHIP_UPGRADE_ZERO_TURN,$process+4FE0AF,StarTradersFrontiers.exe+5EEAAF, 01 70 4C 83 78 4C 23) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  mov esi, 0

code:
  add [eax+4C],esi
  cmp dword ptr [eax+4C],23
  jmp return

INJECT_SHIP_UPGRADE_ZERO_TURN:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_SHIP_UPGRADE_ZERO_TURN)

[DISABLE]

INJECT_SHIP_UPGRADE_ZERO_TURN:
  db 01 70 4C 83 78 4C 23

unregistersymbol(INJECT_SHIP_UPGRADE_ZERO_TURN)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: StarTradersFrontiers.exe+4FE8D4

StarTradersFrontiers.exe+4FE8AF: E8 8C AB E8 FF        - call StarTradersFrontiers.exe+389440
StarTradersFrontiers.exe+4FE8B4: EB 2E                 - jmp StarTradersFrontiers.exe+4FE8E4
StarTradersFrontiers.exe+4FE8B6: 8B 4D E8              - mov ecx,[ebp-18]
StarTradersFrontiers.exe+4FE8B9: 8B 01                 - mov eax,[ecx]
StarTradersFrontiers.exe+4FE8BB: FF 90 3C 01 00 00     - call dword ptr [eax+0000013C]
StarTradersFrontiers.exe+4FE8C1: 8B 93 7C 01 00 00     - mov edx,[ebx+0000017C]
StarTradersFrontiers.exe+4FE8C7: 8D BB 7C 01 00 00     - lea edi,[ebx+0000017C]
StarTradersFrontiers.exe+4FE8CD: 8B CF                 - mov ecx,edi
StarTradersFrontiers.exe+4FE8CF: 8B F0                 - mov esi,eax
StarTradersFrontiers.exe+4FE8D1: FF 52 24              - call dword ptr [edx+24]
// ---------- INJECTING HERE ----------
StarTradersFrontiers.exe+4FE8D4: 01 70 4C              - add [eax+4C],esi
// ---------- DONE INJECTING  ----------
StarTradersFrontiers.exe+4FE8D7: 83 78 4C 23           - cmp dword ptr [eax+4C],23
StarTradersFrontiers.exe+4FE8DB: 7D 07                 - jnl StarTradersFrontiers.exe+4FE8E4
StarTradersFrontiers.exe+4FE8DD: C7 40 4C 23 00 00 00  - mov [eax+4C],00000023
StarTradersFrontiers.exe+4FE8E4: 8B 07                 - mov eax,[edi]
StarTradersFrontiers.exe+4FE8E6: 8B CF                 - mov ecx,edi
StarTradersFrontiers.exe+4FE8E8: FF 50 04              - call dword ptr [eax+04]
StarTradersFrontiers.exe+4FE8EB: 8B 93 7C 01 00 00     - mov edx,[ebx+0000017C]
StarTradersFrontiers.exe+4FE8F1: 8B F0                 - mov esi,eax
StarTradersFrontiers.exe+4FE8F3: 8D 8B 7C 01 00 00     - lea ecx,[ebx+0000017C]
StarTradersFrontiers.exe+4FE8F9: 8B 3E                 - mov edi,[esi]
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>69</ID>
      <Description>"_WIP"</Description>
      <Options moHideChildren="1"/>
      <GroupHeader>1</GroupHeader>
      <Address>0</Address>
      <CheatEntries>
        <CheatEntry>
          <ID>66</ID>
          <Description>"Fuel: Land / Jump: zero cost (not fully working)"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : StarTradersFrontiers.exe
  Version: 
  Date   : 2022-04-15
  Author : bbxfox @ https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_LAND_FUEL,$process,29 70 50 79 29) // should be unique
alloc(newmem,$1000)
aobscanmodule(INJECT_JUMP_ZERO_FUEL,$process,D2 29 70 50 79 07) // should be unique
alloc(newmem2,$1000)

label(code)
label(return)
label(i_base_fuel_addr)

newmem:
  push ebx
  lea ebx, [eax+50]
  mov [i_base_fuel_addr], ebx
  pop ebx

  mov esi, 5
  add [eax+50],esi
  mov esi, 0

code:
  sub [eax+50],esi
  reassemble(INJECT_LAND_FUEL+3)
  //jns StarTradersFrontiers.exe+235C3A
  jmp return

align 10cc
  i_base_fuel_addr:
  dd 0

INJECT_LAND_FUEL:
  jmp newmem
return:

registersymbol(i_base_fuel_addr)
registersymbol(INJECT_LAND_FUEL)


label(code2)
label(return2)

newmem2:
  push ebx
  lea ebx, [eax+50]
  mov [i_base_fuel_addr], ebx
  pop ebx

  mov esi, 10
  add [eax+50],esi
  mov esi, 0

code2:
  sub [eax+50],esi
  reassemble(INJECT_JUMP_ZERO_FUEL+4)
  //jns StarTradersFrontiers.exe+45DF74
  jmp return2

INJECT_JUMP_ZERO_FUEL+01:
  jmp newmem2
return2:
registersymbol(INJECT_JUMP_ZERO_FUEL)

[DISABLE]

INJECT_LAND_FUEL:
  db 29 70 50 79 29

unregistersymbol(*)
dealloc(newmem)


INJECT_JUMP_ZERO_FUEL+01:
  db 29 70 50 79 07

unregistersymbol(INJECT_JUMP_ZERO_FUEL)
dealloc(newmem2)
{
// ORIGINAL CODE - INJECTION POINT: StarTradersFrontiers.exe+235C0C

StarTradersFrontiers.exe+235BEF: 8B 03                 - mov eax,[ebx]
StarTradersFrontiers.exe+235BF1: 8B CB                 - mov ecx,ebx
StarTradersFrontiers.exe+235BF3: 7E 25                 - jle StarTradersFrontiers.exe+235C1A
StarTradersFrontiers.exe+235BF5: FF 50 2C              - call dword ptr [eax+2C]
StarTradersFrontiers.exe+235BF8: 8B 10                 - mov edx,[eax]
StarTradersFrontiers.exe+235BFA: 8B C8                 - mov ecx,eax
StarTradersFrontiers.exe+235BFC: FF 92 BC 00 00 00     - call dword ptr [edx+000000BC]
StarTradersFrontiers.exe+235C02: 8B 10                 - mov edx,[eax]
StarTradersFrontiers.exe+235C04: 8B C8                 - mov ecx,eax
StarTradersFrontiers.exe+235C06: FF 92 F4 00 00 00     - call dword ptr [edx+000000F4]
// ---------- INJECTING HERE ----------
StarTradersFrontiers.exe+235C0C: 29 70 50              - sub [eax+50],esi
// ---------- DONE INJECTING  ----------
StarTradersFrontiers.exe+235C0F: 79 29                 - jns StarTradersFrontiers.exe+235C3A
StarTradersFrontiers.exe+235C11: C7 40 50 00 00 00 00  - mov [eax+50],00000000
StarTradersFrontiers.exe+235C18: EB 20                 - jmp StarTradersFrontiers.exe+235C3A
StarTradersFrontiers.exe+235C1A: FF 50 2C              - call dword ptr [eax+2C]
StarTradersFrontiers.exe+235C1D: 8B 10                 - mov edx,[eax]
StarTradersFrontiers.exe+235C1F: 8B C8                 - mov ecx,eax
StarTradersFrontiers.exe+235C21: FF 92 BC 00 00 00     - call dword ptr [edx+000000BC]
StarTradersFrontiers.exe+235C27: 8B 10                 - mov edx,[eax]
StarTradersFrontiers.exe+235C29: 8B C8                 - mov ecx,eax
StarTradersFrontiers.exe+235C2B: FF 92 F4 00 00 00     - call dword ptr [edx+000000F4]
}

{
// ORIGINAL CODE - INJECTION POINT: StarTradersFrontiers.exe+45DF68

StarTradersFrontiers.exe+45DF4F: 8B 16                 - mov edx,[esi]
StarTradersFrontiers.exe+45DF51: 8B CE                 - mov ecx,esi
StarTradersFrontiers.exe+45DF53: 8B 52 40              - mov edx,[edx+40]
StarTradersFrontiers.exe+45DF56: 8B F8                 - mov edi,eax
StarTradersFrontiers.exe+45DF58: FF D2                 - call edx
StarTradersFrontiers.exe+45DF5A: 8B 17                 - mov edx,[edi]
StarTradersFrontiers.exe+45DF5C: 8B CF                 - mov ecx,edi
StarTradersFrontiers.exe+45DF5E: 8B 92 F4 00 00 00     - mov edx,[edx+000000F4]
StarTradersFrontiers.exe+45DF64: 8B F0                 - mov esi,eax
StarTradersFrontiers.exe+45DF66: FF D2                 - call edx
// ---------- INJECTING HERE ----------
StarTradersFrontiers.exe+45DF68: 29 70 50              - sub [eax+50],esi
// ---------- DONE INJECTING  ----------
StarTradersFrontiers.exe+45DF6B: 79 07                 - jns StarTradersFrontiers.exe+45DF74
StarTradersFrontiers.exe+45DF6D: C7 40 50 00 00 00 00  - mov [eax+50],00000000
StarTradersFrontiers.exe+45DF74: 8B 7C 24 20           - mov edi,[esp+20]
StarTradersFrontiers.exe+45DF78: 8B CF                 - mov ecx,edi
StarTradersFrontiers.exe+45DF7A: 8B 07                 - mov eax,[edi]
StarTradersFrontiers.exe+45DF7C: 8B 40 1C              - mov eax,[eax+1C]
StarTradersFrontiers.exe+45DF7F: FF D0                 - call eax
StarTradersFrontiers.exe+45DF81: 8B 17                 - mov edx,[edi]
StarTradersFrontiers.exe+45DF83: 8B CF                 - mov ecx,edi
StarTradersFrontiers.exe+45DF85: 8B 52 1C              - mov edx,[edx+1C]
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>67</ID>
              <Description>"Fuel"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>[i_base_fuel_addr]</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>68</ID>
          <Description>"Cruise: fuel (buggy)"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : StarTradersFrontiers.exe
  Version: 
  Date   : 2022-04-15
  Author :
}

[ENABLE]

aobscanmodule(INJECT_CRUISE_FUEL,$process,89 41 50 5D C2 04 00 CC CC CC 8B) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  mov dword ptr [is_passed], 1
  push eax
  push ebx
  mov eax, [ecx+54]
  cmp eax, 0
  je go_ng

  mov eax, [ecx+54]
  cmp eax, #2500
  pop eax
  jg go_ng

  mov eax, [ecx+58]
  cmp eax, #300
  jg go_ng

  mov eax, [ecx+54]
  cmp eax, #1200
  jl go_ng

  mov eax, [ecx+58]
  cmp eax, #60
  jle go_ng

  mov eax, [ecx+50]
  mov ebx, [ecx+58]
  cmp ebx, eax
  jl go_ng

  jmp check_endp
go_ng:
  mov dword ptr [is_passed], 0
  pop ebx
  pop eax
check_endp:
  cmp dword ptr [is_passed], 1
  jne code
{
  push eax
  mov eax, [ecx+4C]
  cmp eax, 0
  pop eax
  je code

  push eax
  mov eax, [ecx+48]
  cmp eax, 0
  pop eax
  je code
}
  mov [ecx+50],eax
  mov eax, [ecx+58]

code:
  mov [ecx+50],eax
  pop ebp
  ret 0004
  jmp return

align 10 cc
  is_passed:
  dd 0

INJECT_CRUISE_FUEL:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_CRUISE_FUEL)

[DISABLE]

INJECT_CRUISE_FUEL:
  db 89 41 50 5D C2 04 00

unregistersymbol(INJECT_CRUISE_FUEL)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: StarTradersFrontiers.exe+2E26

StarTradersFrontiers.exe+2E19: CC        - int 3 
StarTradersFrontiers.exe+2E1A: CC        - int 3 
StarTradersFrontiers.exe+2E1B: CC        - int 3 
StarTradersFrontiers.exe+2E1C: CC        - int 3 
StarTradersFrontiers.exe+2E1D: CC        - int 3 
StarTradersFrontiers.exe+2E1E: CC        - int 3 
StarTradersFrontiers.exe+2E1F: CC        - int 3 
StarTradersFrontiers.exe+2E20: 55        - push ebp
StarTradersFrontiers.exe+2E21: 8B EC     - mov ebp,esp
StarTradersFrontiers.exe+2E23: 8B 45 08  - mov eax,[ebp+08]
// ---------- INJECTING HERE ----------
StarTradersFrontiers.exe+2E26: 89 41 50  - mov [ecx+50],eax
// ---------- DONE INJECTING  ----------
StarTradersFrontiers.exe+2E29: 5D        - pop ebp
StarTradersFrontiers.exe+2E2A: C2 04 00  - ret 0004
StarTradersFrontiers.exe+2E2D: CC        - int 3 
StarTradersFrontiers.exe+2E2E: CC        - int 3 
StarTradersFrontiers.exe+2E2F: CC        - int 3 
StarTradersFrontiers.exe+2E30: 8B 41 54  - mov eax,[ecx+54]
StarTradersFrontiers.exe+2E33: C3        - ret 
StarTradersFrontiers.exe+2E34: CC        - int 3 
StarTradersFrontiers.exe+2E35: CC        - int 3 
StarTradersFrontiers.exe+2E36: CC        - int 3 
}
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>70</ID>
      <Description>"StarTrader Froniter v3.3.117  /  https://opencheattables.com  /  CE 7.5+"</Description>
      <Color>800080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
