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

	TITLE	c:\Develop\DScaler423a\DScaler\D3D9Output.cpp
	.686P
	.XMM
	include listing.inc
	.model	flat

INCLUDELIB OLDNAMES

PUBLIC	?InitOtherSettings@CD3D9Output@@UAEXXZ		; CD3D9Output::InitOtherSettings
PUBLIC	?Type@CD3D9Output@@UAE?AW4OUTPUTTYPES@IOutput@@XZ ; CD3D9Output::Type
PUBLIC	?Overlay_GetRGB@CD3D9Output@@UAEHXZ		; CD3D9Output::Overlay_GetRGB
PUBLIC	?Overlay_SetRGB@CD3D9Output@@UAEXH@Z		; CD3D9Output::Overlay_SetRGB
PUBLIC	?Overlay_Flip@CD3D9Output@@UAEHKHPAEHPAUTDeinterlaceInfo@@@Z ; CD3D9Output::Overlay_Flip
PUBLIC	?Overlay_Unlock@CD3D9Output@@UAEHXZ		; CD3D9Output::Overlay_Unlock
PUBLIC	?Overlay_Lock@CD3D9Output@@UAEHPAUTDeinterlaceInfo@@@Z ; CD3D9Output::Overlay_Lock
PUBLIC	?Overlay_Unlock_Back_Buffer@CD3D9Output@@UAEHH@Z ; CD3D9Output::Overlay_Unlock_Back_Buffer
PUBLIC	?Overlay_Lock_Back_Buffer@CD3D9Output@@UAEHPAUTDeinterlaceInfo@@H@Z ; CD3D9Output::Overlay_Lock_Back_Buffer
PUBLIC	?Overlay_SetColorControls@CD3D9Output@@UAEXXZ	; CD3D9Output::Overlay_SetColorControls
PUBLIC	?Overlay_GetCorrectedColor@CD3D9Output@@UAEKPAUHDC__@@@Z ; CD3D9Output::Overlay_GetCorrectedColor
PUBLIC	?Overlay_GetColor@CD3D9Output@@UAEKXZ		; CD3D9Output::Overlay_GetColor
PUBLIC	?Overlay_ColorMatch@CD3D9Output@@UAEKPAUIDirectDrawSurface@@K@Z ; CD3D9Output::Overlay_ColorMatch
PUBLIC	?Overlay_Destroy@CD3D9Output@@UAEHXZ		; CD3D9Output::Overlay_Destroy
PUBLIC	?Overlay_Clean@CD3D9Output@@UAEXXZ		; CD3D9Output::Overlay_Clean
PUBLIC	?Overlay_Create@CD3D9Output@@UAEHXZ		; CD3D9Output::Overlay_Create
PUBLIC	?Overlay_Update@CD3D9Output@@UAEHPAUtagRECT@@0K@Z ; CD3D9Output::Overlay_Update
PUBLIC	?OverlayActive@CD3D9Output@@UAEHXZ		; CD3D9Output::OverlayActive
PUBLIC	?CanDoOverlayColorControl@CD3D9Output@@UAEHXZ	; CD3D9Output::CanDoOverlayColorControl
PUBLIC	?InitDD@CD3D9Output@@UAEHPAUHWND__@@@Z		; CD3D9Output::InitDD
PUBLIC	?ExitDD@CD3D9Output@@UAEXXZ			; CD3D9Output::ExitDD
PUBLIC	?CheckChangeMonitor@CD3D9Output@@UAEXPAUHWND__@@@Z ; CD3D9Output::CheckChangeMonitor
PUBLIC	?SetCurrentMonitor@CD3D9Output@@UAEXPAUHWND__@@@Z ; CD3D9Output::SetCurrentMonitor
PUBLIC	??_R4CD3D9Output@@6B@				; CD3D9Output::`RTTI Complete Object Locator'
PUBLIC	??_R3CD3D9Output@@8				; CD3D9Output::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2CD3D9Output@@8				; CD3D9Output::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@IOutput@@8			; IOutput::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R3IOutput@@8					; IOutput::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2IOutput@@8					; IOutput::`RTTI Base Class Array'
PUBLIC	??_R0?AVIOutput@@@8				; IOutput `RTTI Type Descriptor'
PUBLIC	??_R1A@?0A@EA@CD3D9Output@@8			; CD3D9Output::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVCD3D9Output@@@8				; CD3D9Output `RTTI Type Descriptor'
PUBLIC	??B?$DynamicFunctionParent@P6GPAUIDirect3D9@@I@Z@@QBEHXZ ; DynamicFunctionParent<IDirect3D9 * (__stdcall*)(unsigned int)>::operator int
PUBLIC	??0?$DynamicFunctionParent@P6GPAUIDirect3D9@@I@Z@@QAE@PB_WPBD@Z ; DynamicFunctionParent<IDirect3D9 * (__stdcall*)(unsigned int)>::DynamicFunctionParent<IDirect3D9 * (__stdcall*)(unsigned int)>
PUBLIC	??0?$DynamicFunctionS1@PAUIDirect3D9@@I@@QAE@PB_WPBD@Z ; DynamicFunctionS1<IDirect3D9 *,unsigned int>::DynamicFunctionS1<IDirect3D9 *,unsigned int>
PUBLIC	??R?$DynamicFunctionS1@PAUIDirect3D9@@I@@QBEPAUIDirect3D9@@I@Z ; DynamicFunctionS1<IDirect3D9 *,unsigned int>::operator()
PUBLIC	?WaitForVerticalBlank@CD3D9Output@@UAEXXZ	; CD3D9Output::WaitForVerticalBlank
PUBLIC	??_GCD3D9Output@@UAEPAXI@Z			; CD3D9Output::`scalar deleting destructor'
PUBLIC	??_C@_1EA@GNOKPDEM@?$AAD?$AA3?$AAD?$AA?5?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAl?$AAo?$AAs?$AAt?$AA?5?$AA?4?$AA?4?$AA?5?$AAt?$AAr?$AAy?$AAi?$AAn?$AAg?$AA?5?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?$AA@ ; `string'
PUBLIC	??_C@_1EG@FHHJBIPN@?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAO?$AAf?$AAf?$AAs?$AAc?$AAr?$AAe?$AAe?$AAn?$AAP?$AAl?$AAa?$AAi?$AAn?$AAS?$AAu?$AAr?$AAf?$AAa?$AAc?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl@ ; `string'
PUBLIC	??_C@_1CC@BINOAKMK@?$AA?4?$AA?2?$AAD?$AA3?$AAD?$AA9?$AAO?$AAu?$AAt?$AAp?$AAu?$AAt?$AA?4?$AAc?$AAp?$AAp?$AA?$AA@ ; `string'
PUBLIC	??_C@_1DI@MIPNMNIB@?$AAC?$AAr?$AAe?$AAa?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAO?$AAS?$AAD?$AA?5?$AAt?$AAe?$AAx?$AAt?$AAu?$AAr?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1FA@DPDBJMGG@?$AAG?$AAe?$AAt?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAs?$AAu?$AAr?$AAf?$AAa?$AAc?$AAe?$AA?5?$AAf?$AAr?$AAo?$AAm?$AA?5?$AAO?$AAS?$AAD?$AA?5?$AAt?$AAe?$AAx?$AAt?$AAu?$AAr?$AAe@ ; `string'
PUBLIC	??_C@_1CM@BAPAHKME@?$AAU?$AAs?$AAi?$AAn?$AAg?$AA?5?$AAD?$AAi?$AAr?$AAe?$AAc?$AAt?$AA3?$AAD?$AA?5?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA?$AA@ ; `string'
PUBLIC	??_C@_1GK@DJFPGDL@?$AAC?$AAo?$AAu?$AAl?$AAd?$AAn?$AA?8?$AAt?$AA?5?$AAc?$AAr?$AAe?$AAa?$AAt?$AAe?$AA?5?$AAa?$AAd?$AAd?$AAi?$AAt?$AAi?$AAo?$AAn?$AAa?$AAl?$AA?5?$AAb?$AAu?$AAf?$AAf?$AAe@ ; `string'
PUBLIC	??_C@_1DM@KKHAPEAC@?$AAE?$AAx?$AAt?$AAr?$AAa?$AA?5?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?5?$AAh?$AAa?$AAs?$AA?5?$AAb?$AAe?$AAe?$AAn?$AA?5?$AAd?$AAe?$AAl?$AAe?$AAt?$AAe?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CA@FOFBHGNI@?$AAL?$AAo?$AAc?$AAk?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AA?$CF?$AA8?$AAx?$AA?$AA@ ; `string'
PUBLIC	??_C@_1FC@LMIJGEBA@?$AAC?$AAo?$AAu?$AAl?$AAd?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAc?$AAr?$AAe?$AAa?$AAt?$AAe?$AA?5?$AAS?$AAu?$AAr?$AAf?$AAa?$AAc?$AAe?$AA?5?$AAi?$AAn?$AA?5?$AAO?$AAv?$AAe?$AAr@ ; `string'
PUBLIC	??_C@_1DM@GOLELDDB@?$AAG?$AAe?$AAt?$AAF?$AAr?$AAo?$AAn?$AAt?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AAD?$AAa?$AAt?$AAa?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AA?$CF?$AA8?$AAx?$AA?$AA@ ; `string'
PUBLIC	??_C@_1EK@CECIBJJG@?$AAC?$AAo?$AAu?$AAl?$AAd?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAc?$AAo?$AAp?$AAy?$AA?5?$AAf?$AAr?$AAo?$AAn?$AAt?$AA?5?$AAb?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?5?$AAd?$AAa?$AAt?$AAa@ ; `string'
PUBLIC	??_C@_1BM@NONCMCIF@?$AAU?$AAn?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1FK@MIPPDDEH@?$AAD?$AA3?$AAD?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAh?$AAa?$AAs?$AA?5?$AAb?$AAe?$AAe?$AAn?$AA?5?$AAd?$AAe?$AAl?$AAe?$AAt?$AAe?$AAd?$AA?5?$AA?9?$AA?5?$AAt?$AAr?$AAy@ ; `string'
PUBLIC	??_C@_0BA@FAFMMBOF@Direct3DCreate9?$AA@		; `string'
PUBLIC	??_C@_1BC@CLHHAIAC@?$AAD?$AA3?$AAD?$AA9?$AA?4?$AAd?$AAl?$AAl?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CO@ILIDPNJO@?$AAD?$AAi?$AAr?$AAe?$AAc?$AAt?$AA3?$AAD?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AA9?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1DA@CAHLHNON@?$AAD?$AA3?$AAD?$AA?5?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_19JJIMJLJM@?$AAD?$AA3?$AAD?$AA9?$AA?$AA@	; `string'
PUBLIC	??_7CD3D9Output@@6B@				; CD3D9Output::`vftable'
EXTRN	__imp__MapWindowPoints@16:PROC
EXTRN	__imp__CopyRect@8:PROC
EXTRN	__imp__OffsetRect@12:PROC
EXTRN	??_ECD3D9Output@@UAEPAXI@Z:PROC			; CD3D9Output::`vector deleting destructor'
;	COMDAT ??_7CD3D9Output@@6B@
CONST	SEGMENT
??_7CD3D9Output@@6B@ DD FLAT:??_R4CD3D9Output@@6B@	; CD3D9Output::`vftable'
	DD	FLAT:??_ECD3D9Output@@UAEPAXI@Z
	DD	FLAT:?SetCurrentMonitor@CD3D9Output@@UAEXPAUHWND__@@@Z
	DD	FLAT:?CheckChangeMonitor@CD3D9Output@@UAEXPAUHWND__@@@Z
	DD	FLAT:?GetMonitorRect@IOutput@@UAEXPAUHWND__@@PAUtagRECT@@@Z
	DD	FLAT:?ExitDD@CD3D9Output@@UAEXXZ
	DD	FLAT:?InitDD@CD3D9Output@@UAEHPAUHWND__@@@Z
	DD	FLAT:?CanDoOverlayColorControl@CD3D9Output@@UAEHXZ
	DD	FLAT:?OverlayActive@CD3D9Output@@UAEHXZ
	DD	FLAT:?Overlay_Update@CD3D9Output@@UAEHPAUtagRECT@@0K@Z
	DD	FLAT:?Overlay_Create@CD3D9Output@@UAEHXZ
	DD	FLAT:?Overlay_Clean@CD3D9Output@@UAEXXZ
	DD	FLAT:?Overlay_Destroy@CD3D9Output@@UAEHXZ
	DD	FLAT:?Overlay_ColorMatch@CD3D9Output@@UAEKPAUIDirectDrawSurface@@K@Z
	DD	FLAT:?Overlay_GetColor@CD3D9Output@@UAEKXZ
	DD	FLAT:?Overlay_GetCorrectedColor@CD3D9Output@@UAEKPAUHDC__@@@Z
	DD	FLAT:?Overlay_SetColorControls@CD3D9Output@@UAEXXZ
	DD	FLAT:?Overlay_Lock_Back_Buffer@CD3D9Output@@UAEHPAUTDeinterlaceInfo@@H@Z
	DD	FLAT:?Overlay_Unlock_Back_Buffer@CD3D9Output@@UAEHH@Z
	DD	FLAT:?Overlay_Lock@CD3D9Output@@UAEHPAUTDeinterlaceInfo@@@Z
	DD	FLAT:?Overlay_Unlock@CD3D9Output@@UAEHXZ
	DD	FLAT:?Overlay_Flip@CD3D9Output@@UAEHKHPAEHPAUTDeinterlaceInfo@@@Z
	DD	FLAT:?WaitForVerticalBlank@CD3D9Output@@UAEXXZ
	DD	FLAT:?Overlay_SetRGB@CD3D9Output@@UAEXH@Z
	DD	FLAT:?Overlay_GetRGB@CD3D9Output@@UAEHXZ
	DD	FLAT:?Type@CD3D9Output@@UAE?AW4OUTPUTTYPES@IOutput@@XZ
	DD	FLAT:?InitOtherSettings@CD3D9Output@@UAEXXZ
CONST	ENDS
;	COMDAT ??_R4CD3D9Output@@6B@
rdata$r	SEGMENT
??_R4CD3D9Output@@6B@ DD 00H				; CD3D9Output::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCD3D9Output@@@8
	DD	FLAT:??_R3CD3D9Output@@8
rdata$r	ENDS
;	COMDAT ??_R3CD3D9Output@@8
rdata$r	SEGMENT
??_R3CD3D9Output@@8 DD 00H				; CD3D9Output::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2CD3D9Output@@8
rdata$r	ENDS
;	COMDAT ??_R2CD3D9Output@@8
rdata$r	SEGMENT
??_R2CD3D9Output@@8 DD FLAT:??_R1A@?0A@EA@CD3D9Output@@8 ; CD3D9Output::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@IOutput@@8
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@IOutput@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@IOutput@@8 DD FLAT:??_R0?AVIOutput@@@8	; IOutput::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3IOutput@@8
rdata$r	ENDS
;	COMDAT ??_R3IOutput@@8
rdata$r	SEGMENT
??_R3IOutput@@8 DD 00H					; IOutput::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2IOutput@@8
rdata$r	ENDS
;	COMDAT ??_R2IOutput@@8
rdata$r	SEGMENT
??_R2IOutput@@8 DD FLAT:??_R1A@?0A@EA@IOutput@@8	; IOutput::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R0?AVIOutput@@@8
_DATA	SEGMENT
??_R0?AVIOutput@@@8 DD FLAT:??_7type_info@@6B@		; IOutput `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVIOutput@@', 00H
_DATA	ENDS
;	COMDAT ??_R1A@?0A@EA@CD3D9Output@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@CD3D9Output@@8 DD FLAT:??_R0?AVCD3D9Output@@@8 ; CD3D9Output::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3CD3D9Output@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCD3D9Output@@@8
_DATA	SEGMENT
??_R0?AVCD3D9Output@@@8 DD FLAT:??_7type_info@@6B@	; CD3D9Output `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCD3D9Output@@', 00H
_DATA	ENDS
;	COMDAT ??_C@_19JJIMJLJM@?$AAD?$AA3?$AAD?$AA9?$AA?$AA@
CONST	SEGMENT
??_C@_19JJIMJLJM@?$AAD?$AA3?$AAD?$AA9?$AA?$AA@ DB 'D', 00H, '3', 00H, 'D', 00H
	DB	'9', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1DA@CAHLHNON@?$AAD?$AA3?$AAD?$AA?5?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1DA@CAHLHNON@?$AAD?$AA3?$AAD?$AA?5?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AA@ DB 'D'
	DB	00H, '3', 00H, 'D', 00H, ' ', 00H, 'C', 00H, 'r', 00H, 'e', 00H
	DB	'a', 00H, 't', 00H, 'e', 00H, 'D', 00H, 'e', 00H, 'v', 00H, 'i'
	DB	00H, 'c', 00H, 'e', 00H, ' ', 00H, 'f', 00H, 'a', 00H, 'i', 00H
	DB	'l', 00H, 'e', 00H, 'd', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1CO@ILIDPNJO@?$AAD?$AAi?$AAr?$AAe?$AAc?$AAt?$AA3?$AAD?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AA9?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1CO@ILIDPNJO@?$AAD?$AAi?$AAr?$AAe?$AAc?$AAt?$AA3?$AAD?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AA9?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AA@ DB 'D'
	DB	00H, 'i', 00H, 'r', 00H, 'e', 00H, 'c', 00H, 't', 00H, '3', 00H
	DB	'D', 00H, 'C', 00H, 'r', 00H, 'e', 00H, 'a', 00H, 't', 00H, 'e'
	DB	00H, '9', 00H, ' ', 00H, 'f', 00H, 'a', 00H, 'i', 00H, 'l', 00H
	DB	'e', 00H, 'd', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1BC@CLHHAIAC@?$AAD?$AA3?$AAD?$AA9?$AA?4?$AAd?$AAl?$AAl?$AA?$AA@
CONST	SEGMENT
??_C@_1BC@CLHHAIAC@?$AAD?$AA3?$AAD?$AA9?$AA?4?$AAd?$AAl?$AAl?$AA?$AA@ DB 'D'
	DB	00H, '3', 00H, 'D', 00H, '9', 00H, '.', 00H, 'd', 00H, 'l', 00H
	DB	'l', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BA@FAFMMBOF@Direct3DCreate9?$AA@
CONST	SEGMENT
??_C@_0BA@FAFMMBOF@Direct3DCreate9?$AA@ DB 'Direct3DCreate9', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1FK@MIPPDDEH@?$AAD?$AA3?$AAD?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAh?$AAa?$AAs?$AA?5?$AAb?$AAe?$AAe?$AAn?$AA?5?$AAd?$AAe?$AAl?$AAe?$AAt?$AAe?$AAd?$AA?5?$AA?9?$AA?5?$AAt?$AAr?$AAy@
CONST	SEGMENT
??_C@_1FK@MIPPDDEH@?$AAD?$AA3?$AAD?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAh?$AAa?$AAs?$AA?5?$AAb?$AAe?$AAe?$AAn?$AA?5?$AAd?$AAe?$AAl?$AAe?$AAt?$AAe?$AAd?$AA?5?$AA?9?$AA?5?$AAt?$AAr?$AAy@ DB 'D'
	DB	00H, '3', 00H, 'D', 00H, 'D', 00H, 'e', 00H, 'v', 00H, 'i', 00H
	DB	'c', 00H, 'e', 00H, ' ', 00H, 'h', 00H, 'a', 00H, 's', 00H, ' '
	DB	00H, 'b', 00H, 'e', 00H, 'e', 00H, 'n', 00H, ' ', 00H, 'd', 00H
	DB	'e', 00H, 'l', 00H, 'e', 00H, 't', 00H, 'e', 00H, 'd', 00H, ' '
	DB	00H, '-', 00H, ' ', 00H, 't', 00H, 'r', 00H, 'y', 00H, 'i', 00H
	DB	'n', 00H, 'g', 00H, ' ', 00H, 't', 00H, 'o', 00H, ' ', 00H, 'r'
	DB	00H, 'e', 00H, 's', 00H, 'e', 00H, 't', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1BM@NONCMCIF@?$AAU?$AAn?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1BM@NONCMCIF@?$AAU?$AAn?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AA@ DB 'U'
	DB	00H, 'n', 00H, 'l', 00H, 'o', 00H, 'c', 00H, 'k', 00H, ' ', 00H
	DB	'f', 00H, 'a', 00H, 'i', 00H, 'l', 00H, 'e', 00H, 'd', 00H, 00H
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_1EK@CECIBJJG@?$AAC?$AAo?$AAu?$AAl?$AAd?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAc?$AAo?$AAp?$AAy?$AA?5?$AAf?$AAr?$AAo?$AAn?$AAt?$AA?5?$AAb?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?5?$AAd?$AAa?$AAt?$AAa@
CONST	SEGMENT
??_C@_1EK@CECIBJJG@?$AAC?$AAo?$AAu?$AAl?$AAd?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAc?$AAo?$AAp?$AAy?$AA?5?$AAf?$AAr?$AAo?$AAn?$AAt?$AA?5?$AAb?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?5?$AAd?$AAa?$AAt?$AAa@ DB 'C'
	DB	00H, 'o', 00H, 'u', 00H, 'l', 00H, 'd', 00H, ' ', 00H, 'n', 00H
	DB	'o', 00H, 't', 00H, ' ', 00H, 'c', 00H, 'o', 00H, 'p', 00H, 'y'
	DB	00H, ' ', 00H, 'f', 00H, 'r', 00H, 'o', 00H, 'n', 00H, 't', 00H
	DB	' ', 00H, 'b', 00H, 'u', 00H, 'f', 00H, 'f', 00H, 'e', 00H, 'r'
	DB	00H, ' ', 00H, 'd', 00H, 'a', 00H, 't', 00H, 'a', 00H, ' ', 00H
	DB	'%', 00H, '8', 00H, 'x', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1DM@GOLELDDB@?$AAG?$AAe?$AAt?$AAF?$AAr?$AAo?$AAn?$AAt?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AAD?$AAa?$AAt?$AAa?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AA?$CF?$AA8?$AAx?$AA?$AA@
CONST	SEGMENT
??_C@_1DM@GOLELDDB@?$AAG?$AAe?$AAt?$AAF?$AAr?$AAo?$AAn?$AAt?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AAD?$AAa?$AAt?$AAa?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AA?$CF?$AA8?$AAx?$AA?$AA@ DB 'G'
	DB	00H, 'e', 00H, 't', 00H, 'F', 00H, 'r', 00H, 'o', 00H, 'n', 00H
	DB	't', 00H, 'B', 00H, 'u', 00H, 'f', 00H, 'f', 00H, 'e', 00H, 'r'
	DB	00H, 'D', 00H, 'a', 00H, 't', 00H, 'a', 00H, ' ', 00H, 'f', 00H
	DB	'a', 00H, 'i', 00H, 'l', 00H, 'e', 00H, 'd', 00H, ' ', 00H, '%'
	DB	00H, '8', 00H, 'x', 00H, 00H, 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_1FC@LMIJGEBA@?$AAC?$AAo?$AAu?$AAl?$AAd?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAc?$AAr?$AAe?$AAa?$AAt?$AAe?$AA?5?$AAS?$AAu?$AAr?$AAf?$AAa?$AAc?$AAe?$AA?5?$AAi?$AAn?$AA?5?$AAO?$AAv?$AAe?$AAr@
CONST	SEGMENT
??_C@_1FC@LMIJGEBA@?$AAC?$AAo?$AAu?$AAl?$AAd?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAc?$AAr?$AAe?$AAa?$AAt?$AAe?$AA?5?$AAS?$AAu?$AAr?$AAf?$AAa?$AAc?$AAe?$AA?5?$AAi?$AAn?$AA?5?$AAO?$AAv?$AAe?$AAr@ DB 'C'
	DB	00H, 'o', 00H, 'u', 00H, 'l', 00H, 'd', 00H, ' ', 00H, 'n', 00H
	DB	'o', 00H, 't', 00H, ' ', 00H, 'c', 00H, 'r', 00H, 'e', 00H, 'a'
	DB	00H, 't', 00H, 'e', 00H, ' ', 00H, 'S', 00H, 'u', 00H, 'r', 00H
	DB	'f', 00H, 'a', 00H, 'c', 00H, 'e', 00H, ' ', 00H, 'i', 00H, 'n'
	DB	00H, ' ', 00H, 'O', 00H, 'v', 00H, 'e', 00H, 'r', 00H, 'l', 00H
	DB	'a', 00H, 'y', 00H, '_', 00H, 'L', 00H, 'o', 00H, 'c', 00H, 'k'
	DB	00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1CA@FOFBHGNI@?$AAL?$AAo?$AAc?$AAk?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AA?$CF?$AA8?$AAx?$AA?$AA@
CONST	SEGMENT
??_C@_1CA@FOFBHGNI@?$AAL?$AAo?$AAc?$AAk?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AA?$CF?$AA8?$AAx?$AA?$AA@ DB 'L'
	DB	00H, 'o', 00H, 'c', 00H, 'k', 00H, ' ', 00H, 'f', 00H, 'a', 00H
	DB	'i', 00H, 'l', 00H, 'e', 00H, 'd', 00H, ' ', 00H, '%', 00H, '8'
	DB	00H, 'x', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1DM@KKHAPEAC@?$AAE?$AAx?$AAt?$AAr?$AAa?$AA?5?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?5?$AAh?$AAa?$AAs?$AA?5?$AAb?$AAe?$AAe?$AAn?$AA?5?$AAd?$AAe?$AAl?$AAe?$AAt?$AAe?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1DM@KKHAPEAC@?$AAE?$AAx?$AAt?$AAr?$AAa?$AA?5?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?5?$AAh?$AAa?$AAs?$AA?5?$AAb?$AAe?$AAe?$AAn?$AA?5?$AAd?$AAe?$AAl?$AAe?$AAt?$AAe?$AAd?$AA?$AA@ DB 'E'
	DB	00H, 'x', 00H, 't', 00H, 'r', 00H, 'a', 00H, ' ', 00H, 'B', 00H
	DB	'u', 00H, 'f', 00H, 'f', 00H, 'e', 00H, 'r', 00H, ' ', 00H, 'h'
	DB	00H, 'a', 00H, 's', 00H, ' ', 00H, 'b', 00H, 'e', 00H, 'e', 00H
	DB	'n', 00H, ' ', 00H, 'd', 00H, 'e', 00H, 'l', 00H, 'e', 00H, 't'
	DB	00H, 'e', 00H, 'd', 00H, 00H, 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_1GK@DJFPGDL@?$AAC?$AAo?$AAu?$AAl?$AAd?$AAn?$AA?8?$AAt?$AA?5?$AAc?$AAr?$AAe?$AAa?$AAt?$AAe?$AA?5?$AAa?$AAd?$AAd?$AAi?$AAt?$AAi?$AAo?$AAn?$AAa?$AAl?$AA?5?$AAb?$AAu?$AAf?$AAf?$AAe@
CONST	SEGMENT
??_C@_1GK@DJFPGDL@?$AAC?$AAo?$AAu?$AAl?$AAd?$AAn?$AA?8?$AAt?$AA?5?$AAc?$AAr?$AAe?$AAa?$AAt?$AAe?$AA?5?$AAa?$AAd?$AAd?$AAi?$AAt?$AAi?$AAo?$AAn?$AAa?$AAl?$AA?5?$AAb?$AAu?$AAf?$AAf?$AAe@ DB 'C'
	DB	00H, 'o', 00H, 'u', 00H, 'l', 00H, 'd', 00H, 'n', 00H, '''', 00H
	DB	't', 00H, ' ', 00H, 'c', 00H, 'r', 00H, 'e', 00H, 'a', 00H, 't'
	DB	00H, 'e', 00H, ' ', 00H, 'a', 00H, 'd', 00H, 'd', 00H, 'i', 00H
	DB	't', 00H, 'i', 00H, 'o', 00H, 'n', 00H, 'a', 00H, 'l', 00H, ' '
	DB	00H, 'b', 00H, 'u', 00H, 'f', 00H, 'f', 00H, 'e', 00H, 'r', 00H
	DB	' ', 00H, 'f', 00H, 'o', 00H, 'r', 00H, ' ', 00H, 'o', 00H, 'u'
	DB	00H, 't', 00H, 'p', 00H, 'u', 00H, 't', 00H, ' ', 00H, 'f', 00H
	DB	'i', 00H, 'l', 00H, 't', 00H, 'e', 00H, 'r', 00H, 's', 00H, 00H
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_1CM@BAPAHKME@?$AAU?$AAs?$AAi?$AAn?$AAg?$AA?5?$AAD?$AAi?$AAr?$AAe?$AAc?$AAt?$AA3?$AAD?$AA?5?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA?$AA@
CONST	SEGMENT
??_C@_1CM@BAPAHKME@?$AAU?$AAs?$AAi?$AAn?$AAg?$AA?5?$AAD?$AAi?$AAr?$AAe?$AAc?$AAt?$AA3?$AAD?$AA?5?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA?$AA@ DB 'U'
	DB	00H, 's', 00H, 'i', 00H, 'n', 00H, 'g', 00H, ' ', 00H, 'D', 00H
	DB	'i', 00H, 'r', 00H, 'e', 00H, 'c', 00H, 't', 00H, '3', 00H, 'D'
	DB	00H, ' ', 00H, 'o', 00H, 'u', 00H, 't', 00H, 'p', 00H, 'u', 00H
	DB	't', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1FA@DPDBJMGG@?$AAG?$AAe?$AAt?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAs?$AAu?$AAr?$AAf?$AAa?$AAc?$AAe?$AA?5?$AAf?$AAr?$AAo?$AAm?$AA?5?$AAO?$AAS?$AAD?$AA?5?$AAt?$AAe?$AAx?$AAt?$AAu?$AAr?$AAe@
CONST	SEGMENT
??_C@_1FA@DPDBJMGG@?$AAG?$AAe?$AAt?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAs?$AAu?$AAr?$AAf?$AAa?$AAc?$AAe?$AA?5?$AAf?$AAr?$AAo?$AAm?$AA?5?$AAO?$AAS?$AAD?$AA?5?$AAt?$AAe?$AAx?$AAt?$AAu?$AAr?$AAe@ DB 'G'
	DB	00H, 'e', 00H, 't', 00H, 't', 00H, 'i', 00H, 'n', 00H, 'g', 00H
	DB	' ', 00H, 's', 00H, 'u', 00H, 'r', 00H, 'f', 00H, 'a', 00H, 'c'
	DB	00H, 'e', 00H, ' ', 00H, 'f', 00H, 'r', 00H, 'o', 00H, 'm', 00H
	DB	' ', 00H, 'O', 00H, 'S', 00H, 'D', 00H, ' ', 00H, 't', 00H, 'e'
	DB	00H, 'x', 00H, 't', 00H, 'u', 00H, 'r', 00H, 'e', 00H, ' ', 00H
	DB	'f', 00H, 'a', 00H, 'i', 00H, 'l', 00H, 'e', 00H, 'd', 00H, 00H
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_1DI@MIPNMNIB@?$AAC?$AAr?$AAe?$AAa?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAO?$AAS?$AAD?$AA?5?$AAt?$AAe?$AAx?$AAt?$AAu?$AAr?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1DI@MIPNMNIB@?$AAC?$AAr?$AAe?$AAa?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAO?$AAS?$AAD?$AA?5?$AAt?$AAe?$AAx?$AAt?$AAu?$AAr?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AA@ DB 'C'
	DB	00H, 'r', 00H, 'e', 00H, 'a', 00H, 't', 00H, 'i', 00H, 'n', 00H
	DB	'g', 00H, ' ', 00H, 'O', 00H, 'S', 00H, 'D', 00H, ' ', 00H, 't'
	DB	00H, 'e', 00H, 'x', 00H, 't', 00H, 'u', 00H, 'r', 00H, 'e', 00H
	DB	' ', 00H, 'f', 00H, 'a', 00H, 'i', 00H, 'l', 00H, 'e', 00H, 'd'
	DB	00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1CC@BINOAKMK@?$AA?4?$AA?2?$AAD?$AA3?$AAD?$AA9?$AAO?$AAu?$AAt?$AAp?$AAu?$AAt?$AA?4?$AAc?$AAp?$AAp?$AA?$AA@
CONST	SEGMENT
??_C@_1CC@BINOAKMK@?$AA?4?$AA?2?$AAD?$AA3?$AAD?$AA9?$AAO?$AAu?$AAt?$AAp?$AAu?$AAt?$AA?4?$AAc?$AAp?$AAp?$AA?$AA@ DB '.'
	DB	00H, '\', 00H, 'D', 00H, '3', 00H, 'D', 00H, '9', 00H, 'O', 00H
	DB	'u', 00H, 't', 00H, 'p', 00H, 'u', 00H, 't', 00H, '.', 00H, 'c'
	DB	00H, 'p', 00H, 'p', 00H, 00H, 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_1EG@FHHJBIPN@?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAO?$AAf?$AAf?$AAs?$AAc?$AAr?$AAe?$AAe?$AAn?$AAP?$AAl?$AAa?$AAi?$AAn?$AAS?$AAu?$AAr?$AAf?$AAa?$AAc?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl@
CONST	SEGMENT
??_C@_1EG@FHHJBIPN@?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAO?$AAf?$AAf?$AAs?$AAc?$AAr?$AAe?$AAe?$AAn?$AAP?$AAl?$AAa?$AAi?$AAn?$AAS?$AAu?$AAr?$AAf?$AAa?$AAc?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl@ DB 'C'
	DB	00H, 'r', 00H, 'e', 00H, 'a', 00H, 't', 00H, 'e', 00H, 'O', 00H
	DB	'f', 00H, 'f', 00H, 's', 00H, 'c', 00H, 'r', 00H, 'e', 00H, 'e'
	DB	00H, 'n', 00H, 'P', 00H, 'l', 00H, 'a', 00H, 'i', 00H, 'n', 00H
	DB	'S', 00H, 'u', 00H, 'r', 00H, 'f', 00H, 'a', 00H, 'c', 00H, 'e'
	DB	00H, ' ', 00H, 'f', 00H, 'a', 00H, 'i', 00H, 'l', 00H, 'e', 00H
	DB	'd', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1EA@GNOKPDEM@?$AAD?$AA3?$AAD?$AA?5?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAl?$AAo?$AAs?$AAt?$AA?5?$AA?4?$AA?4?$AA?5?$AAt?$AAr?$AAy?$AAi?$AAn?$AAg?$AA?5?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?$AA@
CONST	SEGMENT
??_C@_1EA@GNOKPDEM@?$AAD?$AA3?$AAD?$AA?5?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAl?$AAo?$AAs?$AAt?$AA?5?$AA?4?$AA?4?$AA?5?$AAt?$AAr?$AAy?$AAi?$AAn?$AAg?$AA?5?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?$AA@ DB 'D'
	DB	00H, '3', 00H, 'D', 00H, ' ', 00H, 'D', 00H, 'e', 00H, 'v', 00H
	DB	'i', 00H, 'c', 00H, 'e', 00H, ' ', 00H, 'l', 00H, 'o', 00H, 's'
	DB	00H, 't', 00H, ' ', 00H, '.', 00H, '.', 00H, ' ', 00H, 't', 00H
	DB	'r', 00H, 'y', 00H, 'i', 00H, 'n', 00H, 'g', 00H, ' ', 00H, 'r'
	DB	00H, 'e', 00H, 's', 00H, 'e', 00H, 't', 00H, 00H, 00H ; `string'
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\dynamicfunction.h
;	COMDAT ??B?$DynamicFunctionParent@P6GPAUIDirect3D9@@I@Z@@QBEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
??B?$DynamicFunctionParent@P6GPAUIDirect3D9@@I@Z@@QBEHXZ PROC ; DynamicFunctionParent<IDirect3D9 * (__stdcall*)(unsigned int)>::operator int, COMDAT
; _this$ = ecx

; 39   :     {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 40   :         return m_pFunc != 0;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	33 c9		 xor	 ecx, ecx
  0000c	83 38 00	 cmp	 DWORD PTR [eax], 0
  0000f	0f 95 c1	 setne	 cl
  00012	8b c1		 mov	 eax, ecx

; 41   :     }

  00014	8b e5		 mov	 esp, ebp
  00016	5d		 pop	 ebp
  00017	c3		 ret	 0
??B?$DynamicFunctionParent@P6GPAUIDirect3D9@@I@Z@@QBEHXZ ENDP ; DynamicFunctionParent<IDirect3D9 * (__stdcall*)(unsigned int)>::operator int
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ??R?$DynamicFunctionS1@PAUIDirect3D9@@I@@QBEPAUIDirect3D9@@I@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_Param1$ = 8						; size = 4
??R?$DynamicFunctionS1@PAUIDirect3D9@@I@@QBEPAUIDirect3D9@@I@Z PROC ; DynamicFunctionS1<IDirect3D9 *,unsigned int>::operator(), COMDAT
; _this$ = ecx

; 90   :     {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 91   :         return m_pFunc(Param1);

  00007	8b 45 08	 mov	 eax, DWORD PTR _Param1$[ebp]
  0000a	50		 push	 eax
  0000b	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000e	8b 11		 mov	 edx, DWORD PTR [ecx]
  00010	ff d2		 call	 edx

; 92   :     }

  00012	8b e5		 mov	 esp, ebp
  00014	5d		 pop	 ebp
  00015	c2 04 00	 ret	 4
??R?$DynamicFunctionS1@PAUIDirect3D9@@I@@QBEPAUIDirect3D9@@I@Z ENDP ; DynamicFunctionS1<IDirect3D9 *,unsigned int>::operator()
_TEXT	ENDS
PUBLIC	?D3D9_GetSetting@@YAPAUSETTING@@W4OTHER_SETTING@@@Z ; D3D9_GetSetting
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\d3d9output.cpp
;	COMDAT ?D3D9_GetSetting@@YAPAUSETTING@@W4OTHER_SETTING@@@Z
_TEXT	SEGMENT
_Setting$ = 8						; size = 4
?D3D9_GetSetting@@YAPAUSETTING@@W4OTHER_SETTING@@@Z PROC ; D3D9_GetSetting, COMDAT

; 761  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp

; 762  :     if(Setting > -1 && Setting < OTHER_SETTING_LASTONE)

  00003	83 7d 08 ff	 cmp	 DWORD PTR _Setting$[ebp], -1
  00007	7e 1c		 jle	 SHORT $LN2@D3D9_GetSe
  00009	83 7d 08 0a	 cmp	 DWORD PTR _Setting$[ebp], 10 ; 0000000aH
  0000d	7d 16		 jge	 SHORT $LN2@D3D9_GetSe

; 763  :     {
; 764  :         return &(D3D9OutputInstance.GetOtherSettings()[Setting]);

  0000f	b9 00 00 00 00	 mov	 ecx, OFFSET ?D3D9OutputInstance@@3VCD3D9Output@@A ; D3D9OutputInstance
  00014	e8 00 00 00 00	 call	 ?GetOtherSettings@IOutput@@QAEPAUSETTING@@XZ ; IOutput::GetOtherSettings
  00019	8b 4d 08	 mov	 ecx, DWORD PTR _Setting$[ebp]
  0001c	6b c9 34	 imul	 ecx, 52			; 00000034H
  0001f	03 c1		 add	 eax, ecx
  00021	eb 04		 jmp	 SHORT $LN3@D3D9_GetSe

; 765  :     }
; 766  :     else

  00023	eb 02		 jmp	 SHORT $LN3@D3D9_GetSe
$LN2@D3D9_GetSe:

; 767  :     {
; 768  :         return NULL;

  00025	33 c0		 xor	 eax, eax
$LN3@D3D9_GetSe:

; 769  :     }
; 770  : }

  00027	5d		 pop	 ebp
  00028	c3		 ret	 0
?D3D9_GetSetting@@YAPAUSETTING@@W4OTHER_SETTING@@@Z ENDP ; D3D9_GetSetting
_TEXT	ENDS
PUBLIC	??0CD3D9Output@@QAE@XZ				; CD3D9Output::CD3D9Output
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??0CD3D9Output@@QAE@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??0CD3D9Output@@QAE@XZ$0
__ehfuncinfo$??0CD3D9Output@@QAE@XZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$??0CD3D9Output@@QAE@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??0CD3D9Output@@QAE@XZ
_TEXT	SEGMENT
_this$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
??0CD3D9Output@@QAE@XZ PROC				; CD3D9Output::CD3D9Output, COMDAT
; _this$ = ecx

; 730  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??0CD3D9Output@@QAE@XZ
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	51		 push	 ecx
  00012	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  00017	33 c5		 xor	 eax, ebp
  00019	50		 push	 eax
  0001a	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  0001d	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00023	89 4d f0	 mov	 DWORD PTR _this$[ebp], ecx
  00026	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00029	e8 00 00 00 00	 call	 ??0IOutput@@QAE@XZ	; IOutput::IOutput
  0002e	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  00035	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00038	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], OFFSET ??_7CD3D9Output@@6B@

; 731  :     g_pD3D=NULL;

  0003e	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00041	c7 81 30 02 00
	00 00 00 00 00	 mov	 DWORD PTR [ecx+560], 0

; 732  :     pDevice=NULL;

  0004b	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  0004e	c7 82 cc 04 00
	00 00 00 00 00	 mov	 DWORD PTR [edx+1228], 0

; 733  :     lpDDOverlay=NULL;

  00058	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  0005b	c7 80 34 02 00
	00 00 00 00 00	 mov	 DWORD PTR [eax+564], 0

; 734  :     SrcSizeAlign = 1;

  00065	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00068	c7 81 14 02 00
	00 01 00 00 00	 mov	 DWORD PTR [ecx+532], 1

; 735  :     DestSizeAlign = 1;

  00072	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  00075	c7 82 10 02 00
	00 01 00 00 00	 mov	 DWORD PTR [edx+528], 1

; 736  :     memset(&srcrect, 0, sizeof(RECT));

  0007f	6a 10		 push	 16			; 00000010H
  00081	6a 00		 push	 0
  00083	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00086	05 4c 04 00 00	 add	 eax, 1100		; 0000044cH
  0008b	50		 push	 eax
  0008c	e8 00 00 00 00	 call	 _memset
  00091	83 c4 0c	 add	 esp, 12			; 0000000cH

; 737  :     memset(&destrect, 0, sizeof(RECT));

  00094	6a 10		 push	 16			; 00000010H
  00096	6a 00		 push	 0
  00098	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0009b	81 c1 5c 04 00
	00		 add	 ecx, 1116		; 0000045cH
  000a1	51		 push	 ecx
  000a2	e8 00 00 00 00	 call	 _memset
  000a7	83 c4 0c	 add	 esp, 12			; 0000000cH

; 738  :     m_FramesPresented=0;

  000aa	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  000ad	c7 82 b0 04 00
	00 00 00 00 00	 mov	 DWORD PTR [edx+1200], 0
  000b7	c7 82 b4 04 00
	00 00 00 00 00	 mov	 DWORD PTR [edx+1204], 0

; 739  :     FlipResult=S_OK;

  000c1	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  000c4	c7 80 c0 04 00
	00 00 00 00 00	 mov	 DWORD PTR [eax+1216], 0

; 740  :     hCurrentMon =NULL;

  000ce	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000d1	c7 81 c4 04 00
	00 00 00 00 00	 mov	 DWORD PTR [ecx+1220], 0

; 741  :     lpDDFrontBuffer=NULL;

  000db	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  000de	c7 82 3c 02 00
	00 00 00 00 00	 mov	 DWORD PTR [edx+572], 0

; 742  :     bIsRGB = FALSE;

  000e8	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  000eb	c7 80 c8 04 00
	00 00 00 00 00	 mov	 DWORD PTR [eax+1224], 0

; 743  : 
; 744  :     // MH: removed as scaling between mulktiple buffer sizes leads to aliasing artefacts
; 745  : 	//BUFFERWIDTH=GetSystemMetrics(SM_CXFULLSCREEN);
; 746  :     //BUFFERHEIGHT=GetSystemMetrics(SM_CYFULLSCREEN);
; 747  : 	// to prevent 
; 748  :     BUFFERWIDTH=DSCALER_MAX_WIDTH;

  000f5	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000f8	c7 81 b8 04 00
	00 00 0f 00 00	 mov	 DWORD PTR [ecx+1208], 3840 ; 00000f00H

; 749  :     BUFFERHEIGHT=DSCALER_MAX_HEIGHT;

  00102	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  00105	c7 82 bc 04 00
	00 70 08 00 00	 mov	 DWORD PTR [edx+1212], 2160 ; 00000870H

; 750  : 
; 751  :     InitializeCriticalSection(&hDDCritSect);

  0010f	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00112	05 18 02 00 00	 add	 eax, 536		; 00000218H
  00117	50		 push	 eax
  00118	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__InitializeCriticalSection@4

; 752  : }

  0011e	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  00125	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00128	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  0012b	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  00132	59		 pop	 ecx
  00133	8b e5		 mov	 esp, ebp
  00135	5d		 pop	 ebp
  00136	c3		 ret	 0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??0CD3D9Output@@QAE@XZ$0:
  00000	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1IOutput@@UAE@XZ	; IOutput::~IOutput
__ehhandler$??0CD3D9Output@@QAE@XZ:
  00008	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  0000c	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  0000f	8b 4a f8	 mov	 ecx, DWORD PTR [edx-8]
  00012	33 c8		 xor	 ecx, eax
  00014	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00019	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$??0CD3D9Output@@QAE@XZ
  0001e	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??0CD3D9Output@@QAE@XZ ENDP				; CD3D9Output::CD3D9Output
; Function compile flags: /Odtp
;	COMDAT ?InitOtherSettings@CD3D9Output@@UAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?InitOtherSettings@CD3D9Output@@UAEXXZ PROC		; CD3D9Output::InitOtherSettings, COMDAT
; _this$ = ecx

; 725  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 726  : }

  00007	8b e5		 mov	 esp, ebp
  00009	5d		 pop	 ebp
  0000a	c3		 ret	 0
?InitOtherSettings@CD3D9Output@@UAEXXZ ENDP		; CD3D9Output::InitOtherSettings
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Type@CD3D9Output@@UAE?AW4OUTPUTTYPES@IOutput@@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Type@CD3D9Output@@UAE?AW4OUTPUTTYPES@IOutput@@XZ PROC	; CD3D9Output::Type, COMDAT
; _this$ = ecx

; 720  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 721  :     return OUT_D3D;

  00007	b8 01 00 00 00	 mov	 eax, 1

; 722  : }

  0000c	8b e5		 mov	 esp, ebp
  0000e	5d		 pop	 ebp
  0000f	c3		 ret	 0
?Type@CD3D9Output@@UAE?AW4OUTPUTTYPES@IOutput@@XZ ENDP	; CD3D9Output::Type
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?ExitDD@CD3D9Output@@UAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?ExitDD@CD3D9Output@@UAEXXZ PROC			; CD3D9Output::ExitDD, COMDAT
; _this$ = ecx

; 697  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 698  :     Overlay_Destroy();

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 10		 mov	 edx, DWORD PTR [eax]
  0000c	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000f	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  00012	ff d0		 call	 eax

; 699  : 
; 700  :     EnterCriticalSection(&hDDCritSect);

  00014	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00017	81 c1 18 02 00
	00		 add	 ecx, 536		; 00000218H
  0001d	51		 push	 ecx
  0001e	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__EnterCriticalSection@4

; 701  :     if(pDevice!=NULL)

  00024	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00027	83 ba cc 04 00
	00 00		 cmp	 DWORD PTR [edx+1228], 0
  0002e	74 27		 je	 SHORT $LN2@ExitDD@2

; 702  :     {
; 703  :         pDevice->Release();

  00030	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00033	8b 88 cc 04 00
	00		 mov	 ecx, DWORD PTR [eax+1228]
  00039	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0003c	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  00042	8b 09		 mov	 ecx, DWORD PTR [ecx]
  00044	50		 push	 eax
  00045	8b 51 08	 mov	 edx, DWORD PTR [ecx+8]
  00048	ff d2		 call	 edx

; 704  :         pDevice=NULL;

  0004a	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0004d	c7 80 cc 04 00
	00 00 00 00 00	 mov	 DWORD PTR [eax+1228], 0
$LN2@ExitDD@2:

; 705  :     }
; 706  : 
; 707  :     if(g_pD3D!=NULL)

  00057	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0005a	83 b9 30 02 00
	00 00		 cmp	 DWORD PTR [ecx+560], 0
  00061	74 27		 je	 SHORT $LN1@ExitDD@2

; 708  :     {
; 709  :         g_pD3D->Release();

  00063	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00066	8b 82 30 02 00
	00		 mov	 eax, DWORD PTR [edx+560]
  0006c	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0006f	8b 91 30 02 00
	00		 mov	 edx, DWORD PTR [ecx+560]
  00075	8b 00		 mov	 eax, DWORD PTR [eax]
  00077	52		 push	 edx
  00078	8b 48 08	 mov	 ecx, DWORD PTR [eax+8]
  0007b	ff d1		 call	 ecx

; 710  :         g_pD3D=NULL;

  0007d	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00080	c7 82 30 02 00
	00 00 00 00 00	 mov	 DWORD PTR [edx+560], 0
$LN1@ExitDD@2:

; 711  :     }
; 712  : 
; 713  :     OffscreenHDC.ReleaseD3DBuffer();

  0008a	b9 00 00 00 00	 mov	 ecx, OFFSET ?OffscreenHDC@@3VCPaintingHDC@@A ; OffscreenHDC
  0008f	e8 00 00 00 00	 call	 ?ReleaseD3DBuffer@CPaintingHDC@@QAEXXZ ; CPaintingHDC::ReleaseD3DBuffer

; 714  : 
; 715  :     LeaveCriticalSection(&hDDCritSect);

  00094	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00097	05 18 02 00 00	 add	 eax, 536		; 00000218H
  0009c	50		 push	 eax
  0009d	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 716  : }

  000a3	8b e5		 mov	 esp, ebp
  000a5	5d		 pop	 ebp
  000a6	c3		 ret	 0
?ExitDD@CD3D9Output@@UAEXXZ ENDP			; CD3D9Output::ExitDD
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Overlay_GetRGB@CD3D9Output@@UAEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Overlay_GetRGB@CD3D9Output@@UAEHXZ PROC		; CD3D9Output::Overlay_GetRGB, COMDAT
; _this$ = ecx

; 692  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 693  :     return bIsRGB;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 80 c8 04 00
	00		 mov	 eax, DWORD PTR [eax+1224]

; 694  : }

  00010	8b e5		 mov	 esp, ebp
  00012	5d		 pop	 ebp
  00013	c3		 ret	 0
?Overlay_GetRGB@CD3D9Output@@UAEHXZ ENDP		; CD3D9Output::Overlay_GetRGB
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Overlay_SetRGB@CD3D9Output@@UAEXH@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_IsRGB$ = 8						; size = 4
?Overlay_SetRGB@CD3D9Output@@UAEXH@Z PROC		; CD3D9Output::Overlay_SetRGB, COMDAT
; _this$ = ecx

; 687  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 688  :     bIsRGB = IsRGB;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 4d 08	 mov	 ecx, DWORD PTR _IsRGB$[ebp]
  0000d	89 88 c8 04 00
	00		 mov	 DWORD PTR [eax+1224], ecx

; 689  : }

  00013	8b e5		 mov	 esp, ebp
  00015	5d		 pop	 ebp
  00016	c2 04 00	 ret	 4
?Overlay_SetRGB@CD3D9Output@@UAEXH@Z ENDP		; CD3D9Output::Overlay_SetRGB
_TEXT	ENDS
PUBLIC	?Overlay_Copy_External@CD3D9Output@@QAEXPAEHPAUTDeinterlaceInfo@@@Z ; CD3D9Output::Overlay_Copy_External
; Function compile flags: /Odtp
;	COMDAT ?Overlay_Copy_External@CD3D9Output@@QAEXPAEHPAUTDeinterlaceInfo@@@Z
_TEXT	SEGMENT
_this$ = -20						; size = 4
_i$147443 = -16						; size = 4
_ToPtr$147442 = -12					; size = 4
_FromPtr$ = -8						; size = 4
_FromPitch$ = -4					; size = 4
_lpExternalMemoryBuffer$ = 8				; size = 4
_ExternalPitch$ = 12					; size = 4
_pInfo$ = 16						; size = 4
?Overlay_Copy_External@CD3D9Output@@QAEXPAEHPAUTDeinterlaceInfo@@@Z PROC ; CD3D9Output::Overlay_Copy_External, COMDAT
; _this$ = ecx

; 538  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 14	 sub	 esp, 20			; 00000014H
  00006	89 4d ec	 mov	 DWORD PTR _this$[ebp], ecx

; 539  :     BYTE* FromPtr = lpExternalMemoryBuffer + (16 - ((DWORD)lpExternalMemoryBuffer % 16));

  00009	8b 45 08	 mov	 eax, DWORD PTR _lpExternalMemoryBuffer$[ebp]
  0000c	33 d2		 xor	 edx, edx
  0000e	b9 10 00 00 00	 mov	 ecx, 16			; 00000010H
  00013	f7 f1		 div	 ecx
  00015	b8 10 00 00 00	 mov	 eax, 16			; 00000010H
  0001a	2b c2		 sub	 eax, edx
  0001c	03 45 08	 add	 eax, DWORD PTR _lpExternalMemoryBuffer$[ebp]
  0001f	89 45 f8	 mov	 DWORD PTR _FromPtr$[ebp], eax

; 540  :     long FromPitch = ExternalPitch;

  00022	8b 4d 0c	 mov	 ecx, DWORD PTR _ExternalPitch$[ebp]
  00025	89 4d fc	 mov	 DWORD PTR _FromPitch$[ebp], ecx

; 541  :     // careful as we need to ensure this is always unlocked
; 542  :     if(Overlay_Lock_Back_Buffer(pInfo, FALSE))

  00028	6a 00		 push	 0
  0002a	8b 55 10	 mov	 edx, DWORD PTR _pInfo$[ebp]
  0002d	52		 push	 edx
  0002e	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00031	8b 10		 mov	 edx, DWORD PTR [eax]
  00033	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00036	8b 42 40	 mov	 eax, DWORD PTR [edx+64]
  00039	ff d0		 call	 eax
  0003b	85 c0		 test	 eax, eax
  0003d	74 68		 je	 SHORT $LN5@Overlay_Co@3

; 543  :     {
; 544  :         BYTE* ToPtr = pInfo->Overlay;

  0003f	8b 4d 10	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  00042	8b 51 2c	 mov	 edx, DWORD PTR [ecx+44]
  00045	89 55 f4	 mov	 DWORD PTR _ToPtr$147442[ebp], edx

; 545  : 
; 546  :         for(int i(0) ; i < pInfo->FrameHeight; ++i)

  00048	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _i$147443[ebp], 0
  0004f	eb 09		 jmp	 SHORT $LN3@Overlay_Co@3
$LN2@Overlay_Co@3:
  00051	8b 45 f0	 mov	 eax, DWORD PTR _i$147443[ebp]
  00054	83 c0 01	 add	 eax, 1
  00057	89 45 f0	 mov	 DWORD PTR _i$147443[ebp], eax
$LN3@Overlay_Co@3:
  0005a	8b 4d 10	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  0005d	8b 55 f0	 mov	 edx, DWORD PTR _i$147443[ebp]
  00060	3b 51 50	 cmp	 edx, DWORD PTR [ecx+80]
  00063	7d 31		 jge	 SHORT $LN1@Overlay_Co@3

; 547  :         {
; 548  :             pInfo->pMemcpy(ToPtr, FromPtr, pInfo->LineLength);

  00065	8b 45 10	 mov	 eax, DWORD PTR _pInfo$[ebp]
  00068	8b 48 48	 mov	 ecx, DWORD PTR [eax+72]
  0006b	51		 push	 ecx
  0006c	8b 55 f8	 mov	 edx, DWORD PTR _FromPtr$[ebp]
  0006f	52		 push	 edx
  00070	8b 45 f4	 mov	 eax, DWORD PTR _ToPtr$147442[ebp]
  00073	50		 push	 eax
  00074	8b 4d 10	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  00077	8b 51 60	 mov	 edx, DWORD PTR [ecx+96]
  0007a	ff d2		 call	 edx
  0007c	83 c4 0c	 add	 esp, 12			; 0000000cH

; 549  :             FromPtr += FromPitch;

  0007f	8b 45 f8	 mov	 eax, DWORD PTR _FromPtr$[ebp]
  00082	03 45 fc	 add	 eax, DWORD PTR _FromPitch$[ebp]
  00085	89 45 f8	 mov	 DWORD PTR _FromPtr$[ebp], eax

; 550  :             ToPtr += pInfo->OverlayPitch;

  00088	8b 4d 10	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  0008b	8b 55 f4	 mov	 edx, DWORD PTR _ToPtr$147442[ebp]
  0008e	03 51 44	 add	 edx, DWORD PTR [ecx+68]
  00091	89 55 f4	 mov	 DWORD PTR _ToPtr$147442[ebp], edx

; 551  :         }

  00094	eb bb		 jmp	 SHORT $LN2@Overlay_Co@3
$LN1@Overlay_Co@3:

; 552  :         DO_EMMS;

  00096	0f 77		 emms

; 553  : 
; 554  :         Overlay_Unlock_Back_Buffer(FALSE);

  00098	6a 00		 push	 0
  0009a	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  0009d	8b 10		 mov	 edx, DWORD PTR [eax]
  0009f	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  000a2	8b 42 44	 mov	 eax, DWORD PTR [edx+68]
  000a5	ff d0		 call	 eax
$LN5@Overlay_Co@3:

; 555  :     }
; 556  : }

  000a7	8b e5		 mov	 esp, ebp
  000a9	5d		 pop	 ebp
  000aa	c2 0c 00	 ret	 12			; 0000000cH
?Overlay_Copy_External@CD3D9Output@@QAEXPAEHPAUTDeinterlaceInfo@@@Z ENDP ; CD3D9Output::Overlay_Copy_External
_TEXT	ENDS
PUBLIC	?OSD_GetRect@CD3D9Output@@QAE?AUtagRECT@@XZ	; CD3D9Output::OSD_GetRect
; Function compile flags: /Odtp
;	COMDAT ?OSD_GetRect@CD3D9Output@@QAE?AUtagRECT@@XZ
_TEXT	SEGMENT
_this$ = -20						; size = 4
_r$ = -16						; size = 16
___$ReturnUdt$ = 8					; size = 4
?OSD_GetRect@CD3D9Output@@QAE?AUtagRECT@@XZ PROC	; CD3D9Output::OSD_GetRect, COMDAT
; _this$ = ecx

; 528  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 14	 sub	 esp, 20			; 00000014H
  00006	89 4d ec	 mov	 DWORD PTR _this$[ebp], ecx

; 529  : 	RECT r;
; 530  : 	r.left = 0;

  00009	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _r$[ebp], 0

; 531  : 	r.right = BUFFERWIDTH;

  00010	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00013	8b 88 b8 04 00
	00		 mov	 ecx, DWORD PTR [eax+1208]
  00019	89 4d f8	 mov	 DWORD PTR _r$[ebp+8], ecx

; 532  : 	r.top = 0;

  0001c	c7 45 f4 00 00
	00 00		 mov	 DWORD PTR _r$[ebp+4], 0

; 533  : 	r.bottom = BUFFERHEIGHT;

  00023	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  00026	8b 82 bc 04 00
	00		 mov	 eax, DWORD PTR [edx+1212]
  0002c	89 45 fc	 mov	 DWORD PTR _r$[ebp+12], eax

; 534  :     return r;

  0002f	8b 4d 08	 mov	 ecx, DWORD PTR ___$ReturnUdt$[ebp]
  00032	8b 55 f0	 mov	 edx, DWORD PTR _r$[ebp]
  00035	89 11		 mov	 DWORD PTR [ecx], edx
  00037	8b 45 f4	 mov	 eax, DWORD PTR _r$[ebp+4]
  0003a	89 41 04	 mov	 DWORD PTR [ecx+4], eax
  0003d	8b 55 f8	 mov	 edx, DWORD PTR _r$[ebp+8]
  00040	89 51 08	 mov	 DWORD PTR [ecx+8], edx
  00043	8b 45 fc	 mov	 eax, DWORD PTR _r$[ebp+12]
  00046	89 41 0c	 mov	 DWORD PTR [ecx+12], eax
  00049	8b 45 08	 mov	 eax, DWORD PTR ___$ReturnUdt$[ebp]

; 535  : }

  0004c	8b e5		 mov	 esp, ebp
  0004e	5d		 pop	 ebp
  0004f	c2 04 00	 ret	 4
?OSD_GetRect@CD3D9Output@@QAE?AUtagRECT@@XZ ENDP	; CD3D9Output::OSD_GetRect
_TEXT	ENDS
PUBLIC	?Overlay_GetCurrentSrcRect@CD3D9Output@@QAE?AUtagRECT@@XZ ; CD3D9Output::Overlay_GetCurrentSrcRect
; Function compile flags: /Odtp
;	COMDAT ?Overlay_GetCurrentSrcRect@CD3D9Output@@QAE?AUtagRECT@@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
___$ReturnUdt$ = 8					; size = 4
?Overlay_GetCurrentSrcRect@CD3D9Output@@QAE?AUtagRECT@@XZ PROC ; CD3D9Output::Overlay_GetCurrentSrcRect, COMDAT
; _this$ = ecx

; 523  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 524  :     return srcrect;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	05 4c 04 00 00	 add	 eax, 1100		; 0000044cH
  0000f	8b 4d 08	 mov	 ecx, DWORD PTR ___$ReturnUdt$[ebp]
  00012	8b 10		 mov	 edx, DWORD PTR [eax]
  00014	89 11		 mov	 DWORD PTR [ecx], edx
  00016	8b 50 04	 mov	 edx, DWORD PTR [eax+4]
  00019	89 51 04	 mov	 DWORD PTR [ecx+4], edx
  0001c	8b 50 08	 mov	 edx, DWORD PTR [eax+8]
  0001f	89 51 08	 mov	 DWORD PTR [ecx+8], edx
  00022	8b 40 0c	 mov	 eax, DWORD PTR [eax+12]
  00025	89 41 0c	 mov	 DWORD PTR [ecx+12], eax
  00028	8b 45 08	 mov	 eax, DWORD PTR ___$ReturnUdt$[ebp]

; 525  : }

  0002b	8b e5		 mov	 esp, ebp
  0002d	5d		 pop	 ebp
  0002e	c2 04 00	 ret	 4
?Overlay_GetCurrentSrcRect@CD3D9Output@@QAE?AUtagRECT@@XZ ENDP ; CD3D9Output::Overlay_GetCurrentSrcRect
_TEXT	ENDS
PUBLIC	?Overlay_GetCurrentDestRect@CD3D9Output@@QAE?AUtagRECT@@XZ ; CD3D9Output::Overlay_GetCurrentDestRect
; Function compile flags: /Odtp
;	COMDAT ?Overlay_GetCurrentDestRect@CD3D9Output@@QAE?AUtagRECT@@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
___$ReturnUdt$ = 8					; size = 4
?Overlay_GetCurrentDestRect@CD3D9Output@@QAE?AUtagRECT@@XZ PROC ; CD3D9Output::Overlay_GetCurrentDestRect, COMDAT
; _this$ = ecx

; 518  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 519  :     return destrect;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	05 5c 04 00 00	 add	 eax, 1116		; 0000045cH
  0000f	8b 4d 08	 mov	 ecx, DWORD PTR ___$ReturnUdt$[ebp]
  00012	8b 10		 mov	 edx, DWORD PTR [eax]
  00014	89 11		 mov	 DWORD PTR [ecx], edx
  00016	8b 50 04	 mov	 edx, DWORD PTR [eax+4]
  00019	89 51 04	 mov	 DWORD PTR [ecx+4], edx
  0001c	8b 50 08	 mov	 edx, DWORD PTR [eax+8]
  0001f	89 51 08	 mov	 DWORD PTR [ecx+8], edx
  00022	8b 40 0c	 mov	 eax, DWORD PTR [eax+12]
  00025	89 41 0c	 mov	 DWORD PTR [ecx+12], eax
  00028	8b 45 08	 mov	 eax, DWORD PTR ___$ReturnUdt$[ebp]

; 520  : }

  0002b	8b e5		 mov	 esp, ebp
  0002d	5d		 pop	 ebp
  0002e	c2 04 00	 ret	 4
?Overlay_GetCurrentDestRect@CD3D9Output@@QAE?AUtagRECT@@XZ ENDP ; CD3D9Output::Overlay_GetCurrentDestRect
_TEXT	ENDS
PUBLIC	__real@3f800000
;	COMDAT __real@3f800000
CONST	SEGMENT
__real@3f800000 DD 03f800000r			; 1
; Function compile flags: /Odtp
CONST	ENDS
;	COMDAT ?Overlay_Unlock_Back_Buffer@CD3D9Output@@UAEHH@Z
_TEXT	SEGMENT
_this$ = -216						; size = 4
_pVertices$147407 = -212				; size = 4
_vertexArray$147408 = -208				; size = 168
_mod$147400 = -36					; size = 4
_alignment$147399 = -32					; size = 4
_g_pVB$147403 = -28					; size = 4
_alignedSrc$147398 = -24				; size = 16
_back$147395 = -8					; size = 4
_RetVal$ = -4						; size = 4
_bUseExtraBuffer$ = 8					; size = 4
?Overlay_Unlock_Back_Buffer@CD3D9Output@@UAEHH@Z PROC	; CD3D9Output::Overlay_Unlock_Back_Buffer, COMDAT
; _this$ = ecx

; 422  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	81 ec d8 00 00
	00		 sub	 esp, 216		; 000000d8H
  00009	89 8d 28 ff ff
	ff		 mov	 DWORD PTR _this$[ebp], ecx

; 423  :     if(bUseExtraBuffer && lpExtraMemoryForFilters != NULL)

  0000f	83 7d 08 00	 cmp	 DWORD PTR _bUseExtraBuffer$[ebp], 0
  00013	74 19		 je	 SHORT $LN8@Overlay_Un
  00015	8b 85 28 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  0001b	83 b8 40 02 00
	00 00		 cmp	 DWORD PTR [eax+576], 0
  00022	74 0a		 je	 SHORT $LN8@Overlay_Un

; 424  :     {
; 425  :         return TRUE;

  00024	b8 01 00 00 00	 mov	 eax, 1
  00029	e9 ed 04 00 00	 jmp	 $LN9@Overlay_Un
$LN8@Overlay_Un:

; 426  :     }
; 427  : 
; 428  :     // make sure we always release the critical section
; 429  :     BOOL RetVal = TRUE;

  0002e	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _RetVal$[ebp], 1

; 430  :     if(FAILED( lpDDOverlay->UnlockRect()))

  00035	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0003b	8b 91 34 02 00
	00		 mov	 edx, DWORD PTR [ecx+564]
  00041	8b 85 28 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00047	8b 88 34 02 00
	00		 mov	 ecx, DWORD PTR [eax+564]
  0004d	8b 12		 mov	 edx, DWORD PTR [edx]
  0004f	51		 push	 ecx
  00050	8b 42 38	 mov	 eax, DWORD PTR [edx+56]
  00053	ff d0		 call	 eax
  00055	85 c0		 test	 eax, eax
  00057	7d 0c		 jge	 SHORT $LN7@Overlay_Un

; 431  :     {
; 432  :         RetVal=FALSE;

  00059	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _RetVal$[ebp], 0

; 433  :     }
; 434  :     else

  00060	e9 a0 04 00 00	 jmp	 $LN5@Overlay_Un
$LN7@Overlay_Un:

; 435  :     {
; 436  :         // ok, now update the backbuffer
; 437  :         LPDIRECT3DSURFACE9 back;
; 438  : 
; 439  :         if(SUCCEEDED(pDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO, &back)))

  00065	8d 4d f8	 lea	 ecx, DWORD PTR _back$147395[ebp]
  00068	51		 push	 ecx
  00069	6a 00		 push	 0
  0006b	6a 00		 push	 0
  0006d	6a 00		 push	 0
  0006f	8b 95 28 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00075	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  0007b	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00081	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  00087	8b 00		 mov	 eax, DWORD PTR [eax]
  00089	52		 push	 edx
  0008a	8b 48 48	 mov	 ecx, DWORD PTR [eax+72]
  0008d	ff d1		 call	 ecx
  0008f	85 c0		 test	 eax, eax
  00091	0f 8c 6e 04 00
	00		 jl	 $LN5@Overlay_Un

; 440  :         {
; 441  :             // draw tv picture
; 442  : 			// lpDDOverlay is here of the size defined as max size (currently 3840x2160)
; 443  : 			// back is the size defined by BUFFERWIDTH/HEIGHT from GetSystemMetrics(SM_CXFULLSCREEN)
; 444  : 			// we scale the small area in the overlay up to fill the whole backbuffer 
; 445  : 			// which is later (on flip) presented on the output
; 446  : 			// to make the Stretch work the srcrect size must be multiples of
; 447  : 			RECT alignedSrc(srcrect);

  00097	8b 95 28 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0009d	81 c2 4c 04 00
	00		 add	 edx, 1100		; 0000044cH
  000a3	8b 02		 mov	 eax, DWORD PTR [edx]
  000a5	89 45 e8	 mov	 DWORD PTR _alignedSrc$147398[ebp], eax
  000a8	8b 4a 04	 mov	 ecx, DWORD PTR [edx+4]
  000ab	89 4d ec	 mov	 DWORD PTR _alignedSrc$147398[ebp+4], ecx
  000ae	8b 42 08	 mov	 eax, DWORD PTR [edx+8]
  000b1	89 45 f0	 mov	 DWORD PTR _alignedSrc$147398[ebp+8], eax
  000b4	8b 4a 0c	 mov	 ecx, DWORD PTR [edx+12]
  000b7	89 4d f4	 mov	 DWORD PTR _alignedSrc$147398[ebp+12], ecx

; 448  : 			const int alignment = 2; // probably due to YUV colorspace in lpDDOverlay

  000ba	c7 45 e0 02 00
	00 00		 mov	 DWORD PTR _alignment$147399[ebp], 2

; 449  : 			int mod;
; 450  : 
; 451  : 			mod = alignedSrc.left % alignment;

  000c1	8b 55 e8	 mov	 edx, DWORD PTR _alignedSrc$147398[ebp]
  000c4	81 e2 01 00 00
	80		 and	 edx, -2147483647	; 80000001H
  000ca	79 05		 jns	 SHORT $LN11@Overlay_Un
  000cc	4a		 dec	 edx
  000cd	83 ca fe	 or	 edx, -2			; fffffffeH
  000d0	42		 inc	 edx
$LN11@Overlay_Un:
  000d1	89 55 dc	 mov	 DWORD PTR _mod$147400[ebp], edx

; 452  : 			if(mod) alignedSrc.left+=(alignment-mod);

  000d4	83 7d dc 00	 cmp	 DWORD PTR _mod$147400[ebp], 0
  000d8	74 0e		 je	 SHORT $LN4@Overlay_Un
  000da	b8 02 00 00 00	 mov	 eax, 2
  000df	2b 45 dc	 sub	 eax, DWORD PTR _mod$147400[ebp]
  000e2	03 45 e8	 add	 eax, DWORD PTR _alignedSrc$147398[ebp]
  000e5	89 45 e8	 mov	 DWORD PTR _alignedSrc$147398[ebp], eax
$LN4@Overlay_Un:

; 453  : 			mod = alignedSrc.top % alignment;

  000e8	8b 4d ec	 mov	 ecx, DWORD PTR _alignedSrc$147398[ebp+4]
  000eb	81 e1 01 00 00
	80		 and	 ecx, -2147483647	; 80000001H
  000f1	79 05		 jns	 SHORT $LN12@Overlay_Un
  000f3	49		 dec	 ecx
  000f4	83 c9 fe	 or	 ecx, -2			; fffffffeH
  000f7	41		 inc	 ecx
$LN12@Overlay_Un:
  000f8	89 4d dc	 mov	 DWORD PTR _mod$147400[ebp], ecx

; 454  : 			if(mod) alignedSrc.top+=(alignment-mod);

  000fb	83 7d dc 00	 cmp	 DWORD PTR _mod$147400[ebp], 0
  000ff	74 0e		 je	 SHORT $LN3@Overlay_Un
  00101	ba 02 00 00 00	 mov	 edx, 2
  00106	2b 55 dc	 sub	 edx, DWORD PTR _mod$147400[ebp]
  00109	03 55 ec	 add	 edx, DWORD PTR _alignedSrc$147398[ebp+4]
  0010c	89 55 ec	 mov	 DWORD PTR _alignedSrc$147398[ebp+4], edx
$LN3@Overlay_Un:

; 455  : 			alignedSrc.right-=(alignedSrc.right % alignment);

  0010f	8b 45 f0	 mov	 eax, DWORD PTR _alignedSrc$147398[ebp+8]
  00112	25 01 00 00 80	 and	 eax, -2147483647	; 80000001H
  00117	79 05		 jns	 SHORT $LN13@Overlay_Un
  00119	48		 dec	 eax
  0011a	83 c8 fe	 or	 eax, -2			; fffffffeH
  0011d	40		 inc	 eax
$LN13@Overlay_Un:
  0011e	8b 4d f0	 mov	 ecx, DWORD PTR _alignedSrc$147398[ebp+8]
  00121	2b c8		 sub	 ecx, eax
  00123	89 4d f0	 mov	 DWORD PTR _alignedSrc$147398[ebp+8], ecx

; 456  : 			alignedSrc.bottom-=(alignedSrc.bottom % alignment);

  00126	8b 55 f4	 mov	 edx, DWORD PTR _alignedSrc$147398[ebp+12]
  00129	81 e2 01 00 00
	80		 and	 edx, -2147483647	; 80000001H
  0012f	79 05		 jns	 SHORT $LN14@Overlay_Un
  00131	4a		 dec	 edx
  00132	83 ca fe	 or	 edx, -2			; fffffffeH
  00135	42		 inc	 edx
$LN14@Overlay_Un:
  00136	8b 45 f4	 mov	 eax, DWORD PTR _alignedSrc$147398[ebp+12]
  00139	2b c2		 sub	 eax, edx
  0013b	89 45 f4	 mov	 DWORD PTR _alignedSrc$147398[ebp+12], eax

; 457  : 			pDevice->StretchRect(lpDDOverlay, &alignedSrc, back, NULL, D3DTEXF_POINT);

  0013e	6a 01		 push	 1
  00140	6a 00		 push	 0
  00142	8b 4d f8	 mov	 ecx, DWORD PTR _back$147395[ebp]
  00145	51		 push	 ecx
  00146	8d 55 e8	 lea	 edx, DWORD PTR _alignedSrc$147398[ebp]
  00149	52		 push	 edx
  0014a	8b 85 28 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00150	8b 88 34 02 00
	00		 mov	 ecx, DWORD PTR [eax+564]
  00156	51		 push	 ecx
  00157	8b 95 28 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0015d	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  00163	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00169	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  0016f	8b 00		 mov	 eax, DWORD PTR [eax]
  00171	52		 push	 edx
  00172	8b 88 88 00 00
	00		 mov	 ecx, DWORD PTR [eax+136]
  00178	ff d1		 call	 ecx

; 458  : 
; 459  : 			// putting the OSD Texture on top
; 460  :             // with DrawPrimitive because of alpha channel
; 461  :             pDevice->BeginScene();

  0017a	8b 95 28 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00180	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  00186	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0018c	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  00192	8b 00		 mov	 eax, DWORD PTR [eax]
  00194	52		 push	 edx
  00195	8b 88 a4 00 00
	00		 mov	 ecx, DWORD PTR [eax+164]
  0019b	ff d1		 call	 ecx

; 462  : 
; 463  :             LPDIRECT3DVERTEXBUFFER9 g_pVB;
; 464  : 
; 465  :             if(SUCCEEDED(pDevice->CreateVertexBuffer(6*sizeof(CUSTOMVERTEX), 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVB, NULL )))

  0019d	6a 00		 push	 0
  0019f	8d 55 e4	 lea	 edx, DWORD PTR _g_pVB$147403[ebp]
  001a2	52		 push	 edx
  001a3	6a 00		 push	 0
  001a5	68 44 01 00 00	 push	 324			; 00000144H
  001aa	6a 00		 push	 0
  001ac	68 a8 00 00 00	 push	 168			; 000000a8H
  001b1	8b 85 28 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  001b7	8b 88 cc 04 00
	00		 mov	 ecx, DWORD PTR [eax+1228]
  001bd	8b 95 28 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  001c3	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  001c9	8b 09		 mov	 ecx, DWORD PTR [ecx]
  001cb	50		 push	 eax
  001cc	8b 51 68	 mov	 edx, DWORD PTR [ecx+104]
  001cf	ff d2		 call	 edx
  001d1	85 c0		 test	 eax, eax
  001d3	0f 8c fb 02 00
	00		 jl	 $LN2@Overlay_Un

; 466  :             {
; 467  :                 VOID* pVertices;
; 468  :                 CUSTOMVERTEX vertexArray[] =
; 469  :                 {
; 470  :                     // x, y, z, rhw, color
; 471  :                     { 0.0f,								0.0f,	0.0f, 1.0f, 0xffffffff, 0.0, 0.0, },

  001d9	d9 ee		 fldz
  001db	d9 9d 30 ff ff
	ff		 fstp	 DWORD PTR _vertexArray$147408[ebp]
  001e1	d9 ee		 fldz
  001e3	d9 9d 34 ff ff
	ff		 fstp	 DWORD PTR _vertexArray$147408[ebp+4]
  001e9	d9 ee		 fldz
  001eb	d9 9d 38 ff ff
	ff		 fstp	 DWORD PTR _vertexArray$147408[ebp+8]
  001f1	d9 e8		 fld1
  001f3	d9 9d 3c ff ff
	ff		 fstp	 DWORD PTR _vertexArray$147408[ebp+12]
  001f9	c7 85 40 ff ff
	ff ff ff ff ff	 mov	 DWORD PTR _vertexArray$147408[ebp+16], -1
  00203	d9 ee		 fldz
  00205	d9 9d 44 ff ff
	ff		 fstp	 DWORD PTR _vertexArray$147408[ebp+20]
  0020b	d9 ee		 fldz
  0020d	d9 9d 48 ff ff
	ff		 fstp	 DWORD PTR _vertexArray$147408[ebp+24]

; 472  :                     { (FLOAT)BUFFERWIDTH,				0.0f,	0.0f, 1.0f, 0xffffffff, 1.0, 0.0, },

  00213	8b 85 28 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00219	db 80 b8 04 00
	00		 fild	 DWORD PTR [eax+1208]
  0021f	d9 9d 4c ff ff
	ff		 fstp	 DWORD PTR _vertexArray$147408[ebp+28]
  00225	d9 ee		 fldz
  00227	d9 9d 50 ff ff
	ff		 fstp	 DWORD PTR _vertexArray$147408[ebp+32]
  0022d	d9 ee		 fldz
  0022f	d9 9d 54 ff ff
	ff		 fstp	 DWORD PTR _vertexArray$147408[ebp+36]
  00235	d9 e8		 fld1
  00237	d9 9d 58 ff ff
	ff		 fstp	 DWORD PTR _vertexArray$147408[ebp+40]
  0023d	c7 85 5c ff ff
	ff ff ff ff ff	 mov	 DWORD PTR _vertexArray$147408[ebp+44], -1
  00247	d9 e8		 fld1
  00249	d9 9d 60 ff ff
	ff		 fstp	 DWORD PTR _vertexArray$147408[ebp+48]
  0024f	d9 ee		 fldz
  00251	d9 9d 64 ff ff
	ff		 fstp	 DWORD PTR _vertexArray$147408[ebp+52]

; 473  :                     { (FLOAT)BUFFERWIDTH,(FLOAT)BUFFERHEIGHT,	0.0f, 1.0f, 0xffffffff, 1.0, 1.0, },

  00257	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0025d	db 81 b8 04 00
	00		 fild	 DWORD PTR [ecx+1208]
  00263	d9 9d 68 ff ff
	ff		 fstp	 DWORD PTR _vertexArray$147408[ebp+56]
  00269	8b 95 28 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0026f	db 82 bc 04 00
	00		 fild	 DWORD PTR [edx+1212]
  00275	d9 9d 6c ff ff
	ff		 fstp	 DWORD PTR _vertexArray$147408[ebp+60]
  0027b	d9 ee		 fldz
  0027d	d9 9d 70 ff ff
	ff		 fstp	 DWORD PTR _vertexArray$147408[ebp+64]
  00283	d9 e8		 fld1
  00285	d9 9d 74 ff ff
	ff		 fstp	 DWORD PTR _vertexArray$147408[ebp+68]
  0028b	c7 85 78 ff ff
	ff ff ff ff ff	 mov	 DWORD PTR _vertexArray$147408[ebp+72], -1
  00295	d9 e8		 fld1
  00297	d9 9d 7c ff ff
	ff		 fstp	 DWORD PTR _vertexArray$147408[ebp+76]
  0029d	d9 e8		 fld1
  0029f	d9 5d 80	 fstp	 DWORD PTR _vertexArray$147408[ebp+80]

; 474  : 
; 475  :                     { (FLOAT)BUFFERWIDTH,(FLOAT)BUFFERHEIGHT,	0.0f, 1.0f, 0xffffffff, 1.0, 1.0, },

  002a2	8b 85 28 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  002a8	db 80 b8 04 00
	00		 fild	 DWORD PTR [eax+1208]
  002ae	d9 5d 84	 fstp	 DWORD PTR _vertexArray$147408[ebp+84]
  002b1	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  002b7	db 81 bc 04 00
	00		 fild	 DWORD PTR [ecx+1212]
  002bd	d9 5d 88	 fstp	 DWORD PTR _vertexArray$147408[ebp+88]
  002c0	d9 ee		 fldz
  002c2	d9 5d 8c	 fstp	 DWORD PTR _vertexArray$147408[ebp+92]
  002c5	d9 e8		 fld1
  002c7	d9 5d 90	 fstp	 DWORD PTR _vertexArray$147408[ebp+96]
  002ca	c7 45 94 ff ff
	ff ff		 mov	 DWORD PTR _vertexArray$147408[ebp+100], -1
  002d1	d9 e8		 fld1
  002d3	d9 5d 98	 fstp	 DWORD PTR _vertexArray$147408[ebp+104]
  002d6	d9 e8		 fld1
  002d8	d9 5d 9c	 fstp	 DWORD PTR _vertexArray$147408[ebp+108]

; 476  :                     { 0.0f,				 (FLOAT)BUFFERHEIGHT,	0.0f, 1.0f, 0xffffffff, 0.0, 1.0, },

  002db	d9 ee		 fldz
  002dd	d9 5d a0	 fstp	 DWORD PTR _vertexArray$147408[ebp+112]
  002e0	8b 95 28 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  002e6	db 82 bc 04 00
	00		 fild	 DWORD PTR [edx+1212]
  002ec	d9 5d a4	 fstp	 DWORD PTR _vertexArray$147408[ebp+116]
  002ef	d9 ee		 fldz
  002f1	d9 5d a8	 fstp	 DWORD PTR _vertexArray$147408[ebp+120]
  002f4	d9 e8		 fld1
  002f6	d9 5d ac	 fstp	 DWORD PTR _vertexArray$147408[ebp+124]
  002f9	c7 45 b0 ff ff
	ff ff		 mov	 DWORD PTR _vertexArray$147408[ebp+128], -1
  00300	d9 ee		 fldz
  00302	d9 5d b4	 fstp	 DWORD PTR _vertexArray$147408[ebp+132]
  00305	d9 e8		 fld1
  00307	d9 5d b8	 fstp	 DWORD PTR _vertexArray$147408[ebp+136]

; 477  :                     { 0.0f,								0.0f,	0.0f, 1.0f, 0xffffffff, 0.0, 0.0, },

  0030a	d9 ee		 fldz
  0030c	d9 5d bc	 fstp	 DWORD PTR _vertexArray$147408[ebp+140]
  0030f	d9 ee		 fldz
  00311	d9 5d c0	 fstp	 DWORD PTR _vertexArray$147408[ebp+144]
  00314	d9 ee		 fldz
  00316	d9 5d c4	 fstp	 DWORD PTR _vertexArray$147408[ebp+148]
  00319	d9 e8		 fld1
  0031b	d9 5d c8	 fstp	 DWORD PTR _vertexArray$147408[ebp+152]
  0031e	c7 45 cc ff ff
	ff ff		 mov	 DWORD PTR _vertexArray$147408[ebp+156], -1
  00325	d9 ee		 fldz
  00327	d9 5d d0	 fstp	 DWORD PTR _vertexArray$147408[ebp+160]
  0032a	d9 ee		 fldz
  0032c	d9 5d d4	 fstp	 DWORD PTR _vertexArray$147408[ebp+164]

; 478  :                 };
; 479  : 
; 480  : 
; 481  :                 if(SUCCEEDED(g_pVB->Lock(0, sizeof(vertexArray), (void**)&pVertices, 0 )))

  0032f	6a 00		 push	 0
  00331	8d 85 2c ff ff
	ff		 lea	 eax, DWORD PTR _pVertices$147407[ebp]
  00337	50		 push	 eax
  00338	68 a8 00 00 00	 push	 168			; 000000a8H
  0033d	6a 00		 push	 0
  0033f	8b 4d e4	 mov	 ecx, DWORD PTR _g_pVB$147403[ebp]
  00342	8b 11		 mov	 edx, DWORD PTR [ecx]
  00344	8b 45 e4	 mov	 eax, DWORD PTR _g_pVB$147403[ebp]
  00347	50		 push	 eax
  00348	8b 4a 2c	 mov	 ecx, DWORD PTR [edx+44]
  0034b	ff d1		 call	 ecx
  0034d	85 c0		 test	 eax, eax
  0034f	7c 29		 jl	 SHORT $LN1@Overlay_Un

; 482  :                 {
; 483  :                     memcpy(pVertices, vertexArray, sizeof(vertexArray));

  00351	68 a8 00 00 00	 push	 168			; 000000a8H
  00356	8d 95 30 ff ff
	ff		 lea	 edx, DWORD PTR _vertexArray$147408[ebp]
  0035c	52		 push	 edx
  0035d	8b 85 2c ff ff
	ff		 mov	 eax, DWORD PTR _pVertices$147407[ebp]
  00363	50		 push	 eax
  00364	e8 00 00 00 00	 call	 _memcpy
  00369	83 c4 0c	 add	 esp, 12			; 0000000cH

; 484  :                     g_pVB->Unlock();

  0036c	8b 4d e4	 mov	 ecx, DWORD PTR _g_pVB$147403[ebp]
  0036f	8b 11		 mov	 edx, DWORD PTR [ecx]
  00371	8b 45 e4	 mov	 eax, DWORD PTR _g_pVB$147403[ebp]
  00374	50		 push	 eax
  00375	8b 4a 30	 mov	 ecx, DWORD PTR [edx+48]
  00378	ff d1		 call	 ecx
$LN1@Overlay_Un:

; 485  :                 }
; 486  : 
; 487  :                 pDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);

  0037a	6a 05		 push	 5
  0037c	6a 13		 push	 19			; 00000013H
  0037e	8b 95 28 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00384	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  0038a	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00390	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  00396	8b 00		 mov	 eax, DWORD PTR [eax]
  00398	52		 push	 edx
  00399	8b 88 e4 00 00
	00		 mov	 ecx, DWORD PTR [eax+228]
  0039f	ff d1		 call	 ecx

; 488  :                 pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

  003a1	6a 06		 push	 6
  003a3	6a 14		 push	 20			; 00000014H
  003a5	8b 95 28 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  003ab	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  003b1	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  003b7	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  003bd	8b 00		 mov	 eax, DWORD PTR [eax]
  003bf	52		 push	 edx
  003c0	8b 88 e4 00 00
	00		 mov	 ecx, DWORD PTR [eax+228]
  003c6	ff d1		 call	 ecx

; 489  :                 pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);

  003c8	6a 01		 push	 1
  003ca	6a 1b		 push	 27			; 0000001bH
  003cc	8b 95 28 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  003d2	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  003d8	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  003de	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  003e4	8b 00		 mov	 eax, DWORD PTR [eax]
  003e6	52		 push	 edx
  003e7	8b 88 e4 00 00
	00		 mov	 ecx, DWORD PTR [eax+228]
  003ed	ff d1		 call	 ecx

; 490  : 
; 491  :                 pDevice->SetTexture(0, m_lpOsdTexture);

  003ef	8b 95 28 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  003f5	8b 82 70 04 00
	00		 mov	 eax, DWORD PTR [edx+1136]
  003fb	50		 push	 eax
  003fc	6a 00		 push	 0
  003fe	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00404	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  0040a	8b 85 28 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00410	8b 88 cc 04 00
	00		 mov	 ecx, DWORD PTR [eax+1228]
  00416	8b 12		 mov	 edx, DWORD PTR [edx]
  00418	51		 push	 ecx
  00419	8b 82 04 01 00
	00		 mov	 eax, DWORD PTR [edx+260]
  0041f	ff d0		 call	 eax

; 492  :                 //pDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
; 493  :                 //pDevice->SetTextureStageState(0, D3DTSS_CONSTANT, 0xA0);
; 494  :                 //pDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEMP);
; 495  : 
; 496  : 
; 497  :                 pDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );

  00421	6a 1c		 push	 28			; 0000001cH
  00423	6a 00		 push	 0
  00425	8b 4d e4	 mov	 ecx, DWORD PTR _g_pVB$147403[ebp]
  00428	51		 push	 ecx
  00429	6a 00		 push	 0
  0042b	8b 95 28 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00431	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  00437	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0043d	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  00443	8b 00		 mov	 eax, DWORD PTR [eax]
  00445	52		 push	 edx
  00446	8b 88 90 01 00
	00		 mov	 ecx, DWORD PTR [eax+400]
  0044c	ff d1		 call	 ecx

; 498  :                 pDevice->SetFVF(D3DFVF_CUSTOMVERTEX);

  0044e	68 44 01 00 00	 push	 324			; 00000144H
  00453	8b 95 28 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00459	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  0045f	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00465	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  0046b	8b 00		 mov	 eax, DWORD PTR [eax]
  0046d	52		 push	 edx
  0046e	8b 88 64 01 00
	00		 mov	 ecx, DWORD PTR [eax+356]
  00474	ff d1		 call	 ecx

; 499  : 
; 500  :                 pDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 2 );

  00476	6a 02		 push	 2
  00478	6a 00		 push	 0
  0047a	6a 04		 push	 4
  0047c	8b 95 28 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00482	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  00488	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0048e	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  00494	8b 00		 mov	 eax, DWORD PTR [eax]
  00496	52		 push	 edx
  00497	8b 88 44 01 00
	00		 mov	 ecx, DWORD PTR [eax+324]
  0049d	ff d1		 call	 ecx

; 501  : 
; 502  :                 pDevice->SetTexture(0,NULL);

  0049f	6a 00		 push	 0
  004a1	6a 00		 push	 0
  004a3	8b 95 28 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  004a9	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  004af	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  004b5	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  004bb	8b 00		 mov	 eax, DWORD PTR [eax]
  004bd	52		 push	 edx
  004be	8b 88 04 01 00
	00		 mov	 ecx, DWORD PTR [eax+260]
  004c4	ff d1		 call	 ecx

; 503  : 
; 504  :                 g_pVB->Release();

  004c6	8b 55 e4	 mov	 edx, DWORD PTR _g_pVB$147403[ebp]
  004c9	8b 02		 mov	 eax, DWORD PTR [edx]
  004cb	8b 4d e4	 mov	 ecx, DWORD PTR _g_pVB$147403[ebp]
  004ce	51		 push	 ecx
  004cf	8b 50 08	 mov	 edx, DWORD PTR [eax+8]
  004d2	ff d2		 call	 edx
$LN2@Overlay_Un:

; 505  :             }
; 506  :             pDevice->EndScene();

  004d4	8b 85 28 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  004da	8b 88 cc 04 00
	00		 mov	 ecx, DWORD PTR [eax+1228]
  004e0	8b 95 28 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  004e6	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  004ec	8b 09		 mov	 ecx, DWORD PTR [ecx]
  004ee	50		 push	 eax
  004ef	8b 91 a8 00 00
	00		 mov	 edx, DWORD PTR [ecx+168]
  004f5	ff d2		 call	 edx

; 507  : 
; 508  :             back->Release();

  004f7	8b 45 f8	 mov	 eax, DWORD PTR _back$147395[ebp]
  004fa	8b 08		 mov	 ecx, DWORD PTR [eax]
  004fc	8b 55 f8	 mov	 edx, DWORD PTR _back$147395[ebp]
  004ff	52		 push	 edx
  00500	8b 41 08	 mov	 eax, DWORD PTR [ecx+8]
  00503	ff d0		 call	 eax
$LN5@Overlay_Un:

; 509  :         }
; 510  :     }
; 511  : 
; 512  :     LeaveCriticalSection(&hDDCritSect);

  00505	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0050b	81 c1 18 02 00
	00		 add	 ecx, 536		; 00000218H
  00511	51		 push	 ecx
  00512	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 513  :     return RetVal;

  00518	8b 45 fc	 mov	 eax, DWORD PTR _RetVal$[ebp]
$LN9@Overlay_Un:

; 514  : }

  0051b	8b e5		 mov	 esp, ebp
  0051d	5d		 pop	 ebp
  0051e	c2 04 00	 ret	 4
?Overlay_Unlock_Back_Buffer@CD3D9Output@@UAEHH@Z ENDP	; CD3D9Output::Overlay_Unlock_Back_Buffer
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Overlay_GetCorrectedColor@CD3D9Output@@UAEKPAUHDC__@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_hDC$ = 8						; size = 4
?Overlay_GetCorrectedColor@CD3D9Output@@UAEKPAUHDC__@@@Z PROC ; CD3D9Output::Overlay_GetCorrectedColor, COMDAT
; _this$ = ecx

; 270  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 271  :         return (COLORREF)0x00101020;

  00007	b8 20 10 10 00	 mov	 eax, 1052704		; 00101020H

; 272  : }

  0000c	8b e5		 mov	 esp, ebp
  0000e	5d		 pop	 ebp
  0000f	c2 04 00	 ret	 4
?Overlay_GetCorrectedColor@CD3D9Output@@UAEKPAUHDC__@@@Z ENDP ; CD3D9Output::Overlay_GetCorrectedColor
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Overlay_GetColor@CD3D9Output@@UAEKXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Overlay_GetColor@CD3D9Output@@UAEKXZ PROC		; CD3D9Output::Overlay_GetColor, COMDAT
; _this$ = ecx

; 265  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 266  :     return (COLORREF)0x00101020;

  00007	b8 20 10 10 00	 mov	 eax, 1052704		; 00101020H

; 267  : }

  0000c	8b e5		 mov	 esp, ebp
  0000e	5d		 pop	 ebp
  0000f	c3		 ret	 0
?Overlay_GetColor@CD3D9Output@@UAEKXZ ENDP		; CD3D9Output::Overlay_GetColor
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Overlay_Destroy@CD3D9Output@@UAEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Overlay_Destroy@CD3D9Output@@UAEHXZ PROC		; CD3D9Output::Overlay_Destroy, COMDAT
; _this$ = ecx

; 232  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 233  :     EnterCriticalSection(&hDDCritSect);

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	05 18 02 00 00	 add	 eax, 536		; 00000218H
  0000f	50		 push	 eax
  00010	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__EnterCriticalSection@4

; 234  : 
; 235  :     // Now destroy the Extra Surface
; 236  :     if(lpExtraMemoryForFilters != NULL)

  00016	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00019	83 b9 40 02 00
	00 00		 cmp	 DWORD PTR [ecx+576], 0
  00020	74 1f		 je	 SHORT $LN4@Overlay_De

; 237  :     {
; 238  :         free(lpExtraMemoryForFilters);

  00022	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00025	8b 82 40 02 00
	00		 mov	 eax, DWORD PTR [edx+576]
  0002b	50		 push	 eax
  0002c	e8 00 00 00 00	 call	 _free
  00031	83 c4 04	 add	 esp, 4

; 239  :         lpExtraMemoryForFilters = NULL;

  00034	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00037	c7 81 40 02 00
	00 00 00 00 00	 mov	 DWORD PTR [ecx+576], 0
$LN4@Overlay_De:

; 240  :     }
; 241  : 
; 242  :     if(lpDDOSD!=NULL)

  00041	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00044	83 ba d0 04 00
	00 00		 cmp	 DWORD PTR [edx+1232], 0
  0004b	74 27		 je	 SHORT $LN3@Overlay_De

; 243  :     {
; 244  :         lpDDOSD->Release();

  0004d	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00050	8b 88 d0 04 00
	00		 mov	 ecx, DWORD PTR [eax+1232]
  00056	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00059	8b 82 d0 04 00
	00		 mov	 eax, DWORD PTR [edx+1232]
  0005f	8b 09		 mov	 ecx, DWORD PTR [ecx]
  00061	50		 push	 eax
  00062	8b 51 08	 mov	 edx, DWORD PTR [ecx+8]
  00065	ff d2		 call	 edx

; 245  :         lpDDOSD = NULL;

  00067	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0006a	c7 80 d0 04 00
	00 00 00 00 00	 mov	 DWORD PTR [eax+1232], 0
$LN3@Overlay_De:

; 246  :     }
; 247  : 
; 248  :     if(m_lpOsdTexture!=NULL)

  00074	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00077	83 b9 70 04 00
	00 00		 cmp	 DWORD PTR [ecx+1136], 0
  0007e	74 27		 je	 SHORT $LN2@Overlay_De

; 249  :     {
; 250  :         m_lpOsdTexture->Release();

  00080	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00083	8b 82 70 04 00
	00		 mov	 eax, DWORD PTR [edx+1136]
  00089	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0008c	8b 91 70 04 00
	00		 mov	 edx, DWORD PTR [ecx+1136]
  00092	8b 00		 mov	 eax, DWORD PTR [eax]
  00094	52		 push	 edx
  00095	8b 48 08	 mov	 ecx, DWORD PTR [eax+8]
  00098	ff d1		 call	 ecx

; 251  :         m_lpOsdTexture = NULL;

  0009a	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0009d	c7 82 70 04 00
	00 00 00 00 00	 mov	 DWORD PTR [edx+1136], 0
$LN2@Overlay_De:

; 252  :     }
; 253  : 
; 254  :     if(lpDDOverlay!=NULL)

  000a7	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  000aa	83 b8 34 02 00
	00 00		 cmp	 DWORD PTR [eax+564], 0
  000b1	74 27		 je	 SHORT $LN1@Overlay_De

; 255  :     {
; 256  :         lpDDOverlay->Release();

  000b3	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  000b6	8b 91 34 02 00
	00		 mov	 edx, DWORD PTR [ecx+564]
  000bc	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  000bf	8b 88 34 02 00
	00		 mov	 ecx, DWORD PTR [eax+564]
  000c5	8b 12		 mov	 edx, DWORD PTR [edx]
  000c7	51		 push	 ecx
  000c8	8b 42 08	 mov	 eax, DWORD PTR [edx+8]
  000cb	ff d0		 call	 eax

; 257  :         lpDDOverlay=NULL;

  000cd	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  000d0	c7 81 34 02 00
	00 00 00 00 00	 mov	 DWORD PTR [ecx+564], 0
$LN1@Overlay_De:

; 258  :     }
; 259  : 
; 260  :     LeaveCriticalSection(&hDDCritSect);

  000da	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  000dd	81 c2 18 02 00
	00		 add	 edx, 536		; 00000218H
  000e3	52		 push	 edx
  000e4	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 261  :     return TRUE;

  000ea	b8 01 00 00 00	 mov	 eax, 1

; 262  : }

  000ef	8b e5		 mov	 esp, ebp
  000f1	5d		 pop	 ebp
  000f2	c3		 ret	 0
?Overlay_Destroy@CD3D9Output@@UAEHXZ ENDP		; CD3D9Output::Overlay_Destroy
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Overlay_ColorMatch@CD3D9Output@@UAEKPAUIDirectDrawSurface@@K@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_pdds$ = 8						; size = 4
_rgb$ = 12						; size = 4
?Overlay_ColorMatch@CD3D9Output@@UAEKPAUIDirectDrawSurface@@K@Z PROC ; CD3D9Output::Overlay_ColorMatch, COMDAT
; _this$ = ecx

; 227  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 228  :     return 1;

  00007	b8 01 00 00 00	 mov	 eax, 1

; 229  : }

  0000c	8b e5		 mov	 esp, ebp
  0000e	5d		 pop	 ebp
  0000f	c2 08 00	 ret	 8
?Overlay_ColorMatch@CD3D9Output@@UAEKPAUIDirectDrawSurface@@K@Z ENDP ; CD3D9Output::Overlay_ColorMatch
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Overlay_SetColorControls@CD3D9Output@@UAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Overlay_SetColorControls@CD3D9Output@@UAEXXZ PROC	; CD3D9Output::Overlay_SetColorControls, COMDAT
; _this$ = ecx

; 146  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 147  : }

  00007	8b e5		 mov	 esp, ebp
  00009	5d		 pop	 ebp
  0000a	c3		 ret	 0
?Overlay_SetColorControls@CD3D9Output@@UAEXXZ ENDP	; CD3D9Output::Overlay_SetColorControls
_TEXT	ENDS
PUBLIC	?Overlay_ResetColorControls@CD3D9Output@@QAEXXZ	; CD3D9Output::Overlay_ResetColorControls
; Function compile flags: /Odtp
;	COMDAT ?Overlay_ResetColorControls@CD3D9Output@@QAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Overlay_ResetColorControls@CD3D9Output@@QAEXXZ PROC	; CD3D9Output::Overlay_ResetColorControls, COMDAT
; _this$ = ecx

; 142  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 143  : }

  00007	8b e5		 mov	 esp, ebp
  00009	5d		 pop	 ebp
  0000a	c3		 ret	 0
?Overlay_ResetColorControls@CD3D9Output@@QAEXXZ ENDP	; CD3D9Output::Overlay_ResetColorControls
_TEXT	ENDS
PUBLIC	?GetHWnd@CD3D9Output@@QAEPAUHWND__@@XZ		; CD3D9Output::GetHWnd
; Function compile flags: /Odtp
;	COMDAT ?GetHWnd@CD3D9Output@@QAEPAUHWND__@@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetHWnd@CD3D9Output@@QAEPAUHWND__@@XZ PROC		; CD3D9Output::GetHWnd, COMDAT
; _this$ = ecx

; 97   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 98   :     return m_hWnd;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 80 6c 04 00
	00		 mov	 eax, DWORD PTR [eax+1132]

; 99   : }

  00010	8b e5		 mov	 esp, ebp
  00012	5d		 pop	 ebp
  00013	c3		 ret	 0
?GetHWnd@CD3D9Output@@QAEPAUHWND__@@XZ ENDP		; CD3D9Output::GetHWnd
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Overlay_Clean@CD3D9Output@@UAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Overlay_Clean@CD3D9Output@@UAEXXZ PROC			; CD3D9Output::Overlay_Clean, COMDAT
; _this$ = ecx

; 93   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 94   : }

  00007	8b e5		 mov	 esp, ebp
  00009	5d		 pop	 ebp
  0000a	c3		 ret	 0
?Overlay_Clean@CD3D9Output@@UAEXXZ ENDP			; CD3D9Output::Overlay_Clean
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?OverlayActive@CD3D9Output@@UAEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?OverlayActive@CD3D9Output@@UAEHXZ PROC			; CD3D9Output::OverlayActive, COMDAT
; _this$ = ecx

; 88   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 89   :     return lpDDOverlay!=NULL;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	33 c9		 xor	 ecx, ecx
  0000c	83 b8 34 02 00
	00 00		 cmp	 DWORD PTR [eax+564], 0
  00013	0f 95 c1	 setne	 cl
  00016	8b c1		 mov	 eax, ecx

; 90   : }

  00018	8b e5		 mov	 esp, ebp
  0001a	5d		 pop	 ebp
  0001b	c3		 ret	 0
?OverlayActive@CD3D9Output@@UAEHXZ ENDP			; CD3D9Output::OverlayActive
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?CanDoOverlayColorControl@CD3D9Output@@UAEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?CanDoOverlayColorControl@CD3D9Output@@UAEHXZ PROC	; CD3D9Output::CanDoOverlayColorControl, COMDAT
; _this$ = ecx

; 83   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 84   :     return FALSE;

  00007	33 c0		 xor	 eax, eax

; 85   : }

  00009	8b e5		 mov	 esp, ebp
  0000b	5d		 pop	 ebp
  0000c	c3		 ret	 0
?CanDoOverlayColorControl@CD3D9Output@@UAEHXZ ENDP	; CD3D9Output::CanDoOverlayColorControl
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\d3d9output.h
_TEXT	ENDS
;	COMDAT ?WaitForVerticalBlank@CD3D9Output@@UAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?WaitForVerticalBlank@CD3D9Output@@UAEXXZ PROC		; CD3D9Output::WaitForVerticalBlank, COMDAT
; _this$ = ecx

; 94   :     void WaitForVerticalBlank() {};

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx
  00007	8b e5		 mov	 esp, ebp
  00009	5d		 pop	 ebp
  0000a	c3		 ret	 0
?WaitForVerticalBlank@CD3D9Output@@UAEXXZ ENDP		; CD3D9Output::WaitForVerticalBlank
PUBLIC	??1CD3D9Output@@UAE@XZ				; CD3D9Output::~CD3D9Output
;	COMDAT xdata$x
; File c:\develop\dscaler423a\dscaler\d3d9output.cpp
xdata$x	SEGMENT
__unwindtable$??1CD3D9Output@@UAE@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??1CD3D9Output@@UAE@XZ$0
__ehfuncinfo$??1CD3D9Output@@UAE@XZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$??1CD3D9Output@@UAE@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??1CD3D9Output@@UAE@XZ
_TEXT	SEGMENT
_this$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
??1CD3D9Output@@UAE@XZ PROC				; CD3D9Output::~CD3D9Output, COMDAT
; _this$ = ecx

; 755  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??1CD3D9Output@@UAE@XZ
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	51		 push	 ecx
  00012	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  00017	33 c5		 xor	 eax, ebp
  00019	50		 push	 eax
  0001a	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  0001d	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00023	89 4d f0	 mov	 DWORD PTR _this$[ebp], ecx
  00026	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00029	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], OFFSET ??_7CD3D9Output@@6B@
  0002f	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0

; 756  :     Overlay_Destroy();

  00036	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00039	e8 00 00 00 00	 call	 ?Overlay_Destroy@CD3D9Output@@UAEHXZ ; CD3D9Output::Overlay_Destroy

; 757  :     DeleteCriticalSection(&hDDCritSect);

  0003e	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00041	81 c1 18 02 00
	00		 add	 ecx, 536		; 00000218H
  00047	51		 push	 ecx
  00048	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__DeleteCriticalSection@4

; 758  : }

  0004e	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  00055	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00058	e8 00 00 00 00	 call	 ??1IOutput@@UAE@XZ	; IOutput::~IOutput
  0005d	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  00060	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  00067	59		 pop	 ecx
  00068	8b e5		 mov	 esp, ebp
  0006a	5d		 pop	 ebp
  0006b	c3		 ret	 0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??1CD3D9Output@@UAE@XZ$0:
  00000	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1IOutput@@UAE@XZ	; IOutput::~IOutput
__ehhandler$??1CD3D9Output@@UAE@XZ:
  00008	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  0000c	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  0000f	8b 4a f8	 mov	 ecx, DWORD PTR [edx-8]
  00012	33 c8		 xor	 ecx, eax
  00014	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00019	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$??1CD3D9Output@@UAE@XZ
  0001e	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??1CD3D9Output@@UAE@XZ ENDP				; CD3D9Output::~CD3D9Output
; Function compile flags: /Odtp
;	COMDAT ??_GCD3D9Output@@UAEPAXI@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
___flags$ = 8						; size = 4
??_GCD3D9Output@@UAEPAXI@Z PROC				; CD3D9Output::`scalar deleting destructor', COMDAT
; _this$ = ecx
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx
  00007	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000a	e8 00 00 00 00	 call	 ??1CD3D9Output@@UAE@XZ	; CD3D9Output::~CD3D9Output
  0000f	8b 45 08	 mov	 eax, DWORD PTR ___flags$[ebp]
  00012	83 e0 01	 and	 eax, 1
  00015	74 0c		 je	 SHORT $LN1@scalar@62
  00017	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0001a	51		 push	 ecx
  0001b	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00020	83 c4 04	 add	 esp, 4
$LN1@scalar@62:
  00023	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00026	8b e5		 mov	 esp, ebp
  00028	5d		 pop	 ebp
  00029	c2 04 00	 ret	 4
??_GCD3D9Output@@UAEPAXI@Z ENDP				; CD3D9Output::`scalar deleting destructor'
; Function compile flags: /Odtp
;	COMDAT ?SetCurrentMonitor@CD3D9Output@@UAEXPAUHWND__@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_hWnd$ = 8						; size = 4
?SetCurrentMonitor@CD3D9Output@@UAEXPAUHWND__@@@Z PROC	; CD3D9Output::SetCurrentMonitor, COMDAT
; _this$ = ecx

; 56   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 57   :    hCurrentMon = MonitorFromWindow(hWnd, MONITOR_DEFAULTTOPRIMARY);

  00007	6a 01		 push	 1
  00009	8b 45 08	 mov	 eax, DWORD PTR _hWnd$[ebp]
  0000c	50		 push	 eax
  0000d	e8 00 00 00 00	 call	 _xMonitorFromWindow@8
  00012	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00015	89 81 c4 04 00
	00		 mov	 DWORD PTR [ecx+1220], eax

; 58   : }

  0001b	8b e5		 mov	 esp, ebp
  0001d	5d		 pop	 ebp
  0001e	c2 04 00	 ret	 4
?SetCurrentMonitor@CD3D9Output@@UAEXPAUHWND__@@@Z ENDP	; CD3D9Output::SetCurrentMonitor
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\dynamicfunction.h
;	COMDAT ??0?$DynamicFunctionParent@P6GPAUIDirect3D9@@I@Z@@QAE@PB_WPBD@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_LibraryModule$ = -4					; size = 4
_LibraryName$ = 8					; size = 4
_FunctionName$ = 12					; size = 4
??0?$DynamicFunctionParent@P6GPAUIDirect3D9@@I@Z@@QAE@PB_WPBD@Z PROC ; DynamicFunctionParent<IDirect3D9 * (__stdcall*)(unsigned int)>::DynamicFunctionParent<IDirect3D9 * (__stdcall*)(unsigned int)>, COMDAT
; _this$ = ecx

; 30   :     {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 08	 sub	 esp, 8
  00006	89 4d f8	 mov	 DWORD PTR _this$[ebp], ecx
  00009	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], 0

; 31   :         HMODULE LibraryModule = LibraryCache::GetLibraryHandle(LibraryName);

  00012	8b 4d 08	 mov	 ecx, DWORD PTR _LibraryName$[ebp]
  00015	51		 push	 ecx
  00016	e8 00 00 00 00	 call	 ?GetLibraryHandle@LibraryCache@@SAPAUHINSTANCE__@@PB_W@Z ; LibraryCache::GetLibraryHandle
  0001b	83 c4 04	 add	 esp, 4
  0001e	89 45 fc	 mov	 DWORD PTR _LibraryModule$[ebp], eax

; 32   :         if(LibraryModule)

  00021	83 7d fc 00	 cmp	 DWORD PTR _LibraryModule$[ebp], 0
  00025	74 13		 je	 SHORT $LN2@DynamicFun@4

; 33   :         {
; 34   :             m_pFunc = (FUNCTYPE)GetProcAddress(LibraryModule,FunctionName);

  00027	8b 55 0c	 mov	 edx, DWORD PTR _FunctionName$[ebp]
  0002a	52		 push	 edx
  0002b	8b 45 fc	 mov	 eax, DWORD PTR _LibraryModule$[ebp]
  0002e	50		 push	 eax
  0002f	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetProcAddress@8
  00035	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00038	89 01		 mov	 DWORD PTR [ecx], eax
$LN2@DynamicFun@4:

; 35   :         }
; 36   :     }

  0003a	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0003d	8b e5		 mov	 esp, ebp
  0003f	5d		 pop	 ebp
  00040	c2 08 00	 ret	 8
??0?$DynamicFunctionParent@P6GPAUIDirect3D9@@I@Z@@QAE@PB_WPBD@Z ENDP ; DynamicFunctionParent<IDirect3D9 * (__stdcall*)(unsigned int)>::DynamicFunctionParent<IDirect3D9 * (__stdcall*)(unsigned int)>
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ??0?$DynamicFunctionS1@PAUIDirect3D9@@I@@QAE@PB_WPBD@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_LibraryName$ = 8					; size = 4
_FunctionName$ = 12					; size = 4
??0?$DynamicFunctionS1@PAUIDirect3D9@@I@@QAE@PB_WPBD@Z PROC ; DynamicFunctionS1<IDirect3D9 *,unsigned int>::DynamicFunctionS1<IDirect3D9 *,unsigned int>, COMDAT
; _this$ = ecx

; 86   :     {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx
  00007	8b 45 0c	 mov	 eax, DWORD PTR _FunctionName$[ebp]
  0000a	50		 push	 eax
  0000b	8b 4d 08	 mov	 ecx, DWORD PTR _LibraryName$[ebp]
  0000e	51		 push	 ecx
  0000f	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00012	e8 00 00 00 00	 call	 ??0?$DynamicFunctionParent@P6GPAUIDirect3D9@@I@Z@@QAE@PB_WPBD@Z ; DynamicFunctionParent<IDirect3D9 * (__stdcall*)(unsigned int)>::DynamicFunctionParent<IDirect3D9 * (__stdcall*)(unsigned int)>

; 87   :     }

  00017	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0001a	8b e5		 mov	 esp, ebp
  0001c	5d		 pop	 ebp
  0001d	c2 08 00	 ret	 8
??0?$DynamicFunctionS1@PAUIDirect3D9@@I@@QAE@PB_WPBD@Z ENDP ; DynamicFunctionS1<IDirect3D9 *,unsigned int>::DynamicFunctionS1<IDirect3D9 *,unsigned int>
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\d3d9output.cpp
;	COMDAT ?Overlay_Unlock@CD3D9Output@@UAEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Overlay_Unlock@CD3D9Output@@UAEHXZ PROC		; CD3D9Output::Overlay_Unlock, COMDAT
; _this$ = ecx

; 401  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 402  :     // always leave the critical section
; 403  :     if(lpDDFrontBuffer==NULL)

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	83 b8 3c 02 00
	00 00		 cmp	 DWORD PTR [eax+572], 0
  00011	75 14		 jne	 SHORT $LN2@Overlay_Un@2

; 404  :     {
; 405  :         LeaveCriticalSection(&hDDCritSect);

  00013	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00016	81 c1 18 02 00
	00		 add	 ecx, 536		; 00000218H
  0001c	51		 push	 ecx
  0001d	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 406  :         return FALSE;

  00023	33 c0		 xor	 eax, eax
  00025	eb 7d		 jmp	 SHORT $LN3@Overlay_Un@2
$LN2@Overlay_Un@2:

; 407  :     }
; 408  :     if(FAILED(lpDDFrontBuffer->UnlockRect()))

  00027	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0002a	8b 82 3c 02 00
	00		 mov	 eax, DWORD PTR [edx+572]
  00030	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00033	8b 91 3c 02 00
	00		 mov	 edx, DWORD PTR [ecx+572]
  00039	8b 00		 mov	 eax, DWORD PTR [eax]
  0003b	52		 push	 edx
  0003c	8b 48 38	 mov	 ecx, DWORD PTR [eax+56]
  0003f	ff d1		 call	 ecx
  00041	85 c0		 test	 eax, eax
  00043	7d 23		 jge	 SHORT $LN1@Overlay_Un@2

; 409  :     {
; 410  :         LOG(1, _T("Unlock failed"));

  00045	68 00 00 00 00	 push	 OFFSET ??_C@_1BM@NONCMCIF@?$AAU?$AAn?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AA@
  0004a	6a 01		 push	 1
  0004c	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00051	83 c4 08	 add	 esp, 8

; 411  :         LeaveCriticalSection(&hDDCritSect);

  00054	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00057	81 c2 18 02 00
	00		 add	 edx, 536		; 00000218H
  0005d	52		 push	 edx
  0005e	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 412  :         return FALSE;

  00064	33 c0		 xor	 eax, eax
  00066	eb 3c		 jmp	 SHORT $LN3@Overlay_Un@2
$LN1@Overlay_Un@2:

; 413  :     }
; 414  :     lpDDFrontBuffer->Release();

  00068	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0006b	8b 88 3c 02 00
	00		 mov	 ecx, DWORD PTR [eax+572]
  00071	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00074	8b 82 3c 02 00
	00		 mov	 eax, DWORD PTR [edx+572]
  0007a	8b 09		 mov	 ecx, DWORD PTR [ecx]
  0007c	50		 push	 eax
  0007d	8b 51 08	 mov	 edx, DWORD PTR [ecx+8]
  00080	ff d2		 call	 edx

; 415  :     lpDDFrontBuffer=NULL;

  00082	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00085	c7 80 3c 02 00
	00 00 00 00 00	 mov	 DWORD PTR [eax+572], 0

; 416  :     LeaveCriticalSection(&hDDCritSect);

  0008f	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00092	81 c1 18 02 00
	00		 add	 ecx, 536		; 00000218H
  00098	51		 push	 ecx
  00099	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 417  :     return TRUE;

  0009f	b8 01 00 00 00	 mov	 eax, 1
$LN3@Overlay_Un@2:

; 418  : }

  000a4	8b e5		 mov	 esp, ebp
  000a6	5d		 pop	 ebp
  000a7	c3		 ret	 0
?Overlay_Unlock@CD3D9Output@@UAEHXZ ENDP		; CD3D9Output::Overlay_Unlock
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Overlay_Lock@CD3D9Output@@UAEHPAUTDeinterlaceInfo@@@Z
_TEXT	SEGMENT
_this$ = -20						; size = 4
_ddrval$ = -16						; size = 4
_temp$ = -12						; size = 4
_lr$ = -8						; size = 8
_pInfo$ = 8						; size = 4
?Overlay_Lock@CD3D9Output@@UAEHPAUTDeinterlaceInfo@@@Z PROC ; CD3D9Output::Overlay_Lock, COMDAT
; _this$ = ecx

; 322  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 14	 sub	 esp, 20			; 00000014H
  00006	89 4d ec	 mov	 DWORD PTR _this$[ebp], ecx

; 323  :     // \todo this doesn't really work for now (GetFrontBufferData always fails) .. do we need this anyway?????
; 324  :     if(pDevice==NULL)

  00009	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	83 b8 cc 04 00
	00 00		 cmp	 DWORD PTR [eax+1228], 0
  00013	75 07		 jne	 SHORT $LN6@Overlay_Lo

; 325  :     {
; 326  :         return FALSE;

  00015	33 c0		 xor	 eax, eax
  00017	e9 9e 02 00 00	 jmp	 $LN7@Overlay_Lo
$LN6@Overlay_Lo:

; 327  :     }
; 328  : 
; 329  :     LPDIRECT3DSURFACE9 temp;
; 330  :     if(FAILED(pDevice->CreateOffscreenPlainSurface(
; 331  :         GetSystemMetrics(SM_CXFULLSCREEN),
; 332  :         GetSystemMetrics(SM_CYFULLSCREEN),
; 333  :         D3DFMT_A8R8G8B8,
; 334  :         D3DPOOL_SYSTEMMEM,
; 335  :         &temp,
; 336  :         NULL)))

  0001c	6a 00		 push	 0
  0001e	8d 4d f4	 lea	 ecx, DWORD PTR _temp$[ebp]
  00021	51		 push	 ecx
  00022	6a 02		 push	 2
  00024	6a 15		 push	 21			; 00000015H
  00026	6a 11		 push	 17			; 00000011H
  00028	e8 00 00 00 00	 call	 _xGetSystemMetrics@4
  0002d	50		 push	 eax
  0002e	6a 10		 push	 16			; 00000010H
  00030	e8 00 00 00 00	 call	 _xGetSystemMetrics@4
  00035	50		 push	 eax
  00036	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  00039	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  0003f	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00042	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  00048	8b 00		 mov	 eax, DWORD PTR [eax]
  0004a	52		 push	 edx
  0004b	8b 88 90 00 00
	00		 mov	 ecx, DWORD PTR [eax+144]
  00051	ff d1		 call	 ecx
  00053	85 c0		 test	 eax, eax
  00055	7d 16		 jge	 SHORT $LN5@Overlay_Lo

; 337  :     {
; 338  :         LOG(1, _T("Could not create Surface in Overlay_Lock"));

  00057	68 00 00 00 00	 push	 OFFSET ??_C@_1FC@LMIJGEBA@?$AAC?$AAo?$AAu?$AAl?$AAd?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAc?$AAr?$AAe?$AAa?$AAt?$AAe?$AA?5?$AAS?$AAu?$AAr?$AAf?$AAa?$AAc?$AAe?$AA?5?$AAi?$AAn?$AA?5?$AAO?$AAv?$AAe?$AAr@
  0005c	6a 01		 push	 1
  0005e	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00063	83 c4 08	 add	 esp, 8

; 339  :         return FALSE;

  00066	33 c0		 xor	 eax, eax
  00068	e9 4d 02 00 00	 jmp	 $LN7@Overlay_Lo
$LN5@Overlay_Lo:

; 340  :     }
; 341  : 
; 342  :     if(FAILED(pDevice->CreateOffscreenPlainSurface(
; 343  :         GetSystemMetrics(SM_CXFULLSCREEN),
; 344  :         GetSystemMetrics(SM_CYFULLSCREEN),
; 345  :         (bIsRGB ? D3DFMT_R5G6B5 : D3DFMT_YUY2),
; 346  :         D3DPOOL_SYSTEMMEM,
; 347  :         &lpDDFrontBuffer,
; 348  :         NULL)))

  0006d	6a 00		 push	 0
  0006f	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  00072	81 c2 3c 02 00
	00		 add	 edx, 572		; 0000023cH
  00078	52		 push	 edx
  00079	6a 02		 push	 2
  0007b	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  0007e	8b 88 c8 04 00
	00		 mov	 ecx, DWORD PTR [eax+1224]
  00084	f7 d9		 neg	 ecx
  00086	1b c9		 sbb	 ecx, ecx
  00088	81 e1 be aa a6
	cd		 and	 ecx, -844715330		; cda6aabeH
  0008e	81 c1 59 55 59
	32		 add	 ecx, 844715353		; 32595559H
  00094	51		 push	 ecx
  00095	6a 11		 push	 17			; 00000011H
  00097	e8 00 00 00 00	 call	 _xGetSystemMetrics@4
  0009c	50		 push	 eax
  0009d	6a 10		 push	 16			; 00000010H
  0009f	e8 00 00 00 00	 call	 _xGetSystemMetrics@4
  000a4	50		 push	 eax
  000a5	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  000a8	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  000ae	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  000b1	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  000b7	8b 00		 mov	 eax, DWORD PTR [eax]
  000b9	52		 push	 edx
  000ba	8b 88 90 00 00
	00		 mov	 ecx, DWORD PTR [eax+144]
  000c0	ff d1		 call	 ecx
  000c2	85 c0		 test	 eax, eax
  000c4	7d 24		 jge	 SHORT $LN4@Overlay_Lo

; 349  :     {
; 350  :         temp->Release();

  000c6	8b 55 f4	 mov	 edx, DWORD PTR _temp$[ebp]
  000c9	8b 02		 mov	 eax, DWORD PTR [edx]
  000cb	8b 4d f4	 mov	 ecx, DWORD PTR _temp$[ebp]
  000ce	51		 push	 ecx
  000cf	8b 50 08	 mov	 edx, DWORD PTR [eax+8]
  000d2	ff d2		 call	 edx

; 351  :         LOG(1, _T("Could not create Surface in Overlay_Lock"));

  000d4	68 00 00 00 00	 push	 OFFSET ??_C@_1FC@LMIJGEBA@?$AAC?$AAo?$AAu?$AAl?$AAd?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAc?$AAr?$AAe?$AAa?$AAt?$AAe?$AA?5?$AAS?$AAu?$AAr?$AAf?$AAa?$AAc?$AAe?$AA?5?$AAi?$AAn?$AA?5?$AAO?$AAv?$AAe?$AAr@
  000d9	6a 01		 push	 1
  000db	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  000e0	83 c4 08	 add	 esp, 8

; 352  :         return FALSE;

  000e3	33 c0		 xor	 eax, eax
  000e5	e9 d0 01 00 00	 jmp	 $LN7@Overlay_Lo
$LN4@Overlay_Lo:

; 353  :     }
; 354  : 
; 355  :     EnterCriticalSection(&hDDCritSect);

  000ea	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  000ed	05 18 02 00 00	 add	 eax, 536		; 00000218H
  000f2	50		 push	 eax
  000f3	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__EnterCriticalSection@4

; 356  : 
; 357  :     HRESULT ddrval=pDevice->GetFrontBufferData(0, temp);

  000f9	8b 4d f4	 mov	 ecx, DWORD PTR _temp$[ebp]
  000fc	51		 push	 ecx
  000fd	6a 00		 push	 0
  000ff	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  00102	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  00108	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  0010b	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  00111	8b 00		 mov	 eax, DWORD PTR [eax]
  00113	52		 push	 edx
  00114	8b 88 84 00 00
	00		 mov	 ecx, DWORD PTR [eax+132]
  0011a	ff d1		 call	 ecx
  0011c	89 45 f0	 mov	 DWORD PTR _ddrval$[ebp], eax

; 358  :     if(FAILED(ddrval))

  0011f	83 7d f0 00	 cmp	 DWORD PTR _ddrval$[ebp], 0
  00123	7d 5f		 jge	 SHORT $LN3@Overlay_Lo

; 359  :     {
; 360  :         LOG(1, _T("GetFrontBufferData failed %8x"), ddrval);

  00125	8b 55 f0	 mov	 edx, DWORD PTR _ddrval$[ebp]
  00128	52		 push	 edx
  00129	68 00 00 00 00	 push	 OFFSET ??_C@_1DM@GOLELDDB@?$AAG?$AAe?$AAt?$AAF?$AAr?$AAo?$AAn?$AAt?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AAD?$AAa?$AAt?$AAa?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AA?$CF?$AA8?$AAx?$AA?$AA@
  0012e	6a 01		 push	 1
  00130	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00135	83 c4 0c	 add	 esp, 12			; 0000000cH

; 361  :         temp->Release();

  00138	8b 45 f4	 mov	 eax, DWORD PTR _temp$[ebp]
  0013b	8b 08		 mov	 ecx, DWORD PTR [eax]
  0013d	8b 55 f4	 mov	 edx, DWORD PTR _temp$[ebp]
  00140	52		 push	 edx
  00141	8b 41 08	 mov	 eax, DWORD PTR [ecx+8]
  00144	ff d0		 call	 eax

; 362  :         lpDDFrontBuffer->Release();

  00146	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00149	8b 91 3c 02 00
	00		 mov	 edx, DWORD PTR [ecx+572]
  0014f	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00152	8b 88 3c 02 00
	00		 mov	 ecx, DWORD PTR [eax+572]
  00158	8b 12		 mov	 edx, DWORD PTR [edx]
  0015a	51		 push	 ecx
  0015b	8b 42 08	 mov	 eax, DWORD PTR [edx+8]
  0015e	ff d0		 call	 eax

; 363  :         lpDDFrontBuffer=NULL;

  00160	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00163	c7 81 3c 02 00
	00 00 00 00 00	 mov	 DWORD PTR [ecx+572], 0

; 364  :         LeaveCriticalSection(&hDDCritSect);

  0016d	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  00170	81 c2 18 02 00
	00		 add	 edx, 536		; 00000218H
  00176	52		 push	 edx
  00177	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 365  :         return FALSE;

  0017d	33 c0		 xor	 eax, eax
  0017f	e9 36 01 00 00	 jmp	 $LN7@Overlay_Lo
$LN3@Overlay_Lo:

; 366  :     }
; 367  : 
; 368  :     ddrval=pDevice->StretchRect(temp, NULL, lpDDFrontBuffer, NULL, D3DTEXF_NONE);

  00184	6a 00		 push	 0
  00186	6a 00		 push	 0
  00188	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  0018b	8b 88 3c 02 00
	00		 mov	 ecx, DWORD PTR [eax+572]
  00191	51		 push	 ecx
  00192	6a 00		 push	 0
  00194	8b 55 f4	 mov	 edx, DWORD PTR _temp$[ebp]
  00197	52		 push	 edx
  00198	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  0019b	8b 88 cc 04 00
	00		 mov	 ecx, DWORD PTR [eax+1228]
  001a1	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  001a4	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  001aa	8b 09		 mov	 ecx, DWORD PTR [ecx]
  001ac	50		 push	 eax
  001ad	8b 91 88 00 00
	00		 mov	 edx, DWORD PTR [ecx+136]
  001b3	ff d2		 call	 edx
  001b5	89 45 f0	 mov	 DWORD PTR _ddrval$[ebp], eax

; 369  :     if(FAILED(ddrval))

  001b8	83 7d f0 00	 cmp	 DWORD PTR _ddrval$[ebp], 0
  001bc	7d 5e		 jge	 SHORT $LN2@Overlay_Lo

; 370  :     {
; 371  :         LOG(1, _T("Could not copy front buffer data %8x"), ddrval);

  001be	8b 45 f0	 mov	 eax, DWORD PTR _ddrval$[ebp]
  001c1	50		 push	 eax
  001c2	68 00 00 00 00	 push	 OFFSET ??_C@_1EK@CECIBJJG@?$AAC?$AAo?$AAu?$AAl?$AAd?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAc?$AAo?$AAp?$AAy?$AA?5?$AAf?$AAr?$AAo?$AAn?$AAt?$AA?5?$AAb?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?5?$AAd?$AAa?$AAt?$AAa@
  001c7	6a 01		 push	 1
  001c9	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  001ce	83 c4 0c	 add	 esp, 12			; 0000000cH

; 372  :         temp->Release();

  001d1	8b 4d f4	 mov	 ecx, DWORD PTR _temp$[ebp]
  001d4	8b 11		 mov	 edx, DWORD PTR [ecx]
  001d6	8b 45 f4	 mov	 eax, DWORD PTR _temp$[ebp]
  001d9	50		 push	 eax
  001da	8b 4a 08	 mov	 ecx, DWORD PTR [edx+8]
  001dd	ff d1		 call	 ecx

; 373  :         lpDDFrontBuffer->Release();

  001df	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  001e2	8b 82 3c 02 00
	00		 mov	 eax, DWORD PTR [edx+572]
  001e8	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  001eb	8b 91 3c 02 00
	00		 mov	 edx, DWORD PTR [ecx+572]
  001f1	8b 00		 mov	 eax, DWORD PTR [eax]
  001f3	52		 push	 edx
  001f4	8b 48 08	 mov	 ecx, DWORD PTR [eax+8]
  001f7	ff d1		 call	 ecx

; 374  :         lpDDFrontBuffer=NULL;

  001f9	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  001fc	c7 82 3c 02 00
	00 00 00 00 00	 mov	 DWORD PTR [edx+572], 0

; 375  :         LeaveCriticalSection(&hDDCritSect);

  00206	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00209	05 18 02 00 00	 add	 eax, 536		; 00000218H
  0020e	50		 push	 eax
  0020f	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 376  :         return FALSE;

  00215	33 c0		 xor	 eax, eax
  00217	e9 9e 00 00 00	 jmp	 $LN7@Overlay_Lo
$LN2@Overlay_Lo:

; 377  :     }
; 378  : 
; 379  :     temp->Release();

  0021c	8b 4d f4	 mov	 ecx, DWORD PTR _temp$[ebp]
  0021f	8b 11		 mov	 edx, DWORD PTR [ecx]
  00221	8b 45 f4	 mov	 eax, DWORD PTR _temp$[ebp]
  00224	50		 push	 eax
  00225	8b 4a 08	 mov	 ecx, DWORD PTR [edx+8]
  00228	ff d1		 call	 ecx

; 380  : 
; 381  :     D3DLOCKED_RECT lr;
; 382  :     ddrval=lpDDFrontBuffer->LockRect(&lr, NULL, D3DLOCK_READONLY);

  0022a	6a 10		 push	 16			; 00000010H
  0022c	6a 00		 push	 0
  0022e	8d 55 f8	 lea	 edx, DWORD PTR _lr$[ebp]
  00231	52		 push	 edx
  00232	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00235	8b 88 3c 02 00
	00		 mov	 ecx, DWORD PTR [eax+572]
  0023b	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  0023e	8b 82 3c 02 00
	00		 mov	 eax, DWORD PTR [edx+572]
  00244	8b 09		 mov	 ecx, DWORD PTR [ecx]
  00246	50		 push	 eax
  00247	8b 51 34	 mov	 edx, DWORD PTR [ecx+52]
  0024a	ff d2		 call	 edx
  0024c	89 45 f0	 mov	 DWORD PTR _ddrval$[ebp], eax

; 383  :     if(FAILED(ddrval))

  0024f	83 7d f0 00	 cmp	 DWORD PTR _ddrval$[ebp], 0
  00253	7d 4e		 jge	 SHORT $LN1@Overlay_Lo

; 384  :     {
; 385  :         LOG(1, _T("Lock failed %8x"), ddrval);

  00255	8b 45 f0	 mov	 eax, DWORD PTR _ddrval$[ebp]
  00258	50		 push	 eax
  00259	68 00 00 00 00	 push	 OFFSET ??_C@_1CA@FOFBHGNI@?$AAL?$AAo?$AAc?$AAk?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AA?$CF?$AA8?$AAx?$AA?$AA@
  0025e	6a 01		 push	 1
  00260	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00265	83 c4 0c	 add	 esp, 12			; 0000000cH

; 386  :         LeaveCriticalSection(&hDDCritSect);

  00268	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  0026b	81 c1 18 02 00
	00		 add	 ecx, 536		; 00000218H
  00271	51		 push	 ecx
  00272	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 387  :         lpDDFrontBuffer->Release();

  00278	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  0027b	8b 82 3c 02 00
	00		 mov	 eax, DWORD PTR [edx+572]
  00281	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00284	8b 91 3c 02 00
	00		 mov	 edx, DWORD PTR [ecx+572]
  0028a	8b 00		 mov	 eax, DWORD PTR [eax]
  0028c	52		 push	 edx
  0028d	8b 48 08	 mov	 ecx, DWORD PTR [eax+8]
  00290	ff d1		 call	 ecx

; 388  :         lpDDFrontBuffer=NULL;

  00292	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  00295	c7 82 3c 02 00
	00 00 00 00 00	 mov	 DWORD PTR [edx+572], 0

; 389  :         return FALSE;

  0029f	33 c0		 xor	 eax, eax
  002a1	eb 17		 jmp	 SHORT $LN7@Overlay_Lo
$LN1@Overlay_Lo:

; 390  :     }
; 391  : 
; 392  :     pInfo->OverlayPitch = lr.Pitch;         // Set new pitch, may change

  002a3	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  002a6	8b 4d f8	 mov	 ecx, DWORD PTR _lr$[ebp]
  002a9	89 48 44	 mov	 DWORD PTR [eax+68], ecx

; 393  :     pInfo->Overlay = (BYTE*)lr.pBits;

  002ac	8b 55 08	 mov	 edx, DWORD PTR _pInfo$[ebp]
  002af	8b 45 fc	 mov	 eax, DWORD PTR _lr$[ebp+4]
  002b2	89 42 2c	 mov	 DWORD PTR [edx+44], eax

; 394  : 
; 395  : 
; 396  :     // stay in critical section
; 397  :     return TRUE;

  002b5	b8 01 00 00 00	 mov	 eax, 1
$LN7@Overlay_Lo:

; 398  : }

  002ba	8b e5		 mov	 esp, ebp
  002bc	5d		 pop	 ebp
  002bd	c2 04 00	 ret	 4
?Overlay_Lock@CD3D9Output@@UAEHPAUTDeinterlaceInfo@@@Z ENDP ; CD3D9Output::Overlay_Lock
_TEXT	ENDS
PUBLIC	?Overlay_Lock_Extra_Buffer@CD3D9Output@@QAEHPAUTDeinterlaceInfo@@@Z ; CD3D9Output::Overlay_Lock_Extra_Buffer
; Function compile flags: /Odtp
;	COMDAT ?Overlay_Lock_Extra_Buffer@CD3D9Output@@QAEHPAUTDeinterlaceInfo@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_pInfo$ = 8						; size = 4
?Overlay_Lock_Extra_Buffer@CD3D9Output@@QAEHPAUTDeinterlaceInfo@@@Z PROC ; CD3D9Output::Overlay_Lock_Extra_Buffer, COMDAT
; _this$ = ecx

; 275  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 276  :     if(lpExtraMemoryForFilters == NULL)

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	83 b8 40 02 00
	00 00		 cmp	 DWORD PTR [eax+576], 0
  00011	75 13		 jne	 SHORT $LN1@Overlay_Lo@2

; 277  :     {
; 278  :         LOG(1, _T("Extra Buffer has been deleted"));

  00013	68 00 00 00 00	 push	 OFFSET ??_C@_1DM@KKHAPEAC@?$AAE?$AAx?$AAt?$AAr?$AAa?$AA?5?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?5?$AAh?$AAa?$AAs?$AA?5?$AAb?$AAe?$AAe?$AAn?$AA?5?$AAd?$AAe?$AAl?$AAe?$AAt?$AAe?$AAd?$AA?$AA@
  00018	6a 01		 push	 1
  0001a	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0001f	83 c4 08	 add	 esp, 8

; 279  :         return FALSE;

  00022	33 c0		 xor	 eax, eax
  00024	eb 37		 jmp	 SHORT $LN2@Overlay_Lo@2
$LN1@Overlay_Lo@2:

; 280  :     }
; 281  : 
; 282  : 
; 283  :     pInfo->OverlayPitch = DSCALER_MAX_WIDTH * 2;

  00026	8b 4d 08	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  00029	c7 41 44 00 1e
	00 00		 mov	 DWORD PTR [ecx+68], 7680 ; 00001e00H

; 284  :     // get back some memory aligned on 16 byte boundary for SSE
; 285  :     pInfo->Overlay = lpExtraMemoryForFilters + (16 - ((DWORD)lpExtraMemoryForFilters % 16));

  00030	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00033	8b 82 40 02 00
	00		 mov	 eax, DWORD PTR [edx+576]
  00039	33 d2		 xor	 edx, edx
  0003b	b9 10 00 00 00	 mov	 ecx, 16			; 00000010H
  00040	f7 f1		 div	 ecx
  00042	b8 10 00 00 00	 mov	 eax, 16			; 00000010H
  00047	2b c2		 sub	 eax, edx
  00049	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0004c	03 81 40 02 00
	00		 add	 eax, DWORD PTR [ecx+576]
  00052	8b 55 08	 mov	 edx, DWORD PTR _pInfo$[ebp]
  00055	89 42 2c	 mov	 DWORD PTR [edx+44], eax

; 286  :     return TRUE;

  00058	b8 01 00 00 00	 mov	 eax, 1
$LN2@Overlay_Lo@2:

; 287  : }

  0005d	8b e5		 mov	 esp, ebp
  0005f	5d		 pop	 ebp
  00060	c2 04 00	 ret	 4
?Overlay_Lock_Extra_Buffer@CD3D9Output@@QAEHPAUTDeinterlaceInfo@@@Z ENDP ; CD3D9Output::Overlay_Lock_Extra_Buffer
PUBLIC	?Overlay_Copy_Extra@CD3D9Output@@QAEXPAUTDeinterlaceInfo@@@Z ; CD3D9Output::Overlay_Copy_Extra
; Function compile flags: /Odtp
;	COMDAT ?Overlay_Copy_Extra@CD3D9Output@@QAEXPAUTDeinterlaceInfo@@@Z
_TEXT	SEGMENT
_this$ = -20						; size = 4
_i$147455 = -16						; size = 4
_ToPtr$147454 = -12					; size = 4
_FromPtr$ = -8						; size = 4
_FromPitch$ = -4					; size = 4
_pInfo$ = 8						; size = 4
?Overlay_Copy_Extra@CD3D9Output@@QAEXPAUTDeinterlaceInfo@@@Z PROC ; CD3D9Output::Overlay_Copy_Extra, COMDAT
; _this$ = ecx

; 559  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 14	 sub	 esp, 20			; 00000014H
  00006	89 4d ec	 mov	 DWORD PTR _this$[ebp], ecx

; 560  :     Overlay_Lock_Extra_Buffer(pInfo);

  00009	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  0000c	50		 push	 eax
  0000d	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00010	e8 00 00 00 00	 call	 ?Overlay_Lock_Extra_Buffer@CD3D9Output@@QAEHPAUTDeinterlaceInfo@@@Z ; CD3D9Output::Overlay_Lock_Extra_Buffer

; 561  :     BYTE* FromPtr = pInfo->Overlay;

  00015	8b 4d 08	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  00018	8b 51 2c	 mov	 edx, DWORD PTR [ecx+44]
  0001b	89 55 f8	 mov	 DWORD PTR _FromPtr$[ebp], edx

; 562  :     long FromPitch = pInfo->OverlayPitch;

  0001e	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  00021	8b 48 44	 mov	 ecx, DWORD PTR [eax+68]
  00024	89 4d fc	 mov	 DWORD PTR _FromPitch$[ebp], ecx

; 563  :     // careful as we need to ensure this is always unlocked
; 564  :     if(Overlay_Lock_Back_Buffer(pInfo, FALSE))

  00027	6a 00		 push	 0
  00029	8b 55 08	 mov	 edx, DWORD PTR _pInfo$[ebp]
  0002c	52		 push	 edx
  0002d	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00030	8b 10		 mov	 edx, DWORD PTR [eax]
  00032	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00035	8b 42 40	 mov	 eax, DWORD PTR [edx+64]
  00038	ff d0		 call	 eax
  0003a	85 c0		 test	 eax, eax
  0003c	74 68		 je	 SHORT $LN5@Overlay_Co@5

; 565  :     {
; 566  :         BYTE* ToPtr = pInfo->Overlay;

  0003e	8b 4d 08	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  00041	8b 51 2c	 mov	 edx, DWORD PTR [ecx+44]
  00044	89 55 f4	 mov	 DWORD PTR _ToPtr$147454[ebp], edx

; 567  : 
; 568  :         for(int i(0) ; i < pInfo->FrameHeight; ++i)

  00047	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _i$147455[ebp], 0
  0004e	eb 09		 jmp	 SHORT $LN3@Overlay_Co@5
$LN2@Overlay_Co@5:
  00050	8b 45 f0	 mov	 eax, DWORD PTR _i$147455[ebp]
  00053	83 c0 01	 add	 eax, 1
  00056	89 45 f0	 mov	 DWORD PTR _i$147455[ebp], eax
$LN3@Overlay_Co@5:
  00059	8b 4d 08	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  0005c	8b 55 f0	 mov	 edx, DWORD PTR _i$147455[ebp]
  0005f	3b 51 50	 cmp	 edx, DWORD PTR [ecx+80]
  00062	7d 31		 jge	 SHORT $LN1@Overlay_Co@5

; 569  :         {
; 570  :             pInfo->pMemcpy(ToPtr, FromPtr, pInfo->LineLength);

  00064	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  00067	8b 48 48	 mov	 ecx, DWORD PTR [eax+72]
  0006a	51		 push	 ecx
  0006b	8b 55 f8	 mov	 edx, DWORD PTR _FromPtr$[ebp]
  0006e	52		 push	 edx
  0006f	8b 45 f4	 mov	 eax, DWORD PTR _ToPtr$147454[ebp]
  00072	50		 push	 eax
  00073	8b 4d 08	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  00076	8b 51 60	 mov	 edx, DWORD PTR [ecx+96]
  00079	ff d2		 call	 edx
  0007b	83 c4 0c	 add	 esp, 12			; 0000000cH

; 571  :             FromPtr += FromPitch;

  0007e	8b 45 f8	 mov	 eax, DWORD PTR _FromPtr$[ebp]
  00081	03 45 fc	 add	 eax, DWORD PTR _FromPitch$[ebp]
  00084	89 45 f8	 mov	 DWORD PTR _FromPtr$[ebp], eax

; 572  :             ToPtr += pInfo->OverlayPitch;

  00087	8b 4d 08	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  0008a	8b 55 f4	 mov	 edx, DWORD PTR _ToPtr$147454[ebp]
  0008d	03 51 44	 add	 edx, DWORD PTR [ecx+68]
  00090	89 55 f4	 mov	 DWORD PTR _ToPtr$147454[ebp], edx

; 573  :         }

  00093	eb bb		 jmp	 SHORT $LN2@Overlay_Co@5
$LN1@Overlay_Co@5:

; 574  :         DO_EMMS;

  00095	0f 77		 emms

; 575  : 
; 576  :         Overlay_Unlock_Back_Buffer(FALSE);

  00097	6a 00		 push	 0
  00099	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  0009c	8b 10		 mov	 edx, DWORD PTR [eax]
  0009e	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  000a1	8b 42 44	 mov	 eax, DWORD PTR [edx+68]
  000a4	ff d0		 call	 eax
$LN5@Overlay_Co@5:

; 577  :     }
; 578  : }

  000a6	8b e5		 mov	 esp, ebp
  000a8	5d		 pop	 ebp
  000a9	c2 04 00	 ret	 4
?Overlay_Copy_Extra@CD3D9Output@@QAEXPAUTDeinterlaceInfo@@@Z ENDP ; CD3D9Output::Overlay_Copy_Extra
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Overlay_Lock_Back_Buffer@CD3D9Output@@UAEHPAUTDeinterlaceInfo@@H@Z
_TEXT	SEGMENT
_this$ = -16						; size = 4
_r$ = -12						; size = 8
_ddrval$ = -4						; size = 4
_pInfo$ = 8						; size = 4
_bUseExtraBuffer$ = 12					; size = 4
?Overlay_Lock_Back_Buffer@CD3D9Output@@UAEHPAUTDeinterlaceInfo@@H@Z PROC ; CD3D9Output::Overlay_Lock_Back_Buffer, COMDAT
; _this$ = ecx

; 290  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 10	 sub	 esp, 16			; 00000010H
  00006	89 4d f0	 mov	 DWORD PTR _this$[ebp], ecx

; 291  :     HRESULT ddrval;
; 292  : 
; 293  :     if(lpDDOverlay == NULL)

  00009	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	83 b8 34 02 00
	00 00		 cmp	 DWORD PTR [eax+564], 0
  00013	75 07		 jne	 SHORT $LN3@Overlay_Lo@5

; 294  :     {
; 295  :         return FALSE;

  00015	33 c0		 xor	 eax, eax
  00017	e9 9a 00 00 00	 jmp	 $LN4@Overlay_Lo@5
$LN3@Overlay_Lo@5:

; 296  :     }
; 297  : 
; 298  :     if(bUseExtraBuffer && lpExtraMemoryForFilters != NULL)

  0001c	83 7d 0c 00	 cmp	 DWORD PTR _bUseExtraBuffer$[ebp], 0
  00020	74 1a		 je	 SHORT $LN2@Overlay_Lo@5
  00022	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00025	83 b9 40 02 00
	00 00		 cmp	 DWORD PTR [ecx+576], 0
  0002c	74 0e		 je	 SHORT $LN2@Overlay_Lo@5

; 299  :     {
; 300  :         return Overlay_Lock_Extra_Buffer(pInfo);

  0002e	8b 55 08	 mov	 edx, DWORD PTR _pInfo$[ebp]
  00031	52		 push	 edx
  00032	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00035	e8 00 00 00 00	 call	 ?Overlay_Lock_Extra_Buffer@CD3D9Output@@QAEHPAUTDeinterlaceInfo@@@Z ; CD3D9Output::Overlay_Lock_Extra_Buffer
  0003a	eb 7a		 jmp	 SHORT $LN4@Overlay_Lo@5
$LN2@Overlay_Lo@5:

; 301  :     }
; 302  :     EnterCriticalSection(&hDDCritSect);

  0003c	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  0003f	05 18 02 00 00	 add	 eax, 536		; 00000218H
  00044	50		 push	 eax
  00045	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__EnterCriticalSection@4

; 303  : 
; 304  :     D3DLOCKED_RECT r;
; 305  : 
; 306  :     ddrval=lpDDOverlay->LockRect(&r, NULL, D3DLOCK_DISCARD);

  0004b	68 00 20 00 00	 push	 8192			; 00002000H
  00050	6a 00		 push	 0
  00052	8d 4d f4	 lea	 ecx, DWORD PTR _r$[ebp]
  00055	51		 push	 ecx
  00056	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  00059	8b 82 34 02 00
	00		 mov	 eax, DWORD PTR [edx+564]
  0005f	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00062	8b 91 34 02 00
	00		 mov	 edx, DWORD PTR [ecx+564]
  00068	8b 00		 mov	 eax, DWORD PTR [eax]
  0006a	52		 push	 edx
  0006b	8b 48 34	 mov	 ecx, DWORD PTR [eax+52]
  0006e	ff d1		 call	 ecx
  00070	89 45 fc	 mov	 DWORD PTR _ddrval$[ebp], eax

; 307  :     if(FAILED(ddrval))

  00073	83 7d fc 00	 cmp	 DWORD PTR _ddrval$[ebp], 0
  00077	7d 26		 jge	 SHORT $LN1@Overlay_Lo@5

; 308  :     {
; 309  :         LOG(1, _T("Lock failed %8x"), ddrval);

  00079	8b 55 fc	 mov	 edx, DWORD PTR _ddrval$[ebp]
  0007c	52		 push	 edx
  0007d	68 00 00 00 00	 push	 OFFSET ??_C@_1CA@FOFBHGNI@?$AAL?$AAo?$AAc?$AAk?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AA?$CF?$AA8?$AAx?$AA?$AA@
  00082	6a 01		 push	 1
  00084	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00089	83 c4 0c	 add	 esp, 12			; 0000000cH

; 310  :         LeaveCriticalSection(&hDDCritSect);

  0008c	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  0008f	05 18 02 00 00	 add	 eax, 536		; 00000218H
  00094	50		 push	 eax
  00095	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 311  :         return FALSE;

  0009b	33 c0		 xor	 eax, eax
  0009d	eb 17		 jmp	 SHORT $LN4@Overlay_Lo@5
$LN1@Overlay_Lo@5:

; 312  :     }
; 313  : 
; 314  : 
; 315  :     pInfo->OverlayPitch = r.Pitch;       // Set new pitch, may change

  0009f	8b 4d 08	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  000a2	8b 55 f4	 mov	 edx, DWORD PTR _r$[ebp]
  000a5	89 51 44	 mov	 DWORD PTR [ecx+68], edx

; 316  :     pInfo->Overlay = (BYTE*)r.pBits;

  000a8	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  000ab	8b 4d f8	 mov	 ecx, DWORD PTR _r$[ebp+4]
  000ae	89 48 2c	 mov	 DWORD PTR [eax+44], ecx

; 317  :     // stay in critical section
; 318  :     return TRUE;

  000b1	b8 01 00 00 00	 mov	 eax, 1
$LN4@Overlay_Lo@5:

; 319  : }

  000b6	8b e5		 mov	 esp, ebp
  000b8	5d		 pop	 ebp
  000b9	c2 08 00	 ret	 8
?Overlay_Lock_Back_Buffer@CD3D9Output@@UAEHPAUTDeinterlaceInfo@@H@Z ENDP ; CD3D9Output::Overlay_Lock_Back_Buffer
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Overlay_Update@CD3D9Output@@UAEHPAUtagRECT@@0K@Z
_TEXT	SEGMENT
tv128 = -40						; size = 4
_this$ = -36						; size = 4
_ScreenRect$147267 = -32				; size = 16
_oldSrc$147262 = -16					; size = 16
_pSrcRect$ = 8						; size = 4
_pDestRect$ = 12					; size = 4
_dwFlags$ = 16						; size = 4
?Overlay_Update@CD3D9Output@@UAEHPAUtagRECT@@0K@Z PROC	; CD3D9Output::Overlay_Update, COMDAT
; _this$ = ecx

; 104  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 28	 sub	 esp, 40			; 00000028H
  00006	89 4d dc	 mov	 DWORD PTR _this$[ebp], ecx

; 105  :     if( g_pD3D==NULL || pDevice==NULL || lpDDOverlay==NULL)

  00009	8b 45 dc	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	83 b8 30 02 00
	00 00		 cmp	 DWORD PTR [eax+560], 0
  00013	74 18		 je	 SHORT $LN5@Overlay_Up
  00015	8b 4d dc	 mov	 ecx, DWORD PTR _this$[ebp]
  00018	83 b9 cc 04 00
	00 00		 cmp	 DWORD PTR [ecx+1228], 0
  0001f	74 0c		 je	 SHORT $LN5@Overlay_Up
  00021	8b 55 dc	 mov	 edx, DWORD PTR _this$[ebp]
  00024	83 ba 34 02 00
	00 00		 cmp	 DWORD PTR [edx+564], 0
  0002b	75 07		 jne	 SHORT $LN6@Overlay_Up
$LN5@Overlay_Up:

; 106  :     {
; 107  :         return FALSE;

  0002d	33 c0		 xor	 eax, eax
  0002f	e9 fd 00 00 00	 jmp	 $LN7@Overlay_Up
$LN6@Overlay_Up:

; 108  :     }
; 109  : 	
; 110  :     EnterCriticalSection(&hDDCritSect);

  00034	8b 45 dc	 mov	 eax, DWORD PTR _this$[ebp]
  00037	05 18 02 00 00	 add	 eax, 536		; 00000218H
  0003c	50		 push	 eax
  0003d	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__EnterCriticalSection@4

; 111  :     if (pSrcRect == NULL)

  00043	83 7d 08 00	 cmp	 DWORD PTR _pSrcRect$[ebp], 0
  00047	75 05		 jne	 SHORT $LN4@Overlay_Up

; 112  :     {
; 113  :         // do nothing, we do not need to hide anything, because drawing is done in Overlay_Flip
; 114  :     }
; 115  :     else

  00049	e9 c1 00 00 00	 jmp	 $LN3@Overlay_Up
$LN4@Overlay_Up:

; 116  :     {
; 117  :         RECT oldSrc(srcrect);

  0004e	8b 4d dc	 mov	 ecx, DWORD PTR _this$[ebp]
  00051	81 c1 4c 04 00
	00		 add	 ecx, 1100		; 0000044cH
  00057	8b 11		 mov	 edx, DWORD PTR [ecx]
  00059	89 55 f0	 mov	 DWORD PTR _oldSrc$147262[ebp], edx
  0005c	8b 41 04	 mov	 eax, DWORD PTR [ecx+4]
  0005f	89 45 f4	 mov	 DWORD PTR _oldSrc$147262[ebp+4], eax
  00062	8b 51 08	 mov	 edx, DWORD PTR [ecx+8]
  00065	89 55 f8	 mov	 DWORD PTR _oldSrc$147262[ebp+8], edx
  00068	8b 41 0c	 mov	 eax, DWORD PTR [ecx+12]
  0006b	89 45 fc	 mov	 DWORD PTR _oldSrc$147262[ebp+12], eax

; 118  :         CopyRect(&srcrect, pSrcRect);

  0006e	8b 4d 08	 mov	 ecx, DWORD PTR _pSrcRect$[ebp]
  00071	51		 push	 ecx
  00072	8b 55 dc	 mov	 edx, DWORD PTR _this$[ebp]
  00075	81 c2 4c 04 00
	00		 add	 edx, 1100		; 0000044cH
  0007b	52		 push	 edx
  0007c	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CopyRect@8

; 119  :         if(srcrect.right > oldSrc.right || srcrect.bottom > oldSrc.bottom)

  00082	8b 45 dc	 mov	 eax, DWORD PTR _this$[ebp]
  00085	8b 88 54 04 00
	00		 mov	 ecx, DWORD PTR [eax+1108]
  0008b	3b 4d f8	 cmp	 ecx, DWORD PTR _oldSrc$147262[ebp+8]
  0008e	7f 0e		 jg	 SHORT $LN1@Overlay_Up
  00090	8b 55 dc	 mov	 edx, DWORD PTR _this$[ebp]
  00093	8b 82 58 04 00
	00		 mov	 eax, DWORD PTR [edx+1112]
  00099	3b 45 fc	 cmp	 eax, DWORD PTR _oldSrc$147262[ebp+12]
  0009c	7e 0a		 jle	 SHORT $LN2@Overlay_Up
$LN1@Overlay_Up:

; 120  :         {
; 121  :             OffscreenHDC.ReleaseD3DBuffer();

  0009e	b9 00 00 00 00	 mov	 ecx, OFFSET ?OffscreenHDC@@3VCPaintingHDC@@A ; OffscreenHDC
  000a3	e8 00 00 00 00	 call	 ?ReleaseD3DBuffer@CPaintingHDC@@QAEXXZ ; CPaintingHDC::ReleaseD3DBuffer
$LN2@Overlay_Up:

; 122  :         }
; 123  : 
; 124  :         CopyRect(&destrect, pDestRect);

  000a8	8b 4d 0c	 mov	 ecx, DWORD PTR _pDestRect$[ebp]
  000ab	51		 push	 ecx
  000ac	8b 55 dc	 mov	 edx, DWORD PTR _this$[ebp]
  000af	81 c2 5c 04 00
	00		 add	 edx, 1116		; 0000045cH
  000b5	52		 push	 edx
  000b6	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CopyRect@8

; 125  :         MapWindowPoints(HWND_DESKTOP, m_hWnd, (LPPOINT)&destrect, 2);

  000bc	6a 02		 push	 2
  000be	8b 45 dc	 mov	 eax, DWORD PTR _this$[ebp]
  000c1	05 5c 04 00 00	 add	 eax, 1116		; 0000045cH
  000c6	50		 push	 eax
  000c7	8b 4d dc	 mov	 ecx, DWORD PTR _this$[ebp]
  000ca	8b 91 6c 04 00
	00		 mov	 edx, DWORD PTR [ecx+1132]
  000d0	52		 push	 edx
  000d1	6a 00		 push	 0
  000d3	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__MapWindowPoints@16

; 126  : 
; 127  :         // Fix for multi mon
; 128  :         RECT ScreenRect;
; 129  :         GetActiveOutput()->GetMonitorRect(GetMainWnd(), &ScreenRect);

  000d9	e8 00 00 00 00	 call	 ?GetActiveOutput@@YAPAVIOutput@@XZ ; GetActiveOutput
  000de	89 45 d8	 mov	 DWORD PTR tv128[ebp], eax
  000e1	8d 45 e0	 lea	 eax, DWORD PTR _ScreenRect$147267[ebp]
  000e4	50		 push	 eax
  000e5	e8 00 00 00 00	 call	 ?GetMainWnd@@YAPAUHWND__@@XZ ; GetMainWnd
  000ea	50		 push	 eax
  000eb	8b 4d d8	 mov	 ecx, DWORD PTR tv128[ebp]
  000ee	8b 11		 mov	 edx, DWORD PTR [ecx]
  000f0	8b 4d d8	 mov	 ecx, DWORD PTR tv128[ebp]
  000f3	8b 42 0c	 mov	 eax, DWORD PTR [edx+12]
  000f6	ff d0		 call	 eax

; 130  : 
; 131  :         OffsetRect(&destrect, ScreenRect.left, ScreenRect.top);

  000f8	8b 4d e4	 mov	 ecx, DWORD PTR _ScreenRect$147267[ebp+4]
  000fb	51		 push	 ecx
  000fc	8b 55 e0	 mov	 edx, DWORD PTR _ScreenRect$147267[ebp]
  000ff	52		 push	 edx
  00100	8b 45 dc	 mov	 eax, DWORD PTR _this$[ebp]
  00103	05 5c 04 00 00	 add	 eax, 1116		; 0000045cH
  00108	50		 push	 eax
  00109	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__OffsetRect@12
$LN3@Overlay_Up:

; 132  :     }
; 133  : 
; 134  :     VT_SetOverlayColour((COLORREF)0x00101020);

  0010f	68 20 10 10 00	 push	 1052704			; 00101020H
  00114	e8 00 00 00 00	 call	 ?VT_SetOverlayColour@@YAXK@Z ; VT_SetOverlayColour
  00119	83 c4 04	 add	 esp, 4

; 135  : 
; 136  :     LeaveCriticalSection(&hDDCritSect);

  0011c	8b 4d dc	 mov	 ecx, DWORD PTR _this$[ebp]
  0011f	81 c1 18 02 00
	00		 add	 ecx, 536		; 00000218H
  00125	51		 push	 ecx
  00126	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 137  : 
; 138  :     return TRUE;

  0012c	b8 01 00 00 00	 mov	 eax, 1
$LN7@Overlay_Up:

; 139  : }

  00131	8b e5		 mov	 esp, ebp
  00133	5d		 pop	 ebp
  00134	c2 0c 00	 ret	 12			; 0000000cH
?Overlay_Update@CD3D9Output@@UAEHPAUtagRECT@@0K@Z ENDP	; CD3D9Output::Overlay_Update
PUBLIC	?D3D9_WriteSettingsToIni@@YAXH@Z		; D3D9_WriteSettingsToIni
; Function compile flags: /Odtp
;	COMDAT ?D3D9_WriteSettingsToIni@@YAXH@Z
_TEXT	SEGMENT
_bOptimizeFileAccess$ = 8				; size = 4
?D3D9_WriteSettingsToIni@@YAXH@Z PROC			; D3D9_WriteSettingsToIni, COMDAT

; 792  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp

; 793  :     D3D9SettingsHolder.WriteToIni(bOptimizeFileAccess);

  00003	8b 45 08	 mov	 eax, DWORD PTR _bOptimizeFileAccess$[ebp]
  00006	50		 push	 eax
  00007	b9 00 00 00 00	 mov	 ecx, OFFSET ?D3D9SettingsHolder@@3VCSettingsHolder@@A ; D3D9SettingsHolder
  0000c	e8 00 00 00 00	 call	 ?WriteToIni@CSettingsHolder@@QAEXH@Z ; CSettingsHolder::WriteToIni

; 794  : }

  00011	5d		 pop	 ebp
  00012	c3		 ret	 0
?D3D9_WriteSettingsToIni@@YAXH@Z ENDP			; D3D9_WriteSettingsToIni
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Overlay_Flip@CD3D9Output@@UAEHKHPAEHPAUTDeinterlaceInfo@@@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_RetVal$ = -4						; size = 4
_FlipFlag$ = 8						; size = 4
_bUseExtraBuffer$ = 12					; size = 4
_lpExternalMemoryBuffer$ = 16				; size = 4
_ExternalPitch$ = 20					; size = 4
_pInfo$ = 24						; size = 4
?Overlay_Flip@CD3D9Output@@UAEHKHPAEHPAUTDeinterlaceInfo@@@Z PROC ; CD3D9Output::Overlay_Flip, COMDAT
; _this$ = ecx

; 582  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 08	 sub	 esp, 8
  00006	89 4d f8	 mov	 DWORD PTR _this$[ebp], ecx

; 583  :     if(lpDDOverlay == NULL)

  00009	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	83 b8 34 02 00
	00 00		 cmp	 DWORD PTR [eax+564], 0
  00013	75 16		 jne	 SHORT $LN7@Overlay_Fl

; 584  :     {
; 585  :         LOG(1, _T("D3DDevice has been deleted - trying to reset"));

  00015	68 00 00 00 00	 push	 OFFSET ??_C@_1FK@MIPPDDEH@?$AAD?$AA3?$AAD?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAh?$AAa?$AAs?$AA?5?$AAb?$AAe?$AAe?$AAn?$AA?5?$AAd?$AAe?$AAl?$AAe?$AAt?$AAe?$AAd?$AA?5?$AA?9?$AA?5?$AAt?$AAr?$AAy@
  0001a	6a 01		 push	 1
  0001c	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00021	83 c4 08	 add	 esp, 8

; 586  :         return FALSE;

  00024	33 c0		 xor	 eax, eax
  00026	e9 fa 00 00 00	 jmp	 $LN8@Overlay_Fl
$LN7@Overlay_Fl:

; 587  :     }
; 588  : 
; 589  :     if(bUseExtraBuffer && lpExternalMemoryBuffer != NULL)

  0002b	83 7d 0c 00	 cmp	 DWORD PTR _bUseExtraBuffer$[ebp], 0
  0002f	74 1c		 je	 SHORT $LN6@Overlay_Fl
  00031	83 7d 10 00	 cmp	 DWORD PTR _lpExternalMemoryBuffer$[ebp], 0
  00035	74 16		 je	 SHORT $LN6@Overlay_Fl

; 590  :     {
; 591  :         Overlay_Copy_External(lpExternalMemoryBuffer, ExternalPitch, pInfo);

  00037	8b 4d 18	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  0003a	51		 push	 ecx
  0003b	8b 55 14	 mov	 edx, DWORD PTR _ExternalPitch$[ebp]
  0003e	52		 push	 edx
  0003f	8b 45 10	 mov	 eax, DWORD PTR _lpExternalMemoryBuffer$[ebp]
  00042	50		 push	 eax
  00043	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00046	e8 00 00 00 00	 call	 ?Overlay_Copy_External@CD3D9Output@@QAEXPAEHPAUTDeinterlaceInfo@@@Z ; CD3D9Output::Overlay_Copy_External
  0004b	eb 1e		 jmp	 SHORT $LN5@Overlay_Fl
$LN6@Overlay_Fl:

; 592  :     }
; 593  : 
; 594  :     // if we have been using the extra surface then we need to copy
; 595  :     // the picture onto the overlay
; 596  :     else if(bUseExtraBuffer && lpExtraMemoryForFilters != NULL)

  0004d	83 7d 0c 00	 cmp	 DWORD PTR _bUseExtraBuffer$[ebp], 0
  00051	74 18		 je	 SHORT $LN5@Overlay_Fl
  00053	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00056	83 b9 40 02 00
	00 00		 cmp	 DWORD PTR [ecx+576], 0
  0005d	74 0c		 je	 SHORT $LN5@Overlay_Fl

; 597  :     {
; 598  :         Overlay_Copy_Extra(pInfo);

  0005f	8b 55 18	 mov	 edx, DWORD PTR _pInfo$[ebp]
  00062	52		 push	 edx
  00063	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00066	e8 00 00 00 00	 call	 ?Overlay_Copy_Extra@CD3D9Output@@QAEXPAUTDeinterlaceInfo@@@Z ; CD3D9Output::Overlay_Copy_Extra
$LN5@Overlay_Fl:

; 599  :     }
; 600  : 
; 601  :     EnterCriticalSection(&hDDCritSect);

  0006b	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0006e	05 18 02 00 00	 add	 eax, 536		; 00000218H
  00073	50		 push	 eax
  00074	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__EnterCriticalSection@4

; 602  : 
; 603  :     BOOL RetVal = TRUE;

  0007a	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _RetVal$[ebp], 1

; 604  : 	// here the smaller source rect out of back buffer gets scaled to the output window surface with destrec size
; 605  : //    FlipResult = pDevice->Present(&srcrect, &destrect, m_hWnd, NULL);
; 606  :     FlipResult = pDevice->Present(NULL, &destrect, m_hWnd, NULL);

  00081	6a 00		 push	 0
  00083	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00086	8b 91 6c 04 00
	00		 mov	 edx, DWORD PTR [ecx+1132]
  0008c	52		 push	 edx
  0008d	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  00090	05 5c 04 00 00	 add	 eax, 1116		; 0000045cH
  00095	50		 push	 eax
  00096	6a 00		 push	 0
  00098	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0009b	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  000a1	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  000a4	8b 88 cc 04 00
	00		 mov	 ecx, DWORD PTR [eax+1228]
  000aa	8b 12		 mov	 edx, DWORD PTR [edx]
  000ac	51		 push	 ecx
  000ad	8b 42 44	 mov	 eax, DWORD PTR [edx+68]
  000b0	ff d0		 call	 eax
  000b2	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  000b5	89 81 c0 04 00
	00		 mov	 DWORD PTR [ecx+1216], eax

; 607  : 
; 608  :     if(FlipResult==D3DERR_DEVICELOST || FlipResult==D3DERR_DRIVERINTERNALERROR)

  000bb	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  000be	81 ba c0 04 00
	00 68 08 76 88	 cmp	 DWORD PTR [edx+1216], -2005530520 ; 88760868H
  000c8	74 0f		 je	 SHORT $LN2@Overlay_Fl
  000ca	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  000cd	81 b8 c0 04 00
	00 27 08 76 88	 cmp	 DWORD PTR [eax+1216], -2005530585 ; 88760827H
  000d7	75 16		 jne	 SHORT $LN3@Overlay_Fl
$LN2@Overlay_Fl:

; 609  :     {
; 610  :         // Device lost ...
; 611  :         LeaveCriticalSection(&hDDCritSect);

  000d9	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  000dc	81 c1 18 02 00
	00		 add	 ecx, 536		; 00000218H
  000e2	51		 push	 ecx
  000e3	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 612  :         return FALSE;

  000e9	33 c0		 xor	 eax, eax
  000eb	eb 38		 jmp	 SHORT $LN8@Overlay_Fl

; 613  :     }
; 614  :     else

  000ed	eb 24		 jmp	 SHORT $LN1@Overlay_Fl
$LN3@Overlay_Fl:

; 615  :     {
; 616  :         m_FramesPresented++;

  000ef	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  000f2	8b 82 b0 04 00
	00		 mov	 eax, DWORD PTR [edx+1200]
  000f8	83 c0 01	 add	 eax, 1
  000fb	8b 8a b4 04 00
	00		 mov	 ecx, DWORD PTR [edx+1204]
  00101	83 d1 00	 adc	 ecx, 0
  00104	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00107	89 82 b0 04 00
	00		 mov	 DWORD PTR [edx+1200], eax
  0010d	89 8a b4 04 00
	00		 mov	 DWORD PTR [edx+1204], ecx
$LN1@Overlay_Fl:

; 617  :     }
; 618  : 
; 619  :     LeaveCriticalSection(&hDDCritSect);

  00113	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  00116	05 18 02 00 00	 add	 eax, 536		; 00000218H
  0011b	50		 push	 eax
  0011c	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 620  : 
; 621  :     return RetVal;

  00122	8b 45 fc	 mov	 eax, DWORD PTR _RetVal$[ebp]
$LN8@Overlay_Fl:

; 622  : }

  00125	8b e5		 mov	 esp, ebp
  00127	5d		 pop	 ebp
  00128	c2 14 00	 ret	 20			; 00000014H
?Overlay_Flip@CD3D9Output@@UAEHKHPAEHPAUTDeinterlaceInfo@@@Z ENDP ; CD3D9Output::Overlay_Flip
PUBLIC	__$ArrayPad$
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?InitDD@CD3D9Output@@UAEHPAUHWND__@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?InitDD@CD3D9Output@@UAEHPAUHWND__@@@Z$0
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?InitDD@CD3D9Output@@UAEHPAUHWND__@@@Z$1
__ehfuncinfo$?InitDD@CD3D9Output@@UAEHPAUHWND__@@@Z DD 019930522H
	DD	02H
	DD	FLAT:__unwindtable$?InitDD@CD3D9Output@@UAEHPAUHWND__@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ?InitDD@CD3D9Output@@UAEHPAUHWND__@@@Z
_TEXT	SEGMENT
_this$ = -1200						; size = 4
$T353116 = -1196					; size = 28
$T353115 = -1168					; size = 28
_i$147528 = -1140					; size = 4
_create3D9$ = -1136					; size = 4
_adapter$ = -1132					; size = 1100
__$ArrayPad$ = -24					; size = 4
_adapter_id$ = -20					; size = 4
_hmon$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
_hWnd$ = 8						; size = 4
?InitDD@CD3D9Output@@UAEHPAUHWND__@@@Z PROC		; CD3D9Output::InitDD, COMDAT
; _this$ = ecx

; 625  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$?InitDD@CD3D9Output@@UAEHPAUHWND__@@@Z
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	81 ec a4 04 00
	00		 sub	 esp, 1188		; 000004a4H
  00017	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  0001c	33 c5		 xor	 eax, ebp
  0001e	89 45 e8	 mov	 DWORD PTR __$ArrayPad$[ebp], eax
  00021	50		 push	 eax
  00022	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  00025	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  0002b	89 8d 50 fb ff
	ff		 mov	 DWORD PTR _this$[ebp], ecx

; 626  :     DynamicFunctionS1<IDirect3D9*, UINT> create3D9(_T("D3D9.dll"), "Direct3DCreate9");

  00031	68 00 00 00 00	 push	 OFFSET ??_C@_0BA@FAFMMBOF@Direct3DCreate9?$AA@
  00036	68 00 00 00 00	 push	 OFFSET ??_C@_1BC@CLHHAIAC@?$AAD?$AA3?$AAD?$AA9?$AA?4?$AAd?$AAl?$AAl?$AA?$AA@
  0003b	8d 8d 90 fb ff
	ff		 lea	 ecx, DWORD PTR _create3D9$[ebp]
  00041	e8 00 00 00 00	 call	 ??0?$DynamicFunctionS1@PAUIDirect3D9@@I@@QAE@PB_WPBD@Z ; DynamicFunctionS1<IDirect3D9 *,unsigned int>::DynamicFunctionS1<IDirect3D9 *,unsigned int>

; 627  :     if(!create3D9)

  00046	8d 8d 90 fb ff
	ff		 lea	 ecx, DWORD PTR _create3D9$[ebp]
  0004c	e8 00 00 00 00	 call	 ??B?$DynamicFunctionParent@P6GPAUIDirect3D9@@I@Z@@QBEHXZ ; DynamicFunctionParent<IDirect3D9 * (__stdcall*)(unsigned int)>::operator int
  00051	85 c0		 test	 eax, eax
  00053	75 07		 jne	 SHORT $LN8@InitDD

; 628  :     {
; 629  :         return FALSE;

  00055	33 c0		 xor	 eax, eax
  00057	e9 78 02 00 00	 jmp	 $LN9@InitDD
$LN8@InitDD:

; 630  :     }
; 631  :     if( NULL == (g_pD3D = create3D9(D3D_SDK_VERSION)))

  0005c	6a 20		 push	 32			; 00000020H
  0005e	8d 8d 90 fb ff
	ff		 lea	 ecx, DWORD PTR _create3D9$[ebp]
  00064	e8 00 00 00 00	 call	 ??R?$DynamicFunctionS1@PAUIDirect3D9@@I@@QBEPAUIDirect3D9@@I@Z ; DynamicFunctionS1<IDirect3D9 *,unsigned int>::operator()
  00069	8b 8d 50 fb ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0006f	89 81 30 02 00
	00		 mov	 DWORD PTR [ecx+560], eax
  00075	8b 95 50 fb ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0007b	83 ba 30 02 00
	00 00		 cmp	 DWORD PTR [edx+560], 0
  00082	75 4b		 jne	 SHORT $LN7@InitDD

; 632  :     {
; 633  :         ErrorBox(_T("Direct3DCreate9 failed"));

  00084	68 00 00 00 00	 push	 OFFSET ??_C@_1CO@ILIDPNJO@?$AAD?$AAi?$AAr?$AAe?$AAc?$AAt?$AA3?$AAD?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AA9?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AA@
  00089	8d 8d 70 fb ff
	ff		 lea	 ecx, DWORD PTR $T353115[ebp]
  0008f	e8 00 00 00 00	 call	 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  00094	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  0009b	8d 85 70 fb ff
	ff		 lea	 eax, DWORD PTR $T353115[ebp]
  000a1	50		 push	 eax
  000a2	68 79 02 00 00	 push	 633			; 00000279H
  000a7	68 00 00 00 00	 push	 OFFSET ??_C@_1CC@BINOAKMK@?$AA?4?$AA?2?$AAD?$AA3?$AAD?$AA9?$AAO?$AAu?$AAt?$AAp?$AAu?$AAt?$AA?4?$AAc?$AAp?$AAp?$AA?$AA@
  000ac	6a 00		 push	 0
  000ae	e8 00 00 00 00	 call	 ?_ErrorBox@@YAXPAUHWND__@@PB_WHABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z ; _ErrorBox
  000b3	83 c4 10	 add	 esp, 16			; 00000010H
  000b6	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  000bd	8d 8d 70 fb ff
	ff		 lea	 ecx, DWORD PTR $T353115[ebp]
  000c3	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >

; 634  :         return FALSE;

  000c8	33 c0		 xor	 eax, eax
  000ca	e9 05 02 00 00	 jmp	 $LN9@InitDD
$LN7@InitDD:

; 635  :     }
; 636  : 
; 637  :     m_hWnd=hWnd;

  000cf	8b 8d 50 fb ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  000d5	8b 55 08	 mov	 edx, DWORD PTR _hWnd$[ebp]
  000d8	89 91 6c 04 00
	00		 mov	 DWORD PTR [ecx+1132], edx

; 638  : 
; 639  :     // find display adapter
; 640  :     HMONITOR hmon=MonitorFromWindow(hWnd, MONITOR_DEFAULTTOPRIMARY);

  000de	6a 01		 push	 1
  000e0	8b 45 08	 mov	 eax, DWORD PTR _hWnd$[ebp]
  000e3	50		 push	 eax
  000e4	e8 00 00 00 00	 call	 _xMonitorFromWindow@8
  000e9	89 45 f0	 mov	 DWORD PTR _hmon$[ebp], eax

; 641  :     D3DADAPTER_IDENTIFIER9 adapter;
; 642  :     int adapter_id=D3DADAPTER_DEFAULT;

  000ec	c7 45 ec 00 00
	00 00		 mov	 DWORD PTR _adapter_id$[ebp], 0

; 643  :     for(int i=0;i<g_pD3D->GetAdapterCount();i++)

  000f3	c7 85 8c fb ff
	ff 00 00 00 00	 mov	 DWORD PTR _i$147528[ebp], 0
  000fd	eb 0f		 jmp	 SHORT $LN6@InitDD
$LN5@InitDD:
  000ff	8b 8d 8c fb ff
	ff		 mov	 ecx, DWORD PTR _i$147528[ebp]
  00105	83 c1 01	 add	 ecx, 1
  00108	89 8d 8c fb ff
	ff		 mov	 DWORD PTR _i$147528[ebp], ecx
$LN6@InitDD:
  0010e	8b 95 50 fb ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00114	8b 82 30 02 00
	00		 mov	 eax, DWORD PTR [edx+560]
  0011a	8b 8d 50 fb ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00120	8b 91 30 02 00
	00		 mov	 edx, DWORD PTR [ecx+560]
  00126	8b 00		 mov	 eax, DWORD PTR [eax]
  00128	52		 push	 edx
  00129	8b 48 10	 mov	 ecx, DWORD PTR [eax+16]
  0012c	ff d1		 call	 ecx
  0012e	39 85 8c fb ff
	ff		 cmp	 DWORD PTR _i$147528[ebp], eax
  00134	73 70		 jae	 SHORT $LN4@InitDD

; 644  :     {
; 645  :         if(g_pD3D->GetAdapterMonitor(i)==hmon)

  00136	8b 95 8c fb ff
	ff		 mov	 edx, DWORD PTR _i$147528[ebp]
  0013c	52		 push	 edx
  0013d	8b 85 50 fb ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00143	8b 88 30 02 00
	00		 mov	 ecx, DWORD PTR [eax+560]
  00149	8b 95 50 fb ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0014f	8b 82 30 02 00
	00		 mov	 eax, DWORD PTR [edx+560]
  00155	8b 09		 mov	 ecx, DWORD PTR [ecx]
  00157	50		 push	 eax
  00158	8b 51 3c	 mov	 edx, DWORD PTR [ecx+60]
  0015b	ff d2		 call	 edx
  0015d	3b 45 f0	 cmp	 eax, DWORD PTR _hmon$[ebp]
  00160	75 3f		 jne	 SHORT $LN3@InitDD

; 646  :         {
; 647  :             // this is ours we want to use
; 648  :             if(SUCCEEDED(g_pD3D->GetAdapterIdentifier(i, 0, &adapter)))

  00162	8d 85 94 fb ff
	ff		 lea	 eax, DWORD PTR _adapter$[ebp]
  00168	50		 push	 eax
  00169	6a 00		 push	 0
  0016b	8b 8d 8c fb ff
	ff		 mov	 ecx, DWORD PTR _i$147528[ebp]
  00171	51		 push	 ecx
  00172	8b 95 50 fb ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00178	8b 82 30 02 00
	00		 mov	 eax, DWORD PTR [edx+560]
  0017e	8b 8d 50 fb ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00184	8b 91 30 02 00
	00		 mov	 edx, DWORD PTR [ecx+560]
  0018a	8b 00		 mov	 eax, DWORD PTR [eax]
  0018c	52		 push	 edx
  0018d	8b 48 14	 mov	 ecx, DWORD PTR [eax+20]
  00190	ff d1		 call	 ecx
  00192	85 c0		 test	 eax, eax
  00194	7c 0b		 jl	 SHORT $LN3@InitDD

; 649  :             {
; 650  :                 adapter_id=i;

  00196	8b 95 8c fb ff
	ff		 mov	 edx, DWORD PTR _i$147528[ebp]
  0019c	89 55 ec	 mov	 DWORD PTR _adapter_id$[ebp], edx

; 651  :                 break;

  0019f	eb 05		 jmp	 SHORT $LN4@InitDD
$LN3@InitDD:

; 652  :             }
; 653  :         }
; 654  :     }

  001a1	e9 59 ff ff ff	 jmp	 $LN5@InitDD
$LN4@InitDD:

; 655  : 
; 656  : 
; 657  :     ZeroMemory( &d3dpp, sizeof(d3dpp) );

  001a6	6a 38		 push	 56			; 00000038H
  001a8	6a 00		 push	 0
  001aa	8b 85 50 fb ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  001b0	05 74 04 00 00	 add	 eax, 1140		; 00000474H
  001b5	50		 push	 eax
  001b6	e8 00 00 00 00	 call	 _memset
  001bb	83 c4 0c	 add	 esp, 12			; 0000000cH

; 658  :     d3dpp.Windowed   = TRUE;

  001be	8b 8d 50 fb ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  001c4	c7 81 94 04 00
	00 01 00 00 00	 mov	 DWORD PTR [ecx+1172], 1

; 659  :     d3dpp.SwapEffect = D3DSWAPEFFECT_COPY;

  001ce	8b 95 50 fb ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  001d4	c7 82 8c 04 00
	00 03 00 00 00	 mov	 DWORD PTR [edx+1164], 3

; 660  :     d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_ONE;

  001de	8b 85 50 fb ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  001e4	c7 80 a8 04 00
	00 01 00 00 00	 mov	 DWORD PTR [eax+1192], 1

; 661  :     d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;

  001ee	8b 8d 50 fb ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  001f4	c7 81 7c 04 00
	00 00 00 00 00	 mov	 DWORD PTR [ecx+1148], 0

; 662  :     d3dpp.BackBufferWidth=BUFFERWIDTH;

  001fe	8b 95 50 fb ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00204	8b 85 50 fb ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  0020a	8b 88 b8 04 00
	00		 mov	 ecx, DWORD PTR [eax+1208]
  00210	89 8a 74 04 00
	00		 mov	 DWORD PTR [edx+1140], ecx

; 663  :     d3dpp.BackBufferHeight=BUFFERHEIGHT;

  00216	8b 95 50 fb ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0021c	8b 85 50 fb ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00222	8b 88 bc 04 00
	00		 mov	 ecx, DWORD PTR [eax+1212]
  00228	89 8a 78 04 00
	00		 mov	 DWORD PTR [edx+1144], ecx

; 664  :     d3dpp.Flags=D3DPRESENTFLAG_VIDEO | D3DPRESENTFLAG_DEVICECLIP;

  0022e	8b 95 50 fb ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00234	c7 82 a0 04 00
	00 14 00 00 00	 mov	 DWORD PTR [edx+1184], 20 ; 00000014H

; 665  : 
; 666  : // This is not successfull
; 667  : //    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
; 668  : //	if (SUCCEEDED(g_pD3D->CheckDeviceMultiSampleType(adapter_id, D3DDEVTYPE_HAL, d3dpp.BackBufferFormat, FALSE, D3DMULTISAMPLE_2_SAMPLES, NULL)))
; 669  : //	{
; 670  : //		d3dpp.MultiSampleType = D3DMULTISAMPLE_2_SAMPLES;
; 671  : //	}
; 672  : 
; 673  : 
; 674  :     if( FAILED( g_pD3D->CreateDevice( adapter_id, D3DDEVTYPE_HAL, hWnd,
; 675  :                                   D3DCREATE_HARDWARE_VERTEXPROCESSING|D3DCREATE_MULTITHREADED,
; 676  :                                   &d3dpp, &pDevice ) ) )

  0023e	8b 85 50 fb ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00244	05 cc 04 00 00	 add	 eax, 1228		; 000004ccH
  00249	50		 push	 eax
  0024a	8b 8d 50 fb ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00250	81 c1 74 04 00
	00		 add	 ecx, 1140		; 00000474H
  00256	51		 push	 ecx
  00257	6a 44		 push	 68			; 00000044H
  00259	8b 55 08	 mov	 edx, DWORD PTR _hWnd$[ebp]
  0025c	52		 push	 edx
  0025d	6a 01		 push	 1
  0025f	8b 45 ec	 mov	 eax, DWORD PTR _adapter_id$[ebp]
  00262	50		 push	 eax
  00263	8b 8d 50 fb ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00269	8b 91 30 02 00
	00		 mov	 edx, DWORD PTR [ecx+560]
  0026f	8b 85 50 fb ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00275	8b 88 30 02 00
	00		 mov	 ecx, DWORD PTR [eax+560]
  0027b	8b 12		 mov	 edx, DWORD PTR [edx]
  0027d	51		 push	 ecx
  0027e	8b 42 40	 mov	 eax, DWORD PTR [edx+64]
  00281	ff d0		 call	 eax
  00283	85 c0		 test	 eax, eax
  00285	7d 48		 jge	 SHORT $LN1@InitDD

; 677  :     {
; 678  :         ErrorBox(_T("D3D CreateDevice failed"));

  00287	68 00 00 00 00	 push	 OFFSET ??_C@_1DA@CAHLHNON@?$AAD?$AA3?$AAD?$AA?5?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AA@
  0028c	8d 8d 54 fb ff
	ff		 lea	 ecx, DWORD PTR $T353116[ebp]
  00292	e8 00 00 00 00	 call	 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  00297	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 1
  0029e	8d 8d 54 fb ff
	ff		 lea	 ecx, DWORD PTR $T353116[ebp]
  002a4	51		 push	 ecx
  002a5	68 a6 02 00 00	 push	 678			; 000002a6H
  002aa	68 00 00 00 00	 push	 OFFSET ??_C@_1CC@BINOAKMK@?$AA?4?$AA?2?$AAD?$AA3?$AAD?$AA9?$AAO?$AAu?$AAt?$AAp?$AAu?$AAt?$AA?4?$AAc?$AAp?$AAp?$AA?$AA@
  002af	6a 00		 push	 0
  002b1	e8 00 00 00 00	 call	 ?_ErrorBox@@YAXPAUHWND__@@PB_WHABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z ; _ErrorBox
  002b6	83 c4 10	 add	 esp, 16			; 00000010H
  002b9	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  002c0	8d 8d 54 fb ff
	ff		 lea	 ecx, DWORD PTR $T353116[ebp]
  002c6	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >

; 679  :         return FALSE;

  002cb	33 c0		 xor	 eax, eax
  002cd	eb 05		 jmp	 SHORT $LN9@InitDD
$LN1@InitDD:

; 680  :     }
; 681  : 
; 682  : 
; 683  :     return TRUE;

  002cf	b8 01 00 00 00	 mov	 eax, 1
$LN9@InitDD:

; 684  : }

  002d4	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  002d7	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  002de	59		 pop	 ecx
  002df	8b 4d e8	 mov	 ecx, DWORD PTR __$ArrayPad$[ebp]
  002e2	33 cd		 xor	 ecx, ebp
  002e4	e8 00 00 00 00	 call	 @__security_check_cookie@4
  002e9	8b e5		 mov	 esp, ebp
  002eb	5d		 pop	 ebp
  002ec	c2 04 00	 ret	 4
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?InitDD@CD3D9Output@@UAEHPAUHWND__@@@Z$0:
  00000	8d 8d 70 fb ff
	ff		 lea	 ecx, DWORD PTR $T353115[ebp]
  00006	e9 00 00 00 00	 jmp	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
__unwindfunclet$?InitDD@CD3D9Output@@UAEHPAUHWND__@@@Z$1:
  0000b	8d 8d 54 fb ff
	ff		 lea	 ecx, DWORD PTR $T353116[ebp]
  00011	e9 00 00 00 00	 jmp	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
__ehhandler$?InitDD@CD3D9Output@@UAEHPAUHWND__@@@Z:
  00016	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  0001a	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  0001d	8b 8a 58 fb ff
	ff		 mov	 ecx, DWORD PTR [edx-1192]
  00023	33 c8		 xor	 ecx, eax
  00025	e8 00 00 00 00	 call	 @__security_check_cookie@4
  0002a	8b 4a f4	 mov	 ecx, DWORD PTR [edx-12]
  0002d	33 c8		 xor	 ecx, eax
  0002f	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00034	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$?InitDD@CD3D9Output@@UAEHPAUHWND__@@@Z
  00039	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
?InitDD@CD3D9Output@@UAEHPAUHWND__@@@Z ENDP		; CD3D9Output::InitDD
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Overlay_Create@CD3D9Output@@UAEHXZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Overlay_Create@CD3D9Output@@UAEHXZ$0
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?Overlay_Create@CD3D9Output@@UAEHXZ$1
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?Overlay_Create@CD3D9Output@@UAEHXZ$2
__ehfuncinfo$?Overlay_Create@CD3D9Output@@UAEHXZ DD 019930522H
	DD	03H
	DD	FLAT:__unwindtable$?Overlay_Create@CD3D9Output@@UAEHXZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ?Overlay_Create@CD3D9Output@@UAEHXZ
_TEXT	SEGMENT
_this$ = -100						; size = 4
$T353129 = -96						; size = 28
$T353128 = -68						; size = 28
$T353127 = -40						; size = 28
__$EHRec$ = -12						; size = 12
?Overlay_Create@CD3D9Output@@UAEHXZ PROC		; CD3D9Output::Overlay_Create, COMDAT
; _this$ = ecx

; 150  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$?Overlay_Create@CD3D9Output@@UAEHXZ
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	83 ec 58	 sub	 esp, 88			; 00000058H
  00014	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  00019	33 c5		 xor	 eax, ebp
  0001b	50		 push	 eax
  0001c	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  0001f	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00025	89 4d 9c	 mov	 DWORD PTR _this$[ebp], ecx

; 151  :     if (lpDDOverlay)

  00028	8b 45 9c	 mov	 eax, DWORD PTR _this$[ebp]
  0002b	83 b8 34 02 00
	00 00		 cmp	 DWORD PTR [eax+564], 0
  00032	74 07		 je	 SHORT $LN11@Overlay_Cr@2

; 152  :     {
; 153  :         return FALSE;

  00034	33 c0		 xor	 eax, eax
  00036	e9 fb 02 00 00	 jmp	 $LN12@Overlay_Cr@2
$LN11@Overlay_Cr@2:

; 154  :     }
; 155  : 
; 156  :     EnterCriticalSection(&hDDCritSect);

  0003b	8b 4d 9c	 mov	 ecx, DWORD PTR _this$[ebp]
  0003e	81 c1 18 02 00
	00		 add	 ecx, 536		; 00000218H
  00044	51		 push	 ecx
  00045	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__EnterCriticalSection@4

; 157  : 
; 158  :     if(FlipResult==D3DERR_DEVICELOST || FlipResult==D3DERR_DRIVERINTERNALERROR)

  0004b	8b 55 9c	 mov	 edx, DWORD PTR _this$[ebp]
  0004e	81 ba c0 04 00
	00 68 08 76 88	 cmp	 DWORD PTR [edx+1216], -2005530520 ; 88760868H
  00058	74 13		 je	 SHORT $LN9@Overlay_Cr@2
  0005a	8b 45 9c	 mov	 eax, DWORD PTR _this$[ebp]
  0005d	81 b8 c0 04 00
	00 27 08 76 88	 cmp	 DWORD PTR [eax+1216], -2005530585 ; 88760827H
  00067	0f 85 b6 00 00
	00		 jne	 $LN10@Overlay_Cr@2
$LN9@Overlay_Cr@2:

; 159  :     {
; 160  :         LOG(1, _T("D3D Device lost .. trying reset"));

  0006d	68 00 00 00 00	 push	 OFFSET ??_C@_1EA@GNOKPDEM@?$AAD?$AA3?$AAD?$AA?5?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAl?$AAo?$AAs?$AAt?$AA?5?$AA?4?$AA?4?$AA?5?$AAt?$AAr?$AAy?$AAi?$AAn?$AAg?$AA?5?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?$AA@
  00072	6a 01		 push	 1
  00074	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00079	83 c4 08	 add	 esp, 8

; 161  :         // Device lost .. try to reset
; 162  :         OffscreenHDC.ReleaseD3DBuffer();

  0007c	b9 00 00 00 00	 mov	 ecx, OFFSET ?OffscreenHDC@@3VCPaintingHDC@@A ; OffscreenHDC
  00081	e8 00 00 00 00	 call	 ?ReleaseD3DBuffer@CPaintingHDC@@QAEXXZ ; CPaintingHDC::ReleaseD3DBuffer

; 163  :         if(pDevice->TestCooperativeLevel()==D3DERR_DEVICENOTRESET)

  00086	8b 4d 9c	 mov	 ecx, DWORD PTR _this$[ebp]
  00089	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  0008f	8b 45 9c	 mov	 eax, DWORD PTR _this$[ebp]
  00092	8b 88 cc 04 00
	00		 mov	 ecx, DWORD PTR [eax+1228]
  00098	8b 12		 mov	 edx, DWORD PTR [edx]
  0009a	51		 push	 ecx
  0009b	8b 42 0c	 mov	 eax, DWORD PTR [edx+12]
  0009e	ff d0		 call	 eax
  000a0	3d 69 08 76 88	 cmp	 eax, -2005530519	; 88760869H
  000a5	75 65		 jne	 SHORT $LN8@Overlay_Cr@2

; 164  :         {
; 165  :             // ok to reset
; 166  :             if(SUCCEEDED(pDevice->Reset(&d3dpp)))

  000a7	8b 4d 9c	 mov	 ecx, DWORD PTR _this$[ebp]
  000aa	81 c1 74 04 00
	00		 add	 ecx, 1140		; 00000474H
  000b0	51		 push	 ecx
  000b1	8b 55 9c	 mov	 edx, DWORD PTR _this$[ebp]
  000b4	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  000ba	8b 4d 9c	 mov	 ecx, DWORD PTR _this$[ebp]
  000bd	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  000c3	8b 00		 mov	 eax, DWORD PTR [eax]
  000c5	52		 push	 edx
  000c6	8b 48 40	 mov	 ecx, DWORD PTR [eax+64]
  000c9	ff d1		 call	 ecx
  000cb	85 c0		 test	 eax, eax
  000cd	7c 24		 jl	 SHORT $LN7@Overlay_Cr@2

; 167  :             {
; 168  :                 Overlay_Update(&srcrect, &destrect, SW_SHOW);

  000cf	6a 05		 push	 5
  000d1	8b 55 9c	 mov	 edx, DWORD PTR _this$[ebp]
  000d4	81 c2 5c 04 00
	00		 add	 edx, 1116		; 0000045cH
  000da	52		 push	 edx
  000db	8b 45 9c	 mov	 eax, DWORD PTR _this$[ebp]
  000de	05 4c 04 00 00	 add	 eax, 1100		; 0000044cH
  000e3	50		 push	 eax
  000e4	8b 4d 9c	 mov	 ecx, DWORD PTR _this$[ebp]
  000e7	8b 11		 mov	 edx, DWORD PTR [ecx]
  000e9	8b 4d 9c	 mov	 ecx, DWORD PTR _this$[ebp]
  000ec	8b 42 20	 mov	 eax, DWORD PTR [edx+32]
  000ef	ff d0		 call	 eax

; 169  :             }
; 170  :             else

  000f1	eb 17		 jmp	 SHORT $LN6@Overlay_Cr@2
$LN7@Overlay_Cr@2:

; 171  :             {
; 172  :                 LeaveCriticalSection(&hDDCritSect);

  000f3	8b 4d 9c	 mov	 ecx, DWORD PTR _this$[ebp]
  000f6	81 c1 18 02 00
	00		 add	 ecx, 536		; 00000218H
  000fc	51		 push	 ecx
  000fd	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 173  :                 return FALSE;

  00103	33 c0		 xor	 eax, eax
  00105	e9 2c 02 00 00	 jmp	 $LN12@Overlay_Cr@2
$LN6@Overlay_Cr@2:

; 174  :             }
; 175  :         }
; 176  :         else

  0010a	eb 17		 jmp	 SHORT $LN10@Overlay_Cr@2
$LN8@Overlay_Cr@2:

; 177  :         {
; 178  :             LeaveCriticalSection(&hDDCritSect);

  0010c	8b 55 9c	 mov	 edx, DWORD PTR _this$[ebp]
  0010f	81 c2 18 02 00
	00		 add	 edx, 536		; 00000218H
  00115	52		 push	 edx
  00116	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 179  :             return FALSE;

  0011c	33 c0		 xor	 eax, eax
  0011e	e9 13 02 00 00	 jmp	 $LN12@Overlay_Cr@2
$LN10@Overlay_Cr@2:

; 180  :         }
; 181  :     }
; 182  : 	// Offscreen surface has the maximum default resolution
; 183  :     if(FAILED(pDevice->CreateOffscreenPlainSurface(DSCALER_MAX_WIDTH, DSCALER_MAX_HEIGHT, (bIsRGB ? D3DFMT_R5G6B5 : D3DFMT_YUY2), D3DPOOL_DEFAULT,
; 184  :         &lpDDOverlay, NULL)))

  00123	6a 00		 push	 0
  00125	8b 45 9c	 mov	 eax, DWORD PTR _this$[ebp]
  00128	05 34 02 00 00	 add	 eax, 564		; 00000234H
  0012d	50		 push	 eax
  0012e	6a 00		 push	 0
  00130	8b 4d 9c	 mov	 ecx, DWORD PTR _this$[ebp]
  00133	8b 91 c8 04 00
	00		 mov	 edx, DWORD PTR [ecx+1224]
  00139	f7 da		 neg	 edx
  0013b	1b d2		 sbb	 edx, edx
  0013d	81 e2 be aa a6
	cd		 and	 edx, -844715330		; cda6aabeH
  00143	81 c2 59 55 59
	32		 add	 edx, 844715353		; 32595559H
  00149	52		 push	 edx
  0014a	68 70 08 00 00	 push	 2160			; 00000870H
  0014f	68 00 0f 00 00	 push	 3840			; 00000f00H
  00154	8b 45 9c	 mov	 eax, DWORD PTR _this$[ebp]
  00157	8b 88 cc 04 00
	00		 mov	 ecx, DWORD PTR [eax+1228]
  0015d	8b 55 9c	 mov	 edx, DWORD PTR _this$[ebp]
  00160	8b 82 cc 04 00
	00		 mov	 eax, DWORD PTR [edx+1228]
  00166	8b 09		 mov	 ecx, DWORD PTR [ecx]
  00168	50		 push	 eax
  00169	8b 91 90 00 00
	00		 mov	 edx, DWORD PTR [ecx+144]
  0016f	ff d2		 call	 edx
  00171	85 c0		 test	 eax, eax
  00173	7d 51		 jge	 SHORT $LN4@Overlay_Cr@2

; 185  :     {
; 186  :         LeaveCriticalSection(&hDDCritSect);

  00175	8b 45 9c	 mov	 eax, DWORD PTR _this$[ebp]
  00178	05 18 02 00 00	 add	 eax, 536		; 00000218H
  0017d	50		 push	 eax
  0017e	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 187  :         ErrorBox(_T("CreateOffscreenPlainSurface failed"));

  00184	68 00 00 00 00	 push	 OFFSET ??_C@_1EG@FHHJBIPN@?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAO?$AAf?$AAf?$AAs?$AAc?$AAr?$AAe?$AAe?$AAn?$AAP?$AAl?$AAa?$AAi?$AAn?$AAS?$AAu?$AAr?$AAf?$AAa?$AAc?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl@
  00189	8d 4d d8	 lea	 ecx, DWORD PTR $T353127[ebp]
  0018c	e8 00 00 00 00	 call	 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  00191	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  00198	8d 4d d8	 lea	 ecx, DWORD PTR $T353127[ebp]
  0019b	51		 push	 ecx
  0019c	68 bb 00 00 00	 push	 187			; 000000bbH
  001a1	68 00 00 00 00	 push	 OFFSET ??_C@_1CC@BINOAKMK@?$AA?4?$AA?2?$AAD?$AA3?$AAD?$AA9?$AAO?$AAu?$AAt?$AAp?$AAu?$AAt?$AA?4?$AAc?$AAp?$AAp?$AA?$AA@
  001a6	6a 00		 push	 0
  001a8	e8 00 00 00 00	 call	 ?_ErrorBox@@YAXPAUHWND__@@PB_WHABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z ; _ErrorBox
  001ad	83 c4 10	 add	 esp, 16			; 00000010H
  001b0	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  001b7	8d 4d d8	 lea	 ecx, DWORD PTR $T353127[ebp]
  001ba	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >

; 188  :         return FALSE;

  001bf	33 c0		 xor	 eax, eax
  001c1	e9 70 01 00 00	 jmp	 $LN12@Overlay_Cr@2
$LN4@Overlay_Cr@2:

; 189  :     }
; 190  : 
; 191  : 	// OSD surface has the buffer resolution
; 192  :     if(FAILED(pDevice->CreateTexture(BUFFERWIDTH, BUFFERHEIGHT, 1, D3DUSAGE_RENDERTARGET ,D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &m_lpOsdTexture, NULL)))

  001c6	6a 00		 push	 0
  001c8	8b 55 9c	 mov	 edx, DWORD PTR _this$[ebp]
  001cb	81 c2 70 04 00
	00		 add	 edx, 1136		; 00000470H
  001d1	52		 push	 edx
  001d2	6a 00		 push	 0
  001d4	6a 15		 push	 21			; 00000015H
  001d6	6a 01		 push	 1
  001d8	6a 01		 push	 1
  001da	8b 45 9c	 mov	 eax, DWORD PTR _this$[ebp]
  001dd	8b 88 bc 04 00
	00		 mov	 ecx, DWORD PTR [eax+1212]
  001e3	51		 push	 ecx
  001e4	8b 55 9c	 mov	 edx, DWORD PTR _this$[ebp]
  001e7	8b 82 b8 04 00
	00		 mov	 eax, DWORD PTR [edx+1208]
  001ed	50		 push	 eax
  001ee	8b 4d 9c	 mov	 ecx, DWORD PTR _this$[ebp]
  001f1	8b 91 cc 04 00
	00		 mov	 edx, DWORD PTR [ecx+1228]
  001f7	8b 45 9c	 mov	 eax, DWORD PTR _this$[ebp]
  001fa	8b 88 cc 04 00
	00		 mov	 ecx, DWORD PTR [eax+1228]
  00200	8b 12		 mov	 edx, DWORD PTR [edx]
  00202	51		 push	 ecx
  00203	8b 42 5c	 mov	 eax, DWORD PTR [edx+92]
  00206	ff d0		 call	 eax
  00208	85 c0		 test	 eax, eax
  0020a	7d 52		 jge	 SHORT $LN3@Overlay_Cr@2

; 193  :     {
; 194  :         LeaveCriticalSection(&hDDCritSect);

  0020c	8b 4d 9c	 mov	 ecx, DWORD PTR _this$[ebp]
  0020f	81 c1 18 02 00
	00		 add	 ecx, 536		; 00000218H
  00215	51		 push	 ecx
  00216	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 195  :         ErrorBox(_T("Creating OSD texture failed"));

  0021c	68 00 00 00 00	 push	 OFFSET ??_C@_1DI@MIPNMNIB@?$AAC?$AAr?$AAe?$AAa?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAO?$AAS?$AAD?$AA?5?$AAt?$AAe?$AAx?$AAt?$AAu?$AAr?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AA@
  00221	8d 4d bc	 lea	 ecx, DWORD PTR $T353128[ebp]
  00224	e8 00 00 00 00	 call	 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  00229	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 1
  00230	8d 55 bc	 lea	 edx, DWORD PTR $T353128[ebp]
  00233	52		 push	 edx
  00234	68 c3 00 00 00	 push	 195			; 000000c3H
  00239	68 00 00 00 00	 push	 OFFSET ??_C@_1CC@BINOAKMK@?$AA?4?$AA?2?$AAD?$AA3?$AAD?$AA9?$AAO?$AAu?$AAt?$AAp?$AAu?$AAt?$AA?4?$AAc?$AAp?$AAp?$AA?$AA@
  0023e	6a 00		 push	 0
  00240	e8 00 00 00 00	 call	 ?_ErrorBox@@YAXPAUHWND__@@PB_WHABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z ; _ErrorBox
  00245	83 c4 10	 add	 esp, 16			; 00000010H
  00248	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  0024f	8d 4d bc	 lea	 ecx, DWORD PTR $T353128[ebp]
  00252	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >

; 196  :         return FALSE;

  00257	33 c0		 xor	 eax, eax
  00259	e9 d8 00 00 00	 jmp	 $LN12@Overlay_Cr@2
$LN3@Overlay_Cr@2:

; 197  :     }
; 198  : 
; 199  :     if(FAILED(m_lpOsdTexture->GetSurfaceLevel(0, &lpDDOSD)))

  0025e	8b 45 9c	 mov	 eax, DWORD PTR _this$[ebp]
  00261	05 d0 04 00 00	 add	 eax, 1232		; 000004d0H
  00266	50		 push	 eax
  00267	6a 00		 push	 0
  00269	8b 4d 9c	 mov	 ecx, DWORD PTR _this$[ebp]
  0026c	8b 91 70 04 00
	00		 mov	 edx, DWORD PTR [ecx+1136]
  00272	8b 45 9c	 mov	 eax, DWORD PTR _this$[ebp]
  00275	8b 88 70 04 00
	00		 mov	 ecx, DWORD PTR [eax+1136]
  0027b	8b 12		 mov	 edx, DWORD PTR [edx]
  0027d	51		 push	 ecx
  0027e	8b 42 48	 mov	 eax, DWORD PTR [edx+72]
  00281	ff d0		 call	 eax
  00283	85 c0		 test	 eax, eax
  00285	7d 4f		 jge	 SHORT $LN2@Overlay_Cr@2

; 200  :     {
; 201  :         LeaveCriticalSection(&hDDCritSect);

  00287	8b 4d 9c	 mov	 ecx, DWORD PTR _this$[ebp]
  0028a	81 c1 18 02 00
	00		 add	 ecx, 536		; 00000218H
  00290	51		 push	 ecx
  00291	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 202  :         ErrorBox(_T("Getting surface from OSD texture failed"));

  00297	68 00 00 00 00	 push	 OFFSET ??_C@_1FA@DPDBJMGG@?$AAG?$AAe?$AAt?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAs?$AAu?$AAr?$AAf?$AAa?$AAc?$AAe?$AA?5?$AAf?$AAr?$AAo?$AAm?$AA?5?$AAO?$AAS?$AAD?$AA?5?$AAt?$AAe?$AAx?$AAt?$AAu?$AAr?$AAe@
  0029c	8d 4d a0	 lea	 ecx, DWORD PTR $T353129[ebp]
  0029f	e8 00 00 00 00	 call	 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  002a4	c7 45 fc 02 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 2
  002ab	8d 55 a0	 lea	 edx, DWORD PTR $T353129[ebp]
  002ae	52		 push	 edx
  002af	68 ca 00 00 00	 push	 202			; 000000caH
  002b4	68 00 00 00 00	 push	 OFFSET ??_C@_1CC@BINOAKMK@?$AA?4?$AA?2?$AAD?$AA3?$AAD?$AA9?$AAO?$AAu?$AAt?$AAp?$AAu?$AAt?$AA?4?$AAc?$AAp?$AAp?$AA?$AA@
  002b9	6a 00		 push	 0
  002bb	e8 00 00 00 00	 call	 ?_ErrorBox@@YAXPAUHWND__@@PB_WHABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z ; _ErrorBox
  002c0	83 c4 10	 add	 esp, 16			; 00000010H
  002c3	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  002ca	8d 4d a0	 lea	 ecx, DWORD PTR $T353129[ebp]
  002cd	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >

; 203  :         return FALSE;

  002d2	33 c0		 xor	 eax, eax
  002d4	eb 60		 jmp	 SHORT $LN12@Overlay_Cr@2
$LN2@Overlay_Cr@2:

; 204  :     }
; 205  : 
; 206  :     AddSplashTextLine(_T("Using Direct3D output"));

  002d6	68 00 00 00 00	 push	 OFFSET ??_C@_1CM@BAPAHKME@?$AAU?$AAs?$AAi?$AAn?$AAg?$AA?5?$AAD?$AAi?$AAr?$AAe?$AAc?$AAt?$AA3?$AAD?$AA?5?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA?$AA@
  002db	e8 00 00 00 00	 call	 ?AddSplashTextLine@@YAXPB_W@Z ; AddSplashTextLine
  002e0	83 c4 04	 add	 esp, 4

; 207  : 
; 208  :     // try to create a memory buffer
; 209  :     // that we can use if any output filters are switched
; 210  :     // on.  This is required because reading and writing back to
; 211  :     // video memory is very slow
; 212  :     lpExtraMemoryForFilters = (BYTE*)malloc(DSCALER_MAX_WIDTH * DSCALER_MAX_HEIGHT * 2 + 16);

  002e3	68 10 20 fd 00	 push	 16588816		; 00fd2010H
  002e8	e8 00 00 00 00	 call	 _malloc
  002ed	83 c4 04	 add	 esp, 4
  002f0	8b 4d 9c	 mov	 ecx, DWORD PTR _this$[ebp]
  002f3	89 81 40 02 00
	00		 mov	 DWORD PTR [ecx+576], eax

; 213  :     if(lpExtraMemoryForFilters == NULL)

  002f9	8b 55 9c	 mov	 edx, DWORD PTR _this$[ebp]
  002fc	83 ba 40 02 00
	00 00		 cmp	 DWORD PTR [edx+576], 0
  00303	75 1c		 jne	 SHORT $LN1@Overlay_Cr@2

; 214  :     {
; 215  :        // if we can't do a system memory buffer it's not the end of the
; 216  :        // world it just means that any output filters will run very slow
; 217  :        LOG(1, _T("Couldn't create additional buffer for output filters"));

  00305	68 00 00 00 00	 push	 OFFSET ??_C@_1GK@DJFPGDL@?$AAC?$AAo?$AAu?$AAl?$AAd?$AAn?$AA?8?$AAt?$AA?5?$AAc?$AAr?$AAe?$AAa?$AAt?$AAe?$AA?5?$AAa?$AAd?$AAd?$AAi?$AAt?$AAi?$AAo?$AAn?$AAa?$AAl?$AA?5?$AAb?$AAu?$AAf?$AAf?$AAe@
  0030a	6a 01		 push	 1
  0030c	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00311	83 c4 08	 add	 esp, 8

; 218  :        lpExtraMemoryForFilters = NULL;

  00314	8b 45 9c	 mov	 eax, DWORD PTR _this$[ebp]
  00317	c7 80 40 02 00
	00 00 00 00 00	 mov	 DWORD PTR [eax+576], 0
$LN1@Overlay_Cr@2:

; 219  :     }
; 220  : 
; 221  :     LeaveCriticalSection(&hDDCritSect);

  00321	8b 4d 9c	 mov	 ecx, DWORD PTR _this$[ebp]
  00324	81 c1 18 02 00
	00		 add	 ecx, 536		; 00000218H
  0032a	51		 push	 ecx
  0032b	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 222  : 
; 223  :     return TRUE;

  00331	b8 01 00 00 00	 mov	 eax, 1
$LN12@Overlay_Cr@2:

; 224  : }

  00336	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  00339	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  00340	59		 pop	 ecx
  00341	8b e5		 mov	 esp, ebp
  00343	5d		 pop	 ebp
  00344	c3		 ret	 0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Overlay_Create@CD3D9Output@@UAEHXZ$0:
  00000	8d 4d d8	 lea	 ecx, DWORD PTR $T353127[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
__unwindfunclet$?Overlay_Create@CD3D9Output@@UAEHXZ$1:
  00008	8d 4d bc	 lea	 ecx, DWORD PTR $T353128[ebp]
  0000b	e9 00 00 00 00	 jmp	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
__unwindfunclet$?Overlay_Create@CD3D9Output@@UAEHXZ$2:
  00010	8d 4d a0	 lea	 ecx, DWORD PTR $T353129[ebp]
  00013	e9 00 00 00 00	 jmp	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
__ehhandler$?Overlay_Create@CD3D9Output@@UAEHXZ:
  00018	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  0001c	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  0001f	8b 4a a4	 mov	 ecx, DWORD PTR [edx-92]
  00022	33 c8		 xor	 ecx, eax
  00024	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00029	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$?Overlay_Create@CD3D9Output@@UAEHXZ
  0002e	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
?Overlay_Create@CD3D9Output@@UAEHXZ ENDP		; CD3D9Output::Overlay_Create
PUBLIC	?D3D9_ReadSettingsFromIni@@YAXXZ		; D3D9_ReadSettingsFromIni
; Function compile flags: /Odtp
;	COMDAT ?D3D9_ReadSettingsFromIni@@YAXXZ
_TEXT	SEGMENT
_pD3D9Group$ = -4					; size = 4
?D3D9_ReadSettingsFromIni@@YAXXZ PROC			; D3D9_ReadSettingsFromIni, COMDAT

; 775  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx

; 776  :     CSettingGroup *pD3D9Group = SettingsMaster->GetGroup(_T("D3D9"), SETTING_BY_CHANNEL | SETTING_BY_FORMAT | SETTING_BY_INPUT, FALSE);

  00004	6a 00		 push	 0
  00006	6a 07		 push	 7
  00008	68 00 00 00 00	 push	 OFFSET ??_C@_19JJIMJLJM@?$AAD?$AA3?$AAD?$AA9?$AA?$AA@
  0000d	b9 00 00 00 00	 mov	 ecx, OFFSET ?SettingsMaster@@3V?$SmartPtr@VCSettingsMaster@@@@A ; SettingsMaster
  00012	e8 00 00 00 00	 call	 ??C?$SmartPtr@VCSettingsMaster@@@@QBEPAVCSettingsMaster@@XZ ; SmartPtr<CSettingsMaster>::operator->
  00017	8b c8		 mov	 ecx, eax
  00019	e8 00 00 00 00	 call	 ?GetGroup@CSettingsMaster@@QAEPAVCSettingGroup@@PB_WKH@Z ; CSettingsMaster::GetGroup
  0001e	89 45 fc	 mov	 DWORD PTR _pD3D9Group$[ebp], eax

; 777  : 
; 778  : #ifdef _DEBUG
; 779  :     if (D3D9_SETTING_LASTONE != D3D9SettingsHolder.GetNumSettings())
; 780  :     {
; 781  :         LOGD(_T("Number of settings in D3D9 source is not equal to the number of settings in DS_Control.h"));
; 782  :         LOGD(_T("DS_Control.h or D3D9Output.cpp are probably not in sync with each other."));
; 783  :     }
; 784  : #endif
; 785  : 
; 786  :     D3D9SettingsHolder.DisableOnChange();

  00021	b9 00 00 00 00	 mov	 ecx, OFFSET ?D3D9SettingsHolder@@3VCSettingsHolder@@A ; D3D9SettingsHolder
  00026	e8 00 00 00 00	 call	 ?DisableOnChange@CSettingsHolder@@QAEXXZ ; CSettingsHolder::DisableOnChange

; 787  :     D3D9SettingsHolder.ReadFromIni();

  0002b	b9 00 00 00 00	 mov	 ecx, OFFSET ?D3D9SettingsHolder@@3VCSettingsHolder@@A ; D3D9SettingsHolder
  00030	e8 00 00 00 00	 call	 ?ReadFromIni@CSettingsHolder@@QAEXXZ ; CSettingsHolder::ReadFromIni

; 788  :     D3D9SettingsHolder.EnableOnChange();

  00035	b9 00 00 00 00	 mov	 ecx, OFFSET ?D3D9SettingsHolder@@3VCSettingsHolder@@A ; D3D9SettingsHolder
  0003a	e8 00 00 00 00	 call	 ?EnableOnChange@CSettingsHolder@@QAEXXZ ; CSettingsHolder::EnableOnChange

; 789  : }

  0003f	8b e5		 mov	 esp, ebp
  00041	5d		 pop	 ebp
  00042	c3		 ret	 0
?D3D9_ReadSettingsFromIni@@YAXXZ ENDP			; D3D9_ReadSettingsFromIni
; Function compile flags: /Odtp
;	COMDAT ?CheckChangeMonitor@CD3D9Output@@UAEXPAUHWND__@@@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_hMon$ = -4						; size = 4
_hWnd$ = 8						; size = 4
?CheckChangeMonitor@CD3D9Output@@UAEXPAUHWND__@@@Z PROC	; CD3D9Output::CheckChangeMonitor, COMDAT
; _this$ = ecx

; 61   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 08	 sub	 esp, 8
  00006	89 4d f8	 mov	 DWORD PTR _this$[ebp], ecx

; 62   :     HMONITOR hMon = MonitorFromWindow(hWnd, MONITOR_DEFAULTTOPRIMARY);

  00009	6a 01		 push	 1
  0000b	8b 45 08	 mov	 eax, DWORD PTR _hWnd$[ebp]
  0000e	50		 push	 eax
  0000f	e8 00 00 00 00	 call	 _xMonitorFromWindow@8
  00014	89 45 fc	 mov	 DWORD PTR _hMon$[ebp], eax

; 63   : 
; 64   :     if (hCurrentMon == NULL)

  00017	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0001a	83 b9 c4 04 00
	00 00		 cmp	 DWORD PTR [ecx+1220], 0
  00021	75 02		 jne	 SHORT $LN3@CheckChang

; 65   :     {
; 66   :         return;

  00023	eb 61		 jmp	 SHORT $LN4@CheckChang
$LN3@CheckChang:

; 67   :     }
; 68   : 
; 69   :     if (hMon != hCurrentMon)

  00025	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00028	8b 45 fc	 mov	 eax, DWORD PTR _hMon$[ebp]
  0002b	3b 82 c4 04 00
	00		 cmp	 eax, DWORD PTR [edx+1220]
  00031	74 53		 je	 SHORT $LN4@CheckChang

; 70   :     {
; 71   :         hCurrentMon = hMon;

  00033	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00036	8b 55 fc	 mov	 edx, DWORD PTR _hMon$[ebp]
  00039	89 91 c4 04 00
	00		 mov	 DWORD PTR [ecx+1220], edx

; 72   :         Overlay_Stop(hWnd);

  0003f	8b 45 08	 mov	 eax, DWORD PTR _hWnd$[ebp]
  00042	50		 push	 eax
  00043	e8 00 00 00 00	 call	 ?Overlay_Stop@@YAXPAUHWND__@@@Z ; Overlay_Stop
  00048	83 c4 04	 add	 esp, 4

; 73   :         Overlay_Destroy();

  0004b	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0004e	8b 11		 mov	 edx, DWORD PTR [ecx]
  00050	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00053	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  00056	ff d0		 call	 eax

; 74   :         ExitDD();

  00058	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0005b	8b 11		 mov	 edx, DWORD PTR [ecx]
  0005d	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00060	8b 42 10	 mov	 eax, DWORD PTR [edx+16]
  00063	ff d0		 call	 eax

; 75   :         if (InitDD(hWnd))

  00065	8b 4d 08	 mov	 ecx, DWORD PTR _hWnd$[ebp]
  00068	51		 push	 ecx
  00069	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  0006c	8b 02		 mov	 eax, DWORD PTR [edx]
  0006e	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00071	8b 50 14	 mov	 edx, DWORD PTR [eax+20]
  00074	ff d2		 call	 edx
  00076	85 c0		 test	 eax, eax
  00078	74 0c		 je	 SHORT $LN4@CheckChang

; 76   :         {
; 77   :             Overlay_Start(hWnd);

  0007a	8b 45 08	 mov	 eax, DWORD PTR _hWnd$[ebp]
  0007d	50		 push	 eax
  0007e	e8 00 00 00 00	 call	 ?Overlay_Start@@YAXPAUHWND__@@@Z ; Overlay_Start
  00083	83 c4 04	 add	 esp, 4
$LN4@CheckChang:

; 78   :         }
; 79   :     }
; 80   : }

  00086	8b e5		 mov	 esp, ebp
  00088	5d		 pop	 ebp
  00089	c2 04 00	 ret	 4
?CheckChangeMonitor@CD3D9Output@@UAEXPAUHWND__@@@Z ENDP	; CD3D9Output::CheckChangeMonitor
; Function compile flags: /Odtp
;	COMDAT ??__ED3D9OutputInstance@@YAXXZ
text$yc	SEGMENT
??__ED3D9OutputInstance@@YAXXZ PROC			; `dynamic initializer for 'D3D9OutputInstance'', COMDAT

; 38   : CD3D9Output D3D9OutputInstance;

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	b9 00 00 00 00	 mov	 ecx, OFFSET ?D3D9OutputInstance@@3VCD3D9Output@@A ; D3D9OutputInstance
  00008	e8 00 00 00 00	 call	 ??0CD3D9Output@@QAE@XZ	; CD3D9Output::CD3D9Output
  0000d	68 00 00 00 00	 push	 OFFSET ??__FD3D9OutputInstance@@YAXXZ ; `dynamic atexit destructor for 'D3D9OutputInstance''
  00012	e8 00 00 00 00	 call	 _atexit
  00017	83 c4 04	 add	 esp, 4
  0001a	5d		 pop	 ebp
  0001b	c3		 ret	 0
??__ED3D9OutputInstance@@YAXXZ ENDP			; `dynamic initializer for 'D3D9OutputInstance''
; Function compile flags: /Odtp
text$yc	ENDS
;	COMDAT ??__ED3D9SettingsHolder@@YAXXZ
text$yc	SEGMENT
??__ED3D9SettingsHolder@@YAXXZ PROC			; `dynamic initializer for 'D3D9SettingsHolder'', COMDAT

; 772  : CSettingsHolder D3D9SettingsHolder;

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a 00		 push	 0
  00005	6a 00		 push	 0
  00007	b9 00 00 00 00	 mov	 ecx, OFFSET ?D3D9SettingsHolder@@3VCSettingsHolder@@A ; D3D9SettingsHolder
  0000c	e8 00 00 00 00	 call	 ??0CSettingsHolder@@QAE@JI@Z ; CSettingsHolder::CSettingsHolder
  00011	68 00 00 00 00	 push	 OFFSET ??__FD3D9SettingsHolder@@YAXXZ ; `dynamic atexit destructor for 'D3D9SettingsHolder''
  00016	e8 00 00 00 00	 call	 _atexit
  0001b	83 c4 04	 add	 esp, 4
  0001e	5d		 pop	 ebp
  0001f	c3		 ret	 0
??__ED3D9SettingsHolder@@YAXXZ ENDP			; `dynamic initializer for 'D3D9SettingsHolder''
; Function compile flags: /Odtp
;	COMDAT ??__FD3D9OutputInstance@@YAXXZ
text$yd	SEGMENT
??__FD3D9OutputInstance@@YAXXZ PROC			; `dynamic atexit destructor for 'D3D9OutputInstance'', COMDAT
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	b9 00 00 00 00	 mov	 ecx, OFFSET ?D3D9OutputInstance@@3VCD3D9Output@@A ; D3D9OutputInstance
  00008	e8 00 00 00 00	 call	 ??1CD3D9Output@@UAE@XZ	; CD3D9Output::~CD3D9Output
  0000d	5d		 pop	 ebp
  0000e	c3		 ret	 0
??__FD3D9OutputInstance@@YAXXZ ENDP			; `dynamic atexit destructor for 'D3D9OutputInstance''
; Function compile flags: /Odtp
;	COMDAT ??__FD3D9SettingsHolder@@YAXXZ
text$yd	SEGMENT
??__FD3D9SettingsHolder@@YAXXZ PROC			; `dynamic atexit destructor for 'D3D9SettingsHolder'', COMDAT
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	b9 00 00 00 00	 mov	 ecx, OFFSET ?D3D9SettingsHolder@@3VCSettingsHolder@@A ; D3D9SettingsHolder
  00008	e8 00 00 00 00	 call	 ??1CSettingsHolder@@UAE@XZ ; CSettingsHolder::~CSettingsHolder
  0000d	5d		 pop	 ebp
  0000e	c3		 ret	 0
??__FD3D9SettingsHolder@@YAXXZ ENDP			; `dynamic atexit destructor for 'D3D9SettingsHolder''
PUBLIC	?D3D9SettingsHolder@@3VCSettingsHolder@@A	; D3D9SettingsHolder
PUBLIC	?D3D9OutputInstance@@3VCD3D9Output@@A		; D3D9OutputInstance
?D3D9SettingsHolder@@3VCSettingsHolder@@A DB 040H DUP (?) ; D3D9SettingsHolder
?D3D9OutputInstance@@3VCD3D9Output@@A DB 04d8H DUP (?)	; D3D9OutputInstance
_D3D9OutputInstance$initializer$ DD FLAT:??__ED3D9OutputInstance@@YAXXZ
_D3D9SettingsHolder$initializer$ DD FLAT:??__ED3D9SettingsHolder@@YAXXZ
END
