<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>

    <CheatEntry>
      <ID>1</ID>
      <Description>"Infinite Droppables / Gadgets"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
define(ITEM_FLAGS,4AC)
define(WEAPON_BIT,10)
define(OBJ_CLASS,24)
define(RET_OFS,5)
aobscanmodule(aob_DropItem,Blacklist_DX11_game.exe,55 8B EC 83 EC 0C 53 8B 5D 0C 56 8B 75 08 8B 86 B0 00 00 00)
aobscanmodule(ga_SpawnMgr,Blacklist_DX11_game.exe,A1 ?? ?? ?? ?? 85 C0 74 04 8B 40 20)
aobscanmodule(ga_Spawn,Blacklist_DX11_game.exe,55 8B EC 56 57 E8 ?? ?? ?? ?? 85 C0 74 1D)
aobscanmodule(ga_Give,Blacklist_DX11_game.exe,55 8B EC 83 EC 0C 56 57 8B 7D 08 85 FF 0F)
aobscanmodule(ga_IsPlayer,Blacklist_DX11_game.exe,F7 41 5C ?? ?? ?? ?? 74 0C 80)
aobscanmodule(ga_rt1,Blacklist_DX11_game.exe,E8 ?? ?? ?? ?? EB 33 38 58 4D)
aobscanmodule(ga_rt2,Blacklist_DX11_game.exe,E8 ?? ?? ?? ?? 8B 86 98 00 00 00 85 C0 74 0D)
aobscanmodule(ga_rt3,Blacklist_DX11_game.exe,E8 ?? ?? ?? ?? 8B 46 48 85 C0 74 17 8B 80 F8 13 00 00 85 C0 74 0D 6A 06)
aobscanmodule(ga_rt4,Blacklist_DX11_game.exe,E8 ?? ?? ?? ?? 8B 46 48 8B 88 24 0B 00 00 83 F9 09)
aobscanmodule(ga_rt5,Blacklist_DX11_game.exe,E8 ?? ?? ?? ?? EB 20 6A 00 6A)
aobscanmodule(ga_rt6,Blacklist_DX11_game.exe,E8 ?? ?? ?? ?? 8B 4E 48 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 46 48 6A)
aobscanmodule(ga_rt7,Blacklist_DX11_game.exe,E8 ?? ?? ?? ?? 8B 96 94 00 00 00 39)
aobscanmodule(ga_rt8,Blacklist_DX11_game.exe,E8 ?? ?? ?? ?? 8B 8E B4 00 00 00 6A)
registersymbol(aob_DropItem)
alloc(newmem_InfGadgets,$400,aob_DropItem)
label(return_InfGadgets)
label(ig_check)
label(ig_nomatch)
label(ig_orig)
label(ig_post)
label(ig_done)
label(igBusy)
label(igOwner)
label(igClass)
label(igRet)
label(igZero)
label(igCount)
registersymbol(igCount)

newmem_InfGadgets:
  cmp dword ptr [igBusy],0
  jne ig_orig
  push eax
  mov eax,[esp+4]
  cmp eax,ga_rt1+RET_OFS
  je ig_check
  cmp eax,ga_rt2+RET_OFS
  je ig_check
  cmp eax,ga_rt3+RET_OFS
  je ig_check
  cmp eax,ga_rt4+RET_OFS
  je ig_check
  cmp eax,ga_rt5+RET_OFS
  je ig_check
  cmp eax,ga_rt6+RET_OFS
  je ig_check
  cmp eax,ga_rt7+RET_OFS
  je ig_check
  cmp eax,ga_rt8+RET_OFS
  je ig_check
  jmp ig_nomatch

ig_check:
  mov eax,[esp+8]
  test eax,eax
  jz ig_nomatch
  test byte ptr [eax+ITEM_FLAGS],WEAPON_BIT
  jnz ig_nomatch
  push ecx
  call ga_IsPlayer
  pop ecx
  test eax,eax
  jz ig_nomatch
  mov eax,[esp+8]
  mov eax,[eax+OBJ_CLASS]
  test eax,eax
  jz ig_nomatch
  mov [igClass],eax
  mov [igOwner],ecx
  mov eax,[esp+4]
  mov [igRet],eax
  mov dword ptr [esp+4],ig_post
  mov dword ptr [igBusy],1

ig_nomatch:
  pop eax

ig_orig:
  push ebp
  mov ebp,esp
  sub esp,0C
  jmp return_InfGadgets

ig_post:
  pushfd
  pushad
  call ga_SpawnMgr
  test eax,eax
  jz ig_done
  mov ecx,eax
  push 0
  push 0
  push igZero
  push igZero
  push dword ptr [igClass]
  call ga_Spawn
  test eax,eax
  jz ig_done
  push eax
  push dword ptr [igOwner]
  call ga_Give
  add esp,8
  inc dword ptr [igCount]
ig_done:
  mov dword ptr [igBusy],0
  popad
  popfd
  jmp dword ptr [igRet]

align 4 CC
igBusy:
  dd 0
igOwner:
  dd 0
igClass:
  dd 0
igRet:
  dd 0
igCount:
  dd 0
igZero:
  dd 0 0 0 0

aob_DropItem:
  jmp newmem_InfGadgets
  nop
return_InfGadgets:

[DISABLE]
aob_DropItem:
  db 55 8B EC 83 EC 0C

unregistersymbol(aob_DropItem)
unregistersymbol(igCount)
dealloc(newmem_InfGadgets)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>2</ID>
          <Description>"Gadgets refilled"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>igCount</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>

    <CheatEntry>
      <ID>3</ID>
      <Description>"Infinite Drone"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
define(OBJ_CLASS,24)
define(OBJ_NAME,20)
define(NAME_MASK,3FFFF)
define(CLS_QUAD,296E)
define(CLS_ADVQUAD,2BF7)
define(DRONE_OWNER,9FC)
aobscanmodule(aob_DroneDeath,Blacklist_DX11_game.exe,81 8E C4 07 00 00 00 00 08 00 56 51 E8 ?? ?? ?? ?? 83 C4 08 5E 8B E5 5D C2 04 00)
aobscanmodule(aob_DroneBroken,Blacklist_DX11_game.exe,55 8B EC 80 7D 08 00 57 8B F9 8B 07 0F 84 DD 00 00 00)
aobscanmodule(dr_SpawnMgr,Blacklist_DX11_game.exe,A1 ?? ?? ?? ?? 85 C0 74 04 8B 40 20)
aobscanmodule(dr_Spawn,Blacklist_DX11_game.exe,55 8B EC 56 57 E8 ?? ?? ?? ?? 85 C0 74 1D)
aobscanmodule(dr_Give,Blacklist_DX11_game.exe,55 8B EC 83 EC 0C 56 57 8B 7D 08 85 FF 0F)
aobscanmodule(dr_IsPlayer,Blacklist_DX11_game.exe,F7 41 5C ?? ?? ?? ?? 74 0C 80)
registersymbol(aob_DroneDeath)
registersymbol(aob_DroneBroken)
alloc(newmem_InfDrone,$400,aob_DroneDeath)
label(return_InfDrone)
label(return_DroneBroken)
label(newmem_DroneBroken)
label(idRefill)
label(idOk)
label(idDone)
label(idSkipBroken)
label(idLast)
label(idZero)
label(idCount)
label(idEntryDeath)
registersymbol(idCount)

newmem_InfDrone:
  jmp idEntryDeath

idRefill:
  test edi,edi
  jz idDone
  test ebx,ebx
  jz idDone
  cmp ebx,[idLast]
  je idDone
  mov esi,[ebx+OBJ_CLASS]
  test esi,esi
  jz idDone
  mov edx,[esi+OBJ_NAME]
  and edx,NAME_MASK
  cmp edx,CLS_QUAD
  je idOk
  cmp edx,CLS_ADVQUAD
  jne idDone
idOk:
  mov ecx,edi
  call dr_IsPlayer
  test eax,eax
  jz idDone
  call dr_SpawnMgr
  test eax,eax
  jz idDone
  mov ecx,eax
  push 0
  push 0
  push idZero
  push idZero
  push esi
  call dr_Spawn
  test eax,eax
  jz idDone
  push eax
  push edi
  call dr_Give
  add esp,8
  mov [idLast],ebx
  inc dword ptr [idCount]
idDone:
  ret

idEntryDeath:
  pushfd
  pushad
  mov edi,[esp+24]
  mov ebx,[esp+28]
  call idRefill
  popad
  popfd
  add esp,8
  pop esi
  mov esp,ebp
  jmp return_InfDrone

newmem_DroneBroken:
  cmp byte ptr [esp+4],0
  je idSkipBroken
  pushfd
  pushad
  mov ebx,ecx
  mov edi,[ebx+DRONE_OWNER]
  call idRefill
  popad
  popfd
idSkipBroken:
  push ebp
  mov ebp,esp
  cmp byte ptr [ebp+08],00
  jmp return_DroneBroken

align 4 CC
idLast:
  dd 0
idCount:
  dd 0
idZero:
  dd 0 0 0 0

aob_DroneDeath+11:
  jmp newmem_InfDrone
  nop
return_InfDrone:

aob_DroneBroken:
  jmp newmem_DroneBroken
  nop
  nop
return_DroneBroken:

[DISABLE]
aob_DroneDeath+11:
  db 83 C4 08 5E 8B E5

aob_DroneBroken:
  db 55 8B EC 80 7D 08 00

unregistersymbol(aob_DroneDeath)
unregistersymbol(aob_DroneBroken)
unregistersymbol(idCount)
dealloc(newmem_InfDrone)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>4</ID>
          <Description>"Drones replaced"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>idCount</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>

    <CheatEntry>
      <ID>5</ID>
      <Description>"Infinite Sticky Cameras"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
define(CAM_OWNER,8D4)
define(PAWN_INV,1410)
define(OBJ_CLASS,24)
aobscanmodule(aob_StickyDeploy,Blacklist_DX11_game.exe,8B 8E D4 08 00 00 85 C9 74 06 56 E8 ?? ?? ?? ?? 5E C3)
aobscanmodule(st_SpawnMgr,Blacklist_DX11_game.exe,A1 ?? ?? ?? ?? 85 C0 74 04 8B 40 20)
aobscanmodule(st_Spawn,Blacklist_DX11_game.exe,55 8B EC 56 57 E8 ?? ?? ?? ?? 85 C0 74 1D)
aobscanmodule(st_Give,Blacklist_DX11_game.exe,55 8B EC 83 EC 0C 56 57 8B 7D 08 85 FF 0F)
aobscanmodule(st_IsPlayer,Blacklist_DX11_game.exe,F7 41 5C ?? ?? ?? ?? 74 0C 80)
aobscanmodule(st_Contains,Blacklist_DX11_game.exe,55 8B EC 56 8B 75 08 57 8B F9 85 F6 74 44)
aobscanmodule(st_Remove,Blacklist_DX11_game.exe,55 8B EC 8B 55 08 8B C1 8B 88 14 14 00 00 85 C9 74 0C)
registersymbol(aob_StickyDeploy)
alloc(newmem_InfSticky,$200,aob_StickyDeploy)
label(skPre)
label(skDone)
label(skExit)
label(skClass)
label(skZero)
label(skCount)
registersymbol(skCount)

newmem_InfSticky:
  mov ecx,[esi+CAM_OWNER]
  test ecx,ecx
  jz skExit
  pushfd
  pushad
  mov edi,ecx
  xor ebx,ebx
  call st_IsPlayer
  test eax,eax
  jz skPre
  mov ecx,[edi+PAWN_INV]
  test ecx,ecx
  jz skPre
  push esi
  call st_Contains
  movzx ebx,al
skPre:
  mov ecx,edi
  push esi
  call st_Remove
  test ebx,ebx
  jz skDone
  mov eax,[esi+OBJ_CLASS]
  test eax,eax
  jz skDone
  mov [skClass],eax
  call st_SpawnMgr
  test eax,eax
  jz skDone
  mov ecx,eax
  push 0
  push 0
  push skZero
  push skZero
  push dword ptr [skClass]
  call st_Spawn
  test eax,eax
  jz skDone
  push eax
  push edi
  call st_Give
  add esp,8
  inc dword ptr [skCount]
skDone:
  popad
  popfd
skExit:
  jmp aob_StickyDeploy+10

align 4 CC
skClass:
  dd 0
skCount:
  dd 0
skZero:
  dd 0 0 0 0

aob_StickyDeploy:
  jmp newmem_InfSticky
  nop

[DISABLE]
aob_StickyDeploy:
  db 8B 8E D4 08 00 00

unregistersymbol(aob_StickyDeploy)
unregistersymbol(skCount)
dealloc(newmem_InfSticky)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>6</ID>
          <Description>"Sticky cams refilled"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>skCount</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>

    <CheatEntry>
      <ID>7</ID>
      <Description>"Infinite Drone Range"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
aobscanmodule(aob_DroneRange,Blacklist_DX11_game.exe,66 0F 2F C1 0F 86 D8 00 00 00 84 C9 78 0E)
registersymbol(aob_DroneRange)

aob_DroneRange+4:
  db E9 D9 00 00 00 90

[DISABLE]
aob_DroneRange+4:
  db 0F 86 D8 00 00 00

unregistersymbol(aob_DroneRange)
</AssemblerScript>
    </CheatEntry>

    <CheatEntry>
      <ID>8</ID>
      <Description>"Sonar: fast + constant scan + range"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
aobscanmodule(aob_SonarGrow,Blacklist_DX11_game.exe,0F 5A C4 0F 5A D2 F2 0F 59 C2)
define(COMP_TIMER,04)
define(TIMER_RESUME,0B)
aobscanmodule(aob_SonarTimer,Blacklist_DX11_game.exe,F3 0F 11 46 04 EB 04 84 C9 74 12)
aobscanmodule(aob_SonarStill,Blacklist_DX11_game.exe,55 8B EC 83 EC 08 56 8B F1 8B 8E 94 00 00 00 B0 01)
aobscanmodule(aob_SonarCancel,Blacklist_DX11_game.exe,F3 0F 11 4F 38 C6 47 34 00 0F 2F 4E 04)
registersymbol(aob_SonarStill)
registersymbol(aob_SonarCancel)
aobscanmodule(aob_SonarMaxR,Blacklist_DX11_game.exe,66 0F 5A C8 84 DB 75 14)
aobscanmodule(aob_SonarCap,Blacklist_DX11_game.exe,55 8B EC 51 8B 45 08 85 C0 75 06 D9 EE 8B E5 5D C3 8B 80 38 05 00 00)
registersymbol(aob_SonarGrow)
registersymbol(aob_SonarTimer)
registersymbol(aob_SonarMaxR)
registersymbol(aob_SonarCap)
alloc(newmem_SonarGrow,$100,aob_SonarGrow)
label(return_SonarGrow)
label(return_SonarMaxR)
label(newmem_SonarMaxR)
label(newmem_SonarCap)
label(newmem_SonarTimer)
label(ssSpeed)
label(ssRange)
registersymbol(ssSpeed)
registersymbol(ssRange)

newmem_SonarGrow:
  cvtss2sd xmm0,[ssSpeed]
  cvtps2pd xmm2,xmm2
  jmp return_SonarGrow

newmem_SonarMaxR:
  movss xmm1,[ssRange]
  test bl,bl
  jmp return_SonarMaxR

newmem_SonarCap:
  fld dword ptr [ssRange]
  ret

newmem_SonarTimer:
  mov dword ptr [esi+COMP_TIMER],0
  jmp aob_SonarTimer+TIMER_RESUME

align 4 CC
ssSpeed:
  dd (float)20000
ssRange:
  dd (float)10000

aob_SonarGrow:
  jmp newmem_SonarGrow
  nop
return_SonarGrow:

aob_SonarTimer:
  jmp newmem_SonarTimer
  nop 2

aob_SonarStill:
  db B0 01 C3

aob_SonarCancel:
  db 90 90 90 90 90 90 90 90 90

aob_SonarMaxR:
  jmp newmem_SonarMaxR
  nop
return_SonarMaxR:

aob_SonarCap:
  jmp newmem_SonarCap
  nop 2

[DISABLE]
aob_SonarGrow:
  db 0F 5A C4 0F 5A D2

aob_SonarTimer:
  db F3 0F 11 46 04 EB 04

aob_SonarStill:
  db 55 8B EC

aob_SonarCancel:
  db F3 0F 11 4F 38 C6 47 34 00

aob_SonarMaxR:
  db 66 0F 5A C8 84 DB

aob_SonarCap:
  db 55 8B EC 51 8B 45 08

unregistersymbol(aob_SonarGrow)
unregistersymbol(aob_SonarTimer)
unregistersymbol(aob_SonarStill)
unregistersymbol(aob_SonarCancel)
unregistersymbol(aob_SonarMaxR)
unregistersymbol(aob_SonarCap)
unregistersymbol(ssSpeed)
unregistersymbol(ssRange)
dealloc(newmem_SonarGrow)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>9</ID>
          <Description>"Scan range"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>ssRange</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>10</ID>
          <Description>"Wave speed"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>ssSpeed</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>

    <CheatEntry>
      <ID>11</ID>
      <Description>"Sonar: no static"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
define(PROP_OFS,28)
define(PROP_BLEND,44)
define(VSTATE,2B0)
define(VSETTINGS,2A8)
define(VMODE,1C)
define(SONAR_MODE_A,4)
define(SONAR_MODE_B,5)
aobscanmodule(aob_SonarNoise,Blacklist_DX11_game.exe,8B 9D 50 FD FF FF 83 C4 0C 8B 85 6C FD FF FF)
aobscanmodule(ns_Lerp,Blacklist_DX11_game.exe,55 8B EC 8B 45 0C F3 0F 10 00 8B 4D 10)
registersymbol(aob_SonarNoise)
alloc(newmem_SonarNoise,$200,aob_SonarNoise)
label(return_SonarNoise)
label(nsSkip)
label(nsSkip2)
label(nsLoop)
label(nsFound)
label(nsTable)
registersymbol(nsTable)

newmem_SonarNoise:
  cmp dword ptr [esi+PROP_BLEND],ns_Lerp
  jne nsSkip2
  push eax
  push ecx
  push edx
  mov ecx,[ebp-VSTATE]
  test ecx,ecx
  jz nsSkip
  mov eax,[ecx+VMODE]
  cmp eax,SONAR_MODE_A
  je @f
  cmp eax,SONAR_MODE_B
  jne nsSkip
@@:
  mov edx,[esi+PROP_OFS]
  mov ecx,nsTable
nsLoop:
  mov eax,[ecx]
  test eax,eax
  jz nsSkip
  cmp eax,edx
  je nsFound
  add ecx,8
  jmp nsLoop
nsFound:
  mov eax,[ebp-VSETTINGS]
  test eax,eax
  jz nsSkip
  add eax,edx
  cmp eax,[esp+10]
  jne nsSkip
  mov edx,[ecx+4]
  mov [eax],edx
nsSkip:
  pop edx
  pop ecx
  pop eax
nsSkip2:
  mov ebx,[ebp-VSTATE]
  jmp return_SonarNoise

align 4 CC
nsTable:
  dd 38,  (float)0.01
  dd 60,  (float)1000
  dd 64,  (float)3000
  dd 68,  (float)0
  dd 6C,  (float)0.39
  dd 70,  (float)4
  dd C8,  (float)2
  dd CC,  (float)1.3
  dd DC,  (float)1
  dd E8,  (float)1.7
  dd EC,  (float)0.03
  dd F0,  (float)2
  dd F8,  (float)1
  dd 100, (float)1
  dd 104, (float)0.5
  dd 108, (float)2
  dd 10C, (float)1
  dd 110, (float)0.79
  dd 114, (float)0.01
  dd 11C, (float)1
  dd 124, (float)0.015
  dd 128, (float)1
  dd 12C, (float)2
  dd 1F8, (float)1
  dd 0, 0

aob_SonarNoise:
  jmp newmem_SonarNoise
  nop
return_SonarNoise:

[DISABLE]
aob_SonarNoise:
  db 8B 9D 50 FD FF FF

unregistersymbol(aob_SonarNoise)
unregistersymbol(nsTable)
dealloc(newmem_SonarNoise)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>12</ID>
          <Description>"Sonar brightness"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>nsTable+4</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>

    <CheatEntry>
      <ID>13</ID>
      <Description>"Goggles: no jamming"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
aobscanmodule(aob_GogglesJam,Blacklist_DX11_game.exe,8A 5D 08 88 55 FF 75 0D 84 DB)
registersymbol(aob_GogglesJam)

aob_GogglesJam:
  db 32 DB 90

[DISABLE]
aob_GogglesJam:
  db 8A 5D 08

unregistersymbol(aob_GogglesJam)
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols />
</CheatTable>
