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

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

INCLUDELIB OLDNAMES

PUBLIC	??_C@_1CI@GAPBKJOF@?$AAW?$AAa?$AAi?$AAt?$AA?5?$AAf?$AAo?$AAr?$AA?5?$AAn?$AAe?$AAx?$AAt?$AA?5?$AAf?$AAi?$AAe?$AAl?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_GCPerfItem@@QAEPAXI@Z			; CPerfItem::`scalar deleting destructor'
PUBLIC	??0?$SmartPtr@VCPerf@@@@QAE@XZ			; SmartPtr<CPerf>::SmartPtr<CPerf>
PUBLIC	??1?$SmartPtr@VCPerf@@@@QAE@XZ			; SmartPtr<CPerf>::~SmartPtr<CPerf>
EXTRN	__finite:PROC
EXTRN	__isnan:PROC
;	COMDAT ??_C@_1CI@GAPBKJOF@?$AAW?$AAa?$AAi?$AAt?$AA?5?$AAf?$AAo?$AAr?$AA?5?$AAn?$AAe?$AAx?$AAt?$AA?5?$AAf?$AAi?$AAe?$AAl?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1CI@GAPBKJOF@?$AAW?$AAa?$AAi?$AAt?$AA?5?$AAf?$AAo?$AAr?$AA?5?$AAn?$AAe?$AAx?$AAt?$AA?5?$AAf?$AAi?$AAe?$AAl?$AAd?$AA?$AA@ DB 'W'
	DB	00H, 'a', 00H, 'i', 00H, 't', 00H, ' ', 00H, 'f', 00H, 'o', 00H
	DB	'r', 00H, ' ', 00H, 'n', 00H, 'e', 00H, 'x', 00H, 't', 00H, ' '
	DB	00H, 'f', 00H, 'i', 00H, 'e', 00H, 'l', 00H, 'd', 00H, 00H, 00H ; `string'
_PerfNames DD	FLAT:??_C@_1CI@GAPBKJOF@?$AAW?$AAa?$AAi?$AAt?$AA?5?$AAf?$AAo?$AAr?$AA?5?$AAn?$AAe?$AAx?$AAt?$AA?5?$AAf?$AAi?$AAe?$AAl?$AAd?$AA?$AA@
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\smartptr.h
;	COMDAT ??0?$SmartPtr@VCPerf@@@@QAE@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
??0?$SmartPtr@VCPerf@@@@QAE@XZ PROC			; SmartPtr<CPerf>::SmartPtr<CPerf>, COMDAT
; _this$ = ecx

; 76   :     SmartPtr() : rawPtr(0), counter(0) { }

  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], 0
  00010	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00013	c7 41 04 00 00
	00 00		 mov	 DWORD PTR [ecx+4], 0
  0001a	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0001d	8b e5		 mov	 esp, ebp
  0001f	5d		 pop	 ebp
  00020	c3		 ret	 0
??0?$SmartPtr@VCPerf@@@@QAE@XZ ENDP			; SmartPtr<CPerf>::SmartPtr<CPerf>
_TEXT	ENDS
PUBLIC	?GetNoFlipAtTimeLastSecond@CPerf@@QAEHXZ	; CPerf::GetNoFlipAtTimeLastSecond
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\perf.cpp
;	COMDAT ?GetNoFlipAtTimeLastSecond@CPerf@@QAEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetNoFlipAtTimeLastSecond@CPerf@@QAEHXZ PROC		; CPerf::GetNoFlipAtTimeLastSecond, COMDAT
; _this$ = ecx

; 468  : {

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

; 469  :     return (m_NoFlipAtTimeLastSec + 5) / 10;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 40 34	 mov	 eax, DWORD PTR [eax+52]
  0000d	83 c0 05	 add	 eax, 5
  00010	99		 cdq
  00011	b9 0a 00 00 00	 mov	 ecx, 10			; 0000000aH
  00016	f7 f9		 idiv	 ecx

; 470  : }

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

; 463  : {

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

; 464  :     return (m_UsedFieldsLastSec + 5) / 10;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 40 30	 mov	 eax, DWORD PTR [eax+48]
  0000d	83 c0 05	 add	 eax, 5
  00010	99		 cdq
  00011	b9 0a 00 00 00	 mov	 ecx, 10			; 0000000aH
  00016	f7 f9		 idiv	 ecx

; 465  : }

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

; 458  : {

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

; 459  :     return (m_LateFieldsLastSec + 5) / 10;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 40 2c	 mov	 eax, DWORD PTR [eax+44]
  0000d	83 c0 05	 add	 eax, 5
  00010	99		 cdq
  00011	b9 0a 00 00 00	 mov	 ecx, 10			; 0000000aH
  00016	f7 f9		 idiv	 ecx

; 460  : }

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

; 453  : {

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

; 454  :     return (m_NotWaitedFieldsLastSec + 5) / 10;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 40 28	 mov	 eax, DWORD PTR [eax+40]
  0000d	83 c0 05	 add	 eax, 5
  00010	99		 cdq
  00011	b9 0a 00 00 00	 mov	 ecx, 10			; 0000000aH
  00016	f7 f9		 idiv	 ecx

; 455  : }

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

; 448  : {

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

; 449  :     return (m_DroppedFieldsLastSec + 5) / 10;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 40 24	 mov	 eax, DWORD PTR [eax+36]
  0000d	83 c0 05	 add	 eax, 5
  00010	99		 cdq
  00011	b9 0a 00 00 00	 mov	 ecx, 10			; 0000000aH
  00016	f7 f9		 idiv	 ecx

; 450  : }

  00018	8b e5		 mov	 esp, ebp
  0001a	5d		 pop	 ebp
  0001b	c3		 ret	 0
?GetDroppedFieldsLastSecond@CPerf@@QAEHXZ ENDP		; CPerf::GetDroppedFieldsLastSecond
_TEXT	ENDS
PUBLIC	__real@408f400000000000
PUBLIC	?GetAverageNoFlipAtTime@CPerf@@QAENXZ		; CPerf::GetAverageNoFlipAtTime
;	COMDAT __real@408f400000000000
CONST	SEGMENT
__real@408f400000000000 DQ 0408f400000000000r	; 1000
; Function compile flags: /Odtp
CONST	ENDS
;	COMDAT ?GetAverageNoFlipAtTime@CPerf@@QAENXZ
_TEXT	SEGMENT
tv84 = -12						; size = 8
_this$ = -4						; size = 4
?GetAverageNoFlipAtTime@CPerf@@QAENXZ PROC		; CPerf::GetAverageNoFlipAtTime, COMDAT
; _this$ = ecx

; 436  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 0c	 sub	 esp, 12			; 0000000cH
  00006	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 437  :     if (m_TickStartLastSec == m_TickStart)

  00009	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000f	8b 50 0c	 mov	 edx, DWORD PTR [eax+12]
  00012	3b 51 08	 cmp	 edx, DWORD PTR [ecx+8]
  00015	75 06		 jne	 SHORT $LN2@GetAverage

; 438  :     {
; 439  :         return 0.0;

  00017	d9 ee		 fldz
  00019	eb 29		 jmp	 SHORT $LN1@GetAverage

; 440  :     }
; 441  :     else

  0001b	eb 27		 jmp	 SHORT $LN1@GetAverage
$LN2@GetAverage:

; 442  :     {
; 443  :         return ((double)m_TotalNoFlipAtTime * 1000.0 / (double)(m_TickStartLastSec - m_TickStart));

  0001d	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00020	db 40 20	 fild	 DWORD PTR [eax+32]
  00023	dc 0d 00 00 00
	00		 fmul	 QWORD PTR __real@408f400000000000
  00029	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0002c	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0002f	8b 41 0c	 mov	 eax, DWORD PTR [ecx+12]
  00032	2b 42 08	 sub	 eax, DWORD PTR [edx+8]
  00035	89 45 f4	 mov	 DWORD PTR tv84[ebp], eax
  00038	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR tv84[ebp+4], 0
  0003f	df 6d f4	 fild	 QWORD PTR tv84[ebp]
  00042	de f9		 fdivp	 ST(1), ST(0)
$LN1@GetAverage:

; 444  :     }
; 445  : }

  00044	8b e5		 mov	 esp, ebp
  00046	5d		 pop	 ebp
  00047	c3		 ret	 0
?GetAverageNoFlipAtTime@CPerf@@QAENXZ ENDP		; CPerf::GetAverageNoFlipAtTime
_TEXT	ENDS
PUBLIC	?GetAverageUsedFields@CPerf@@QAENXZ		; CPerf::GetAverageUsedFields
; Function compile flags: /Odtp
;	COMDAT ?GetAverageUsedFields@CPerf@@QAENXZ
_TEXT	SEGMENT
tv84 = -12						; size = 8
_this$ = -4						; size = 4
?GetAverageUsedFields@CPerf@@QAENXZ PROC		; CPerf::GetAverageUsedFields, COMDAT
; _this$ = ecx

; 424  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 0c	 sub	 esp, 12			; 0000000cH
  00006	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 425  :     if (m_TickStartLastSec == m_TickStart)

  00009	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000f	8b 50 0c	 mov	 edx, DWORD PTR [eax+12]
  00012	3b 51 08	 cmp	 edx, DWORD PTR [ecx+8]
  00015	75 06		 jne	 SHORT $LN2@GetAverage@2

; 426  :     {
; 427  :         return 0.0;

  00017	d9 ee		 fldz
  00019	eb 29		 jmp	 SHORT $LN1@GetAverage@2

; 428  :     }
; 429  :     else

  0001b	eb 27		 jmp	 SHORT $LN1@GetAverage@2
$LN2@GetAverage@2:

; 430  :     {
; 431  :         return ((double)m_TotalUsedFields * 1000.0 / (double)(m_TickStartLastSec - m_TickStart));

  0001d	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00020	db 40 1c	 fild	 DWORD PTR [eax+28]
  00023	dc 0d 00 00 00
	00		 fmul	 QWORD PTR __real@408f400000000000
  00029	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0002c	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0002f	8b 41 0c	 mov	 eax, DWORD PTR [ecx+12]
  00032	2b 42 08	 sub	 eax, DWORD PTR [edx+8]
  00035	89 45 f4	 mov	 DWORD PTR tv84[ebp], eax
  00038	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR tv84[ebp+4], 0
  0003f	df 6d f4	 fild	 QWORD PTR tv84[ebp]
  00042	de f9		 fdivp	 ST(1), ST(0)
$LN1@GetAverage@2:

; 432  :     }
; 433  : }

  00044	8b e5		 mov	 esp, ebp
  00046	5d		 pop	 ebp
  00047	c3		 ret	 0
?GetAverageUsedFields@CPerf@@QAENXZ ENDP		; CPerf::GetAverageUsedFields
_TEXT	ENDS
PUBLIC	?GetAverageLateFields@CPerf@@QAENXZ		; CPerf::GetAverageLateFields
; Function compile flags: /Odtp
;	COMDAT ?GetAverageLateFields@CPerf@@QAENXZ
_TEXT	SEGMENT
tv84 = -12						; size = 8
_this$ = -4						; size = 4
?GetAverageLateFields@CPerf@@QAENXZ PROC		; CPerf::GetAverageLateFields, COMDAT
; _this$ = ecx

; 412  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 0c	 sub	 esp, 12			; 0000000cH
  00006	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 413  :     if (m_TickStartLastSec == m_TickStart)

  00009	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000f	8b 50 0c	 mov	 edx, DWORD PTR [eax+12]
  00012	3b 51 08	 cmp	 edx, DWORD PTR [ecx+8]
  00015	75 06		 jne	 SHORT $LN2@GetAverage@3

; 414  :     {
; 415  :         return 0.0;

  00017	d9 ee		 fldz
  00019	eb 29		 jmp	 SHORT $LN1@GetAverage@3

; 416  :     }
; 417  :     else

  0001b	eb 27		 jmp	 SHORT $LN1@GetAverage@3
$LN2@GetAverage@3:

; 418  :     {
; 419  :         return ((double)m_TotalLateFields * 1000.0 / (double)(m_TickStartLastSec - m_TickStart));

  0001d	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00020	db 40 18	 fild	 DWORD PTR [eax+24]
  00023	dc 0d 00 00 00
	00		 fmul	 QWORD PTR __real@408f400000000000
  00029	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0002c	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0002f	8b 41 0c	 mov	 eax, DWORD PTR [ecx+12]
  00032	2b 42 08	 sub	 eax, DWORD PTR [edx+8]
  00035	89 45 f4	 mov	 DWORD PTR tv84[ebp], eax
  00038	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR tv84[ebp+4], 0
  0003f	df 6d f4	 fild	 QWORD PTR tv84[ebp]
  00042	de f9		 fdivp	 ST(1), ST(0)
$LN1@GetAverage@3:

; 420  :     }
; 421  : }

  00044	8b e5		 mov	 esp, ebp
  00046	5d		 pop	 ebp
  00047	c3		 ret	 0
?GetAverageLateFields@CPerf@@QAENXZ ENDP		; CPerf::GetAverageLateFields
_TEXT	ENDS
PUBLIC	?GetAverageNotWaitedFields@CPerf@@QAENXZ	; CPerf::GetAverageNotWaitedFields
; Function compile flags: /Odtp
;	COMDAT ?GetAverageNotWaitedFields@CPerf@@QAENXZ
_TEXT	SEGMENT
tv84 = -12						; size = 8
_this$ = -4						; size = 4
?GetAverageNotWaitedFields@CPerf@@QAENXZ PROC		; CPerf::GetAverageNotWaitedFields, COMDAT
; _this$ = ecx

; 400  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 0c	 sub	 esp, 12			; 0000000cH
  00006	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 401  :     if (m_TickStartLastSec == m_TickStart)

  00009	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000f	8b 50 0c	 mov	 edx, DWORD PTR [eax+12]
  00012	3b 51 08	 cmp	 edx, DWORD PTR [ecx+8]
  00015	75 06		 jne	 SHORT $LN2@GetAverage@4

; 402  :     {
; 403  :         return 0.0;

  00017	d9 ee		 fldz
  00019	eb 29		 jmp	 SHORT $LN1@GetAverage@4

; 404  :     }
; 405  :     else

  0001b	eb 27		 jmp	 SHORT $LN1@GetAverage@4
$LN2@GetAverage@4:

; 406  :     {
; 407  :         return ((double)m_TotalNotWaitedFields * 1000.0 / (double)(m_TickStartLastSec - m_TickStart));

  0001d	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00020	db 40 14	 fild	 DWORD PTR [eax+20]
  00023	dc 0d 00 00 00
	00		 fmul	 QWORD PTR __real@408f400000000000
  00029	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0002c	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0002f	8b 41 0c	 mov	 eax, DWORD PTR [ecx+12]
  00032	2b 42 08	 sub	 eax, DWORD PTR [edx+8]
  00035	89 45 f4	 mov	 DWORD PTR tv84[ebp], eax
  00038	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR tv84[ebp+4], 0
  0003f	df 6d f4	 fild	 QWORD PTR tv84[ebp]
  00042	de f9		 fdivp	 ST(1), ST(0)
$LN1@GetAverage@4:

; 408  :     }
; 409  : }

  00044	8b e5		 mov	 esp, ebp
  00046	5d		 pop	 ebp
  00047	c3		 ret	 0
?GetAverageNotWaitedFields@CPerf@@QAENXZ ENDP		; CPerf::GetAverageNotWaitedFields
_TEXT	ENDS
PUBLIC	?GetAverageDroppedFields@CPerf@@QAENXZ		; CPerf::GetAverageDroppedFields
; Function compile flags: /Odtp
;	COMDAT ?GetAverageDroppedFields@CPerf@@QAENXZ
_TEXT	SEGMENT
tv84 = -12						; size = 8
_this$ = -4						; size = 4
?GetAverageDroppedFields@CPerf@@QAENXZ PROC		; CPerf::GetAverageDroppedFields, COMDAT
; _this$ = ecx

; 388  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 0c	 sub	 esp, 12			; 0000000cH
  00006	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 389  :     if (m_TickStartLastSec == m_TickStart)

  00009	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000f	8b 50 0c	 mov	 edx, DWORD PTR [eax+12]
  00012	3b 51 08	 cmp	 edx, DWORD PTR [ecx+8]
  00015	75 06		 jne	 SHORT $LN2@GetAverage@5

; 390  :     {
; 391  :         return 0.0;

  00017	d9 ee		 fldz
  00019	eb 29		 jmp	 SHORT $LN1@GetAverage@5

; 392  :     }
; 393  :     else

  0001b	eb 27		 jmp	 SHORT $LN1@GetAverage@5
$LN2@GetAverage@5:

; 394  :     {
; 395  :         return ((double)m_TotalDroppedFields * 1000.0 / (double)(m_TickStartLastSec - m_TickStart));

  0001d	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00020	db 40 10	 fild	 DWORD PTR [eax+16]
  00023	dc 0d 00 00 00
	00		 fmul	 QWORD PTR __real@408f400000000000
  00029	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0002c	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0002f	8b 41 0c	 mov	 eax, DWORD PTR [ecx+12]
  00032	2b 42 08	 sub	 eax, DWORD PTR [edx+8]
  00035	89 45 f4	 mov	 DWORD PTR tv84[ebp], eax
  00038	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR tv84[ebp+4], 0
  0003f	df 6d f4	 fild	 QWORD PTR tv84[ebp]
  00042	de f9		 fdivp	 ST(1), ST(0)
$LN1@GetAverage@5:

; 396  :     }
; 397  : }

  00044	8b e5		 mov	 esp, ebp
  00046	5d		 pop	 ebp
  00047	c3		 ret	 0
?GetAverageDroppedFields@CPerf@@QAENXZ ENDP		; CPerf::GetAverageDroppedFields
_TEXT	ENDS
PUBLIC	?GetNumberNoFlipAtTime@CPerf@@QAEHXZ		; CPerf::GetNumberNoFlipAtTime
; Function compile flags: /Odtp
;	COMDAT ?GetNumberNoFlipAtTime@CPerf@@QAEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetNumberNoFlipAtTime@CPerf@@QAEHXZ PROC		; CPerf::GetNumberNoFlipAtTime, COMDAT
; _this$ = ecx

; 383  : {

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

; 384  :     return m_TotalNoFlipAtTime;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 40 20	 mov	 eax, DWORD PTR [eax+32]

; 385  : }

  0000d	8b e5		 mov	 esp, ebp
  0000f	5d		 pop	 ebp
  00010	c3		 ret	 0
?GetNumberNoFlipAtTime@CPerf@@QAEHXZ ENDP		; CPerf::GetNumberNoFlipAtTime
_TEXT	ENDS
PUBLIC	?GetNumberUsedFields@CPerf@@QAEHXZ		; CPerf::GetNumberUsedFields
; Function compile flags: /Odtp
;	COMDAT ?GetNumberUsedFields@CPerf@@QAEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetNumberUsedFields@CPerf@@QAEHXZ PROC			; CPerf::GetNumberUsedFields, COMDAT
; _this$ = ecx

; 378  : {

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

; 379  :     return m_TotalUsedFields;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 40 1c	 mov	 eax, DWORD PTR [eax+28]

; 380  : }

  0000d	8b e5		 mov	 esp, ebp
  0000f	5d		 pop	 ebp
  00010	c3		 ret	 0
?GetNumberUsedFields@CPerf@@QAEHXZ ENDP			; CPerf::GetNumberUsedFields
_TEXT	ENDS
PUBLIC	?GetNumberLateFields@CPerf@@QAEHXZ		; CPerf::GetNumberLateFields
; Function compile flags: /Odtp
;	COMDAT ?GetNumberLateFields@CPerf@@QAEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetNumberLateFields@CPerf@@QAEHXZ PROC			; CPerf::GetNumberLateFields, COMDAT
; _this$ = ecx

; 373  : {

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

; 374  :     return m_TotalLateFields;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 40 18	 mov	 eax, DWORD PTR [eax+24]

; 375  : }

  0000d	8b e5		 mov	 esp, ebp
  0000f	5d		 pop	 ebp
  00010	c3		 ret	 0
?GetNumberLateFields@CPerf@@QAEHXZ ENDP			; CPerf::GetNumberLateFields
_TEXT	ENDS
PUBLIC	?GetNumberNotWaitedFields@CPerf@@QAEHXZ		; CPerf::GetNumberNotWaitedFields
; Function compile flags: /Odtp
;	COMDAT ?GetNumberNotWaitedFields@CPerf@@QAEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetNumberNotWaitedFields@CPerf@@QAEHXZ PROC		; CPerf::GetNumberNotWaitedFields, COMDAT
; _this$ = ecx

; 368  : {

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

; 369  :     return m_TotalNotWaitedFields;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 40 14	 mov	 eax, DWORD PTR [eax+20]

; 370  : }

  0000d	8b e5		 mov	 esp, ebp
  0000f	5d		 pop	 ebp
  00010	c3		 ret	 0
?GetNumberNotWaitedFields@CPerf@@QAEHXZ ENDP		; CPerf::GetNumberNotWaitedFields
_TEXT	ENDS
PUBLIC	?GetNumberDroppedFields@CPerf@@QAEHXZ		; CPerf::GetNumberDroppedFields
; Function compile flags: /Odtp
;	COMDAT ?GetNumberDroppedFields@CPerf@@QAEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetNumberDroppedFields@CPerf@@QAEHXZ PROC		; CPerf::GetNumberDroppedFields, COMDAT
; _this$ = ecx

; 363  : {

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

; 364  :     return m_TotalDroppedFields;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 40 10	 mov	 eax, DWORD PTR [eax+16]

; 365  : }

  0000d	8b e5		 mov	 esp, ebp
  0000f	5d		 pop	 ebp
  00010	c3		 ret	 0
?GetNumberDroppedFields@CPerf@@QAEHXZ ENDP		; CPerf::GetNumberDroppedFields
_TEXT	ENDS
PUBLIC	?Reset@CPerf@@QAEXXZ				; CPerf::Reset
; Function compile flags: /Odtp
;	COMDAT ?Reset@CPerf@@QAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Reset@CPerf@@QAEXXZ PROC				; CPerf::Reset, COMDAT
; _this$ = ecx

; 202  : {

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

; 203  :     m_ResetRequested = TRUE;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	c7 40 38 01 00
	00 00		 mov	 DWORD PTR [eax+56], 1

; 204  : }

  00011	8b e5		 mov	 esp, ebp
  00013	5d		 pop	 ebp
  00014	c3		 ret	 0
?Reset@CPerf@@QAEXXZ ENDP				; CPerf::Reset
_TEXT	ENDS
PUBLIC	?GetMaxDuration@CPerfItem@@QAEKXZ		; CPerfItem::GetMaxDuration
; Function compile flags: /Odtp
;	COMDAT ?GetMaxDuration@CPerfItem@@QAEKXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetMaxDuration@CPerfItem@@QAEKXZ PROC			; CPerfItem::GetMaxDuration, COMDAT
; _this$ = ecx

; 166  : {

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

; 167  :     return m_MaxDuration;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 40 14	 mov	 eax, DWORD PTR [eax+20]

; 168  : }

  0000d	8b e5		 mov	 esp, ebp
  0000f	5d		 pop	 ebp
  00010	c3		 ret	 0
?GetMaxDuration@CPerfItem@@QAEKXZ ENDP			; CPerfItem::GetMaxDuration
_TEXT	ENDS
PUBLIC	?GetMinDuration@CPerfItem@@QAEKXZ		; CPerfItem::GetMinDuration
; Function compile flags: /Odtp
;	COMDAT ?GetMinDuration@CPerfItem@@QAEKXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetMinDuration@CPerfItem@@QAEKXZ PROC			; CPerfItem::GetMinDuration, COMDAT
; _this$ = ecx

; 161  : {

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

; 162  :     return m_MinDuration;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 40 10	 mov	 eax, DWORD PTR [eax+16]

; 163  : }

  0000d	8b e5		 mov	 esp, ebp
  0000f	5d		 pop	 ebp
  00010	c3		 ret	 0
?GetMinDuration@CPerfItem@@QAEKXZ ENDP			; CPerfItem::GetMinDuration
_TEXT	ENDS
PUBLIC	?GetAverageDuration@CPerfItem@@QAEKXZ		; CPerfItem::GetAverageDuration
; Function compile flags: /Odtp
;	COMDAT ?GetAverageDuration@CPerfItem@@QAEKXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetAverageDuration@CPerfItem@@QAEKXZ PROC		; CPerfItem::GetAverageDuration, COMDAT
; _this$ = ecx

; 153  : {

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

; 154  :     if (m_NbCounts > 0)

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	83 78 0c 00	 cmp	 DWORD PTR [eax+12], 0
  0000e	76 15		 jbe	 SHORT $LN2@GetAverage@6

; 155  :         return m_SumDuration * 10 / m_NbCounts;

  00010	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00013	8b 41 08	 mov	 eax, DWORD PTR [ecx+8]
  00016	6b c0 0a	 imul	 eax, 10			; 0000000aH
  00019	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0001c	33 d2		 xor	 edx, edx
  0001e	f7 71 0c	 div	 DWORD PTR [ecx+12]
  00021	eb 04		 jmp	 SHORT $LN3@GetAverage@6

; 156  :     else

  00023	eb 02		 jmp	 SHORT $LN3@GetAverage@6
$LN2@GetAverage@6:

; 157  :         return 0;

  00025	33 c0		 xor	 eax, eax
$LN3@GetAverage@6:

; 158  : }

  00027	8b e5		 mov	 esp, ebp
  00029	5d		 pop	 ebp
  0002a	c3		 ret	 0
?GetAverageDuration@CPerfItem@@QAEKXZ ENDP		; CPerfItem::GetAverageDuration
_TEXT	ENDS
PUBLIC	?GetNbCounts@CPerfItem@@QAEIXZ			; CPerfItem::GetNbCounts
; Function compile flags: /Odtp
;	COMDAT ?GetNbCounts@CPerfItem@@QAEIXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetNbCounts@CPerfItem@@QAEIXZ PROC			; CPerfItem::GetNbCounts, COMDAT
; _this$ = ecx

; 148  : {

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

; 149  :     return m_NbCounts;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 40 0c	 mov	 eax, DWORD PTR [eax+12]

; 150  : }

  0000d	8b e5		 mov	 esp, ebp
  0000f	5d		 pop	 ebp
  00010	c3		 ret	 0
?GetNbCounts@CPerfItem@@QAEIXZ ENDP			; CPerfItem::GetNbCounts
_TEXT	ENDS
PUBLIC	?GetLastDuration@CPerfItem@@QAEKXZ		; CPerfItem::GetLastDuration
; Function compile flags: /Odtp
;	COMDAT ?GetLastDuration@CPerfItem@@QAEKXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetLastDuration@CPerfItem@@QAEKXZ PROC			; CPerfItem::GetLastDuration, COMDAT
; _this$ = ecx

; 143  : {

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

; 144  :     return m_LastDuration;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 40 04	 mov	 eax, DWORD PTR [eax+4]

; 145  : }

  0000d	8b e5		 mov	 esp, ebp
  0000f	5d		 pop	 ebp
  00010	c3		 ret	 0
?GetLastDuration@CPerfItem@@QAEKXZ ENDP			; CPerfItem::GetLastDuration
_TEXT	ENDS
PUBLIC	?GetName@CPerfItem@@QAEPB_WXZ			; CPerfItem::GetName
; Function compile flags: /Odtp
;	COMDAT ?GetName@CPerfItem@@QAEPB_WXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetName@CPerfItem@@QAEPB_WXZ PROC			; CPerfItem::GetName, COMDAT
; _this$ = ecx

; 138  : {

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

; 139  :     return m_Name;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 00		 mov	 eax, DWORD PTR [eax]

; 140  : }

  0000c	8b e5		 mov	 esp, ebp
  0000e	5d		 pop	 ebp
  0000f	c3		 ret	 0
?GetName@CPerfItem@@QAEPB_WXZ ENDP			; CPerfItem::GetName
_TEXT	ENDS
PUBLIC	?Resume@CPerfItem@@QAEXXZ			; CPerfItem::Resume
; Function compile flags: /Odtp
;	COMDAT ?Resume@CPerfItem@@QAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Resume@CPerfItem@@QAEXXZ PROC				; CPerfItem::Resume, COMDAT
; _this$ = ecx

; 133  : {

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

; 134  :     m_SuspendCounter--;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  0000d	83 e9 01	 sub	 ecx, 1
  00010	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00013	89 4a 18	 mov	 DWORD PTR [edx+24], ecx

; 135  : }

  00016	8b e5		 mov	 esp, ebp
  00018	5d		 pop	 ebp
  00019	c3		 ret	 0
?Resume@CPerfItem@@QAEXXZ ENDP				; CPerfItem::Resume
_TEXT	ENDS
PUBLIC	?Suspend@CPerfItem@@QAEXXZ			; CPerfItem::Suspend
; Function compile flags: /Odtp
;	COMDAT ?Suspend@CPerfItem@@QAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Suspend@CPerfItem@@QAEXXZ PROC				; CPerfItem::Suspend, COMDAT
; _this$ = ecx

; 128  : {

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

; 129  :     m_SuspendCounter++;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  0000d	83 c1 01	 add	 ecx, 1
  00010	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00013	89 4a 18	 mov	 DWORD PTR [edx+24], ecx

; 130  : }

  00016	8b e5		 mov	 esp, ebp
  00018	5d		 pop	 ebp
  00019	c3		 ret	 0
?Suspend@CPerfItem@@QAEXXZ ENDP				; CPerfItem::Suspend
_TEXT	ENDS
PUBLIC	?Reset@CPerfItem@@QAEXXZ			; CPerfItem::Reset
; Function compile flags: /Odtp
;	COMDAT ?Reset@CPerfItem@@QAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Reset@CPerfItem@@QAEXXZ PROC				; CPerfItem::Reset, COMDAT
; _this$ = ecx

; 79   : {

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

; 80   :     m_LastDuration = 0;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	c7 40 04 00 00
	00 00		 mov	 DWORD PTR [eax+4], 0

; 81   :     m_SumDuration = 0;

  00011	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00014	c7 41 08 00 00
	00 00		 mov	 DWORD PTR [ecx+8], 0

; 82   :     m_NbCounts = 0;

  0001b	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0001e	c7 42 0c 00 00
	00 00		 mov	 DWORD PTR [edx+12], 0

; 83   :     m_MinDuration = 10000;

  00025	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00028	c7 40 10 10 27
	00 00		 mov	 DWORD PTR [eax+16], 10000 ; 00002710H

; 84   :     m_MaxDuration = 0;

  0002f	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00032	c7 41 14 00 00
	00 00		 mov	 DWORD PTR [ecx+20], 0

; 85   :     m_TickStart = 0;

  00039	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0003c	c7 42 1c 00 00
	00 00		 mov	 DWORD PTR [edx+28], 0

; 86   :     m_IsCounting = FALSE;

  00043	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00046	c7 40 20 00 00
	00 00		 mov	 DWORD PTR [eax+32], 0

; 87   :     m_SuspendCounter = 0;

  0004d	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00050	c7 41 18 00 00
	00 00		 mov	 DWORD PTR [ecx+24], 0

; 88   : }

  00057	8b e5		 mov	 esp, ebp
  00059	5d		 pop	 ebp
  0005a	c3		 ret	 0
?Reset@CPerfItem@@QAEXXZ ENDP				; CPerfItem::Reset
_TEXT	ENDS
PUBLIC	??1CPerfItem@@QAE@XZ				; CPerfItem::~CPerfItem
; Function compile flags: /Odtp
;	COMDAT ??1CPerfItem@@QAE@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
??1CPerfItem@@QAE@XZ PROC				; CPerfItem::~CPerfItem, COMDAT
; _this$ = ecx

; 75   : {

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

; 76   : }

  00007	8b e5		 mov	 esp, ebp
  00009	5d		 pop	 ebp
  0000a	c3		 ret	 0
??1CPerfItem@@QAE@XZ ENDP				; CPerfItem::~CPerfItem
_TEXT	ENDS
PUBLIC	??0CPerfItem@@QAE@PB_W@Z			; CPerfItem::CPerfItem
; Function compile flags: /Odtp
;	COMDAT ??0CPerfItem@@QAE@PB_W@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_Name$ = 8						; size = 4
??0CPerfItem@@QAE@PB_W@Z PROC				; CPerfItem::CPerfItem, COMDAT
; _this$ = ecx

; 62   : {

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

; 63   :     m_Name = Name;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 4d 08	 mov	 ecx, DWORD PTR _Name$[ebp]
  0000d	89 08		 mov	 DWORD PTR [eax], ecx

; 64   :     m_LastDuration = 0;

  0000f	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00012	c7 42 04 00 00
	00 00		 mov	 DWORD PTR [edx+4], 0

; 65   :     m_SumDuration = 0;

  00019	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0001c	c7 40 08 00 00
	00 00		 mov	 DWORD PTR [eax+8], 0

; 66   :     m_NbCounts = 0;

  00023	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00026	c7 41 0c 00 00
	00 00		 mov	 DWORD PTR [ecx+12], 0

; 67   :     m_MinDuration = 10000;

  0002d	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00030	c7 42 10 10 27
	00 00		 mov	 DWORD PTR [edx+16], 10000 ; 00002710H

; 68   :     m_MaxDuration = 0;

  00037	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0003a	c7 40 14 00 00
	00 00		 mov	 DWORD PTR [eax+20], 0

; 69   :     m_TickStart = 0;

  00041	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00044	c7 41 1c 00 00
	00 00		 mov	 DWORD PTR [ecx+28], 0

; 70   :     m_IsCounting = FALSE;

  0004b	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0004e	c7 42 20 00 00
	00 00		 mov	 DWORD PTR [edx+32], 0

; 71   :     m_SuspendCounter = 0;

  00055	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00058	c7 40 18 00 00
	00 00		 mov	 DWORD PTR [eax+24], 0

; 72   : }

  0005f	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00062	8b e5		 mov	 esp, ebp
  00064	5d		 pop	 ebp
  00065	c2 04 00	 ret	 4
??0CPerfItem@@QAE@PB_W@Z ENDP				; CPerfItem::CPerfItem
_TEXT	ENDS
PUBLIC	?GetAccurateTickCount@@YAKXZ			; GetAccurateTickCount
; Function compile flags: /Odtp
;	COMDAT ?GetAccurateTickCount@@YAKXZ
_TEXT	SEGMENT
_frequency$ = -16					; size = 8
_ticks$ = -8						; size = 8
?GetAccurateTickCount@@YAKXZ PROC			; GetAccurateTickCount, COMDAT

; 30   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 10	 sub	 esp, 16			; 00000010H

; 31   :     ULONGLONG ticks;
; 32   :     ULONGLONG frequency;
; 33   : 
; 34   :     QueryPerformanceFrequency((PLARGE_INTEGER)&frequency);

  00006	8d 45 f0	 lea	 eax, DWORD PTR _frequency$[ebp]
  00009	50		 push	 eax
  0000a	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__QueryPerformanceFrequency@4

; 35   :     QueryPerformanceCounter((PLARGE_INTEGER)&ticks);

  00010	8d 4d f8	 lea	 ecx, DWORD PTR _ticks$[ebp]
  00013	51		 push	 ecx
  00014	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__QueryPerformanceCounter@4

; 36   : 
; 37   :     ticks = ticks * 1000 / frequency;

  0001a	6a 00		 push	 0
  0001c	68 e8 03 00 00	 push	 1000			; 000003e8H
  00021	8b 55 fc	 mov	 edx, DWORD PTR _ticks$[ebp+4]
  00024	52		 push	 edx
  00025	8b 45 f8	 mov	 eax, DWORD PTR _ticks$[ebp]
  00028	50		 push	 eax
  00029	e8 00 00 00 00	 call	 __allmul
  0002e	8b 4d f4	 mov	 ecx, DWORD PTR _frequency$[ebp+4]
  00031	51		 push	 ecx
  00032	8b 4d f0	 mov	 ecx, DWORD PTR _frequency$[ebp]
  00035	51		 push	 ecx
  00036	52		 push	 edx
  00037	50		 push	 eax
  00038	e8 00 00 00 00	 call	 __aulldiv
  0003d	89 45 f8	 mov	 DWORD PTR _ticks$[ebp], eax
  00040	89 55 fc	 mov	 DWORD PTR _ticks$[ebp+4], edx

; 38   :     return (ULONG)ticks;

  00043	8b 45 f8	 mov	 eax, DWORD PTR _ticks$[ebp]

; 39   : }

  00046	8b e5		 mov	 esp, ebp
  00048	5d		 pop	 ebp
  00049	c3		 ret	 0
?GetAccurateTickCount@@YAKXZ ENDP			; GetAccurateTickCount
PUBLIC	?GetMaxDuration@CPerf@@QAEKW4ePerfType@@@Z	; CPerf::GetMaxDuration
; Function compile flags: /Odtp
;	COMDAT ?GetMaxDuration@CPerf@@QAEKW4ePerfType@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_PerfType$ = 8						; size = 4
?GetMaxDuration@CPerf@@QAEKW4ePerfType@@@Z PROC		; CPerf::GetMaxDuration, COMDAT
; _this$ = ecx

; 358  : {

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

; 359  :     return m_PerfItems[PerfType]->GetMaxDuration();

  00007	8b 45 08	 mov	 eax, DWORD PTR _PerfType$[ebp]
  0000a	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000d	8b 0c 81	 mov	 ecx, DWORD PTR [ecx+eax*4]
  00010	e8 00 00 00 00	 call	 ?GetMaxDuration@CPerfItem@@QAEKXZ ; CPerfItem::GetMaxDuration

; 360  : }

  00015	8b e5		 mov	 esp, ebp
  00017	5d		 pop	 ebp
  00018	c2 04 00	 ret	 4
?GetMaxDuration@CPerf@@QAEKW4ePerfType@@@Z ENDP		; CPerf::GetMaxDuration
_TEXT	ENDS
PUBLIC	?GetMinDuration@CPerf@@QAEKW4ePerfType@@@Z	; CPerf::GetMinDuration
; Function compile flags: /Odtp
;	COMDAT ?GetMinDuration@CPerf@@QAEKW4ePerfType@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_PerfType$ = 8						; size = 4
?GetMinDuration@CPerf@@QAEKW4ePerfType@@@Z PROC		; CPerf::GetMinDuration, COMDAT
; _this$ = ecx

; 353  : {

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

; 354  :     return m_PerfItems[PerfType]->GetMinDuration();

  00007	8b 45 08	 mov	 eax, DWORD PTR _PerfType$[ebp]
  0000a	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000d	8b 0c 81	 mov	 ecx, DWORD PTR [ecx+eax*4]
  00010	e8 00 00 00 00	 call	 ?GetMinDuration@CPerfItem@@QAEKXZ ; CPerfItem::GetMinDuration

; 355  : }

  00015	8b e5		 mov	 esp, ebp
  00017	5d		 pop	 ebp
  00018	c2 04 00	 ret	 4
?GetMinDuration@CPerf@@QAEKW4ePerfType@@@Z ENDP		; CPerf::GetMinDuration
_TEXT	ENDS
PUBLIC	?GetAverageDuration@CPerf@@QAEKW4ePerfType@@@Z	; CPerf::GetAverageDuration
; Function compile flags: /Odtp
;	COMDAT ?GetAverageDuration@CPerf@@QAEKW4ePerfType@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_PerfType$ = 8						; size = 4
?GetAverageDuration@CPerf@@QAEKW4ePerfType@@@Z PROC	; CPerf::GetAverageDuration, COMDAT
; _this$ = ecx

; 348  : {

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

; 349  :     return m_PerfItems[PerfType]->GetAverageDuration();

  00007	8b 45 08	 mov	 eax, DWORD PTR _PerfType$[ebp]
  0000a	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000d	8b 0c 81	 mov	 ecx, DWORD PTR [ecx+eax*4]
  00010	e8 00 00 00 00	 call	 ?GetAverageDuration@CPerfItem@@QAEKXZ ; CPerfItem::GetAverageDuration

; 350  : }

  00015	8b e5		 mov	 esp, ebp
  00017	5d		 pop	 ebp
  00018	c2 04 00	 ret	 4
?GetAverageDuration@CPerf@@QAEKW4ePerfType@@@Z ENDP	; CPerf::GetAverageDuration
_TEXT	ENDS
PUBLIC	?GetNbCounts@CPerf@@QAEIW4ePerfType@@@Z		; CPerf::GetNbCounts
; Function compile flags: /Odtp
;	COMDAT ?GetNbCounts@CPerf@@QAEIW4ePerfType@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_PerfType$ = 8						; size = 4
?GetNbCounts@CPerf@@QAEIW4ePerfType@@@Z PROC		; CPerf::GetNbCounts, COMDAT
; _this$ = ecx

; 343  : {

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

; 344  :     return m_PerfItems[PerfType]->GetNbCounts();

  00007	8b 45 08	 mov	 eax, DWORD PTR _PerfType$[ebp]
  0000a	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000d	8b 0c 81	 mov	 ecx, DWORD PTR [ecx+eax*4]
  00010	e8 00 00 00 00	 call	 ?GetNbCounts@CPerfItem@@QAEIXZ ; CPerfItem::GetNbCounts

; 345  : }

  00015	8b e5		 mov	 esp, ebp
  00017	5d		 pop	 ebp
  00018	c2 04 00	 ret	 4
?GetNbCounts@CPerf@@QAEIW4ePerfType@@@Z ENDP		; CPerf::GetNbCounts
_TEXT	ENDS
PUBLIC	?GetLastDuration@CPerf@@QAEKW4ePerfType@@@Z	; CPerf::GetLastDuration
; Function compile flags: /Odtp
;	COMDAT ?GetLastDuration@CPerf@@QAEKW4ePerfType@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_PerfType$ = 8						; size = 4
?GetLastDuration@CPerf@@QAEKW4ePerfType@@@Z PROC	; CPerf::GetLastDuration, COMDAT
; _this$ = ecx

; 338  : {

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

; 339  :     return m_PerfItems[PerfType]->GetLastDuration();

  00007	8b 45 08	 mov	 eax, DWORD PTR _PerfType$[ebp]
  0000a	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000d	8b 0c 81	 mov	 ecx, DWORD PTR [ecx+eax*4]
  00010	e8 00 00 00 00	 call	 ?GetLastDuration@CPerfItem@@QAEKXZ ; CPerfItem::GetLastDuration

; 340  : }

  00015	8b e5		 mov	 esp, ebp
  00017	5d		 pop	 ebp
  00018	c2 04 00	 ret	 4
?GetLastDuration@CPerf@@QAEKW4ePerfType@@@Z ENDP	; CPerf::GetLastDuration
_TEXT	ENDS
PUBLIC	?GetName@CPerf@@QAEPB_WW4ePerfType@@@Z		; CPerf::GetName
; Function compile flags: /Odtp
;	COMDAT ?GetName@CPerf@@QAEPB_WW4ePerfType@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_PerfType$ = 8						; size = 4
?GetName@CPerf@@QAEPB_WW4ePerfType@@@Z PROC		; CPerf::GetName, COMDAT
; _this$ = ecx

; 333  : {

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

; 334  :     return m_PerfItems[PerfType]->GetName();

  00007	8b 45 08	 mov	 eax, DWORD PTR _PerfType$[ebp]
  0000a	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000d	8b 0c 81	 mov	 ecx, DWORD PTR [ecx+eax*4]
  00010	e8 00 00 00 00	 call	 ?GetName@CPerfItem@@QAEPB_WXZ ; CPerfItem::GetName

; 335  : }

  00015	8b e5		 mov	 esp, ebp
  00017	5d		 pop	 ebp
  00018	c2 04 00	 ret	 4
?GetName@CPerf@@QAEPB_WW4ePerfType@@@Z ENDP		; CPerf::GetName
_TEXT	ENDS
PUBLIC	?IsValid@CPerf@@QAEHW4ePerfType@@@Z		; CPerf::IsValid
; Function compile flags: /Odtp
;	COMDAT ?IsValid@CPerf@@QAEHW4ePerfType@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_PerfType$ = 8						; size = 4
?IsValid@CPerf@@QAEHW4ePerfType@@@Z PROC		; CPerf::IsValid, COMDAT
; _this$ = ecx

; 328  : {

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

; 329  :     return (GetNbCounts(PerfType) > 0) ? TRUE : FALSE;

  00007	8b 45 08	 mov	 eax, DWORD PTR _PerfType$[ebp]
  0000a	50		 push	 eax
  0000b	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000e	e8 00 00 00 00	 call	 ?GetNbCounts@CPerf@@QAEIW4ePerfType@@@Z ; CPerf::GetNbCounts
  00013	33 c9		 xor	 ecx, ecx
  00015	3b c8		 cmp	 ecx, eax
  00017	1b c0		 sbb	 eax, eax
  00019	f7 d8		 neg	 eax

; 330  : }

  0001b	8b e5		 mov	 esp, ebp
  0001d	5d		 pop	 ebp
  0001e	c2 04 00	 ret	 4
?IsValid@CPerf@@QAEHW4ePerfType@@@Z ENDP		; CPerf::IsValid
_TEXT	ENDS
PUBLIC	?GetNbCycles@CPerf@@QAEIH@Z			; CPerf::GetNbCycles
; Function compile flags: /Odtp
;	COMDAT ?GetNbCycles@CPerf@@QAEIH@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_TotalDuration$ = -4					; size = 4
_NbFramesPerSec$ = 8					; size = 4
?GetNbCycles@CPerf@@QAEIH@Z PROC			; CPerf::GetNbCycles, COMDAT
; _this$ = ecx

; 321  : {

  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

; 322  :     DWORD TotalDuration = GetAccurateTickCount() - m_TickStart;

  00009	e8 00 00 00 00	 call	 ?GetAccurateTickCount@@YAKXZ ; GetAccurateTickCount
  0000e	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00011	2b 41 08	 sub	 eax, DWORD PTR [ecx+8]
  00014	89 45 fc	 mov	 DWORD PTR _TotalDuration$[ebp], eax

; 323  : 
; 324  :     return TotalDuration * NbFramesPerSec / 1000;

  00017	8b 45 fc	 mov	 eax, DWORD PTR _TotalDuration$[ebp]
  0001a	0f af 45 08	 imul	 eax, DWORD PTR _NbFramesPerSec$[ebp]
  0001e	33 d2		 xor	 edx, edx
  00020	b9 e8 03 00 00	 mov	 ecx, 1000		; 000003e8H
  00025	f7 f1		 div	 ecx

; 325  : }

  00027	8b e5		 mov	 esp, ebp
  00029	5d		 pop	 ebp
  0002a	c2 04 00	 ret	 4
?GetNbCycles@CPerf@@QAEIH@Z ENDP			; CPerf::GetNbCycles
_TEXT	ENDS
PUBLIC	?GetDurationLastCycle@CPerf@@QAEHW4ePerfType@@@Z ; CPerf::GetDurationLastCycle
; Function compile flags: /Odtp
;	COMDAT ?GetDurationLastCycle@CPerf@@QAEHW4ePerfType@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_PerfType$ = 8						; size = 4
?GetDurationLastCycle@CPerf@@QAEHW4ePerfType@@@Z PROC	; CPerf::GetDurationLastCycle, COMDAT
; _this$ = ecx

; 309  : {

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

; 310  :     if (m_PerfCalculated[PerfType])

  00007	8b 45 08	 mov	 eax, DWORD PTR _PerfType$[ebp]
  0000a	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000d	83 7c 81 04 00	 cmp	 DWORD PTR [ecx+eax*4+4], 0
  00012	74 10		 je	 SHORT $LN2@GetDuratio

; 311  :     {
; 312  :         return GetLastDuration(PerfType);

  00014	8b 55 08	 mov	 edx, DWORD PTR _PerfType$[ebp]
  00017	52		 push	 edx
  00018	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0001b	e8 00 00 00 00	 call	 ?GetLastDuration@CPerf@@QAEKW4ePerfType@@@Z ; CPerf::GetLastDuration
  00020	eb 05		 jmp	 SHORT $LN3@GetDuratio

; 313  :     }
; 314  :     else

  00022	eb 03		 jmp	 SHORT $LN3@GetDuratio
$LN2@GetDuratio:

; 315  :     {
; 316  :         return -1;

  00024	83 c8 ff	 or	 eax, -1
$LN3@GetDuratio:

; 317  :     }
; 318  : }

  00027	8b e5		 mov	 esp, ebp
  00029	5d		 pop	 ebp
  0002a	c2 04 00	 ret	 4
?GetDurationLastCycle@CPerf@@QAEHW4ePerfType@@@Z ENDP	; CPerf::GetDurationLastCycle
_TEXT	ENDS
PUBLIC	?Resume@CPerf@@QAEXXZ				; CPerf::Resume
; Function compile flags: /Odtp
;	COMDAT ?Resume@CPerf@@QAEXXZ
_TEXT	SEGMENT
_this$ = -8						; size = 4
_i$140036 = -4						; size = 4
?Resume@CPerf@@QAEXXZ PROC				; CPerf::Resume, COMDAT
; _this$ = ecx

; 301  : {

  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

; 302  :     for (int i(0) ; i < PERF_TYPE_LASTONE ; ++i)

  00009	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _i$140036[ebp], 0
  00010	eb 09		 jmp	 SHORT $LN3@Resume
$LN2@Resume:
  00012	8b 45 fc	 mov	 eax, DWORD PTR _i$140036[ebp]
  00015	83 c0 01	 add	 eax, 1
  00018	89 45 fc	 mov	 DWORD PTR _i$140036[ebp], eax
$LN3@Resume:
  0001b	83 7d fc 01	 cmp	 DWORD PTR _i$140036[ebp], 1
  0001f	7d 10		 jge	 SHORT $LN4@Resume

; 303  :     {
; 304  :         m_PerfItems[i]->Resume();

  00021	8b 4d fc	 mov	 ecx, DWORD PTR _i$140036[ebp]
  00024	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00027	8b 0c 8a	 mov	 ecx, DWORD PTR [edx+ecx*4]
  0002a	e8 00 00 00 00	 call	 ?Resume@CPerfItem@@QAEXXZ ; CPerfItem::Resume
  0002f	eb e1		 jmp	 SHORT $LN2@Resume
$LN4@Resume:

; 305  :     }
; 306  : }

  00031	8b e5		 mov	 esp, ebp
  00033	5d		 pop	 ebp
  00034	c3		 ret	 0
?Resume@CPerf@@QAEXXZ ENDP				; CPerf::Resume
_TEXT	ENDS
PUBLIC	?Suspend@CPerf@@QAEXXZ				; CPerf::Suspend
; Function compile flags: /Odtp
;	COMDAT ?Suspend@CPerf@@QAEXXZ
_TEXT	SEGMENT
_this$ = -8						; size = 4
_i$140029 = -4						; size = 4
?Suspend@CPerf@@QAEXXZ PROC				; CPerf::Suspend, COMDAT
; _this$ = ecx

; 293  : {

  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

; 294  :     for (int i(0) ; i < PERF_TYPE_LASTONE ; ++i)

  00009	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _i$140029[ebp], 0
  00010	eb 09		 jmp	 SHORT $LN3@Suspend
$LN2@Suspend:
  00012	8b 45 fc	 mov	 eax, DWORD PTR _i$140029[ebp]
  00015	83 c0 01	 add	 eax, 1
  00018	89 45 fc	 mov	 DWORD PTR _i$140029[ebp], eax
$LN3@Suspend:
  0001b	83 7d fc 01	 cmp	 DWORD PTR _i$140029[ebp], 1
  0001f	7d 10		 jge	 SHORT $LN4@Suspend

; 295  :     {
; 296  :         m_PerfItems[i]->Suspend();

  00021	8b 4d fc	 mov	 ecx, DWORD PTR _i$140029[ebp]
  00024	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00027	8b 0c 8a	 mov	 ecx, DWORD PTR [edx+ecx*4]
  0002a	e8 00 00 00 00	 call	 ?Suspend@CPerfItem@@QAEXXZ ; CPerfItem::Suspend
  0002f	eb e1		 jmp	 SHORT $LN2@Suspend
$LN4@Suspend:

; 297  :     }
; 298  : }

  00031	8b e5		 mov	 esp, ebp
  00033	5d		 pop	 ebp
  00034	c3		 ret	 0
?Suspend@CPerf@@QAEXXZ ENDP				; CPerf::Suspend
_TEXT	ENDS
PUBLIC	?InitCycle@CPerf@@QAEXXZ			; CPerf::InitCycle
; Function compile flags: /Odtp
;	COMDAT ?InitCycle@CPerf@@QAEXXZ
_TEXT	SEGMENT
tv235 = -36						; size = 8
tv228 = -28						; size = 8
_this$ = -20						; size = 4
_i$140014 = -16						; size = 4
_tickDiff$140011 = -12					; size = 4
_i$140005 = -8						; size = 4
_CurrentTickCount$ = -4					; size = 4
?InitCycle@CPerf@@QAEXXZ PROC				; CPerf::InitCycle, COMDAT
; _this$ = ecx

; 207  : {

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

; 208  :     DWORD CurrentTickCount = GetAccurateTickCount();

  00009	e8 00 00 00 00	 call	 ?GetAccurateTickCount@@YAKXZ ; GetAccurateTickCount
  0000e	89 45 fc	 mov	 DWORD PTR _CurrentTickCount$[ebp], eax

; 209  : 
; 210  :     if (m_ResetRequested)

  00011	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00014	83 78 38 00	 cmp	 DWORD PTR [eax+56], 0
  00018	0f 84 c9 00 00
	00		 je	 $LN11@InitCycle

; 211  :     {
; 212  :         m_TickStart = CurrentTickCount;

  0001e	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00021	8b 55 fc	 mov	 edx, DWORD PTR _CurrentTickCount$[ebp]
  00024	89 51 08	 mov	 DWORD PTR [ecx+8], edx

; 213  :         m_TickStartLastSec = m_TickStart;

  00027	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  0002a	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  0002d	8b 51 08	 mov	 edx, DWORD PTR [ecx+8]
  00030	89 50 0c	 mov	 DWORD PTR [eax+12], edx

; 214  :         m_TotalDroppedFields = 0;

  00033	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00036	c7 40 10 00 00
	00 00		 mov	 DWORD PTR [eax+16], 0

; 215  :         m_TotalNotWaitedFields = 0;

  0003d	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00040	c7 41 14 00 00
	00 00		 mov	 DWORD PTR [ecx+20], 0

; 216  :         m_TotalLateFields = 0;

  00047	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  0004a	c7 42 18 00 00
	00 00		 mov	 DWORD PTR [edx+24], 0

; 217  :         m_TotalUsedFields = 0;

  00051	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00054	c7 40 1c 00 00
	00 00		 mov	 DWORD PTR [eax+28], 0

; 218  :         m_TotalNoFlipAtTime = 0;

  0005b	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  0005e	c7 41 20 00 00
	00 00		 mov	 DWORD PTR [ecx+32], 0

; 219  :         m_DroppedFieldsLastSec = 0;

  00065	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  00068	c7 42 24 00 00
	00 00		 mov	 DWORD PTR [edx+36], 0

; 220  :         m_NotWaitedFieldsLastSec = 0;

  0006f	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00072	c7 40 28 00 00
	00 00		 mov	 DWORD PTR [eax+40], 0

; 221  :         m_LateFieldsLastSec = 0;

  00079	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  0007c	c7 41 2c 00 00
	00 00		 mov	 DWORD PTR [ecx+44], 0

; 222  :         m_UsedFieldsLastSec = 0;

  00083	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  00086	c7 42 30 00 00
	00 00		 mov	 DWORD PTR [edx+48], 0

; 223  :         m_NoFlipAtTimeLastSec = 0;

  0008d	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00090	c7 40 34 00 00
	00 00		 mov	 DWORD PTR [eax+52], 0

; 224  :         Timing_ResetDroppedFields();

  00097	e8 00 00 00 00	 call	 ?Timing_ResetDroppedFields@@YAXXZ ; Timing_ResetDroppedFields

; 225  :         Timing_ResetNotWaitedFields();

  0009c	e8 00 00 00 00	 call	 ?Timing_ResetNotWaitedFields@@YAXXZ ; Timing_ResetNotWaitedFields

; 226  :         Timing_ResetLateFields();

  000a1	e8 00 00 00 00	 call	 ?Timing_ResetLateFields@@YAXXZ ; Timing_ResetLateFields

; 227  :         Timing_ResetUsedFields();

  000a6	e8 00 00 00 00	 call	 ?Timing_ResetUsedFields@@YAXXZ ; Timing_ResetUsedFields

; 228  :         Timing_ResetNoFlipAtTime();

  000ab	e8 00 00 00 00	 call	 ?Timing_ResetNoFlipAtTime@@YAXXZ ; Timing_ResetNoFlipAtTime

; 229  :         for (int i(0) ; i < PERF_TYPE_LASTONE ; ++i)

  000b0	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR _i$140005[ebp], 0
  000b7	eb 09		 jmp	 SHORT $LN10@InitCycle
$LN9@InitCycle:
  000b9	8b 4d f8	 mov	 ecx, DWORD PTR _i$140005[ebp]
  000bc	83 c1 01	 add	 ecx, 1
  000bf	89 4d f8	 mov	 DWORD PTR _i$140005[ebp], ecx
$LN10@InitCycle:
  000c2	83 7d f8 01	 cmp	 DWORD PTR _i$140005[ebp], 1
  000c6	7d 10		 jge	 SHORT $LN8@InitCycle

; 230  :         {
; 231  :             m_PerfItems[i]->Reset();

  000c8	8b 55 f8	 mov	 edx, DWORD PTR _i$140005[ebp]
  000cb	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  000ce	8b 0c 90	 mov	 ecx, DWORD PTR [eax+edx*4]
  000d1	e8 00 00 00 00	 call	 ?Reset@CPerfItem@@QAEXXZ ; CPerfItem::Reset

; 232  :         }

  000d6	eb e1		 jmp	 SHORT $LN9@InitCycle
$LN8@InitCycle:

; 233  :         m_ResetRequested = FALSE;

  000d8	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  000db	c7 41 38 00 00
	00 00		 mov	 DWORD PTR [ecx+56], 0
  000e2	e9 81 01 00 00	 jmp	 $LN6@InitCycle
$LN11@InitCycle:

; 234  :     }
; 235  :     else if ((m_TickStartLastSec + 1000) <= CurrentTickCount)

  000e7	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  000ea	8b 42 0c	 mov	 eax, DWORD PTR [edx+12]
  000ed	05 e8 03 00 00	 add	 eax, 1000		; 000003e8H
  000f2	3b 45 fc	 cmp	 eax, DWORD PTR _CurrentTickCount$[ebp]
  000f5	0f 87 6d 01 00
	00		 ja	 $LN6@InitCycle

; 236  :     {
; 237  :         m_TotalDroppedFields += Timing_GetDroppedFields();

  000fb	e8 00 00 00 00	 call	 ?Timing_GetDroppedFields@@YAHXZ ; Timing_GetDroppedFields
  00100	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00103	03 41 10	 add	 eax, DWORD PTR [ecx+16]
  00106	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  00109	89 42 10	 mov	 DWORD PTR [edx+16], eax

; 238  :         m_TotalNotWaitedFields += Timing_GetNotWaitedFields();

  0010c	e8 00 00 00 00	 call	 ?Timing_GetNotWaitedFields@@YAHXZ ; Timing_GetNotWaitedFields
  00111	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00114	03 41 14	 add	 eax, DWORD PTR [ecx+20]
  00117	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  0011a	89 42 14	 mov	 DWORD PTR [edx+20], eax

; 239  :         m_TotalLateFields += Timing_GetLateFields();

  0011d	e8 00 00 00 00	 call	 ?Timing_GetLateFields@@YAHXZ ; Timing_GetLateFields
  00122	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00125	03 41 18	 add	 eax, DWORD PTR [ecx+24]
  00128	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  0012b	89 42 18	 mov	 DWORD PTR [edx+24], eax

; 240  :         m_TotalUsedFields += Timing_GetUsedFields();

  0012e	e8 00 00 00 00	 call	 ?Timing_GetUsedFields@@YAHXZ ; Timing_GetUsedFields
  00133	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00136	03 41 1c	 add	 eax, DWORD PTR [ecx+28]
  00139	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  0013c	89 42 1c	 mov	 DWORD PTR [edx+28], eax

; 241  :         m_TotalNoFlipAtTime += Timing_GetNoFlipAtTime();

  0013f	e8 00 00 00 00	 call	 ?Timing_GetNoFlipAtTime@@YAHXZ ; Timing_GetNoFlipAtTime
  00144	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00147	03 41 20	 add	 eax, DWORD PTR [ecx+32]
  0014a	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  0014d	89 42 20	 mov	 DWORD PTR [edx+32], eax

; 242  : 
; 243  :         DWORD tickDiff=(CurrentTickCount - m_TickStartLastSec);

  00150	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00153	8b 4d fc	 mov	 ecx, DWORD PTR _CurrentTickCount$[ebp]
  00156	2b 48 0c	 sub	 ecx, DWORD PTR [eax+12]
  00159	89 4d f4	 mov	 DWORD PTR _tickDiff$140011[ebp], ecx

; 244  : 
; 245  :         //prevent crashing if tickDiff is invalid.
; 246  :         //this fix shoud not be nessesary any more, the problems was most
; 247  :         //likely caused by a missing emms instruction in memcpyMMX and this
; 248  :         //is now fixed
; 249  :         if(_finite(tickDiff) && !_isnan(tickDiff))

  0015c	8b 55 f4	 mov	 edx, DWORD PTR _tickDiff$140011[ebp]
  0015f	89 55 e4	 mov	 DWORD PTR tv228[ebp], edx
  00162	c7 45 e8 00 00
	00 00		 mov	 DWORD PTR tv228[ebp+4], 0
  00169	df 6d e4	 fild	 QWORD PTR tv228[ebp]
  0016c	83 ec 08	 sub	 esp, 8
  0016f	dd 1c 24	 fstp	 QWORD PTR [esp]
  00172	e8 00 00 00 00	 call	 __finite
  00177	83 c4 08	 add	 esp, 8
  0017a	85 c0		 test	 eax, eax
  0017c	0f 84 92 00 00
	00		 je	 $LN5@InitCycle
  00182	8b 45 f4	 mov	 eax, DWORD PTR _tickDiff$140011[ebp]
  00185	89 45 dc	 mov	 DWORD PTR tv235[ebp], eax
  00188	c7 45 e0 00 00
	00 00		 mov	 DWORD PTR tv235[ebp+4], 0
  0018f	df 6d dc	 fild	 QWORD PTR tv235[ebp]
  00192	83 ec 08	 sub	 esp, 8
  00195	dd 1c 24	 fstp	 QWORD PTR [esp]
  00198	e8 00 00 00 00	 call	 __isnan
  0019d	83 c4 08	 add	 esp, 8
  001a0	85 c0		 test	 eax, eax
  001a2	75 70		 jne	 SHORT $LN5@InitCycle

; 250  :         {
; 251  :             m_DroppedFieldsLastSec = Timing_GetDroppedFields() * 10000 / tickDiff;

  001a4	e8 00 00 00 00	 call	 ?Timing_GetDroppedFields@@YAHXZ ; Timing_GetDroppedFields
  001a9	69 c0 10 27 00
	00		 imul	 eax, 10000		; 00002710H
  001af	33 d2		 xor	 edx, edx
  001b1	f7 75 f4	 div	 DWORD PTR _tickDiff$140011[ebp]
  001b4	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  001b7	89 41 24	 mov	 DWORD PTR [ecx+36], eax

; 252  :             m_NotWaitedFieldsLastSec = Timing_GetNotWaitedFields() * 10000 / tickDiff;

  001ba	e8 00 00 00 00	 call	 ?Timing_GetNotWaitedFields@@YAHXZ ; Timing_GetNotWaitedFields
  001bf	69 c0 10 27 00
	00		 imul	 eax, 10000		; 00002710H
  001c5	33 d2		 xor	 edx, edx
  001c7	f7 75 f4	 div	 DWORD PTR _tickDiff$140011[ebp]
  001ca	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  001cd	89 42 28	 mov	 DWORD PTR [edx+40], eax

; 253  :             m_LateFieldsLastSec = Timing_GetLateFields() * 10000 / tickDiff;

  001d0	e8 00 00 00 00	 call	 ?Timing_GetLateFields@@YAHXZ ; Timing_GetLateFields
  001d5	69 c0 10 27 00
	00		 imul	 eax, 10000		; 00002710H
  001db	33 d2		 xor	 edx, edx
  001dd	f7 75 f4	 div	 DWORD PTR _tickDiff$140011[ebp]
  001e0	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  001e3	89 41 2c	 mov	 DWORD PTR [ecx+44], eax

; 254  :             m_UsedFieldsLastSec = Timing_GetUsedFields() * 10000 / tickDiff;

  001e6	e8 00 00 00 00	 call	 ?Timing_GetUsedFields@@YAHXZ ; Timing_GetUsedFields
  001eb	69 c0 10 27 00
	00		 imul	 eax, 10000		; 00002710H
  001f1	33 d2		 xor	 edx, edx
  001f3	f7 75 f4	 div	 DWORD PTR _tickDiff$140011[ebp]
  001f6	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  001f9	89 42 30	 mov	 DWORD PTR [edx+48], eax

; 255  :             m_NoFlipAtTimeLastSec = Timing_GetNoFlipAtTime() * 10000 / tickDiff;

  001fc	e8 00 00 00 00	 call	 ?Timing_GetNoFlipAtTime@@YAHXZ ; Timing_GetNoFlipAtTime
  00201	69 c0 10 27 00
	00		 imul	 eax, 10000		; 00002710H
  00207	33 d2		 xor	 edx, edx
  00209	f7 75 f4	 div	 DWORD PTR _tickDiff$140011[ebp]
  0020c	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  0020f	89 41 34	 mov	 DWORD PTR [ecx+52], eax

; 256  :         }
; 257  :         else

  00212	eb 32		 jmp	 SHORT $LN4@InitCycle
$LN5@InitCycle:

; 258  :         {
; 259  :             m_DroppedFieldsLastSec=-1;

  00214	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  00217	c7 42 24 ff ff
	ff ff		 mov	 DWORD PTR [edx+36], -1

; 260  :             m_NotWaitedFieldsLastSec=-1;

  0021e	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00221	c7 40 28 ff ff
	ff ff		 mov	 DWORD PTR [eax+40], -1

; 261  :             m_LateFieldsLastSec=-1;

  00228	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  0022b	c7 41 2c ff ff
	ff ff		 mov	 DWORD PTR [ecx+44], -1

; 262  :             m_UsedFieldsLastSec=-1;

  00232	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  00235	c7 42 30 ff ff
	ff ff		 mov	 DWORD PTR [edx+48], -1

; 263  :             m_NoFlipAtTimeLastSec=-1;

  0023c	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  0023f	c7 40 34 ff ff
	ff ff		 mov	 DWORD PTR [eax+52], -1
$LN4@InitCycle:

; 264  :         }
; 265  : 
; 266  :         Timing_ResetDroppedFields();

  00246	e8 00 00 00 00	 call	 ?Timing_ResetDroppedFields@@YAXXZ ; Timing_ResetDroppedFields

; 267  :         Timing_ResetNotWaitedFields();

  0024b	e8 00 00 00 00	 call	 ?Timing_ResetNotWaitedFields@@YAXXZ ; Timing_ResetNotWaitedFields

; 268  :         Timing_ResetLateFields();

  00250	e8 00 00 00 00	 call	 ?Timing_ResetLateFields@@YAXXZ ; Timing_ResetLateFields

; 269  :         Timing_ResetUsedFields();

  00255	e8 00 00 00 00	 call	 ?Timing_ResetUsedFields@@YAXXZ ; Timing_ResetUsedFields

; 270  :         Timing_ResetNoFlipAtTime();

  0025a	e8 00 00 00 00	 call	 ?Timing_ResetNoFlipAtTime@@YAXXZ ; Timing_ResetNoFlipAtTime

; 271  :         m_TickStartLastSec = CurrentTickCount;

  0025f	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00262	8b 55 fc	 mov	 edx, DWORD PTR _CurrentTickCount$[ebp]
  00265	89 51 0c	 mov	 DWORD PTR [ecx+12], edx
$LN6@InitCycle:

; 272  :     }
; 273  : 
; 274  :     for (int i(0) ; i < PERF_TYPE_LASTONE ; ++i)

  00268	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _i$140014[ebp], 0
  0026f	eb 09		 jmp	 SHORT $LN3@InitCycle
$LN2@InitCycle:
  00271	8b 45 f0	 mov	 eax, DWORD PTR _i$140014[ebp]
  00274	83 c0 01	 add	 eax, 1
  00277	89 45 f0	 mov	 DWORD PTR _i$140014[ebp], eax
$LN3@InitCycle:
  0027a	83 7d f0 01	 cmp	 DWORD PTR _i$140014[ebp], 1
  0027e	7d 10		 jge	 SHORT $LN1@InitCycle

; 275  :     {
; 276  :         m_PerfCalculated[i] = FALSE;

  00280	8b 4d f0	 mov	 ecx, DWORD PTR _i$140014[ebp]
  00283	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  00286	c7 44 8a 04 00
	00 00 00	 mov	 DWORD PTR [edx+ecx*4+4], 0
  0028e	eb e1		 jmp	 SHORT $LN2@InitCycle
$LN1@InitCycle:

; 277  :     }
; 278  : }

  00290	8b e5		 mov	 esp, ebp
  00292	5d		 pop	 ebp
  00293	c3		 ret	 0
?InitCycle@CPerf@@QAEXXZ ENDP				; CPerf::InitCycle
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ??_GCPerfItem@@QAEPAXI@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
___flags$ = 8						; size = 4
??_GCPerfItem@@QAEPAXI@Z PROC				; CPerfItem::`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	 ??1CPerfItem@@QAE@XZ	; CPerfItem::~CPerfItem
  0000f	8b 45 08	 mov	 eax, DWORD PTR ___flags$[ebp]
  00012	83 e0 01	 and	 eax, 1
  00015	74 0c		 je	 SHORT $LN1@scalar@37
  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@37:
  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
??_GCPerfItem@@QAEPAXI@Z ENDP				; CPerfItem::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??1CPerf@@QAE@XZ				; CPerf::~CPerf
; Function compile flags: /Odtp
;	COMDAT ??1CPerf@@QAE@XZ
_TEXT	SEGMENT
tv72 = -20						; size = 4
_this$ = -16						; size = 4
$T307376 = -12						; size = 4
$T307375 = -8						; size = 4
_i$139987 = -4						; size = 4
??1CPerf@@QAE@XZ PROC					; CPerf::~CPerf, COMDAT
; _this$ = ecx

; 194  : {

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

; 195  :     for (int i(0) ; i < PERF_TYPE_LASTONE ; ++i)

  00009	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _i$139987[ebp], 0
  00010	eb 09		 jmp	 SHORT $LN3@CPerf@3
$LN2@CPerf@3:
  00012	8b 45 fc	 mov	 eax, DWORD PTR _i$139987[ebp]
  00015	83 c0 01	 add	 eax, 1
  00018	89 45 fc	 mov	 DWORD PTR _i$139987[ebp], eax
$LN3@CPerf@3:
  0001b	83 7d fc 01	 cmp	 DWORD PTR _i$139987[ebp], 1
  0001f	7d 30		 jge	 SHORT $LN4@CPerf@3

; 196  :     {
; 197  :         delete m_PerfItems[i];

  00021	8b 4d fc	 mov	 ecx, DWORD PTR _i$139987[ebp]
  00024	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  00027	8b 04 8a	 mov	 eax, DWORD PTR [edx+ecx*4]
  0002a	89 45 f4	 mov	 DWORD PTR $T307376[ebp], eax
  0002d	8b 4d f4	 mov	 ecx, DWORD PTR $T307376[ebp]
  00030	89 4d f8	 mov	 DWORD PTR $T307375[ebp], ecx
  00033	83 7d f8 00	 cmp	 DWORD PTR $T307375[ebp], 0
  00037	74 0f		 je	 SHORT $LN6@CPerf@3
  00039	6a 01		 push	 1
  0003b	8b 4d f8	 mov	 ecx, DWORD PTR $T307375[ebp]
  0003e	e8 00 00 00 00	 call	 ??_GCPerfItem@@QAEPAXI@Z
  00043	89 45 ec	 mov	 DWORD PTR tv72[ebp], eax
  00046	eb 07		 jmp	 SHORT $LN7@CPerf@3
$LN6@CPerf@3:
  00048	c7 45 ec 00 00
	00 00		 mov	 DWORD PTR tv72[ebp], 0
$LN7@CPerf@3:

; 198  :     }

  0004f	eb c1		 jmp	 SHORT $LN2@CPerf@3
$LN4@CPerf@3:

; 199  : }

  00051	8b e5		 mov	 esp, ebp
  00053	5d		 pop	 ebp
  00054	c3		 ret	 0
??1CPerf@@QAE@XZ ENDP					; CPerf::~CPerf
_TEXT	ENDS
PUBLIC	??0CPerf@@QAE@XZ				; CPerf::CPerf
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??0CPerf@@QAE@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??0CPerf@@QAE@XZ$0
__ehfuncinfo$??0CPerf@@QAE@XZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$??0CPerf@@QAE@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??0CPerf@@QAE@XZ
_TEXT	SEGMENT
tv78 = -32						; size = 4
_this$ = -28						; size = 4
$T307382 = -24						; size = 4
$T307381 = -20						; size = 4
_i$139976 = -16						; size = 4
__$EHRec$ = -12						; size = 12
??0CPerf@@QAE@XZ PROC					; CPerf::CPerf, COMDAT
; _this$ = ecx

; 172  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??0CPerf@@QAE@XZ
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	83 ec 14	 sub	 esp, 20			; 00000014H
  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 e4	 mov	 DWORD PTR _this$[ebp], ecx

; 173  :     for (int i(0) ; i < PERF_TYPE_LASTONE ; ++i)

  00028	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _i$139976[ebp], 0
  0002f	eb 09		 jmp	 SHORT $LN3@CPerf@4
$LN2@CPerf@4:
  00031	8b 45 f0	 mov	 eax, DWORD PTR _i$139976[ebp]
  00034	83 c0 01	 add	 eax, 1
  00037	89 45 f0	 mov	 DWORD PTR _i$139976[ebp], eax
$LN3@CPerf@4:
  0003a	83 7d f0 01	 cmp	 DWORD PTR _i$139976[ebp], 1
  0003e	7d 62		 jge	 SHORT $LN1@CPerf@4

; 174  :     {
; 175  :         m_PerfItems[i] = new CPerfItem(PerfNames[i]);

  00040	6a 24		 push	 36			; 00000024H
  00042	e8 00 00 00 00	 call	 ??2@YAPAXI@Z		; operator new
  00047	83 c4 04	 add	 esp, 4
  0004a	89 45 e8	 mov	 DWORD PTR $T307382[ebp], eax
  0004d	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  00054	83 7d e8 00	 cmp	 DWORD PTR $T307382[ebp], 0
  00058	74 18		 je	 SHORT $LN6@CPerf@4
  0005a	8b 4d f0	 mov	 ecx, DWORD PTR _i$139976[ebp]
  0005d	8b 14 8d 00 00
	00 00		 mov	 edx, DWORD PTR _PerfNames[ecx*4]
  00064	52		 push	 edx
  00065	8b 4d e8	 mov	 ecx, DWORD PTR $T307382[ebp]
  00068	e8 00 00 00 00	 call	 ??0CPerfItem@@QAE@PB_W@Z ; CPerfItem::CPerfItem
  0006d	89 45 e0	 mov	 DWORD PTR tv78[ebp], eax
  00070	eb 07		 jmp	 SHORT $LN7@CPerf@4
$LN6@CPerf@4:
  00072	c7 45 e0 00 00
	00 00		 mov	 DWORD PTR tv78[ebp], 0
$LN7@CPerf@4:
  00079	8b 45 e0	 mov	 eax, DWORD PTR tv78[ebp]
  0007c	89 45 ec	 mov	 DWORD PTR $T307381[ebp], eax
  0007f	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  00086	8b 4d f0	 mov	 ecx, DWORD PTR _i$139976[ebp]
  00089	8b 55 e4	 mov	 edx, DWORD PTR _this$[ebp]
  0008c	8b 45 ec	 mov	 eax, DWORD PTR $T307381[ebp]
  0008f	89 04 8a	 mov	 DWORD PTR [edx+ecx*4], eax

; 176  :         m_PerfCalculated[i] = FALSE;

  00092	8b 4d f0	 mov	 ecx, DWORD PTR _i$139976[ebp]
  00095	8b 55 e4	 mov	 edx, DWORD PTR _this$[ebp]
  00098	c7 44 8a 04 00
	00 00 00	 mov	 DWORD PTR [edx+ecx*4+4], 0

; 177  :     }

  000a0	eb 8f		 jmp	 SHORT $LN2@CPerf@4
$LN1@CPerf@4:

; 178  :     m_TickStart = 0;

  000a2	8b 45 e4	 mov	 eax, DWORD PTR _this$[ebp]
  000a5	c7 40 08 00 00
	00 00		 mov	 DWORD PTR [eax+8], 0

; 179  :     m_TickStartLastSec = m_TickStart;

  000ac	8b 4d e4	 mov	 ecx, DWORD PTR _this$[ebp]
  000af	8b 55 e4	 mov	 edx, DWORD PTR _this$[ebp]
  000b2	8b 42 08	 mov	 eax, DWORD PTR [edx+8]
  000b5	89 41 0c	 mov	 DWORD PTR [ecx+12], eax

; 180  :     m_TotalDroppedFields = 0;

  000b8	8b 4d e4	 mov	 ecx, DWORD PTR _this$[ebp]
  000bb	c7 41 10 00 00
	00 00		 mov	 DWORD PTR [ecx+16], 0

; 181  :     m_TotalNotWaitedFields = 0;

  000c2	8b 55 e4	 mov	 edx, DWORD PTR _this$[ebp]
  000c5	c7 42 14 00 00
	00 00		 mov	 DWORD PTR [edx+20], 0

; 182  :     m_TotalLateFields = 0;

  000cc	8b 45 e4	 mov	 eax, DWORD PTR _this$[ebp]
  000cf	c7 40 18 00 00
	00 00		 mov	 DWORD PTR [eax+24], 0

; 183  :     m_TotalUsedFields = 0;

  000d6	8b 4d e4	 mov	 ecx, DWORD PTR _this$[ebp]
  000d9	c7 41 1c 00 00
	00 00		 mov	 DWORD PTR [ecx+28], 0

; 184  :     m_TotalNoFlipAtTime = 0;

  000e0	8b 55 e4	 mov	 edx, DWORD PTR _this$[ebp]
  000e3	c7 42 20 00 00
	00 00		 mov	 DWORD PTR [edx+32], 0

; 185  :     m_DroppedFieldsLastSec = 0;

  000ea	8b 45 e4	 mov	 eax, DWORD PTR _this$[ebp]
  000ed	c7 40 24 00 00
	00 00		 mov	 DWORD PTR [eax+36], 0

; 186  :     m_NotWaitedFieldsLastSec = 0;

  000f4	8b 4d e4	 mov	 ecx, DWORD PTR _this$[ebp]
  000f7	c7 41 28 00 00
	00 00		 mov	 DWORD PTR [ecx+40], 0

; 187  :     m_LateFieldsLastSec = 0;

  000fe	8b 55 e4	 mov	 edx, DWORD PTR _this$[ebp]
  00101	c7 42 2c 00 00
	00 00		 mov	 DWORD PTR [edx+44], 0

; 188  :     m_UsedFieldsLastSec = 0;

  00108	8b 45 e4	 mov	 eax, DWORD PTR _this$[ebp]
  0010b	c7 40 30 00 00
	00 00		 mov	 DWORD PTR [eax+48], 0

; 189  :     m_NoFlipAtTimeLastSec = 0;

  00112	8b 4d e4	 mov	 ecx, DWORD PTR _this$[ebp]
  00115	c7 41 34 00 00
	00 00		 mov	 DWORD PTR [ecx+52], 0

; 190  :     m_ResetRequested = TRUE;

  0011c	8b 55 e4	 mov	 edx, DWORD PTR _this$[ebp]
  0011f	c7 42 38 01 00
	00 00		 mov	 DWORD PTR [edx+56], 1

; 191  : }

  00126	8b 45 e4	 mov	 eax, DWORD PTR _this$[ebp]
  00129	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  0012c	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  00133	59		 pop	 ecx
  00134	8b e5		 mov	 esp, ebp
  00136	5d		 pop	 ebp
  00137	c3		 ret	 0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??0CPerf@@QAE@XZ$0:
  00000	8b 45 e8	 mov	 eax, DWORD PTR $T307382[ebp]
  00003	50		 push	 eax
  00004	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00009	59		 pop	 ecx
  0000a	c3		 ret	 0
__ehhandler$??0CPerf@@QAE@XZ:
  0000b	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  0000f	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  00012	8b 4a e8	 mov	 ecx, DWORD PTR [edx-24]
  00015	33 c8		 xor	 ecx, eax
  00017	e8 00 00 00 00	 call	 @__security_check_cookie@4
  0001c	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$??0CPerf@@QAE@XZ
  00021	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??0CPerf@@QAE@XZ ENDP					; CPerf::CPerf
PUBLIC	?StopCount@CPerfItem@@QAEXXZ			; CPerfItem::StopCount
; Function compile flags: /Odtp
;	COMDAT ?StopCount@CPerfItem@@QAEXXZ
_TEXT	SEGMENT
_this$ = -8						; size = 4
_Duration$ = -4						; size = 4
?StopCount@CPerfItem@@QAEXXZ PROC			; CPerfItem::StopCount, COMDAT
; _this$ = ecx

; 100  : {

  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

; 101  :     DWORD Duration;
; 102  : 
; 103  :     if (!m_IsCounting || m_SuspendCounter > 0)

  00009	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	83 78 20 00	 cmp	 DWORD PTR [eax+32], 0
  00010	74 09		 je	 SHORT $LN3@StopCount@2
  00012	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00015	83 79 18 00	 cmp	 DWORD PTR [ecx+24], 0
  00019	76 02		 jbe	 SHORT $LN4@StopCount@2
$LN3@StopCount@2:

; 104  :     {
; 105  :         return;

  0001b	eb 71		 jmp	 SHORT $LN5@StopCount@2
$LN4@StopCount@2:

; 106  :     }
; 107  : 
; 108  :     Duration = GetAccurateTickCount() - m_TickStart;

  0001d	e8 00 00 00 00	 call	 ?GetAccurateTickCount@@YAKXZ ; GetAccurateTickCount
  00022	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00025	2b 42 1c	 sub	 eax, DWORD PTR [edx+28]
  00028	89 45 fc	 mov	 DWORD PTR _Duration$[ebp], eax

; 109  :     m_LastDuration = Duration;

  0002b	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0002e	8b 4d fc	 mov	 ecx, DWORD PTR _Duration$[ebp]
  00031	89 48 04	 mov	 DWORD PTR [eax+4], ecx

; 110  :     m_SumDuration += Duration;

  00034	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00037	8b 42 08	 mov	 eax, DWORD PTR [edx+8]
  0003a	03 45 fc	 add	 eax, DWORD PTR _Duration$[ebp]
  0003d	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00040	89 41 08	 mov	 DWORD PTR [ecx+8], eax

; 111  :     ++m_NbCounts;

  00043	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00046	8b 42 0c	 mov	 eax, DWORD PTR [edx+12]
  00049	83 c0 01	 add	 eax, 1
  0004c	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0004f	89 41 0c	 mov	 DWORD PTR [ecx+12], eax

; 112  :     if (Duration < m_MinDuration)

  00052	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00055	8b 45 fc	 mov	 eax, DWORD PTR _Duration$[ebp]
  00058	3b 42 10	 cmp	 eax, DWORD PTR [edx+16]
  0005b	73 09		 jae	 SHORT $LN2@StopCount@2

; 113  :     {
; 114  :         m_MinDuration = Duration;

  0005d	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00060	8b 55 fc	 mov	 edx, DWORD PTR _Duration$[ebp]
  00063	89 51 10	 mov	 DWORD PTR [ecx+16], edx
$LN2@StopCount@2:

; 115  :     }
; 116  :     if (Duration > m_MaxDuration)

  00066	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  00069	8b 4d fc	 mov	 ecx, DWORD PTR _Duration$[ebp]
  0006c	3b 48 14	 cmp	 ecx, DWORD PTR [eax+20]
  0006f	76 09		 jbe	 SHORT $LN1@StopCount@2

; 117  :     {
; 118  :         m_MaxDuration = Duration;

  00071	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00074	8b 45 fc	 mov	 eax, DWORD PTR _Duration$[ebp]
  00077	89 42 14	 mov	 DWORD PTR [edx+20], eax
$LN1@StopCount@2:

; 119  :     }
; 120  :     m_TickStart = 0;

  0007a	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0007d	c7 41 1c 00 00
	00 00		 mov	 DWORD PTR [ecx+28], 0

; 121  :     m_IsCounting = FALSE;

  00084	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00087	c7 42 20 00 00
	00 00		 mov	 DWORD PTR [edx+32], 0
$LN5@StopCount@2:

; 122  : }

  0008e	8b e5		 mov	 esp, ebp
  00090	5d		 pop	 ebp
  00091	c3		 ret	 0
?StopCount@CPerfItem@@QAEXXZ ENDP			; CPerfItem::StopCount
_TEXT	ENDS
PUBLIC	?StartCount@CPerfItem@@QAEXXZ			; CPerfItem::StartCount
; Function compile flags: /Odtp
;	COMDAT ?StartCount@CPerfItem@@QAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?StartCount@CPerfItem@@QAEXXZ PROC			; CPerfItem::StartCount, COMDAT
; _this$ = ecx

; 91   : {

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

; 92   :     if(m_SuspendCounter <= 0)

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	83 78 18 00	 cmp	 DWORD PTR [eax+24], 0
  0000e	77 15		 ja	 SHORT $LN2@StartCount

; 93   :     {
; 94   :         m_TickStart = GetAccurateTickCount();

  00010	e8 00 00 00 00	 call	 ?GetAccurateTickCount@@YAKXZ ; GetAccurateTickCount
  00015	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00018	89 41 1c	 mov	 DWORD PTR [ecx+28], eax

; 95   :         m_IsCounting = TRUE;

  0001b	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0001e	c7 42 20 01 00
	00 00		 mov	 DWORD PTR [edx+32], 1
$LN2@StartCount:

; 96   :     }
; 97   : }

  00025	8b e5		 mov	 esp, ebp
  00027	5d		 pop	 ebp
  00028	c3		 ret	 0
?StartCount@CPerfItem@@QAEXXZ ENDP			; CPerfItem::StartCount
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\smartptr.h
;	COMDAT ??1?$SmartPtr@VCPerf@@@@QAE@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
??1?$SmartPtr@VCPerf@@@@QAE@XZ PROC			; SmartPtr<CPerf>::~SmartPtr<CPerf>, COMDAT
; _this$ = ecx

; 105  :     {

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

; 106  :         Clear();

  00007	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000a	e8 00 00 00 00	 call	 ?Clear@?$SmartPtr@VCPerf@@@@QAEXXZ ; SmartPtr<CPerf>::Clear

; 107  :     }

  0000f	8b e5		 mov	 esp, ebp
  00011	5d		 pop	 ebp
  00012	c3		 ret	 0
??1?$SmartPtr@VCPerf@@@@QAE@XZ ENDP			; SmartPtr<CPerf>::~SmartPtr<CPerf>
_TEXT	ENDS
PUBLIC	?StopCount@CPerf@@QAEXW4ePerfType@@@Z		; CPerf::StopCount
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\perf.cpp
;	COMDAT ?StopCount@CPerf@@QAEXW4ePerfType@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_PerfType$ = 8						; size = 4
?StopCount@CPerf@@QAEXW4ePerfType@@@Z PROC		; CPerf::StopCount, COMDAT
; _this$ = ecx

; 286  : {

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

; 287  :     m_PerfItems[PerfType]->StopCount();

  00007	8b 45 08	 mov	 eax, DWORD PTR _PerfType$[ebp]
  0000a	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000d	8b 0c 81	 mov	 ecx, DWORD PTR [ecx+eax*4]
  00010	e8 00 00 00 00	 call	 ?StopCount@CPerfItem@@QAEXXZ ; CPerfItem::StopCount

; 288  :     m_PerfCalculated[PerfType] = TRUE;

  00015	8b 55 08	 mov	 edx, DWORD PTR _PerfType$[ebp]
  00018	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0001b	c7 44 90 04 01
	00 00 00	 mov	 DWORD PTR [eax+edx*4+4], 1

; 289  : }

  00023	8b e5		 mov	 esp, ebp
  00025	5d		 pop	 ebp
  00026	c2 04 00	 ret	 4
?StopCount@CPerf@@QAEXW4ePerfType@@@Z ENDP		; CPerf::StopCount
_TEXT	ENDS
PUBLIC	?StartCount@CPerf@@QAEXW4ePerfType@@@Z		; CPerf::StartCount
; Function compile flags: /Odtp
;	COMDAT ?StartCount@CPerf@@QAEXW4ePerfType@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_PerfType$ = 8						; size = 4
?StartCount@CPerf@@QAEXW4ePerfType@@@Z PROC		; CPerf::StartCount, COMDAT
; _this$ = ecx

; 281  : {

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

; 282  :     m_PerfItems[PerfType]->StartCount();

  00007	8b 45 08	 mov	 eax, DWORD PTR _PerfType$[ebp]
  0000a	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000d	8b 0c 81	 mov	 ecx, DWORD PTR [ecx+eax*4]
  00010	e8 00 00 00 00	 call	 ?StartCount@CPerfItem@@QAEXXZ ; CPerfItem::StartCount

; 283  : }

  00015	8b e5		 mov	 esp, ebp
  00017	5d		 pop	 ebp
  00018	c2 04 00	 ret	 4
?StartCount@CPerf@@QAEXW4ePerfType@@@Z ENDP		; CPerf::StartCount
; Function compile flags: /Odtp
;	COMDAT ??__EpPerf@@YAXXZ
text$yc	SEGMENT
??__EpPerf@@YAXXZ PROC					; `dynamic initializer for 'pPerf'', COMDAT

; 59   : SmartPtr<CPerf> pPerf;

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	b9 00 00 00 00	 mov	 ecx, OFFSET ?pPerf@@3V?$SmartPtr@VCPerf@@@@A ; pPerf
  00008	e8 00 00 00 00	 call	 ??0?$SmartPtr@VCPerf@@@@QAE@XZ ; SmartPtr<CPerf>::SmartPtr<CPerf>
  0000d	68 00 00 00 00	 push	 OFFSET ??__FpPerf@@YAXXZ ; `dynamic atexit destructor for 'pPerf''
  00012	e8 00 00 00 00	 call	 _atexit
  00017	83 c4 04	 add	 esp, 4
  0001a	5d		 pop	 ebp
  0001b	c3		 ret	 0
??__EpPerf@@YAXXZ ENDP					; `dynamic initializer for 'pPerf''
; Function compile flags: /Odtp
;	COMDAT ??__FpPerf@@YAXXZ
text$yd	SEGMENT
??__FpPerf@@YAXXZ PROC					; `dynamic atexit destructor for 'pPerf'', COMDAT
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	b9 00 00 00 00	 mov	 ecx, OFFSET ?pPerf@@3V?$SmartPtr@VCPerf@@@@A ; pPerf
  00008	e8 00 00 00 00	 call	 ??1?$SmartPtr@VCPerf@@@@QAE@XZ ; SmartPtr<CPerf>::~SmartPtr<CPerf>
  0000d	5d		 pop	 ebp
  0000e	c3		 ret	 0
??__FpPerf@@YAXXZ ENDP					; `dynamic atexit destructor for 'pPerf''
PUBLIC	?pPerf@@3V?$SmartPtr@VCPerf@@@@A		; pPerf
?pPerf@@3V?$SmartPtr@VCPerf@@@@A DQ 01H DUP (?)		; pPerf
_pPerf$initializer$ DD FLAT:??__EpPerf@@YAXXZ
END
