; Listing generated by Microsoft (R) Optimizing Compiler Version 14.00.50727.762 

	TITLE	d:\Source Code\STGM\engine_dmg.cpp
	.686P
	.XMM
	include listing.inc
	.model	flat

INCLUDELIB LIBCMTD
INCLUDELIB OLDNAMES

PUBLIC	??_C@_0P@GHFPNOJB@bad?5allocation?$AA@		; `string'
PUBLIC	?Get_Armor_Name@@3P6APBDI@ZA			; Get_Armor_Name
PUBLIC	?Get_Armor_Type@@3P6AIPBD@ZA			; Get_Armor_Type
PUBLIC	?collate@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::collate
PUBLIC	?ctype@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::ctype
PUBLIC	?monetary@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::monetary
PUBLIC	?numeric@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::numeric
PUBLIC	?time@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::time
PUBLIC	?messages@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::messages
PUBLIC	?all@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::all
PUBLIC	?none@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::none
PUBLIC	?table_size@?$ctype@D@std@@2IB			; std::ctype<char>::table_size
PUBLIC	?skipws@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::skipws
PUBLIC	?unitbuf@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::unitbuf
PUBLIC	?uppercase@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::uppercase
PUBLIC	?showbase@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::showbase
PUBLIC	?showpoint@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::showpoint
PUBLIC	?showpos@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::showpos
PUBLIC	?left@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::left
PUBLIC	?right@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::right
PUBLIC	?internal@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::internal
PUBLIC	?dec@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::dec
PUBLIC	?oct@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::oct
PUBLIC	?hex@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::hex
PUBLIC	?scientific@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::scientific
PUBLIC	?fixed@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::fixed
PUBLIC	?boolalpha@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::boolalpha
PUBLIC	?_Stdio@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::_Stdio
PUBLIC	?adjustfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::adjustfield
PUBLIC	?basefield@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::basefield
PUBLIC	?floatfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::floatfield
PUBLIC	?goodbit@?$_Iosb@H@std@@2W4_Iostate@12@B	; std::_Iosb<int>::goodbit
PUBLIC	?eofbit@?$_Iosb@H@std@@2W4_Iostate@12@B		; std::_Iosb<int>::eofbit
PUBLIC	?failbit@?$_Iosb@H@std@@2W4_Iostate@12@B	; std::_Iosb<int>::failbit
PUBLIC	?badbit@?$_Iosb@H@std@@2W4_Iostate@12@B		; std::_Iosb<int>::badbit
PUBLIC	?_Hardfail@?$_Iosb@H@std@@2W4_Iostate@12@B	; std::_Iosb<int>::_Hardfail
PUBLIC	?in@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::in
PUBLIC	?out@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::out
PUBLIC	?ate@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::ate
PUBLIC	?app@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::app
PUBLIC	?trunc@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::trunc
PUBLIC	?_Nocreate@?$_Iosb@H@std@@2W4_Openmode@12@B	; std::_Iosb<int>::_Nocreate
PUBLIC	?_Noreplace@?$_Iosb@H@std@@2W4_Openmode@12@B	; std::_Iosb<int>::_Noreplace
PUBLIC	?binary@?$_Iosb@H@std@@2W4_Openmode@12@B	; std::_Iosb<int>::binary
PUBLIC	?beg@?$_Iosb@H@std@@2W4_Seekdir@12@B		; std::_Iosb<int>::beg
PUBLIC	?cur@?$_Iosb@H@std@@2W4_Seekdir@12@B		; std::_Iosb<int>::cur
PUBLIC	?end@?$_Iosb@H@std@@2W4_Seekdir@12@B		; std::_Iosb<int>::end
_BSS	SEGMENT
?Get_Armor_Name@@3P6APBDI@ZA DD 01H DUP (?)		; Get_Armor_Name
?Get_Armor_Type@@3P6AIPBD@ZA DD 01H DUP (?)		; Get_Armor_Type
_BSS	ENDS
;	COMDAT ?end@?$_Iosb@H@std@@2W4_Seekdir@12@B
CONST	SEGMENT
?end@?$_Iosb@H@std@@2W4_Seekdir@12@B DD 02H		; std::_Iosb<int>::end
CONST	ENDS
;	COMDAT ?cur@?$_Iosb@H@std@@2W4_Seekdir@12@B
CONST	SEGMENT
?cur@?$_Iosb@H@std@@2W4_Seekdir@12@B DD 01H		; std::_Iosb<int>::cur
CONST	ENDS
;	COMDAT ?beg@?$_Iosb@H@std@@2W4_Seekdir@12@B
CONST	SEGMENT
?beg@?$_Iosb@H@std@@2W4_Seekdir@12@B DD 00H		; std::_Iosb<int>::beg
CONST	ENDS
;	COMDAT ?binary@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?binary@?$_Iosb@H@std@@2W4_Openmode@12@B DD 020H	; std::_Iosb<int>::binary
CONST	ENDS
;	COMDAT ?_Noreplace@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?_Noreplace@?$_Iosb@H@std@@2W4_Openmode@12@B DD 080H	; std::_Iosb<int>::_Noreplace
CONST	ENDS
;	COMDAT ?_Nocreate@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?_Nocreate@?$_Iosb@H@std@@2W4_Openmode@12@B DD 040H	; std::_Iosb<int>::_Nocreate
CONST	ENDS
;	COMDAT ?trunc@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?trunc@?$_Iosb@H@std@@2W4_Openmode@12@B DD 010H		; std::_Iosb<int>::trunc
CONST	ENDS
;	COMDAT ?app@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?app@?$_Iosb@H@std@@2W4_Openmode@12@B DD 08H		; std::_Iosb<int>::app
CONST	ENDS
;	COMDAT ?ate@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?ate@?$_Iosb@H@std@@2W4_Openmode@12@B DD 04H		; std::_Iosb<int>::ate
CONST	ENDS
;	COMDAT ?out@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?out@?$_Iosb@H@std@@2W4_Openmode@12@B DD 02H		; std::_Iosb<int>::out
CONST	ENDS
;	COMDAT ?in@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?in@?$_Iosb@H@std@@2W4_Openmode@12@B DD 01H		; std::_Iosb<int>::in
CONST	ENDS
;	COMDAT ?_Hardfail@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?_Hardfail@?$_Iosb@H@std@@2W4_Iostate@12@B DD 010H	; std::_Iosb<int>::_Hardfail
CONST	ENDS
;	COMDAT ?badbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?badbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 04H		; std::_Iosb<int>::badbit
CONST	ENDS
;	COMDAT ?failbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?failbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 02H		; std::_Iosb<int>::failbit
CONST	ENDS
;	COMDAT ?eofbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?eofbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 01H		; std::_Iosb<int>::eofbit
CONST	ENDS
;	COMDAT ?goodbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?goodbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 00H		; std::_Iosb<int>::goodbit
CONST	ENDS
;	COMDAT ?floatfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?floatfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 03000H	; std::_Iosb<int>::floatfield
CONST	ENDS
;	COMDAT ?basefield@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?basefield@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0e00H	; std::_Iosb<int>::basefield
CONST	ENDS
;	COMDAT ?adjustfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?adjustfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 01c0H	; std::_Iosb<int>::adjustfield
CONST	ENDS
;	COMDAT ?_Stdio@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?_Stdio@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 08000H	; std::_Iosb<int>::_Stdio
CONST	ENDS
;	COMDAT ?boolalpha@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?boolalpha@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 04000H	; std::_Iosb<int>::boolalpha
CONST	ENDS
;	COMDAT ?fixed@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?fixed@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 02000H	; std::_Iosb<int>::fixed
CONST	ENDS
;	COMDAT ?scientific@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?scientific@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 01000H	; std::_Iosb<int>::scientific
CONST	ENDS
;	COMDAT ?hex@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?hex@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0800H		; std::_Iosb<int>::hex
CONST	ENDS
;	COMDAT ?oct@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?oct@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0400H		; std::_Iosb<int>::oct
CONST	ENDS
;	COMDAT ?dec@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?dec@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0200H		; std::_Iosb<int>::dec
CONST	ENDS
;	COMDAT ?internal@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?internal@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0100H	; std::_Iosb<int>::internal
CONST	ENDS
;	COMDAT ?right@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?right@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 080H		; std::_Iosb<int>::right
CONST	ENDS
;	COMDAT ?left@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?left@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 040H		; std::_Iosb<int>::left
CONST	ENDS
;	COMDAT ?showpos@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?showpos@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 020H	; std::_Iosb<int>::showpos
CONST	ENDS
;	COMDAT ?showpoint@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?showpoint@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 010H	; std::_Iosb<int>::showpoint
CONST	ENDS
;	COMDAT ?showbase@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?showbase@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 08H	; std::_Iosb<int>::showbase
CONST	ENDS
;	COMDAT ?uppercase@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?uppercase@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 04H	; std::_Iosb<int>::uppercase
CONST	ENDS
;	COMDAT ?unitbuf@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?unitbuf@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 02H	; std::_Iosb<int>::unitbuf
CONST	ENDS
;	COMDAT ?skipws@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?skipws@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 01H		; std::_Iosb<int>::skipws
CONST	ENDS
;	COMDAT ?table_size@?$ctype@D@std@@2IB
CONST	SEGMENT
?table_size@?$ctype@D@std@@2IB DD 0100H			; std::ctype<char>::table_size
CONST	ENDS
;	COMDAT ?none@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?none@?$_Locbase@H@std@@2HB DD 00H			; std::_Locbase<int>::none
CONST	ENDS
;	COMDAT ?all@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?all@?$_Locbase@H@std@@2HB DD 03fH			; std::_Locbase<int>::all
CONST	ENDS
;	COMDAT ?messages@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?messages@?$_Locbase@H@std@@2HB DD 020H			; std::_Locbase<int>::messages
CONST	ENDS
;	COMDAT ?time@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?time@?$_Locbase@H@std@@2HB DD 010H			; std::_Locbase<int>::time
CONST	ENDS
;	COMDAT ?numeric@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?numeric@?$_Locbase@H@std@@2HB DD 08H			; std::_Locbase<int>::numeric
CONST	ENDS
;	COMDAT ?monetary@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?monetary@?$_Locbase@H@std@@2HB DD 04H			; std::_Locbase<int>::monetary
CONST	ENDS
;	COMDAT ?ctype@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?ctype@?$_Locbase@H@std@@2HB DD 02H			; std::_Locbase<int>::ctype
CONST	ENDS
;	COMDAT ?collate@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?collate@?$_Locbase@H@std@@2HB DD 01H			; std::_Locbase<int>::collate
CONST	ENDS
_DATA	SEGMENT
__bad_alloc_Message DD FLAT:??_C@_0P@GHFPNOJB@bad?5allocation?$AA@
_DATA	ENDS
;	COMDAT ??_C@_0P@GHFPNOJB@bad?5allocation?$AA@
CONST	SEGMENT
??_C@_0P@GHFPNOJB@bad?5allocation?$AA@ DB 'bad allocation', 00H ; `string'
CONST	ENDS
PUBLIC	??_7bad_alloc@std@@6B@				; std::bad_alloc::`vftable'
PUBLIC	??0bad_alloc@std@@QAE@PBD@Z			; std::bad_alloc::bad_alloc
PUBLIC	??_R4bad_alloc@std@@6B@				; std::bad_alloc::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVbad_alloc@std@@@8			; std::bad_alloc `RTTI Type Descriptor'
PUBLIC	??_R3bad_alloc@std@@8				; std::bad_alloc::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2bad_alloc@std@@8				; std::bad_alloc::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@bad_alloc@std@@8			; std::bad_alloc::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R1A@?0A@EA@exception@std@@8			; std::exception::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVexception@std@@@8			; std::exception `RTTI Type Descriptor'
PUBLIC	??_R3exception@std@@8				; std::exception::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2exception@std@@8				; std::exception::`RTTI Base Class Array'
EXTRN	??0exception@std@@QAE@ABQBD@Z:PROC		; std::exception::exception
EXTRN	??_7type_info@@6B@:QWORD			; type_info::`vftable'
EXTRN	??_Ebad_alloc@std@@UAEPAXI@Z:PROC		; std::bad_alloc::`vector deleting destructor'
EXTRN	?what@exception@std@@UBEPBDXZ:PROC		; std::exception::what
;	COMDAT ??_R2exception@std@@8
; File c:\program files\microsoft visual studio 8\vc\include\exception
rdata$r	SEGMENT
??_R2exception@std@@8 DD FLAT:??_R1A@?0A@EA@exception@std@@8 ; std::exception::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3exception@std@@8
rdata$r	SEGMENT
??_R3exception@std@@8 DD 00H				; std::exception::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2exception@std@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVexception@std@@@8
_DATA	SEGMENT
??_R0?AVexception@std@@@8 DD FLAT:??_7type_info@@6B@	; std::exception `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVexception@std@@', 00H
_DATA	ENDS
;	COMDAT ??_R1A@?0A@EA@exception@std@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@exception@std@@8 DD FLAT:??_R0?AVexception@std@@@8 ; std::exception::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3exception@std@@8
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@bad_alloc@std@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@bad_alloc@std@@8 DD FLAT:??_R0?AVbad_alloc@std@@@8 ; std::bad_alloc::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3bad_alloc@std@@8
rdata$r	ENDS
;	COMDAT ??_R2bad_alloc@std@@8
rdata$r	SEGMENT
??_R2bad_alloc@std@@8 DD FLAT:??_R1A@?0A@EA@bad_alloc@std@@8 ; std::bad_alloc::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@exception@std@@8
rdata$r	ENDS
;	COMDAT ??_R3bad_alloc@std@@8
rdata$r	SEGMENT
??_R3bad_alloc@std@@8 DD 00H				; std::bad_alloc::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2bad_alloc@std@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVbad_alloc@std@@@8
_DATA	SEGMENT
??_R0?AVbad_alloc@std@@@8 DD FLAT:??_7type_info@@6B@	; std::bad_alloc `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVbad_alloc@std@@', 00H
_DATA	ENDS
;	COMDAT ??_R4bad_alloc@std@@6B@
rdata$r	SEGMENT
??_R4bad_alloc@std@@6B@ DD 00H				; std::bad_alloc::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVbad_alloc@std@@@8
	DD	FLAT:??_R3bad_alloc@std@@8
rdata$r	ENDS
;	COMDAT ??_7bad_alloc@std@@6B@
CONST	SEGMENT
??_7bad_alloc@std@@6B@ DD FLAT:??_R4bad_alloc@std@@6B@	; std::bad_alloc::`vftable'
	DD	FLAT:??_Ebad_alloc@std@@UAEPAXI@Z
	DD	FLAT:?what@exception@std@@UBEPBDXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0bad_alloc@std@@QAE@PBD@Z
_TEXT	SEGMENT
__Message$ = 8						; size = 4
??0bad_alloc@std@@QAE@PBD@Z PROC			; std::bad_alloc::bad_alloc, COMDAT
; _this$ = ecx

; 371  : 		{	// construct from message string

	push	esi
	lea	eax, DWORD PTR __Message$[esp]
	push	eax
	mov	esi, ecx
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	mov	DWORD PTR [esi], OFFSET ??_7bad_alloc@std@@6B@

; 372  : 		}

	mov	eax, esi
	pop	esi
	ret	4
??0bad_alloc@std@@QAE@PBD@Z ENDP			; std::bad_alloc::bad_alloc
_TEXT	ENDS
PUBLIC	??1bad_alloc@std@@UAE@XZ			; std::bad_alloc::~bad_alloc
EXTRN	??1exception@std@@UAE@XZ:PROC			; std::exception::~exception
; Function compile flags: /Ogtpy
;	COMDAT ??1bad_alloc@std@@UAE@XZ
_TEXT	SEGMENT
??1bad_alloc@std@@UAE@XZ PROC				; std::bad_alloc::~bad_alloc, COMDAT
; _this$ = ecx

; 380  : 		{	// destroy the object

	mov	DWORD PTR [ecx], OFFSET ??_7bad_alloc@std@@6B@

; 381  : 		}

	jmp	??1exception@std@@UAE@XZ		; std::exception::~exception
??1bad_alloc@std@@UAE@XZ ENDP				; std::bad_alloc::~bad_alloc
_TEXT	ENDS
EXTRN	??3@YAXPAX@Z:PROC				; operator delete
; Function compile flags: /Ogtpy
;	COMDAT ??_Gbad_alloc@std@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_Gbad_alloc@std@@UAEPAXI@Z PROC			; std::bad_alloc::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi], OFFSET ??_7bad_alloc@std@@6B@
	call	??1exception@std@@UAE@XZ		; std::exception::~exception
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN6@scalar
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN6@scalar:
	mov	eax, esi
	pop	esi
	ret	4
??_Gbad_alloc@std@@UAEPAXI@Z ENDP			; std::bad_alloc::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	?InitEngineDmg@@YAXI@Z				; InitEngineDmg
; Function compile flags: /Ogtpy
; File d:\source code\stgm\engine_dmg.cpp
;	COMDAT ?InitEngineDmg@@YAXI@Z
_TEXT	SEGMENT
_exe$ = 8						; size = 4
?InitEngineDmg@@YAXI@Z PROC				; InitEngineDmg, COMDAT

; 34   : 	switch(exe)

	mov	eax, DWORD PTR _exe$[esp-4]
	cmp	eax, 3
	ja	SHORT $LN1@InitEngine
	jmp	DWORD PTR $LN10@InitEngine[eax*4]
$LN5@InitEngine:

; 35   : 	{
; 36   : 		case 0: //game.exe
; 37   : 			Get_Armor_Name = (GetArmorName)0x006877D0;

	mov	DWORD PTR ?Get_Armor_Name@@3P6APBDI@ZA, 6846416 ; Get_Armor_Name, 006877d0H

; 38   : 			Get_Armor_Type = (GetArmorType)0x00687750;

	mov	DWORD PTR ?Get_Armor_Type@@3P6AIPBD@ZA, 6846288 ; Get_Armor_Type, 00687750H

; 55   : 			break;
; 56   : 	}
; 57   : }

	ret	0
$LN4@InitEngine:

; 39   : 			break;
; 40   : 		case 1: //server.dat
; 41   : 			Get_Armor_Name = (GetArmorName)0x00687070;

	mov	DWORD PTR ?Get_Armor_Name@@3P6APBDI@ZA, 6844528 ; Get_Armor_Name, 00687070H

; 42   : 			Get_Armor_Type = (GetArmorType)0x00686FF0;

	mov	DWORD PTR ?Get_Armor_Type@@3P6AIPBD@ZA, 6844400 ; Get_Armor_Type, 00686ff0H

; 55   : 			break;
; 56   : 	}
; 57   : }

	ret	0
$LN3@InitEngine:

; 43   : 			break;
; 44   : 		case 2: //RH73
; 45   : 			Get_Armor_Name = (GetArmorName)0x0810F87C;

	mov	DWORD PTR ?Get_Armor_Name@@3P6APBDI@ZA, 135329916 ; Get_Armor_Name, 0810f87cH

; 46   : 			Get_Armor_Type = (GetArmorType)0x0810F7B4;

	mov	DWORD PTR ?Get_Armor_Type@@3P6AIPBD@ZA, 135329716 ; Get_Armor_Type, 0810f7b4H

; 55   : 			break;
; 56   : 	}
; 57   : }

	ret	0
$LN2@InitEngine:

; 47   : 			break;
; 48   : 		case 3: //RH8
; 49   : 			Get_Armor_Name = (GetArmorName)0x08101AB8;

	mov	DWORD PTR ?Get_Armor_Name@@3P6APBDI@ZA, 135273144 ; Get_Armor_Name, 08101ab8H

; 50   : 			Get_Armor_Type = (GetArmorType)0x081019FC;

	mov	DWORD PTR ?Get_Armor_Type@@3P6AIPBD@ZA, 135272956 ; Get_Armor_Type, 081019fcH

; 55   : 			break;
; 56   : 	}
; 57   : }

	ret	0
$LN1@InitEngine:

; 51   : 			break;
; 52   : 		default:
; 53   : 			Get_Armor_Name = (GetArmorName)0;

	xor	eax, eax
	mov	DWORD PTR ?Get_Armor_Name@@3P6APBDI@ZA, eax ; Get_Armor_Name

; 54   : 			Get_Armor_Type = (GetArmorType)0;

	mov	DWORD PTR ?Get_Armor_Type@@3P6AIPBD@ZA, eax ; Get_Armor_Type

; 55   : 			break;
; 56   : 	}
; 57   : }

	ret	0
	npad	3
$LN10@InitEngine:
	DD	$LN5@InitEngine
	DD	$LN4@InitEngine
	DD	$LN3@InitEngine
	DD	$LN2@InitEngine
?InitEngineDmg@@YAXI@Z ENDP				; InitEngineDmg
_TEXT	ENDS
PUBLIC	??_C@_09IGNDJJLI@Explosive?$AA@			; `string'
PUBLIC	__real@461c4000
PUBLIC	?Kill_All_Buildings_By_Team@@YAXH@Z		; Kill_All_Buildings_By_Team
EXTRN	?Commands@@3PAUScriptCommands@@A:DWORD		; Commands
EXTRN	?Get_Object_Type@@YAHPAE@Z:PROC			; Get_Object_Type
EXTRN	?As_BuildingGameObj@@YAPAEPAE@Z:PROC		; As_BuildingGameObj
EXTRN	?BuildingGameObjList@@3PAV?$SList@E@@A:DWORD	; BuildingGameObjList
EXTRN	__fltused:DWORD
;	COMDAT ??_C@_09IGNDJJLI@Explosive?$AA@
CONST	SEGMENT
??_C@_09IGNDJJLI@Explosive?$AA@ DB 'Explosive', 00H	; `string'
CONST	ENDS
;	COMDAT __real@461c4000
CONST	SEGMENT
__real@461c4000 DD 0461c4000r			; 10000
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Kill_All_Buildings_By_Team@@YAXH@Z
_TEXT	SEGMENT
_Team$ = 8						; size = 4
?Kill_All_Buildings_By_Team@@YAXH@Z PROC		; Kill_All_Buildings_By_Team, COMDAT

; 61   : 	GenericSLNode *x = BuildingGameObjList->HeadNode;

	mov	eax, DWORD PTR ?BuildingGameObjList@@3PAV?$SList@E@@A ; BuildingGameObjList
	push	edi
	mov	edi, DWORD PTR [eax+4]

; 62   : 	while (x)

	test	edi, edi
	je	SHORT $LN3@Kill_All_B
	push	ebx
	mov	ebx, DWORD PTR _Team$[esp+4]
	push	esi
$LL4@Kill_All_B:

; 63   : 	{
; 64   : 		GameObject *o = As_BuildingGameObj((GameObject *)x->NodeData);

	mov	ecx, DWORD PTR [edi+4]
	push	ecx
	call	?As_BuildingGameObj@@YAPAEPAE@Z		; As_BuildingGameObj
	mov	esi, eax
	add	esp, 4

; 65   : 		if (o)

	test	esi, esi
	je	SHORT $LN1@Kill_All_B

; 66   : 		{
; 67   : 			if (Get_Object_Type(o) == Team)

	push	esi
	call	?Get_Object_Type@@YAHPAE@Z		; Get_Object_Type
	add	esp, 4
	cmp	eax, ebx
	jne	SHORT $LN1@Kill_All_B

; 68   : 			{
; 69   : 				Commands->Apply_Damage(o,10000,"Explosive",0);

	fld	DWORD PTR __real@461c4000
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+616]
	push	0
	push	OFFSET ??_C@_09IGNDJJLI@Explosive?$AA@
	push	ecx
	fstp	DWORD PTR [esp]
	push	esi
	call	eax
	add	esp, 16					; 00000010H
$LN1@Kill_All_B:

; 70   : 			}
; 71   : 		}
; 72   : 		x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	SHORT $LL4@Kill_All_B
	pop	esi
	pop	ebx
$LN3@Kill_All_B:
	pop	edi

; 73   : 	}
; 74   : }

	ret	0
?Kill_All_Buildings_By_Team@@YAXH@Z ENDP		; Kill_All_Buildings_By_Team
_TEXT	ENDS
PUBLIC	?Damage_All_Buildings_By_Team@@YAXHMPBDPAE@Z	; Damage_All_Buildings_By_Team
; Function compile flags: /Ogtpy
;	COMDAT ?Damage_All_Buildings_By_Team@@YAXHMPBDPAE@Z
_TEXT	SEGMENT
_Team$ = 8						; size = 4
_Damage$ = 12						; size = 4
_Warhead$ = 16						; size = 4
_Damager$ = 20						; size = 4
?Damage_All_Buildings_By_Team@@YAXHMPBDPAE@Z PROC	; Damage_All_Buildings_By_Team, COMDAT

; 78   : 	GenericSLNode *x = BuildingGameObjList->HeadNode;

	mov	eax, DWORD PTR ?BuildingGameObjList@@3PAV?$SList@E@@A ; BuildingGameObjList
	push	edi
	mov	edi, DWORD PTR [eax+4]

; 79   : 	while (x)

	test	edi, edi
	je	SHORT $LN4@Damage_All
	push	ebx
	mov	ebx, DWORD PTR _Team$[esp+4]
	push	ebp
	mov	ebp, DWORD PTR _Damager$[esp+8]
	push	esi
	npad	8
$LL5@Damage_All:

; 80   : 	{
; 81   : 		GameObject *o = As_BuildingGameObj((GameObject *)x->NodeData);

	mov	ecx, DWORD PTR [edi+4]
	push	ecx
	call	?As_BuildingGameObj@@YAPAEPAE@Z		; As_BuildingGameObj
	mov	esi, eax
	add	esp, 4

; 82   : 		if (o)

	test	esi, esi
	je	SHORT $LN10@Damage_All

; 83   : 		{
; 84   : 			if ((Get_Object_Type(o) == Team) || (Team == 2))

	push	esi
	call	?Get_Object_Type@@YAHPAE@Z		; Get_Object_Type
	add	esp, 4
	cmp	eax, ebx
	je	SHORT $LN1@Damage_All
	cmp	ebx, 2
	jne	SHORT $LN10@Damage_All
$LN1@Damage_All:

; 85   : 			{
; 86   : 				Commands->Apply_Damage(o,Damage,Warhead,Damager);

	mov	edx, DWORD PTR _Warhead$[esp+12]
	fld	DWORD PTR _Damage$[esp+12]
	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	push	ebp
	push	edx
	push	ecx
	mov	ecx, DWORD PTR [eax+616]
	fstp	DWORD PTR [esp]
	push	esi
	call	ecx
	add	esp, 16					; 00000010H
$LN10@Damage_All:

; 87   : 			}
; 88   : 		}
; 89   : 		x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	SHORT $LL5@Damage_All
	pop	esi
	pop	ebp
	pop	ebx
$LN4@Damage_All:
	pop	edi

; 90   : 	}
; 91   : }

	ret	0
?Damage_All_Buildings_By_Team@@YAXHMPBDPAE@Z ENDP	; Damage_All_Buildings_By_Team
_TEXT	ENDS
PUBLIC	__real@00000000
PUBLIC	?Repair_All_Buildings_By_Team@@YAXHHM@Z		; Repair_All_Buildings_By_Team
;	COMDAT __real@00000000
CONST	SEGMENT
__real@00000000 DD 000000000r			; 0
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Repair_All_Buildings_By_Team@@YAXHHM@Z
_TEXT	SEGMENT
_Team$ = 8						; size = 4
_ConstructionYardID$ = 12				; size = 4
_Health$ = 16						; size = 4
?Repair_All_Buildings_By_Team@@YAXHHM@Z PROC		; Repair_All_Buildings_By_Team, COMDAT

; 95   : 	GenericSLNode *x = BuildingGameObjList->HeadNode;

	mov	eax, DWORD PTR ?BuildingGameObjList@@3PAV?$SList@E@@A ; BuildingGameObjList
	push	edi
	mov	edi, DWORD PTR [eax+4]

; 96   : 	while (x)

	test	edi, edi
	je	$LN4@Repair_All
	push	ebx
	mov	ebx, DWORD PTR _ConstructionYardID$[esp+4]
	push	ebp
	mov	ebp, DWORD PTR _Team$[esp+8]
	push	esi
	npad	4
$LL5@Repair_All:

; 97   : 	{
; 98   : 		GameObject *o = As_BuildingGameObj((GameObject *)x->NodeData);

	mov	ecx, DWORD PTR [edi+4]
	push	ecx
	call	?As_BuildingGameObj@@YAPAEPAE@Z		; As_BuildingGameObj
	mov	esi, eax
	add	esp, 4

; 99   : 		if (o)

	test	esi, esi
	je	SHORT $LN10@Repair_All

; 100  : 		{
; 101  : 			if ((Get_Object_Type(o) == Team) && (Commands->Get_ID(o) != ConstructionYardID))

	push	esi
	call	?Get_Object_Type@@YAHPAE@Z		; Get_Object_Type
	add	esp, 4
	cmp	eax, ebp
	jne	SHORT $LN10@Repair_All
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+108]
	push	esi
	call	eax
	add	esp, 4
	cmp	eax, ebx
	je	SHORT $LN10@Repair_All

; 102  : 			{
; 103  : 				float amount = Commands->Get_Health(o);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	edx, DWORD PTR [ecx+220]
	push	esi
	call	edx

; 104  : 				if (amount>0)

	fldz
	fcomp	ST(1)
	add	esp, 4
	fnstsw	ax
	test	ah, 5
	jp	SHORT $LN12@Repair_All

; 105  : 				{
; 106  : 					Commands->Set_Health(o,(amount+Health));

	fadd	DWORD PTR _Health$[esp+12]
	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	push	ecx
	mov	ecx, DWORD PTR [eax+228]
	fstp	DWORD PTR [esp]
	push	esi
	call	ecx
	add	esp, 8
	jmp	SHORT $LN10@Repair_All
$LN12@Repair_All:
	fstp	ST(0)
$LN10@Repair_All:

; 107  : 				}
; 108  : 			}
; 109  : 		}
; 110  : 		x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	SHORT $LL5@Repair_All
	pop	esi
	pop	ebp
	pop	ebx
$LN4@Repair_All:
	pop	edi

; 111  : 	}
; 112  : }

	ret	0
?Repair_All_Buildings_By_Team@@YAXHHM@Z ENDP		; Repair_All_Buildings_By_Team
_TEXT	ENDS
PUBLIC	?Repair_All_Static_Vehicles_By_Team@@YAXHH@Z	; Repair_All_Static_Vehicles_By_Team
EXTRN	?Is_DecorationPhys@@YA_NPAE@Z:PROC		; Is_DecorationPhys
EXTRN	?As_VehicleGameObj@@YAPAEPAE@Z:PROC		; As_VehicleGameObj
EXTRN	?SmartGameObjList@@3PAV?$SList@E@@A:DWORD	; SmartGameObjList
; Function compile flags: /Ogtpy
;	COMDAT ?Repair_All_Static_Vehicles_By_Team@@YAXHH@Z
_TEXT	SEGMENT
_Team$ = 8						; size = 4
_Message$ = 12						; size = 4
?Repair_All_Static_Vehicles_By_Team@@YAXHH@Z PROC	; Repair_All_Static_Vehicles_By_Team, COMDAT

; 116  : 	GenericSLNode *x = SmartGameObjList->HeadNode;

	mov	eax, DWORD PTR ?SmartGameObjList@@3PAV?$SList@E@@A ; SmartGameObjList
	push	edi
	mov	edi, DWORD PTR [eax+4]

; 117  : 	while (x)

	test	edi, edi
	je	SHORT $LN3@Repair_All@2
	push	ebx
	mov	ebx, DWORD PTR _Message$[esp+4]
	push	ebp
	mov	ebp, DWORD PTR _Team$[esp+8]
	push	esi
	npad	8
$LL4@Repair_All@2:

; 118  : 	{
; 119  : 		GameObject *o = As_VehicleGameObj((GameObject *)x->NodeData);

	mov	ecx, DWORD PTR [edi+4]
	push	ecx
	call	?As_VehicleGameObj@@YAPAEPAE@Z		; As_VehicleGameObj
	mov	esi, eax
	add	esp, 4

; 120  : 		if (o)

	test	esi, esi
	je	SHORT $LN9@Repair_All@2

; 121  : 		{
; 122  : 			if (Get_Object_Type(o) == Team && Is_DecorationPhys(o))

	push	esi
	call	?Get_Object_Type@@YAHPAE@Z		; Get_Object_Type
	add	esp, 4
	cmp	eax, ebp
	jne	SHORT $LN9@Repair_All@2
	push	esi
	call	?Is_DecorationPhys@@YA_NPAE@Z		; Is_DecorationPhys
	add	esp, 4
	test	al, al
	je	SHORT $LN9@Repair_All@2

; 123  : 			{
; 124  : 				Commands->Send_Custom_Event(o,o,Message,0,0);

	fldz
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+140]
	push	ecx
	fstp	DWORD PTR [esp]
	push	0
	push	ebx
	push	esi
	push	esi
	call	eax
	add	esp, 20					; 00000014H
$LN9@Repair_All@2:

; 125  : 			}
; 126  : 		}
; 127  : 		x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	SHORT $LL4@Repair_All@2
	pop	esi
	pop	ebp
	pop	ebx
$LN3@Repair_All@2:
	pop	edi

; 128  : 	}
; 129  : }

	ret	0
?Repair_All_Static_Vehicles_By_Team@@YAXHH@Z ENDP	; Repair_All_Static_Vehicles_By_Team
_TEXT	ENDS
PUBLIC	?Set_Max_Health@@YAXPAEM@Z			; Set_Max_Health
EXTRN	?Set_Max_Health@DefenseObjectClass@@QAEXM@Z:PROC ; DefenseObjectClass::Set_Max_Health
; Function compile flags: /Ogtpy
;	COMDAT ?Set_Max_Health@@YAXPAEM@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
_health$ = 12						; size = 4
?Set_Max_Health@@YAXPAEM@Z PROC				; Set_Max_Health, COMDAT

; 133  : 	if (!Commands->Get_ID(obj) || !obj)

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+108]
	push	esi
	mov	esi, DWORD PTR _obj$[esp]
	push	esi
	call	ecx
	add	esp, 4
	test	eax, eax
	je	SHORT $LN2@Set_Max_He
	test	esi, esi
	je	SHORT $LN2@Set_Max_He

; 134  : 	{
; 135  : 		return;
; 136  : 	}
; 137  : 	DamageableGameObj *o = ((ScriptableGameObj *)obj)->As_DamageableGameObj();

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+60]
	mov	ecx, esi
	call	eax

; 138  : 	if (!o)

	test	eax, eax
	je	SHORT $LN2@Set_Max_He

; 139  : 	{
; 140  : 		return;
; 141  : 	}
; 142  : 	o->Defense.Set_Max_Health(health);

	fld	DWORD PTR _health$[esp]
	push	ecx
	lea	ecx, DWORD PTR [eax+1836]
	fstp	DWORD PTR [esp]
	call	?Set_Max_Health@DefenseObjectClass@@QAEXM@Z ; DefenseObjectClass::Set_Max_Health

; 143  : 	Commands->Set_Health(obj,health);

	fld	DWORD PTR _health$[esp]
	push	ecx
	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	fstp	DWORD PTR [esp]
	mov	edx, DWORD PTR [ecx+228]
	push	esi
	call	edx
	add	esp, 8
$LN2@Set_Max_He:
	pop	esi

; 144  : }

	ret	0
?Set_Max_Health@@YAXPAEM@Z ENDP				; Set_Max_Health
_TEXT	ENDS
PUBLIC	?Set_Max_Shield_Strength@@YAXPAEM@Z		; Set_Max_Shield_Strength
EXTRN	?Set_Max_Shield_Strength@DefenseObjectClass@@QAEXM@Z:PROC ; DefenseObjectClass::Set_Max_Shield_Strength
; Function compile flags: /Ogtpy
;	COMDAT ?Set_Max_Shield_Strength@@YAXPAEM@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
_shieldstrength$ = 12					; size = 4
?Set_Max_Shield_Strength@@YAXPAEM@Z PROC		; Set_Max_Shield_Strength, COMDAT

; 148  : 	if (!Commands->Get_ID(obj) || !obj)

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+108]
	push	esi
	mov	esi, DWORD PTR _obj$[esp]
	push	esi
	call	ecx
	add	esp, 4
	test	eax, eax
	je	SHORT $LN2@Set_Max_Sh
	test	esi, esi
	je	SHORT $LN2@Set_Max_Sh

; 149  : 	{
; 150  : 		return;
; 151  : 	}
; 152  : 	DamageableGameObj *o = ((ScriptableGameObj *)obj)->As_DamageableGameObj();

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+60]
	mov	ecx, esi
	call	eax

; 153  : 	if (!o)

	test	eax, eax
	je	SHORT $LN2@Set_Max_Sh

; 154  : 	{
; 155  : 		return;
; 156  : 	}
; 157  : 	o->Defense.Set_Max_Shield_Strength(shieldstrength);

	fld	DWORD PTR _shieldstrength$[esp]
	push	ecx
	lea	ecx, DWORD PTR [eax+1836]
	fstp	DWORD PTR [esp]
	call	?Set_Max_Shield_Strength@DefenseObjectClass@@QAEXM@Z ; DefenseObjectClass::Set_Max_Shield_Strength

; 158  : 	Commands->Set_Shield_Strength(obj,shieldstrength);

	fld	DWORD PTR _shieldstrength$[esp]
	push	ecx
	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	fstp	DWORD PTR [esp]
	mov	edx, DWORD PTR [ecx+240]
	push	esi
	call	edx
	add	esp, 8
$LN2@Set_Max_Sh:
	pop	esi

; 159  : }

	ret	0
?Set_Max_Shield_Strength@@YAXPAEM@Z ENDP		; Set_Max_Shield_Strength
_TEXT	ENDS
PUBLIC	??_C@_00CNPNBAHC@?$AA@				; `string'
PUBLIC	?Get_Shield_Type@@YAPBDPAE@Z			; Get_Shield_Type
EXTRN	?Get@UIntDataSafeClass@@QAEIXZ:PROC		; UIntDataSafeClass::Get
;	COMDAT ??_C@_00CNPNBAHC@?$AA@
CONST	SEGMENT
??_C@_00CNPNBAHC@?$AA@ DB 00H				; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Get_Shield_Type@@YAPBDPAE@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
?Get_Shield_Type@@YAPBDPAE@Z PROC			; Get_Shield_Type, COMDAT

; 163  : 	if (!Commands->Get_ID(obj) || !obj)

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+108]
	push	esi
	mov	esi, DWORD PTR _obj$[esp]
	push	esi
	call	ecx
	add	esp, 4
	test	eax, eax
	je	SHORT $LN2@Get_Shield
	test	esi, esi
	je	SHORT $LN2@Get_Shield

; 166  : 	}
; 167  : 	DamageableGameObj *o = ((ScriptableGameObj *)obj)->As_DamageableGameObj();

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+60]
	mov	ecx, esi
	call	eax

; 168  : 	if (!o)

	test	eax, eax

; 169  : 	{
; 170  : 		return "";

	je	SHORT $LN2@Get_Shield

; 171  : 	}
; 172  : 	return Get_Armor_Name(o->Defense.ShieldType.Get());

	lea	ecx, DWORD PTR [eax+1860]
	call	?Get@UIntDataSafeClass@@QAEIXZ		; UIntDataSafeClass::Get
	pop	esi
	mov	DWORD PTR _obj$[esp-4], eax
	jmp	DWORD PTR ?Get_Armor_Name@@3P6APBDI@ZA	; Get_Armor_Name
$LN2@Get_Shield:

; 164  : 	{
; 165  : 		return "";

	mov	eax, OFFSET ??_C@_00CNPNBAHC@?$AA@
	pop	esi

; 173  : }

	ret	0
?Get_Shield_Type@@YAPBDPAE@Z ENDP			; Get_Shield_Type
_TEXT	ENDS
PUBLIC	?Get_Skin@@YAPBDPAE@Z				; Get_Skin
; Function compile flags: /Ogtpy
;	COMDAT ?Get_Skin@@YAPBDPAE@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
?Get_Skin@@YAPBDPAE@Z PROC				; Get_Skin, COMDAT

; 177  : 	if (!Commands->Get_ID(obj) || !obj)

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+108]
	push	esi
	mov	esi, DWORD PTR _obj$[esp]
	push	esi
	call	ecx
	add	esp, 4
	test	eax, eax
	je	SHORT $LN2@Get_Skin
	test	esi, esi
	je	SHORT $LN2@Get_Skin

; 180  : 	}
; 181  : 	DamageableGameObj *o = ((ScriptableGameObj *)obj)->As_DamageableGameObj();

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+60]
	mov	ecx, esi
	call	eax

; 182  : 	if (!o)

	test	eax, eax

; 183  : 	{
; 184  : 		return "";

	je	SHORT $LN2@Get_Skin

; 185  : 	}
; 186  : 	return Get_Armor_Name(o->Defense.Skin.Get());

	lea	ecx, DWORD PTR [eax+1848]
	call	?Get@UIntDataSafeClass@@QAEIXZ		; UIntDataSafeClass::Get
	pop	esi
	mov	DWORD PTR _obj$[esp-4], eax
	jmp	DWORD PTR ?Get_Armor_Name@@3P6APBDI@ZA	; Get_Armor_Name
$LN2@Get_Skin:

; 178  : 	{
; 179  : 		return "";

	mov	eax, OFFSET ??_C@_00CNPNBAHC@?$AA@
	pop	esi

; 187  : }

	ret	0
?Get_Skin@@YAPBDPAE@Z ENDP				; Get_Skin
_TEXT	ENDS
PUBLIC	?Set_Skin@@YAXPAEPBD@Z				; Set_Skin
EXTRN	?Mark_Owner_Dirty@DefenseObjectClass@@QAEXXZ:PROC ; DefenseObjectClass::Mark_Owner_Dirty
EXTRN	?Set@UIntDataSafeClass@@QAG_NAAI@Z:PROC		; UIntDataSafeClass::Set
; Function compile flags: /Ogtpy
;	COMDAT ?Set_Skin@@YAXPAEPBD@Z
_TEXT	SEGMENT
_skin$ = -4						; size = 4
_obj$ = 8						; size = 4
_Skintype$ = 12						; size = 4
?Set_Skin@@YAXPAEPBD@Z PROC				; Set_Skin, COMDAT

; 190  : {

	push	ecx

; 191  : 	if (!Commands->Get_ID(obj) || !obj)

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+108]
	push	esi
	mov	esi, DWORD PTR _obj$[esp+4]
	push	esi
	call	ecx
	add	esp, 4
	test	eax, eax
	je	SHORT $LN2@Set_Skin
	test	esi, esi
	je	SHORT $LN2@Set_Skin

; 192  : 	{
; 193  : 		return;
; 194  : 	}
; 195  : 	DamageableGameObj *o = ((ScriptableGameObj *)obj)->As_DamageableGameObj();

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+60]
	mov	ecx, esi
	call	eax
	mov	esi, eax

; 196  : 	if (!o)

	test	esi, esi
	je	SHORT $LN2@Set_Skin

; 197  : 	{
; 198  : 		return;
; 199  : 	}
; 200  : 	unsigned int skin = Get_Armor_Type(Skintype);

	mov	ecx, DWORD PTR _Skintype$[esp+4]
	push	ecx
	call	DWORD PTR ?Get_Armor_Type@@3P6AIPBD@ZA	; Get_Armor_Type
	add	esp, 4

; 201  : 	o->Defense.Skin.Set(skin);

	lea	edx, DWORD PTR _skin$[esp+8]
	mov	DWORD PTR _skin$[esp+8], eax
	push	edx
	lea	eax, DWORD PTR [esi+1848]
	push	eax
	call	?Set@UIntDataSafeClass@@QAG_NAAI@Z	; UIntDataSafeClass::Set

; 202  : 	o->Defense.Mark_Owner_Dirty();

	lea	ecx, DWORD PTR [esi+1836]
	call	?Mark_Owner_Dirty@DefenseObjectClass@@QAEXXZ ; DefenseObjectClass::Mark_Owner_Dirty
$LN2@Set_Skin:
	pop	esi

; 203  : }

	pop	ecx
	ret	0
?Set_Skin@@YAXPAEPBD@Z ENDP				; Set_Skin
_TEXT	ENDS
PUBLIC	?Damage_All_Vehicles_Area@@YAXMPBDABUVector3@@MPAE2@Z ; Damage_All_Vehicles_Area
EXTRN	?As_ScriptableGameObj@@YAPAEPAE@Z:PROC		; As_ScriptableGameObj
EXTRN	?BaseGameObjList@@3PAV?$SList@E@@A:DWORD	; BaseGameObjList
; Function compile flags: /Ogtpy
;	COMDAT ?Damage_All_Vehicles_Area@@YAXMPBDABUVector3@@MPAE2@Z
_TEXT	SEGMENT
tv161 = -40						; size = 4
_TestPosition$54114 = -36				; size = 12
_ObjPosition$54112 = -24				; size = 12
$T58160 = -12						; size = 12
_Damage$ = 8						; size = 4
_Warhead$ = 12						; size = 4
_Position$ = 16						; size = 4
_Distance$ = 20						; size = 4
_Host$ = 24						; size = 4
_Damager$ = 28						; size = 4
?Damage_All_Vehicles_Area@@YAXMPBDABUVector3@@MPAE2@Z PROC ; Damage_All_Vehicles_Area, COMDAT

; 207  : 	if (!Commands->Get_ID(Host) || !Host)

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+108]
	sub	esp, 40					; 00000028H
	push	ebp
	mov	ebp, DWORD PTR _Host$[esp+40]
	push	ebp
	call	ecx
	add	esp, 4
	test	eax, eax
	je	$LN5@Damage_All@2
	test	ebp, ebp
	je	$LN5@Damage_All@2

; 208  : 	{
; 209  : 		return;
; 210  : 	}
; 211  : 	GenericSLNode *x = BaseGameObjList->HeadNode;

	mov	edx, DWORD PTR ?BaseGameObjList@@3PAV?$SList@E@@A ; BaseGameObjList
	push	edi
	mov	edi, DWORD PTR [edx+4]

; 212  : 	while (x)

	test	edi, edi
	je	$LN14@Damage_All@2
	push	ebx
	mov	ebx, DWORD PTR _Position$[esp+48]
	push	esi
	jmp	SHORT $LN4@Damage_All@2
$LL12@Damage_All@2:
	mov	ebp, DWORD PTR _Host$[esp+52]
$LN4@Damage_All@2:

; 213  : 	{
; 214  : 		GameObject *obj = (GameObject *)x->NodeData;

	mov	esi, DWORD PTR [edi+4]

; 215  : 		if (obj && As_ScriptableGameObj(obj) && As_VehicleGameObj(obj)) 

	test	esi, esi
	je	$LN11@Damage_All@2
	push	esi
	call	?As_ScriptableGameObj@@YAPAEPAE@Z	; As_ScriptableGameObj
	add	esp, 4
	test	eax, eax
	je	$LN11@Damage_All@2
	push	esi
	call	?As_VehicleGameObj@@YAPAEPAE@Z		; As_VehicleGameObj
	add	esp, 4
	test	eax, eax
	je	$LN11@Damage_All@2

; 216  : 		{
; 217  : 			Vector3 ObjPosition = Commands->Get_Position(obj);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	edx, DWORD PTR [ecx+64]
	lea	eax, DWORD PTR $T58160[esp+56]
	push	esi
	push	eax
	call	edx

; 218  : 			Vector3 TestPosition = Position;
; 219  : 			ObjPosition.Z = 0;

	fldz
	mov	ecx, DWORD PTR [eax]
	mov	DWORD PTR _ObjPosition$54112[esp+64], ecx
	mov	edx, DWORD PTR [eax+4]
	mov	ecx, DWORD PTR [ebx]
	mov	DWORD PTR _ObjPosition$54112[esp+68], edx
	mov	eax, DWORD PTR [eax+8]
	mov	edx, DWORD PTR [ebx+4]
	mov	DWORD PTR _ObjPosition$54112[esp+72], eax
	fst	DWORD PTR _ObjPosition$54112[esp+72]
	mov	eax, DWORD PTR [ebx+8]
	mov	DWORD PTR _TestPosition$54114[esp+64], ecx
	mov	DWORD PTR _TestPosition$54114[esp+72], eax

; 220  : 			TestPosition.Z = 0;

	fstp	DWORD PTR _TestPosition$54114[esp+72]

; 221  : 			if ((Commands->Get_Distance(ObjPosition,TestPosition) <= Distance) && (Commands->Get_ID(obj) != Commands->Get_ID(Host)))

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	DWORD PTR _TestPosition$54114[esp+68], edx
	lea	ecx, DWORD PTR _TestPosition$54114[esp+64]
	push	ecx
	mov	ecx, DWORD PTR [eax+256]
	lea	edx, DWORD PTR _ObjPosition$54112[esp+68]
	push	edx
	call	ecx
	fcomp	DWORD PTR _Distance$[esp+68]
	add	esp, 16					; 00000010H
	fnstsw	ax
	test	ah, 65					; 00000041H
	jp	SHORT $LN11@Damage_All@2
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+108]
	push	esi
	call	eax
	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	edx, DWORD PTR [ecx+108]
	push	ebp
	mov	DWORD PTR tv161[esp+64], eax
	call	edx
	mov	ecx, DWORD PTR tv161[esp+64]
	add	esp, 8
	cmp	ecx, eax
	je	SHORT $LN11@Damage_All@2

; 222  : 			{
; 223  : 				Commands->Apply_Damage(obj,Damage,Warhead,Damager);

	mov	eax, DWORD PTR _Damager$[esp+52]
	fld	DWORD PTR _Damage$[esp+52]
	mov	ecx, DWORD PTR _Warhead$[esp+52]
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	push	eax
	mov	eax, DWORD PTR [edx+616]
	push	ecx
	push	ecx
	fstp	DWORD PTR [esp]
	push	esi
	call	eax
	add	esp, 16					; 00000010H
$LN11@Damage_All@2:

; 224  : 			}
; 225  : 		}
; 226  : 		x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	$LL12@Damage_All@2
	pop	esi
	pop	ebx
$LN14@Damage_All@2:
	pop	edi
$LN5@Damage_All@2:
	pop	ebp

; 227  : 	}
; 228  : }

	add	esp, 40					; 00000028H
	ret	0
?Damage_All_Vehicles_Area@@YAXMPBDABUVector3@@MPAE2@Z ENDP ; Damage_All_Vehicles_Area
_TEXT	ENDS
PUBLIC	?Damage_All_Objects_Area@@YAXMPBDABUVector3@@MPAE2@Z ; Damage_All_Objects_Area
; Function compile flags: /Ogtpy
;	COMDAT ?Damage_All_Objects_Area@@YAXMPBDABUVector3@@MPAE2@Z
_TEXT	SEGMENT
tv161 = -40						; size = 4
_TestPosition$54135 = -36				; size = 12
_ObjPosition$54133 = -24				; size = 12
$T58171 = -12						; size = 12
_Damage$ = 8						; size = 4
_Warhead$ = 12						; size = 4
_Position$ = 16						; size = 4
_Distance$ = 20						; size = 4
_Host$ = 24						; size = 4
_Damager$ = 28						; size = 4
?Damage_All_Objects_Area@@YAXMPBDABUVector3@@MPAE2@Z PROC ; Damage_All_Objects_Area, COMDAT

; 232  : 	if (!Commands->Get_ID(Host) || !Host)

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+108]
	sub	esp, 40					; 00000028H
	push	ebp
	mov	ebp, DWORD PTR _Host$[esp+40]
	push	ebp
	call	ecx
	add	esp, 4
	test	eax, eax
	je	$LN5@Damage_All@3
	test	ebp, ebp
	je	$LN5@Damage_All@3

; 233  : 	{
; 234  : 		return;
; 235  : 	}
; 236  : 	GenericSLNode *x = BaseGameObjList->HeadNode;

	mov	edx, DWORD PTR ?BaseGameObjList@@3PAV?$SList@E@@A ; BaseGameObjList
	push	edi
	mov	edi, DWORD PTR [edx+4]

; 237  : 	while (x) 

	test	edi, edi
	je	$LN14@Damage_All@3
	push	ebx
	mov	ebx, DWORD PTR _Position$[esp+48]
	push	esi
	jmp	SHORT $LN4@Damage_All@3
$LL12@Damage_All@3:
	mov	ebp, DWORD PTR _Host$[esp+52]
$LN4@Damage_All@3:

; 238  : 	{
; 239  : 		GameObject *obj = (GameObject *)x->NodeData;

	mov	esi, DWORD PTR [edi+4]

; 240  : 		if (obj && As_ScriptableGameObj(obj)) 

	test	esi, esi
	je	$LN11@Damage_All@3
	push	esi
	call	?As_ScriptableGameObj@@YAPAEPAE@Z	; As_ScriptableGameObj
	add	esp, 4
	test	eax, eax
	je	$LN11@Damage_All@3

; 241  : 		{
; 242  : 			Vector3 ObjPosition = Commands->Get_Position(obj);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	edx, DWORD PTR [ecx+64]
	lea	eax, DWORD PTR $T58171[esp+56]
	push	esi
	push	eax
	call	edx

; 243  : 			Vector3 TestPosition = Position;
; 244  : 			ObjPosition.Z = 0;

	fldz
	mov	ecx, DWORD PTR [eax]
	mov	DWORD PTR _ObjPosition$54133[esp+64], ecx
	mov	edx, DWORD PTR [eax+4]
	mov	ecx, DWORD PTR [ebx]
	mov	DWORD PTR _ObjPosition$54133[esp+68], edx
	mov	eax, DWORD PTR [eax+8]
	mov	edx, DWORD PTR [ebx+4]
	mov	DWORD PTR _ObjPosition$54133[esp+72], eax
	fst	DWORD PTR _ObjPosition$54133[esp+72]
	mov	eax, DWORD PTR [ebx+8]
	mov	DWORD PTR _TestPosition$54135[esp+64], ecx
	mov	DWORD PTR _TestPosition$54135[esp+72], eax

; 245  : 			TestPosition.Z = 0;

	fstp	DWORD PTR _TestPosition$54135[esp+72]

; 246  : 			if ((Commands->Get_Distance(ObjPosition,TestPosition) <= Distance) && (Commands->Get_ID(obj) != Commands->Get_ID(Host)))

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	DWORD PTR _TestPosition$54135[esp+68], edx
	lea	ecx, DWORD PTR _TestPosition$54135[esp+64]
	push	ecx
	mov	ecx, DWORD PTR [eax+256]
	lea	edx, DWORD PTR _ObjPosition$54133[esp+68]
	push	edx
	call	ecx
	fcomp	DWORD PTR _Distance$[esp+68]
	add	esp, 16					; 00000010H
	fnstsw	ax
	test	ah, 65					; 00000041H
	jp	SHORT $LN11@Damage_All@3
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+108]
	push	esi
	call	eax
	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	edx, DWORD PTR [ecx+108]
	push	ebp
	mov	DWORD PTR tv161[esp+64], eax
	call	edx
	mov	ecx, DWORD PTR tv161[esp+64]
	add	esp, 8
	cmp	ecx, eax
	je	SHORT $LN11@Damage_All@3

; 247  : 			{
; 248  : 				Commands->Apply_Damage(obj,Damage,Warhead,Damager);

	mov	eax, DWORD PTR _Damager$[esp+52]
	fld	DWORD PTR _Damage$[esp+52]
	mov	ecx, DWORD PTR _Warhead$[esp+52]
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	push	eax
	mov	eax, DWORD PTR [edx+616]
	push	ecx
	push	ecx
	fstp	DWORD PTR [esp]
	push	esi
	call	eax
	add	esp, 16					; 00000010H
$LN11@Damage_All@3:

; 249  : 			}
; 250  : 		}
; 251  : 		x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	$LL12@Damage_All@3
	pop	esi
	pop	ebx
$LN14@Damage_All@3:
	pop	edi
$LN5@Damage_All@3:
	pop	ebp

; 252  : 	}
; 253  : }

	add	esp, 40					; 00000028H
	ret	0
?Damage_All_Objects_Area@@YAXMPBDABUVector3@@MPAE2@Z ENDP ; Damage_All_Objects_Area
_TEXT	ENDS
PUBLIC	?Ranged_Damage_To_Buildings@@YAXMPBDUVector3@@MPAE@Z ; Ranged_Damage_To_Buildings
; Function compile flags: /Ogtpy
;	COMDAT ?Ranged_Damage_To_Buildings@@YAXMPBDUVector3@@MPAE@Z
_TEXT	SEGMENT
_pos2$54156 = -36					; size = 12
_pos1$54154 = -24					; size = 12
$T58182 = -12						; size = 12
_Damage$ = 8						; size = 4
_Warhead$ = 12						; size = 4
_Location$ = 16						; size = 12
_DamageRadius$ = 28					; size = 4
_Damager$ = 32						; size = 4
?Ranged_Damage_To_Buildings@@YAXMPBDUVector3@@MPAE@Z PROC ; Ranged_Damage_To_Buildings, COMDAT

; 257  : 	if (DamageRadius > 0)

	fldz
	sub	esp, 36					; 00000024H
	fcomp	DWORD PTR _DamageRadius$[esp+32]
	fnstsw	ax
	test	ah, 5
	jp	$LN4@Ranged_Dam

; 258  : 	{
; 259  : 		GenericSLNode *x = BuildingGameObjList->HeadNode;

	mov	eax, DWORD PTR ?BuildingGameObjList@@3PAV?$SList@E@@A ; BuildingGameObjList
	push	edi
	mov	edi, DWORD PTR [eax+4]

; 260  : 		while (x)

	test	edi, edi
	je	$LN12@Ranged_Dam
	push	ebx
	mov	ebx, DWORD PTR _Location$[esp+48]
	push	ebp
	mov	ebp, DWORD PTR _Location$[esp+48]
	push	esi
$LL5@Ranged_Dam:

; 261  : 		{
; 262  : 			GameObject *o = As_BuildingGameObj((GameObject *)x->NodeData);

	mov	ecx, DWORD PTR [edi+4]
	push	ecx
	call	?As_BuildingGameObj@@YAPAEPAE@Z		; As_BuildingGameObj
	mov	esi, eax
	add	esp, 4

; 263  : 			if (o)

	test	esi, esi
	je	$LN11@Ranged_Dam

; 264  : 			{
; 265  : 				float health = Commands->Get_Health(o);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+220]
	push	esi
	call	eax

; 266  : 				if (health > 0)

	fcomp	DWORD PTR __real@00000000
	add	esp, 4
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	$LN11@Ranged_Dam

; 267  : 				{
; 268  : 					Vector3 pos1 = Commands->Get_Position(o);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+64]
	lea	ecx, DWORD PTR $T58182[esp+52]
	push	esi
	push	ecx
	call	eax
	mov	ecx, DWORD PTR [eax]
	mov	DWORD PTR _pos1$54154[esp+60], ecx
	mov	edx, DWORD PTR [eax+4]

; 269  : 					Vector3 pos2 = Location;

	mov	ecx, DWORD PTR _Location$[esp+56]
	mov	DWORD PTR _pos1$54154[esp+64], edx
	mov	eax, DWORD PTR [eax+8]
	mov	DWORD PTR _pos1$54154[esp+68], eax
	mov	DWORD PTR _pos2$54156[esp+60], ecx

; 270  : 
; 271  : 					float Distance = Commands->Get_Distance(pos1,pos2);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	lea	edx, DWORD PTR _pos2$54156[esp+60]
	push	edx
	lea	eax, DWORD PTR _pos1$54154[esp+64]
	mov	DWORD PTR _pos2$54156[esp+68], ebp
	mov	DWORD PTR _pos2$54156[esp+72], ebx
	mov	edx, DWORD PTR [ecx+256]
	push	eax
	call	edx

; 272  : 
; 273  : 					if (Distance <= DamageRadius)

	fcomp	DWORD PTR _DamageRadius$[esp+64]
	add	esp, 16					; 00000010H
	fnstsw	ax
	test	ah, 65					; 00000041H
	jp	SHORT $LN11@Ranged_Dam

; 274  : 					{
; 275  : 						Commands->Apply_Damage(o,Damage,Warhead,Damager);

	mov	eax, DWORD PTR _Damager$[esp+48]
	fld	DWORD PTR _Damage$[esp+48]
	mov	ecx, DWORD PTR _Warhead$[esp+48]
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	push	eax
	mov	eax, DWORD PTR [edx+616]
	push	ecx
	push	ecx
	fstp	DWORD PTR [esp]
	push	esi
	call	eax
	add	esp, 16					; 00000010H
$LN11@Ranged_Dam:

; 276  : 					}
; 277  : 				}
; 278  : 			}
; 279  : 			x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	$LL5@Ranged_Dam
	pop	esi
	pop	ebp
	pop	ebx
$LN12@Ranged_Dam:
	pop	edi
$LN4@Ranged_Dam:

; 280  : 		}
; 281  : 	}
; 282  : }

	add	esp, 36					; 00000024H
	ret	0
?Ranged_Damage_To_Buildings@@YAXMPBDUVector3@@MPAE@Z ENDP ; Ranged_Damage_To_Buildings
_TEXT	ENDS
PUBLIC	?Ranged_Scale_Damage_To_Buildings@@YAXMPBDUVector3@@MPAE@Z ; Ranged_Scale_Damage_To_Buildings
; Function compile flags: /Ogtpy
;	COMDAT ?Ranged_Scale_Damage_To_Buildings@@YAXMPBDUVector3@@MPAE@Z
_TEXT	SEGMENT
_Ratio$54167 = -40					; size = 4
_pos2$54179 = -36					; size = 12
_pos1$54177 = -24					; size = 12
$T58191 = -12						; size = 12
_Damage$ = 8						; size = 4
_Warhead$ = 12						; size = 4
_Location$ = 16						; size = 12
_DamageRadius$ = 28					; size = 4
_Damager$ = 32						; size = 4
?Ranged_Scale_Damage_To_Buildings@@YAXMPBDUVector3@@MPAE@Z PROC ; Ranged_Scale_Damage_To_Buildings, COMDAT

; 286  : 	if (DamageRadius > 0)

	fldz
	sub	esp, 40					; 00000028H
	fld	DWORD PTR _DamageRadius$[esp+36]
	fcom	ST(1)
	fnstsw	ax
	fstp	ST(1)
	test	ah, 65					; 00000041H
	jne	$LN15@Ranged_Sca

; 287  : 	{
; 288  : 		float Ratio = Damage/DamageRadius;

	fdivr	DWORD PTR _Damage$[esp+36]

; 289  : 
; 290  : 		GenericSLNode *x = BuildingGameObjList->HeadNode;

	mov	eax, DWORD PTR ?BuildingGameObjList@@3PAV?$SList@E@@A ; BuildingGameObjList
	push	edi
	mov	edi, DWORD PTR [eax+4]

; 291  : 		while (x)

	test	edi, edi
	fstp	DWORD PTR _Ratio$54167[esp+44]
	je	$LN12@Ranged_Sca
	push	ebx
	mov	ebx, DWORD PTR _Location$[esp+52]
	push	ebp
	mov	ebp, DWORD PTR _Location$[esp+52]
	push	esi
	npad	4
$LL5@Ranged_Sca:

; 292  : 		{
; 293  : 			GameObject *o = As_BuildingGameObj((GameObject *)x->NodeData);

	mov	ecx, DWORD PTR [edi+4]
	push	ecx
	call	?As_BuildingGameObj@@YAPAEPAE@Z		; As_BuildingGameObj
	mov	esi, eax
	add	esp, 4

; 294  : 			if (o)

	test	esi, esi
	je	$LN11@Ranged_Sca

; 295  : 			{
; 296  : 				float health = Commands->Get_Health(o);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+220]
	push	esi
	call	eax

; 297  : 				if (health > 0)

	fcomp	DWORD PTR __real@00000000
	add	esp, 4
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	$LN11@Ranged_Sca

; 298  : 				{
; 299  : 					Vector3 pos1 = Commands->Get_Position(o);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+64]
	lea	ecx, DWORD PTR $T58191[esp+56]
	push	esi
	push	ecx
	call	eax
	mov	ecx, DWORD PTR [eax]
	mov	DWORD PTR _pos1$54177[esp+64], ecx
	mov	edx, DWORD PTR [eax+4]

; 300  : 					Vector3 pos2 = Location;

	mov	ecx, DWORD PTR _Location$[esp+60]
	mov	DWORD PTR _pos1$54177[esp+68], edx
	mov	eax, DWORD PTR [eax+8]
	mov	DWORD PTR _pos1$54177[esp+72], eax
	mov	DWORD PTR _pos2$54179[esp+64], ecx

; 301  : 
; 302  : 					float Distance = Commands->Get_Distance(pos1,pos2);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	lea	edx, DWORD PTR _pos2$54179[esp+64]
	push	edx
	lea	eax, DWORD PTR _pos1$54177[esp+68]
	mov	DWORD PTR _pos2$54179[esp+72], ebp
	mov	DWORD PTR _pos2$54179[esp+76], ebx
	mov	edx, DWORD PTR [ecx+256]
	push	eax
	call	edx

; 303  : 
; 304  : 					if (Distance <= DamageRadius)

	fld	DWORD PTR _DamageRadius$[esp+68]
	fcomp	ST(1)
	add	esp, 16					; 00000010H
	fnstsw	ax
	test	ah, 1
	jne	SHORT $LN18@Ranged_Sca

; 305  : 					{
; 306  : 						float scaledamage = (Damage - (Distance*(Ratio)));
; 307  : 						Commands->Apply_Damage(o,scaledamage,Warhead,Damager);

	mov	eax, DWORD PTR _Damager$[esp+52]
	fmul	DWORD PTR _Ratio$54167[esp+56]
	mov	ecx, DWORD PTR _Warhead$[esp+52]
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	fsubr	DWORD PTR _Damage$[esp+52]
	push	eax
	mov	eax, DWORD PTR [edx+616]
	push	ecx
	push	ecx
	fstp	DWORD PTR [esp]
	push	esi
	call	eax
	add	esp, 16					; 00000010H
	jmp	SHORT $LN11@Ranged_Sca
$LN18@Ranged_Sca:
	fstp	ST(0)
$LN11@Ranged_Sca:

; 308  : 					}
; 309  : 				}
; 310  : 			}
; 311  : 			x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	$LL5@Ranged_Sca
	pop	esi
	pop	ebp
	pop	ebx
$LN12@Ranged_Sca:
	pop	edi

; 312  : 		}
; 313  : 	}
; 314  : }

	add	esp, 40					; 00000028H
	ret	0
$LN15@Ranged_Sca:

; 286  : 	if (DamageRadius > 0)

	fstp	ST(0)

; 312  : 		}
; 313  : 	}
; 314  : }

	add	esp, 40					; 00000028H
	ret	0
?Ranged_Scale_Damage_To_Buildings@@YAXMPBDUVector3@@MPAE@Z ENDP ; Ranged_Scale_Damage_To_Buildings
_TEXT	ENDS
PUBLIC	?Ranged_Percentage_Damage_To_Buildings@@YAXMPBDUVector3@@MPAE@Z ; Ranged_Percentage_Damage_To_Buildings
; Function compile flags: /Ogtpy
;	COMDAT ?Ranged_Percentage_Damage_To_Buildings@@YAXMPBDUVector3@@MPAE@Z
_TEXT	SEGMENT
_pos2$54202 = -36					; size = 12
_pos1$54200 = -24					; size = 12
$T58206 = -12						; size = 12
_Percentage$ = 8					; size = 4
_Warhead$ = 12						; size = 4
_Location$ = 16						; size = 12
_DamageRadius$ = 28					; size = 4
_Damager$ = 32						; size = 4
?Ranged_Percentage_Damage_To_Buildings@@YAXMPBDUVector3@@MPAE@Z PROC ; Ranged_Percentage_Damage_To_Buildings, COMDAT

; 318  : 	if (DamageRadius > 0)

	fldz
	sub	esp, 36					; 00000024H
	fcomp	DWORD PTR _DamageRadius$[esp+32]
	fnstsw	ax
	test	ah, 5
	jp	$LN4@Ranged_Per

; 319  : 	{
; 320  : 		GenericSLNode *x = BuildingGameObjList->HeadNode;

	mov	eax, DWORD PTR ?BuildingGameObjList@@3PAV?$SList@E@@A ; BuildingGameObjList
	push	edi
	mov	edi, DWORD PTR [eax+4]

; 321  : 		while (x)

	test	edi, edi
	je	$LN12@Ranged_Per
	push	ebx
	mov	ebx, DWORD PTR _Location$[esp+48]
	push	ebp
	mov	ebp, DWORD PTR _Location$[esp+48]
	push	esi
$LL5@Ranged_Per:

; 322  : 		{
; 323  : 			GameObject *o = As_BuildingGameObj((GameObject *)x->NodeData);

	mov	ecx, DWORD PTR [edi+4]
	push	ecx
	call	?As_BuildingGameObj@@YAPAEPAE@Z		; As_BuildingGameObj
	mov	esi, eax
	add	esp, 4

; 324  : 			if (o)

	test	esi, esi
	je	$LN11@Ranged_Per

; 325  : 			{
; 326  : 				float health = Commands->Get_Health(o);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+220]
	push	esi
	call	eax

; 327  : 				if (health > 0)

	fcomp	DWORD PTR __real@00000000
	add	esp, 4
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	$LN11@Ranged_Per

; 328  : 				{
; 329  : 					Vector3 pos1 = Commands->Get_Position(o);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+64]
	lea	ecx, DWORD PTR $T58206[esp+52]
	push	esi
	push	ecx
	call	eax
	mov	ecx, DWORD PTR [eax]
	mov	DWORD PTR _pos1$54200[esp+60], ecx
	mov	edx, DWORD PTR [eax+4]

; 330  : 					Vector3 pos2 = Location;

	mov	ecx, DWORD PTR _Location$[esp+56]
	mov	DWORD PTR _pos1$54200[esp+64], edx
	mov	eax, DWORD PTR [eax+8]
	mov	DWORD PTR _pos1$54200[esp+68], eax
	mov	DWORD PTR _pos2$54202[esp+60], ecx

; 331  : 
; 332  : 					float Distance = Commands->Get_Distance(pos1,pos2);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	lea	edx, DWORD PTR _pos2$54202[esp+60]
	push	edx
	lea	eax, DWORD PTR _pos1$54200[esp+64]
	mov	DWORD PTR _pos2$54202[esp+68], ebp
	mov	DWORD PTR _pos2$54202[esp+72], ebx
	mov	edx, DWORD PTR [ecx+256]
	push	eax
	call	edx

; 333  : 
; 334  : 					if (Distance <= DamageRadius)

	fcomp	DWORD PTR _DamageRadius$[esp+64]
	add	esp, 16					; 00000010H
	fnstsw	ax
	test	ah, 65					; 00000041H
	jp	SHORT $LN11@Ranged_Per

; 335  : 					{
; 336  : 						float Max_Health = Commands->Get_Max_Health(o);

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+224]
	push	esi
	call	ecx

; 337  : 						float Damage = Max_Health*Percentage;

	fmul	DWORD PTR _Percentage$[esp+52]

; 338  : 						Commands->Apply_Damage(o,Damage,Warhead,Damager);

	mov	edx, DWORD PTR _Damager$[esp+52]
	mov	eax, DWORD PTR _Warhead$[esp+52]
	add	esp, 4
	push	edx
	push	eax
	push	ecx
	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	fstp	DWORD PTR [esp]
	mov	edx, DWORD PTR [ecx+616]
	push	esi
	call	edx
	add	esp, 16					; 00000010H
$LN11@Ranged_Per:

; 339  : 					}
; 340  : 				}
; 341  : 			}
; 342  : 			x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	$LL5@Ranged_Per
	pop	esi
	pop	ebp
	pop	ebx
$LN12@Ranged_Per:
	pop	edi
$LN4@Ranged_Per:

; 343  : 		}
; 344  : 	}
; 345  : }

	add	esp, 36					; 00000024H
	ret	0
?Ranged_Percentage_Damage_To_Buildings@@YAXMPBDUVector3@@MPAE@Z ENDP ; Ranged_Percentage_Damage_To_Buildings
_TEXT	ENDS
PUBLIC	?Ranged_Damage_To_Buildings_Team@@YAXHMPBDUVector3@@MPAE@Z ; Ranged_Damage_To_Buildings_Team
; Function compile flags: /Ogtpy
;	COMDAT ?Ranged_Damage_To_Buildings_Team@@YAXHMPBDUVector3@@MPAE@Z
_TEXT	SEGMENT
_pos2$54229 = -36					; size = 12
_pos1$54227 = -24					; size = 12
$T58215 = -12						; size = 12
_Team$ = 8						; size = 4
_Damage$ = 12						; size = 4
_Warhead$ = 16						; size = 4
_Location$ = 20						; size = 12
_DamageRadius$ = 32					; size = 4
_Damager$ = 36						; size = 4
?Ranged_Damage_To_Buildings_Team@@YAXHMPBDUVector3@@MPAE@Z PROC ; Ranged_Damage_To_Buildings_Team, COMDAT

; 349  : 	if (DamageRadius > 0)

	fldz
	sub	esp, 36					; 00000024H
	fcomp	DWORD PTR _DamageRadius$[esp+32]
	fnstsw	ax
	test	ah, 5
	jp	$LN6@Ranged_Dam@2

; 350  : 	{
; 351  : 		GenericSLNode *x = BuildingGameObjList->HeadNode;

	mov	eax, DWORD PTR ?BuildingGameObjList@@3PAV?$SList@E@@A ; BuildingGameObjList
	push	edi
	mov	edi, DWORD PTR [eax+4]

; 352  : 		while (x)

	test	edi, edi
	je	$LN14@Ranged_Dam@2
	push	ebx
	mov	ebx, DWORD PTR _Location$[esp+48]
	push	ebp
	mov	ebp, DWORD PTR _Location$[esp+48]
	push	esi
$LL7@Ranged_Dam@2:

; 353  : 		{
; 354  : 			GameObject *o = As_BuildingGameObj((GameObject *)x->NodeData);

	mov	ecx, DWORD PTR [edi+4]
	push	ecx
	call	?As_BuildingGameObj@@YAPAEPAE@Z		; As_BuildingGameObj
	mov	esi, eax
	add	esp, 4

; 355  : 			if (o)

	test	esi, esi
	je	$LN13@Ranged_Dam@2

; 356  : 			{
; 357  : 				if ((Get_Object_Type(o) == Team) || (Team == 2))

	push	esi
	call	?Get_Object_Type@@YAHPAE@Z		; Get_Object_Type
	mov	ecx, DWORD PTR _Team$[esp+52]
	add	esp, 4
	cmp	eax, ecx
	je	SHORT $LN3@Ranged_Dam@2
	cmp	ecx, 2
	jne	$LN13@Ranged_Dam@2
$LN3@Ranged_Dam@2:

; 358  : 				{
; 359  : 					float health = Commands->Get_Health(o);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+220]
	push	esi
	call	eax

; 360  : 					if (health > 0)

	fcomp	DWORD PTR __real@00000000
	add	esp, 4
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	$LN13@Ranged_Dam@2

; 361  : 					{
; 362  : 						Vector3 pos1 = Commands->Get_Position(o);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+64]
	lea	ecx, DWORD PTR $T58215[esp+52]
	push	esi
	push	ecx
	call	eax
	mov	ecx, DWORD PTR [eax]
	mov	DWORD PTR _pos1$54227[esp+60], ecx
	mov	edx, DWORD PTR [eax+4]

; 363  : 						Vector3 pos2 = Location;

	mov	ecx, DWORD PTR _Location$[esp+56]
	mov	DWORD PTR _pos1$54227[esp+64], edx
	mov	eax, DWORD PTR [eax+8]
	mov	DWORD PTR _pos1$54227[esp+68], eax
	mov	DWORD PTR _pos2$54229[esp+60], ecx

; 364  : 						float Distance = Commands->Get_Distance(pos1,pos2);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	lea	edx, DWORD PTR _pos2$54229[esp+60]
	push	edx
	lea	eax, DWORD PTR _pos1$54227[esp+64]
	mov	DWORD PTR _pos2$54229[esp+68], ebp
	mov	DWORD PTR _pos2$54229[esp+72], ebx
	mov	edx, DWORD PTR [ecx+256]
	push	eax
	call	edx

; 365  : 						if (Distance <= DamageRadius)

	fcomp	DWORD PTR _DamageRadius$[esp+64]
	add	esp, 16					; 00000010H
	fnstsw	ax
	test	ah, 65					; 00000041H
	jp	SHORT $LN13@Ranged_Dam@2

; 366  : 						{
; 367  : 							Commands->Apply_Damage(o,Damage,Warhead,Damager);

	mov	eax, DWORD PTR _Damager$[esp+48]
	fld	DWORD PTR _Damage$[esp+48]
	mov	ecx, DWORD PTR _Warhead$[esp+48]
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	push	eax
	mov	eax, DWORD PTR [edx+616]
	push	ecx
	push	ecx
	fstp	DWORD PTR [esp]
	push	esi
	call	eax
	add	esp, 16					; 00000010H
$LN13@Ranged_Dam@2:

; 368  : 						}
; 369  : 					}
; 370  : 				}
; 371  : 			}
; 372  : 			x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	$LL7@Ranged_Dam@2
	pop	esi
	pop	ebp
	pop	ebx
$LN14@Ranged_Dam@2:
	pop	edi
$LN6@Ranged_Dam@2:

; 373  : 		}
; 374  : 	}
; 375  : }

	add	esp, 36					; 00000024H
	ret	0
?Ranged_Damage_To_Buildings_Team@@YAXHMPBDUVector3@@MPAE@Z ENDP ; Ranged_Damage_To_Buildings_Team
_TEXT	ENDS
PUBLIC	?Ranged_Scale_Damage_To_Buildings_Team@@YAXHMPBDUVector3@@MPAE@Z ; Ranged_Scale_Damage_To_Buildings_Team
; Function compile flags: /Ogtpy
;	COMDAT ?Ranged_Scale_Damage_To_Buildings_Team@@YAXHMPBDUVector3@@MPAE@Z
_TEXT	SEGMENT
_Ratio$54241 = -40					; size = 4
_pos2$54255 = -36					; size = 12
_pos1$54253 = -24					; size = 12
$T58224 = -12						; size = 12
_Team$ = 8						; size = 4
_Damage$ = 12						; size = 4
_Warhead$ = 16						; size = 4
_Location$ = 20						; size = 12
_DamageRadius$ = 32					; size = 4
_Damager$ = 36						; size = 4
?Ranged_Scale_Damage_To_Buildings_Team@@YAXHMPBDUVector3@@MPAE@Z PROC ; Ranged_Scale_Damage_To_Buildings_Team, COMDAT

; 379  : 	if (DamageRadius > 0)

	fldz
	sub	esp, 40					; 00000028H
	fld	DWORD PTR _DamageRadius$[esp+36]
	fcom	ST(1)
	fnstsw	ax
	fstp	ST(1)
	test	ah, 65					; 00000041H
	jne	$LN17@Ranged_Sca@2

; 380  : 	{
; 381  : 		float Ratio = Damage/DamageRadius;

	fdivr	DWORD PTR _Damage$[esp+36]

; 382  : 
; 383  : 		GenericSLNode *x = BuildingGameObjList->HeadNode;

	mov	eax, DWORD PTR ?BuildingGameObjList@@3PAV?$SList@E@@A ; BuildingGameObjList
	push	edi
	mov	edi, DWORD PTR [eax+4]

; 384  : 		while (x)

	test	edi, edi
	fstp	DWORD PTR _Ratio$54241[esp+44]
	je	$LN14@Ranged_Sca@2
	push	ebx
	mov	ebx, DWORD PTR _Location$[esp+52]
	push	ebp
	mov	ebp, DWORD PTR _Location$[esp+52]
	push	esi
	npad	4
$LL7@Ranged_Sca@2:

; 385  : 		{
; 386  : 			GameObject *o = As_BuildingGameObj((GameObject *)x->NodeData);

	mov	ecx, DWORD PTR [edi+4]
	push	ecx
	call	?As_BuildingGameObj@@YAPAEPAE@Z		; As_BuildingGameObj
	mov	esi, eax
	add	esp, 4

; 387  : 			if (o)

	test	esi, esi
	je	$LN13@Ranged_Sca@2

; 388  : 			{
; 389  : 				if ((Get_Object_Type(o) == Team) || (Team == 2))

	push	esi
	call	?Get_Object_Type@@YAHPAE@Z		; Get_Object_Type
	mov	ecx, DWORD PTR _Team$[esp+56]
	add	esp, 4
	cmp	eax, ecx
	je	SHORT $LN3@Ranged_Sca@2
	cmp	ecx, 2
	jne	$LN13@Ranged_Sca@2
$LN3@Ranged_Sca@2:

; 390  : 				{
; 391  : 					float health = Commands->Get_Health(o);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+220]
	push	esi
	call	eax

; 392  : 					if (health > 0)

	fcomp	DWORD PTR __real@00000000
	add	esp, 4
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	$LN13@Ranged_Sca@2

; 393  : 					{
; 394  : 						Vector3 pos1 = Commands->Get_Position(o);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+64]
	lea	ecx, DWORD PTR $T58224[esp+56]
	push	esi
	push	ecx
	call	eax
	mov	ecx, DWORD PTR [eax]
	mov	DWORD PTR _pos1$54253[esp+64], ecx
	mov	edx, DWORD PTR [eax+4]

; 395  : 						Vector3 pos2 = Location;

	mov	ecx, DWORD PTR _Location$[esp+60]
	mov	DWORD PTR _pos1$54253[esp+68], edx
	mov	eax, DWORD PTR [eax+8]
	mov	DWORD PTR _pos1$54253[esp+72], eax
	mov	DWORD PTR _pos2$54255[esp+64], ecx

; 396  : 						float Distance = Commands->Get_Distance(pos1,pos2);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	lea	edx, DWORD PTR _pos2$54255[esp+64]
	push	edx
	lea	eax, DWORD PTR _pos1$54253[esp+68]
	mov	DWORD PTR _pos2$54255[esp+72], ebp
	mov	DWORD PTR _pos2$54255[esp+76], ebx
	mov	edx, DWORD PTR [ecx+256]
	push	eax
	call	edx

; 397  : 						if (Distance <= DamageRadius)

	fld	DWORD PTR _DamageRadius$[esp+68]
	fcomp	ST(1)
	add	esp, 16					; 00000010H
	fnstsw	ax
	test	ah, 1
	jne	SHORT $LN20@Ranged_Sca@2

; 398  : 						{
; 399  : 							float scaledamage = (Damage - (Distance*(Ratio)));
; 400  : 							Commands->Apply_Damage(o,scaledamage,Warhead,Damager);

	mov	eax, DWORD PTR _Damager$[esp+52]
	fmul	DWORD PTR _Ratio$54241[esp+56]
	mov	ecx, DWORD PTR _Warhead$[esp+52]
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	fsubr	DWORD PTR _Damage$[esp+52]
	push	eax
	mov	eax, DWORD PTR [edx+616]
	push	ecx
	push	ecx
	fstp	DWORD PTR [esp]
	push	esi
	call	eax
	add	esp, 16					; 00000010H
	jmp	SHORT $LN13@Ranged_Sca@2
$LN20@Ranged_Sca@2:
	fstp	ST(0)
$LN13@Ranged_Sca@2:

; 401  : 						}
; 402  : 					}
; 403  : 				}
; 404  : 			}
; 405  : 			x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	$LL7@Ranged_Sca@2
	pop	esi
	pop	ebp
	pop	ebx
$LN14@Ranged_Sca@2:
	pop	edi

; 406  : 		}
; 407  : 	}
; 408  : }

	add	esp, 40					; 00000028H
	ret	0
$LN17@Ranged_Sca@2:

; 379  : 	if (DamageRadius > 0)

	fstp	ST(0)

; 406  : 		}
; 407  : 	}
; 408  : }

	add	esp, 40					; 00000028H
	ret	0
?Ranged_Scale_Damage_To_Buildings_Team@@YAXHMPBDUVector3@@MPAE@Z ENDP ; Ranged_Scale_Damage_To_Buildings_Team
_TEXT	ENDS
PUBLIC	?Ranged_Percentage_Damage_To_Buildings_Team@@YAXHMPBDUVector3@@MPAE@Z ; Ranged_Percentage_Damage_To_Buildings_Team
; Function compile flags: /Ogtpy
;	COMDAT ?Ranged_Percentage_Damage_To_Buildings_Team@@YAXHMPBDUVector3@@MPAE@Z
_TEXT	SEGMENT
_pos2$54281 = -36					; size = 12
_pos1$54279 = -24					; size = 12
$T58239 = -12						; size = 12
_Team$ = 8						; size = 4
_Percentage$ = 12					; size = 4
_Warhead$ = 16						; size = 4
_Location$ = 20						; size = 12
_DamageRadius$ = 32					; size = 4
_Damager$ = 36						; size = 4
?Ranged_Percentage_Damage_To_Buildings_Team@@YAXHMPBDUVector3@@MPAE@Z PROC ; Ranged_Percentage_Damage_To_Buildings_Team, COMDAT

; 412  : 	if (DamageRadius > 0)

	fldz
	sub	esp, 36					; 00000024H
	fcomp	DWORD PTR _DamageRadius$[esp+32]
	fnstsw	ax
	test	ah, 5
	jp	$LN6@Ranged_Per@2

; 413  : 	{
; 414  : 		GenericSLNode *x = BuildingGameObjList->HeadNode;

	mov	eax, DWORD PTR ?BuildingGameObjList@@3PAV?$SList@E@@A ; BuildingGameObjList
	push	edi
	mov	edi, DWORD PTR [eax+4]

; 415  : 		while (x)

	test	edi, edi
	je	$LN14@Ranged_Per@2
	push	ebx
	mov	ebx, DWORD PTR _Location$[esp+48]
	push	ebp
	mov	ebp, DWORD PTR _Location$[esp+48]
	push	esi
$LL7@Ranged_Per@2:

; 416  : 		{
; 417  : 			GameObject *o = As_BuildingGameObj((GameObject *)x->NodeData);

	mov	ecx, DWORD PTR [edi+4]
	push	ecx
	call	?As_BuildingGameObj@@YAPAEPAE@Z		; As_BuildingGameObj
	mov	esi, eax
	add	esp, 4

; 418  : 			if (o)

	test	esi, esi
	je	$LN13@Ranged_Per@2

; 419  : 			{
; 420  : 				if ((Get_Object_Type(o) == Team) || (Team == 2))

	push	esi
	call	?Get_Object_Type@@YAHPAE@Z		; Get_Object_Type
	mov	ecx, DWORD PTR _Team$[esp+52]
	add	esp, 4
	cmp	eax, ecx
	je	SHORT $LN3@Ranged_Per@2
	cmp	ecx, 2
	jne	$LN13@Ranged_Per@2
$LN3@Ranged_Per@2:

; 421  : 				{
; 422  : 					float health = Commands->Get_Health(o);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+220]
	push	esi
	call	eax

; 423  : 					if (health > 0)

	fcomp	DWORD PTR __real@00000000
	add	esp, 4
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	$LN13@Ranged_Per@2

; 424  : 					{
; 425  : 						Vector3 pos1 = Commands->Get_Position(o);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+64]
	lea	ecx, DWORD PTR $T58239[esp+52]
	push	esi
	push	ecx
	call	eax
	mov	ecx, DWORD PTR [eax]
	mov	DWORD PTR _pos1$54279[esp+60], ecx
	mov	edx, DWORD PTR [eax+4]

; 426  : 						Vector3 pos2 = Location;

	mov	ecx, DWORD PTR _Location$[esp+56]
	mov	DWORD PTR _pos1$54279[esp+64], edx
	mov	eax, DWORD PTR [eax+8]
	mov	DWORD PTR _pos1$54279[esp+68], eax
	mov	DWORD PTR _pos2$54281[esp+60], ecx

; 427  : 						float Distance = Commands->Get_Distance(pos1,pos2);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	lea	edx, DWORD PTR _pos2$54281[esp+60]
	push	edx
	lea	eax, DWORD PTR _pos1$54279[esp+64]
	mov	DWORD PTR _pos2$54281[esp+68], ebp
	mov	DWORD PTR _pos2$54281[esp+72], ebx
	mov	edx, DWORD PTR [ecx+256]
	push	eax
	call	edx

; 428  : 						if (Distance <= DamageRadius)

	fcomp	DWORD PTR _DamageRadius$[esp+64]
	add	esp, 16					; 00000010H
	fnstsw	ax
	test	ah, 65					; 00000041H
	jp	SHORT $LN13@Ranged_Per@2

; 429  : 						{
; 430  : 							float Max_Health = Commands->Get_Max_Health(o);

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+224]
	push	esi
	call	ecx

; 431  : 							float Damage = Max_Health*Percentage;

	fmul	DWORD PTR _Percentage$[esp+52]

; 432  : 							Commands->Apply_Damage(o,Damage,Warhead,Damager);

	mov	edx, DWORD PTR _Damager$[esp+52]
	mov	eax, DWORD PTR _Warhead$[esp+52]
	add	esp, 4
	push	edx
	push	eax
	push	ecx
	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	fstp	DWORD PTR [esp]
	mov	edx, DWORD PTR [ecx+616]
	push	esi
	call	edx
	add	esp, 16					; 00000010H
$LN13@Ranged_Per@2:

; 433  : 						}
; 434  : 					}
; 435  : 				}
; 436  : 			}
; 437  : 			x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	$LL7@Ranged_Per@2
	pop	esi
	pop	ebp
	pop	ebx
$LN14@Ranged_Per@2:
	pop	edi
$LN6@Ranged_Per@2:

; 438  : 		}
; 439  : 	}
; 440  : }

	add	esp, 36					; 00000024H
	ret	0
?Ranged_Percentage_Damage_To_Buildings_Team@@YAXHMPBDUVector3@@MPAE@Z ENDP ; Ranged_Percentage_Damage_To_Buildings_Team
_TEXT	ENDS
PUBLIC	??_C@_04OHJIHAFH@None?$AA@			; `string'
PUBLIC	__real@3f000000
PUBLIC	?Damage_Objects_Half@@YAXXZ			; Damage_Objects_Half
EXTRN	?As_SoldierGameObj@@YAPAEPAE@Z:PROC		; As_SoldierGameObj
;	COMDAT ??_C@_04OHJIHAFH@None?$AA@
CONST	SEGMENT
??_C@_04OHJIHAFH@None?$AA@ DB 'None', 00H		; `string'
CONST	ENDS
;	COMDAT __real@3f000000
CONST	SEGMENT
__real@3f000000 DD 03f000000r			; 0.5
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Damage_Objects_Half@@YAXXZ
_TEXT	SEGMENT
tv177 = -4						; size = 4
?Damage_Objects_Half@@YAXXZ PROC			; Damage_Objects_Half, COMDAT

; 443  : {

	push	ecx

; 444  : 	GenericSLNode *z = BaseGameObjList->HeadNode;

	mov	eax, DWORD PTR ?BaseGameObjList@@3PAV?$SList@E@@A ; BaseGameObjList
	push	edi
	mov	edi, DWORD PTR [eax+4]

; 445  : 	while (z)

	test	edi, edi
	je	$LN4@Damage_Obj
	push	esi
$LL5@Damage_Obj:

; 446  : 	{
; 447  : 		GameObject *obj = (GameObject *)z->NodeData;

	mov	esi, DWORD PTR [edi+4]

; 448  : 		if (obj && As_ScriptableGameObj(obj))

	test	esi, esi
	je	SHORT $LN2@Damage_Obj
	push	esi
	call	?As_ScriptableGameObj@@YAPAEPAE@Z	; As_ScriptableGameObj
	add	esp, 4
	test	eax, eax
	je	SHORT $LN2@Damage_Obj

; 449  : 		{
; 450  : 			if (As_SoldierGameObj(obj) || As_VehicleGameObj(obj))

	push	esi
	call	?As_SoldierGameObj@@YAPAEPAE@Z		; As_SoldierGameObj
	add	esp, 4
	test	eax, eax
	jne	SHORT $LN1@Damage_Obj
	push	esi
	call	?As_VehicleGameObj@@YAPAEPAE@Z		; As_VehicleGameObj
	add	esp, 4
	test	eax, eax
	je	SHORT $LN2@Damage_Obj
$LN1@Damage_Obj:

; 451  : 			{
; 452  : 				float Health = Commands->Get_Max_Health(obj) + Commands->Get_Max_Shield_Strength(obj);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	edx, DWORD PTR [ecx+236]
	push	esi
	call	edx
	fstp	DWORD PTR tv177[esp+16]
	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+224]
	push	esi
	call	ecx
	fadd	DWORD PTR tv177[esp+20]

; 453  : 				Commands->Apply_Damage(obj,(Health / 2),"None",0);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+616]
	fmul	DWORD PTR __real@3f000000
	add	esp, 8
	push	0
	push	OFFSET ??_C@_04OHJIHAFH@None?$AA@
	push	ecx
	fstp	DWORD PTR [esp]
	push	esi
	call	eax
	add	esp, 16					; 00000010H
$LN2@Damage_Obj:

; 454  : 			}
; 455  : 		}
; 456  : 		z = z->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	SHORT $LL5@Damage_Obj
	pop	esi
$LN4@Damage_Obj:
	pop	edi

; 457  : 	}
; 458  : }

	pop	ecx
	ret	0
?Damage_Objects_Half@@YAXXZ ENDP			; Damage_Objects_Half
_TEXT	ENDS
PUBLIC	?Ranged_Percentage_Damage_To_Vehicles@@YAXMPBDUVector3@@MPAE@Z ; Ranged_Percentage_Damage_To_Vehicles
; Function compile flags: /Ogtpy
;	COMDAT ?Ranged_Percentage_Damage_To_Vehicles@@YAXMPBDUVector3@@MPAE@Z
_TEXT	SEGMENT
_Max_Health$54322 = -40					; size = 4
_pos2$54319 = -36					; size = 12
_pos1$54317 = -24					; size = 12
$T58255 = -12						; size = 12
_Percentage$ = 8					; size = 4
_Warhead$ = 12						; size = 4
_Location$ = 16						; size = 12
_DamageRadius$ = 28					; size = 4
_Damager$ = 32						; size = 4
?Ranged_Percentage_Damage_To_Vehicles@@YAXMPBDUVector3@@MPAE@Z PROC ; Ranged_Percentage_Damage_To_Vehicles, COMDAT

; 462  : 	if (DamageRadius > 0)

	fldz
	sub	esp, 40					; 00000028H
	fcomp	DWORD PTR _DamageRadius$[esp+36]
	fnstsw	ax
	test	ah, 5
	jp	$LN5@Ranged_Per@3

; 463  : 	{
; 464  : 		GenericSLNode *x = BaseGameObjList->HeadNode;

	mov	eax, DWORD PTR ?BaseGameObjList@@3PAV?$SList@E@@A ; BaseGameObjList
	push	edi
	mov	edi, DWORD PTR [eax+4]

; 465  : 		while (x)

	test	edi, edi
	je	$LN13@Ranged_Per@3
	push	ebx
	mov	ebx, DWORD PTR _Location$[esp+52]
	push	ebp
	mov	ebp, DWORD PTR _Location$[esp+52]
	push	esi
$LL6@Ranged_Per@3:

; 466  : 		{
; 467  : 			GameObject *o = (GameObject *)x->NodeData;

	mov	esi, DWORD PTR [edi+4]

; 468  : 			if (o && As_ScriptableGameObj(o))

	test	esi, esi
	je	$LN12@Ranged_Per@3
	push	esi
	call	?As_ScriptableGameObj@@YAPAEPAE@Z	; As_ScriptableGameObj
	add	esp, 4
	test	eax, eax
	je	$LN12@Ranged_Per@3

; 469  : 			{
; 470  : 				if (As_VehicleGameObj(o))

	push	esi
	call	?As_VehicleGameObj@@YAPAEPAE@Z		; As_VehicleGameObj
	add	esp, 4
	test	eax, eax
	je	$LN12@Ranged_Per@3

; 471  : 				{
; 472  : 					float health = Commands->Get_Health(o);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	edx, DWORD PTR [ecx+220]
	push	esi
	call	edx

; 473  : 					if (health > 0)

	fcomp	DWORD PTR __real@00000000
	add	esp, 4
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	$LN12@Ranged_Per@3

; 474  : 					{
; 475  : 						Vector3 pos1 = Commands->Get_Position(o);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	edx, DWORD PTR [ecx+64]
	lea	eax, DWORD PTR $T58255[esp+56]
	push	esi
	push	eax
	call	edx
	mov	ecx, DWORD PTR [eax]
	mov	DWORD PTR _pos1$54317[esp+64], ecx
	mov	edx, DWORD PTR [eax+4]

; 476  : 						Vector3 pos2 = Location;

	mov	ecx, DWORD PTR _Location$[esp+60]
	mov	DWORD PTR _pos1$54317[esp+68], edx
	mov	eax, DWORD PTR [eax+8]
	mov	DWORD PTR _pos1$54317[esp+72], eax
	mov	DWORD PTR _pos2$54319[esp+64], ecx

; 477  : 
; 478  : 						float Distance = Commands->Get_Distance(pos1,pos2);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	lea	edx, DWORD PTR _pos2$54319[esp+64]
	push	edx
	lea	eax, DWORD PTR _pos1$54317[esp+68]
	mov	DWORD PTR _pos2$54319[esp+72], ebp
	mov	DWORD PTR _pos2$54319[esp+76], ebx
	mov	edx, DWORD PTR [ecx+256]
	push	eax
	call	edx

; 479  : 
; 480  : 						if (Distance <= DamageRadius)

	fcomp	DWORD PTR _DamageRadius$[esp+68]
	add	esp, 16					; 00000010H
	fnstsw	ax
	test	ah, 65					; 00000041H
	jp	SHORT $LN12@Ranged_Per@3

; 481  : 						{
; 482  : 							float Max_Health = Commands->Get_Max_Health(o);

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+224]
	push	esi
	call	ecx
	fstp	DWORD PTR _Max_Health$54322[esp+60]

; 483  : 							float Max_Shield = Commands->Get_Max_Shield_Strength(o);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+236]
	push	esi
	call	eax

; 484  : 							float Damage = (Max_Health + Max_Shield) * Percentage;

	fadd	DWORD PTR _Max_Health$54322[esp+64]

; 485  : 							Commands->Apply_Damage(o,Damage,Warhead,Damager);

	mov	ecx, DWORD PTR _Damager$[esp+60]
	mov	edx, DWORD PTR _Warhead$[esp+60]
	fmul	DWORD PTR _Percentage$[esp+60]
	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	add	esp, 8
	push	ecx
	push	edx
	push	ecx
	mov	ecx, DWORD PTR [eax+616]
	fstp	DWORD PTR [esp]
	push	esi
	call	ecx
	add	esp, 16					; 00000010H
$LN12@Ranged_Per@3:

; 486  : 						}
; 487  : 					}
; 488  : 				}
; 489  : 			}
; 490  : 			x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	$LL6@Ranged_Per@3
	pop	esi
	pop	ebp
	pop	ebx
$LN13@Ranged_Per@3:
	pop	edi
$LN5@Ranged_Per@3:

; 491  : 		}
; 492  : 	}
; 493  : }

	add	esp, 40					; 00000028H
	ret	0
?Ranged_Percentage_Damage_To_Vehicles@@YAXMPBDUVector3@@MPAE@Z ENDP ; Ranged_Percentage_Damage_To_Vehicles
_TEXT	ENDS
PUBLIC	?Set_Damage_Points@@YAXPAEM@Z			; Set_Damage_Points
EXTRN	?Set@FloatDataSafeClass@@QAG_NAAM@Z:PROC	; FloatDataSafeClass::Set
; Function compile flags: /Ogtpy
;	COMDAT ?Set_Damage_Points@@YAXPAEM@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
_points$ = 12						; size = 4
?Set_Damage_Points@@YAXPAEM@Z PROC			; Set_Damage_Points, COMDAT

; 497  : 	if (!Commands->Get_ID(obj) || !obj)

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+108]
	push	esi
	mov	esi, DWORD PTR _obj$[esp]
	push	esi
	call	ecx
	add	esp, 4
	test	eax, eax
	je	SHORT $LN2@Set_Damage
	test	esi, esi
	je	SHORT $LN2@Set_Damage

; 498  : 	{
; 499  : 		return;
; 500  : 	}
; 501  : 	DamageableGameObj *o = ((ScriptableGameObj *)obj)->As_DamageableGameObj();

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+60]
	mov	ecx, esi
	call	eax

; 502  : 	if (!o)

	test	eax, eax
	je	SHORT $LN2@Set_Damage

; 503  : 	{
; 504  : 		return;
; 505  : 	}
; 506  : 	o->Defense.DamagePoints.Set(points);

	lea	ecx, DWORD PTR _points$[esp]
	push	ecx
	add	eax, 1864				; 00000748H
	push	eax
	call	?Set@FloatDataSafeClass@@QAG_NAAM@Z	; FloatDataSafeClass::Set
$LN2@Set_Damage:
	pop	esi

; 507  : }

	ret	0
?Set_Damage_Points@@YAXPAEM@Z ENDP			; Set_Damage_Points
_TEXT	ENDS
PUBLIC	?Set_Death_Points@@YAXPAEM@Z			; Set_Death_Points
; Function compile flags: /Ogtpy
;	COMDAT ?Set_Death_Points@@YAXPAEM@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
_points$ = 12						; size = 4
?Set_Death_Points@@YAXPAEM@Z PROC			; Set_Death_Points, COMDAT

; 511  : 	if (!Commands->Get_ID(obj) || !obj)

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+108]
	push	esi
	mov	esi, DWORD PTR _obj$[esp]
	push	esi
	call	ecx
	add	esp, 4
	test	eax, eax
	je	SHORT $LN2@Set_Death_
	test	esi, esi
	je	SHORT $LN2@Set_Death_

; 512  : 	{
; 513  : 		return;
; 514  : 	}
; 515  : 	DamageableGameObj *o = ((ScriptableGameObj *)obj)->As_DamageableGameObj();

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+60]
	mov	ecx, esi
	call	eax

; 516  : 	if (!o)

	test	eax, eax
	je	SHORT $LN2@Set_Death_

; 517  : 	{
; 518  : 		return;
; 519  : 	}
; 520  : 	o->Defense.DeathPoints.Set(points);

	lea	ecx, DWORD PTR _points$[esp]
	push	ecx
	add	eax, 1868				; 0000074cH
	push	eax
	call	?Set@FloatDataSafeClass@@QAG_NAAM@Z	; FloatDataSafeClass::Set
$LN2@Set_Death_:
	pop	esi

; 521  : }

	ret	0
?Set_Death_Points@@YAXPAEM@Z ENDP			; Set_Death_Points
_TEXT	ENDS
PUBLIC	?Repair_All_Buildings_By_Team_Radius@@YAXHHMM@Z	; Repair_All_Buildings_By_Team_Radius
; Function compile flags: /Ogtpy
;	COMDAT ?Repair_All_Buildings_By_Team_Radius@@YAXHHMM@Z
_TEXT	SEGMENT
_amount$54359 = -52					; size = 4
_pos2$54363 = -48					; size = 12
_pos1$54361 = -36					; size = 12
$T58270 = -24						; size = 12
_Location$ = -24					; size = 12
$T58271 = -12						; size = 12
_Team$ = 8						; size = 4
_ConstructionYardID$ = 12				; size = 4
_Health$ = 16						; size = 4
_Radius$ = 20						; size = 4
?Repair_All_Buildings_By_Team_Radius@@YAXHHMM@Z PROC	; Repair_All_Buildings_By_Team_Radius, COMDAT

; 524  : {

	sub	esp, 52					; 00000034H

; 525  : 	Vector3 Location = Commands->Get_Position(Commands->Find_Object(ConstructionYardID));

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR _ConstructionYardID$[esp+48]
	mov	edx, DWORD PTR [eax+96]
	push	ebx
	push	ebp
	push	esi
	push	edi
	push	ecx
	lea	esi, DWORD PTR [eax+64]
	call	edx
	mov	ecx, DWORD PTR [esi]
	push	eax
	lea	eax, DWORD PTR $T58270[esp+76]
	push	eax
	call	ecx
	mov	ebx, DWORD PTR [eax]
	mov	ebp, DWORD PTR [eax+4]
	mov	edx, DWORD PTR [eax+8]

; 526  : 	GenericSLNode *x = BuildingGameObjList->HeadNode;

	mov	eax, DWORD PTR ?BuildingGameObjList@@3PAV?$SList@E@@A ; BuildingGameObjList
	mov	edi, DWORD PTR [eax+4]
	add	esp, 12					; 0000000cH

; 527  : 	while (x)

	test	edi, edi
	mov	DWORD PTR _Location$[esp+76], edx
	je	$LN5@Repair_All@3
$LL6@Repair_All@3:

; 528  : 	{
; 529  : 		GameObject *o = As_BuildingGameObj((GameObject *)x->NodeData);

	mov	ecx, DWORD PTR [edi+4]
	push	ecx
	call	?As_BuildingGameObj@@YAPAEPAE@Z		; As_BuildingGameObj
	mov	esi, eax
	add	esp, 4

; 530  : 		if (o)

	test	esi, esi
	je	$LN11@Repair_All@3

; 531  : 		{
; 532  : 			if ((Get_Object_Type(o) == Team) && (Commands->Get_ID(o) != ConstructionYardID))

	push	esi
	call	?Get_Object_Type@@YAHPAE@Z		; Get_Object_Type
	add	esp, 4
	cmp	eax, DWORD PTR _Team$[esp+64]
	jne	$LN11@Repair_All@3
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+108]
	push	esi
	call	eax
	add	esp, 4
	cmp	eax, DWORD PTR _ConstructionYardID$[esp+64]
	je	$LN11@Repair_All@3

; 533  : 			{
; 534  : 				float amount = Commands->Get_Health(o);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	edx, DWORD PTR [ecx+220]
	push	esi
	call	edx
	fst	DWORD PTR _amount$54359[esp+72]

; 535  : 				if (amount>0)

	fldz
	add	esp, 4
	fcompp
	fnstsw	ax
	test	ah, 5
	jp	SHORT $LN11@Repair_All@3

; 536  : 				{
; 537  : 					Vector3 pos1 = Commands->Get_Position(o);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	edx, DWORD PTR [ecx+64]
	lea	eax, DWORD PTR $T58271[esp+68]
	push	esi
	push	eax
	call	edx
	mov	ecx, DWORD PTR [eax]
	mov	DWORD PTR _pos1$54361[esp+76], ecx
	mov	edx, DWORD PTR [eax+4]

; 538  : 					Vector3 pos2 = Location;

	mov	ecx, DWORD PTR _Location$[esp+84]
	mov	DWORD PTR _pos1$54361[esp+80], edx
	mov	eax, DWORD PTR [eax+8]
	mov	DWORD PTR _pos1$54361[esp+84], eax
	mov	DWORD PTR _pos2$54363[esp+84], ecx

; 539  : 					float Distance = Commands->Get_Distance(pos1,pos2);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	lea	edx, DWORD PTR _pos2$54363[esp+76]
	push	edx
	lea	eax, DWORD PTR _pos1$54361[esp+80]
	mov	DWORD PTR _pos2$54363[esp+80], ebx
	mov	DWORD PTR _pos2$54363[esp+84], ebp
	mov	edx, DWORD PTR [ecx+256]
	push	eax
	call	edx

; 540  : 					if (Distance <= Radius)

	fcomp	DWORD PTR _Radius$[esp+80]
	add	esp, 16					; 00000010H
	fnstsw	ax
	test	ah, 65					; 00000041H
	jp	SHORT $LN11@Repair_All@3

; 541  : 					{
; 542  : 						Commands->Set_Health(o,(amount+Health));

	fld	DWORD PTR _amount$54359[esp+68]
	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	fadd	DWORD PTR _Health$[esp+64]
	push	ecx
	mov	ecx, DWORD PTR [eax+228]
	fstp	DWORD PTR [esp]
	push	esi
	call	ecx
	add	esp, 8
$LN11@Repair_All@3:

; 543  : 					}
; 544  : 				}
; 545  : 			}
; 546  : 		}
; 547  : 		x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	$LL6@Repair_All@3
$LN5@Repair_All@3:
	pop	edi
	pop	esi
	pop	ebp
	pop	ebx

; 548  : 	}
; 549  : }

	add	esp, 52					; 00000034H
	ret	0
?Repair_All_Buildings_By_Team_Radius@@YAXHHMM@Z ENDP	; Repair_All_Buildings_By_Team_Radius
_TEXT	ENDS
PUBLIC	?Repair_All_Turrets_By_Team@@YAXHM@Z		; Repair_All_Turrets_By_Team
EXTRN	?Get_Vehicle_Mode@@YAIPAE@Z:PROC		; Get_Vehicle_Mode
; Function compile flags: /Ogtpy
;	COMDAT ?Repair_All_Turrets_By_Team@@YAXHM@Z
_TEXT	SEGMENT
_team$ = 8						; size = 4
_health$ = 12						; size = 4
?Repair_All_Turrets_By_Team@@YAXHM@Z PROC		; Repair_All_Turrets_By_Team, COMDAT

; 553  : 	GenericSLNode *x = SmartGameObjList->HeadNode;

	mov	eax, DWORD PTR ?SmartGameObjList@@3PAV?$SList@E@@A ; SmartGameObjList
	push	edi
	mov	edi, DWORD PTR [eax+4]

; 554  : 	while (x)

	test	edi, edi
	je	$LN5@Repair_All@4
	push	ebx
	mov	ebx, DWORD PTR _team$[esp+4]
	push	esi
$LL6@Repair_All@4:

; 555  : 	{
; 556  : 		GameObject *o = As_VehicleGameObj((GameObject *)x->NodeData);

	mov	ecx, DWORD PTR [edi+4]
	push	ecx
	call	?As_VehicleGameObj@@YAPAEPAE@Z		; As_VehicleGameObj
	mov	esi, eax
	add	esp, 4

; 557  : 		if (o)

	test	esi, esi
	je	$LN1@Repair_All@4

; 558  : 		{
; 559  : 			if (Get_Object_Type(o) == team && (Get_Vehicle_Mode(o) == TURRET))

	push	esi
	call	?Get_Object_Type@@YAHPAE@Z		; Get_Object_Type
	add	esp, 4
	cmp	eax, ebx
	jne	$LN1@Repair_All@4
	push	esi
	call	?Get_Vehicle_Mode@@YAIPAE@Z		; Get_Vehicle_Mode
	add	esp, 4
	cmp	eax, 4
	jne	SHORT $LN1@Repair_All@4

; 560  : 			{
; 561  : 				float amount = Commands->Get_Health(o);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+220]
	push	esi
	call	eax

; 562  : 				if (amount>0)

	fldz
	fcomp	ST(1)
	add	esp, 4
	fnstsw	ax
	test	ah, 5
	jp	SHORT $LN12@Repair_All@4

; 563  : 				{
; 564  : 					Commands->Set_Health(o,(amount+health));

	fadd	DWORD PTR _health$[esp+8]
	push	ecx
	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	edx, DWORD PTR [ecx+228]
	fstp	DWORD PTR [esp]
	push	esi
	call	edx
	add	esp, 8
	jmp	SHORT $LN2@Repair_All@4
$LN12@Repair_All@4:
	fstp	ST(0)
$LN2@Repair_All@4:

; 565  : 				}
; 566  : 				amount = Commands->Get_Shield_Strength(o);

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+232]
	push	esi
	call	ecx

; 567  : 				if (amount>0)

	fldz
	fcomp	ST(1)
	add	esp, 4
	fnstsw	ax
	test	ah, 5
	jp	SHORT $LN15@Repair_All@4

; 568  : 				{
; 569  : 					Commands->Set_Shield_Strength(o,(amount+health));

	fadd	DWORD PTR _health$[esp+8]
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+240]
	push	ecx
	fstp	DWORD PTR [esp]
	push	esi
	call	eax
	add	esp, 8
	jmp	SHORT $LN1@Repair_All@4
$LN15@Repair_All@4:
	fstp	ST(0)
$LN1@Repair_All@4:

; 570  : 				}
; 571  : 			}
; 572  : 		}
; 573  : 		x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	$LL6@Repair_All@4
	pop	esi
	pop	ebx
$LN5@Repair_All@4:
	pop	edi

; 574  : 	}
; 575  : }

	ret	0
?Repair_All_Turrets_By_Team@@YAXHM@Z ENDP		; Repair_All_Turrets_By_Team
_TEXT	ENDS
PUBLIC	?Damage_All_Objects_In_Zone@@YAXPAEMPBD0@Z	; Damage_All_Objects_In_Zone
EXTRN	?IsInsideZone@@YA_NPAE0@Z:PROC			; IsInsideZone
; Function compile flags: /Ogtpy
;	COMDAT ?Damage_All_Objects_In_Zone@@YAXPAEMPBD0@Z
_TEXT	SEGMENT
_Zone$ = 8						; size = 4
_Damage$ = 12						; size = 4
_Warhead$ = 16						; size = 4
_Damager$ = 20						; size = 4
?Damage_All_Objects_In_Zone@@YAXPAEMPBD0@Z PROC		; Damage_All_Objects_In_Zone, COMDAT

; 579  : 	if (!Commands->Get_ID(Zone) || !Zone)

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+108]
	push	esi
	mov	esi, DWORD PTR _Zone$[esp]
	push	esi
	call	ecx
	add	esp, 4
	test	eax, eax
	je	SHORT $LN5@Damage_All@4
	test	esi, esi
	je	SHORT $LN5@Damage_All@4

; 580  : 	{
; 581  : 		return;
; 582  : 	}
; 583  : 	GenericSLNode *x = SmartGameObjList->HeadNode;

	mov	edx, DWORD PTR ?SmartGameObjList@@3PAV?$SList@E@@A ; SmartGameObjList
	push	edi
	mov	edi, DWORD PTR [edx+4]

; 584  : 	while (x)

	test	edi, edi
	je	SHORT $LN12@Damage_All@4
	push	ebx
	mov	ebx, DWORD PTR _Damager$[esp+8]
	push	ebp
	mov	ebp, DWORD PTR _Warhead$[esp+12]
$LL4@Damage_All@4:

; 585  : 	{
; 586  : 		GameObject *o = (GameObject *)x->NodeData;

	mov	esi, DWORD PTR [edi+4]

; 587  : 		if (o)

	test	esi, esi
	je	SHORT $LN11@Damage_All@4

; 588  : 		{
; 589  : 			if (IsInsideZone(Zone,o))

	mov	eax, DWORD PTR _Zone$[esp+12]
	push	esi
	push	eax
	call	?IsInsideZone@@YA_NPAE0@Z		; IsInsideZone
	add	esp, 8
	test	al, al
	je	SHORT $LN11@Damage_All@4

; 590  : 			{
; 591  : 				Commands->Apply_Damage(o,Damage,Warhead,Damager);

	fld	DWORD PTR _Damage$[esp+12]
	push	ebx
	push	ebp
	push	ecx
	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	fstp	DWORD PTR [esp]
	mov	edx, DWORD PTR [ecx+616]
	push	esi
	call	edx
	add	esp, 16					; 00000010H
$LN11@Damage_All@4:

; 592  : 			}
; 593  : 		}
; 594  : 		x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	SHORT $LL4@Damage_All@4
	pop	ebp
	pop	ebx
$LN12@Damage_All@4:
	pop	edi
$LN5@Damage_All@4:
	pop	esi

; 595  : 	}
; 596  : }

	ret	0
?Damage_All_Objects_In_Zone@@YAXPAEMPBD0@Z ENDP		; Damage_All_Objects_In_Zone
_TEXT	ENDS
PUBLIC	?Get_Damage_Points@@YAMPAE@Z			; Get_Damage_Points
EXTRN	?Get@FloatDataSafeClass@@QAEMXZ:PROC		; FloatDataSafeClass::Get
; Function compile flags: /Ogtpy
;	COMDAT ?Get_Damage_Points@@YAMPAE@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
?Get_Damage_Points@@YAMPAE@Z PROC			; Get_Damage_Points, COMDAT

; 600  : 	if (!Commands->Get_ID(obj) || !obj)

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+108]
	push	esi
	mov	esi, DWORD PTR _obj$[esp]
	push	esi
	call	ecx
	add	esp, 4
	test	eax, eax
	je	SHORT $LN2@Get_Damage
	test	esi, esi
	je	SHORT $LN2@Get_Damage

; 603  : 	}
; 604  : 	DamageableGameObj *o = ((ScriptableGameObj *)obj)->As_DamageableGameObj();

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+60]
	mov	ecx, esi
	call	eax

; 605  : 	if (!o)

	test	eax, eax

; 606  : 	{
; 607  : 		return 0;

	je	SHORT $LN2@Get_Damage

; 608  : 	}
; 609  : 	return o->Defense.DamagePoints.Get();

	lea	ecx, DWORD PTR [eax+1864]
	pop	esi
	jmp	?Get@FloatDataSafeClass@@QAEMXZ		; FloatDataSafeClass::Get
$LN2@Get_Damage:

; 601  : 	{
; 602  : 		return 0;

	fldz
	pop	esi

; 610  : }

	ret	0
?Get_Damage_Points@@YAMPAE@Z ENDP			; Get_Damage_Points
_TEXT	ENDS
PUBLIC	?Get_Death_Points@@YAMPAE@Z			; Get_Death_Points
; Function compile flags: /Ogtpy
;	COMDAT ?Get_Death_Points@@YAMPAE@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
?Get_Death_Points@@YAMPAE@Z PROC			; Get_Death_Points, COMDAT

; 614  : 	if (!Commands->Get_ID(obj) || !obj)

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+108]
	push	esi
	mov	esi, DWORD PTR _obj$[esp]
	push	esi
	call	ecx
	add	esp, 4
	test	eax, eax
	je	SHORT $LN2@Get_Death_
	test	esi, esi
	je	SHORT $LN2@Get_Death_

; 617  : 	}
; 618  : 	DamageableGameObj *o = ((ScriptableGameObj *)obj)->As_DamageableGameObj();

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+60]
	mov	ecx, esi
	call	eax

; 619  : 	if (!o)

	test	eax, eax

; 620  : 	{
; 621  : 		return 0;

	je	SHORT $LN2@Get_Death_

; 622  : 	}
; 623  : 	return o->Defense.DeathPoints.Get();

	lea	ecx, DWORD PTR [eax+1868]
	pop	esi
	jmp	?Get@FloatDataSafeClass@@QAEMXZ		; FloatDataSafeClass::Get
$LN2@Get_Death_:

; 615  : 	{
; 616  : 		return 0;

	fldz
	pop	esi

; 624  : }

	ret	0
?Get_Death_Points@@YAMPAE@Z ENDP			; Get_Death_Points
_TEXT	ENDS
PUBLIC	??_7?$VectorClass@PAE@@6B@			; VectorClass<unsigned char *>::`vftable'
PUBLIC	??0?$VectorClass@PAE@@QAE@ABV0@@Z		; VectorClass<unsigned char *>::VectorClass<unsigned char *>
PUBLIC	??_R4?$VectorClass@PAE@@6B@			; VectorClass<unsigned char *>::`RTTI Complete Object Locator'
PUBLIC	??_R0?AV?$VectorClass@PAE@@@8			; VectorClass<unsigned char *> `RTTI Type Descriptor'
PUBLIC	??_R3?$VectorClass@PAE@@8			; VectorClass<unsigned char *>::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2?$VectorClass@PAE@@8			; VectorClass<unsigned char *>::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@?$VectorClass@PAE@@8		; VectorClass<unsigned char *>::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??8?$VectorClass@PAE@@UAE_NAAV0@@Z		; VectorClass<unsigned char *>::operator==
PUBLIC	?Resize@?$VectorClass@PAE@@UAE_NHPAPAE@Z	; VectorClass<unsigned char *>::Resize
PUBLIC	?Clear@?$VectorClass@PAE@@UAEXXZ		; VectorClass<unsigned char *>::Clear
PUBLIC	?ID@?$VectorClass@PAE@@UAEHPAPAE@Z		; VectorClass<unsigned char *>::ID
PUBLIC	?ID@?$VectorClass@PAE@@UAEHAAPAE@Z		; VectorClass<unsigned char *>::ID
EXTRN	??_E?$VectorClass@PAE@@UAEPAXI@Z:PROC		; VectorClass<unsigned char *>::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@?$VectorClass@PAE@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@?$VectorClass@PAE@@8 DD FLAT:??_R0?AV?$VectorClass@PAE@@@8 ; VectorClass<unsigned char *>::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3?$VectorClass@PAE@@8
rdata$r	ENDS
;	COMDAT ??_R2?$VectorClass@PAE@@8
rdata$r	SEGMENT
??_R2?$VectorClass@PAE@@8 DD FLAT:??_R1A@?0A@EA@?$VectorClass@PAE@@8 ; VectorClass<unsigned char *>::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3?$VectorClass@PAE@@8
rdata$r	SEGMENT
??_R3?$VectorClass@PAE@@8 DD 00H			; VectorClass<unsigned char *>::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2?$VectorClass@PAE@@8
rdata$r	ENDS
;	COMDAT ??_R0?AV?$VectorClass@PAE@@@8
_DATA	SEGMENT
??_R0?AV?$VectorClass@PAE@@@8 DD FLAT:??_7type_info@@6B@ ; VectorClass<unsigned char *> `RTTI Type Descriptor'
	DD	00H
	DB	'.?AV?$VectorClass@PAE@@', 00H
_DATA	ENDS
;	COMDAT ??_R4?$VectorClass@PAE@@6B@
rdata$r	SEGMENT
??_R4?$VectorClass@PAE@@6B@ DD 00H			; VectorClass<unsigned char *>::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AV?$VectorClass@PAE@@@8
	DD	FLAT:??_R3?$VectorClass@PAE@@8
rdata$r	ENDS
;	COMDAT ??_7?$VectorClass@PAE@@6B@
CONST	SEGMENT
??_7?$VectorClass@PAE@@6B@ DD FLAT:??_R4?$VectorClass@PAE@@6B@ ; VectorClass<unsigned char *>::`vftable'
	DD	FLAT:??_E?$VectorClass@PAE@@UAEPAXI@Z
	DD	FLAT:??8?$VectorClass@PAE@@UAE_NAAV0@@Z
	DD	FLAT:?Resize@?$VectorClass@PAE@@UAE_NHPAPAE@Z
	DD	FLAT:?Clear@?$VectorClass@PAE@@UAEXXZ
	DD	FLAT:?ID@?$VectorClass@PAE@@UAEHPAPAE@Z
	DD	FLAT:?ID@?$VectorClass@PAE@@UAEHAAPAE@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0?$VectorClass@PAE@@QAE@ABV0@@Z
_TEXT	SEGMENT
___that$ = 8						; size = 4
??0?$VectorClass@PAE@@QAE@ABV0@@Z PROC			; VectorClass<unsigned char *>::VectorClass<unsigned char *>, COMDAT
; _this$ = ecx
	mov	eax, ecx
	mov	ecx, DWORD PTR ___that$[esp-4]
	mov	DWORD PTR [eax], OFFSET ??_7?$VectorClass@PAE@@6B@
	mov	edx, DWORD PTR [ecx+4]
	mov	DWORD PTR [eax+4], edx
	mov	edx, DWORD PTR [ecx+8]
	mov	DWORD PTR [eax+8], edx
	mov	dl, BYTE PTR [ecx+12]
	mov	BYTE PTR [eax+12], dl
	mov	cl, BYTE PTR [ecx+13]
	mov	BYTE PTR [eax+13], cl
	ret	4
??0?$VectorClass@PAE@@QAE@ABV0@@Z ENDP			; VectorClass<unsigned char *>::VectorClass<unsigned char *>
_TEXT	ENDS
PUBLIC	?Ranged_Variable_Percent_Vehicle_Damage@@YAXMM_NPBDUVector3@@MPAE@Z ; Ranged_Variable_Percent_Vehicle_Damage
; Function compile flags: /Ogtpy
;	COMDAT ?Ranged_Variable_Percent_Vehicle_Damage@@YAXMM_NPBDUVector3@@MPAE@Z
_TEXT	SEGMENT
_Max_Shield$54523 = -44					; size = 4
_Max_Health$54522 = -40					; size = 4
_pos2$54519 = -36					; size = 12
_pos1$54517 = -24					; size = 12
$T58310 = -12						; size = 12
_EnemyPercentage$ = 8					; size = 4
_FriendPercentage$ = 12					; size = 4
_ForceFriendly$ = 16					; size = 1
_Warhead$ = 20						; size = 4
_Location$ = 24						; size = 12
_DamageRadius$ = 36					; size = 4
_Damager$ = 40						; size = 4
?Ranged_Variable_Percent_Vehicle_Damage@@YAXMM_NPBDUVector3@@MPAE@Z PROC ; Ranged_Variable_Percent_Vehicle_Damage, COMDAT

; 664  : 	//This function will apply a different damage amount to friendly vehicles than it
; 665  : 	//does to all other vehicles. It can also force friendly fire
; 666  : 	if (DamageRadius > 0)

	fldz
	sub	esp, 44					; 0000002cH
	fcomp	DWORD PTR _DamageRadius$[esp+40]
	fnstsw	ax
	test	ah, 5
	jp	$LN9@Ranged_Var

; 667  : 	{
; 668  : 		GenericSLNode *x = BaseGameObjList->HeadNode;

	mov	eax, DWORD PTR ?BaseGameObjList@@3PAV?$SList@E@@A ; BaseGameObjList
	push	ebp
	mov	ebp, DWORD PTR [eax+4]

; 669  : 		while (x)

	test	ebp, ebp
	je	$LN17@Ranged_Var
	push	ebx
	push	esi
	push	edi
	mov	edi, DWORD PTR _Warhead$[esp+56]
	npad	4
$LL10@Ranged_Var:

; 670  : 		{
; 671  : 			GameObject *o = (GameObject *)x->NodeData;

	mov	esi, DWORD PTR [ebp+4]

; 672  : 			if (o && As_ScriptableGameObj(o))

	test	esi, esi
	je	$LN1@Ranged_Var
	push	esi
	call	?As_ScriptableGameObj@@YAPAEPAE@Z	; As_ScriptableGameObj
	add	esp, 4
	test	eax, eax
	je	$LN1@Ranged_Var

; 673  : 			{
; 674  : 				if (As_VehicleGameObj(o))

	push	esi
	call	?As_VehicleGameObj@@YAPAEPAE@Z		; As_VehicleGameObj
	add	esp, 4
	test	eax, eax
	je	$LN1@Ranged_Var

; 675  : 				{
; 676  : 					float health = Commands->Get_Health(o);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	edx, DWORD PTR [ecx+220]
	push	esi
	call	edx

; 677  : 					if (health > 0)

	fcomp	DWORD PTR __real@00000000
	add	esp, 4
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	$LN1@Ranged_Var

; 678  : 					{
; 679  : 						Vector3 pos1 = Commands->Get_Position(o);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	edx, DWORD PTR [ecx+64]
	lea	eax, DWORD PTR $T58310[esp+60]
	push	esi
	push	eax
	call	edx
	mov	ecx, DWORD PTR [eax]
	mov	DWORD PTR _pos1$54517[esp+68], ecx
	mov	edx, DWORD PTR [eax+4]

; 680  : 						Vector3 pos2 = Location;

	mov	ecx, DWORD PTR _Location$[esp+64]
	mov	DWORD PTR _pos1$54517[esp+72], edx
	mov	eax, DWORD PTR [eax+8]
	mov	edx, DWORD PTR _Location$[esp+68]
	mov	DWORD PTR _pos1$54517[esp+76], eax
	mov	eax, DWORD PTR _Location$[esp+72]
	mov	DWORD PTR _pos2$54519[esp+68], ecx
	mov	DWORD PTR _pos2$54519[esp+72], edx
	mov	DWORD PTR _pos2$54519[esp+76], eax

; 681  : 						float Distance = Commands->Get_Distance(pos1,pos2);

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	lea	ecx, DWORD PTR _pos2$54519[esp+68]
	push	ecx
	mov	ecx, DWORD PTR [eax+256]
	lea	edx, DWORD PTR _pos1$54517[esp+72]
	push	edx
	call	ecx

; 682  : 						if (Distance <= DamageRadius)

	fcomp	DWORD PTR _DamageRadius$[esp+72]
	add	esp, 16					; 00000010H
	fnstsw	ax
	test	ah, 65					; 00000041H
	jp	$LN1@Ranged_Var

; 683  : 						{
; 684  : 							float Max_Health = Commands->Get_Max_Health(o);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+224]
	push	esi
	call	eax
	fstp	DWORD PTR _Max_Health$54522[esp+64]

; 685  : 							float Max_Shield = Commands->Get_Max_Shield_Strength(o);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	edx, DWORD PTR [ecx+236]
	push	esi
	call	edx
	fstp	DWORD PTR _Max_Shield$54523[esp+68]

; 686  : 							if(Commands->Get_Player_Type(Damager) == Commands->Get_Player_Type(o)) 

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+248]
	push	esi
	call	ecx
	mov	edx, DWORD PTR _Damager$[esp+68]
	mov	ebx, eax
	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+248]
	push	edx
	call	ecx

; 687  : 							{
; 688  : 								float Damage = (Max_Health + Max_Shield) * FriendPercentage;

	fld	DWORD PTR _Max_Shield$54523[esp+76]

; 689  : 								if(ForceFriendly)
; 690  : 								{
; 691  : 									Commands->Apply_Damage(o,Damage,Warhead,0);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	fadd	DWORD PTR _Max_Health$54522[esp+76]
	add	esp, 16					; 00000010H
	cmp	eax, ebx
	mov	eax, DWORD PTR [edx+616]
	jne	SHORT $LN4@Ranged_Var
	cmp	BYTE PTR _ForceFriendly$[esp+56], 0
	fmul	DWORD PTR _FriendPercentage$[esp+56]
	je	SHORT $LN3@Ranged_Var
	push	0

; 692  : 								}
; 693  : 								else

	jmp	SHORT $LN22@Ranged_Var
$LN4@Ranged_Var:

; 694  : 								{
; 695  : 									Commands->Apply_Damage(o,Damage,Warhead,Damager);
; 696  : 								}
; 697  : 							}
; 698  : 							else
; 699  : 							{
; 700  : 								float Damage = (Max_Health + Max_Shield) * EnemyPercentage;

	fmul	DWORD PTR _EnemyPercentage$[esp+56]
$LN3@Ranged_Var:

; 701  : 								Commands->Apply_Damage(o,Damage,Warhead,Damager);

	mov	ecx, DWORD PTR _Damager$[esp+56]
	push	ecx
$LN22@Ranged_Var:
	push	edi
	push	ecx
	fstp	DWORD PTR [esp]
	push	esi
	call	eax
	add	esp, 16					; 00000010H
$LN1@Ranged_Var:

; 702  : 							}
; 703  : 						}
; 704  : 					}
; 705  : 				}
; 706  : 			}
; 707  : 			x = x->NodeNext;

	mov	ebp, DWORD PTR [ebp]
	test	ebp, ebp
	jne	$LL10@Ranged_Var
	pop	edi
	pop	esi
	pop	ebx
$LN17@Ranged_Var:
	pop	ebp
$LN9@Ranged_Var:

; 708  : 		}
; 709  : 	}
; 710  : }

	add	esp, 44					; 0000002cH
	ret	0
?Ranged_Variable_Percent_Vehicle_Damage@@YAXMM_NPBDUVector3@@MPAE@Z ENDP ; Ranged_Variable_Percent_Vehicle_Damage
_TEXT	ENDS
PUBLIC	__TI2?AVbad_alloc@std@@
PUBLIC	??_C@_0DN@JHKGIIJF@C?3?2Program?5Files?2Microsoft?5Visua@ ; `string'
PUBLIC	?allocate@?$_DebugHeapAllocator@D@std@@QAAPADIPBX@Z ; std::_DebugHeapAllocator<char>::allocate
PUBLIC	__CTA2?AVbad_alloc@std@@
PUBLIC	__CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QAE@ABV01@@Z12
PUBLIC	??0bad_alloc@std@@QAE@ABV01@@Z			; std::bad_alloc::bad_alloc
PUBLIC	__CT??_R0?AVexception@std@@@8??0exception@std@@QAE@ABV01@@Z12
EXTRN	??_U@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z:PROC	; operator new[]
EXTRN	?_DebugHeapTag_func@std@@YAABU_DebugHeapTag_t@1@XZ:PROC ; std::_DebugHeapTag_func
EXTRN	__CxxThrowException@8:PROC
EXTRN	??0exception@std@@QAE@ABV01@@Z:PROC		; std::exception::exception
;	COMDAT __CT??_R0?AVexception@std@@@8??0exception@std@@QAE@ABV01@@Z12
; File c:\program files\microsoft visual studio 8\vc\include\exception
xdata$x	SEGMENT
__CT??_R0?AVexception@std@@@8??0exception@std@@QAE@ABV01@@Z12 DD 00H
	DD	FLAT:??_R0?AVexception@std@@@8
	DD	00H
	DD	0ffffffffH
	ORG $+4
	DD	0cH
	DD	FLAT:??0exception@std@@QAE@ABV01@@Z
xdata$x	ENDS
;	COMDAT __CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QAE@ABV01@@Z12
xdata$x	SEGMENT
__CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QAE@ABV01@@Z12 DD 00H
	DD	FLAT:??_R0?AVbad_alloc@std@@@8
	DD	00H
	DD	0ffffffffH
	ORG $+4
	DD	0cH
	DD	FLAT:??0bad_alloc@std@@QAE@ABV01@@Z
xdata$x	ENDS
;	COMDAT __CTA2?AVbad_alloc@std@@
xdata$x	SEGMENT
__CTA2?AVbad_alloc@std@@ DD 02H
	DD	FLAT:__CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QAE@ABV01@@Z12
	DD	FLAT:__CT??_R0?AVexception@std@@@8??0exception@std@@QAE@ABV01@@Z12
xdata$x	ENDS
;	COMDAT __TI2?AVbad_alloc@std@@
xdata$x	SEGMENT
__TI2?AVbad_alloc@std@@ DD 00H
	DD	FLAT:??1bad_alloc@std@@UAE@XZ
	DD	00H
	DD	FLAT:__CTA2?AVbad_alloc@std@@
xdata$x	ENDS
;	COMDAT ??_C@_0DN@JHKGIIJF@C?3?2Program?5Files?2Microsoft?5Visua@
CONST	SEGMENT
??_C@_0DN@JHKGIIJF@C?3?2Program?5Files?2Microsoft?5Visua@ DB 'C:\Program '
	DB	'Files\Microsoft Visual Studio 8\VC\include\xdebug', 00H ; `string'
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\xdebug
CONST	ENDS
;	COMDAT ?allocate@?$_DebugHeapAllocator@D@std@@QAAPADIPBX@Z
_TEXT	SEGMENT
$T58323 = -12						; size = 12
_this$ = 8						; size = 4
$T58329 = 12						; size = 4
__Count$ = 12						; size = 4
___formal$ = 16						; size = 4
?allocate@?$_DebugHeapAllocator@D@std@@QAAPADIPBX@Z PROC ; std::_DebugHeapAllocator<char>::allocate, COMDAT

; 79   : 		{	// check for integer overflow

	sub	esp, 12					; 0000000cH
	push	esi

; 80   : 		if (_Count <= 0)

	mov	esi, DWORD PTR __Count$[esp+12]
	test	esi, esi
	ja	SHORT $LN3@allocate

; 81   : 			_Count = 0;

	xor	esi, esi
$LN1@allocate:

; 84   : 
; 85   : 			// allocate array of _Count elements, ignore hint
; 86   : 		return ((_Ty *)_NEW_CRT char[_Count * sizeof(_Ty)]);

	push	86					; 00000056H
	push	OFFSET ??_C@_0DN@JHKGIIJF@C?3?2Program?5Files?2Microsoft?5Visua@
	call	?_DebugHeapTag_func@std@@YAABU_DebugHeapTag_t@1@XZ ; std::_DebugHeapTag_func
	push	eax
	push	esi
	call	??_U@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z ; operator new[]
	add	esp, 16					; 00000010H
	pop	esi

; 87   : 		}

	add	esp, 12					; 0000000cH
	ret	0
$LN3@allocate:

; 82   : 		else if (((size_t)(-1) / _Count) < sizeof(_Ty))

	or	eax, -1
	xor	edx, edx
	div	esi
	cmp	eax, 1
	jae	SHORT $LN1@allocate

; 83   : 			_THROW_NCEE(std::bad_alloc, NULL);

	lea	eax, DWORD PTR $T58329[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T58323[esp+20]
	mov	DWORD PTR $T58329[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T58323[esp+20]
	push	ecx
	mov	DWORD PTR $T58323[esp+24], OFFSET ??_7bad_alloc@std@@6B@
	call	__CxxThrowException@8
$LN9@allocate:
$LN8@allocate:
	int	3
?allocate@?$_DebugHeapAllocator@D@std@@QAAPADIPBX@Z ENDP ; std::_DebugHeapAllocator<char>::allocate
_TEXT	ENDS
PUBLIC	?allocate@?$_DebugHeapAllocator@D@std@@QAEPADI@Z ; std::_DebugHeapAllocator<char>::allocate
; Function compile flags: /Ogtpy
;	COMDAT ?allocate@?$_DebugHeapAllocator@D@std@@QAEPADI@Z
_TEXT	SEGMENT
$T58335 = -12						; size = 12
$T58340 = 8						; size = 4
__Count$ = 8						; size = 4
?allocate@?$_DebugHeapAllocator@D@std@@QAEPADI@Z PROC	; std::_DebugHeapAllocator<char>::allocate, COMDAT
; _this$ = ecx

; 90   : 		{	// check for integer overflow

	sub	esp, 12					; 0000000cH
	push	esi

; 91   : 		if (_Count <= 0)

	mov	esi, DWORD PTR __Count$[esp+12]
	test	esi, esi
	ja	SHORT $LN3@allocate@2

; 92   : 			_Count = 0;

	xor	esi, esi
$LN1@allocate@2:

; 95   : 
; 96   : 			// allocate array of _Count elements
; 97   : 		return ((_Ty *)_NEW_CRT char[_Count * sizeof(_Ty)]);

	push	97					; 00000061H
	push	OFFSET ??_C@_0DN@JHKGIIJF@C?3?2Program?5Files?2Microsoft?5Visua@
	call	?_DebugHeapTag_func@std@@YAABU_DebugHeapTag_t@1@XZ ; std::_DebugHeapTag_func
	push	eax
	push	esi
	call	??_U@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z ; operator new[]
	add	esp, 16					; 00000010H
	pop	esi

; 98   : 		}

	add	esp, 12					; 0000000cH
	ret	4
$LN3@allocate@2:

; 93   : 		else if (((size_t)(-1) / _Count) < sizeof(_Ty))

	or	eax, -1
	xor	edx, edx
	div	esi
	cmp	eax, 1
	jae	SHORT $LN1@allocate@2

; 94   : 			_THROW_NCEE(std::bad_alloc, NULL);

	lea	eax, DWORD PTR $T58340[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T58335[esp+20]
	mov	DWORD PTR $T58340[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T58335[esp+20]
	push	ecx
	mov	DWORD PTR $T58335[esp+24], OFFSET ??_7bad_alloc@std@@6B@
	call	__CxxThrowException@8
$LN9@allocate@2:
$LN8@allocate@2:
	int	3
?allocate@?$_DebugHeapAllocator@D@std@@QAEPADI@Z ENDP	; std::_DebugHeapAllocator<char>::allocate
_TEXT	ENDS
PUBLIC	??1?$VectorClass@PAE@@UAE@XZ			; VectorClass<unsigned char *>::~VectorClass<unsigned char *>
; Function compile flags: /Ogtpy
; File d:\source code\stgm\engine_vector.h
;	COMDAT ??1?$VectorClass@PAE@@UAE@XZ
_TEXT	SEGMENT
??1?$VectorClass@PAE@@UAE@XZ PROC			; VectorClass<unsigned char *>::~VectorClass<unsigned char *>, COMDAT
; _this$ = ecx

; 26   : 	{

	mov	DWORD PTR [ecx], OFFSET ??_7?$VectorClass@PAE@@6B@

; 27   : 	}

	ret	0
??1?$VectorClass@PAE@@UAE@XZ ENDP			; VectorClass<unsigned char *>::~VectorClass<unsigned char *>
_TEXT	ENDS
PUBLIC	?Length@?$VectorClass@PAE@@QAEHXZ		; VectorClass<unsigned char *>::Length
; Function compile flags: /Ogtpy
;	COMDAT ?Length@?$VectorClass@PAE@@QAEHXZ
_TEXT	SEGMENT
?Length@?$VectorClass@PAE@@QAEHXZ PROC			; VectorClass<unsigned char *>::Length, COMDAT
; _this$ = ecx

; 30   : 		return VectorMax;

	mov	eax, DWORD PTR [ecx+8]

; 31   : 	}

	ret	0
?Length@?$VectorClass@PAE@@QAEHXZ ENDP			; VectorClass<unsigned char *>::Length
_TEXT	ENDS
PUBLIC	??A?$VectorClass@PAE@@QAEAAPAEH@Z		; VectorClass<unsigned char *>::operator[]
; Function compile flags: /Ogtpy
;	COMDAT ??A?$VectorClass@PAE@@QAEAAPAEH@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
??A?$VectorClass@PAE@@QAEAAPAEH@Z PROC			; VectorClass<unsigned char *>::operator[], COMDAT
; _this$ = ecx

; 34   : 		return Vector[index];

	mov	eax, DWORD PTR [ecx+4]
	mov	ecx, DWORD PTR _index$[esp-4]
	lea	eax, DWORD PTR [eax+ecx*4]

; 35   : 	}

	ret	4
??A?$VectorClass@PAE@@QAEAAPAEH@Z ENDP			; VectorClass<unsigned char *>::operator[]
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??8?$VectorClass@PAE@@UAE_NAAV0@@Z
_TEXT	SEGMENT
_vector$ = 8						; size = 4
??8?$VectorClass@PAE@@UAE_NAAV0@@Z PROC			; VectorClass<unsigned char *>::operator==, COMDAT
; _this$ = ecx

; 38   : 		return false;

	xor	al, al

; 39   : 	}

	ret	4
??8?$VectorClass@PAE@@UAE_NAAV0@@Z ENDP			; VectorClass<unsigned char *>::operator==
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Resize@?$VectorClass@PAE@@UAE_NHPAPAE@Z
_TEXT	SEGMENT
_newsize$ = 8						; size = 4
_array$ = 12						; size = 4
?Resize@?$VectorClass@PAE@@UAE_NHPAPAE@Z PROC		; VectorClass<unsigned char *>::Resize, COMDAT
; _this$ = ecx

; 42   : 		return false;

	xor	al, al

; 43   : 	}

	ret	8
?Resize@?$VectorClass@PAE@@UAE_NHPAPAE@Z ENDP		; VectorClass<unsigned char *>::Resize
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Clear@?$VectorClass@PAE@@UAEXXZ
_TEXT	SEGMENT
?Clear@?$VectorClass@PAE@@UAEXXZ PROC			; VectorClass<unsigned char *>::Clear, COMDAT
; _this$ = ecx

; 46   : 	}

	ret	0
?Clear@?$VectorClass@PAE@@UAEXXZ ENDP			; VectorClass<unsigned char *>::Clear
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?ID@?$VectorClass@PAE@@UAEHAAPAE@Z
_TEXT	SEGMENT
_object$ = 8						; size = 4
?ID@?$VectorClass@PAE@@UAEHAAPAE@Z PROC			; VectorClass<unsigned char *>::ID, COMDAT
; _this$ = ecx

; 49   : 		return 0;

	xor	eax, eax

; 50   : 	}

	ret	4
?ID@?$VectorClass@PAE@@UAEHAAPAE@Z ENDP			; VectorClass<unsigned char *>::ID
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?ID@?$VectorClass@PAE@@UAEHPAPAE@Z
_TEXT	SEGMENT
_ptr$ = 8						; size = 4
?ID@?$VectorClass@PAE@@UAEHPAPAE@Z PROC			; VectorClass<unsigned char *>::ID, COMDAT
; _this$ = ecx

; 53   : 		return 0;

	xor	eax, eax

; 54   : 	}

	ret	4
?ID@?$VectorClass@PAE@@UAEHPAPAE@Z ENDP			; VectorClass<unsigned char *>::ID
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??0bad_alloc@std@@QAE@ABV01@@Z
_TEXT	SEGMENT
___that$ = 8						; size = 4
??0bad_alloc@std@@QAE@ABV01@@Z PROC			; std::bad_alloc::bad_alloc, COMDAT
; _this$ = ecx
	mov	eax, DWORD PTR ___that$[esp-4]
	push	esi
	push	eax
	mov	esi, ecx
	call	??0exception@std@@QAE@ABV01@@Z		; std::exception::exception
	mov	DWORD PTR [esi], OFFSET ??_7bad_alloc@std@@6B@
	mov	eax, esi
	pop	esi
	ret	4
??0bad_alloc@std@@QAE@ABV01@@Z ENDP			; std::bad_alloc::bad_alloc
_TEXT	ENDS
PUBLIC	??0?$allocator@D@std@@QAE@XZ			; std::allocator<char>::allocator<char>
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\xmemory
;	COMDAT ??0?$allocator@D@std@@QAE@XZ
_TEXT	SEGMENT
??0?$allocator@D@std@@QAE@XZ PROC			; std::allocator<char>::allocator<char>, COMDAT
; _this$ = ecx

; 120  : 	allocator() _THROW0()

	mov	eax, ecx

; 121  : 		{	// construct default allocator (do nothing)
; 122  : 		}

	ret	0
??0?$allocator@D@std@@QAE@XZ ENDP			; std::allocator<char>::allocator<char>
_TEXT	ENDS
PUBLIC	??0?$allocator@D@std@@QAE@ABV01@@Z		; std::allocator<char>::allocator<char>
; Function compile flags: /Ogtpy
;	COMDAT ??0?$allocator@D@std@@QAE@ABV01@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
??0?$allocator@D@std@@QAE@ABV01@@Z PROC			; std::allocator<char>::allocator<char>, COMDAT
; _this$ = ecx

; 124  : 	allocator(const allocator<_Ty>&) _THROW0()

	mov	eax, ecx

; 125  : 		{	// construct by copying (do nothing)
; 126  : 		}

	ret	4
??0?$allocator@D@std@@QAE@ABV01@@Z ENDP			; std::allocator<char>::allocator<char>
_TEXT	ENDS
PUBLIC	??$_DebugHeapDelete@X@std@@YAXPAX@Z		; std::_DebugHeapDelete<void>
EXTRN	_free:PROC
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\xdebug
;	COMDAT ??$_DebugHeapDelete@X@std@@YAXPAX@Z
_TEXT	SEGMENT
__Ptr$ = 8						; size = 4
??$_DebugHeapDelete@X@std@@YAXPAX@Z PROC		; std::_DebugHeapDelete<void>, COMDAT

; 56   : 	if (_Ptr != 0)

	mov	eax, DWORD PTR __Ptr$[esp-4]
	test	eax, eax
	je	SHORT $LN1@DebugHeapD

; 57   : 		{	// worth deleting
; 58   : 		_Ptr->~_Ty();
; 59   : 		// delete as _NORMAL_BLOCK, not _CRT_BLOCK, since we might have
; 60   : 		// facets allocated by normal new.
; 61   : 		free(_Ptr);

	mov	DWORD PTR __Ptr$[esp-4], eax
	jmp	_free
$LN1@DebugHeapD:

; 62   : 		}
; 63   : 	}

	ret	0
??$_DebugHeapDelete@X@std@@YAXPAX@Z ENDP		; std::_DebugHeapDelete<void>
_TEXT	ENDS
PUBLIC	?Damage_Occupants@@YAXPAEMPBD@Z			; Damage_Occupants
EXTRN	___CxxFrameHandler3:PROC
;	COMDAT xdata$x
; File d:\source code\stgm\engine_vector.h
xdata$x	SEGMENT
__unwindtable$?Damage_Occupants@@YAXPAEMPBD@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Damage_Occupants@@YAXPAEMPBD@Z$0
__ehfuncinfo$?Damage_Occupants@@YAXPAEMPBD@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Damage_Occupants@@YAXPAEMPBD@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\stgm\engine_dmg.cpp
xdata$x	ENDS
;	COMDAT ?Damage_Occupants@@YAXPAEMPBD@Z
_TEXT	SEGMENT
_occupants$ = -28					; size = 16
__$EHRec$ = -12						; size = 12
_obj$ = 8						; size = 4
_Damage$ = 12						; size = 4
_Warhead$ = 16						; size = 4
?Damage_Occupants@@YAXPAEMPBD@Z PROC			; Damage_Occupants, COMDAT

; 627  : {

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Damage_Occupants@@YAXPAEMPBD@Z
	push	eax
	mov	DWORD PTR fs:0, esp

; 628  : 	if (!Commands->Get_ID(obj) || !obj || !As_VehicleGameObj(obj))

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+108]
	sub	esp, 16					; 00000010H
	push	esi
	mov	esi, DWORD PTR _obj$[esp+28]
	push	esi
	call	ecx
	add	esp, 4
	test	eax, eax
	je	$LN2@Damage_Occ
	test	esi, esi
	je	$LN2@Damage_Occ
	push	esi
	call	?As_VehicleGameObj@@YAPAEPAE@Z		; As_VehicleGameObj
	add	esp, 4
	test	eax, eax
	je	SHORT $LN2@Damage_Occ

; 629  : 	{
; 630  : 		return;
; 631  : 	}
; 632  : 	VectorClass<GameObject *> *ptr = (VectorClass<GameObject *>*)(obj+0x9AC);
; 633  : 	VectorClass<GameObject *> occupants = (VectorClass<GameObject *>)*ptr;

	mov	dl, BYTE PTR [esi+2488]
	mov	al, BYTE PTR [esi+2489]
	push	ebx
	mov	ebx, DWORD PTR [esi+2484]
	push	edi
	mov	edi, DWORD PTR [esi+2480]
	mov	DWORD PTR _occupants$[esp+40], OFFSET ??_7?$VectorClass@PAE@@6B@
	mov	DWORD PTR _occupants$[esp+44], edi
	mov	DWORD PTR _occupants$[esp+48], ebx
	mov	BYTE PTR _occupants$[esp+52], dl
	mov	BYTE PTR _occupants$[esp+53], al

; 634  : 	int x = occupants.Length();
; 635  : 	for (int i = 0;i < x;i++)

	xor	esi, esi
	test	ebx, ebx
	mov	DWORD PTR __$EHRec$[esp+48], 0
	jle	SHORT $LN23@Damage_Occ
	push	ebp
	mov	ebp, DWORD PTR _Warhead$[esp+40]
	npad	3
$LL4@Damage_Occ:

; 636  : 	{
; 637  : 		if (occupants[i])

	cmp	DWORD PTR [edi+esi*4], 0
	je	SHORT $LN3@Damage_Occ

; 638  : 		{
; 639  : 			Commands->Apply_Damage(occupants[i],Damage,Warhead,0);

	fld	DWORD PTR _Damage$[esp+40]
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+616]
	push	0
	push	ebp
	push	ecx
	mov	ecx, DWORD PTR [edi+esi*4]
	fstp	DWORD PTR [esp]
	push	ecx
	call	eax
	add	esp, 16					; 00000010H
$LN3@Damage_Occ:
	add	esi, 1
	cmp	esi, ebx
	jl	SHORT $LL4@Damage_Occ
	pop	ebp
$LN23@Damage_Occ:
	pop	edi
	pop	ebx
$LN2@Damage_Occ:

; 640  : 		}
; 641  : 	}
; 642  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+32]
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 28					; 0000001cH
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Damage_Occupants@@YAXPAEMPBD@Z$0:
	lea	ecx, DWORD PTR _occupants$[ebp]
	jmp	??1?$VectorClass@PAE@@UAE@XZ		; VectorClass<unsigned char *>::~VectorClass<unsigned char *>
__ehhandler$?Damage_Occupants@@YAXPAEMPBD@Z:
	mov	eax, OFFSET __ehfuncinfo$?Damage_Occupants@@YAXPAEMPBD@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Damage_Occupants@@YAXPAEMPBD@Z ENDP			; Damage_Occupants
; Function compile flags: /Ogtpy
;	COMDAT ??_G?$VectorClass@PAE@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_G?$VectorClass@PAE@@UAEPAXI@Z PROC			; VectorClass<unsigned char *>::`scalar deleting destructor', COMDAT
; _this$ = ecx
	test	BYTE PTR ___flags$[esp-4], 1
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi], OFFSET ??_7?$VectorClass@PAE@@6B@
	je	SHORT $LN6@scalar@2
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN6@scalar@2:
	mov	eax, esi
	pop	esi
	ret	4
??_G?$VectorClass@PAE@@UAEPAXI@Z ENDP			; VectorClass<unsigned char *>::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??_C@_05PGGAFPFO@Death?$AA@			; `string'
PUBLIC	__real@42c80000
PUBLIC	?Kill_Occupants@@YAXPAE@Z			; Kill_Occupants
;	COMDAT ??_C@_05PGGAFPFO@Death?$AA@
; File d:\source code\stgm\engine_vector.h
CONST	SEGMENT
??_C@_05PGGAFPFO@Death?$AA@ DB 'Death', 00H		; `string'
CONST	ENDS
;	COMDAT __real@42c80000
CONST	SEGMENT
__real@42c80000 DD 042c80000r			; 100
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Kill_Occupants@@YAXPAE@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Kill_Occupants@@YAXPAE@Z$0
__ehfuncinfo$?Kill_Occupants@@YAXPAE@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Kill_Occupants@@YAXPAE@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\stgm\engine_dmg.cpp
xdata$x	ENDS
;	COMDAT ?Kill_Occupants@@YAXPAE@Z
_TEXT	SEGMENT
_occupants$ = -28					; size = 16
__$EHRec$ = -12						; size = 12
_obj$ = 8						; size = 4
?Kill_Occupants@@YAXPAE@Z PROC				; Kill_Occupants, COMDAT

; 645  : {

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Kill_Occupants@@YAXPAE@Z
	push	eax
	mov	DWORD PTR fs:0, esp

; 646  : 	if (!Commands->Get_ID(obj) || !obj || !As_VehicleGameObj(obj))

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+108]
	sub	esp, 16					; 00000010H
	push	esi
	mov	esi, DWORD PTR _obj$[esp+28]
	push	esi
	call	ecx
	add	esp, 4
	test	eax, eax
	je	$LN2@Kill_Occup
	test	esi, esi
	je	$LN2@Kill_Occup
	push	esi
	call	?As_VehicleGameObj@@YAPAEPAE@Z		; As_VehicleGameObj
	add	esp, 4
	test	eax, eax
	je	SHORT $LN2@Kill_Occup

; 647  : 	{
; 648  : 		return;
; 649  : 	}
; 650  : 	VectorClass<GameObject *> *ptr = (VectorClass<GameObject *>*)(obj+0x9AC);
; 651  : 	VectorClass<GameObject *> occupants = (VectorClass<GameObject *>)*ptr;

	mov	dl, BYTE PTR [esi+2488]
	mov	al, BYTE PTR [esi+2489]
	push	ebx
	mov	ebx, DWORD PTR [esi+2484]
	push	edi
	mov	edi, DWORD PTR [esi+2480]
	mov	DWORD PTR _occupants$[esp+40], OFFSET ??_7?$VectorClass@PAE@@6B@
	mov	DWORD PTR _occupants$[esp+44], edi
	mov	DWORD PTR _occupants$[esp+48], ebx
	mov	BYTE PTR _occupants$[esp+52], dl
	mov	BYTE PTR _occupants$[esp+53], al

; 652  : 	int x = occupants.Length();
; 653  : 	for (int i = 0;i < x;i++)

	xor	esi, esi
	test	ebx, ebx
	mov	DWORD PTR __$EHRec$[esp+48], 0
	jle	SHORT $LN23@Kill_Occup
$LL4@Kill_Occup:

; 654  : 	{
; 655  : 		if (occupants[i])

	cmp	DWORD PTR [edi+esi*4], 0
	je	SHORT $LN3@Kill_Occup

; 656  : 		{
; 657  : 			Commands->Apply_Damage(occupants[i],100,"Death",0);

	fld	DWORD PTR __real@42c80000
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+616]
	push	0
	push	OFFSET ??_C@_05PGGAFPFO@Death?$AA@
	push	ecx
	mov	ecx, DWORD PTR [edi+esi*4]
	fstp	DWORD PTR [esp]
	push	ecx
	call	eax
	add	esp, 16					; 00000010H
$LN3@Kill_Occup:
	add	esi, 1
	cmp	esi, ebx
	jl	SHORT $LL4@Kill_Occup
$LN23@Kill_Occup:
	pop	edi
	pop	ebx
$LN2@Kill_Occup:

; 658  : 		}
; 659  : 	}
; 660  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+32]
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 28					; 0000001cH
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Kill_Occupants@@YAXPAE@Z$0:
	lea	ecx, DWORD PTR _occupants$[ebp]
	jmp	??1?$VectorClass@PAE@@UAE@XZ		; VectorClass<unsigned char *>::~VectorClass<unsigned char *>
__ehhandler$?Kill_Occupants@@YAXPAE@Z:
	mov	eax, OFFSET __ehfuncinfo$?Kill_Occupants@@YAXPAE@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Kill_Occupants@@YAXPAE@Z ENDP				; Kill_Occupants
PUBLIC	?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z ; std::_DebugHeapAllocator<char>::deallocate
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\xdebug
;	COMDAT ?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z
_TEXT	SEGMENT
__Ptr$ = 8						; size = 4
___formal$ = 12						; size = 4
?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z PROC ; std::_DebugHeapAllocator<char>::deallocate, COMDAT
; _this$ = ecx

; 102  : 		_DELETE_CRT_VEC(_Ptr);

	mov	eax, DWORD PTR __Ptr$[esp-4]
	test	eax, eax
	je	SHORT $LN3@deallocate
	push	eax
	call	_free
	pop	ecx
$LN3@deallocate:

; 103  : 		}

	ret	8
?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z ENDP ; std::_DebugHeapAllocator<char>::deallocate
_TEXT	ENDS
PUBLIC	??0?$_DebugHeapAllocator@D@std@@QAE@XZ		; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
; Function compile flags: /Ogtpy
;	COMDAT ??0?$_DebugHeapAllocator@D@std@@QAE@XZ
_TEXT	SEGMENT
??0?$_DebugHeapAllocator@D@std@@QAE@XZ PROC		; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>, COMDAT
; _this$ = ecx
	mov	eax, ecx
	ret	0
??0?$_DebugHeapAllocator@D@std@@QAE@XZ ENDP		; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
_TEXT	ENDS
PUBLIC	??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z	; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
; Function compile flags: /Ogtpy
;	COMDAT ??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z
_TEXT	SEGMENT
___that$ = 8						; size = 4
??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z PROC	; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>, COMDAT
; _this$ = ecx
	mov	eax, ecx
	ret	4
??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z ENDP	; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
_TEXT	ENDS
END
