<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <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

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
  jns StarTradersFrontiers.exe+BD939
  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>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>
        <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>
      </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.2.49  /  https://opencheattables.com  /  CE 7.4+"</Description>
      <Color>800080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
