<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>1337160883</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>1337110796</ID>
      <Description>"Get skill pt"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Starfield.exe
  Version: 
  Date   : 2023-09-02
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_SKPT,Starfield.exe,8B 88 20 0F 00 00) // should be unique
alloc(newmem,$1000,INJECT_GET_SKPT)

label(code)
label(return)
label(i_sk_pt_addr)

newmem:
  mov [i_sk_pt_addr], rax

code:
  mov ecx,[rax+00000F20]
  jmp return
align 10 cc
  i_sk_pt_addr:
  dq 0

INJECT_GET_SKPT:
  jmp newmem
  nop
return:
registersymbol(INJECT_GET_SKPT)
registersymbol(i_sk_pt_addr)
[DISABLE]

INJECT_GET_SKPT:
  db 8B 88 20 0F 00 00

unregistersymbol(INJECT_GET_SKPT)
unregistersymbol(i_sk_pt_addr)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Starfield.exe+208B47D

Starfield.exe+208B453: CC                       - int 3
Starfield.exe+208B454: 40 53                    - push rbx
Starfield.exe+208B456: 48 83 EC 30              - sub rsp,30
Starfield.exe+208B45A: 48 83 3D 46 A7 50 03 00  - cmp qword ptr [Starfield.exe+5595BA8],00
Starfield.exe+208B462: 74 69                    - je Starfield.exe+208B4CD
Starfield.exe+208B464: 48 81 C1 88 00 00 00     - add rcx,00000088
Starfield.exe+208B46B: 48 8D 54 24 20           - lea rdx,[rsp+20]
Starfield.exe+208B470: E8 A7 15 80 FF           - call Starfield.exe+188CA1C
Starfield.exe+208B475: 90                       - nop
Starfield.exe+208B476: 48 8B 05 2B A7 50 03     - mov rax,[Starfield.exe+5595BA8]
// ---------- INJECTING HERE ----------
Starfield.exe+208B47D: 8B 88 20 0F 00 00        - mov ecx,[rax+00000F20]
// ---------- DONE INJECTING  ----------
Starfield.exe+208B483: 89 4C 24 48              - mov [rsp+48],ecx
Starfield.exe+208B487: 48 8B 5C 24 20           - mov rbx,[rsp+20]
Starfield.exe+208B48C: 48 8D 8B E0 00 00 00     - lea rcx,[rbx+000000E0]
Starfield.exe+208B493: 48 8D 54 24 48           - lea rdx,[rsp+48]
Starfield.exe+208B498: E8 D7 FC 24 FF           - call Starfield.exe+12DB174
Starfield.exe+208B49D: 48 8B 05 04 A7 50 03     - mov rax,[Starfield.exe+5595BA8]
Starfield.exe+208B4A4: 8A 88 E3 10 00 00        - mov cl,[rax+000010E3]
Starfield.exe+208B4AA: 80 E1 01                 - and cl,01
Starfield.exe+208B4AD: 88 4C 24 48              - mov [rsp+48],cl
Starfield.exe+208B4B1: 48 8D 8B 20 01 00 00     - lea rcx,[rbx+00000120]
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>1337110797</ID>
          <Description>"pt"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_sk_pt_addr</Address>
          <Offsets>
            <Offset>F20</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>1337110762</ID>
      <Description>"Get credit (Usage: Open stats)"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Starfield.exe
  Version: 
  Date   : 2023-09-02
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_CREDIT,Starfield.exe,03 48 08 48 83 C0 10 EB ?? 49 8B 04) // should be unique
alloc(newmem,$1000,INJECT_GET_CREDIT)

label(code)
label(return)
label(i_base_credit_addr)
label(i_base_credit_addr2)
label(i_base_credit_addr3)
label(i_base_credit_addr4)

newmem:
  cmp qword ptr [i_base_credit_addr], rax
  je code
  cmp qword ptr [i_base_credit_addr], 0
  jne write2

  mov [i_base_credit_addr], rax
  jmp code

write2:
  cmp qword ptr [i_base_credit_addr2], rax
  je code
  cmp qword ptr [i_base_credit_addr2], 0
  jne write3

  mov [i_base_credit_addr2], rax
  jmp code

write3:
  cmp qword ptr [i_base_credit_addr3], rax
  je code

  cmp qword ptr [i_base_credit_addr3], 0
  jne write4

  mov [i_base_credit_addr3], rax
  jmp code

write4:
  cmp qword ptr [i_base_credit_addr4], rax
  je code
  cmp qword ptr [i_base_credit_addr4], 0
  jne code

  mov [i_base_credit_addr4], rax
  jmp code

code:
  add ecx,[rax+08]
  add rax,10
  jmp return
align 10 cc
  i_base_credit_addr:
  dq 0
  i_base_credit_addr2:
  dq 0
  i_base_credit_addr3:
  dq 0
  i_base_credit_addr4:
  dq 0

INJECT_GET_CREDIT:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_GET_CREDIT)
registersymbol(i_base_credit_addr)
registersymbol(i_base_credit_addr2)
registersymbol(i_base_credit_addr3)
registersymbol(i_base_credit_addr4)
[DISABLE]

INJECT_GET_CREDIT:
  db 03 48 08 48 83 C0 10

unregistersymbol(INJECT_GET_CREDIT)
unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Starfield.exe+19C24E5

Starfield.exe+19C24CD: 75 06           - jne Starfield.exe+19C24D5
Starfield.exe+19C24CF: 33 C0           - xor eax,eax
Starfield.exe+19C24D1: 33 D2           - xor edx,edx
Starfield.exe+19C24D3: EB 0B           - jmp Starfield.exe+19C24E0
Starfield.exe+19C24D5: 48 8B 00        - mov rax,[rax]
Starfield.exe+19C24D8: 48 C1 E2 04     - shl rdx,04
Starfield.exe+19C24DC: 48 03 D0        - add rdx,rax
Starfield.exe+19C24DF: 90              - nop
Starfield.exe+19C24E0: 48 3B C2        - cmp rax,rdx
Starfield.exe+19C24E3: 74 09           - je Starfield.exe+19C24EE
// ---------- INJECTING HERE ----------
Starfield.exe+19C24E5: 03 48 08        - add ecx,[rax+08]
// ---------- DONE INJECTING  ----------
Starfield.exe+19C24E8: 48 83 C0 10     - add rax,10
Starfield.exe+19C24EC: EB F2           - jmp Starfield.exe+19C24E0
Starfield.exe+19C24EE: 49 8B 04 24     - mov rax,[r12]
Starfield.exe+19C24F2: 89 08           - mov [rax],ecx
Starfield.exe+19C24F4: 33 DB           - xor ebx,ebx
Starfield.exe+19C24F6: EB 57           - jmp Starfield.exe+19C254F
Starfield.exe+19C24F8: 33 FF           - xor edi,edi
Starfield.exe+19C24FA: 48 89 7C 24 28  - mov [rsp+28],rdi
Starfield.exe+19C24FF: 4D 85 F6        - test r14,r14
Starfield.exe+19C2502: 74 29           - je Starfield.exe+19C252D
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>1337110763</ID>
          <Description>"Credit #1  (Player?)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_credit_addr</Address>
          <Offsets>
            <Offset>8</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>1337160902</ID>
          <Description>"Credit #2 (Team member?)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_credit_addr2</Address>
          <Offsets>
            <Offset>8</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>1337160903</ID>
          <Description>"Credit #3"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_credit_addr3</Address>
          <Offsets>
            <Offset>8</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>1337160904</ID>
          <Description>"Credit #4"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_credit_addr4</Address>
          <Offsets>
            <Offset>8</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>1337110766</ID>
      <Description>"inf. medic kit (recovery pack) from quick menu when use (min = 12)"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Starfield.exe
  Version: 
  Date   : 2023-09-02
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_INF_MEDI,Starfield.exe,44 03 40 08 48 83 C0 10 EB ?? 49 8B 06 44) // should be unique
alloc(newmem,$1000,INJECT_INF_MEDI)

label(code)
label(return)
label(i_last_consume_addr)

newmem:
  mov [i_last_consume_addr], rax

  push r15
  mov r15d, [rax+08]
  cmp r15d, D
  jae endp
  mov r15d, D
  mov [rax+08], r15d
endp:
  pop r15

code:
  add r8d,[rax+08]
  add rax,10
  jmp return
align 10 cc
  i_last_consume_addr:
  dq 0


INJECT_INF_MEDI:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_INF_MEDI)
registersymbol(i_last_consume_addr)
[DISABLE]

INJECT_INF_MEDI:
  db 44 03 40 08 48 83 C0 10

unregistersymbol(INJECT_INF_MEDI)
unregistersymbol(i_last_consume_addr)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Starfield.exe+289AB55

Starfield.exe+289AB37: 41 8B C4                 - mov eax,r12d
Starfield.exe+289AB3A: 41 8B CC                 - mov ecx,r12d
Starfield.exe+289AB3D: EB 11                    - jmp Starfield.exe+289AB50
Starfield.exe+289AB3F: 48 8B 46 18              - mov rax,[rsi+18]
Starfield.exe+289AB43: 48 8B CA                 - mov rcx,rdx
Starfield.exe+289AB46: 48 C1 E1 04              - shl rcx,04
Starfield.exe+289AB4A: 48 03 C8                 - add rcx,rax
Starfield.exe+289AB4D: 0F 1F 00                 - nop dword ptr [rax]
Starfield.exe+289AB50: 48 3B C1                 - cmp rax,rcx
Starfield.exe+289AB53: 74 0A                    - je Starfield.exe+289AB5F
// ---------- INJECTING HERE ----------
Starfield.exe+289AB55: 44 03 40 08              - add r8d,[rax+08]
// ---------- DONE INJECTING  ----------
Starfield.exe+289AB59: 48 83 C0 10              - add rax,10
Starfield.exe+289AB5D: EB F1                    - jmp Starfield.exe+289AB50
Starfield.exe+289AB5F: 49 8B 06                 - mov rax,[r14]
Starfield.exe+289AB62: 44 88 8C 24 B8 00 00 00  - mov [rsp+000000B8],r9b
Starfield.exe+289AB6A: 44 89 84 24 BC 00 00 00  - mov [rsp+000000BC],r8d
Starfield.exe+289AB72: 48 8B 68 08              - mov rbp,[rax+08]
Starfield.exe+289AB76: 48 85 ED                 - test rbp,rbp
Starfield.exe+289AB79: 0F 84 B2 00 00 00        - je Starfield.exe+289AC31
Starfield.exe+289AB7F: 48 8B 3D 1A 37 E5 02     - mov rdi,[Starfield.exe+56EE2A0]
Starfield.exe+289AB86: 48 85 FF                 - test rdi,rdi
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>1337110790</ID>
          <Description>"Item stock# must &gt;= 2"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>1337110767</ID>
          <Description>"Last item #"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_last_consume_addr</Address>
          <Offsets>
            <Offset>8</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>1337110777</ID>
      <Description>"Set min ammo# / recovery item# / material# when "trade from" robot / cargo"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Starfield.exe
  Version: 
  Date   : 2023-09-02
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_SWAP_AND_GET_AMMO,Starfield.exe,03 58 08 48 83 C0 10 EB ?? 4C 8D 45 C0 49 8B CC E8 ?? 30 00 00) // should be unique
alloc(newmem,$1000,INJECT_SWAP_AND_GET_AMMO)

label(code)
label(return)
label(i_min_ammo_per_batch)
label(i_last_xchg_item_addr)
label(i_last_xchg_item_addr2)
newmem:
  cmp rdi, 7
  je do_it
  cmp rdi, 8
  je do_it


do_it:


  push rbx
  mov rbx, [i_last_xchg_item_addr]
  mov [i_last_xchg_item_addr2], rbx
  mov [i_last_xchg_item_addr], rax


  mov ebx, [rax+08]
  cmp ebx, [i_min_ammo_per_batch]
  jae endp
  mov ebx, [i_min_ammo_per_batch]
  mov [rax+08], ebx

endp:
  pop rbx


code:
  add ebx,[rax+08]
  add rax,10
  jmp return
align 10 cc
  i_last_xchg_item_addr:
  dq 0
  i_last_xchg_item_addr2:
  dq 0
  i_min_ammo_per_batch:
  dd 32


INJECT_SWAP_AND_GET_AMMO:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_SWAP_AND_GET_AMMO)
registersymbol(i_min_ammo_per_batch)
registersymbol(i_last_xchg_item_addr)
registersymbol(i_last_xchg_item_addr2)

[DISABLE]

INJECT_SWAP_AND_GET_AMMO:
  db 03 58 08 48 83 C0 10

unregistersymbol(INJECT_SWAP_AND_GET_AMMO)
unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Starfield.exe+28867EC

Starfield.exe+28867D0: 85 C9           - test ecx,ecx
Starfield.exe+28867D2: 75 08           - jne Starfield.exe+28867DC
Starfield.exe+28867D4: 41 8B C0        - mov eax,r8d
Starfield.exe+28867D7: 41 8B C8        - mov ecx,r8d
Starfield.exe+28867DA: EB 0B           - jmp Starfield.exe+28867E7
Starfield.exe+28867DC: 48 8B 42 18     - mov rax,[rdx+18]
Starfield.exe+28867E0: 48 C1 E1 04     - shl rcx,04
Starfield.exe+28867E4: 48 03 C8        - add rcx,rax
Starfield.exe+28867E7: 48 3B C1        - cmp rax,rcx
Starfield.exe+28867EA: 74 09           - je Starfield.exe+28867F5
// ---------- INJECTING HERE ----------
Starfield.exe+28867EC: 03 58 08        - add ebx,[rax+08]
// ---------- DONE INJECTING  ----------
Starfield.exe+28867EF: 48 83 C0 10     - add rax,10
Starfield.exe+28867F3: EB F2           - jmp Starfield.exe+28867E7
Starfield.exe+28867F5: 4C 8D 45 C0     - lea r8,[rbp-40]
Starfield.exe+28867F9: 49 8B CC        - mov rcx,r12
Starfield.exe+28867FC: E8 5F 30 00 00  - call Starfield.exe+2889860
Starfield.exe+2886801: 44 8B E8        - mov r13d,eax
Starfield.exe+2886804: 89 45 48        - mov [rbp+48],eax
Starfield.exe+2886807: 3B 7E 28        - cmp edi,[rsi+28]
Starfield.exe+288680A: 0F 97 C2        - seta dl
Starfield.exe+288680D: 41 88 56 05     - mov [r14+05],dl
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>1337110779</ID>
          <Description>"Turn on when really needed!!"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>1337110798</ID>
          <Description>"Set min. value to a lower value (i.e. 10) when trade ship repatr parts!"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>1337110778</ID>
          <Description>"min. value"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_min_ammo_per_batch</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>1337110800</ID>
          <Description>"Last item#"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_last_xchg_item_addr</Address>
          <Offsets>
            <Offset>8</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>1337110804</ID>
          <Description>"Last item #2"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_last_xchg_item_addr2</Address>
          <Offsets>
            <Offset>8</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>1337110759</ID>
      <Description>"Personal ammo: No reload (# of ammo still decrease)"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Starfield.exe
  Version: 
  Date   : 2023-09-02
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_INF_PAMMO,Starfield.exe,44 39 48 18 74 3F) // should be unique
alloc(newmem,$1000,INJECT_INF_PAMMO)

label(code)
label(return)

newmem:
  push r15
  mov r15d, [rax+18]
  cmp r15d, 5
  mov r15d, 5
  mov [rax+18], r15d
  jae endp
endp:
  pop r15

code:
  cmp [rax+18],r9d
  je Starfield.exe+1F4AF43
  jmp return

INJECT_INF_PAMMO:
  jmp newmem
  nop
return:
registersymbol(INJECT_INF_PAMMO)

[DISABLE]

INJECT_INF_PAMMO:
  db 44 39 48 18 74 3F

unregistersymbol(INJECT_INF_PAMMO)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Starfield.exe+1F4AEFE

Starfield.exe+1F4AED6: 48 8D 4C 24 20           - lea rcx,[rsp+20]
Starfield.exe+1F4AEDB: E8 EC F4 FF FF           - call Starfield.exe+1F4A3CC
Starfield.exe+1F4AEE0: EB 6B                    - jmp Starfield.exe+1F4AF4D
Starfield.exe+1F4AEE2: 48 8B 41 40              - mov rax,[rcx+40]
Starfield.exe+1F4AEE6: 48 8B 10                 - mov rdx,[rax]
Starfield.exe+1F4AEE9: 48 8B 82 F0 00 00 00     - mov rax,[rdx+000000F0]
Starfield.exe+1F4AEF0: 48 8B 48 20              - mov rcx,[rax+20]
Starfield.exe+1F4AEF4: 48 8B 41 28              - mov rax,[rcx+28]
Starfield.exe+1F4AEF8: 4C 39 48 10              - cmp [rax+10],r9
Starfield.exe+1F4AEFC: 74 45                    - je Starfield.exe+1F4AF43
// ---------- INJECTING HERE ----------
Starfield.exe+1F4AEFE: 44 39 48 18              - cmp [rax+18],r9d
// ---------- DONE INJECTING  ----------
Starfield.exe+1F4AF02: 74 3F                    - je Starfield.exe+1F4AF43
Starfield.exe+1F4AF04: 44 38 8A EA 00 00 00     - cmp [rdx+000000EA],r9b
Starfield.exe+1F4AF0B: 74 0C                    - je Starfield.exe+1F4AF19
Starfield.exe+1F4AF0D: 48 8D 4C 24 20           - lea rcx,[rsp+20]
Starfield.exe+1F4AF12: E8 61 EF FF FF           - call Starfield.exe+1F49E78
Starfield.exe+1F4AF17: EB 34                    - jmp Starfield.exe+1F4AF4D
Starfield.exe+1F4AF19: 48 8B 82 F8 00 00 00     - mov rax,[rdx+000000F8]
Starfield.exe+1F4AF20: C5 FA 10 40 40           - vmovss xmm0,[rax+40]
Starfield.exe+1F4AF25: C5 FA 5C 0D FB FB 62 03  - vsubss xmm1,xmm0,[Starfield.exe+557AB28]
Starfield.exe+1F4AF2D: C5 F8 2F 8A EC 00 00 00  - vcomiss xmm1,[rdx+000000EC]
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>1337160889</ID>
      <Description>"Enable O2 / HP / EN scripts"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$asm}
//registersymbol(imp_item_box)





{$lua}
if syntaxcheck then return end
if memrec then print(memrec.Description) end

getLuaEngine().MenuItem5.doClick()
--aobscanmodule(INJECT_DIFFICULT_AOB,Atelier_Sophie_2.exe,8B 05 ?? ?? ?? ?? 89 45 A4 33 C0)
--aobscanmodule(INJECT_TIME_AOB,Atelier_Sophie_2.exe,48 8B 05 ?? ?? ?? ?? 48 89 01 48 8B C1 C3 CC CC 8B 05 ?? ?? ?? ?? C3 CC) // should be unique
--aobscanmodule(INJECT_RANK,Atelier_Sophie_2.exe,8B 15 ?? ?? ?? ?? 83 CB FF ) // should be unique

local _dbg = true
if (_dbg) then
  AOBs = {
    {["name"]="Player Ptr AOB1", ["aob"]="48 3B 1D ?? ?? ?? ?? 75 1C 48 8B", ["pos"]= 3,  ["aoblen"]= 7 , ["symbol"]="player_ptr1"},
    --{["name"]="Player Ptr AOB2", ["aob"]="48 8B 05 ?? ?? ?? ?? 48 3B D8 74 ?? 48 8B D7 48 8B CB", ["pos"]= 3,  ["aoblen"]= 7 , ["symbol"]="player_ptr2"},
  }

  local a1 = 'n/a'
  local a2 = 'n/a'
  local a3 = 0
  local a4 = 0
  local a5 = 'n/a'

  for k,v in pairs(AOBs) do
    -- k = array seq.
    for k1,v1 in pairs(v) do
      if (k1 == 'name') then
        a1 = v1
      end
      if (k1 == 'aob') then
        a2 = v1
      end
      if (k1 == 'pos') then
        a3 = v1
      end
      if (k1 == 'aoblen') then
        a4 = v1
      end
      if (k1 == 'symbol') then
        a5 = v1
      end
      --print(k1,v1)
    end
    local aob_addr_str = AOBScanModule('Starfield.exe', a2, '+X-C-W')
    local name_addr_str = getAddressSafe(aob_addr_str[0])+a3
    local name_addr_val = readInteger(name_addr_str)
    local aob_addr_val = tonumber(aob_addr_str[0], 16)
    local final_addr_val = name_addr_val + aob_addr_val + a4
    --print(a1 .. " addr: " .. string.format("%08X", final_addr_val))
    registerSymbol(a5, final_addr_val)
    --print('-------')
  end
end

getLuaEngine().Close()



--[[ Player base ptr #1
Starfield.exe+1A08FE5 - E8 FE03B3FF           - call Starfield.exe+15393E8
Starfield.exe+1A08FEA - C5F828F0              - vmovaps xmm6,xmm0
Starfield.exe+1A08FEE - 48 8D 4C 24 20        - lea rcx,[rsp+20]
Starfield.exe+1A08FF3 - E8 7CCDAAFF           - call Starfield.exe+14B5D74
Starfield.exe+1A08FF8 - 80 7B 36 4B           - cmp byte ptr [rbx+36],4B
Starfield.exe+1A08FFC - 48 0F45 DE            - cmovne rbx,rsi
Starfield.exe+1A09000 - 48 85 DB              - test rbx,rbx
Starfield.exe+1A09003 - 74 7A                 - je Starfield.exe+1A0907F
========================================================
Starfield.exe+1A09005 - 48 3B 1D 9CE3EE03     - cmp rbx,[Starfield.exe+58F73A8]
============================
Starfield.exe+1A0900C - 75 1C                 - jne Starfield.exe+1A0902A
Starfield.exe+1A0900E - 48 8B 05 13BDB803     - mov rax,[Starfield.exe+5594D28]
Starfield.exe+1A09015 - 48 8B 88 C00F0000     - mov rcx,[rax+00000FC0]
Starfield.exe+1A0901C - 48 85 C9              - test rcx,rcx
Starfield.exe+1A0901F - 74 09                 - je Starfield.exe+1A0902A
Starfield.exe+1A09021 - E8 4EFFFFFF           - call Starfield.exe+1A08F74
Starfield.exe+1A09026 - C5CA58F0              - vaddss xmm6,xmm6,xmm0
Starfield.exe+1A0902A - 40 84 FF              - test dil,dil
Starfield.exe+1A0902D - 74 14                 - je Starfield.exe+1A09043
Starfield.exe+1A0902F - C5F828D6              - vmovaps xmm2,xmm6
Starfield.exe+1A09033 - C5FA100D 21 A9EE03    - vmovss xmm1,[Starfield.exe+58F395C]
Starfield.exe+1A0903B - 48 8B CB              - mov rcx,rbx
Starfield.exe+1A0903E - E8 2D7DAB00           - call Starfield.exe+24C0D70
Starfield.exe+1A09043 - 48 3B 1D 5EE3EE03     - cmp rbx,[Starfield.exe+58F73A8]
Starfield.exe+1A0904A - 74 33                 - je Starfield.exe+1A0907F
--]]

--[[ Player base pttr #2
Starfield.exe+2488CE6 - EB 10                 - jmp Starfield.exe+2488CF8
Starfield.exe+2488CE8 - 33 F6                 - xor esi,esi
Starfield.exe+2488CEA - 45 33 C0              - xor r8d,r8d
Starfield.exe+2488CED - 48 8B D3              - mov rdx,rbx
Starfield.exe+2488CF0 - 48 8B CF              - mov rcx,rdi
Starfield.exe+2488CF3 - E8 98A8FEFF           - call Starfield.exe+2473590
Starfield.exe+2488CF8 - 44 8B E8              - mov r13d,eax
Starfield.exe+2488CFB - 45 3A F4              - cmp r14b,r12b
Starfield.exe+2488CFE - 41 0F94 C4            - sete r12b
Starfield.exe+2488D02 - 41 80 FE FF           - cmp r14b,-01
Starfield.exe+2488D06 - 75 59                 - jne Starfield.exe+2488D61
===================================================
Starfield.exe+2488D08 - 48 8B 05 99E64603     - mov rax,[Starfield.exe+58F73A8]
====================================================
Starfield.exe+2488D0F - 48 3B D8              - cmp rbx,rax
Starfield.exe+2488D12 - 74 35                 - je Starfield.exe+2488D49
Starfield.exe+2488D14 - 48 8B D7              - mov rdx,rdi
Starfield.exe+2488D17 - 48 8B CB              - mov rcx,rbx
Starfield.exe+2488D1A - E8 2DB20400           - call Starfield.exe+24D3F4C
Starfield.exe+2488D1F - 84 C0                 - test al,al
Starfield.exe+2488D21 - 74 14                 - je Starfield.exe+2488D37
Starfield.exe+2488D23 - 48 8B CB              - mov rcx,rbx
Starfield.exe+2488D26 - E8 51CB0000           - call Starfield.exe+249587C
Starfield.exe+2488D2B - 84 C0                 - test al,al
Starfield.exe+2488D2D - 75 08                 - jne Starfield.exe+2488D37
Starfield.exe+2488D2F - 41 BC 01000000        - mov r12d,00000001
Starfield.exe+2488D35 - EB 2A                 - jmp Starfield.exe+2488D61
Starfield.exe+2488D37 - 41 80 FE FF           - cmp r14b,-01
Starfield.exe+2488D3B - 75 24                 - jne Starfield.exe+2488D61
Starfield.exe+2488D3D - 48 8B 05 64E64603     - mov rax,[Starfield.exe+58F73A8]

--]]


--[[Char base ptr +70
Starfield.exe+2B393A0 - 48 83 EC 28           - sub rsp,28
Starfield.exe+2B393A4 - 48 8B 15 6D9E9B02     - mov rdx,[Starfield.exe+54F3218]
Starfield.exe+2B393AB - 4C 8B C9              - mov r9,rcx
Starfield.exe+2B393AE - 48 8B CA              - mov rcx,rdx
Starfield.exe+2B393B1 - E8 2AB971FE           - call Starfield.exe+1254CE0
Starfield.exe+2B393B6 - 48 85 C0              - test rax,rax
Starfield.exe+2B393B9 - 74 1E                 - je Starfield.exe+2B393D9
===============================================
Starfield.exe+2B393BB - 49 8B 41 70           - mov rax,[r9+70]
==============================================
Starfield.exe+2B393BF - 48 8B CA              - mov rcx,rdx
Starfield.exe+2B393C2 - 4C 8B 40 08           - mov r8,[rax+08]
Starfield.exe+2B393C6 - E8 15B971FE           - call Starfield.exe+1254CE0
Starfield.exe+2B393CB - 48 8B D0              - mov rdx,rax
Starfield.exe+2B393CE - 49 8D 49 70           - lea rcx,[r9+70]
Starfield.exe+2B393D2 - 48 83 C4 28           - add rsp,28
Starfield.exe+2B393D6 - 49 FF E0              - jmp r8
Starfield.exe+2B393D9 - C5F857C0              - vxorps xmm0,xmm0,xmm0
Starfield.exe+2B393DD - 48 83 C4 28           - add rsp,28
Starfield.exe+2B393E1 - C3                    - ret

--]]


{$asm}


[DISABLE]
//code from here till the end of the code will be used to disable the cheat
{$asm}
//unregistersymbol(imp_item_box)

{$lua}
if syntaxcheck then return end
local disable_array = {"player_ptr1", "player_ptr2"}
local a_len = #(disable_array)
local i = 0
for i = 1, a_len do
  --print(disable_array[i])
  unregisterSymbol(disable_array[i])
end

getLuaEngine().Close()



</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>1337160890</ID>
          <Description>"Player_ptr (do not edit)"</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>808080</Color>
          <VariableType>8 Bytes</VariableType>
          <Address>player_ptr1</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>1337110783</ID>
          <Description>"Lock O2"</Description>
          <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Starfield.exe
  Version: 
  Date   : 2023-09-02
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_INF_O2,Starfield.exe,C5 FA 10 04 90 ?? ?? ?? ?? 90) // should be unique
alloc(newmem,$1000,INJECT_INF_O2)

label(code)
label(return)
label(i_base_o2_addr)
label(is_O2_enabled)

newmem:
  // max O2 = 80
  // xmm1 = -??? value, used O2 (i.e. O2 = 50, xmm1 = -30)


  pushfq
  cmp rsi, [player_ptr1]
  jne code_pre

  push rbx
  vxorps xmm15, xmm15, xmm15
  lea rbx, [rax+rdx*4+34]  // 8+34 = 3C
  vmovss xmm14, [rax+rdx*4+34]
  vucomiss xmm14, [vf_1]
  je next1

  vmovss xmm14, [rax+rdx*4+40]
  vucomiss xmm14, [vf_1]
  je next1

  jmp endp

next1:
  vmovss xmm14, [rax+rdx*4]
  vcomiss xmm14, xmm15
  jae endp

  lea rbx, [rax+rdx*4-C]
  mov [i_base_o2_addr], rbx

  cmp dword ptr [is_O2_enabled], 1
  jne endp

  vxorps xmm1, xmm1, xmm1
  vmovss [rax+rdx*4], xmm1
  vmovss [rax+rdx*4-C], xmm1


endp:
  pop rbx


code_pre:
  popfq

code:
  vmovss xmm0,[rax+rdx*4]
  jmp return
align 10 cc
  i_base_o2_addr:
  dq 0
  vf_1:
  dd (float)1
  is_O2_enabled:
  dd 1


INJECT_INF_O2:
  jmp newmem
return:
registersymbol(INJECT_INF_O2)
registersymbol(i_base_o2_addr)
registersymbol(is_O2_enabled)

[DISABLE]

INJECT_INF_O2:
  db C5 FA 10 04 90

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Starfield.exe+24BCD18

Starfield.exe+24BCCF4: C5 78 28 C8           - vmovaps xmm9,xmm0
Starfield.exe+24BCCF8: 48 8B 53 08           - mov rdx,[rbx+08]
Starfield.exe+24BCCFC: 48 8B 0B              - mov rcx,[rbx]
Starfield.exe+24BCCFF: E8 E0 35 00 00        - call Starfield.exe+24C02E4
Starfield.exe+24BCD04: 48 85 C0              - test rax,rax
Starfield.exe+24BCD07: 74 1F                 - je Starfield.exe+24BCD28
Starfield.exe+24BCD09: 48 8B 4B 18           - mov rcx,[rbx+18]
Starfield.exe+24BCD0D: C5 FA 10 09           - vmovss xmm1,[rcx]
Starfield.exe+24BCD11: 48 8B 4B 10           - mov rcx,[rbx+10]
Starfield.exe+24BCD15: 48 63 11              - movsxd  rdx,dword ptr [rcx]
// ---------- INJECTING HERE ----------
Starfield.exe+24BCD18: C5 FA 10 04 90        - vmovss xmm0,[rax+rdx*4]
// ---------- DONE INJECTING  ----------
Starfield.exe+24BCD1D: C5 FA 11 0C 90        - vmovss [rax+rdx*4],xmm1
Starfield.exe+24BCD22: C5 72 5C C0           - vsubss xmm8,xmm1,xmm0
Starfield.exe+24BCD26: EB 25                 - jmp Starfield.exe+24BCD4D
Starfield.exe+24BCD28: 48 8B 0B              - mov rcx,[rbx]
Starfield.exe+24BCD2B: 48 81 C1 98 02 00 00  - add rcx,00000298
Starfield.exe+24BCD32: 48 8B 43 18           - mov rax,[rbx+18]
Starfield.exe+24BCD36: 48 8B 53 10           - mov rdx,[rbx+10]
Starfield.exe+24BCD3A: C5 FA 10 18           - vmovss xmm3,[rax]
Starfield.exe+24BCD3E: 4C 8B 43 08           - mov r8,[rbx+08]
Starfield.exe+24BCD42: 8B 12                 - mov edx,[rdx]
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>1337160912</ID>
              <Description>"Enabled?"</Description>
              <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>is_O2_enabled</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>1337160909</ID>
              <Description>"O2-1"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>808080</Color>
              <VariableType>Float</VariableType>
              <Address>i_base_o2_addr</Address>
              <Offsets>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>1337160910</ID>
              <Description>"O2-2"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>808080</Color>
              <VariableType>Float</VariableType>
              <Address>i_base_o2_addr</Address>
              <Offsets>
                <Offset>C</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>1337160911</ID>
              <Description>"O2-3"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>808080</Color>
              <VariableType>Float</VariableType>
              <Address>i_base_o2_addr</Address>
              <Offsets>
                <Offset>40</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>1337160865</ID>
          <Description>"Lock HP"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Starfield.exe
  Version: 
  Date   : 2023-09-03
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_INF_HP_TEST,Starfield.exe,C5 FA 10 04 98 EB) // should be unique
alloc(newmem,$1000,INJECT_INF_HP_TEST)

label(code)
label(return)

newmem:
  pushfq
  cmp rbp, [player_ptr1]
  jne code_pre

  push r15
  xor r15, r15

  cmp dword ptr [rax+rbx*4+20], r15d
  jne endp

  mov r15d, 4
  cmp [rax+rbx*4+30], r15d
  jne endp

  mov r15d, [vf_1]
  cmp [rax+rbx*4+40], r15d
  jne endp

  vxorps xmm0, xmm0, xmm0
  vmovss [rax+rbx*4], xmm0

endp:
  pop r15

code_pre:
  popfq

code:
  vmovss xmm0,[rax+rbx*4]
  jmp return
align 10 cc
  vf_1:
  dd (float)1


INJECT_INF_HP_TEST:
  jmp newmem
return:
registersymbol(INJECT_INF_HP_TEST)

[DISABLE]

INJECT_INF_HP_TEST:
  db C5 FA 10 04 98

unregistersymbol(INJECT_INF_HP_TEST)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Starfield.exe+24C0435

Starfield.exe+24C0416: 57                    - push rdi
Starfield.exe+24C0417: 48 83 EC 20           - sub rsp,20
Starfield.exe+24C041B: 48 63 DA              - movsxd  rbx,edx
Starfield.exe+24C041E: 48 8B F1              - mov rsi,rcx
Starfield.exe+24C0421: 48 83 C1 90           - add rcx,-70
Starfield.exe+24C0425: 49 8B D0              - mov rdx,r8
Starfield.exe+24C0428: 49 8B F8              - mov rdi,r8
Starfield.exe+24C042B: E8 B4 FE FF FF        - call Starfield.exe+24C02E4
Starfield.exe+24C0430: 48 85 C0              - test rax,rax
Starfield.exe+24C0433: 74 07                 - je Starfield.exe+24C043C
// ---------- INJECTING HERE ----------
Starfield.exe+24C0435: C5 FA 10 04 98        - vmovss xmm0,[rax+rbx*4]
// ---------- DONE INJECTING  ----------
Starfield.exe+24C043A: EB 11                 - jmp Starfield.exe+24C044D
Starfield.exe+24C043C: 48 8D 8E 28 02 00 00  - lea rcx,[rsi+00000228]
Starfield.exe+24C0443: 4C 8B C7              - mov r8,rdi
Starfield.exe+24C0446: 8B D3                 - mov edx,ebx
Starfield.exe+24C0448: E8 E3 E7 02 00        - call Starfield.exe+24EEC30
Starfield.exe+24C044D: 48 8B 5C 24 30        - mov rbx,[rsp+30]
Starfield.exe+24C0452: 48 8B 74 24 38        - mov rsi,[rsp+38]
Starfield.exe+24C0457: 48 83 C4 20           - add rsp,20
Starfield.exe+24C045B: 5F                    - pop rdi
Starfield.exe+24C045C: C3                    - ret
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>1337160866</ID>
              <Description>"Turn on when really needed!!"</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>1337160894</ID>
          <Description>"EN / ship weapon"</Description>
          <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Starfield.exe
  Version: 
  Date   : 2023-09-05
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_SHIP_ADDR_CHK1,Starfield.exe,49 8B 45 00 49 8B CD FF 90 E0) // should be unique
alloc(newmem,$1000,INJECT_SHIP_ADDR_CHK1)

label(code)
label(return)
label(i_base_ship_addr_chk)
label(i_base_ship_addr_chk1_cnt)
label(i_base_ship_addr_top)

newmem:
  // rax, rcx = safe to use

  pushfq

  // record ship address / calclate times appeared
  push r15
  push r14
  push r12

  xor rcx, rcx
  xor r12, r12

loops:
  mov r15, i_base_ship_addr_chk
  mov r14, i_base_ship_addr_chk1_cnt

  lea rcx, [r15+r12d*8]

  cmp [rcx], 0
  je write_data

  cmp [rcx], r13  // record found
  je count_times

  jmp loop_proc

write_data:
  mov [rcx], r13

count_times:
  lea rcx, [r14+r12d*8] // calc &amp; write count
  inc qword ptr [rcx]
  jmp endp  // write count and exit loop

loop_proc:
  inc r12d
  cmp r12d, 15 // only record 20 ship addresses
  jae endp
  jmp loops

endp:
  pop r12
  pop r14
  pop r15

  // get top ship address count
  push r15
  push r14
  push r12

  xor rcx, rcx
  xor r12, r12
  xor rax, rax

loops2:
  mov r15, i_base_ship_addr_chk
  mov r14, i_base_ship_addr_chk1_cnt

  lea rcx, [r14+r12d*8]

  cmp rax, [rcx]
  jbe loops2_proc

  mov rax, [rcx]  // record number

  lea rcx, [r15+r12d*8] // record address
  mov r15, rcx

loops2_proc:
  inc r12d
  cmp r12d, 15 // only process 20 ship addresses
  jae endp2
  jmp loops2

endp2:
  mov r15, [r15]
  mov [i_base_ship_addr_top], r15

  pop r12
  pop r14
  pop r15





code_pre:
  popfq
code:
  mov rax,[r13+00]
  mov rcx,r13
  jmp return
align 10 cc
  i_base_ship_addr_chk:
  dq 0
  align 100 0
  db 0
  align 10 cc
  i_base_ship_addr_chk1_cnt:
  dq 0
  align 100 0
  db 0
  i_base_ship_addr_top:
  dq 0


INJECT_SHIP_ADDR_CHK1:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_SHIP_ADDR_CHK1)
registersymbol(i_base_ship_addr_chk)
registersymbol(i_base_ship_addr_chk1_cnt)
registersymbol(i_base_ship_addr_top)
[DISABLE]


INJECT_SHIP_ADDR_CHK1:
  db 49 8B 45 00 49 8B CD

unregistersymbol(INJECT_SHIP_ADDR_CHK1)
unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Starfield.exe+22DD225

Starfield.exe+22DD1AF - C3                    - ret
Starfield.exe+22DD1B0 - 48 8B C4              - mov rax,rsp
Starfield.exe+22DD1B3 - 48 89 58 08           - mov [rax+08],rbx
Starfield.exe+22DD1B7 - 48 89 70 10           - mov [rax+10],rsi
Starfield.exe+22DD1BB - 48 89 78 18           - mov [rax+18],rdi
Starfield.exe+22DD1BF - 55                    - push rbp
Starfield.exe+22DD1C0 - 41 54                 - push r12
Starfield.exe+22DD1C2 - 41 55                 - push r13
Starfield.exe+22DD1C4 - 41 56                 - push r14
Starfield.exe+22DD1C6 - 41 57                 - push r15
Starfield.exe+22DD1C8 - 48 8D 68 B9           - lea rbp,[rax-47]
Starfield.exe+22DD1CC - 48 81 EC 90000000     - sub rsp,00000090
Starfield.exe+22DD1D3 - C5F82970 C8           - vmovaps [rax-38],xmm6
Starfield.exe+22DD1D8 - C5F82978 B8           - vmovaps [rax-48],xmm7
Starfield.exe+22DD1DD - 4D 8B F1              - mov r14,r9
Starfield.exe+22DD1E0 - 4D 8B F8              - mov r15,r8
Starfield.exe+22DD1E3 - 48 8B FA              - mov rdi,rdx
Starfield.exe+22DD1E6 - 4C 8B E9              - mov r13,rcx
Starfield.exe+22DD1E9 - 49 8B C9              - mov rcx,r9
Starfield.exe+22DD1EC - E8 4B5712FF           - call Starfield.exe+140293C
Starfield.exe+22DD1F1 - 48 8B 5D 6F           - mov rbx,[rbp+6F]
Starfield.exe+22DD1F5 - C5FA1103              - vmovss [rbx],xmm0
Starfield.exe+22DD1F9 - 49 8B C9              - mov rcx,r9
Starfield.exe+22DD1FC: E8 73 9F D7 FF           - call Starfield.exe+2057174
Starfield.exe+22DD201: 48 8B 75 77              - mov rsi,[rbp+77]
Starfield.exe+22DD205: C5 FA 11 06              - vmovss [rsi],xmm0
Starfield.exe+22DD209: 45 33 C0                 - xor r8d,r8d
Starfield.exe+22DD20C: 49 8B D7                 - mov rdx,r15
Starfield.exe+22DD20F: 48 8D 4D BF              - lea rcx,[rbp-41]
Starfield.exe+22DD213: E8 28 82 5E FF           - call Starfield.exe+18C5440
Starfield.exe+22DD218: 90                       - nop
Starfield.exe+22DD219: C5 FA 10 3D C3 96 C4 01  - vmovss xmm7,[Starfield.exe+3F268E4]
Starfield.exe+22DD221: C5 F8 28 F7              - vmovaps xmm6,xmm7
// ---------- INJECTING HERE ----------
Starfield.exe+22DD225: 49 8B 45 00              - mov rax,[r13+00]
// ---------- DONE INJECTING  ----------
Starfield.exe+22DD229: 49 8B CD                 - mov rcx,r13
Starfield.exe+22DD22C: FF 90 E0 04 00 00        - call qword ptr [rax+000004E0]
Starfield.exe+22DD232: 33 C9                    - xor ecx,ecx
Starfield.exe+22DD234: 48 85 C0                 - test rax,rax
Starfield.exe+22DD237: 74 21                    - je Starfield.exe+22DD25A
Starfield.exe+22DD239: 38 4D 7F                 - cmp [rbp+7F],cl
Starfield.exe+22DD23C: 75 1C                    - jne Starfield.exe+22DD25A
Starfield.exe+22DD23E: 48 8B 08                 - mov rcx,[rax]
Starfield.exe+22DD241: 4C 8B 51 48              - mov r10,[rcx+48]
Starfield.exe+22DD245: 45 33 C9                 - xor r9d,r9d
Starfield.exe+22DD248 - 4D 8B C6              - mov r8,r14
Starfield.exe+22DD24B - 49 8B D7              - mov rdx,r15
Starfield.exe+22DD24E - 48 8B C8              - mov rcx,rax
Starfield.exe+22DD251 - 41 FF D2              - call r10
Starfield.exe+22DD254 - C5F828F0              - vmovaps xmm6,xmm0
Starfield.exe+22DD258 - 33 C9                 - xor ecx,ecx
Starfield.exe+22DD25A - C5F057C9              - vxorps xmm1,xmm1,xmm1
Starfield.exe+22DD25E - C5F82E0E              - vucomiss xmm1,[rsi]
Starfield.exe+22DD262 - 74 13                 - je Starfield.exe+22DD277
Starfield.exe+22DD264 - 49 8B 46 10           - mov rax,[r14+10]
Starfield.exe+22DD268 - F7 80 58010000 00020000 - test [rax+00000158],00000200
Starfield.exe+22DD272 - 44 8A E1              - mov r12b,cl
Starfield.exe+22DD275 - 74 03                 - je Starfield.exe+22DD27A
Starfield.exe+22DD277 - 41 B4 01              - mov r12b,01
Starfield.exe+22DD27A - 4D 8B FD              - mov r15,r13
Starfield.exe+22DD27D - 41 80 7D 36 4B        - cmp byte ptr [r13+36],4B
Starfield.exe+22DD282 - 4C 0F45 F9            - cmovne r15,rcx
Starfield.exe+22DD286 - 4D 85 FF              - test r15,r15
Starfield.exe+22DD289 - 0F84 9A010000         - je Starfield.exe+22DD429
Starfield.exe+22DD28F - 45 33 C0              - xor r8d,r8d
Starfield.exe+22DD292 - 49 8B D7              - mov rdx,r15
Starfield.exe+22DD295 - 48 8D 4D EF           - lea rcx,[rbp-11]
Starfield.exe+22DD299 - E8 A2815EFF           - call Starfield.exe+18C5440
Starfield.exe+22DD29E - 90                    - nop
Starfield.exe+22DD29F - 45 33 C0              - xor r8d,r8d
Starfield.exe+22DD2A2 - 48 8B D7              - mov rdx,rdi
Starfield.exe+22DD2A5 - 48 8D 4D CF           - lea rcx,[rbp-31]
Starfield.exe+22DD2A9 - E8 92815EFF           - call Starfield.exe+18C5440
Starfield.exe+22DD2AE - 90                    - nop
Starfield.exe+22DD2AF - 45 33 C0              - xor r8d,r8d
Starfield.exe+22DD2B2 - 49 8B 56 10           - mov rdx,[r14+10]
Starfield.exe+22DD2B6 - 48 8D 4D DF           - lea rcx,[rbp-21]
Starfield.exe+22DD2BA - E8 81815EFF           - call Starfield.exe+18C5440
Starfield.exe+22DD2BF - 90                    - nop

}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>1337160907</ID>
              <Description>"Re-enable when change ship / or not working"</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>1337160897</ID>
              <Description>"For ship's suggestion: Activate this in the status window when piloting a ship"</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>1337160895</ID>
              <Description>"Top ship address (do not edit)"</Description>
              <ShowAsHex>1</ShowAsHex>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>808080</Color>
              <VariableType>8 Bytes</VariableType>
              <Address>i_base_ship_addr_top</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>1337110785</ID>
              <Description>"inf. personal/ship EN weapon energy"</Description>
              <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Starfield.exe
  Version: 
  Date   : 2023-09-02
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_INF_EN_WEAPON,Starfield.exe,C5 FA 10 47 20 C5 FA 58) // should be unique
alloc(newmem,$1000,INJECT_INF_EN_WEAPON)

label(code)
label(return)
label(i_1st_w_en_addr)
label(i_1st_w_en_addr2)
label(i_1st_w_en_addr3)
label(i_1st_w_en_addr4)
label(i_1st_w_en_addr5)
label(is_only_1st_fired_w_en)

newmem:

  pushfq
  cmp r9, 0  // ship weapon check
  je ship_pre

  cmp r9, [player_ptr1]  // personal weapon player ptr check
  jne code_pre
  jmp loop_pre

ship_pre:
  cmp rsi, [i_base_ship_addr_top] // Ship address is not the #1 count
  jne code_pre

loop_pre:
  push r15
  push r14
  push r13
  xor r14, r14

loops:
  // new code
  mov r15, i_1st_w_en_addr
  lea r13, [r15+r14d*8]
  cmp qword ptr [r13], rdi
  je endp1
  cmp qword ptr [r13], 0
  je write_data
  jmp loop_tail

write_data:
  mov [r13], rdi
  jmp endp1_1

loop_tail:
  inc r14d
  cmp r14, 21
  jae endp1_1
  jmp loops


endp1:
  // check if value too low
  //vxorps xmm15, xmm15, xmm15
  //vmovss xmm14, [r13]
  //vucomiss xmm15, xmm14
  //je endp1_1

  //vmovss xmm15, [vf_0001]
  //vcomiss xmm14, xmm15
  //a endp1_1 // ignore if value too low

  //mov qword ptr [r13], 0  // delete record

endp1_1:
  pop r13
  pop r14
  pop r15

  jmp next1

  // old code
  cmp qword ptr [i_1st_w_en_addr], rdi
  je next1
  cmp qword ptr [i_1st_w_en_addr], 0
  jne write_2
  mov [i_1st_w_en_addr], rdi
  jmp next1

write_2:
  cmp qword ptr [i_1st_w_en_addr2], rdi
  je next1
  cmp qword ptr [i_1st_w_en_addr2], 0
  jne write_3
  mov [i_1st_w_en_addr2], rdi
  jmp next1

write_3:
  cmp qword ptr [i_1st_w_en_addr3], rdi
  je next1
  cmp qword ptr [i_1st_w_en_addr3], 0
  jne write_4
  mov [i_1st_w_en_addr3], rdi
  jmp next1

write_4:
  cmp qword ptr [i_1st_w_en_addr4], rdi
  je next1
  cmp qword ptr [i_1st_w_en_addr4], 0
  jne write_5
  mov [i_1st_w_en_addr4], rdi
  jmp next1

write_5:
  cmp qword ptr [i_1st_w_en_addr5], rdi
  je next1
  cmp qword ptr [i_1st_w_en_addr5], 0
  jne next1
  mov [i_1st_w_en_addr5], rdi
  jmp next1



next1:
  cmp dword ptr [is_only_1st_fired_w_en], 2
  je code_pre
  cmp dword ptr [is_only_1st_fired_w_en], 1
  jne next2
  cmp qword ptr [i_1st_w_en_addr], 0
  je code_pre
  cmp rdi, [i_1st_w_en_addr]
  jne code_pre
  // match 1st weapon
  db EB 3B 54
  db 68 69 73 20 74
  db 61 62 6C 65 20 63 6F 6D 65 73 20 66 72 6F 6D 20 68 74
  db 74 70 73 3A 2F
  db 2F 6F 70 65 6E 63 68 65
  db 61 74 74 61 62 6C 65 73
  db 2E 63 6F 6D
  db 20 2F 20 43 45 20 37 2E 34 2B

next2:
  //vxorps xmm15, xmm15, xmm15
  //vmovss xmm14, [rdi+20]
  //vucomiss xmm15, xmm14
  //je do_set_1
  //vmovss xmm15, [vf_0001]
  //vucomiss xmm14, xmm15
  //jb code_pre // ignore if value too low
  //jmp do_set_1

do_set_1:
  mov [rdi+20], (float)1.0  // full EN

code_pre:
  popfq

code:
  vmovss xmm0,[rdi+20]
  jmp return
align 10 cc
  i_1st_w_en_addr:
  dq 0
  i_1st_w_en_addr2:
  dq 0
  i_1st_w_en_addr3:
  dq 0
  i_1st_w_en_addr4:
  dq 0
  i_1st_w_en_addr5:
  dq 0
  i_1st_w_en_addrx:
  db 0
  align 100 0
  db 0
  align 100 0
  db 0
  is_only_1st_fired_w_en:
  dd 2
  vf_0001:
  dd (float)0.000001
  vf_0:
  dd 0

INJECT_INF_EN_WEAPON:
  jmp newmem
return:
registersymbol(INJECT_INF_EN_WEAPON)
registersymbol(i_1st_w_en_addr)
registersymbol(i_1st_w_en_addr2)
registersymbol(i_1st_w_en_addr3)
registersymbol(i_1st_w_en_addr4)
registersymbol(i_1st_w_en_addr5)
registersymbol(is_only_1st_fired_w_en)
[DISABLE]

INJECT_INF_EN_WEAPON:
  db C5 FA 10 47 20

unregistersymbol(INJECT_INF_EN_WEAPON)
unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Starfield.exe+1F26D05

Starfield.exe+1F26CC6 - CC                    - int 3
Starfield.exe+1F26CC7 - CC                    - int 3
Starfield.exe+1F26CC8 - 48 89 5C 24 08        - mov [rsp+08],rbx
Starfield.exe+1F26CCD - 48 89 74 24 10        - mov [rsp+10],rsi
Starfield.exe+1F26CD2 - 57                    - push rdi
Starfield.exe+1F26CD3 - 48 83 EC 30           - sub rsp,30
Starfield.exe+1F26CD7 - C5F82974 24 20        - vmovaps [rsp+20],xmm6
Starfield.exe+1F26CDD - 48 8B F2              - mov rsi,rdx
Starfield.exe+1F26CE0 - 48 8B F9              - mov rdi,rcx
Starfield.exe+1F26CE3: B3 01                    - mov bl,01
Starfield.exe+1F26CE5: E8 FE FE FF FF           - call Starfield.exe+1F26BE8
Starfield.exe+1F26CEA: C5 C8 57 F6              - vxorps xmm6,xmm6,xmm6
Starfield.exe+1F26CEE: C5 F8 2F C6              - vcomiss xmm0,xmm6
Starfield.exe+1F26CF2: 76 32                    - jna Starfield.exe+1F26D26
Starfield.exe+1F26CF4: 48 8B D6                 - mov rdx,rsi
Starfield.exe+1F26CF7: 48 8B CF                 - mov rcx,rdi
Starfield.exe+1F26CFA: E8 A9 FE FF FF           - call Starfield.exe+1F26BA8
Starfield.exe+1F26CFF: C5 F8 2F C6              - vcomiss xmm0,xmm6
Starfield.exe+1F26D03: 76 23                    - jna Starfield.exe+1F26D28
// ---------- INJECTING HERE ----------
Starfield.exe+1F26D05: C5 FA 10 47 20           - vmovss xmm0,[rdi+20]
// ---------- DONE INJECTING  ----------
Starfield.exe+1F26D0A: C5 FA 58 35 4E 08 00 02  - vaddss xmm6,xmm0,[Starfield.exe+3F27560]
Starfield.exe+1F26D12: 48 8B D6                 - mov rdx,rsi
Starfield.exe+1F26D15: 48 8B CF                 - mov rcx,rdi
Starfield.exe+1F26D18: E8 2B FE FF FF           - call Starfield.exe+1F26B48
Starfield.exe+1F26D1D: C5 F8 2F F0              - vcomiss xmm6,xmm0
Starfield.exe+1F26D21: 0F 93 C3                 - setae bl
Starfield.exe+1F26D24: EB 02                    - jmp Starfield.exe+1F26D28
Starfield.exe+1F26D26: 32 DB                    - xor bl,bl
Starfield.exe+1F26D28: 48 8B 74 24 48           - mov rsi,[rsp+48]
Starfield.exe+1F26D2D: 8A C3                    - mov al,bl
Starfield.exe+1F26D2F - 48 8B 5C 24 40        - mov rbx,[rsp+40]
Starfield.exe+1F26D34 - C5F82874 24 20        - vmovaps xmm6,[rsp+20]
Starfield.exe+1F26D3A - 48 83 C4 30           - add rsp,30
Starfield.exe+1F26D3E - 5F                    - pop rdi
Starfield.exe+1F26D3F - C3                    - ret
Starfield.exe+1F26D40 - 48 89 5C 24 10        - mov [rsp+10],rbx

}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>1337110787</ID>
                  <Description>"Current lock mode"</Description>
                  <DropDownList DisplayValueAsItem="1">0:Lock all (player/enemy)
1:Only lock 1st EN
2:No auto lock
</DropDownList>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>C08000</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>is_only_1st_fired_w_en</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160870</ID>
                  <Description>"EN data include NPC and player (first come first record)"</Description>
                  <Color>8000FF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160882</ID>
                  <Description>"#1 ~ #5: fast value response, others: slower"</Description>
                  <Color>8000FF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337110786</ID>
                  <Description>"1st EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr</Address>
                  <Offsets>
                    <Offset>20</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337110788</ID>
                  <Description>"2nd EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr2</Address>
                  <Offsets>
                    <Offset>20</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337110789</ID>
                  <Description>"3rd EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr3</Address>
                  <Offsets>
                    <Offset>20</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160868</ID>
                  <Description>"4th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr4</Address>
                  <Offsets>
                    <Offset>20</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160869</ID>
                  <Description>"5th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr5</Address>
                  <Offsets>
                    <Offset>20</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160871</ID>
                  <Description>"6th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+28</Address>
                  <Offsets>
                    <Offset>20</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160872</ID>
                  <Description>"7th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+28</Address>
                  <Offsets>
                    <Offset>28</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160873</ID>
                  <Description>"8th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+28</Address>
                  <Offsets>
                    <Offset>30</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160874</ID>
                  <Description>"9th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+30</Address>
                  <Offsets>
                    <Offset>30</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160875</ID>
                  <Description>"10th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+38</Address>
                  <Offsets>
                    <Offset>30</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160876</ID>
                  <Description>"11th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+40</Address>
                  <Offsets>
                    <Offset>30</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160877</ID>
                  <Description>"12th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+48</Address>
                  <Offsets>
                    <Offset>30</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160878</ID>
                  <Description>"13th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+50</Address>
                  <Offsets>
                    <Offset>30</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160879</ID>
                  <Description>"14th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+58</Address>
                  <Offsets>
                    <Offset>30</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160880</ID>
                  <Description>"15th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+60</Address>
                  <Offsets>
                    <Offset>30</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160881</ID>
                  <Description>"16th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+68</Address>
                  <Offsets>
                    <Offset>30</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160884</ID>
                  <Description>"17th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+70</Address>
                  <Offsets>
                    <Offset>30</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160885</ID>
                  <Description>"18th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+78</Address>
                  <Offsets>
                    <Offset>30</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160886</ID>
                  <Description>"19th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+80</Address>
                  <Offsets>
                    <Offset>30</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160887</ID>
                  <Description>"20th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+88</Address>
                  <Offsets>
                    <Offset>30</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160898</ID>
                  <Description>"21th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+90</Address>
                  <Offsets>
                    <Offset>30</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160899</ID>
                  <Description>"22th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+98</Address>
                  <Offsets>
                    <Offset>30</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160900</ID>
                  <Description>"23th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+100</Address>
                  <Offsets>
                    <Offset>30</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337160901</ID>
                  <Description>"24th EN data"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>Float</VariableType>
                  <Address>i_1st_w_en_addr+108</Address>
                  <Offsets>
                    <Offset>30</Offset>
                  </Offsets>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>1337110805</ID>
      <Description>"inf. ship repair kit via hotkey when use (min = 14)"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Starfield.exe
  Version: 
  Date   : 2023-09-15
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_MIN_SHIP_REPAIR_KIT,Starfield.exe,03 58 08 48 83 C0 10 EB ?? 49 8B CC E8 ?? ?? ?? ?? 44 8B E0 89 45 48 3B 7E 28 0F 97 C1 41 88 4E 05 8B 56 38 3B 15 ?? ?? ?? ?? 75 ?? C5 FA 10 56 3C C5 EA C2 0D 4E ?? ?? ?? ?? C5 FA 10 05 82 97 F2 03 C4 E3 79 4A CA 10 ?? ?? ?? ?? 74 ?? ?? ?? C7 46 3C 00 00 80 BF 41 80 7E 05 00) // should be unique
alloc(newmem,$1000,INJECT_MIN_SHIP_REPAIR_KIT)

label(code)
label(return)

newmem:
  cmp rdi, CE
  jne code

  push rbx
  mov ebx, [rax+08]
  cmp ebx, F
  jae endp
  mov ebx, F
  mov [rax+08], ebx

endp:
  pop rbx

code:
  add ebx,[rax+08]
  add rax,10
  jmp return

INJECT_MIN_SHIP_REPAIR_KIT:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_MIN_SHIP_REPAIR_KIT)

[DISABLE]

INJECT_MIN_SHIP_REPAIR_KIT:
  db 03 58 08 48 83 C0 10

unregistersymbol(INJECT_MIN_SHIP_REPAIR_KIT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Starfield.exe+19CAFEC

Starfield.exe+19CAFD0: 85 C9           - test ecx,ecx
Starfield.exe+19CAFD2: 75 08           - jne Starfield.exe+19CAFDC
Starfield.exe+19CAFD4: 41 8B C0        - mov eax,r8d
Starfield.exe+19CAFD7: 41 8B C8        - mov ecx,r8d
Starfield.exe+19CAFDA: EB 0B           - jmp Starfield.exe+19CAFE7
Starfield.exe+19CAFDC: 48 8B 42 18     - mov rax,[rdx+18]
Starfield.exe+19CAFE0: 48 C1 E1 04     - shl rcx,04
Starfield.exe+19CAFE4: 48 03 C8        - add rcx,rax
Starfield.exe+19CAFE7: 48 3B C1        - cmp rax,rcx
Starfield.exe+19CAFEA: 74 09           - je Starfield.exe+19CAFF5
// ---------- INJECTING HERE ----------
Starfield.exe+19CAFEC: 03 58 08        - add ebx,[rax+08]
// ---------- DONE INJECTING  ----------
Starfield.exe+19CAFEF: 48 83 C0 10     - add rax,10
Starfield.exe+19CAFF3: EB F2           - jmp Starfield.exe+19CAFE7
Starfield.exe+19CAFF5: 49 8B CC        - mov rcx,r12
Starfield.exe+19CAFF8: E8 A3 82 01 00  - call Starfield.exe+19E32A0
Starfield.exe+19CAFFD: 44 8B E0        - mov r12d,eax
Starfield.exe+19CB000: 89 45 48        - mov [rbp+48],eax
Starfield.exe+19CB003: 3B 7E 28        - cmp edi,[rsi+28]
Starfield.exe+19CB006: 0F 97 C1        - seta cl
Starfield.exe+19CB009: 41 88 4E 05     - mov [r14+05],cl
Starfield.exe+19CB00D: 8B 56 38        - mov edx,[rsi+38]
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>1337160905</ID>
      <Description>"Carry item weight multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Starfield.exe
  Version: 
  Date   : 2023-09-07
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_WEIGHT_MULTI,Starfield.exe,08 C5 FA 58 47 08) // should be unique
alloc(newmem,$1000,INJECT_WEIGHT_MULTI)

label(code)
label(return)
label(vf_weight_multi)

newmem:
  //vmovss xmm15, [rdi+08]
  vmovss xmm14, [vf_weight_multi]
  vmulss xmm0, xmm14, xmm0
  //vmovss [rdi+08], xmm15
  //vaddss xmm0, xmm0, xmm15
  //vxorps xmm0, xmm0, xmm0

code:
  vaddss xmm0,xmm0,[rdi+08]
  jmp return
align 10 cc
  vf_weight_multi:
  dd (float)0.25

INJECT_WEIGHT_MULTI+01:
  jmp newmem
return:
registersymbol(INJECT_WEIGHT_MULTI)
registersymbol(vf_weight_multi)
[DISABLE]

INJECT_WEIGHT_MULTI+01:
  db C5 FA 58 47 08

unregistersymbol(INJECT_WEIGHT_MULTI)
unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Starfield.exe+1535E31

Starfield.exe+1535E0A: E8 8D 70 31 FF  - call Starfield.exe+84CE9C
Starfield.exe+1535E0F: 48 8D 54 24 40  - lea rdx,[rsp+40]
Starfield.exe+1535E14: E8 DB 08 D9 FF  - call Starfield.exe+12C66F4
Starfield.exe+1535E19: 48 8B 5C 24 30  - mov rbx,[rsp+30]
Starfield.exe+1535E1E: 48 3B 5C 24 40  - cmp rbx,[rsp+40]
Starfield.exe+1535E23: 74 1C           - je Starfield.exe+1535E41
Starfield.exe+1535E25: 48 8B 07        - mov rax,[rdi]
Starfield.exe+1535E28: 48 8B D3        - mov rdx,rbx
Starfield.exe+1535E2B: 48 8B CF        - mov rcx,rdi
Starfield.exe+1535E2E: FF 50 08        - call qword ptr [rax+08]
// ---------- INJECTING HERE ----------
Starfield.exe+1535E31: C5 FA 58 47 08  - vaddss xmm0,xmm0,[rdi+08]
// ---------- DONE INJECTING  ----------
Starfield.exe+1535E36: C5 FA 11 47 08  - vmovss [rdi+08],xmm0
Starfield.exe+1535E3B: 48 83 C3 28     - add rbx,28
Starfield.exe+1535E3F: EB DD           - jmp Starfield.exe+1535E1E
Starfield.exe+1535E41: 48 8B 5C 24 38  - mov rbx,[rsp+38]
Starfield.exe+1535E46: B8 01 00 00 00  - mov eax,00000001
Starfield.exe+1535E4B: 48 83 C4 20     - add rsp,20
Starfield.exe+1535E4F: 5F              - pop rdi
Starfield.exe+1535E50: C3              - ret 
Starfield.exe+1535E51: CC              - int 3 
Starfield.exe+1535E52: CC              - int 3 
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>1337160896</ID>
          <Description>"Usage: Pick up / drop item"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>1337160908</ID>
          <Description>"You may become overweight if this script doesn't work in future versions!!"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>1337160906</ID>
          <Description>"multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_weight_multi</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>1337160867</ID>
      <Description>"Starfield (A411F509 V1.7.29.0)  /  https://opencheattables.com  /  CE 7.5+"</Description>
      <Color>00A452</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols>
    <SymbolEntry>
      <Name>player_ptr1</Name>
      <Address>7FF72B6D81E8</Address>
    </SymbolEntry>
  </UserdefinedSymbols>
  <Comments>Player Character Ptr AOB: 
48 3B 1D ?? ?? ?? ?? 75 1C 48 8B
48 8B 05 ?? ?? ?? ?? 48 3B D8 74 ?? 48 8B D7 48 8B CB
Weight total:
C5 FA 10 47 08 C5 FA 11 43 3C
</Comments>
  <LuaScript>--lua scripts that table checkbox will not be checked with "NO_ACTIVATE" in comment
function onMemRecPostExecute(memoryrecord, newState, succeeded )
    if memoryrecord.Type == vtAutoAssembler and memoryrecord.Script:find("NO_ACTIVATE") and newState and succeeded then
        memoryrecord.disableWithoutExecute()
    end
end

--memory record IDs now allowed to be 'locked'
IDs = {1337160890, 9999998,
      }

--determine event trigger sequence


function contains(table, val)
   local i = 0
   for i=1, #table do
      if table[i] == val then
         return true
      end
   end
   return false
end


function onMemRecPreExecute(memoryrecord, newstate)
    if contains(IDs, memoryrecord.ID) and newstate then
	    memoryrecord.OnActivate = function(memoryrecord, before, currentstate)
		    return false
	    end
    end
end

function AOBScanModule(moduleName, signature, aobSignaturePrivileges, alignmentType, alignmentParam)
	--checkArgType(moduleName, 1, 'string')
	if not signature or not moduleName then return end
	index = index or 1
	local modStartAddr = getAddress(moduleName)
	local modEndAddr = modStartAddr + getModuleSize(moduleName)
	local ms = createMemScan()
	if type(signature) == 'table' then
		local sig = ''
		for i, byte in ipairs(signature) do
			sig = sig..string.format('%02X', byte)
		end
		signature = sig
	end
	ms.firstScan(soExactValue, vtByteArray, nil, signature, nil, modStartAddr, modEndAddr,
				 aobSignaturePrivileges, alignmentType, alignmentParam, true, true, false, false)
	ms.waitTillDone()
	local results = createFoundList(ms)
	results.initialize()
	ms.destroy()
	return results
end
registerLuaFunctionHighlight('AOBScanModule')



AddressList.Header.OnSectionClick = nil

</LuaScript>
</CheatTable>
