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

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

INCLUDELIB OLDNAMES

PUBLIC	??_R4IOutput@@6B@				; IOutput::`RTTI Complete Object Locator'
PUBLIC	?GetMonitorRect@IOutput@@UAEXPAUHWND__@@PAUtagRECT@@@Z ; IOutput::GetMonitorRect
PUBLIC	??_GIOutput@@UAEPAXI@Z				; IOutput::`scalar deleting destructor'
PUBLIC	?ActiveOutput@@3PAVIOutput@@A			; ActiveOutput
PUBLIC	??_C@_1DG@EECMFCJJ@?$AAG?$AAe?$AAt?$AAM?$AAo?$AAn?$AAi?$AAt?$AAo?$AAr?$AAR?$AAe?$AAc?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?$CF?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_7IOutput@@6B@				; IOutput::`vftable'
EXTRN	??_EIOutput@@UAEPAXI@Z:PROC			; IOutput::`vector deleting destructor'
_NbMonitors DD	01H DUP (?)
_hCurrentMon DD	01H DUP (?)
?ActiveOutput@@3PAVIOutput@@A DD 01H DUP (?)		; ActiveOutput
;	COMDAT ??_7IOutput@@6B@
CONST	SEGMENT
??_7IOutput@@6B@ DD FLAT:??_R4IOutput@@6B@		; IOutput::`vftable'
	DD	FLAT:??_EIOutput@@UAEPAXI@Z
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:?GetMonitorRect@IOutput@@UAEXPAUHWND__@@PAUtagRECT@@@Z
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
CONST	ENDS
;	COMDAT ??_R4IOutput@@6B@
rdata$r	SEGMENT
??_R4IOutput@@6B@ DD 00H				; IOutput::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVIOutput@@@8
	DD	FLAT:??_R3IOutput@@8
rdata$r	ENDS
;	COMDAT ??_C@_1DG@EECMFCJJ@?$AAG?$AAe?$AAt?$AAM?$AAo?$AAn?$AAi?$AAt?$AAo?$AAr?$AAR?$AAe?$AAc?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?$CF?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1DG@EECMFCJJ@?$AAG?$AAe?$AAt?$AAM?$AAo?$AAn?$AAi?$AAt?$AAo?$AAr?$AAR?$AAe?$AAc?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?$CF?$AAd?$AA?$AA@ DB 'G'
	DB	00H, 'e', 00H, 't', 00H, 'M', 00H, 'o', 00H, 'n', 00H, 'i', 00H
	DB	't', 00H, 'o', 00H, 'r', 00H, 'R', 00H, 'e', 00H, 'c', 00H, 't'
	DB	00H, ' ', 00H, '%', 00H, 'd', 00H, ' ', 00H, '%', 00H, 'd', 00H
	DB	' ', 00H, '%', 00H, 'd', 00H, ' ', 00H, '%', 00H, 'd', 00H, 00H
	DB	00H						; `string'
PUBLIC	?SetActiveOutput@@YAXW4OUTPUTTYPES@IOutput@@@Z	; SetActiveOutput
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\ioutput.cpp
;	COMDAT ?SetActiveOutput@@YAXW4OUTPUTTYPES@IOutput@@@Z
_TEXT	SEGMENT
_eType$ = 8						; size = 4
?SetActiveOutput@@YAXW4OUTPUTTYPES@IOutput@@@Z PROC	; SetActiveOutput, COMDAT

; 80   : {

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

; 81   :     if(eType == IOutput::OUT_OVERLAY)

  00003	83 7d 08 00	 cmp	 DWORD PTR _eType$[ebp], 0
  00007	75 0c		 jne	 SHORT $LN2@SetActiveO

; 82   :     {
; 83   :         ActiveOutput = &OverlayOutputInstance;

  00009	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?ActiveOutput@@3PAVIOutput@@A, OFFSET ?OverlayOutputInstance@@3VCOverlayOutput@@A ; ActiveOutput, OverlayOutputInstance

; 84   :     }
; 85   :     else

  00013	eb 0a		 jmp	 SHORT $LN3@SetActiveO
$LN2@SetActiveO:

; 86   :     {
; 87   :         ActiveOutput = &D3D9OutputInstance;

  00015	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?ActiveOutput@@3PAVIOutput@@A, OFFSET ?D3D9OutputInstance@@3VCD3D9Output@@A ; ActiveOutput, D3D9OutputInstance
$LN3@SetActiveO:

; 88   :     }
; 89   : }

  0001f	5d		 pop	 ebp
  00020	c3		 ret	 0
?SetActiveOutput@@YAXW4OUTPUTTYPES@IOutput@@@Z ENDP	; SetActiveOutput
_TEXT	ENDS
PUBLIC	?GetActiveOutput@@YAPAVIOutput@@XZ		; GetActiveOutput
; Function compile flags: /Odtp
;	COMDAT ?GetActiveOutput@@YAPAVIOutput@@XZ
_TEXT	SEGMENT
?GetActiveOutput@@YAPAVIOutput@@XZ PROC			; GetActiveOutput, COMDAT

; 75   : {

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

; 76   :     return ActiveOutput;

  00003	a1 00 00 00 00	 mov	 eax, DWORD PTR ?ActiveOutput@@3PAVIOutput@@A ; ActiveOutput

; 77   : }

  00008	5d		 pop	 ebp
  00009	c3		 ret	 0
?GetActiveOutput@@YAPAVIOutput@@XZ ENDP			; GetActiveOutput
_TEXT	ENDS
PUBLIC	?GetOtherSettings@IOutput@@QAEPAUSETTING@@XZ	; IOutput::GetOtherSettings
; Function compile flags: /Odtp
;	COMDAT ?GetOtherSettings@IOutput@@QAEPAUSETTING@@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetOtherSettings@IOutput@@QAEPAUSETTING@@XZ PROC	; IOutput::GetOtherSettings, COMDAT
; _this$ = ecx

; 64   : {

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

; 65   :     if(!m_bSettingInitialized)

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	83 78 04 00	 cmp	 DWORD PTR [eax+4], 0
  0000e	75 17		 jne	 SHORT $LN1@GetOtherSe

; 66   :     {
; 67   :         InitOtherSettings();

  00010	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00013	8b 11		 mov	 edx, DWORD PTR [ecx]
  00015	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00018	8b 42 64	 mov	 eax, DWORD PTR [edx+100]
  0001b	ff d0		 call	 eax

; 68   :         m_bSettingInitialized=TRUE;

  0001d	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00020	c7 41 04 01 00
	00 00		 mov	 DWORD PTR [ecx+4], 1
$LN1@GetOtherSe:

; 69   :     }
; 70   :     return OtherSettings;

  00027	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0002a	83 c0 08	 add	 eax, 8

; 71   : }

  0002d	8b e5		 mov	 esp, ebp
  0002f	5d		 pop	 ebp
  00030	c3		 ret	 0
?GetOtherSettings@IOutput@@QAEPAUSETTING@@XZ ENDP	; IOutput::GetOtherSettings
_TEXT	ENDS
PUBLIC	??1IOutput@@UAE@XZ				; IOutput::~IOutput
; Function compile flags: /Odtp
;	COMDAT ??1IOutput@@UAE@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
??1IOutput@@UAE@XZ PROC					; IOutput::~IOutput, COMDAT
; _this$ = ecx

; 36   : {

  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 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], OFFSET ??_7IOutput@@6B@

; 37   : }

  00010	8b e5		 mov	 esp, ebp
  00012	5d		 pop	 ebp
  00013	c3		 ret	 0
??1IOutput@@UAE@XZ ENDP					; IOutput::~IOutput
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ??_GIOutput@@UAEPAXI@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
___flags$ = 8						; size = 4
??_GIOutput@@UAEPAXI@Z PROC				; IOutput::`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	 ??1IOutput@@UAE@XZ	; IOutput::~IOutput
  0000f	8b 45 08	 mov	 eax, DWORD PTR ___flags$[ebp]
  00012	83 e0 01	 and	 eax, 1
  00015	74 0c		 je	 SHORT $LN1@scalar@3
  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@3:
  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
??_GIOutput@@UAEPAXI@Z ENDP				; IOutput::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??0IOutput@@QAE@XZ				; IOutput::IOutput
; Function compile flags: /Odtp
;	COMDAT ??0IOutput@@QAE@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
??0IOutput@@QAE@XZ PROC					; IOutput::IOutput, COMDAT
; _this$ = ecx

; 32   : {

  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 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], OFFSET ??_7IOutput@@6B@

; 33   : }

  00010	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00013	8b e5		 mov	 esp, ebp
  00015	5d		 pop	 ebp
  00016	c3		 ret	 0
??0IOutput@@QAE@XZ ENDP					; IOutput::IOutput
; Function compile flags: /Odtp
;	COMDAT ?GetMonitorRect@IOutput@@UAEXPAUHWND__@@PAUtagRECT@@@Z
_TEXT	SEGMENT
_this$ = -48						; size = 4
_MonInfo$ = -44						; size = 40
_hMonitor$ = -4						; size = 4
_hWnd$ = 8						; size = 4
_rect$ = 12						; size = 4
?GetMonitorRect@IOutput@@UAEXPAUHWND__@@PAUtagRECT@@@Z PROC ; IOutput::GetMonitorRect, COMDAT
; _this$ = ecx

; 41   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 30	 sub	 esp, 48			; 00000030H
  00006	89 4d d0	 mov	 DWORD PTR _this$[ebp], ecx

; 42   :     /*
; 43   :     drop NT4.0 compatibility .. anybody still using it???
; 44   :     if(lpMonitorFromWindow == NULL)
; 45   :     {
; 46   :         rect->top = 0;
; 47   :         rect->left = 0;
; 48   :         rect->bottom = GetSystemMetrics(SM_CYSCREEN);
; 49   :         rect->right = GetSystemMetrics(SM_CXSCREEN);
; 50   :         return;
; 51   :     }*/
; 52   : 
; 53   :     HMONITOR hMonitor = 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 _hMonitor$[ebp], eax

; 54   :     MONITORINFO MonInfo;
; 55   : 
; 56   :     MonInfo.cbSize = sizeof(MONITORINFO);

  00017	c7 45 d4 28 00
	00 00		 mov	 DWORD PTR _MonInfo$[ebp], 40 ; 00000028H

; 57   : 
; 58   :     GetMonitorInfo(hMonitor, &MonInfo);

  0001e	8d 4d d4	 lea	 ecx, DWORD PTR _MonInfo$[ebp]
  00021	51		 push	 ecx
  00022	8b 55 fc	 mov	 edx, DWORD PTR _hMonitor$[ebp]
  00025	52		 push	 edx
  00026	e8 00 00 00 00	 call	 _xGetMonitorInfo@8

; 59   :     memcpy(rect, &MonInfo.rcMonitor, sizeof(RECT));

  0002b	6a 10		 push	 16			; 00000010H
  0002d	8d 45 d8	 lea	 eax, DWORD PTR _MonInfo$[ebp+4]
  00030	50		 push	 eax
  00031	8b 4d 0c	 mov	 ecx, DWORD PTR _rect$[ebp]
  00034	51		 push	 ecx
  00035	e8 00 00 00 00	 call	 _memcpy
  0003a	83 c4 0c	 add	 esp, 12			; 0000000cH

; 60   :     LOG(2, _T("GetMonitorRect %d %d %d %d"), rect->left, rect->right, rect->top, rect->bottom);

  0003d	8b 55 0c	 mov	 edx, DWORD PTR _rect$[ebp]
  00040	8b 42 0c	 mov	 eax, DWORD PTR [edx+12]
  00043	50		 push	 eax
  00044	8b 4d 0c	 mov	 ecx, DWORD PTR _rect$[ebp]
  00047	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  0004a	52		 push	 edx
  0004b	8b 45 0c	 mov	 eax, DWORD PTR _rect$[ebp]
  0004e	8b 48 08	 mov	 ecx, DWORD PTR [eax+8]
  00051	51		 push	 ecx
  00052	8b 55 0c	 mov	 edx, DWORD PTR _rect$[ebp]
  00055	8b 02		 mov	 eax, DWORD PTR [edx]
  00057	50		 push	 eax
  00058	68 00 00 00 00	 push	 OFFSET ??_C@_1DG@EECMFCJJ@?$AAG?$AAe?$AAt?$AAM?$AAo?$AAn?$AAi?$AAt?$AAo?$AAr?$AAR?$AAe?$AAc?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?$CF?$AAd?$AA?$AA@
  0005d	6a 02		 push	 2
  0005f	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00064	83 c4 18	 add	 esp, 24			; 00000018H

; 61   : }

  00067	8b e5		 mov	 esp, ebp
  00069	5d		 pop	 ebp
  0006a	c2 08 00	 ret	 8
?GetMonitorRect@IOutput@@UAEXPAUHWND__@@PAUtagRECT@@@Z ENDP ; IOutput::GetMonitorRect
END
