[ENABLE]
aobscan(hack_addr,d9 96 20 02 00 00 0f bf 81 82 01 00 00 89 44 24 18 db 44 24 18 d9 c9 de d9 df e0 f6 c4 01 75 13 8b 16)
registersymbol(hack_entry_point)
label(hack_entry_point)
alloc(newmem,2048)
label(returnhere)
label(not_player)
alloc(extra_build,4) //how much extra build do we add each iteration?
alloc(extra_health,4)//how much extra health do we add each iteration?

extra_build:
dd 459c4000 //5000.0, I can't get de/df to work
extra_health:
dd 459c4000 //5000.0, I can't get de/df to work

hack_addr:
hack_entry_point:
jmp newmem
nop
returnhere:

newmem: 
pushad //could probably get away w/ just saving eax
pushfd //our cmp probably changes flags, and I didn't check to see if it mattered
lea eax,[esi+138] //axiom: building class base + 138h points to NULL if the building is controlled by the AI 
mov eax,[eax] //dereference the address
cmp eax,0 //check it for null
je not_player //if it's null (AI owned building), skip next section
fld dword ptr [esp+30] //load building's health into fpu
fadd [extra_health] //give our building some extra health
fstp dword ptr [esi+30] //store the new building health and pop/rotate barrel back
fadd [extra_build] //give our building some extra completion %
not_player:
fst dword ptr [esi+00000220] //store the new completion %
popfd //restore flags
popad //restore regs
jmp returnhere
 
 
[DISABLE]
dealloc(newmem)
dealloc(extra_build)
dealloc(extra_health)
hack_entry_point:
fst dword ptr [esi+00000220]
unregistersymbol(hack_entry_point)