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

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

INCLUDELIB LIBCMTD
INCLUDELIB OLDNAMES

PUBLIC	??_C@_0P@GHFPNOJB@bad?5allocation?$AA@		; `string'
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
;	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	?Attach_Script_Preset@@YAXPBD00H@Z		; Attach_Script_Preset
EXTRN	?Commands@@3PAUScriptCommands@@A:DWORD		; Commands
EXTRN	?Get_Object_Type@@YAHPAE@Z:PROC			; Get_Object_Type
EXTRN	__stricmp:PROC
EXTRN	?Get_Definition@@YAPAVDefinitionClass@@PAE@Z:PROC ; Get_Definition
EXTRN	?As_ScriptableGameObj@@YAPAEPAE@Z:PROC		; As_ScriptableGameObj
EXTRN	?BaseGameObjList@@3PAV?$SList@E@@A:DWORD	; BaseGameObjList
; Function compile flags: /Ogtpy
; File d:\source code\stgm\engine_script.cpp
;	COMDAT ?Attach_Script_Preset@@YAXPBD00H@Z
_TEXT	SEGMENT
_script$ = 8						; size = 4
_params$ = 12						; size = 4
_preset$ = 16						; size = 4
_team$ = 20						; size = 4
?Attach_Script_Preset@@YAXPBD00H@Z PROC			; Attach_Script_Preset, COMDAT

; 126  : 	GenericSLNode *x = BaseGameObjList->HeadNode;

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

; 127  : 	while (x)

	test	edi, edi
	je	SHORT $LN5@Attach_Scr
	push	ebx
	mov	ebx, DWORD PTR _team$[esp+4]
	push	ebp
	mov	ebp, DWORD PTR _preset$[esp+8]
	push	esi
$LL6@Attach_Scr:

; 128  : 	{
; 129  : 		GameObject *o = (GameObject *)x->NodeData;

	mov	esi, DWORD PTR [edi+4]

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

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

; 131  : 		{
; 132  : 			DefinitionClass *d = Get_Definition(o);

	push	esi
	call	?Get_Definition@@YAPAVDefinitionClass@@PAE@Z ; Get_Definition

; 133  : 			if (!_stricmp(d->Get_Name(),preset))

	mov	edx, DWORD PTR [eax]
	add	esp, 4
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+48]
	push	ebp
	call	eax
	push	eax
	call	__stricmp
	add	esp, 8
	test	eax, eax
	jne	SHORT $LN11@Attach_Scr

; 134  : 			{
; 135  : 				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@Attach_Scr
	cmp	ebx, 2
	jne	SHORT $LN11@Attach_Scr
$LN1@Attach_Scr:

; 136  : 				{
; 137  : 					Commands->Attach_Script(o,script,params);

	mov	ecx, DWORD PTR _params$[esp+12]
	mov	edx, DWORD PTR _script$[esp+12]
	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	push	ecx
	mov	ecx, DWORD PTR [eax+120]
	push	edx
	push	esi
	call	ecx
	add	esp, 12					; 0000000cH
$LN11@Attach_Scr:

; 138  : 				}
; 139  : 			}
; 140  : 		}
; 141  : 		x = x->NodeNext;

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

; 142  : 	}
; 143  : }

	ret	0
?Attach_Script_Preset@@YAXPBD00H@Z ENDP			; Attach_Script_Preset
_TEXT	ENDS
PUBLIC	?Attach_Script_Type@@YAXPBD0KH@Z		; Attach_Script_Type
; Function compile flags: /Ogtpy
;	COMDAT ?Attach_Script_Type@@YAXPBD0KH@Z
_TEXT	SEGMENT
_script$ = 8						; size = 4
_params$ = 12						; size = 4
_type$ = 16						; size = 4
_team$ = 20						; size = 4
?Attach_Script_Type@@YAXPBD0KH@Z PROC			; Attach_Script_Type, COMDAT

; 147  : 	GenericSLNode *x = BaseGameObjList->HeadNode;

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

; 148  : 	while (x)

	test	edi, edi
	je	SHORT $LN5@Attach_Scr@2
	push	ebx
	mov	ebx, DWORD PTR _team$[esp+4]
	push	ebp
	mov	ebp, DWORD PTR _type$[esp+8]
	push	esi
$LL6@Attach_Scr@2:

; 149  : 	{
; 150  : 		GameObject *o = (GameObject *)x->NodeData;

	mov	esi, DWORD PTR [edi+4]

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

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

; 152  : 		{
; 153  : 			DefinitionClass *d = Get_Definition(o);

	push	esi
	call	?Get_Definition@@YAPAVDefinitionClass@@PAE@Z ; Get_Definition

; 154  : 			if (d->Get_Class_ID() == type)

	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+32]
	add	esp, 4
	call	eax
	cmp	eax, ebp
	jne	SHORT $LN11@Attach_Scr@2

; 155  : 			{
; 156  : 				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@Attach_Scr@2
	cmp	ebx, 2
	jne	SHORT $LN11@Attach_Scr@2
$LN1@Attach_Scr@2:

; 157  : 				{
; 158  : 					Commands->Attach_Script(o,script,params);

	mov	ecx, DWORD PTR _params$[esp+12]
	mov	edx, DWORD PTR _script$[esp+12]
	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	push	ecx
	mov	ecx, DWORD PTR [eax+120]
	push	edx
	push	esi
	call	ecx
	add	esp, 12					; 0000000cH
$LN11@Attach_Scr@2:

; 159  : 				}
; 160  : 			}
; 161  : 		}
; 162  : 		x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	SHORT $LL6@Attach_Scr@2
	pop	esi
	pop	ebp
	pop	ebx
$LN5@Attach_Scr@2:
	pop	edi

; 163  : 	}
; 164  : }

	ret	0
?Attach_Script_Type@@YAXPBD0KH@Z ENDP			; Attach_Script_Type
_TEXT	ENDS
PUBLIC	?Attach_Script_Building@@YAXPBD0H@Z		; Attach_Script_Building
EXTRN	?As_BuildingGameObj@@YAPAEPAE@Z:PROC		; As_BuildingGameObj
EXTRN	?BuildingGameObjList@@3PAV?$SList@E@@A:DWORD	; BuildingGameObjList
; Function compile flags: /Ogtpy
;	COMDAT ?Attach_Script_Building@@YAXPBD0H@Z
_TEXT	SEGMENT
_script$ = 8						; size = 4
_params$ = 12						; size = 4
_team$ = 16						; size = 4
?Attach_Script_Building@@YAXPBD0H@Z PROC		; Attach_Script_Building, COMDAT

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

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

; 271  : 	while (x)

	test	edi, edi
	je	SHORT $LN4@Attach_Scr@3
	push	ebx
	mov	ebx, DWORD PTR _team$[esp+4]
	push	ebp
	mov	ebp, DWORD PTR _params$[esp+8]
	push	esi
$LL5@Attach_Scr@3:

; 272  : 	{
; 273  : 		GameObject *o = (GameObject *)x->NodeData;

	mov	esi, DWORD PTR [edi+4]

; 274  : 		if ((o) && As_BuildingGameObj(o))

	test	esi, esi
	je	SHORT $LN10@Attach_Scr@3
	push	esi
	call	?As_BuildingGameObj@@YAPAEPAE@Z		; As_BuildingGameObj
	add	esp, 4
	test	eax, eax
	je	SHORT $LN10@Attach_Scr@3

; 275  : 		{
; 276  : 			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@Attach_Scr@3
	cmp	ebx, 2
	jne	SHORT $LN10@Attach_Scr@3
$LN1@Attach_Scr@3:

; 277  : 			{
; 278  : 				Commands->Attach_Script(o,script,params);

	mov	ecx, DWORD PTR _script$[esp+12]
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+120]
	push	ebp
	push	ecx
	push	esi
	call	eax
	add	esp, 12					; 0000000cH
$LN10@Attach_Scr@3:

; 279  : 			}
; 280  : 		}
; 281  : 		x = x->NodeNext;

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

; 282  : 	}
; 283  : }

	ret	0
?Attach_Script_Building@@YAXPBD0H@Z ENDP		; Attach_Script_Building
_TEXT	ENDS
PUBLIC	?Attach_Script_Is_Preset@@YAXPAEPBD11H@Z	; Attach_Script_Is_Preset
; Function compile flags: /Ogtpy
;	COMDAT ?Attach_Script_Is_Preset@@YAXPAEPBD11H@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
_preset$ = 12						; size = 4
_script$ = 16						; size = 4
_params$ = 20						; size = 4
_team$ = 24						; size = 4
?Attach_Script_Is_Preset@@YAXPAEPBD11H@Z PROC		; Attach_Script_Is_Preset, COMDAT

; 287  : 	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 $LN4@Attach_Scr@4
	test	esi, esi
	je	SHORT $LN4@Attach_Scr@4

; 288  : 	{
; 289  : 		return;
; 290  : 	}
; 291  : 	DefinitionClass *d = Get_Definition(obj);

	push	esi
	call	?Get_Definition@@YAPAVDefinitionClass@@PAE@Z ; Get_Definition

; 292  : 	if (!_stricmp(d->Get_Name(),preset))

	mov	edx, DWORD PTR _preset$[esp+4]
	add	esp, 4
	push	edx
	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+48]
	call	eax
	push	eax
	call	__stricmp
	add	esp, 8
	test	eax, eax
	jne	SHORT $LN4@Attach_Scr@4

; 293  : 	{
; 294  : 		if ((Get_Object_Type(obj) == team) || (team == 2))

	push	esi
	call	?Get_Object_Type@@YAHPAE@Z		; Get_Object_Type
	mov	ecx, DWORD PTR _team$[esp+4]
	add	esp, 4
	cmp	eax, ecx
	je	SHORT $LN1@Attach_Scr@4
	cmp	ecx, 2
	jne	SHORT $LN4@Attach_Scr@4
$LN1@Attach_Scr@4:

; 295  : 		{
; 296  : 			Commands->Attach_Script(obj,script,params);

	mov	ecx, DWORD PTR _params$[esp]
	mov	edx, DWORD PTR _script$[esp]
	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	push	ecx
	mov	ecx, DWORD PTR [eax+120]
	push	edx
	push	esi
	call	ecx
	add	esp, 12					; 0000000cH
$LN4@Attach_Scr@4:
	pop	esi

; 297  : 		}
; 298  : 	}
; 299  : }

	ret	0
?Attach_Script_Is_Preset@@YAXPAEPBD11H@Z ENDP		; Attach_Script_Is_Preset
_TEXT	ENDS
PUBLIC	?Attach_Script_Is_Type@@YAXPAEKPBD1H@Z		; Attach_Script_Is_Type
; Function compile flags: /Ogtpy
;	COMDAT ?Attach_Script_Is_Type@@YAXPAEKPBD1H@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
_type$ = 12						; size = 4
_script$ = 16						; size = 4
_params$ = 20						; size = 4
_team$ = 24						; size = 4
?Attach_Script_Is_Type@@YAXPAEKPBD1H@Z PROC		; Attach_Script_Is_Type, COMDAT

; 303  : 	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 $LN4@Attach_Scr@5
	test	esi, esi
	je	SHORT $LN4@Attach_Scr@5

; 304  : 	{
; 305  : 		return;
; 306  : 	}
; 307  : 	DefinitionClass *d = Get_Definition(obj);

	push	esi
	call	?Get_Definition@@YAPAVDefinitionClass@@PAE@Z ; Get_Definition

; 308  : 	if (d->Get_Class_ID() == type)

	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+32]
	add	esp, 4
	call	eax
	cmp	eax, DWORD PTR _type$[esp]
	jne	SHORT $LN4@Attach_Scr@5

; 309  : 	{
; 310  : 		if ((Get_Object_Type(obj) == team) || (team == 2))

	push	esi
	call	?Get_Object_Type@@YAHPAE@Z		; Get_Object_Type
	mov	ecx, DWORD PTR _team$[esp+4]
	add	esp, 4
	cmp	eax, ecx
	je	SHORT $LN1@Attach_Scr@5
	cmp	ecx, 2
	jne	SHORT $LN4@Attach_Scr@5
$LN1@Attach_Scr@5:

; 311  : 		{
; 312  : 			Commands->Attach_Script(obj,script,params);

	mov	ecx, DWORD PTR _params$[esp]
	mov	edx, DWORD PTR _script$[esp]
	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	push	ecx
	mov	ecx, DWORD PTR [eax+120]
	push	edx
	push	esi
	call	ecx
	add	esp, 12					; 0000000cH
$LN4@Attach_Scr@5:
	pop	esi

; 313  : 		}
; 314  : 	}
; 315  : }

	ret	0
?Attach_Script_Is_Type@@YAXPAEKPBD1H@Z ENDP		; Attach_Script_Is_Type
_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
$T58498 = -12						; size = 12
_this$ = 8						; size = 4
$T58504 = 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 $T58504[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T58498[esp+20]
	mov	DWORD PTR $T58504[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T58498[esp+20]
	push	ecx
	mov	DWORD PTR $T58498[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
$T58510 = -12						; size = 12
$T58515 = 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 $T58515[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T58510[esp+20]
	mov	DWORD PTR $T58515[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T58510[esp+20]
	push	ecx
	mov	DWORD PTR $T58510[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	?Count@?$SimpleDynVecClass@PAVGameObjObserverClass@@@@QAEHXZ ; SimpleDynVecClass<GameObjObserverClass *>::Count
; Function compile flags: /Ogtpy
; File d:\source code\stgm\engine_vector.h
;	COMDAT ?Count@?$SimpleDynVecClass@PAVGameObjObserverClass@@@@QAEHXZ
_TEXT	SEGMENT
?Count@?$SimpleDynVecClass@PAVGameObjObserverClass@@@@QAEHXZ PROC ; SimpleDynVecClass<GameObjObserverClass *>::Count, COMDAT
; _this$ = ecx

; 268  : 		return ActiveCount;

	mov	eax, DWORD PTR [ecx+12]

; 269  : 	}

	ret	0
?Count@?$SimpleDynVecClass@PAVGameObjObserverClass@@@@QAEHXZ ENDP ; SimpleDynVecClass<GameObjObserverClass *>::Count
_TEXT	ENDS
PUBLIC	??A?$SimpleVecClass@PAVGameObjObserverClass@@@@QAEAAPAVGameObjObserverClass@@H@Z ; SimpleVecClass<GameObjObserverClass *>::operator[]
; Function compile flags: /Ogtpy
;	COMDAT ??A?$SimpleVecClass@PAVGameObjObserverClass@@@@QAEAAPAVGameObjObserverClass@@H@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
??A?$SimpleVecClass@PAVGameObjObserverClass@@@@QAEAAPAVGameObjObserverClass@@H@Z PROC ; SimpleVecClass<GameObjObserverClass *>::operator[], COMDAT
; _this$ = ecx

; 185  : 		return Vector[index];

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

; 186  : 	}

	ret	4
??A?$SimpleVecClass@PAVGameObjObserverClass@@@@QAEAAPAVGameObjObserverClass@@H@Z ENDP ; SimpleVecClass<GameObjObserverClass *>::operator[]
; 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	?Remove_Script@@YAXPAEPBD@Z			; Remove_Script
EXTRN	?Destroy_Script@ScriptImpClass@@QAEXXZ:PROC	; ScriptImpClass::Destroy_Script
; Function compile flags: /Ogtpy
; File d:\source code\stgm\engine_script.cpp
;	COMDAT ?Remove_Script@@YAXPAEPBD@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
_script$ = 12						; size = 4
?Remove_Script@@YAXPAEPBD@Z PROC			; Remove_Script, COMDAT

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

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+108]
	push	edi
	mov	edi, DWORD PTR _obj$[esp]
	push	edi
	call	ecx
	add	esp, 4
	test	eax, eax
	je	SHORT $LN5@Remove_Scr
	test	edi, edi
	je	SHORT $LN5@Remove_Scr
	push	ebx

; 30   : 	{
; 31   : 		return;
; 32   : 	}
; 33   : 	SimpleDynVecClass<GameObjObserverClass *> *observers = &((ScriptableGameObj *)obj)->Observers;
; 34   : 	int x = observers->Count();

	mov	ebx, DWORD PTR [edi+1784]
	push	esi

; 35   : 	for (int i = 0;i < x;i++)

	xor	esi, esi
	test	ebx, ebx
	jle	SHORT $LN17@Remove_Scr
	push	ebp
	mov	ebp, DWORD PTR _script$[esp+12]
	npad	2
$LL4@Remove_Scr:

; 36   : 	{
; 37   : 		if (!_stricmp((*observers)[i]->Get_Name(),script))

	mov	edx, DWORD PTR [edi+1776]
	mov	ecx, DWORD PTR [edx+esi*4]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+4]
	push	ebp
	call	edx
	push	eax
	call	__stricmp
	add	esp, 8
	test	eax, eax
	jne	SHORT $LN3@Remove_Scr

; 38   : 		{
; 39   : 			((ScriptImpClass*)(*observers)[i])->Destroy_Script();

	mov	eax, DWORD PTR [edi+1776]
	mov	ecx, DWORD PTR [eax+esi*4]
	call	?Destroy_Script@ScriptImpClass@@QAEXXZ	; ScriptImpClass::Destroy_Script
$LN3@Remove_Scr:
	add	esi, 1
	cmp	esi, ebx
	jl	SHORT $LL4@Remove_Scr
	pop	ebp
$LN17@Remove_Scr:
	pop	esi
	pop	ebx
$LN5@Remove_Scr:
	pop	edi

; 40   : 		}
; 41   : 	}
; 42   : }

	ret	0
?Remove_Script@@YAXPAEPBD@Z ENDP			; Remove_Script
_TEXT	ENDS
PUBLIC	?Remove_Duplicate_Script@@YAXPAEPBD@Z		; Remove_Duplicate_Script
; Function compile flags: /Ogtpy
;	COMDAT ?Remove_Duplicate_Script@@YAXPAEPBD@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
_script$ = 12						; size = 4
?Remove_Duplicate_Script@@YAXPAEPBD@Z PROC		; Remove_Duplicate_Script, COMDAT

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

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

; 47   : 	{
; 48   : 		return;
; 49   : 	}
; 50   : 	SimpleDynVecClass<GameObjObserverClass *> *observers = &((ScriptableGameObj *)obj)->Observers;
; 51   : 	bool Found = false;
; 52   : 	for (int i = 0;i < observers->Count();i++)

	xor	esi, esi
	xor	bl, bl
	cmp	DWORD PTR [edi+1784], esi
	jle	SHORT $LN19@Remove_Dup
	push	ebp
	mov	ebp, DWORD PTR _script$[esp+12]
	npad	2
$LL6@Remove_Dup:

; 53   : 	{
; 54   : 		if (!_stricmp((*observers)[i]->Get_Name(),script))

	mov	edx, DWORD PTR [edi+1776]
	mov	ecx, DWORD PTR [edx+esi*4]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+4]
	push	ebp
	call	edx
	push	eax
	call	__stricmp
	add	esp, 8
	test	eax, eax
	jne	SHORT $LN5@Remove_Dup

; 55   : 		{
; 56   : 			if (!Found)

	test	bl, bl
	jne	SHORT $LN2@Remove_Dup

; 57   : 			{
; 58   : 				Found = true;

	mov	bl, 1

; 59   : 			}
; 60   : 			else

	jmp	SHORT $LN5@Remove_Dup
$LN2@Remove_Dup:

; 61   : 			{
; 62   : 				((ScriptImpClass*)(*observers)[i])->Destroy_Script();

	mov	eax, DWORD PTR [edi+1776]
	mov	ecx, DWORD PTR [eax+esi*4]
	call	?Destroy_Script@ScriptImpClass@@QAEXXZ	; ScriptImpClass::Destroy_Script
$LN5@Remove_Dup:
	add	esi, 1
	cmp	esi, DWORD PTR [edi+1784]
	jl	SHORT $LL6@Remove_Dup
	pop	ebp
$LN19@Remove_Dup:
	pop	esi
	pop	ebx
$LN7@Remove_Dup:
	pop	edi

; 63   : 			}
; 64   : 		}
; 65   : 	}
; 66   : }

	ret	0
?Remove_Duplicate_Script@@YAXPAEPBD@Z ENDP		; Remove_Duplicate_Script
_TEXT	ENDS
PUBLIC	?Remove_Script_Preset@@YAXPBD0H@Z		; Remove_Script_Preset
; Function compile flags: /Ogtpy
;	COMDAT ?Remove_Script_Preset@@YAXPBD0H@Z
_TEXT	SEGMENT
_script$ = 8						; size = 4
_preset$ = 12						; size = 4
_team$ = 16						; size = 4
?Remove_Script_Preset@@YAXPBD0H@Z PROC			; Remove_Script_Preset, COMDAT

; 70   : 	GenericSLNode *x = BaseGameObjList->HeadNode;

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

; 71   : 	while (x)

	test	edi, edi
	je	SHORT $LN5@Remove_Scr@2
	push	ebx
	mov	ebx, DWORD PTR _team$[esp+4]
	push	ebp
	mov	ebp, DWORD PTR _preset$[esp+8]
	push	esi
$LL6@Remove_Scr@2:

; 72   : 	{
; 73   : 		GameObject *o = (GameObject *)x->NodeData;

	mov	esi, DWORD PTR [edi+4]

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

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

; 75   : 		{
; 76   : 			DefinitionClass *d = Get_Definition(o);

	push	esi
	call	?Get_Definition@@YAPAVDefinitionClass@@PAE@Z ; Get_Definition

; 77   : 			if (!_stricmp(d->Get_Name(),preset))

	mov	edx, DWORD PTR [eax]
	add	esp, 4
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+48]
	push	ebp
	call	eax
	push	eax
	call	__stricmp
	add	esp, 8
	test	eax, eax
	jne	SHORT $LN11@Remove_Scr@2

; 78   : 			{
; 79   : 				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@Remove_Scr@2
	cmp	ebx, 2
	jne	SHORT $LN11@Remove_Scr@2
$LN1@Remove_Scr@2:

; 80   : 				{
; 81   : 					Remove_Script(o,script);

	mov	ecx, DWORD PTR _script$[esp+12]
	push	ecx
	push	esi
	call	?Remove_Script@@YAXPAEPBD@Z		; Remove_Script
	add	esp, 8
$LN11@Remove_Scr@2:

; 82   : 				}
; 83   : 			}
; 84   : 		}
; 85   : 		x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	SHORT $LL6@Remove_Scr@2
	pop	esi
	pop	ebp
	pop	ebx
$LN5@Remove_Scr@2:
	pop	edi

; 86   : 	}
; 87   : }

	ret	0
?Remove_Script_Preset@@YAXPBD0H@Z ENDP			; Remove_Script_Preset
_TEXT	ENDS
PUBLIC	?Remove_Script_Type@@YAXPBDKH@Z			; Remove_Script_Type
; Function compile flags: /Ogtpy
;	COMDAT ?Remove_Script_Type@@YAXPBDKH@Z
_TEXT	SEGMENT
_script$ = 8						; size = 4
_type$ = 12						; size = 4
_team$ = 16						; size = 4
?Remove_Script_Type@@YAXPBDKH@Z PROC			; Remove_Script_Type, COMDAT

; 91   : 	GenericSLNode *x = BaseGameObjList->HeadNode;

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

; 92   : 	while (x)

	test	edi, edi
	je	SHORT $LN5@Remove_Scr@3
	push	ebx
	mov	ebx, DWORD PTR _team$[esp+4]
	push	ebp
	mov	ebp, DWORD PTR _type$[esp+8]
	push	esi
$LL6@Remove_Scr@3:

; 93   : 	{
; 94   : 		GameObject *o = (GameObject *)x->NodeData;

	mov	esi, DWORD PTR [edi+4]

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

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

; 96   : 		{
; 97   : 			DefinitionClass *d = Get_Definition(o);

	push	esi
	call	?Get_Definition@@YAPAVDefinitionClass@@PAE@Z ; Get_Definition

; 98   : 			if (d->Get_Class_ID() == type)

	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+32]
	add	esp, 4
	call	eax
	cmp	eax, ebp
	jne	SHORT $LN11@Remove_Scr@3

; 99   : 			{
; 100  : 				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@Remove_Scr@3
	cmp	ebx, 2
	jne	SHORT $LN11@Remove_Scr@3
$LN1@Remove_Scr@3:

; 101  : 				{
; 102  : 					Remove_Script(o,script);

	mov	ecx, DWORD PTR _script$[esp+12]
	push	ecx
	push	esi
	call	?Remove_Script@@YAXPAEPBD@Z		; Remove_Script
	add	esp, 8
$LN11@Remove_Scr@3:

; 103  : 				}
; 104  : 			}
; 105  : 		}
; 106  : 		x = x->NodeNext;

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

; 107  : 	}
; 108  : }

	ret	0
?Remove_Script_Type@@YAXPBDKH@Z ENDP			; Remove_Script_Type
_TEXT	ENDS
PUBLIC	?Remove_All_Scripts@@YAXPAE@Z			; Remove_All_Scripts
; Function compile flags: /Ogtpy
;	COMDAT ?Remove_All_Scripts@@YAXPAE@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
?Remove_All_Scripts@@YAXPAE@Z PROC			; Remove_All_Scripts, COMDAT

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

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

; 113  : 	{
; 114  : 		return;
; 115  : 	}
; 116  : 	SimpleDynVecClass<GameObjObserverClass *> *observers = &((ScriptableGameObj *)obj)->Observers;
; 117  : 	int x = observers->Count();

	mov	edi, DWORD PTR [ebx+1784]

; 118  : 	for (int i = 0;i < x;i++)

	xor	esi, esi
	test	edi, edi
	jle	SHORT $LN14@Remove_All
	npad	7
$LL3@Remove_All:

; 119  : 	{
; 120  : 		((ScriptImpClass*)(*observers)[i])->Destroy_Script();

	mov	edx, DWORD PTR [ebx+1776]
	mov	ecx, DWORD PTR [edx+esi*4]
	call	?Destroy_Script@ScriptImpClass@@QAEXXZ	; ScriptImpClass::Destroy_Script
	add	esi, 1
	cmp	esi, edi
	jl	SHORT $LL3@Remove_All
$LN14@Remove_All:
	pop	edi
	pop	esi
$LN4@Remove_All:
	pop	ebx

; 121  : 	}
; 122  : }

	ret	0
?Remove_All_Scripts@@YAXPAE@Z ENDP			; Remove_All_Scripts
_TEXT	ENDS
PUBLIC	?Is_Script_Attached@@YA_NPAEPBD@Z		; Is_Script_Attached
; Function compile flags: /Ogtpy
;	COMDAT ?Is_Script_Attached@@YA_NPAEPBD@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
_script$ = 12						; size = 4
?Is_Script_Attached@@YA_NPAEPBD@Z PROC			; Is_Script_Attached, COMDAT

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

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+108]
	push	edi
	mov	edi, DWORD PTR _obj$[esp]
	push	edi
	call	ecx
	add	esp, 4
	test	eax, eax
	je	SHORT $LN5@Is_Script_
	test	edi, edi
	je	SHORT $LN5@Is_Script_
	push	ebx

; 171  : 	}
; 172  : 	SimpleDynVecClass<GameObjObserverClass *> *observers = &((ScriptableGameObj *)obj)->Observers;
; 173  : 	int x = observers->Count();

	mov	ebx, DWORD PTR [edi+1784]
	push	ebp
	push	esi

; 174  : 	for (int i = 0;i < x;i++)

	xor	esi, esi
	test	ebx, ebx
	jle	SHORT $LN2@Is_Script_
	mov	ebp, DWORD PTR _script$[esp+12]
	npad	2
$LL4@Is_Script_:

; 175  : 	{
; 176  : 		if (!_stricmp((*observers)[i]->Get_Name(),script))

	mov	edx, DWORD PTR [edi+1776]
	mov	ecx, DWORD PTR [edx+esi*4]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+4]
	push	ebp
	call	edx
	push	eax
	call	__stricmp
	add	esp, 8
	test	eax, eax
	je	SHORT $LN14@Is_Script_
	add	esi, 1
	cmp	esi, ebx
	jl	SHORT $LL4@Is_Script_
$LN2@Is_Script_:
	pop	esi
	pop	ebp
	pop	ebx

; 179  : 		}
; 180  : 	}
; 181  : 	return false;

	xor	al, al
	pop	edi

; 182  : }

	ret	0
$LN14@Is_Script_:
	pop	esi
	pop	ebp
	pop	ebx

; 177  : 		{
; 178  : 			return true;

	mov	al, 1
	pop	edi

; 182  : }

	ret	0
$LN5@Is_Script_:

; 169  : 	{
; 170  : 		return false;

	xor	al, al
	pop	edi

; 182  : }

	ret	0
?Is_Script_Attached@@YA_NPAEPBD@Z ENDP			; Is_Script_Attached
_TEXT	ENDS
PUBLIC	?Attach_Script_Once@@YAXPAEPBD1@Z		; Attach_Script_Once
; Function compile flags: /Ogtpy
;	COMDAT ?Attach_Script_Once@@YAXPAEPBD1@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
_script$ = 12						; size = 4
_params$ = 16						; size = 4
?Attach_Script_Once@@YAXPAEPBD1@Z PROC			; Attach_Script_Once, COMDAT

; 186  : 	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@Attach_Scr@6
	test	esi, esi
	je	SHORT $LN2@Attach_Scr@6
	push	edi

; 187  : 	{
; 188  : 		return;
; 189  : 	}
; 190  : 	if (!Is_Script_Attached(obj,script))

	mov	edi, DWORD PTR _script$[esp+4]
	push	edi
	push	esi
	call	?Is_Script_Attached@@YA_NPAEPBD@Z	; Is_Script_Attached
	add	esp, 8
	test	al, al
	jne	SHORT $LN6@Attach_Scr@6

; 191  : 	{
; 192  : 		Commands->Attach_Script(obj,script,params);

	mov	edx, DWORD PTR _params$[esp+4]
	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+120]
	push	edx
	push	edi
	push	esi
	call	ecx
	add	esp, 12					; 0000000cH
$LN6@Attach_Scr@6:
	pop	edi
$LN2@Attach_Scr@6:
	pop	esi

; 193  : 	}
; 194  : }

	ret	0
?Attach_Script_Once@@YAXPAEPBD1@Z ENDP			; Attach_Script_Once
_TEXT	ENDS
PUBLIC	?Attach_Script_Preset_Once@@YAXPBD00H@Z		; Attach_Script_Preset_Once
; Function compile flags: /Ogtpy
;	COMDAT ?Attach_Script_Preset_Once@@YAXPBD00H@Z
_TEXT	SEGMENT
_script$ = 8						; size = 4
_params$ = 12						; size = 4
_preset$ = 16						; size = 4
_team$ = 20						; size = 4
?Attach_Script_Preset_Once@@YAXPBD00H@Z PROC		; Attach_Script_Preset_Once, COMDAT

; 198  : 	GenericSLNode *x = BaseGameObjList->HeadNode;

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

; 199  : 	while (x)

	test	edi, edi
	je	$LN6@Attach_Scr@7
	push	ebx
	mov	ebx, DWORD PTR _script$[esp+4]
	push	ebp
	mov	ebp, DWORD PTR _team$[esp+8]
	push	esi
	npad	4
$LL7@Attach_Scr@7:

; 200  : 	{
; 201  : 		GameObject *o = (GameObject *)x->NodeData;

	mov	esi, DWORD PTR [edi+4]

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

	test	esi, esi
	je	SHORT $LN12@Attach_Scr@7
	push	esi
	call	?As_ScriptableGameObj@@YAPAEPAE@Z	; As_ScriptableGameObj
	add	esp, 4
	test	eax, eax
	je	SHORT $LN12@Attach_Scr@7

; 203  : 		{
; 204  : 			DefinitionClass *d = Get_Definition(o);

	push	esi
	call	?Get_Definition@@YAPAVDefinitionClass@@PAE@Z ; Get_Definition

; 205  : 			if (!_stricmp(d->Get_Name(),preset))

	mov	ecx, DWORD PTR _preset$[esp+16]
	mov	edx, DWORD PTR [eax]
	add	esp, 4
	push	ecx
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+48]
	call	eax
	push	eax
	call	__stricmp
	add	esp, 8
	test	eax, eax
	jne	SHORT $LN12@Attach_Scr@7

; 206  : 			{
; 207  : 				if ((Get_Object_Type(o) == team) || (team == 2))

	push	esi
	call	?Get_Object_Type@@YAHPAE@Z		; Get_Object_Type
	add	esp, 4
	cmp	eax, ebp
	je	SHORT $LN2@Attach_Scr@7
	cmp	ebp, 2
	jne	SHORT $LN12@Attach_Scr@7
$LN2@Attach_Scr@7:

; 208  : 				{
; 209  : 					if (!Is_Script_Attached(o,script))

	push	ebx
	push	esi
	call	?Is_Script_Attached@@YA_NPAEPBD@Z	; Is_Script_Attached
	add	esp, 8
	test	al, al
	jne	SHORT $LN12@Attach_Scr@7

; 210  : 					{
; 211  : 						Commands->Attach_Script(o,script,params);

	mov	ecx, DWORD PTR _params$[esp+12]
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+120]
	push	ecx
	push	ebx
	push	esi
	call	eax
	add	esp, 12					; 0000000cH
$LN12@Attach_Scr@7:

; 212  : 					}
; 213  : 				}
; 214  : 			}
; 215  : 		}
; 216  : 		x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	SHORT $LL7@Attach_Scr@7
	pop	esi
	pop	ebp
	pop	ebx
$LN6@Attach_Scr@7:
	pop	edi

; 217  : 	}
; 218  : }

	ret	0
?Attach_Script_Preset_Once@@YAXPBD00H@Z ENDP		; Attach_Script_Preset_Once
_TEXT	ENDS
PUBLIC	?Attach_Script_Type_Once@@YAXPBD0KH@Z		; Attach_Script_Type_Once
; Function compile flags: /Ogtpy
;	COMDAT ?Attach_Script_Type_Once@@YAXPBD0KH@Z
_TEXT	SEGMENT
_script$ = 8						; size = 4
_params$ = 12						; size = 4
_type$ = 16						; size = 4
_team$ = 20						; size = 4
?Attach_Script_Type_Once@@YAXPBD0KH@Z PROC		; Attach_Script_Type_Once, COMDAT

; 222  : 	GenericSLNode *x = BaseGameObjList->HeadNode;

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

; 223  : 	while (x)

	test	edi, edi
	je	SHORT $LN6@Attach_Scr@8
	push	ebx
	mov	ebx, DWORD PTR _script$[esp+4]
	push	ebp
	mov	ebp, DWORD PTR _team$[esp+8]
	push	esi
$LL7@Attach_Scr@8:

; 224  : 	{
; 225  : 		GameObject *o = (GameObject *)x->NodeData;

	mov	esi, DWORD PTR [edi+4]

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

	test	esi, esi
	je	SHORT $LN12@Attach_Scr@8
	push	esi
	call	?As_ScriptableGameObj@@YAPAEPAE@Z	; As_ScriptableGameObj
	add	esp, 4
	test	eax, eax
	je	SHORT $LN12@Attach_Scr@8

; 227  : 		{
; 228  : 			DefinitionClass *d = Get_Definition(o);

	push	esi
	call	?Get_Definition@@YAPAVDefinitionClass@@PAE@Z ; Get_Definition

; 229  : 			if (d->Get_Class_ID() == type)

	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+32]
	add	esp, 4
	call	eax
	cmp	eax, DWORD PTR _type$[esp+12]
	jne	SHORT $LN12@Attach_Scr@8

; 230  : 			{
; 231  : 				if ((Get_Object_Type(o) == team) || (team == 2))

	push	esi
	call	?Get_Object_Type@@YAHPAE@Z		; Get_Object_Type
	add	esp, 4
	cmp	eax, ebp
	je	SHORT $LN2@Attach_Scr@8
	cmp	ebp, 2
	jne	SHORT $LN12@Attach_Scr@8
$LN2@Attach_Scr@8:

; 232  : 				{
; 233  : 					if (!Is_Script_Attached(o,script))

	push	ebx
	push	esi
	call	?Is_Script_Attached@@YA_NPAEPBD@Z	; Is_Script_Attached
	add	esp, 8
	test	al, al
	jne	SHORT $LN12@Attach_Scr@8

; 234  : 					{
; 235  : 						Commands->Attach_Script(o,script,params);

	mov	ecx, DWORD PTR _params$[esp+12]
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+120]
	push	ecx
	push	ebx
	push	esi
	call	eax
	add	esp, 12					; 0000000cH
$LN12@Attach_Scr@8:

; 236  : 					}
; 237  : 				}
; 238  : 			}
; 239  : 		}
; 240  : 		x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	SHORT $LL7@Attach_Scr@8
	pop	esi
	pop	ebp
	pop	ebx
$LN6@Attach_Scr@8:
	pop	edi

; 241  : 	}
; 242  : }

	ret	0
?Attach_Script_Type_Once@@YAXPBD0KH@Z ENDP		; Attach_Script_Type_Once
_TEXT	ENDS
PUBLIC	?Attach_Script_Player_Once@@YAXPBD0H@Z		; Attach_Script_Player_Once
; Function compile flags: /Ogtpy
;	COMDAT ?Attach_Script_Player_Once@@YAXPBD0H@Z
_TEXT	SEGMENT
_script$ = 8						; size = 4
_params$ = 12						; size = 4
_team$ = 16						; size = 4
?Attach_Script_Player_Once@@YAXPBD0H@Z PROC		; Attach_Script_Player_Once, COMDAT

; 246  : 	GenericSLNode *x = BaseGameObjList->HeadNode;

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

; 247  : 	while (x)

	test	edi, edi
	je	SHORT $LN6@Attach_Scr@9
	push	ebx
	mov	ebx, DWORD PTR _script$[esp+4]
	push	ebp
	mov	ebp, DWORD PTR _team$[esp+8]
	push	esi
$LL7@Attach_Scr@9:

; 248  : 	{
; 249  : 		GameObject *o = (GameObject *)x->NodeData;

	mov	esi, DWORD PTR [edi+4]

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

	test	esi, esi
	je	SHORT $LN12@Attach_Scr@9
	push	esi
	call	?As_ScriptableGameObj@@YAPAEPAE@Z	; As_ScriptableGameObj
	add	esp, 4
	test	eax, eax
	je	SHORT $LN12@Attach_Scr@9

; 251  : 		{
; 252  : 			DefinitionClass *d = Get_Definition(o);

	push	esi
	call	?Get_Definition@@YAPAVDefinitionClass@@PAE@Z ; Get_Definition

; 253  : 			if (d->Get_Class_ID() == Soldier)

	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+32]
	add	esp, 4
	call	eax
	cmp	eax, 12289				; 00003001H
	jne	SHORT $LN12@Attach_Scr@9

; 254  : 			{
; 255  : 				if ((Get_Object_Type(o) == team) || (team == 2))

	push	esi
	call	?Get_Object_Type@@YAHPAE@Z		; Get_Object_Type
	add	esp, 4
	cmp	eax, ebp
	je	SHORT $LN2@Attach_Scr@9
	cmp	ebp, 2
	jne	SHORT $LN12@Attach_Scr@9
$LN2@Attach_Scr@9:

; 256  : 				{
; 257  : 					if (!Is_Script_Attached(o,script))

	push	ebx
	push	esi
	call	?Is_Script_Attached@@YA_NPAEPBD@Z	; Is_Script_Attached
	add	esp, 8
	test	al, al
	jne	SHORT $LN12@Attach_Scr@9

; 258  : 					{
; 259  : 						Commands->Attach_Script(o,script,params);

	mov	ecx, DWORD PTR _params$[esp+12]
	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+120]
	push	ecx
	push	ebx
	push	esi
	call	eax
	add	esp, 12					; 0000000cH
$LN12@Attach_Scr@9:

; 260  : 					}
; 261  : 				}
; 262  : 			}
; 263  : 		}
; 264  : 		x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	SHORT $LL7@Attach_Scr@9
	pop	esi
	pop	ebp
	pop	ebx
$LN6@Attach_Scr@9:
	pop	edi

; 265  : 	}
; 266  : }

	ret	0
?Attach_Script_Player_Once@@YAXPBD0H@Z ENDP		; Attach_Script_Player_Once
_TEXT	ENDS
PUBLIC	?Attach_Script_All_Buildings_Team@@YAXHPBD0_N@Z	; Attach_Script_All_Buildings_Team
; Function compile flags: /Ogtpy
;	COMDAT ?Attach_Script_All_Buildings_Team@@YAXHPBD0_N@Z
_TEXT	SEGMENT
_Team$ = 8						; size = 4
_Script$ = 12						; size = 4
_Params$ = 16						; size = 4
_Once$ = 20						; size = 1
?Attach_Script_All_Buildings_Team@@YAXHPBD0_N@Z PROC	; Attach_Script_All_Buildings_Team, COMDAT

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

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

; 320  : 	while (x)

	test	edi, edi
	je	$LN6@Attach_Scr@10
	push	ebx
	mov	ebx, DWORD PTR _Params$[esp+4]
	push	ebp
	mov	ebp, DWORD PTR _Script$[esp+8]
	push	esi
	npad	4
$LL7@Attach_Scr@10:

; 321  : 	{
; 322  : 		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

; 323  : 		if (o)

	test	esi, esi
	je	SHORT $LN17@Attach_Scr@10

; 324  : 		{
; 325  : 			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+16]
	add	esp, 4
	cmp	eax, ecx
	je	SHORT $LN3@Attach_Scr@10
	cmp	ecx, 2
	jne	SHORT $LN17@Attach_Scr@10
$LN3@Attach_Scr@10:

; 326  : 			{
; 327  : 				if (Once)

	cmp	BYTE PTR _Once$[esp+12], 0
	je	SHORT $LN2@Attach_Scr@10

; 328  : 				{
; 329  : 					Attach_Script_Once(o,Script,Params);

	mov	edx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	eax, DWORD PTR [edx+108]
	push	esi
	call	eax
	add	esp, 4
	test	eax, eax
	je	SHORT $LN17@Attach_Scr@10
	push	ebp
	push	esi
	call	?Is_Script_Attached@@YA_NPAEPBD@Z	; Is_Script_Attached
	add	esp, 8
	test	al, al
	jne	SHORT $LN17@Attach_Scr@10
	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	edx, DWORD PTR [ecx+120]
	push	ebx
	push	ebp
	push	esi
	call	edx

; 330  : 				}
; 331  : 				else

	jmp	SHORT $LN18@Attach_Scr@10
$LN2@Attach_Scr@10:

; 332  : 				{
; 333  : 					Commands->Attach_Script(o,Script,Params);

	mov	eax, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	ecx, DWORD PTR [eax+120]
	push	ebx
	push	ebp
	push	esi
	call	ecx
$LN18@Attach_Scr@10:
	add	esp, 12					; 0000000cH
$LN17@Attach_Scr@10:

; 334  : 				}
; 335  : 			}
; 336  : 		}
; 337  : 		x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	SHORT $LL7@Attach_Scr@10
	pop	esi
	pop	ebp
	pop	ebx
$LN6@Attach_Scr@10:
	pop	edi

; 338  : 	}
; 339  : }

	ret	0
?Attach_Script_All_Buildings_Team@@YAXHPBD0_N@Z ENDP	; Attach_Script_All_Buildings_Team
_TEXT	ENDS
PUBLIC	?Attach_Script_All_Turrets_Team@@YAXHPBD0_N@Z	; Attach_Script_All_Turrets_Team
EXTRN	?Is_DecorationPhys@@YA_NPAE@Z:PROC		; Is_DecorationPhys
EXTRN	?As_VehicleGameObj@@YAPAEPAE@Z:PROC		; As_VehicleGameObj
; Function compile flags: /Ogtpy
;	COMDAT ?Attach_Script_All_Turrets_Team@@YAXHPBD0_N@Z
_TEXT	SEGMENT
_Team$ = 8						; size = 4
_Script$ = 12						; size = 4
_Params$ = 16						; size = 4
_Once$ = 20						; size = 1
?Attach_Script_All_Turrets_Team@@YAXHPBD0_N@Z PROC	; Attach_Script_All_Turrets_Team, COMDAT

; 343  : 	GenericSLNode *x = BaseGameObjList->HeadNode;

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

; 344  : 	while (x)

	test	edi, edi
	je	SHORT $LN6@Attach_Scr@11
	push	ebx
	mov	ebx, DWORD PTR _Script$[esp+4]
	push	ebp
	mov	ebp, DWORD PTR _Params$[esp+8]
	push	esi
$LL7@Attach_Scr@11:

; 345  : 	{
; 346  : 		GameObject *o = (GameObject *)x->NodeData;

	mov	esi, DWORD PTR [edi+4]

; 347  : 		if (o && As_ScriptableGameObj(o) && As_VehicleGameObj(o))

	test	esi, esi
	je	SHORT $LN12@Attach_Scr@11
	push	esi
	call	?As_ScriptableGameObj@@YAPAEPAE@Z	; As_ScriptableGameObj
	add	esp, 4
	test	eax, eax
	je	SHORT $LN12@Attach_Scr@11
	push	esi
	call	?As_VehicleGameObj@@YAPAEPAE@Z		; As_VehicleGameObj
	add	esp, 4
	test	eax, eax
	je	SHORT $LN12@Attach_Scr@11

; 348  : 		{
; 349  : 			if (Is_DecorationPhys(o) && (Get_Object_Type(o) == Team || Team == 2))

	push	esi
	call	?Is_DecorationPhys@@YA_NPAE@Z		; Is_DecorationPhys
	add	esp, 4
	test	al, al
	je	SHORT $LN12@Attach_Scr@11
	push	esi
	call	?Get_Object_Type@@YAHPAE@Z		; Get_Object_Type
	mov	ecx, DWORD PTR _Team$[esp+16]
	add	esp, 4
	cmp	eax, ecx
	je	SHORT $LN3@Attach_Scr@11
	cmp	ecx, 2
	jne	SHORT $LN12@Attach_Scr@11
$LN3@Attach_Scr@11:

; 350  : 			{
; 351  : 				if (Once)

	cmp	BYTE PTR _Once$[esp+12], 0

; 352  : 				{
; 353  : 					Attach_Script_Once(o,Script,Params);

	push	ebp
	push	ebx
	push	esi
	je	SHORT $LN2@Attach_Scr@11
	call	?Attach_Script_Once@@YAXPAEPBD1@Z	; Attach_Script_Once

; 354  : 				}
; 355  : 				else

	jmp	SHORT $LN13@Attach_Scr@11
$LN2@Attach_Scr@11:

; 356  : 				{
; 357  : 					Commands->Attach_Script(o,Script,Params);

	mov	ecx, DWORD PTR ?Commands@@3PAUScriptCommands@@A ; Commands
	mov	edx, DWORD PTR [ecx+120]
	call	edx
$LN13@Attach_Scr@11:
	add	esp, 12					; 0000000cH
$LN12@Attach_Scr@11:

; 358  : 				}
; 359  : 			}
; 360  : 		}
; 361  : 		x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	SHORT $LL7@Attach_Scr@11
	pop	esi
	pop	ebp
	pop	ebx
$LN6@Attach_Scr@11:
	pop	edi

; 362  : 	}
; 363  : }

	ret	0
?Attach_Script_All_Turrets_Team@@YAXHPBD0_N@Z ENDP	; Attach_Script_All_Turrets_Team
_TEXT	ENDS
PUBLIC	?Find_Building_With_Script@@YAPAEHHPBDPAE@Z	; Find_Building_With_Script
EXTRN	?Is_Building_Dead@@YA_NPAE@Z:PROC		; Is_Building_Dead
EXTRN	?Building_Type@@YAHPAE@Z:PROC			; Building_Type
; Function compile flags: /Ogtpy
;	COMDAT ?Find_Building_With_Script@@YAPAEHHPBDPAE@Z
_TEXT	SEGMENT
_Team$ = 8						; size = 4
_Type$ = 12						; size = 4
_Script$ = 16						; size = 4
_Caller$ = 20						; size = 4
?Find_Building_With_Script@@YAPAEHHPBDPAE@Z PROC	; Find_Building_With_Script, COMDAT

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

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

; 368  : 	while (x)

	test	edi, edi
	je	SHORT $LN5@Find_Build
	mov	ebx, DWORD PTR _Type$[esp+12]
	mov	ebp, DWORD PTR _Team$[esp+12]
$LL6@Find_Build:

; 369  : 	{
; 370  : 		GameObject *o = (GameObject *)x->NodeData;

	mov	esi, DWORD PTR [edi+4]

; 371  : 		if (o)

	test	esi, esi
	je	SHORT $LN12@Find_Build

; 372  : 		{
; 373  : 			if ((Type == -1 || Building_Type(o) == Type) && (Get_Object_Type(o) == Team || Team == 2) && !Is_Building_Dead(o) && Is_Script_Attached(o,Script) && o != Caller)

	cmp	ebx, -1
	je	SHORT $LN2@Find_Build
	push	esi
	call	?Building_Type@@YAHPAE@Z		; Building_Type
	add	esp, 4
	cmp	eax, ebx
	jne	SHORT $LN12@Find_Build
$LN2@Find_Build:
	push	esi
	call	?Get_Object_Type@@YAHPAE@Z		; Get_Object_Type
	add	esp, 4
	cmp	eax, ebp
	je	SHORT $LN1@Find_Build
	cmp	ebp, 2
	jne	SHORT $LN12@Find_Build
$LN1@Find_Build:
	push	esi
	call	?Is_Building_Dead@@YA_NPAE@Z		; Is_Building_Dead
	add	esp, 4
	test	al, al
	jne	SHORT $LN12@Find_Build
	mov	ecx, DWORD PTR _Script$[esp+12]
	push	ecx
	push	esi
	call	?Is_Script_Attached@@YA_NPAEPBD@Z	; Is_Script_Attached
	add	esp, 8
	test	al, al
	je	SHORT $LN12@Find_Build
	cmp	esi, DWORD PTR _Caller$[esp+12]
	jne	SHORT $LN10@Find_Build
$LN12@Find_Build:

; 376  : 			}
; 377  : 		}
; 378  : 		x = x->NodeNext;

	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	SHORT $LL6@Find_Build
$LN5@Find_Build:
	pop	edi
	pop	esi
	pop	ebp

; 379  : 	}
; 380  : 	return 0;

	xor	eax, eax
	pop	ebx

; 381  : }

	ret	0
$LN10@Find_Build:
	pop	edi

; 374  : 			{
; 375  : 				return o;

	mov	eax, esi
	pop	esi
	pop	ebp
	pop	ebx

; 381  : }

	ret	0
?Find_Building_With_Script@@YAPAEHHPBDPAE@Z ENDP	; Find_Building_With_Script
_TEXT	ENDS
PUBLIC	?Find_Object_With_Script@@YAPAEPBD@Z		; Find_Object_With_Script
; Function compile flags: /Ogtpy
;	COMDAT ?Find_Object_With_Script@@YAPAEPBD@Z
_TEXT	SEGMENT
_script$ = 8						; size = 4
?Find_Object_With_Script@@YAPAEPBD@Z PROC		; Find_Object_With_Script, COMDAT

; 385  : 	GenericSLNode *x = BaseGameObjList->HeadNode;

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

; 386  : 	while (x)

	test	edi, edi
	je	SHORT $LN3@Find_Objec
	mov	ebx, DWORD PTR _script$[esp+8]
$LL4@Find_Objec:

; 387  : 	{
; 388  : 		GameObject *o = (GameObject *)x->NodeData;

	mov	esi, DWORD PTR [edi+4]

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

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

; 390  : 		{
; 391  : 			if (Is_Script_Attached(o, script))

	push	ebx
	push	esi
	call	?Is_Script_Attached@@YA_NPAEPBD@Z	; Is_Script_Attached
	add	esp, 8
	test	al, al
	jne	SHORT $LN8@Find_Objec
$LN1@Find_Objec:

; 394  : 			}
; 395  : 		}
; 396  : 		x = x->NodeNext;

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

; 397  : 	}
; 398  : 	return NULL;

	xor	eax, eax
	pop	ebx

; 399  : }

	ret	0
$LN8@Find_Objec:
	pop	edi

; 392  : 			{
; 393  : 				return o;

	mov	eax, esi
	pop	esi
	pop	ebx

; 399  : }

	ret	0
?Find_Object_With_Script@@YAPAEPBD@Z ENDP		; Find_Object_With_Script
_TEXT	ENDS
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
