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

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

INCLUDELIB OLDNAMES

PUBLIC	??_R4CAutoCriticalSection@@6B@			; CAutoCriticalSection::`RTTI Complete Object Locator'
PUBLIC	??_R3CAutoCriticalSection@@8			; CAutoCriticalSection::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2CAutoCriticalSection@@8			; CAutoCriticalSection::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@CAutoCriticalSection@@8		; CAutoCriticalSection::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVCAutoCriticalSection@@@8		; CAutoCriticalSection `RTTI Type Descriptor'
PUBLIC	??_GCAutoCriticalSection@@UAEPAXI@Z		; CAutoCriticalSection::`scalar deleting destructor'
PUBLIC	??_7CAutoCriticalSection@@6B@			; CAutoCriticalSection::`vftable'
EXTRN	??_ECAutoCriticalSection@@UAEPAXI@Z:PROC	; CAutoCriticalSection::`vector deleting destructor'
;	COMDAT ??_7CAutoCriticalSection@@6B@
CONST	SEGMENT
??_7CAutoCriticalSection@@6B@ DD FLAT:??_R4CAutoCriticalSection@@6B@ ; CAutoCriticalSection::`vftable'
	DD	FLAT:??_ECAutoCriticalSection@@UAEPAXI@Z
CONST	ENDS
;	COMDAT ??_R4CAutoCriticalSection@@6B@
rdata$r	SEGMENT
??_R4CAutoCriticalSection@@6B@ DD 00H			; CAutoCriticalSection::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCAutoCriticalSection@@@8
	DD	FLAT:??_R3CAutoCriticalSection@@8
rdata$r	ENDS
;	COMDAT ??_R3CAutoCriticalSection@@8
rdata$r	SEGMENT
??_R3CAutoCriticalSection@@8 DD 00H			; CAutoCriticalSection::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2CAutoCriticalSection@@8
rdata$r	ENDS
;	COMDAT ??_R2CAutoCriticalSection@@8
rdata$r	SEGMENT
??_R2CAutoCriticalSection@@8 DD FLAT:??_R1A@?0A@EA@CAutoCriticalSection@@8 ; CAutoCriticalSection::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@CAutoCriticalSection@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@CAutoCriticalSection@@8 DD FLAT:??_R0?AVCAutoCriticalSection@@@8 ; CAutoCriticalSection::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3CAutoCriticalSection@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCAutoCriticalSection@@@8
_DATA	SEGMENT
??_R0?AVCAutoCriticalSection@@@8 DD FLAT:??_7type_info@@6B@ ; CAutoCriticalSection `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCAutoCriticalSection@@', 00H
PUBLIC	??1CAutoCriticalSection@@UAE@XZ			; CAutoCriticalSection::~CAutoCriticalSection
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\autocriticalsection.cpp
;	COMDAT ??1CAutoCriticalSection@@UAE@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
??1CAutoCriticalSection@@UAE@XZ PROC			; CAutoCriticalSection::~CAutoCriticalSection, COMDAT
; _this$ = ecx

; 35   : {

  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 ??_7CAutoCriticalSection@@6B@

; 36   :     LeaveCriticalSection(m_pCriticalSection);

  00010	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00013	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00016	52		 push	 edx
  00017	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 37   : }

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

; 29   : {

  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 ??_7CAutoCriticalSection@@6B@
  00010	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00013	8b 55 08	 mov	 edx, DWORD PTR _pCriticalSection$[ebp]
  00016	89 51 04	 mov	 DWORD PTR [ecx+4], edx

; 30   :     _ASSERTE(m_pCriticalSection!=NULL);
; 31   :     EnterCriticalSection(m_pCriticalSection);

  00019	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0001c	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  0001f	51		 push	 ecx
  00020	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__EnterCriticalSection@4

; 32   : }

  00026	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00029	8b e5		 mov	 esp, ebp
  0002b	5d		 pop	 ebp
  0002c	c2 04 00	 ret	 4
??0CAutoCriticalSection@@QAE@AAU_RTL_CRITICAL_SECTION@@@Z ENDP ; CAutoCriticalSection::CAutoCriticalSection
END
