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

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

INCLUDELIB OLDNAMES

PUBLIC	??4?$SmartPtr@VIExternalIFDemodulator@@@@QAEAAV0@ABV0@@Z ; SmartPtr<IExternalIFDemodulator>::operator=
PUBLIC	?size@?$vector@UTTDA9887FormatModes@@V?$allocator@UTTDA9887FormatModes@@@std@@@std@@QBEIXZ ; std::vector<TTDA9887FormatModes,std::allocator<TTDA9887FormatModes> >::size
PUBLIC	??A?$vector@UTTDA9887FormatModes@@V?$allocator@UTTDA9887FormatModes@@@std@@@std@@QAEAAUTTDA9887FormatModes@@I@Z ; std::vector<TTDA9887FormatModes,std::allocator<TTDA9887FormatModes> >::operator[]
PUBLIC	?IsValid@?$SmartPtr@VII2CTuner@@@@QBEHXZ	; SmartPtr<II2CTuner>::IsValid
PUBLIC	??0?$SmartPtr@VCTDA9887Ex@@@@QAE@ABV0@@Z	; SmartPtr<CTDA9887Ex>::SmartPtr<CTDA9887Ex>
PUBLIC	?acquire@?$SmartPtr@VCTDA9887Ex@@@@AAEXPAUCounter@@@Z ; SmartPtr<CTDA9887Ex>::acquire
PUBLIC	??0?$SmartPtr@VCTDA9887Ex@@@@QAE@PAVCTDA9887Ex@@PAUCounter@@@Z ; SmartPtr<CTDA9887Ex>::SmartPtr<CTDA9887Ex>
PUBLIC	??C?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@XZ ; SmartPtr<CTDA9887Ex>::operator->
PUBLIC	?IsValid@?$SmartPtr@VCTDA9887Ex@@@@QBEHXZ	; SmartPtr<CTDA9887Ex>::IsValid
PUBLIC	??0?$SmartPtr@VIExternalIFDemodulator@@@@QAE@PAVIExternalIFDemodulator@@PAUCounter@@@Z ; SmartPtr<IExternalIFDemodulator>::SmartPtr<IExternalIFDemodulator>
PUBLIC	?Clear@?$SmartPtr@VCTDA9887Ex@@@@QAEXXZ		; SmartPtr<CTDA9887Ex>::Clear
PUBLIC	??1?$SmartPtr@VCTDA9887Ex@@@@QAE@XZ		; SmartPtr<CTDA9887Ex>::~SmartPtr<CTDA9887Ex>
PUBLIC	?GetRawPointer@?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@XZ ; SmartPtr<CTDA9887Ex>::GetRawPointer
PUBLIC	?GetCounter@?$SmartPtr@VCTDA9887Ex@@@@QBEPAUCounter@@XZ ; SmartPtr<CTDA9887Ex>::GetCounter
PUBLIC	??$DynamicPtrCast@VIExternalIFDemodulator@@VCTDA9887Ex@@@@YA?AV?$SmartPtr@VIExternalIFDemodulator@@@@V?$SmartPtr@VCTDA9887Ex@@@@@Z ; DynamicPtrCast<IExternalIFDemodulator,CTDA9887Ex>
PUBLIC	??_C@_1CG@JEGEDJHO@?$AAH?$AAa?$AAu?$AAp?$AAp?$AAa?$AAu?$AAg?$AAe?$AA?5?$AAW?$AAi?$AAn?$AAT?$AAV?$AA?5?$AA3?$AA4?$AA?$AA@ ; `string'
PUBLIC	??_C@_1FO@EMLJGNIE@?$AAA?$AAu?$AAt?$AAo?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAT?$AAu?$AAn?$AAe?$AAr?$AA?3?$AA?5?$AAH?$AAa?$AAu?$AAp?$AAp?$AAa?$AAu?$AAg?$AAe?$AA?5?$AAC?$AAX?$AA2?$AA3?$AA8@ ; `string'
PUBLIC	??_C@_1HC@JLJFKAFK@?$AAA?$AAu?$AAt?$AAo?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAT?$AAu?$AAn?$AAe?$AAr?$AA?3?$AA?5?$AAH?$AAa?$AAu?$AAp?$AAp?$AAa?$AAu?$AAg?$AAe?$AA?5?$AAC?$AAX?$AA2?$AA3?$AA8@ ; `string'
;	COMDAT ??_C@_1HC@JLJFKAFK@?$AAA?$AAu?$AAt?$AAo?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAT?$AAu?$AAn?$AAe?$AAr?$AA?3?$AA?5?$AAH?$AAa?$AAu?$AAp?$AAp?$AAa?$AAu?$AAg?$AAe?$AA?5?$AAC?$AAX?$AA2?$AA3?$AA8@
CONST	SEGMENT
??_C@_1HC@JLJFKAFK@?$AAA?$AAu?$AAt?$AAo?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAT?$AAu?$AAn?$AAe?$AAr?$AA?3?$AA?5?$AAH?$AAa?$AAu?$AAp?$AAp?$AAa?$AAu?$AAg?$AAe?$AA?5?$AAC?$AAX?$AA2?$AA3?$AA8@ DB 'A'
	DB	00H, 'u', 00H, 't', 00H, 'o', 00H, 'D', 00H, 'e', 00H, 't', 00H
	DB	'e', 00H, 'c', 00H, 't', 00H, 'T', 00H, 'u', 00H, 'n', 00H, 'e'
	DB	00H, 'r', 00H, ':', 00H, ' ', 00H, 'H', 00H, 'a', 00H, 'u', 00H
	DB	'p', 00H, 'p', 00H, 'a', 00H, 'u', 00H, 'g', 00H, 'e', 00H, ' '
	DB	00H, 'C', 00H, 'X', 00H, '2', 00H, '3', 00H, '8', 00H, '8', 00H
	DB	'x', 00H, ' ', 00H, 'C', 00H, 'a', 00H, 'r', 00H, 'd', 00H, '.'
	DB	00H, ' ', 00H, 'T', 00H, 'u', 00H, 'n', 00H, 'e', 00H, 'r', 00H
	DB	'I', 00H, 'd', 00H, ':', 00H, ' ', 00H, '0', 00H, 'x', 00H, '%'
	DB	00H, '0', 00H, '2', 00H, 'X', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1FO@EMLJGNIE@?$AAA?$AAu?$AAt?$AAo?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAT?$AAu?$AAn?$AAe?$AAr?$AA?3?$AA?5?$AAH?$AAa?$AAu?$AAp?$AAp?$AAa?$AAu?$AAg?$AAe?$AA?5?$AAC?$AAX?$AA2?$AA3?$AA8@
CONST	SEGMENT
??_C@_1FO@EMLJGNIE@?$AAA?$AAu?$AAt?$AAo?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAT?$AAu?$AAn?$AAe?$AAr?$AA?3?$AA?5?$AAH?$AAa?$AAu?$AAp?$AAp?$AAa?$AAu?$AAg?$AAe?$AA?5?$AAC?$AAX?$AA2?$AA3?$AA8@ DB 'A'
	DB	00H, 'u', 00H, 't', 00H, 'o', 00H, 'D', 00H, 'e', 00H, 't', 00H
	DB	'e', 00H, 'c', 00H, 't', 00H, 'T', 00H, 'u', 00H, 'n', 00H, 'e'
	DB	00H, 'r', 00H, ':', 00H, ' ', 00H, 'H', 00H, 'a', 00H, 'u', 00H
	DB	'p', 00H, 'p', 00H, 'a', 00H, 'u', 00H, 'g', 00H, 'e', 00H, ' '
	DB	00H, 'C', 00H, 'X', 00H, '2', 00H, '3', 00H, '8', 00H, '8', 00H
	DB	'x', 00H, ' ', 00H, 'C', 00H, 'a', 00H, 'r', 00H, 'd', 00H, ' '
	DB	00H, 'f', 00H, 'a', 00H, 'i', 00H, 'l', 00H, 's', 00H, '.', 00H
	DB	00H, 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_1CG@JEGEDJHO@?$AAH?$AAa?$AAu?$AAp?$AAp?$AAa?$AAu?$AAg?$AAe?$AA?5?$AAW?$AAi?$AAn?$AAT?$AAV?$AA?5?$AA3?$AA4?$AA?$AA@
CONST	SEGMENT
??_C@_1CG@JEGEDJHO@?$AAH?$AAa?$AAu?$AAp?$AAp?$AAa?$AAu?$AAg?$AAe?$AA?5?$AAW?$AAi?$AAn?$AAT?$AAV?$AA?5?$AA3?$AA4?$AA?$AA@ DB 'H'
	DB	00H, 'a', 00H, 'u', 00H, 'p', 00H, 'p', 00H, 'a', 00H, 'u', 00H
	DB	'g', 00H, 'e', 00H, ' ', 00H, 'W', 00H, 'i', 00H, 'n', 00H, 'T'
	DB	00H, 'V', 00H, ' ', 00H, '3', 00H, '4', 00H, 00H, 00H ; `string'
	ORG $+4
_m_TunerHauppaugeAnalog DD 00H
	DD	00H
	DD	00H
	DD	04H
	DD	03H
	DD	02H
	DD	01H
	DD	019H
	DD	04H
	DD	03H
	DD	02H
	DD	01H
	DD	019H
	DD	06H
	DD	05H
	DD	07H
	DD	04H
	DD	03H
	DD	02H
	DD	01H
	DD	019H
	DD	04H
	DD	03H
	DD	02H
	DD	01H
	DD	019H
	DD	08H
	DD	00H
	DD	00H
	DD	0eH
	DD	00H
	DD	00H
	DD	00H
	DD	017H
	DD	01aH
	DD	014H
	DD	02H
	DD	02H
	DD	02H
	DD	00H
	DD	00H
	DD	015H
	DD	016H
	DD	018H
	DD	020H
	DD	00H
	DD	01dH
	DD	01eH
	DD	01fH
	DD	01bH
	DD	01cH
	DD	00H
	DD	00H
	DD	00H
	DD	00H
	DD	00H
	DD	033H
	DD	029H
	DD	033H
	DD	00H
	DD	029H
	DD	00H
	DD	00H
	DD	00H
	DD	00H
	DD	027H
	DD	025H
	DD	00H
	DD	034H
	DD	00H
	DD	00H
	DD	00H
	DD	00H
	DD	00H
	DD	00H
	DD	00H
	DD	00H
	DD	00H
	DD	00H
	DD	00H
	DD	00H
	DD	00H
	DD	02aH
	DD	028H
	DD	028H
	DD	030H
	DD	00H
	DD	00H
	DD	00H
	DD	029H
	DD	00H
	DD	039H
	DD	03aH
	DD	00H
	DD	00H
	DD	00H
	DD	00H
	DD	038H
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\smartptr.h
;	COMDAT ?GetCounter@?$SmartPtr@VCTDA9887Ex@@@@QBEPAUCounter@@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetCounter@?$SmartPtr@VCTDA9887Ex@@@@QBEPAUCounter@@XZ PROC ; SmartPtr<CTDA9887Ex>::GetCounter, COMDAT
; _this$ = ecx

; 233  :     {

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

; 234  :         if (counter) return counter;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	83 78 04 00	 cmp	 DWORD PTR [eax+4], 0
  0000e	74 08		 je	 SHORT $LN1@GetCounter@115
  00010	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00013	8b 41 04	 mov	 eax, DWORD PTR [ecx+4]
  00016	eb 02		 jmp	 SHORT $LN2@GetCounter@115
$LN1@GetCounter@115:

; 235  :         return 0;

  00018	33 c0		 xor	 eax, eax
$LN2@GetCounter@115:

; 236  :     }

  0001a	8b e5		 mov	 esp, ebp
  0001c	5d		 pop	 ebp
  0001d	c3		 ret	 0
?GetCounter@?$SmartPtr@VCTDA9887Ex@@@@QBEPAUCounter@@XZ ENDP ; SmartPtr<CTDA9887Ex>::GetCounter
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?acquire@?$SmartPtr@VCTDA9887Ex@@@@AAEXPAUCounter@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_c$ = 8							; size = 4
?acquire@?$SmartPtr@VCTDA9887Ex@@@@AAEXPAUCounter@@@Z PROC ; SmartPtr<CTDA9887Ex>::acquire, COMDAT
; _this$ = ecx

; 262  :     {

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

; 263  :         counter = c;

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

; 264  :         if (c)

  00010	83 7d 08 00	 cmp	 DWORD PTR _c$[ebp], 0
  00014	74 0d		 je	 SHORT $LN2@acquire@125

; 265  :         {
; 266  :             (c->count)++;

  00016	8b 55 08	 mov	 edx, DWORD PTR _c$[ebp]
  00019	8b 02		 mov	 eax, DWORD PTR [edx]
  0001b	83 c0 01	 add	 eax, 1
  0001e	8b 4d 08	 mov	 ecx, DWORD PTR _c$[ebp]
  00021	89 01		 mov	 DWORD PTR [ecx], eax
$LN2@acquire@125:

; 267  :         }
; 268  :     }

  00023	8b e5		 mov	 esp, ebp
  00025	5d		 pop	 ebp
  00026	c2 04 00	 ret	 4
?acquire@?$SmartPtr@VCTDA9887Ex@@@@AAEXPAUCounter@@@Z ENDP ; SmartPtr<CTDA9887Ex>::acquire
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Clear@?$SmartPtr@VCTDA9887Ex@@@@QAEXXZ
_TEXT	SEGMENT
tv88 = -20						; size = 4
_this$ = -16						; size = 4
$T298437 = -12						; size = 4
$T298436 = -8						; size = 4
$T298435 = -4						; size = 4
?Clear@?$SmartPtr@VCTDA9887Ex@@@@QAEXXZ PROC		; SmartPtr<CTDA9887Ex>::Clear, COMDAT
; _this$ = ecx

; 240  :     {

  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

; 241  :         if (counter)

  00009	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	83 78 04 00	 cmp	 DWORD PTR [eax+4], 0
  00010	74 61		 je	 SHORT $LN2@Clear@126

; 242  :         {
; 243  :             (counter->count)--;

  00012	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00015	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00018	8b 02		 mov	 eax, DWORD PTR [edx]
  0001a	83 e8 01	 sub	 eax, 1
  0001d	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00020	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00023	89 02		 mov	 DWORD PTR [edx], eax

; 244  : 
; 245  :             if (counter->count == 0)

  00025	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00028	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  0002b	83 39 00	 cmp	 DWORD PTR [ecx], 0
  0002e	75 43		 jne	 SHORT $LN2@Clear@126

; 246  :             {
; 247  :                 delete counter;

  00030	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  00033	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  00036	89 45 fc	 mov	 DWORD PTR $T298435[ebp], eax
  00039	8b 4d fc	 mov	 ecx, DWORD PTR $T298435[ebp]
  0003c	51		 push	 ecx
  0003d	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00042	83 c4 04	 add	 esp, 4

; 248  :                 delete rawPtr;

  00045	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  00048	8b 02		 mov	 eax, DWORD PTR [edx]
  0004a	89 45 f4	 mov	 DWORD PTR $T298437[ebp], eax
  0004d	8b 4d f4	 mov	 ecx, DWORD PTR $T298437[ebp]
  00050	89 4d f8	 mov	 DWORD PTR $T298436[ebp], ecx
  00053	83 7d f8 00	 cmp	 DWORD PTR $T298436[ebp], 0
  00057	74 13		 je	 SHORT $LN5@Clear@126
  00059	6a 01		 push	 1
  0005b	8b 55 f8	 mov	 edx, DWORD PTR $T298436[ebp]
  0005e	8b 02		 mov	 eax, DWORD PTR [edx]
  00060	8b 4d f8	 mov	 ecx, DWORD PTR $T298436[ebp]
  00063	8b 10		 mov	 edx, DWORD PTR [eax]
  00065	ff d2		 call	 edx
  00067	89 45 ec	 mov	 DWORD PTR tv88[ebp], eax
  0006a	eb 07		 jmp	 SHORT $LN2@Clear@126
$LN5@Clear@126:
  0006c	c7 45 ec 00 00
	00 00		 mov	 DWORD PTR tv88[ebp], 0
$LN2@Clear@126:

; 249  :             }
; 250  :         }
; 251  :         counter = 0;

  00073	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00076	c7 40 04 00 00
	00 00		 mov	 DWORD PTR [eax+4], 0

; 252  :         rawPtr = 0;

  0007d	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00080	c7 01 00 00 00
	00		 mov	 DWORD PTR [ecx], 0

; 253  :     }

  00086	8b e5		 mov	 esp, ebp
  00088	5d		 pop	 ebp
  00089	c3		 ret	 0
?Clear@?$SmartPtr@VCTDA9887Ex@@@@QAEXXZ ENDP		; SmartPtr<CTDA9887Ex>::Clear
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?IsValid@?$SmartPtr@VCTDA9887Ex@@@@QBEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?IsValid@?$SmartPtr@VCTDA9887Ex@@@@QBEHXZ PROC		; SmartPtr<CTDA9887Ex>::IsValid, COMDAT
; _this$ = ecx

; 221  :     {

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

; 222  :         if (counter && rawPtr) return TRUE;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	83 78 04 00	 cmp	 DWORD PTR [eax+4], 0
  0000e	74 0f		 je	 SHORT $LN1@IsValid@18
  00010	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00013	83 39 00	 cmp	 DWORD PTR [ecx], 0
  00016	74 07		 je	 SHORT $LN1@IsValid@18
  00018	b8 01 00 00 00	 mov	 eax, 1
  0001d	eb 02		 jmp	 SHORT $LN2@IsValid@18
$LN1@IsValid@18:

; 223  :         return FALSE;

  0001f	33 c0		 xor	 eax, eax
$LN2@IsValid@18:

; 224  :     }

  00021	8b e5		 mov	 esp, ebp
  00023	5d		 pop	 ebp
  00024	c3		 ret	 0
?IsValid@?$SmartPtr@VCTDA9887Ex@@@@QBEHXZ ENDP		; SmartPtr<CTDA9887Ex>::IsValid
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ??1?$SmartPtr@VCTDA9887Ex@@@@QAE@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
??1?$SmartPtr@VCTDA9887Ex@@@@QAE@XZ PROC		; SmartPtr<CTDA9887Ex>::~SmartPtr<CTDA9887Ex>, 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@VCTDA9887Ex@@@@QAEXXZ ; SmartPtr<CTDA9887Ex>::Clear

; 107  :     }

  0000f	8b e5		 mov	 esp, ebp
  00011	5d		 pop	 ebp
  00012	c3		 ret	 0
??1?$SmartPtr@VCTDA9887Ex@@@@QAE@XZ ENDP		; SmartPtr<CTDA9887Ex>::~SmartPtr<CTDA9887Ex>
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ??0?$SmartPtr@VCTDA9887Ex@@@@QAE@ABV0@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_otherPtr$ = 8						; size = 4
??0?$SmartPtr@VCTDA9887Ex@@@@QAE@ABV0@@Z PROC		; SmartPtr<CTDA9887Ex>::SmartPtr<CTDA9887Ex>, COMDAT
; _this$ = ecx

; 82   :     SmartPtr(const SmartPtr< X >& otherPtr)

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

; 83   :     {
; 84   :         acquire( otherPtr.counter );

  00007	8b 45 08	 mov	 eax, DWORD PTR _otherPtr$[ebp]
  0000a	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  0000d	51		 push	 ecx
  0000e	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00011	e8 00 00 00 00	 call	 ?acquire@?$SmartPtr@VCTDA9887Ex@@@@AAEXPAUCounter@@@Z ; SmartPtr<CTDA9887Ex>::acquire

; 85   :         rawPtr = otherPtr.rawPtr;

  00016	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00019	8b 45 08	 mov	 eax, DWORD PTR _otherPtr$[ebp]
  0001c	8b 08		 mov	 ecx, DWORD PTR [eax]
  0001e	89 0a		 mov	 DWORD PTR [edx], ecx

; 86   :     }

  00020	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00023	8b e5		 mov	 esp, ebp
  00025	5d		 pop	 ebp
  00026	c2 04 00	 ret	 4
??0?$SmartPtr@VCTDA9887Ex@@@@QAE@ABV0@@Z ENDP		; SmartPtr<CTDA9887Ex>::SmartPtr<CTDA9887Ex>
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?IsValid@?$SmartPtr@VII2CTuner@@@@QBEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?IsValid@?$SmartPtr@VII2CTuner@@@@QBEHXZ PROC		; SmartPtr<II2CTuner>::IsValid, COMDAT
; _this$ = ecx

; 221  :     {

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

; 222  :         if (counter && rawPtr) return TRUE;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	83 78 04 00	 cmp	 DWORD PTR [eax+4], 0
  0000e	74 0f		 je	 SHORT $LN1@IsValid@19
  00010	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00013	83 39 00	 cmp	 DWORD PTR [ecx], 0
  00016	74 07		 je	 SHORT $LN1@IsValid@19
  00018	b8 01 00 00 00	 mov	 eax, 1
  0001d	eb 02		 jmp	 SHORT $LN2@IsValid@19
$LN1@IsValid@19:

; 223  :         return FALSE;

  0001f	33 c0		 xor	 eax, eax
$LN2@IsValid@19:

; 224  :     }

  00021	8b e5		 mov	 esp, ebp
  00023	5d		 pop	 ebp
  00024	c3		 ret	 0
?IsValid@?$SmartPtr@VII2CTuner@@@@QBEHXZ ENDP		; SmartPtr<II2CTuner>::IsValid
; Function compile flags: /Odtp
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\vector
_TEXT	ENDS
;	COMDAT ?size@?$vector@UTTDA9887FormatModes@@V?$allocator@UTTDA9887FormatModes@@@std@@@std@@QBEIXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?size@?$vector@UTTDA9887FormatModes@@V?$allocator@UTTDA9887FormatModes@@@std@@@std@@QBEIXZ PROC ; std::vector<TTDA9887FormatModes,std::allocator<TTDA9887FormatModes> >::size, COMDAT
; _this$ = ecx

; 725  : 		{	// return length of sequence

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

; 726  : 		return (_Mylast - _Myfirst);

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000d	8b 40 10	 mov	 eax, DWORD PTR [eax+16]
  00010	2b 41 0c	 sub	 eax, DWORD PTR [ecx+12]
  00013	c1 f8 03	 sar	 eax, 3

; 727  : 		}

  00016	8b e5		 mov	 esp, ebp
  00018	5d		 pop	 ebp
  00019	c3		 ret	 0
?size@?$vector@UTTDA9887FormatModes@@V?$allocator@UTTDA9887FormatModes@@@std@@@std@@QBEIXZ ENDP ; std::vector<TTDA9887FormatModes,std::allocator<TTDA9887FormatModes> >::size
;	COMDAT xdata$x
; File c:\develop\dscaler423a\dscaler\smartptr.h
xdata$x	SEGMENT
__unwindtable$??0?$SmartPtr@VIExternalIFDemodulator@@@@QAE@PAVIExternalIFDemodulator@@PAUCounter@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??0?$SmartPtr@VIExternalIFDemodulator@@@@QAE@PAVIExternalIFDemodulator@@PAUCounter@@@Z$0
__ehfuncinfo$??0?$SmartPtr@VIExternalIFDemodulator@@@@QAE@PAVIExternalIFDemodulator@@PAUCounter@@@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$??0?$SmartPtr@VIExternalIFDemodulator@@@@QAE@PAVIExternalIFDemodulator@@PAUCounter@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??0?$SmartPtr@VIExternalIFDemodulator@@@@QAE@PAVIExternalIFDemodulator@@PAUCounter@@@Z
_TEXT	SEGMENT
tv78 = -28						; size = 4
_this$ = -24						; size = 4
$T312704 = -20						; size = 4
$T312703 = -16						; size = 4
__$EHRec$ = -12						; size = 12
_raw$ = 8						; size = 4
_c$ = 12						; size = 4
??0?$SmartPtr@VIExternalIFDemodulator@@@@QAE@PAVIExternalIFDemodulator@@PAUCounter@@@Z PROC ; SmartPtr<IExternalIFDemodulator>::SmartPtr<IExternalIFDemodulator>, COMDAT
; _this$ = ecx

; 92   :     {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??0?$SmartPtr@VIExternalIFDemodulator@@@@QAE@PAVIExternalIFDemodulator@@PAUCounter@@@Z
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	83 ec 10	 sub	 esp, 16			; 00000010H
  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 e8	 mov	 DWORD PTR _this$[ebp], ecx
  00028	8b 45 e8	 mov	 eax, DWORD PTR _this$[ebp]
  0002b	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], 0
  00031	8b 4d e8	 mov	 ecx, DWORD PTR _this$[ebp]
  00034	c7 41 04 00 00
	00 00		 mov	 DWORD PTR [ecx+4], 0

; 93   :         if (raw)

  0003b	83 7d 08 00	 cmp	 DWORD PTR _raw$[ebp], 0
  0003f	74 62		 je	 SHORT $LN4@SmartPtr@14

; 94   :         {
; 95   :             rawPtr = raw;

  00041	8b 55 e8	 mov	 edx, DWORD PTR _this$[ebp]
  00044	8b 45 08	 mov	 eax, DWORD PTR _raw$[ebp]
  00047	89 02		 mov	 DWORD PTR [edx], eax

; 96   :             if (c) acquire(c);

  00049	83 7d 0c 00	 cmp	 DWORD PTR _c$[ebp], 0
  0004d	74 0e		 je	 SHORT $LN2@SmartPtr@14
  0004f	8b 4d 0c	 mov	 ecx, DWORD PTR _c$[ebp]
  00052	51		 push	 ecx
  00053	8b 4d e8	 mov	 ecx, DWORD PTR _this$[ebp]
  00056	e8 00 00 00 00	 call	 ?acquire@?$SmartPtr@VIExternalIFDemodulator@@@@AAEXPAUCounter@@@Z ; SmartPtr<IExternalIFDemodulator>::acquire
  0005b	eb 46		 jmp	 SHORT $LN4@SmartPtr@14
$LN2@SmartPtr@14:

; 97   :             else counter = new Counter;

  0005d	6a 04		 push	 4
  0005f	e8 00 00 00 00	 call	 ??2@YAPAXI@Z		; operator new
  00064	83 c4 04	 add	 esp, 4
  00067	89 45 ec	 mov	 DWORD PTR $T312704[ebp], eax
  0006a	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  00071	83 7d ec 00	 cmp	 DWORD PTR $T312704[ebp], 0
  00075	74 0f		 je	 SHORT $LN6@SmartPtr@14
  00077	6a 01		 push	 1
  00079	8b 4d ec	 mov	 ecx, DWORD PTR $T312704[ebp]
  0007c	e8 00 00 00 00	 call	 ??0Counter@@QAE@I@Z	; Counter::Counter
  00081	89 45 e4	 mov	 DWORD PTR tv78[ebp], eax
  00084	eb 07		 jmp	 SHORT $LN7@SmartPtr@14
$LN6@SmartPtr@14:
  00086	c7 45 e4 00 00
	00 00		 mov	 DWORD PTR tv78[ebp], 0
$LN7@SmartPtr@14:
  0008d	8b 55 e4	 mov	 edx, DWORD PTR tv78[ebp]
  00090	89 55 f0	 mov	 DWORD PTR $T312703[ebp], edx
  00093	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  0009a	8b 45 e8	 mov	 eax, DWORD PTR _this$[ebp]
  0009d	8b 4d f0	 mov	 ecx, DWORD PTR $T312703[ebp]
  000a0	89 48 04	 mov	 DWORD PTR [eax+4], ecx
$LN4@SmartPtr@14:

; 98   :         }
; 99   :     }

  000a3	8b 45 e8	 mov	 eax, DWORD PTR _this$[ebp]
  000a6	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  000a9	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  000b0	59		 pop	 ecx
  000b1	8b e5		 mov	 esp, ebp
  000b3	5d		 pop	 ebp
  000b4	c2 08 00	 ret	 8
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??0?$SmartPtr@VIExternalIFDemodulator@@@@QAE@PAVIExternalIFDemodulator@@PAUCounter@@@Z$0:
  00000	8b 45 ec	 mov	 eax, DWORD PTR $T312704[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$??0?$SmartPtr@VIExternalIFDemodulator@@@@QAE@PAVIExternalIFDemodulator@@PAUCounter@@@Z:
  0000b	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  0000f	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  00012	8b 4a ec	 mov	 ecx, DWORD PTR [edx-20]
  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$??0?$SmartPtr@VIExternalIFDemodulator@@@@QAE@PAVIExternalIFDemodulator@@PAUCounter@@@Z
  00021	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??0?$SmartPtr@VIExternalIFDemodulator@@@@QAE@PAVIExternalIFDemodulator@@PAUCounter@@@Z ENDP ; SmartPtr<IExternalIFDemodulator>::SmartPtr<IExternalIFDemodulator>
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?GetRawPointer@?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?GetRawPointer@?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@XZ$0
__ehfuncinfo$?GetRawPointer@?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@XZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?GetRawPointer@?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ?GetRawPointer@?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@XZ
_TEXT	SEGMENT
tv72 = -32						; size = 4
_this$ = -28						; size = 4
$T312718 = -24						; size = 4
$T312717 = -20						; size = 4
$T312716 = -16						; size = 4
__$EHRec$ = -12						; size = 12
?GetRawPointer@?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@XZ PROC ; SmartPtr<CTDA9887Ex>::GetRawPointer, COMDAT
; _this$ = ecx

; 205  :     {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$?GetRawPointer@?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@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

; 206  :         if (rawPtr == 0) throw new NullPointerException;

  00028	8b 45 e4	 mov	 eax, DWORD PTR _this$[ebp]
  0002b	83 38 00	 cmp	 DWORD PTR [eax], 0
  0002e	75 4f		 jne	 SHORT $LN1@GetRawPoin@139
  00030	6a 0c		 push	 12			; 0000000cH
  00032	e8 00 00 00 00	 call	 ??2@YAPAXI@Z		; operator new
  00037	83 c4 04	 add	 esp, 4
  0003a	89 45 e8	 mov	 DWORD PTR $T312718[ebp], eax
  0003d	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  00044	83 7d e8 00	 cmp	 DWORD PTR $T312718[ebp], 0
  00048	74 0d		 je	 SHORT $LN4@GetRawPoin@139
  0004a	8b 4d e8	 mov	 ecx, DWORD PTR $T312718[ebp]
  0004d	e8 00 00 00 00	 call	 ??0NullPointerException@@QAE@XZ ; NullPointerException::NullPointerException
  00052	89 45 e0	 mov	 DWORD PTR tv72[ebp], eax
  00055	eb 07		 jmp	 SHORT $LN5@GetRawPoin@139
$LN4@GetRawPoin@139:
  00057	c7 45 e0 00 00
	00 00		 mov	 DWORD PTR tv72[ebp], 0
$LN5@GetRawPoin@139:
  0005e	8b 4d e0	 mov	 ecx, DWORD PTR tv72[ebp]
  00061	89 4d ec	 mov	 DWORD PTR $T312717[ebp], ecx
  00064	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  0006b	8b 55 ec	 mov	 edx, DWORD PTR $T312717[ebp]
  0006e	89 55 f0	 mov	 DWORD PTR $T312716[ebp], edx
  00071	68 00 00 00 00	 push	 OFFSET __TI3PAUNullPointerException@@
  00076	8d 45 f0	 lea	 eax, DWORD PTR $T312716[ebp]
  00079	50		 push	 eax
  0007a	e8 00 00 00 00	 call	 __CxxThrowException@8
$LN1@GetRawPoin@139:

; 207  :         return const_cast<X*>(rawPtr);

  0007f	8b 4d e4	 mov	 ecx, DWORD PTR _this$[ebp]
  00082	8b 01		 mov	 eax, DWORD PTR [ecx]
$LN3@GetRawPoin@139:

; 208  :     }

  00084	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  00087	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  0008e	59		 pop	 ecx
  0008f	8b e5		 mov	 esp, ebp
  00091	5d		 pop	 ebp
  00092	c3		 ret	 0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?GetRawPointer@?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@XZ$0:
  00000	8b 45 e8	 mov	 eax, DWORD PTR $T312718[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$?GetRawPointer@?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@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$?GetRawPointer@?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@XZ
  00021	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
?GetRawPointer@?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@XZ ENDP ; SmartPtr<CTDA9887Ex>::GetRawPointer
; Function compile flags: /Odtp
;	COMDAT ??C?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
??C?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@XZ PROC	; SmartPtr<CTDA9887Ex>::operator->, COMDAT
; _this$ = ecx

; 168  :     {

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

; 169  :         return GetRawPointer();

  00007	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000a	e8 00 00 00 00	 call	 ?GetRawPointer@?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@XZ ; SmartPtr<CTDA9887Ex>::GetRawPointer

; 170  :     }

  0000f	8b e5		 mov	 esp, ebp
  00011	5d		 pop	 ebp
  00012	c3		 ret	 0
??C?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@XZ ENDP	; SmartPtr<CTDA9887Ex>::operator->
_TEXT	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??0?$SmartPtr@VCTDA9887Ex@@@@QAE@PAVCTDA9887Ex@@PAUCounter@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??0?$SmartPtr@VCTDA9887Ex@@@@QAE@PAVCTDA9887Ex@@PAUCounter@@@Z$0
__ehfuncinfo$??0?$SmartPtr@VCTDA9887Ex@@@@QAE@PAVCTDA9887Ex@@PAUCounter@@@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$??0?$SmartPtr@VCTDA9887Ex@@@@QAE@PAVCTDA9887Ex@@PAUCounter@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??0?$SmartPtr@VCTDA9887Ex@@@@QAE@PAVCTDA9887Ex@@PAUCounter@@@Z
_TEXT	SEGMENT
tv78 = -28						; size = 4
_this$ = -24						; size = 4
$T312733 = -20						; size = 4
$T312732 = -16						; size = 4
__$EHRec$ = -12						; size = 12
_raw$ = 8						; size = 4
_c$ = 12						; size = 4
??0?$SmartPtr@VCTDA9887Ex@@@@QAE@PAVCTDA9887Ex@@PAUCounter@@@Z PROC ; SmartPtr<CTDA9887Ex>::SmartPtr<CTDA9887Ex>, COMDAT
; _this$ = ecx

; 92   :     {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??0?$SmartPtr@VCTDA9887Ex@@@@QAE@PAVCTDA9887Ex@@PAUCounter@@@Z
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	83 ec 10	 sub	 esp, 16			; 00000010H
  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 e8	 mov	 DWORD PTR _this$[ebp], ecx
  00028	8b 45 e8	 mov	 eax, DWORD PTR _this$[ebp]
  0002b	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], 0
  00031	8b 4d e8	 mov	 ecx, DWORD PTR _this$[ebp]
  00034	c7 41 04 00 00
	00 00		 mov	 DWORD PTR [ecx+4], 0

; 93   :         if (raw)

  0003b	83 7d 08 00	 cmp	 DWORD PTR _raw$[ebp], 0
  0003f	74 62		 je	 SHORT $LN4@SmartPtr@15

; 94   :         {
; 95   :             rawPtr = raw;

  00041	8b 55 e8	 mov	 edx, DWORD PTR _this$[ebp]
  00044	8b 45 08	 mov	 eax, DWORD PTR _raw$[ebp]
  00047	89 02		 mov	 DWORD PTR [edx], eax

; 96   :             if (c) acquire(c);

  00049	83 7d 0c 00	 cmp	 DWORD PTR _c$[ebp], 0
  0004d	74 0e		 je	 SHORT $LN2@SmartPtr@15
  0004f	8b 4d 0c	 mov	 ecx, DWORD PTR _c$[ebp]
  00052	51		 push	 ecx
  00053	8b 4d e8	 mov	 ecx, DWORD PTR _this$[ebp]
  00056	e8 00 00 00 00	 call	 ?acquire@?$SmartPtr@VCTDA9887Ex@@@@AAEXPAUCounter@@@Z ; SmartPtr<CTDA9887Ex>::acquire
  0005b	eb 46		 jmp	 SHORT $LN4@SmartPtr@15
$LN2@SmartPtr@15:

; 97   :             else counter = new Counter;

  0005d	6a 04		 push	 4
  0005f	e8 00 00 00 00	 call	 ??2@YAPAXI@Z		; operator new
  00064	83 c4 04	 add	 esp, 4
  00067	89 45 ec	 mov	 DWORD PTR $T312733[ebp], eax
  0006a	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  00071	83 7d ec 00	 cmp	 DWORD PTR $T312733[ebp], 0
  00075	74 0f		 je	 SHORT $LN6@SmartPtr@15
  00077	6a 01		 push	 1
  00079	8b 4d ec	 mov	 ecx, DWORD PTR $T312733[ebp]
  0007c	e8 00 00 00 00	 call	 ??0Counter@@QAE@I@Z	; Counter::Counter
  00081	89 45 e4	 mov	 DWORD PTR tv78[ebp], eax
  00084	eb 07		 jmp	 SHORT $LN7@SmartPtr@15
$LN6@SmartPtr@15:
  00086	c7 45 e4 00 00
	00 00		 mov	 DWORD PTR tv78[ebp], 0
$LN7@SmartPtr@15:
  0008d	8b 55 e4	 mov	 edx, DWORD PTR tv78[ebp]
  00090	89 55 f0	 mov	 DWORD PTR $T312732[ebp], edx
  00093	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  0009a	8b 45 e8	 mov	 eax, DWORD PTR _this$[ebp]
  0009d	8b 4d f0	 mov	 ecx, DWORD PTR $T312732[ebp]
  000a0	89 48 04	 mov	 DWORD PTR [eax+4], ecx
$LN4@SmartPtr@15:

; 98   :         }
; 99   :     }

  000a3	8b 45 e8	 mov	 eax, DWORD PTR _this$[ebp]
  000a6	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  000a9	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  000b0	59		 pop	 ecx
  000b1	8b e5		 mov	 esp, ebp
  000b3	5d		 pop	 ebp
  000b4	c2 08 00	 ret	 8
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??0?$SmartPtr@VCTDA9887Ex@@@@QAE@PAVCTDA9887Ex@@PAUCounter@@@Z$0:
  00000	8b 45 ec	 mov	 eax, DWORD PTR $T312733[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$??0?$SmartPtr@VCTDA9887Ex@@@@QAE@PAVCTDA9887Ex@@PAUCounter@@@Z:
  0000b	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  0000f	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  00012	8b 4a ec	 mov	 ecx, DWORD PTR [edx-20]
  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$??0?$SmartPtr@VCTDA9887Ex@@@@QAE@PAVCTDA9887Ex@@PAUCounter@@@Z
  00021	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??0?$SmartPtr@VCTDA9887Ex@@@@QAE@PAVCTDA9887Ex@@PAUCounter@@@Z ENDP ; SmartPtr<CTDA9887Ex>::SmartPtr<CTDA9887Ex>
; Function compile flags: /Odtp
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\vector
;	COMDAT ??A?$vector@UTTDA9887FormatModes@@V?$allocator@UTTDA9887FormatModes@@@std@@@std@@QAEAAUTTDA9887FormatModes@@I@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
__Pos$ = 8						; size = 4
??A?$vector@UTTDA9887FormatModes@@V?$allocator@UTTDA9887FormatModes@@@std@@@std@@QAEAAUTTDA9887FormatModes@@I@Z PROC ; std::vector<TTDA9887FormatModes,std::allocator<TTDA9887FormatModes> >::operator[], COMDAT
; _this$ = ecx

; 774  : 		{	// subscript mutable sequence

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

; 775  : 
; 776  :  #if _HAS_ITERATOR_DEBUGGING
; 777  : 		if (size() <= _Pos)
; 778  : 			{
; 779  : 			_DEBUG_ERROR("vector subscript out of range");
; 780  : 			_SCL_SECURE_OUT_OF_RANGE;
; 781  : 			}
; 782  :  #endif /* _HAS_ITERATOR_DEBUGGING */
; 783  : 		_SCL_SECURE_VALIDATE_RANGE(_Pos < size());

  00007	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000a	e8 00 00 00 00	 call	 ?size@?$vector@UTTDA9887FormatModes@@V?$allocator@UTTDA9887FormatModes@@@std@@@std@@QBEIXZ ; std::vector<TTDA9887FormatModes,std::allocator<TTDA9887FormatModes> >::size
  0000f	39 45 08	 cmp	 DWORD PTR __Pos$[ebp], eax
  00012	72 05		 jb	 SHORT $LN2@operator@256
  00014	e8 00 00 00 00	 call	 __invalid_parameter_noinfo
$LN2@operator@256:
  00019	33 c0		 xor	 eax, eax
  0001b	75 fc		 jne	 SHORT $LN2@operator@256

; 784  : 
; 785  : 		return (*(_Myfirst + _Pos));

  0001d	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00020	8b 51 0c	 mov	 edx, DWORD PTR [ecx+12]
  00023	8b 45 08	 mov	 eax, DWORD PTR __Pos$[ebp]
  00026	8d 04 c2	 lea	 eax, DWORD PTR [edx+eax*8]

; 786  : 		}

  00029	8b e5		 mov	 esp, ebp
  0002b	5d		 pop	 ebp
  0002c	c2 04 00	 ret	 4
??A?$vector@UTTDA9887FormatModes@@V?$allocator@UTTDA9887FormatModes@@@std@@@std@@QAEAAUTTDA9887FormatModes@@I@Z ENDP ; std::vector<TTDA9887FormatModes,std::allocator<TTDA9887FormatModes> >::operator[]
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\smartptr.h
_TEXT	ENDS
;	COMDAT ??4?$SmartPtr@VIExternalIFDemodulator@@@@QAEAAV0@ABV0@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_otherPtr$ = 8						; size = 4
??4?$SmartPtr@VIExternalIFDemodulator@@@@QAEAAV0@ABV0@@Z PROC ; SmartPtr<IExternalIFDemodulator>::operator=, COMDAT
; _this$ = ecx

; 111  :     {

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

; 112  :         if (this != &otherPtr)

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	3b 45 08	 cmp	 eax, DWORD PTR _otherPtr$[ebp]
  0000d	74 21		 je	 SHORT $LN1@operator@257

; 113  :         {
; 114  :             Clear();

  0000f	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00012	e8 00 00 00 00	 call	 ?Clear@?$SmartPtr@VIExternalIFDemodulator@@@@QAEXXZ ; SmartPtr<IExternalIFDemodulator>::Clear

; 115  :             acquire(otherPtr.counter);

  00017	8b 4d 08	 mov	 ecx, DWORD PTR _otherPtr$[ebp]
  0001a	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  0001d	52		 push	 edx
  0001e	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00021	e8 00 00 00 00	 call	 ?acquire@?$SmartPtr@VIExternalIFDemodulator@@@@AAEXPAUCounter@@@Z ; SmartPtr<IExternalIFDemodulator>::acquire

; 116  :             rawPtr = otherPtr.rawPtr;

  00026	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00029	8b 4d 08	 mov	 ecx, DWORD PTR _otherPtr$[ebp]
  0002c	8b 11		 mov	 edx, DWORD PTR [ecx]
  0002e	89 10		 mov	 DWORD PTR [eax], edx
$LN1@operator@257:

; 117  :         }
; 118  :         return *this;

  00030	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]

; 119  :     }

  00033	8b e5		 mov	 esp, ebp
  00035	5d		 pop	 ebp
  00036	c2 04 00	 ret	 4
??4?$SmartPtr@VIExternalIFDemodulator@@@@QAEAAV0@ABV0@@Z ENDP ; SmartPtr<IExternalIFDemodulator>::operator=
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??$DynamicPtrCast@VIExternalIFDemodulator@@VCTDA9887Ex@@@@YA?AV?$SmartPtr@VIExternalIFDemodulator@@@@V?$SmartPtr@VCTDA9887Ex@@@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??$DynamicPtrCast@VIExternalIFDemodulator@@VCTDA9887Ex@@@@YA?AV?$SmartPtr@VIExternalIFDemodulator@@@@V?$SmartPtr@VCTDA9887Ex@@@@@Z$1
	DD	00H
	DD	FLAT:__unwindfunclet$??$DynamicPtrCast@VIExternalIFDemodulator@@VCTDA9887Ex@@@@YA?AV?$SmartPtr@VIExternalIFDemodulator@@@@V?$SmartPtr@VCTDA9887Ex@@@@@Z$0
__ehfuncinfo$??$DynamicPtrCast@VIExternalIFDemodulator@@VCTDA9887Ex@@@@YA?AV?$SmartPtr@VIExternalIFDemodulator@@@@V?$SmartPtr@VCTDA9887Ex@@@@@Z DD 019930522H
	DD	02H
	DD	FLAT:__unwindtable$??$DynamicPtrCast@VIExternalIFDemodulator@@VCTDA9887Ex@@@@YA?AV?$SmartPtr@VIExternalIFDemodulator@@@@V?$SmartPtr@VCTDA9887Ex@@@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??$DynamicPtrCast@VIExternalIFDemodulator@@VCTDA9887Ex@@@@YA?AV?$SmartPtr@VIExternalIFDemodulator@@@@V?$SmartPtr@VCTDA9887Ex@@@@@Z
_TEXT	SEGMENT
$T322447 = -20						; size = 4
_newPtr$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
___$ReturnUdt$ = 8					; size = 4
_inPtr$ = 12						; size = 8
??$DynamicPtrCast@VIExternalIFDemodulator@@VCTDA9887Ex@@@@YA?AV?$SmartPtr@VIExternalIFDemodulator@@@@V?$SmartPtr@VCTDA9887Ex@@@@@Z PROC ; DynamicPtrCast<IExternalIFDemodulator,CTDA9887Ex>, COMDAT

; 277  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??$DynamicPtrCast@VIExternalIFDemodulator@@VCTDA9887Ex@@@@YA?AV?$SmartPtr@VIExternalIFDemodulator@@@@V?$SmartPtr@VCTDA9887Ex@@@@@Z
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	83 ec 08	 sub	 esp, 8
  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	c7 45 ec 00 00
	00 00		 mov	 DWORD PTR $T322447[ebp], 0
  0002c	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 1

; 278  :     //new SmartPtr must also take our counter or else the reference counts
; 279  :     //will go out of sync
; 280  :     Y* newPtr = dynamic_cast<Y*>(inPtr.GetRawPointer());

  00033	8d 4d 0c	 lea	 ecx, DWORD PTR _inPtr$[ebp]
  00036	e8 00 00 00 00	 call	 ?GetRawPointer@?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@XZ ; SmartPtr<CTDA9887Ex>::GetRawPointer
  0003b	89 45 f0	 mov	 DWORD PTR _newPtr$[ebp], eax

; 281  :     if(newPtr)

  0003e	83 7d f0 00	 cmp	 DWORD PTR _newPtr$[ebp], 0
  00042	74 31		 je	 SHORT $LN2@DynamicPtr@116

; 282  :     {
; 283  :         return SmartPtr<Y>(newPtr, inPtr.GetCounter());

  00044	8d 4d 0c	 lea	 ecx, DWORD PTR _inPtr$[ebp]
  00047	e8 00 00 00 00	 call	 ?GetCounter@?$SmartPtr@VCTDA9887Ex@@@@QBEPAUCounter@@XZ ; SmartPtr<CTDA9887Ex>::GetCounter
  0004c	50		 push	 eax
  0004d	8b 45 f0	 mov	 eax, DWORD PTR _newPtr$[ebp]
  00050	50		 push	 eax
  00051	8b 4d 08	 mov	 ecx, DWORD PTR ___$ReturnUdt$[ebp]
  00054	e8 00 00 00 00	 call	 ??0?$SmartPtr@VIExternalIFDemodulator@@@@QAE@PAVIExternalIFDemodulator@@PAUCounter@@@Z ; SmartPtr<IExternalIFDemodulator>::SmartPtr<IExternalIFDemodulator>
  00059	8b 4d ec	 mov	 ecx, DWORD PTR $T322447[ebp]
  0005c	83 c9 01	 or	 ecx, 1
  0005f	89 4d ec	 mov	 DWORD PTR $T322447[ebp], ecx
  00062	c6 45 fc 00	 mov	 BYTE PTR __$EHRec$[ebp+8], 0
  00066	8d 4d 0c	 lea	 ecx, DWORD PTR _inPtr$[ebp]
  00069	e8 00 00 00 00	 call	 ??1?$SmartPtr@VCTDA9887Ex@@@@QAE@XZ ; SmartPtr<CTDA9887Ex>::~SmartPtr<CTDA9887Ex>
  0006e	8b 45 08	 mov	 eax, DWORD PTR ___$ReturnUdt$[ebp]
  00071	eb 30		 jmp	 SHORT $LN3@DynamicPtr@116

; 284  :     }
; 285  :     else

  00073	eb 22		 jmp	 SHORT $LN1@DynamicPtr@116
$LN2@DynamicPtr@116:

; 286  :     {
; 287  :         return SmartPtr<Y>();

  00075	8b 4d 08	 mov	 ecx, DWORD PTR ___$ReturnUdt$[ebp]
  00078	e8 00 00 00 00	 call	 ??0?$SmartPtr@VIExternalIFDemodulator@@@@QAE@XZ ; SmartPtr<IExternalIFDemodulator>::SmartPtr<IExternalIFDemodulator>
  0007d	8b 55 ec	 mov	 edx, DWORD PTR $T322447[ebp]
  00080	83 ca 01	 or	 edx, 1
  00083	89 55 ec	 mov	 DWORD PTR $T322447[ebp], edx
  00086	c6 45 fc 00	 mov	 BYTE PTR __$EHRec$[ebp+8], 0
  0008a	8d 4d 0c	 lea	 ecx, DWORD PTR _inPtr$[ebp]
  0008d	e8 00 00 00 00	 call	 ??1?$SmartPtr@VCTDA9887Ex@@@@QAE@XZ ; SmartPtr<CTDA9887Ex>::~SmartPtr<CTDA9887Ex>
  00092	8b 45 08	 mov	 eax, DWORD PTR ___$ReturnUdt$[ebp]
  00095	eb 0c		 jmp	 SHORT $LN3@DynamicPtr@116
$LN1@DynamicPtr@116:

; 288  :     }
; 289  : }

  00097	c6 45 fc 00	 mov	 BYTE PTR __$EHRec$[ebp+8], 0
  0009b	8d 4d 0c	 lea	 ecx, DWORD PTR _inPtr$[ebp]
  0009e	e8 00 00 00 00	 call	 ??1?$SmartPtr@VCTDA9887Ex@@@@QAE@XZ ; SmartPtr<CTDA9887Ex>::~SmartPtr<CTDA9887Ex>
$LN3@DynamicPtr@116:
  000a3	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  000a6	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  000ad	59		 pop	 ecx
  000ae	8b e5		 mov	 esp, ebp
  000b0	5d		 pop	 ebp
  000b1	c3		 ret	 0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??$DynamicPtrCast@VIExternalIFDemodulator@@VCTDA9887Ex@@@@YA?AV?$SmartPtr@VIExternalIFDemodulator@@@@V?$SmartPtr@VCTDA9887Ex@@@@@Z$0:
  00000	8d 4d 0c	 lea	 ecx, DWORD PTR _inPtr$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1?$SmartPtr@VCTDA9887Ex@@@@QAE@XZ ; SmartPtr<CTDA9887Ex>::~SmartPtr<CTDA9887Ex>
__unwindfunclet$??$DynamicPtrCast@VIExternalIFDemodulator@@VCTDA9887Ex@@@@YA?AV?$SmartPtr@VIExternalIFDemodulator@@@@V?$SmartPtr@VCTDA9887Ex@@@@@Z$1:
  00008	8b 45 ec	 mov	 eax, DWORD PTR $T322447[ebp]
  0000b	83 e0 01	 and	 eax, 1
  0000e	0f 84 0c 00 00
	00		 je	 $LN7@DynamicPtr@116
  00014	83 65 ec fe	 and	 DWORD PTR $T322447[ebp], -2 ; fffffffeH
  00018	8b 4d 08	 mov	 ecx, DWORD PTR ___$ReturnUdt$[ebp]
  0001b	e9 00 00 00 00	 jmp	 ??1?$SmartPtr@VIExternalIFDemodulator@@@@QAE@XZ ; SmartPtr<IExternalIFDemodulator>::~SmartPtr<IExternalIFDemodulator>
$LN7@DynamicPtr@116:
  00020	c3		 ret	 0
__ehhandler$??$DynamicPtrCast@VIExternalIFDemodulator@@VCTDA9887Ex@@@@YA?AV?$SmartPtr@VIExternalIFDemodulator@@@@V?$SmartPtr@VCTDA9887Ex@@@@@Z:
  00021	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  00025	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  00028	8b 4a f4	 mov	 ecx, DWORD PTR [edx-12]
  0002b	33 c8		 xor	 ecx, eax
  0002d	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00032	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$??$DynamicPtrCast@VIExternalIFDemodulator@@VCTDA9887Ex@@@@YA?AV?$SmartPtr@VIExternalIFDemodulator@@@@V?$SmartPtr@VCTDA9887Ex@@@@@Z
  00037	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??$DynamicPtrCast@VIExternalIFDemodulator@@VCTDA9887Ex@@@@YA?AV?$SmartPtr@VIExternalIFDemodulator@@@@V?$SmartPtr@VCTDA9887Ex@@@@@Z ENDP ; DynamicPtrCast<IExternalIFDemodulator,CTDA9887Ex>
PUBLIC	?GetTuner@CCX2388xCard@@QAE?AV?$SmartPtr@VITuner@@@@XZ ; CCX2388xCard::GetTuner
;	COMDAT xdata$x
; File c:\develop\dscaler423a\dscaler\cx2388xcard_tuner.cpp
xdata$x	SEGMENT
__unwindtable$?GetTuner@CCX2388xCard@@QAE?AV?$SmartPtr@VITuner@@@@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?GetTuner@CCX2388xCard@@QAE?AV?$SmartPtr@VITuner@@@@XZ$1
	DD	00H
	DD	FLAT:__unwindfunclet$?GetTuner@CCX2388xCard@@QAE?AV?$SmartPtr@VITuner@@@@XZ$0
__ehfuncinfo$?GetTuner@CCX2388xCard@@QAE?AV?$SmartPtr@VITuner@@@@XZ DD 019930522H
	DD	02H
	DD	FLAT:__unwindtable$?GetTuner@CCX2388xCard@@QAE?AV?$SmartPtr@VITuner@@@@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ?GetTuner@CCX2388xCard@@QAE?AV?$SmartPtr@VITuner@@@@XZ
_TEXT	SEGMENT
tv84 = -36						; size = 4
tv83 = -32						; size = 4
tv89 = -28						; size = 4
_this$ = -24						; size = 4
$T325618 = -20						; size = 4
$T325615 = -16						; size = 4
__$EHRec$ = -12						; size = 12
___$ReturnUdt$ = 8					; size = 4
?GetTuner@CCX2388xCard@@QAE?AV?$SmartPtr@VITuner@@@@XZ PROC ; CCX2388xCard::GetTuner, COMDAT
; _this$ = ecx

; 177  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$?GetTuner@CCX2388xCard@@QAE?AV?$SmartPtr@VITuner@@@@XZ
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	83 ec 18	 sub	 esp, 24			; 00000018H
  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 e8	 mov	 DWORD PTR _this$[ebp], ecx
  00028	c7 45 ec 00 00
	00 00		 mov	 DWORD PTR $T325618[ebp], 0

; 178  :     return DynamicPtrCast<ITuner>(m_Tuner);

  0002f	8b 45 e8	 mov	 eax, DWORD PTR _this$[ebp]
  00032	83 c0 70	 add	 eax, 112		; 00000070H
  00035	83 ec 08	 sub	 esp, 8
  00038	8b cc		 mov	 ecx, esp
  0003a	89 65 f0	 mov	 DWORD PTR $T325615[ebp], esp
  0003d	50		 push	 eax
  0003e	e8 00 00 00 00	 call	 ??0?$SmartPtr@VII2CTuner@@@@QAE@ABV0@@Z ; SmartPtr<II2CTuner>::SmartPtr<II2CTuner>
  00043	89 45 e4	 mov	 DWORD PTR tv89[ebp], eax
  00046	8b 4d e4	 mov	 ecx, DWORD PTR tv89[ebp]
  00049	89 4d e0	 mov	 DWORD PTR tv83[ebp], ecx
  0004c	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 1
  00053	8b 55 08	 mov	 edx, DWORD PTR ___$ReturnUdt$[ebp]
  00056	52		 push	 edx
  00057	c6 45 fc 00	 mov	 BYTE PTR __$EHRec$[ebp+8], 0
  0005b	e8 00 00 00 00	 call	 ??$DynamicPtrCast@VITuner@@VII2CTuner@@@@YA?AV?$SmartPtr@VITuner@@@@V?$SmartPtr@VII2CTuner@@@@@Z ; DynamicPtrCast<ITuner,II2CTuner>
  00060	83 c4 0c	 add	 esp, 12			; 0000000cH
  00063	89 45 dc	 mov	 DWORD PTR tv84[ebp], eax
  00066	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  0006d	8b 45 ec	 mov	 eax, DWORD PTR $T325618[ebp]
  00070	83 c8 01	 or	 eax, 1
  00073	89 45 ec	 mov	 DWORD PTR $T325618[ebp], eax
  00076	8b 45 08	 mov	 eax, DWORD PTR ___$ReturnUdt$[ebp]

; 179  : }

  00079	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  0007c	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  00083	59		 pop	 ecx
  00084	8b e5		 mov	 esp, ebp
  00086	5d		 pop	 ebp
  00087	c2 04 00	 ret	 4
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?GetTuner@CCX2388xCard@@QAE?AV?$SmartPtr@VITuner@@@@XZ$0:
  00000	8b 4d f0	 mov	 ecx, DWORD PTR $T325615[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1?$SmartPtr@VII2CTuner@@@@QAE@XZ ; SmartPtr<II2CTuner>::~SmartPtr<II2CTuner>
__unwindfunclet$?GetTuner@CCX2388xCard@@QAE?AV?$SmartPtr@VITuner@@@@XZ$1:
  00008	8b 45 ec	 mov	 eax, DWORD PTR $T325618[ebp]
  0000b	83 e0 01	 and	 eax, 1
  0000e	0f 84 0c 00 00
	00		 je	 $LN5@GetTuner@6
  00014	83 65 ec fe	 and	 DWORD PTR $T325618[ebp], -2 ; fffffffeH
  00018	8b 4d 08	 mov	 ecx, DWORD PTR ___$ReturnUdt$[ebp]
  0001b	e9 00 00 00 00	 jmp	 ??1?$SmartPtr@VITuner@@@@QAE@XZ ; SmartPtr<ITuner>::~SmartPtr<ITuner>
$LN5@GetTuner@6:
  00020	c3		 ret	 0
__ehhandler$?GetTuner@CCX2388xCard@@QAE?AV?$SmartPtr@VITuner@@@@XZ:
  00021	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  00025	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  00028	8b 4a e4	 mov	 ecx, DWORD PTR [edx-28]
  0002b	33 c8		 xor	 ecx, eax
  0002d	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00032	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$?GetTuner@CCX2388xCard@@QAE?AV?$SmartPtr@VITuner@@@@XZ
  00037	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
?GetTuner@CCX2388xCard@@QAE?AV?$SmartPtr@VITuner@@@@XZ ENDP ; CCX2388xCard::GetTuner
PUBLIC	?GetTunerType@CCX2388xCard@@QAE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@XZ ; CCX2388xCard::GetTunerType
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?GetTunerType@CCX2388xCard@@QAE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?GetTunerType@CCX2388xCard@@QAE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@XZ$0
__ehfuncinfo$?GetTunerType@CCX2388xCard@@QAE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@XZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?GetTunerType@CCX2388xCard@@QAE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ?GetTunerType@CCX2388xCard@@QAE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@XZ
_TEXT	SEGMENT
_this$ = -20						; size = 4
$T330015 = -16						; size = 4
__$EHRec$ = -12						; size = 12
___$ReturnUdt$ = 8					; size = 4
?GetTunerType@CCX2388xCard@@QAE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@XZ PROC ; CCX2388xCard::GetTunerType, COMDAT
; _this$ = ecx

; 182  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$?GetTunerType@CCX2388xCard@@QAE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@XZ
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	83 ec 08	 sub	 esp, 8
  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 ec	 mov	 DWORD PTR _this$[ebp], ecx
  00028	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR $T330015[ebp], 0

; 183  :     return m_TunerType;

  0002f	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00032	05 94 00 00 00	 add	 eax, 148		; 00000094H
  00037	50		 push	 eax
  00038	8b 4d 08	 mov	 ecx, DWORD PTR ___$ReturnUdt$[ebp]
  0003b	e8 00 00 00 00	 call	 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  00040	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  00047	8b 4d f0	 mov	 ecx, DWORD PTR $T330015[ebp]
  0004a	83 c9 01	 or	 ecx, 1
  0004d	89 4d f0	 mov	 DWORD PTR $T330015[ebp], ecx
  00050	8b 45 08	 mov	 eax, DWORD PTR ___$ReturnUdt$[ebp]

; 184  : }

  00053	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  00056	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  0005d	59		 pop	 ecx
  0005e	8b e5		 mov	 esp, ebp
  00060	5d		 pop	 ebp
  00061	c2 04 00	 ret	 4
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?GetTunerType@CCX2388xCard@@QAE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@XZ$0:
  00000	8b 45 f0	 mov	 eax, DWORD PTR $T330015[ebp]
  00003	83 e0 01	 and	 eax, 1
  00006	0f 84 0c 00 00
	00		 je	 $LN4@GetTunerTy@2
  0000c	83 65 f0 fe	 and	 DWORD PTR $T330015[ebp], -2 ; fffffffeH
  00010	8b 4d 08	 mov	 ecx, DWORD PTR ___$ReturnUdt$[ebp]
  00013	e9 00 00 00 00	 jmp	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
$LN4@GetTunerTy@2:
  00018	c3		 ret	 0
__ehhandler$?GetTunerType@CCX2388xCard@@QAE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@XZ:
  00019	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  0001d	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  00020	8b 4a f4	 mov	 ecx, DWORD PTR [edx-12]
  00023	33 c8		 xor	 ecx, eax
  00025	e8 00 00 00 00	 call	 @__security_check_cookie@4
  0002a	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$?GetTunerType@CCX2388xCard@@QAE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@XZ
  0002f	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
?GetTunerType@CCX2388xCard@@QAE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@XZ ENDP ; CCX2388xCard::GetTunerType
PUBLIC	__$ArrayPad$
PUBLIC	?AutoDetectTuner@CCX2388xCard@@QAE?AW4eTunerId@@W4eCX2388xCardId@@@Z ; CCX2388xCard::AutoDetectTuner
; Function compile flags: /Odtp
;	COMDAT ?AutoDetectTuner@CCX2388xCard@@QAE?AW4eTunerId@@W4eCX2388xCardId@@@Z
_TEXT	SEGMENT
_this$ = -288						; size = 4
_dwVal$145552 = -284					; size = 4
_i$145548 = -280					; size = 4
_pszCardHauppaugeAnalog$145569 = -276			; size = 4
_Eeprom$145547 = -272					; size = 256
__$ArrayPad$ = -16					; size = 4
_Tuner$145546 = -12					; size = 4
_pCard$ = -8						; size = 4
_TunerId$ = -4						; size = 4
_CardId$ = 8						; size = 4
?AutoDetectTuner@CCX2388xCard@@QAE?AW4eTunerId@@W4eCX2388xCardId@@@Z PROC ; CCX2388xCard::AutoDetectTuner, COMDAT
; _this$ = ecx

; 187  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	81 ec 20 01 00
	00		 sub	 esp, 288		; 00000120H
  00009	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  0000e	33 c5		 xor	 eax, ebp
  00010	89 45 f0	 mov	 DWORD PTR __$ArrayPad$[ebp], eax
  00013	89 8d e0 fe ff
	ff		 mov	 DWORD PTR _this$[ebp], ecx

; 188  :     eTunerId TunerId = TUNER_ABSENT;

  00019	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _TunerId$[ebp], 0

; 189  :     TCardType* pCard = &m_CX2388xCards[CardId];

  00020	8b 45 08	 mov	 eax, DWORD PTR _CardId$[ebp]
  00023	50		 push	 eax
  00024	b9 00 00 00 00	 mov	 ecx, OFFSET ?m_CX2388xCards@CCX2388xCard@@0V?$vector@VCCardTypeEx@CCX2388xCard@@V?$allocator@VCCardTypeEx@CCX2388xCard@@@std@@@std@@A ; CCX2388xCard::m_CX2388xCards
  00029	e8 00 00 00 00	 call	 ??A?$vector@VCCardTypeEx@CCX2388xCard@@V?$allocator@VCCardTypeEx@CCX2388xCard@@@std@@@std@@QAEAAVCCardTypeEx@CCX2388xCard@@I@Z ; std::vector<CCX2388xCard::CCardTypeEx,std::allocator<CCX2388xCard::CCardTypeEx> >::operator[]
  0002e	89 45 f8	 mov	 DWORD PTR _pCard$[ebp], eax

; 190  : 
; 191  :     if(pCard->TunerId == TUNER_USER_SETUP)

  00031	8b 4d f8	 mov	 ecx, DWORD PTR _pCard$[ebp]
  00034	83 b9 60 06 00
	00 ff		 cmp	 DWORD PTR [ecx+1632], -1
  0003b	75 0c		 jne	 SHORT $LN12@AutoDetect@4

; 192  :     {
; 193  :         return TUNER_ABSENT;

  0003d	33 c0		 xor	 eax, eax
  0003f	e9 9a 01 00 00	 jmp	 $LN13@AutoDetect@4
  00044	e9 95 01 00 00	 jmp	 $LN13@AutoDetect@4
$LN12@AutoDetect@4:

; 194  :     }
; 195  : 
; 196  :     else if(pCard->TunerId == TUNER_AUTODETECT)

  00049	8b 55 f8	 mov	 edx, DWORD PTR _pCard$[ebp]
  0004c	83 ba 60 06 00
	00 fe		 cmp	 DWORD PTR [edx+1632], -2 ; fffffffeH
  00053	0f 85 7c 01 00
	00		 jne	 $LN10@AutoDetect@4

; 197  :     {
; 198  :         eTunerId Tuner = TUNER_ABSENT;

  00059	c7 45 f4 00 00
	00 00		 mov	 DWORD PTR _Tuner$145546[ebp], 0

; 199  : 
; 200  :         // Read the whole EEPROM without using I2C from SRAM
; 201  :         BYTE Eeprom[256];
; 202  :         for (int i=0; i<256; i += 4)

  00060	c7 85 e8 fe ff
	ff 00 00 00 00	 mov	 DWORD PTR _i$145548[ebp], 0
  0006a	eb 0f		 jmp	 SHORT $LN9@AutoDetect@4
$LN8@AutoDetect@4:
  0006c	8b 85 e8 fe ff
	ff		 mov	 eax, DWORD PTR _i$145548[ebp]
  00072	83 c0 04	 add	 eax, 4
  00075	89 85 e8 fe ff
	ff		 mov	 DWORD PTR _i$145548[ebp], eax
$LN9@AutoDetect@4:
  0007b	81 bd e8 fe ff
	ff 00 01 00 00	 cmp	 DWORD PTR _i$145548[ebp], 256 ; 00000100H
  00085	0f 8d b3 00 00
	00		 jge	 $LN7@AutoDetect@4

; 203  :         {
; 204  :             // DWORD alignment needed
; 205  :             DWORD dwVal = ReadDword(MAP_EEPROM_DATA + i);

  0008b	8b 8d e8 fe ff
	ff		 mov	 ecx, DWORD PTR _i$145548[ebp]
  00091	81 c1 00 50 36
	00		 add	 ecx, 3559424		; 00365000H
  00097	51		 push	 ecx
  00098	8b 8d e0 fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0009e	e8 00 00 00 00	 call	 ?ReadDword@CPCICard@@QAEKK@Z ; CPCICard::ReadDword
  000a3	89 85 e4 fe ff
	ff		 mov	 DWORD PTR _dwVal$145552[ebp], eax

; 206  :             Eeprom[i+0] = LOBYTE(LOWORD(dwVal));

  000a9	8b 95 e4 fe ff
	ff		 mov	 edx, DWORD PTR _dwVal$145552[ebp]
  000af	81 e2 ff ff 00
	00		 and	 edx, 65535		; 0000ffffH
  000b5	0f b7 c2	 movzx	 eax, dx
  000b8	25 ff 00 00 00	 and	 eax, 255		; 000000ffH
  000bd	8b 8d e8 fe ff
	ff		 mov	 ecx, DWORD PTR _i$145548[ebp]
  000c3	88 84 0d f0 fe
	ff ff		 mov	 BYTE PTR _Eeprom$145547[ebp+ecx], al

; 207  :             Eeprom[i+1] = HIBYTE(LOWORD(dwVal));

  000ca	8b 95 e4 fe ff
	ff		 mov	 edx, DWORD PTR _dwVal$145552[ebp]
  000d0	81 e2 ff ff 00
	00		 and	 edx, 65535		; 0000ffffH
  000d6	0f b7 c2	 movzx	 eax, dx
  000d9	c1 e8 08	 shr	 eax, 8
  000dc	25 ff 00 00 00	 and	 eax, 255		; 000000ffH
  000e1	8b 8d e8 fe ff
	ff		 mov	 ecx, DWORD PTR _i$145548[ebp]
  000e7	88 84 0d f1 fe
	ff ff		 mov	 BYTE PTR _Eeprom$145547[ebp+ecx+1], al

; 208  :             Eeprom[i+2] = LOBYTE(HIWORD(dwVal));

  000ee	8b 95 e4 fe ff
	ff		 mov	 edx, DWORD PTR _dwVal$145552[ebp]
  000f4	c1 ea 10	 shr	 edx, 16			; 00000010H
  000f7	81 e2 ff ff 00
	00		 and	 edx, 65535		; 0000ffffH
  000fd	0f b7 c2	 movzx	 eax, dx
  00100	25 ff 00 00 00	 and	 eax, 255		; 000000ffH
  00105	8b 8d e8 fe ff
	ff		 mov	 ecx, DWORD PTR _i$145548[ebp]
  0010b	88 84 0d f2 fe
	ff ff		 mov	 BYTE PTR _Eeprom$145547[ebp+ecx+2], al

; 209  :             Eeprom[i+3] = HIBYTE(HIWORD(dwVal));

  00112	8b 95 e4 fe ff
	ff		 mov	 edx, DWORD PTR _dwVal$145552[ebp]
  00118	c1 ea 10	 shr	 edx, 16			; 00000010H
  0011b	81 e2 ff ff 00
	00		 and	 edx, 65535		; 0000ffffH
  00121	0f b7 c2	 movzx	 eax, dx
  00124	c1 e8 08	 shr	 eax, 8
  00127	25 ff 00 00 00	 and	 eax, 255		; 000000ffH
  0012c	8b 8d e8 fe ff
	ff		 mov	 ecx, DWORD PTR _i$145548[ebp]
  00132	88 84 0d f3 fe
	ff ff		 mov	 BYTE PTR _Eeprom$145547[ebp+ecx+3], al

; 210  :         }

  00139	e9 2e ff ff ff	 jmp	 $LN8@AutoDetect@4
$LN7@AutoDetect@4:

; 211  : 
; 212  :         // Note: tstring in card-ini is _T("Hauppauge WinTV 34xxx models")
; 213  :         const TCHAR* pszCardHauppaugeAnalog = _T("Hauppauge WinTV 34");

  0013e	c7 85 ec fe ff
	ff 00 00 00 00	 mov	 DWORD PTR _pszCardHauppaugeAnalog$145569[ebp], OFFSET ??_C@_1CG@JEGEDJHO@?$AAH?$AAa?$AAu?$AAp?$AAp?$AAa?$AAu?$AAg?$AAe?$AA?5?$AAW?$AAi?$AAn?$AAT?$AAV?$AA?5?$AA3?$AA4?$AA?$AA@

; 214  : 
; 215  :         // Bytes 0:7 are used for PCI SubId, data starts at byte 8
; 216  :         #define CX_EEPROM_OFFSET 8
; 217  : 
; 218  :         if(_tcsncmp(pCard->szName, pszCardHauppaugeAnalog, _tcslen(pszCardHauppaugeAnalog)) == 0)

  00148	8b 95 ec fe ff
	ff		 mov	 edx, DWORD PTR _pszCardHauppaugeAnalog$145569[ebp]
  0014e	52		 push	 edx
  0014f	e8 00 00 00 00	 call	 _wcslen
  00154	83 c4 04	 add	 esp, 4
  00157	50		 push	 eax
  00158	8b 85 ec fe ff
	ff		 mov	 eax, DWORD PTR _pszCardHauppaugeAnalog$145569[ebp]
  0015e	50		 push	 eax
  0015f	8b 4d f8	 mov	 ecx, DWORD PTR _pCard$[ebp]
  00162	51		 push	 ecx
  00163	e8 00 00 00 00	 call	 _wcsncmp
  00168	83 c4 0c	 add	 esp, 12			; 0000000cH
  0016b	85 c0		 test	 eax, eax
  0016d	75 5f		 jne	 SHORT $LN6@AutoDetect@4

; 219  :         {
; 220  :             if (Eeprom[CX_EEPROM_OFFSET + 0] != 0x84 || Eeprom[CX_EEPROM_OFFSET + 2] != 0)

  0016f	0f b6 95 f8 fe
	ff ff		 movzx	 edx, BYTE PTR _Eeprom$145547[ebp+8]
  00176	81 fa 84 00 00
	00		 cmp	 edx, 132		; 00000084H
  0017c	75 0b		 jne	 SHORT $LN4@AutoDetect@4
  0017e	0f b6 85 fa fe
	ff ff		 movzx	 eax, BYTE PTR _Eeprom$145547[ebp+10]
  00185	85 c0		 test	 eax, eax
  00187	74 11		 je	 SHORT $LN5@AutoDetect@4
$LN4@AutoDetect@4:

; 221  :             {
; 222  :                 LOG(1, _T("AutoDetectTuner: Hauppauge CX2388x Card fails."));

  00189	68 00 00 00 00	 push	 OFFSET ??_C@_1FO@EMLJGNIE@?$AAA?$AAu?$AAt?$AAo?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAT?$AAu?$AAn?$AAe?$AAr?$AA?3?$AA?5?$AAH?$AAa?$AAu?$AAp?$AAp?$AAa?$AAu?$AAg?$AAe?$AA?5?$AAC?$AAX?$AA2?$AA3?$AA8@
  0018e	6a 01		 push	 1
  00190	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00195	83 c4 08	 add	 esp, 8

; 223  :             }
; 224  :             else

  00198	eb 34		 jmp	 SHORT $LN6@AutoDetect@4
$LN5@AutoDetect@4:

; 225  :             {
; 226  :                 LOG(2, _T("AutoDetectTuner: Hauppauge CX2388x Card. TunerId: 0x%02X"),Eeprom[CX_EEPROM_OFFSET + 9]);

  0019a	0f b6 8d 01 ff
	ff ff		 movzx	 ecx, BYTE PTR _Eeprom$145547[ebp+17]
  001a1	51		 push	 ecx
  001a2	68 00 00 00 00	 push	 OFFSET ??_C@_1HC@JLJFKAFK@?$AAA?$AAu?$AAt?$AAo?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAT?$AAu?$AAn?$AAe?$AAr?$AA?3?$AA?5?$AAH?$AAa?$AAu?$AAp?$AAp?$AAa?$AAu?$AAg?$AAe?$AA?5?$AAC?$AAX?$AA2?$AA3?$AA8@
  001a7	6a 02		 push	 2
  001a9	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  001ae	83 c4 0c	 add	 esp, 12			; 0000000cH

; 227  :                 if (Eeprom[CX_EEPROM_OFFSET + 9] < (sizeof(m_TunerHauppaugeAnalog) / sizeof(m_TunerHauppaugeAnalog[0])))

  001b1	0f b6 95 01 ff
	ff ff		 movzx	 edx, BYTE PTR _Eeprom$145547[ebp+17]
  001b8	83 fa 62	 cmp	 edx, 98			; 00000062H
  001bb	73 11		 jae	 SHORT $LN6@AutoDetect@4

; 228  :                 {
; 229  :                     Tuner = m_TunerHauppaugeAnalog[Eeprom[CX_EEPROM_OFFSET + 9]];

  001bd	0f b6 85 01 ff
	ff ff		 movzx	 eax, BYTE PTR _Eeprom$145547[ebp+17]
  001c4	8b 0c 85 00 00
	00 00		 mov	 ecx, DWORD PTR _m_TunerHauppaugeAnalog[eax*4]
  001cb	89 4d f4	 mov	 DWORD PTR _Tuner$145546[ebp], ecx
$LN6@AutoDetect@4:

; 230  :                 }
; 231  :             }
; 232  :         }
; 233  : 
; 234  :         return Tuner;

  001ce	8b 45 f4	 mov	 eax, DWORD PTR _Tuner$145546[ebp]
  001d1	eb 0b		 jmp	 SHORT $LN13@AutoDetect@4

; 235  :     }
; 236  : 
; 237  :     else

  001d3	eb 09		 jmp	 SHORT $LN13@AutoDetect@4
$LN10@AutoDetect@4:

; 238  :     {
; 239  :         return pCard->TunerId;

  001d5	8b 55 f8	 mov	 edx, DWORD PTR _pCard$[ebp]
  001d8	8b 82 60 06 00
	00		 mov	 eax, DWORD PTR [edx+1632]
$LN13@AutoDetect@4:

; 240  :     }
; 241  : }

  001de	8b 4d f0	 mov	 ecx, DWORD PTR __$ArrayPad$[ebp]
  001e1	33 cd		 xor	 ecx, ebp
  001e3	e8 00 00 00 00	 call	 @__security_check_cookie@4
  001e8	8b e5		 mov	 esp, ebp
  001ea	5d		 pop	 ebp
  001eb	c2 04 00	 ret	 4
?AutoDetectTuner@CCX2388xCard@@QAE?AW4eTunerId@@W4eCX2388xCardId@@@Z ENDP ; CCX2388xCard::AutoDetectTuner
_TEXT	ENDS
PUBLIC	?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z	; CCX2388xCard::InitTuner
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$0
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$1
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$2
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$3
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$4
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$5
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$6
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$7
	DD	07H
	DD	FLAT:__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$8
	DD	08H
	DD	FLAT:__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$9
	DD	08H
	DD	FLAT:__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$10
	DD	07H
	DD	FLAT:__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$11
	DD	07H
	DD	FLAT:__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$12
	DD	0cH
	DD	FLAT:__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$13
	DD	07H
	DD	FLAT:__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$14
__ehfuncinfo$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z DD 019930522H
	DD	0fH
	DD	FLAT:__unwindtable$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z
_TEXT	SEGMENT
tv488 = -408						; size = 4
tv467 = -404						; size = 4
tv511 = -400						; size = 4
tv423 = -396						; size = 4
tv414 = -392						; size = 4
tv383 = -388						; size = 4
tv361 = -384						; size = 4
tv508 = -380						; size = 4
tv554 = -376						; size = 4
tv341 = -372						; size = 4
tv326 = -368						; size = 4
tv505 = -364						; size = 4
tv503 = -360						; size = 4
tv502 = -356						; size = 4
tv262 = -352						; size = 4
tv286 = -348						; size = 4
tv230 = -344						; size = 4
tv224 = -340						; size = 4
tv206 = -336						; size = 4
tv189 = -332						; size = 4
tv172 = -328						; size = 4
tv154 = -324						; size = 4
tv136 = -320						; size = 4
tv86 = -316						; size = 4
tv70 = -312						; size = 4
_this$ = -308						; size = 4
$T348519 = -304						; size = 4
$T348516 = -300						; size = 4
$T348515 = -296						; size = 4
$T348514 = -292						; size = 28
$T348513 = -264						; size = 8
$T348512 = -254						; size = 2
$T348511 = -252						; size = 4
$T348510 = -248						; size = 8
$T348509 = -240						; size = 4
$T348506 = -236						; size = 4
$T348505 = -232						; size = 4
$T348502 = -228						; size = 4
$T348501 = -224						; size = 4
$T348498 = -220						; size = 4
$T348497 = -216						; size = 4
$T348494 = -212						; size = 4
$T348493 = -208						; size = 4
$T348490 = -204						; size = 4
$T348489 = -200						; size = 4
$T348486 = -196						; size = 4
$T348485 = -192						; size = 4
$T348482 = -188						; size = 4
$T348481 = -184						; size = 4
_oss$145386 = -180					; size = 128
_i$145361 = -48						; size = 4
_count$145360 = -44					; size = 4
_pTDA9887$145358 = -40					; size = 8
_bFoundTuner$ = -32					; size = 4
_test$ = -25						; size = 1
_pExternalIFDemodulator$ = -24				; size = 8
_videoFormat$ = -16					; size = 4
__$EHRec$ = -12						; size = 12
_tunerId$ = 8						; size = 4
?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z PROC	; CCX2388xCard::InitTuner, COMDAT
; _this$ = ecx

; 42   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	81 ec 8c 01 00
	00		 sub	 esp, 396		; 0000018cH
  00017	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  0001c	33 c5		 xor	 eax, ebp
  0001e	50		 push	 eax
  0001f	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  00022	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00028	89 8d cc fe ff
	ff		 mov	 DWORD PTR _this$[ebp], ecx

; 43   :     // clean up if we get called twice
; 44   :     if(m_Tuner.IsValid())

  0002e	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00034	83 c1 70	 add	 ecx, 112		; 00000070H
  00037	e8 00 00 00 00	 call	 ?IsValid@?$SmartPtr@VII2CTuner@@@@QBEHXZ ; SmartPtr<II2CTuner>::IsValid
  0003c	85 c0		 test	 eax, eax
  0003e	74 10		 je	 SHORT $LN28@InitTuner@2

; 45   :     {
; 46   :         m_Tuner = 0L;

  00040	6a 00		 push	 0
  00042	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00048	83 c1 70	 add	 ecx, 112		; 00000070H
  0004b	e8 00 00 00 00	 call	 ??4?$SmartPtr@VII2CTuner@@@@QAEAAV0@PAVII2CTuner@@@Z ; SmartPtr<II2CTuner>::operator=
$LN28@InitTuner@2:

; 47   :     }
; 48   : 
; 49   :     switch (tunerId)

  00050	8b 45 08	 mov	 eax, DWORD PTR _tunerId$[ebp]
  00053	89 85 c8 fe ff
	ff		 mov	 DWORD PTR tv70[ebp], eax
  00059	8b 8d c8 fe ff
	ff		 mov	 ecx, DWORD PTR tv70[ebp]
  0005f	83 c1 02	 add	 ecx, 2
  00062	89 8d c8 fe ff
	ff		 mov	 DWORD PTR tv70[ebp], ecx
  00068	83 bd c8 fe ff
	ff 3d		 cmp	 DWORD PTR tv70[ebp], 61	; 0000003dH
  0006f	0f 87 19 03 00
	00		 ja	 $LN19@InitTuner@2
  00075	8b 95 c8 fe ff
	ff		 mov	 edx, DWORD PTR tv70[ebp]
  0007b	0f b6 82 00 00
	00 00		 movzx	 eax, BYTE PTR $LN62@InitTuner@2[edx]
  00082	ff 24 85 00 00
	00 00		 jmp	 DWORD PTR $LN64@InitTuner@2[eax*4]
$LN25@InitTuner@2:

; 50   :     {
; 51   :     case TUNER_MT2032:
; 52   :         m_Tuner = new CMT2032(VIDEOFORMAT_NTSC_M);

  00089	6a 2c		 push	 44			; 0000002cH
  0008b	e8 00 00 00 00	 call	 ??2@YAPAXI@Z		; operator new
  00090	83 c4 04	 add	 esp, 4
  00093	89 85 44 ff ff
	ff		 mov	 DWORD PTR $T348482[ebp], eax
  00099	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  000a0	83 bd 44 ff ff
	ff 00		 cmp	 DWORD PTR $T348482[ebp], 0
  000a7	74 15		 je	 SHORT $LN31@InitTuner@2
  000a9	6a 11		 push	 17			; 00000011H
  000ab	8b 8d 44 ff ff
	ff		 mov	 ecx, DWORD PTR $T348482[ebp]
  000b1	e8 00 00 00 00	 call	 ??0CMT2032@@QAE@W4eVideoFormat@@@Z ; CMT2032::CMT2032
  000b6	89 85 c4 fe ff
	ff		 mov	 DWORD PTR tv86[ebp], eax
  000bc	eb 0a		 jmp	 SHORT $LN32@InitTuner@2
$LN31@InitTuner@2:
  000be	c7 85 c4 fe ff
	ff 00 00 00 00	 mov	 DWORD PTR tv86[ebp], 0
$LN32@InitTuner@2:
  000c8	8b 8d c4 fe ff
	ff		 mov	 ecx, DWORD PTR tv86[ebp]
  000ce	89 8d 48 ff ff
	ff		 mov	 DWORD PTR $T348481[ebp], ecx
  000d4	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  000db	8b 95 48 ff ff
	ff		 mov	 edx, DWORD PTR $T348481[ebp]
  000e1	52		 push	 edx
  000e2	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  000e8	83 c1 70	 add	 ecx, 112		; 00000070H
  000eb	e8 00 00 00 00	 call	 ??4?$SmartPtr@VII2CTuner@@@@QAEAAV0@PAVII2CTuner@@@Z ; SmartPtr<II2CTuner>::operator=

; 53   :         m_TunerType = _T("MT2032 ");

  000f0	68 00 00 00 00	 push	 OFFSET ??_C@_1BA@HIPEDDCK@?$AAM?$AAT?$AA2?$AA0?$AA3?$AA2?$AA?5?$AA?$AA@
  000f5	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  000fb	81 c1 94 00 00
	00		 add	 ecx, 148		; 00000094H
  00101	e8 00 00 00 00	 call	 ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator=

; 54   :         break;

  00106	e9 02 03 00 00	 jmp	 $LN26@InitTuner@2
$LN24@InitTuner@2:

; 55   :     case TUNER_MT2032_PAL:
; 56   :         m_Tuner = new CMT2032(VIDEOFORMAT_PAL_B);

  0010b	6a 2c		 push	 44			; 0000002cH
  0010d	e8 00 00 00 00	 call	 ??2@YAPAXI@Z		; operator new
  00112	83 c4 04	 add	 esp, 4
  00115	89 85 3c ff ff
	ff		 mov	 DWORD PTR $T348486[ebp], eax
  0011b	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 1
  00122	83 bd 3c ff ff
	ff 00		 cmp	 DWORD PTR $T348486[ebp], 0
  00129	74 15		 je	 SHORT $LN33@InitTuner@2
  0012b	6a 00		 push	 0
  0012d	8b 8d 3c ff ff
	ff		 mov	 ecx, DWORD PTR $T348486[ebp]
  00133	e8 00 00 00 00	 call	 ??0CMT2032@@QAE@W4eVideoFormat@@@Z ; CMT2032::CMT2032
  00138	89 85 c0 fe ff
	ff		 mov	 DWORD PTR tv136[ebp], eax
  0013e	eb 0a		 jmp	 SHORT $LN34@InitTuner@2
$LN33@InitTuner@2:
  00140	c7 85 c0 fe ff
	ff 00 00 00 00	 mov	 DWORD PTR tv136[ebp], 0
$LN34@InitTuner@2:
  0014a	8b 85 c0 fe ff
	ff		 mov	 eax, DWORD PTR tv136[ebp]
  00150	89 85 40 ff ff
	ff		 mov	 DWORD PTR $T348485[ebp], eax
  00156	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  0015d	8b 8d 40 ff ff
	ff		 mov	 ecx, DWORD PTR $T348485[ebp]
  00163	51		 push	 ecx
  00164	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0016a	83 c1 70	 add	 ecx, 112		; 00000070H
  0016d	e8 00 00 00 00	 call	 ??4?$SmartPtr@VII2CTuner@@@@QAEAAV0@PAVII2CTuner@@@Z ; SmartPtr<II2CTuner>::operator=

; 57   :         m_TunerType = _T("MT2032 ");

  00172	68 00 00 00 00	 push	 OFFSET ??_C@_1BA@HIPEDDCK@?$AAM?$AAT?$AA2?$AA0?$AA3?$AA2?$AA?5?$AA?$AA@
  00177	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0017d	81 c1 94 00 00
	00		 add	 ecx, 148		; 00000094H
  00183	e8 00 00 00 00	 call	 ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator=

; 58   :         break;

  00188	e9 80 02 00 00	 jmp	 $LN26@InitTuner@2
$LN23@InitTuner@2:

; 59   :     case TUNER_MT2050:
; 60   :         m_Tuner = new CMT2050(VIDEOFORMAT_NTSC_M);

  0018d	6a 28		 push	 40			; 00000028H
  0018f	e8 00 00 00 00	 call	 ??2@YAPAXI@Z		; operator new
  00194	83 c4 04	 add	 esp, 4
  00197	89 85 34 ff ff
	ff		 mov	 DWORD PTR $T348490[ebp], eax
  0019d	c7 45 fc 02 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 2
  001a4	83 bd 34 ff ff
	ff 00		 cmp	 DWORD PTR $T348490[ebp], 0
  001ab	74 15		 je	 SHORT $LN35@InitTuner@2
  001ad	6a 11		 push	 17			; 00000011H
  001af	8b 8d 34 ff ff
	ff		 mov	 ecx, DWORD PTR $T348490[ebp]
  001b5	e8 00 00 00 00	 call	 ??0CMT2050@@QAE@W4eVideoFormat@@@Z ; CMT2050::CMT2050
  001ba	89 85 bc fe ff
	ff		 mov	 DWORD PTR tv154[ebp], eax
  001c0	eb 0a		 jmp	 SHORT $LN36@InitTuner@2
$LN35@InitTuner@2:
  001c2	c7 85 bc fe ff
	ff 00 00 00 00	 mov	 DWORD PTR tv154[ebp], 0
$LN36@InitTuner@2:
  001cc	8b 95 bc fe ff
	ff		 mov	 edx, DWORD PTR tv154[ebp]
  001d2	89 95 38 ff ff
	ff		 mov	 DWORD PTR $T348489[ebp], edx
  001d8	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  001df	8b 85 38 ff ff
	ff		 mov	 eax, DWORD PTR $T348489[ebp]
  001e5	50		 push	 eax
  001e6	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  001ec	83 c1 70	 add	 ecx, 112		; 00000070H
  001ef	e8 00 00 00 00	 call	 ??4?$SmartPtr@VII2CTuner@@@@QAEAAV0@PAVII2CTuner@@@Z ; SmartPtr<II2CTuner>::operator=

; 61   :         m_TunerType = _T("MT2050 ");

  001f4	68 00 00 00 00	 push	 OFFSET ??_C@_1BA@PDFDJLKG@?$AAM?$AAT?$AA2?$AA0?$AA5?$AA0?$AA?5?$AA?$AA@
  001f9	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  001ff	81 c1 94 00 00
	00		 add	 ecx, 148		; 00000094H
  00205	e8 00 00 00 00	 call	 ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator=

; 62   :         break;

  0020a	e9 fe 01 00 00	 jmp	 $LN26@InitTuner@2
$LN22@InitTuner@2:

; 63   :     case TUNER_MT2050_PAL:
; 64   :         m_Tuner = new CMT2050(VIDEOFORMAT_PAL_B);

  0020f	6a 28		 push	 40			; 00000028H
  00211	e8 00 00 00 00	 call	 ??2@YAPAXI@Z		; operator new
  00216	83 c4 04	 add	 esp, 4
  00219	89 85 2c ff ff
	ff		 mov	 DWORD PTR $T348494[ebp], eax
  0021f	c7 45 fc 03 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 3
  00226	83 bd 2c ff ff
	ff 00		 cmp	 DWORD PTR $T348494[ebp], 0
  0022d	74 15		 je	 SHORT $LN37@InitTuner@2
  0022f	6a 00		 push	 0
  00231	8b 8d 2c ff ff
	ff		 mov	 ecx, DWORD PTR $T348494[ebp]
  00237	e8 00 00 00 00	 call	 ??0CMT2050@@QAE@W4eVideoFormat@@@Z ; CMT2050::CMT2050
  0023c	89 85 b8 fe ff
	ff		 mov	 DWORD PTR tv172[ebp], eax
  00242	eb 0a		 jmp	 SHORT $LN38@InitTuner@2
$LN37@InitTuner@2:
  00244	c7 85 b8 fe ff
	ff 00 00 00 00	 mov	 DWORD PTR tv172[ebp], 0
$LN38@InitTuner@2:
  0024e	8b 8d b8 fe ff
	ff		 mov	 ecx, DWORD PTR tv172[ebp]
  00254	89 8d 30 ff ff
	ff		 mov	 DWORD PTR $T348493[ebp], ecx
  0025a	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  00261	8b 95 30 ff ff
	ff		 mov	 edx, DWORD PTR $T348493[ebp]
  00267	52		 push	 edx
  00268	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0026e	83 c1 70	 add	 ecx, 112		; 00000070H
  00271	e8 00 00 00 00	 call	 ??4?$SmartPtr@VII2CTuner@@@@QAEAAV0@PAVII2CTuner@@@Z ; SmartPtr<II2CTuner>::operator=

; 65   :         m_TunerType = _T("MT2050 ");

  00276	68 00 00 00 00	 push	 OFFSET ??_C@_1BA@PDFDJLKG@?$AAM?$AAT?$AA2?$AA0?$AA5?$AA0?$AA?5?$AA?$AA@
  0027b	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00281	81 c1 94 00 00
	00		 add	 ecx, 148		; 00000094H
  00287	e8 00 00 00 00	 call	 ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator=

; 66   :         break;

  0028c	e9 7c 01 00 00	 jmp	 $LN26@InitTuner@2
$LN21@InitTuner@2:

; 67   :     case TUNER_TDA8275:
; 68   :         m_Tuner = new CTDA8275();

  00291	6a 1c		 push	 28			; 0000001cH
  00293	e8 00 00 00 00	 call	 ??2@YAPAXI@Z		; operator new
  00298	83 c4 04	 add	 esp, 4
  0029b	89 85 24 ff ff
	ff		 mov	 DWORD PTR $T348498[ebp], eax
  002a1	c7 45 fc 04 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 4
  002a8	83 bd 24 ff ff
	ff 00		 cmp	 DWORD PTR $T348498[ebp], 0
  002af	74 13		 je	 SHORT $LN39@InitTuner@2
  002b1	8b 8d 24 ff ff
	ff		 mov	 ecx, DWORD PTR $T348498[ebp]
  002b7	e8 00 00 00 00	 call	 ??0CTDA8275@@QAE@XZ	; CTDA8275::CTDA8275
  002bc	89 85 b4 fe ff
	ff		 mov	 DWORD PTR tv189[ebp], eax
  002c2	eb 0a		 jmp	 SHORT $LN40@InitTuner@2
$LN39@InitTuner@2:
  002c4	c7 85 b4 fe ff
	ff 00 00 00 00	 mov	 DWORD PTR tv189[ebp], 0
$LN40@InitTuner@2:
  002ce	8b 85 b4 fe ff
	ff		 mov	 eax, DWORD PTR tv189[ebp]
  002d4	89 85 28 ff ff
	ff		 mov	 DWORD PTR $T348497[ebp], eax
  002da	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  002e1	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR $T348497[ebp]
  002e7	51		 push	 ecx
  002e8	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  002ee	83 c1 70	 add	 ecx, 112		; 00000070H
  002f1	e8 00 00 00 00	 call	 ??4?$SmartPtr@VII2CTuner@@@@QAEAAV0@PAVII2CTuner@@@Z ; SmartPtr<II2CTuner>::operator=

; 69   :         m_TunerType = _T("TDA8275 ");

  002f6	68 00 00 00 00	 push	 OFFSET ??_C@_1BC@CEDFBGIN@?$AAT?$AAD?$AAA?$AA8?$AA2?$AA7?$AA5?$AA?5?$AA?$AA@
  002fb	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00301	81 c1 94 00 00
	00		 add	 ecx, 148		; 00000094H
  00307	e8 00 00 00 00	 call	 ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator=

; 70   :         break;

  0030c	e9 fc 00 00 00	 jmp	 $LN26@InitTuner@2
$LN20@InitTuner@2:

; 71   :     case TUNER_AUTODETECT:
; 72   :     case TUNER_USER_SETUP:
; 73   :     case TUNER_ABSENT:
; 74   :         m_Tuner = new CNoTuner();

  00311	6a 18		 push	 24			; 00000018H
  00313	e8 00 00 00 00	 call	 ??2@YAPAXI@Z		; operator new
  00318	83 c4 04	 add	 esp, 4
  0031b	89 85 1c ff ff
	ff		 mov	 DWORD PTR $T348502[ebp], eax
  00321	c7 45 fc 05 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 5
  00328	83 bd 1c ff ff
	ff 00		 cmp	 DWORD PTR $T348502[ebp], 0
  0032f	74 13		 je	 SHORT $LN41@InitTuner@2
  00331	8b 8d 1c ff ff
	ff		 mov	 ecx, DWORD PTR $T348502[ebp]
  00337	e8 00 00 00 00	 call	 ??0CNoTuner@@QAE@XZ	; CNoTuner::CNoTuner
  0033c	89 85 b0 fe ff
	ff		 mov	 DWORD PTR tv206[ebp], eax
  00342	eb 0a		 jmp	 SHORT $LN42@InitTuner@2
$LN41@InitTuner@2:
  00344	c7 85 b0 fe ff
	ff 00 00 00 00	 mov	 DWORD PTR tv206[ebp], 0
$LN42@InitTuner@2:
  0034e	8b 95 b0 fe ff
	ff		 mov	 edx, DWORD PTR tv206[ebp]
  00354	89 95 20 ff ff
	ff		 mov	 DWORD PTR $T348501[ebp], edx
  0035a	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  00361	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR $T348501[ebp]
  00367	50		 push	 eax
  00368	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0036e	83 c1 70	 add	 ecx, 112		; 00000070H
  00371	e8 00 00 00 00	 call	 ??4?$SmartPtr@VII2CTuner@@@@QAEAAV0@PAVII2CTuner@@@Z ; SmartPtr<II2CTuner>::operator=

; 75   :         m_TunerType = _T("None ");

  00376	68 00 00 00 00	 push	 OFFSET ??_C@_1M@EAPOIBNN@?$AAN?$AAo?$AAn?$AAe?$AA?5?$AA?$AA@
  0037b	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00381	81 c1 94 00 00
	00		 add	 ecx, 148		; 00000094H
  00387	e8 00 00 00 00	 call	 ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator=

; 76   :         break;

  0038c	eb 7f		 jmp	 SHORT $LN26@InitTuner@2
$LN19@InitTuner@2:

; 77   :     default:
; 78   :         m_Tuner = new CGenericTuner(tunerId);

  0038e	6a 30		 push	 48			; 00000030H
  00390	e8 00 00 00 00	 call	 ??2@YAPAXI@Z		; operator new
  00395	83 c4 04	 add	 esp, 4
  00398	89 85 14 ff ff
	ff		 mov	 DWORD PTR $T348506[ebp], eax
  0039e	c7 45 fc 06 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 6
  003a5	83 bd 14 ff ff
	ff 00		 cmp	 DWORD PTR $T348506[ebp], 0
  003ac	74 17		 je	 SHORT $LN43@InitTuner@2
  003ae	8b 4d 08	 mov	 ecx, DWORD PTR _tunerId$[ebp]
  003b1	51		 push	 ecx
  003b2	8b 8d 14 ff ff
	ff		 mov	 ecx, DWORD PTR $T348506[ebp]
  003b8	e8 00 00 00 00	 call	 ??0CGenericTuner@@QAE@W4eTunerId@@@Z ; CGenericTuner::CGenericTuner
  003bd	89 85 ac fe ff
	ff		 mov	 DWORD PTR tv224[ebp], eax
  003c3	eb 0a		 jmp	 SHORT $LN44@InitTuner@2
$LN43@InitTuner@2:
  003c5	c7 85 ac fe ff
	ff 00 00 00 00	 mov	 DWORD PTR tv224[ebp], 0
$LN44@InitTuner@2:
  003cf	8b 95 ac fe ff
	ff		 mov	 edx, DWORD PTR tv224[ebp]
  003d5	89 95 18 ff ff
	ff		 mov	 DWORD PTR $T348505[ebp], edx
  003db	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  003e2	8b 85 18 ff ff
	ff		 mov	 eax, DWORD PTR $T348505[ebp]
  003e8	50		 push	 eax
  003e9	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  003ef	83 c1 70	 add	 ecx, 112		; 00000070H
  003f2	e8 00 00 00 00	 call	 ??4?$SmartPtr@VII2CTuner@@@@QAEAAV0@PAVII2CTuner@@@Z ; SmartPtr<II2CTuner>::operator=

; 79   :         m_TunerType = _T("Generic ");

  003f7	68 00 00 00 00	 push	 OFFSET ??_C@_1BC@GEKCOHGJ@?$AAG?$AAe?$AAn?$AAe?$AAr?$AAi?$AAc?$AA?5?$AA?$AA@
  003fc	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00402	81 c1 94 00 00
	00		 add	 ecx, 148		; 00000094H
  00408	e8 00 00 00 00	 call	 ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator=
$LN26@InitTuner@2:

; 80   :         break;
; 81   :     }
; 82   : 
; 83   :     // Finished if tuner type is CNoTuner
; 84   :     switch (tunerId)

  0040d	8b 4d 08	 mov	 ecx, DWORD PTR _tunerId$[ebp]
  00410	89 8d a8 fe ff
	ff		 mov	 DWORD PTR tv230[ebp], ecx
  00416	83 bd a8 fe ff
	ff fe		 cmp	 DWORD PTR tv230[ebp], -2 ; fffffffeH
  0041d	7c 15		 jl	 SHORT $LN17@InitTuner@2
  0041f	83 bd a8 fe ff
	ff 00		 cmp	 DWORD PTR tv230[ebp], 0
  00426	7e 02		 jle	 SHORT $LN16@InitTuner@2
  00428	eb 0a		 jmp	 SHORT $LN17@InitTuner@2
$LN16@InitTuner@2:

; 85   :     {
; 86   :     case TUNER_AUTODETECT:
; 87   :     case TUNER_USER_SETUP:
; 88   :     case TUNER_ABSENT:
; 89   :         return TRUE;

  0042a	b8 01 00 00 00	 mov	 eax, 1
  0042f	e9 05 05 00 00	 jmp	 $LN29@InitTuner@2
$LN17@InitTuner@2:

; 90   :     }
; 91   : 
; 92   :     // Look for possible external IF demodulator
; 93   :     SmartPtr<IExternalIFDemodulator> pExternalIFDemodulator;

  00434	8d 4d e8	 lea	 ecx, DWORD PTR _pExternalIFDemodulator$[ebp]
  00437	e8 00 00 00 00	 call	 ??0?$SmartPtr@VIExternalIFDemodulator@@@@QAE@XZ ; SmartPtr<IExternalIFDemodulator>::SmartPtr<IExternalIFDemodulator>
  0043c	c7 45 fc 07 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 7

; 94   : 
; 95   :     // TDA8275s are paired with a TDA8290.
; 96   :     if (tunerId == TUNER_TDA8275)

  00443	83 7d 08 3b	 cmp	 DWORD PTR _tunerId$[ebp], 59 ; 0000003bH
  00447	75 20		 jne	 SHORT $LN15@InitTuner@2

; 97   :     {
; 98   :         // Have a TDA8290 object detected and created.
; 99   :         pExternalIFDemodulator = CTDA8290::CreateDetectedTDA8290(m_I2CBus.GetRawPointer());

  00449	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0044f	83 c1 68	 add	 ecx, 104		; 00000068H
  00452	e8 00 00 00 00	 call	 ?GetRawPointer@?$SmartPtr@VCI2CBus@@@@QBEPAVCI2CBus@@XZ ; SmartPtr<CI2CBus>::GetRawPointer
  00457	50		 push	 eax
  00458	e8 00 00 00 00	 call	 ?CreateDetectedTDA8290@CTDA8290@@SAPAV1@PAVCI2CBus@@@Z ; CTDA8290::CreateDetectedTDA8290
  0045d	83 c4 04	 add	 esp, 4
  00460	50		 push	 eax
  00461	8d 4d e8	 lea	 ecx, DWORD PTR _pExternalIFDemodulator$[ebp]
  00464	e8 00 00 00 00	 call	 ??4?$SmartPtr@VIExternalIFDemodulator@@@@QAEAAV0@PAVIExternalIFDemodulator@@@Z ; SmartPtr<IExternalIFDemodulator>::operator=
$LN15@InitTuner@2:

; 100  :     }
; 101  : 
; 102  :     if (!pExternalIFDemodulator.IsValid())

  00469	8d 4d e8	 lea	 ecx, DWORD PTR _pExternalIFDemodulator$[ebp]
  0046c	e8 00 00 00 00	 call	 ?IsValid@?$SmartPtr@VIExternalIFDemodulator@@@@QBEHXZ ; SmartPtr<IExternalIFDemodulator>::IsValid
  00471	85 c0		 test	 eax, eax
  00473	0f 85 59 01 00
	00		 jne	 $LN14@InitTuner@2

; 103  :     {
; 104  :         // bUseTDA9887 is the setting in CX2388xCards.ini.
; 105  :         if (m_CX2388xCards[m_CardType].bUseTDA9887)

  00479	8b 95 cc fe ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0047f	8b 42 64	 mov	 eax, DWORD PTR [edx+100]
  00482	50		 push	 eax
  00483	b9 00 00 00 00	 mov	 ecx, OFFSET ?m_CX2388xCards@CCX2388xCard@@0V?$vector@VCCardTypeEx@CCX2388xCard@@V?$allocator@VCCardTypeEx@CCX2388xCard@@@std@@@std@@A ; CCX2388xCard::m_CX2388xCards
  00488	e8 00 00 00 00	 call	 ??A?$vector@VCCardTypeEx@CCX2388xCard@@V?$allocator@VCCardTypeEx@CCX2388xCard@@@std@@@std@@QAEAAVCCardTypeEx@CCX2388xCard@@I@Z ; std::vector<CCX2388xCard::CCardTypeEx,std::allocator<CCX2388xCard::CCardTypeEx> >::operator[]
  0048d	83 b8 70 06 00
	00 00		 cmp	 DWORD PTR [eax+1648], 0
  00494	0f 84 38 01 00
	00		 je	 $LN14@InitTuner@2

; 106  :         {
; 107  :             // Have a TDA9887 object detected and created.
; 108  :             SmartPtr<CTDA9887Ex> pTDA9887(CTDA9887Ex::CreateDetectedTDA9887Ex(m_I2CBus.GetRawPointer()));

  0049a	6a 00		 push	 0
  0049c	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  004a2	83 c1 68	 add	 ecx, 104		; 00000068H
  004a5	e8 00 00 00 00	 call	 ?GetRawPointer@?$SmartPtr@VCI2CBus@@@@QBEPAVCI2CBus@@XZ ; SmartPtr<CI2CBus>::GetRawPointer
  004aa	50		 push	 eax
  004ab	e8 00 00 00 00	 call	 ?CreateDetectedTDA9887Ex@CTDA9887Ex@@SAPAV1@PAVCI2CBus@@@Z ; CTDA9887Ex::CreateDetectedTDA9887Ex
  004b0	83 c4 04	 add	 esp, 4
  004b3	50		 push	 eax
  004b4	8d 4d d8	 lea	 ecx, DWORD PTR _pTDA9887$145358[ebp]
  004b7	e8 00 00 00 00	 call	 ??0?$SmartPtr@VCTDA9887Ex@@@@QAE@PAVCTDA9887Ex@@PAUCounter@@@Z ; SmartPtr<CTDA9887Ex>::SmartPtr<CTDA9887Ex>
  004bc	c6 45 fc 08	 mov	 BYTE PTR __$EHRec$[ebp+8], 8

; 109  : 
; 110  :             // If a TDA9887 was found.
; 111  :             if (pTDA9887.IsValid())

  004c0	8d 4d d8	 lea	 ecx, DWORD PTR _pTDA9887$145358[ebp]
  004c3	e8 00 00 00 00	 call	 ?IsValid@?$SmartPtr@VCTDA9887Ex@@@@QBEHXZ ; SmartPtr<CTDA9887Ex>::IsValid
  004c8	85 c0		 test	 eax, eax
  004ca	0f 84 f6 00 00
	00		 je	 $LN12@InitTuner@2

; 112  :             {
; 113  :                 // Set card specific modes that were parsed from CX2388xCards.ini.
; 114  :                 size_t count = m_CX2388xCards[m_CardType].tda9887Modes.size();

  004d0	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  004d6	8b 51 64	 mov	 edx, DWORD PTR [ecx+100]
  004d9	52		 push	 edx
  004da	b9 00 00 00 00	 mov	 ecx, OFFSET ?m_CX2388xCards@CCX2388xCard@@0V?$vector@VCCardTypeEx@CCX2388xCard@@V?$allocator@VCCardTypeEx@CCX2388xCard@@@std@@@std@@A ; CCX2388xCard::m_CX2388xCards
  004df	e8 00 00 00 00	 call	 ??A?$vector@VCCardTypeEx@CCX2388xCard@@V?$allocator@VCCardTypeEx@CCX2388xCard@@@std@@@std@@QAEAAVCCardTypeEx@CCX2388xCard@@I@Z ; std::vector<CCX2388xCard::CCardTypeEx,std::allocator<CCX2388xCard::CCardTypeEx> >::operator[]
  004e4	05 74 06 00 00	 add	 eax, 1652		; 00000674H
  004e9	8b c8		 mov	 ecx, eax
  004eb	e8 00 00 00 00	 call	 ?size@?$vector@UTTDA9887FormatModes@@V?$allocator@UTTDA9887FormatModes@@@std@@@std@@QBEIXZ ; std::vector<TTDA9887FormatModes,std::allocator<TTDA9887FormatModes> >::size
  004f0	89 45 d4	 mov	 DWORD PTR _count$145360[ebp], eax

; 115  :                 for (size_t i = 0; i < count; i++)

  004f3	c7 45 d0 00 00
	00 00		 mov	 DWORD PTR _i$145361[ebp], 0
  004fa	eb 09		 jmp	 SHORT $LN11@InitTuner@2
$LN10@InitTuner@2:
  004fc	8b 45 d0	 mov	 eax, DWORD PTR _i$145361[ebp]
  004ff	83 c0 01	 add	 eax, 1
  00502	89 45 d0	 mov	 DWORD PTR _i$145361[ebp], eax
$LN11@InitTuner@2:
  00505	8b 4d d0	 mov	 ecx, DWORD PTR _i$145361[ebp]
  00508	3b 4d d4	 cmp	 ecx, DWORD PTR _count$145360[ebp]
  0050b	73 48		 jae	 SHORT $LN9@InitTuner@2

; 116  :                 {
; 117  :                     pTDA9887->SetModes(&m_CX2388xCards[m_CardType].tda9887Modes[i]);

  0050d	8d 4d d8	 lea	 ecx, DWORD PTR _pTDA9887$145358[ebp]
  00510	e8 00 00 00 00	 call	 ??C?$SmartPtr@VCTDA9887Ex@@@@QBEPAVCTDA9887Ex@@XZ ; SmartPtr<CTDA9887Ex>::operator->
  00515	89 85 a4 fe ff
	ff		 mov	 DWORD PTR tv286[ebp], eax
  0051b	8b 55 d0	 mov	 edx, DWORD PTR _i$145361[ebp]
  0051e	52		 push	 edx
  0051f	8b 85 cc fe ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00525	8b 48 64	 mov	 ecx, DWORD PTR [eax+100]
  00528	51		 push	 ecx
  00529	b9 00 00 00 00	 mov	 ecx, OFFSET ?m_CX2388xCards@CCX2388xCard@@0V?$vector@VCCardTypeEx@CCX2388xCard@@V?$allocator@VCCardTypeEx@CCX2388xCard@@@std@@@std@@A ; CCX2388xCard::m_CX2388xCards
  0052e	e8 00 00 00 00	 call	 ??A?$vector@VCCardTypeEx@CCX2388xCard@@V?$allocator@VCCardTypeEx@CCX2388xCard@@@std@@@std@@QAEAAVCCardTypeEx@CCX2388xCard@@I@Z ; std::vector<CCX2388xCard::CCardTypeEx,std::allocator<CCX2388xCard::CCardTypeEx> >::operator[]
  00533	05 74 06 00 00	 add	 eax, 1652		; 00000674H
  00538	8b c8		 mov	 ecx, eax
  0053a	e8 00 00 00 00	 call	 ??A?$vector@UTTDA9887FormatModes@@V?$allocator@UTTDA9887FormatModes@@@std@@@std@@QAEAAUTTDA9887FormatModes@@I@Z ; std::vector<TTDA9887FormatModes,std::allocator<TTDA9887FormatModes> >::operator[]
  0053f	50		 push	 eax
  00540	8b 95 a4 fe ff
	ff		 mov	 edx, DWORD PTR tv286[ebp]
  00546	8b 02		 mov	 eax, DWORD PTR [edx]
  00548	8b 8d a4 fe ff
	ff		 mov	 ecx, DWORD PTR tv286[ebp]
  0054e	8b 50 24	 mov	 edx, DWORD PTR [eax+36]
  00551	ff d2		 call	 edx

; 118  :                 }

  00553	eb a7		 jmp	 SHORT $LN10@InitTuner@2
$LN9@InitTuner@2:

; 119  : 
; 120  :                 // Found a valid external IF demodulator.
; 121  :                 pExternalIFDemodulator = DynamicPtrCast<IExternalIFDemodulator>(pTDA9887);

  00555	83 ec 08	 sub	 esp, 8
  00558	8b cc		 mov	 ecx, esp
  0055a	89 a5 10 ff ff
	ff		 mov	 DWORD PTR $T348509[ebp], esp
  00560	8d 45 d8	 lea	 eax, DWORD PTR _pTDA9887$145358[ebp]
  00563	50		 push	 eax
  00564	e8 00 00 00 00	 call	 ??0?$SmartPtr@VCTDA9887Ex@@@@QAE@ABV0@@Z ; SmartPtr<CTDA9887Ex>::SmartPtr<CTDA9887Ex>
  00569	89 85 a0 fe ff
	ff		 mov	 DWORD PTR tv262[ebp], eax
  0056f	8b 8d a0 fe ff
	ff		 mov	 ecx, DWORD PTR tv262[ebp]
  00575	89 8d 9c fe ff
	ff		 mov	 DWORD PTR tv502[ebp], ecx
  0057b	c6 45 fc 09	 mov	 BYTE PTR __$EHRec$[ebp+8], 9
  0057f	8d 95 08 ff ff
	ff		 lea	 edx, DWORD PTR $T348510[ebp]
  00585	52		 push	 edx
  00586	c6 45 fc 08	 mov	 BYTE PTR __$EHRec$[ebp+8], 8
  0058a	e8 00 00 00 00	 call	 ??$DynamicPtrCast@VIExternalIFDemodulator@@VCTDA9887Ex@@@@YA?AV?$SmartPtr@VIExternalIFDemodulator@@@@V?$SmartPtr@VCTDA9887Ex@@@@@Z ; DynamicPtrCast<IExternalIFDemodulator,CTDA9887Ex>
  0058f	83 c4 0c	 add	 esp, 12			; 0000000cH
  00592	89 85 98 fe ff
	ff		 mov	 DWORD PTR tv503[ebp], eax
  00598	8b 85 98 fe ff
	ff		 mov	 eax, DWORD PTR tv503[ebp]
  0059e	89 85 94 fe ff
	ff		 mov	 DWORD PTR tv505[ebp], eax
  005a4	c6 45 fc 0a	 mov	 BYTE PTR __$EHRec$[ebp+8], 10 ; 0000000aH
  005a8	8b 8d 94 fe ff
	ff		 mov	 ecx, DWORD PTR tv505[ebp]
  005ae	51		 push	 ecx
  005af	8d 4d e8	 lea	 ecx, DWORD PTR _pExternalIFDemodulator$[ebp]
  005b2	e8 00 00 00 00	 call	 ??4?$SmartPtr@VIExternalIFDemodulator@@@@QAEAAV0@ABV0@@Z ; SmartPtr<IExternalIFDemodulator>::operator=
  005b7	c6 45 fc 08	 mov	 BYTE PTR __$EHRec$[ebp+8], 8
  005bb	8d 8d 08 ff ff
	ff		 lea	 ecx, DWORD PTR $T348510[ebp]
  005c1	e8 00 00 00 00	 call	 ??1?$SmartPtr@VIExternalIFDemodulator@@@@QAE@XZ ; SmartPtr<IExternalIFDemodulator>::~SmartPtr<IExternalIFDemodulator>
$LN12@InitTuner@2:

; 122  :             }
; 123  :         }

  005c6	c6 45 fc 07	 mov	 BYTE PTR __$EHRec$[ebp+8], 7
  005ca	8d 4d d8	 lea	 ecx, DWORD PTR _pTDA9887$145358[ebp]
  005cd	e8 00 00 00 00	 call	 ??1?$SmartPtr@VCTDA9887Ex@@@@QAE@XZ ; SmartPtr<CTDA9887Ex>::~SmartPtr<CTDA9887Ex>
$LN14@InitTuner@2:

; 124  :     }
; 125  : 
; 126  :     eVideoFormat videoFormat = m_Tuner->GetDefaultVideoFormat();

  005d2	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  005d8	83 c1 70	 add	 ecx, 112		; 00000070H
  005db	e8 00 00 00 00	 call	 ??C?$SmartPtr@VII2CTuner@@@@QBEPAVII2CTuner@@XZ ; SmartPtr<II2CTuner>::operator->
  005e0	89 85 90 fe ff
	ff		 mov	 DWORD PTR tv326[ebp], eax
  005e6	8b 95 90 fe ff
	ff		 mov	 edx, DWORD PTR tv326[ebp]
  005ec	8b 02		 mov	 eax, DWORD PTR [edx]
  005ee	8b 8d 90 fe ff
	ff		 mov	 ecx, DWORD PTR tv326[ebp]
  005f4	8b 50 0c	 mov	 edx, DWORD PTR [eax+12]
  005f7	ff d2		 call	 edx
  005f9	89 45 f0	 mov	 DWORD PTR _videoFormat$[ebp], eax

; 127  : 
; 128  :     if (pExternalIFDemodulator.IsValid())

  005fc	8d 4d e8	 lea	 ecx, DWORD PTR _pExternalIFDemodulator$[ebp]
  005ff	e8 00 00 00 00	 call	 ?IsValid@?$SmartPtr@VIExternalIFDemodulator@@@@QBEHXZ ; SmartPtr<IExternalIFDemodulator>::IsValid
  00604	85 c0		 test	 eax, eax
  00606	74 7c		 je	 SHORT $LN8@InitTuner@2

; 129  :     {
; 130  :         // Attach the IF demodulator to the tuner.
; 131  :         m_Tuner->AttachIFDem(pExternalIFDemodulator);

  00608	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0060e	83 c1 70	 add	 ecx, 112		; 00000070H
  00611	e8 00 00 00 00	 call	 ??C?$SmartPtr@VII2CTuner@@@@QBEPAVII2CTuner@@XZ ; SmartPtr<II2CTuner>::operator->
  00616	89 85 8c fe ff
	ff		 mov	 DWORD PTR tv341[ebp], eax
  0061c	83 ec 08	 sub	 esp, 8
  0061f	8b cc		 mov	 ecx, esp
  00621	89 a5 04 ff ff
	ff		 mov	 DWORD PTR $T348511[ebp], esp
  00627	8d 45 e8	 lea	 eax, DWORD PTR _pExternalIFDemodulator$[ebp]
  0062a	50		 push	 eax
  0062b	e8 00 00 00 00	 call	 ??0?$SmartPtr@VIExternalIFDemodulator@@@@QAE@ABV0@@Z ; SmartPtr<IExternalIFDemodulator>::SmartPtr<IExternalIFDemodulator>
  00630	89 85 88 fe ff
	ff		 mov	 DWORD PTR tv554[ebp], eax
  00636	8b 8d 88 fe ff
	ff		 mov	 ecx, DWORD PTR tv554[ebp]
  0063c	89 8d 84 fe ff
	ff		 mov	 DWORD PTR tv508[ebp], ecx
  00642	c6 45 fc 0b	 mov	 BYTE PTR __$EHRec$[ebp+8], 11 ; 0000000bH
  00646	8b 95 8c fe ff
	ff		 mov	 edx, DWORD PTR tv341[ebp]
  0064c	8b 02		 mov	 eax, DWORD PTR [edx]
  0064e	c6 45 fc 07	 mov	 BYTE PTR __$EHRec$[ebp+8], 7
  00652	8b 8d 8c fe ff
	ff		 mov	 ecx, DWORD PTR tv341[ebp]
  00658	8b 50 28	 mov	 edx, DWORD PTR [eax+40]
  0065b	ff d2		 call	 edx

; 132  :         // Let the IF demodulator know of pre-initialization.
; 133  :         pExternalIFDemodulator->Init(TRUE, videoFormat);

  0065d	8d 4d e8	 lea	 ecx, DWORD PTR _pExternalIFDemodulator$[ebp]
  00660	e8 00 00 00 00	 call	 ??C?$SmartPtr@VIExternalIFDemodulator@@@@QBEPAVIExternalIFDemodulator@@XZ ; SmartPtr<IExternalIFDemodulator>::operator->
  00665	89 85 80 fe ff
	ff		 mov	 DWORD PTR tv361[ebp], eax
  0066b	8b 45 f0	 mov	 eax, DWORD PTR _videoFormat$[ebp]
  0066e	50		 push	 eax
  0066f	6a 01		 push	 1
  00671	8b 8d 80 fe ff
	ff		 mov	 ecx, DWORD PTR tv361[ebp]
  00677	8b 11		 mov	 edx, DWORD PTR [ecx]
  00679	8b 8d 80 fe ff
	ff		 mov	 ecx, DWORD PTR tv361[ebp]
  0067f	8b 42 10	 mov	 eax, DWORD PTR [edx+16]
  00682	ff d0		 call	 eax
$LN8@InitTuner@2:

; 134  :     }
; 135  : 
; 136  :     // Scan the I2C bus addresses for tuners
; 137  :     BOOL bFoundTuner = FALSE;

  00684	c7 45 e0 00 00
	00 00		 mov	 DWORD PTR _bFoundTuner$[ebp], 0

; 138  : 
; 139  :     // Scan the I2C bus addresses 0xC0 - 0xCF for tuners.
; 140  :     BYTE test = IsTEA5767PresentAtC0(m_I2CBus.GetRawPointer()) ? 0xC2 : 0xC0;

  0068b	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00691	83 c1 68	 add	 ecx, 104		; 00000068H
  00694	e8 00 00 00 00	 call	 ?GetRawPointer@?$SmartPtr@VCI2CBus@@@@QBEPAVCI2CBus@@XZ ; SmartPtr<CI2CBus>::GetRawPointer
  00699	50		 push	 eax
  0069a	e8 00 00 00 00	 call	 ?IsTEA5767PresentAtC0@@YAHPAVCI2CBus@@@Z ; IsTEA5767PresentAtC0
  0069f	83 c4 04	 add	 esp, 4
  006a2	f7 d8		 neg	 eax
  006a4	1b c0		 sbb	 eax, eax
  006a6	83 e0 02	 and	 eax, 2
  006a9	05 c0 00 00 00	 add	 eax, 192		; 000000c0H
  006ae	88 45 e7	 mov	 BYTE PTR _test$[ebp], al

; 141  :     for ( ; test < 0xCF; test += 0x02)

  006b1	eb 0a		 jmp	 SHORT $LN7@InitTuner@2
$LN6@InitTuner@2:
  006b3	0f b6 4d e7	 movzx	 ecx, BYTE PTR _test$[ebp]
  006b7	83 c1 02	 add	 ecx, 2
  006ba	88 4d e7	 mov	 BYTE PTR _test$[ebp], cl
$LN7@InitTuner@2:
  006bd	0f b6 55 e7	 movzx	 edx, BYTE PTR _test$[ebp]
  006c1	81 fa cf 00 00
	00		 cmp	 edx, 207		; 000000cfH
  006c7	0f 8d 8d 01 00
	00		 jge	 $LN5@InitTuner@2

; 142  :     {
; 143  :         if (m_I2CBus->Write(&test, sizeof(test)))

  006cd	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  006d3	83 c1 68	 add	 ecx, 104		; 00000068H
  006d6	e8 00 00 00 00	 call	 ??C?$SmartPtr@VCI2CBus@@@@QBEPAVCI2CBus@@XZ ; SmartPtr<CI2CBus>::operator->
  006db	89 85 7c fe ff
	ff		 mov	 DWORD PTR tv383[ebp], eax
  006e1	6a 01		 push	 1
  006e3	8d 45 e7	 lea	 eax, DWORD PTR _test$[ebp]
  006e6	50		 push	 eax
  006e7	8b 8d 7c fe ff
	ff		 mov	 ecx, DWORD PTR tv383[ebp]
  006ed	8b 11		 mov	 edx, DWORD PTR [ecx]
  006ef	8b 8d 7c fe ff
	ff		 mov	 ecx, DWORD PTR tv383[ebp]
  006f5	8b 42 0c	 mov	 eax, DWORD PTR [edx+12]
  006f8	ff d0		 call	 eax
  006fa	85 c0		 test	 eax, eax
  006fc	0f 84 53 01 00
	00		 je	 $LN4@InitTuner@2

; 144  :         {
; 145  :             m_Tuner->SetI2CBus(m_I2CBus.GetRawPointer(), test>>1);

  00702	0f b6 4d e7	 movzx	 ecx, BYTE PTR _test$[ebp]
  00706	d1 f9		 sar	 ecx, 1
  00708	51		 push	 ecx
  00709	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0070f	83 c1 68	 add	 ecx, 104		; 00000068H
  00712	e8 00 00 00 00	 call	 ?GetRawPointer@?$SmartPtr@VCI2CBus@@@@QBEPAVCI2CBus@@XZ ; SmartPtr<CI2CBus>::GetRawPointer
  00717	50		 push	 eax
  00718	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0071e	83 c1 70	 add	 ecx, 112		; 00000070H
  00721	e8 00 00 00 00	 call	 ??C?$SmartPtr@VII2CTuner@@@@QBEPAVII2CTuner@@XZ ; SmartPtr<II2CTuner>::operator->
  00726	83 c0 0c	 add	 eax, 12			; 0000000cH
  00729	8b c8		 mov	 ecx, eax
  0072b	e8 00 00 00 00	 call	 ?SetI2CBus@CI2CDevice@@QAEXPAVCI2CBus@@E@Z ; CI2CDevice::SetI2CBus

; 146  : 
; 147  :             // Initialize the tuner.
; 148  :             if (m_Tuner->InitializeTuner())

  00730	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00736	83 c1 70	 add	 ecx, 112		; 00000070H
  00739	e8 00 00 00 00	 call	 ??C?$SmartPtr@VII2CTuner@@@@QBEPAVII2CTuner@@XZ ; SmartPtr<II2CTuner>::operator->
  0073e	89 85 78 fe ff
	ff		 mov	 DWORD PTR tv414[ebp], eax
  00744	8b 95 78 fe ff
	ff		 mov	 edx, DWORD PTR tv414[ebp]
  0074a	8b 02		 mov	 eax, DWORD PTR [edx]
  0074c	8b 8d 78 fe ff
	ff		 mov	 ecx, DWORD PTR tv414[ebp]
  00752	8b 50 04	 mov	 edx, DWORD PTR [eax+4]
  00755	ff d2		 call	 edx
  00757	85 c0		 test	 eax, eax
  00759	0f 84 f6 00 00
	00		 je	 $LN4@InitTuner@2

; 149  :             {
; 150  :                 bFoundTuner = TRUE;

  0075f	c7 45 e0 01 00
	00 00		 mov	 DWORD PTR _bFoundTuner$[ebp], 1

; 151  :                 m_TunerType += _T("@ I2C address 0x");

  00766	68 00 00 00 00	 push	 OFFSET ??_C@_1CC@HNAFPJNP@?$AA?$EA?$AA?5?$AAI?$AA2?$AAC?$AA?5?$AAa?$AAd?$AAd?$AAr?$AAe?$AAs?$AAs?$AA?5?$AA0?$AAx?$AA?$AA@
  0076b	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00771	81 c1 94 00 00
	00		 add	 ecx, 148		; 00000094H
  00777	e8 00 00 00 00	 call	 ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator+=

; 152  :                 tostringstream oss;

  0077c	6a 01		 push	 1
  0077e	6a 02		 push	 2
  00780	8d 8d 4c ff ff
	ff		 lea	 ecx, DWORD PTR _oss$145386[ebp]
  00786	e8 00 00 00 00	 call	 ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z ; std::basic_ostringstream<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_ostringstream<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  0078b	c6 45 fc 0c	 mov	 BYTE PTR __$EHRec$[ebp+8], 12 ; 0000000cH

; 153  :                 oss << hex << setw(2) << setfill((TCHAR)'0') << test;

  0078f	0f b6 45 e7	 movzx	 eax, BYTE PTR _test$[ebp]
  00793	50		 push	 eax
  00794	6a 30		 push	 48			; 00000030H
  00796	8d 8d 02 ff ff
	ff		 lea	 ecx, DWORD PTR $T348512[ebp]
  0079c	51		 push	 ecx
  0079d	e8 00 00 00 00	 call	 ??$setfill@_W@std@@YA?AU?$_Fillobj@_W@0@_W@Z ; std::setfill<wchar_t>
  007a2	83 c4 08	 add	 esp, 8
  007a5	50		 push	 eax
  007a6	6a 02		 push	 2
  007a8	8d 95 f8 fe ff
	ff		 lea	 edx, DWORD PTR $T348513[ebp]
  007ae	52		 push	 edx
  007af	e8 00 00 00 00	 call	 ?setw@std@@YA?AU?$_Smanip@H@1@H@Z ; std::setw
  007b4	83 c4 08	 add	 esp, 8
  007b7	50		 push	 eax
  007b8	68 00 00 00 00	 push	 OFFSET ?hex@std@@YAAAVios_base@1@AAV21@@Z ; std::hex
  007bd	8d 8d 4c ff ff
	ff		 lea	 ecx, DWORD PTR _oss$145386[ebp]
  007c3	e8 00 00 00 00	 call	 ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z ; std::basic_ostream<wchar_t,std::char_traits<wchar_t> >::operator<<
  007c8	50		 push	 eax
  007c9	e8 00 00 00 00	 call	 ??$?6_WU?$char_traits@_W@std@@H@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@ABU?$_Smanip@H@0@@Z ; std::operator<<<wchar_t,std::char_traits<wchar_t>,int>
  007ce	83 c4 08	 add	 esp, 8
  007d1	50		 push	 eax
  007d2	e8 00 00 00 00	 call	 ??$?6_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@ABU?$_Fillobj@_W@0@@Z ; std::operator<<<wchar_t,std::char_traits<wchar_t> >
  007d7	83 c4 08	 add	 esp, 8
  007da	8b c8		 mov	 ecx, eax
  007dc	e8 00 00 00 00	 call	 ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@H@Z ; std::basic_ostream<wchar_t,std::char_traits<wchar_t> >::operator<<

; 154  :                 m_TunerType += oss.str();

  007e1	8d 85 dc fe ff
	ff		 lea	 eax, DWORD PTR $T348514[ebp]
  007e7	50		 push	 eax
  007e8	8d 8d 4c ff ff
	ff		 lea	 ecx, DWORD PTR _oss$145386[ebp]
  007ee	e8 00 00 00 00	 call	 ?str@?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ ; std::basic_ostringstream<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::str
  007f3	89 85 74 fe ff
	ff		 mov	 DWORD PTR tv423[ebp], eax
  007f9	8b 8d 74 fe ff
	ff		 mov	 ecx, DWORD PTR tv423[ebp]
  007ff	89 8d 70 fe ff
	ff		 mov	 DWORD PTR tv511[ebp], ecx
  00805	c6 45 fc 0d	 mov	 BYTE PTR __$EHRec$[ebp+8], 13 ; 0000000dH
  00809	8b 95 70 fe ff
	ff		 mov	 edx, DWORD PTR tv511[ebp]
  0080f	52		 push	 edx
  00810	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00816	81 c1 94 00 00
	00		 add	 ecx, 148		; 00000094H
  0081c	e8 00 00 00 00	 call	 ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@ABV01@@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator+=
  00821	c6 45 fc 0c	 mov	 BYTE PTR __$EHRec$[ebp+8], 12 ; 0000000cH
  00825	8d 8d dc fe ff
	ff		 lea	 ecx, DWORD PTR $T348514[ebp]
  0082b	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >

; 155  :                 LOG(1,_T("Tuner: Found at I2C address 0x%02x"), test);

  00830	0f b6 45 e7	 movzx	 eax, BYTE PTR _test$[ebp]
  00834	50		 push	 eax
  00835	68 00 00 00 00	 push	 OFFSET ??_C@_1EG@MPAJNMPO@?$AAT?$AAu?$AAn?$AAe?$AAr?$AA?3?$AA?5?$AAF?$AAo?$AAu?$AAn?$AAd?$AA?5?$AAa?$AAt?$AA?5?$AAI?$AA2?$AAC?$AA?5?$AAa?$AAd?$AAd?$AAr?$AAe?$AAs?$AAs?$AA?5?$AA0?$AAx?$AA?$CF?$AA0@
  0083a	6a 01		 push	 1
  0083c	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00841	83 c4 0c	 add	 esp, 12			; 0000000cH

; 156  :                 break;

  00844	c6 45 fc 07	 mov	 BYTE PTR __$EHRec$[ebp+8], 7
  00848	8d 8d 4c ff ff
	ff		 lea	 ecx, DWORD PTR _oss$145386[ebp]
  0084e	e8 00 00 00 00	 call	 ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ
  00853	eb 05		 jmp	 SHORT $LN5@InitTuner@2
$LN4@InitTuner@2:

; 157  :             }
; 158  :         }
; 159  :     }

  00855	e9 59 fe ff ff	 jmp	 $LN6@InitTuner@2
$LN5@InitTuner@2:

; 160  : 
; 161  :     if (pExternalIFDemodulator.IsValid())

  0085a	8d 4d e8	 lea	 ecx, DWORD PTR _pExternalIFDemodulator$[ebp]
  0085d	e8 00 00 00 00	 call	 ?IsValid@?$SmartPtr@VIExternalIFDemodulator@@@@QBEHXZ ; SmartPtr<IExternalIFDemodulator>::IsValid
  00862	85 c0		 test	 eax, eax
  00864	74 27		 je	 SHORT $LN2@InitTuner@2

; 162  :     {
; 163  :         //End initialization
; 164  :         pExternalIFDemodulator->Init(FALSE, videoFormat);

  00866	8d 4d e8	 lea	 ecx, DWORD PTR _pExternalIFDemodulator$[ebp]
  00869	e8 00 00 00 00	 call	 ??C?$SmartPtr@VIExternalIFDemodulator@@@@QBEPAVIExternalIFDemodulator@@XZ ; SmartPtr<IExternalIFDemodulator>::operator->
  0086e	89 85 6c fe ff
	ff		 mov	 DWORD PTR tv467[ebp], eax
  00874	8b 4d f0	 mov	 ecx, DWORD PTR _videoFormat$[ebp]
  00877	51		 push	 ecx
  00878	6a 00		 push	 0
  0087a	8b 95 6c fe ff
	ff		 mov	 edx, DWORD PTR tv467[ebp]
  00880	8b 02		 mov	 eax, DWORD PTR [edx]
  00882	8b 8d 6c fe ff
	ff		 mov	 ecx, DWORD PTR tv467[ebp]
  00888	8b 50 10	 mov	 edx, DWORD PTR [eax+16]
  0088b	ff d2		 call	 edx
$LN2@InitTuner@2:

; 165  :     }
; 166  : 
; 167  :     if (!bFoundTuner)

  0088d	83 7d e0 00	 cmp	 DWORD PTR _bFoundTuner$[ebp], 0
  00891	0f 85 84 00 00
	00		 jne	 $LN1@InitTuner@2

; 168  :     {
; 169  :         LOG(1,_T("Tuner: No tuner found at I2C addresses 0xC0-0xCF"));

  00897	68 00 00 00 00	 push	 OFFSET ??_C@_1GC@PDEKIALD@?$AAT?$AAu?$AAn?$AAe?$AAr?$AA?3?$AA?5?$AAN?$AAo?$AA?5?$AAt?$AAu?$AAn?$AAe?$AAr?$AA?5?$AAf?$AAo?$AAu?$AAn?$AAd?$AA?5?$AAa?$AAt?$AA?5?$AAI?$AA2?$AAC?$AA?5?$AAa?$AAd?$AAd@
  0089c	6a 01		 push	 1
  0089e	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  008a3	83 c4 08	 add	 esp, 8

; 170  :         m_Tuner = new CNoTuner();

  008a6	6a 18		 push	 24			; 00000018H
  008a8	e8 00 00 00 00	 call	 ??2@YAPAXI@Z		; operator new
  008ad	83 c4 04	 add	 esp, 4
  008b0	89 85 d4 fe ff
	ff		 mov	 DWORD PTR $T348516[ebp], eax
  008b6	c6 45 fc 0e	 mov	 BYTE PTR __$EHRec$[ebp+8], 14 ; 0000000eH
  008ba	83 bd d4 fe ff
	ff 00		 cmp	 DWORD PTR $T348516[ebp], 0
  008c1	74 13		 je	 SHORT $LN45@InitTuner@2
  008c3	8b 8d d4 fe ff
	ff		 mov	 ecx, DWORD PTR $T348516[ebp]
  008c9	e8 00 00 00 00	 call	 ??0CNoTuner@@QAE@XZ	; CNoTuner::CNoTuner
  008ce	89 85 68 fe ff
	ff		 mov	 DWORD PTR tv488[ebp], eax
  008d4	eb 0a		 jmp	 SHORT $LN46@InitTuner@2
$LN45@InitTuner@2:
  008d6	c7 85 68 fe ff
	ff 00 00 00 00	 mov	 DWORD PTR tv488[ebp], 0
$LN46@InitTuner@2:
  008e0	8b 85 68 fe ff
	ff		 mov	 eax, DWORD PTR tv488[ebp]
  008e6	89 85 d8 fe ff
	ff		 mov	 DWORD PTR $T348515[ebp], eax
  008ec	c6 45 fc 07	 mov	 BYTE PTR __$EHRec$[ebp+8], 7
  008f0	8b 8d d8 fe ff
	ff		 mov	 ecx, DWORD PTR $T348515[ebp]
  008f6	51		 push	 ecx
  008f7	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  008fd	83 c1 70	 add	 ecx, 112		; 00000070H
  00900	e8 00 00 00 00	 call	 ??4?$SmartPtr@VII2CTuner@@@@QAEAAV0@PAVII2CTuner@@@Z ; SmartPtr<II2CTuner>::operator=

; 171  :         m_TunerType = _T("None ");

  00905	68 00 00 00 00	 push	 OFFSET ??_C@_1M@EAPOIBNN@?$AAN?$AAo?$AAn?$AAe?$AA?5?$AA?$AA@
  0090a	8b 8d cc fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00910	81 c1 94 00 00
	00		 add	 ecx, 148		; 00000094H
  00916	e8 00 00 00 00	 call	 ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator=
$LN1@InitTuner@2:

; 172  :     }
; 173  :     return bFoundTuner;

  0091b	8b 55 e0	 mov	 edx, DWORD PTR _bFoundTuner$[ebp]
  0091e	89 95 d0 fe ff
	ff		 mov	 DWORD PTR $T348519[ebp], edx
  00924	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  0092b	8d 4d e8	 lea	 ecx, DWORD PTR _pExternalIFDemodulator$[ebp]
  0092e	e8 00 00 00 00	 call	 ??1?$SmartPtr@VIExternalIFDemodulator@@@@QAE@XZ ; SmartPtr<IExternalIFDemodulator>::~SmartPtr<IExternalIFDemodulator>
  00933	8b 85 d0 fe ff
	ff		 mov	 eax, DWORD PTR $T348519[ebp]
$LN29@InitTuner@2:

; 174  : }

  00939	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  0093c	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  00943	59		 pop	 ecx
  00944	8b e5		 mov	 esp, ebp
  00946	5d		 pop	 ebp
  00947	c2 04 00	 ret	 4
  0094a	8b ff		 npad	 2
$LN64@InitTuner@2:
  0094c	00 00 00 00	 DD	 $LN20@InitTuner@2
  00950	00 00 00 00	 DD	 $LN25@InitTuner@2
  00954	00 00 00 00	 DD	 $LN24@InitTuner@2
  00958	00 00 00 00	 DD	 $LN23@InitTuner@2
  0095c	00 00 00 00	 DD	 $LN22@InitTuner@2
  00960	00 00 00 00	 DD	 $LN21@InitTuner@2
  00964	00 00 00 00	 DD	 $LN19@InitTuner@2
$LN62@InitTuner@2:
  00968	00		 DB	 0
  00969	00		 DB	 0
  0096a	00		 DB	 0
  0096b	06		 DB	 6
  0096c	06		 DB	 6
  0096d	06		 DB	 6
  0096e	06		 DB	 6
  0096f	06		 DB	 6
  00970	06		 DB	 6
  00971	06		 DB	 6
  00972	06		 DB	 6
  00973	06		 DB	 6
  00974	06		 DB	 6
  00975	06		 DB	 6
  00976	06		 DB	 6
  00977	06		 DB	 6
  00978	06		 DB	 6
  00979	06		 DB	 6
  0097a	06		 DB	 6
  0097b	06		 DB	 6
  0097c	06		 DB	 6
  0097d	06		 DB	 6
  0097e	06		 DB	 6
  0097f	06		 DB	 6
  00980	06		 DB	 6
  00981	06		 DB	 6
  00982	06		 DB	 6
  00983	06		 DB	 6
  00984	06		 DB	 6
  00985	06		 DB	 6
  00986	06		 DB	 6
  00987	06		 DB	 6
  00988	06		 DB	 6
  00989	06		 DB	 6
  0098a	06		 DB	 6
  0098b	01		 DB	 1
  0098c	06		 DB	 6
  0098d	06		 DB	 6
  0098e	06		 DB	 6
  0098f	06		 DB	 6
  00990	06		 DB	 6
  00991	06		 DB	 6
  00992	06		 DB	 6
  00993	06		 DB	 6
  00994	06		 DB	 6
  00995	02		 DB	 2
  00996	06		 DB	 6
  00997	03		 DB	 3
  00998	04		 DB	 4
  00999	06		 DB	 6
  0099a	06		 DB	 6
  0099b	06		 DB	 6
  0099c	06		 DB	 6
  0099d	06		 DB	 6
  0099e	06		 DB	 6
  0099f	06		 DB	 6
  009a0	06		 DB	 6
  009a1	06		 DB	 6
  009a2	06		 DB	 6
  009a3	06		 DB	 6
  009a4	06		 DB	 6
  009a5	05		 DB	 5
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$0:
  00000	8b 85 44 ff ff
	ff		 mov	 eax, DWORD PTR $T348482[ebp]
  00006	50		 push	 eax
  00007	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  0000c	59		 pop	 ecx
  0000d	c3		 ret	 0
__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$1:
  0000e	8b 85 3c ff ff
	ff		 mov	 eax, DWORD PTR $T348486[ebp]
  00014	50		 push	 eax
  00015	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  0001a	59		 pop	 ecx
  0001b	c3		 ret	 0
__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$2:
  0001c	8b 85 34 ff ff
	ff		 mov	 eax, DWORD PTR $T348490[ebp]
  00022	50		 push	 eax
  00023	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00028	59		 pop	 ecx
  00029	c3		 ret	 0
__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$3:
  0002a	8b 85 2c ff ff
	ff		 mov	 eax, DWORD PTR $T348494[ebp]
  00030	50		 push	 eax
  00031	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00036	59		 pop	 ecx
  00037	c3		 ret	 0
__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$4:
  00038	8b 85 24 ff ff
	ff		 mov	 eax, DWORD PTR $T348498[ebp]
  0003e	50		 push	 eax
  0003f	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00044	59		 pop	 ecx
  00045	c3		 ret	 0
__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$5:
  00046	8b 85 1c ff ff
	ff		 mov	 eax, DWORD PTR $T348502[ebp]
  0004c	50		 push	 eax
  0004d	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00052	59		 pop	 ecx
  00053	c3		 ret	 0
__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$6:
  00054	8b 85 14 ff ff
	ff		 mov	 eax, DWORD PTR $T348506[ebp]
  0005a	50		 push	 eax
  0005b	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00060	59		 pop	 ecx
  00061	c3		 ret	 0
__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$7:
  00062	8d 4d e8	 lea	 ecx, DWORD PTR _pExternalIFDemodulator$[ebp]
  00065	e9 00 00 00 00	 jmp	 ??1?$SmartPtr@VIExternalIFDemodulator@@@@QAE@XZ ; SmartPtr<IExternalIFDemodulator>::~SmartPtr<IExternalIFDemodulator>
__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$8:
  0006a	8d 4d d8	 lea	 ecx, DWORD PTR _pTDA9887$145358[ebp]
  0006d	e9 00 00 00 00	 jmp	 ??1?$SmartPtr@VCTDA9887Ex@@@@QAE@XZ ; SmartPtr<CTDA9887Ex>::~SmartPtr<CTDA9887Ex>
__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$9:
  00072	8b 8d 10 ff ff
	ff		 mov	 ecx, DWORD PTR $T348509[ebp]
  00078	e9 00 00 00 00	 jmp	 ??1?$SmartPtr@VCTDA9887Ex@@@@QAE@XZ ; SmartPtr<CTDA9887Ex>::~SmartPtr<CTDA9887Ex>
__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$10:
  0007d	8d 8d 08 ff ff
	ff		 lea	 ecx, DWORD PTR $T348510[ebp]
  00083	e9 00 00 00 00	 jmp	 ??1?$SmartPtr@VIExternalIFDemodulator@@@@QAE@XZ ; SmartPtr<IExternalIFDemodulator>::~SmartPtr<IExternalIFDemodulator>
__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$11:
  00088	8b 8d 04 ff ff
	ff		 mov	 ecx, DWORD PTR $T348511[ebp]
  0008e	e9 00 00 00 00	 jmp	 ??1?$SmartPtr@VIExternalIFDemodulator@@@@QAE@XZ ; SmartPtr<IExternalIFDemodulator>::~SmartPtr<IExternalIFDemodulator>
__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$12:
  00093	8d 8d 4c ff ff
	ff		 lea	 ecx, DWORD PTR _oss$145386[ebp]
  00099	e9 00 00 00 00	 jmp	 ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ
__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$13:
  0009e	8d 8d dc fe ff
	ff		 lea	 ecx, DWORD PTR $T348514[ebp]
  000a4	e9 00 00 00 00	 jmp	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
__unwindfunclet$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z$14:
  000a9	8b 85 d4 fe ff
	ff		 mov	 eax, DWORD PTR $T348516[ebp]
  000af	50		 push	 eax
  000b0	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  000b5	59		 pop	 ecx
  000b6	c3		 ret	 0
__ehhandler$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z:
  000b7	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  000bb	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  000be	8b 8a 70 fe ff
	ff		 mov	 ecx, DWORD PTR [edx-400]
  000c4	33 c8		 xor	 ecx, eax
  000c6	e8 00 00 00 00	 call	 @__security_check_cookie@4
  000cb	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z
  000d0	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
?InitTuner@CCX2388xCard@@QAEHW4eTunerId@@@Z ENDP	; CCX2388xCard::InitTuner
END
