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

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

INCLUDELIB OLDNAMES

PUBLIC	?GetDefaultAddress@CTDA9873AudioDecoder@@EBEEXZ	; CTDA9873AudioDecoder::GetDefaultAddress
PUBLIC	??_R4CTDA9873AudioDecoder@@6BCI2CDevice@@@	; CTDA9873AudioDecoder::`RTTI Complete Object Locator'
PUBLIC	?GetAudioDecoderType@CTDA9873AudioDecoder@@UAE?AW4eAudioDecoderType@CAudioDecoder@@XZ ; CTDA9873AudioDecoder::GetAudioDecoderType
PUBLIC	?DetectAudioStandard@CTDA9873AudioDecoder@@UAEXJHW4eSoundChannel@@@Z ; CTDA9873AudioDecoder::DetectAudioStandard
PUBLIC	?GetAudioStandardFromVideoFormat@CTDA9873AudioDecoder@@UAEJW4eVideoFormat@@@Z ; CTDA9873AudioDecoder::GetAudioStandardFromVideoFormat
PUBLIC	?GetAudioStandard@CTDA9873AudioDecoder@@UAEJH@Z	; CTDA9873AudioDecoder::GetAudioStandard
PUBLIC	?GetNumAudioStandards@CTDA9873AudioDecoder@@UAEHXZ ; CTDA9873AudioDecoder::GetNumAudioStandards
PUBLIC	?GetAudioStandardName@CTDA9873AudioDecoder@@UAEPB_WJ@Z ; CTDA9873AudioDecoder::GetAudioStandardName
PUBLIC	?SetAudioStandard@CTDA9873AudioDecoder@@UAEXJW4eVideoFormat@@@Z ; CTDA9873AudioDecoder::SetAudioStandard
PUBLIC	?SetAudioInput@CTDA9873AudioDecoder@@UAEXW4eAudioInput@@@Z ; CTDA9873AudioDecoder::SetAudioInput
PUBLIC	?IsAudioChannelDetected@CTDA9873AudioDecoder@@UAE?AW4eSoundChannel@@W42@@Z ; CTDA9873AudioDecoder::IsAudioChannelDetected
PUBLIC	?SetSoundChannel@CTDA9873AudioDecoder@@UAEXW4eSoundChannel@@@Z ; CTDA9873AudioDecoder::SetSoundChannel
PUBLIC	??_R4CTDA9873AudioDecoder@@6BCAudioDecoder@@@	; CTDA9873AudioDecoder::`RTTI Complete Object Locator'
PUBLIC	??_R3CTDA9873AudioDecoder@@8			; CTDA9873AudioDecoder::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2CTDA9873AudioDecoder@@8			; CTDA9873AudioDecoder::`RTTI Base Class Array'
PUBLIC	??_R1CA@?0A@EA@CI2CDevice@@8			; CI2CDevice::`RTTI Base Class Descriptor at (32,-1,0,64)'
PUBLIC	??_R1A@?0A@EA@CTDA9873AudioDecoder@@8		; CTDA9873AudioDecoder::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVCTDA9873AudioDecoder@@@8		; CTDA9873AudioDecoder `RTTI Type Descriptor'
PUBLIC	??_C@_13DIKHDHFE@?$AAI?$AA?$AA@			; `string'
PUBLIC	??_C@_1BA@JBADOID@?$AAD?$AA?1?$AAK?$AA?5?$AA?$CI?$AA3?$AA?$CJ?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BA@MCEMONCG@?$AAD?$AA?1?$AAK?$AA?5?$AA?$CI?$AA2?$AA?$CJ?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BA@EENIJPII@?$AAD?$AA?1?$AAK?$AA?5?$AA?$CI?$AA1?$AA?$CJ?$AA?$AA@ ; `string'
PUBLIC	??_C@_13LHMFKAAD@?$AAM?$AA?$AA@			; `string'
PUBLIC	??_C@_17BFMDCGB@?$AAB?$AA?1?$AAG?$AA?$AA@	; `string'
PUBLIC	??_GCTDA9873AudioDecoder@@UAEPAXI@Z		; CTDA9873AudioDecoder::`scalar deleting destructor'
PUBLIC	??_ECTDA9873AudioDecoder@@WCA@AEPAXI@Z		; [thunk]:CTDA9873AudioDecoder::`vector deleting destructor'
PUBLIC	?m_TDA9873Standards@CTDA9873AudioDecoder@@0PAUTStandardDefinition@1@A ; CTDA9873AudioDecoder::m_TDA9873Standards
PUBLIC	??_C@_1DG@JIADJOBF@?$AAA?$AAb?$AAo?$AAr?$AAt?$AA1?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@ ; `string'
PUBLIC	??_C@_1DG@OGHLNGLD@?$AAA?$AAb?$AAo?$AAr?$AAt?$AA2?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@ ; `string'
PUBLIC	??_C@_1DG@MMFDOONB@?$AAA?$AAb?$AAo?$AAr?$AAt?$AA3?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CI@NEOLEGK@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAT?$AAh?$AAr?$AAe?$AAa?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1DK@DLIJKAHN@?$AAC?$AAr?$AAa?$AAs?$AAh?$AA?5?$AAi?$AAn?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@ ; `string'
PUBLIC	??_C@_1EG@FOFPPEPF@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAw?$AAa?$AAi?$AAt?$AAi?$AAn?$AAg?$AA?$CI@ ; `string'
PUBLIC	??_C@_1EG@NIMLIGFL@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAw?$AAa?$AAi?$AAt?$AAi?$AAn?$AAg?$AA?$CI@ ; `string'
PUBLIC	??_C@_1HO@GMHMNHEL@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?5?$AAd?$AAi?$AAd?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAt?$AAe?$AAr?$AAm@ ; `string'
PUBLIC	??_C@_1DI@FDBGJBGD@?$AAW?$AAa?$AAi?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@ ; `string'
PUBLIC	??_C@_1DK@HIKHAHGG@?$AAR?$AAe?$AAs?$AAu?$AAm?$AAi?$AAn?$AAg?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@ ; `string'
PUBLIC	??_C@_1FI@FFGABDL@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?3?$AA?5?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAs?$AAt?$AAe?$AAr?$AAe?$AAo?$AA?3?$AA?5?$AAS?$AAu?$AAp?$AAp?$AAo?$AAr?$AAt?$AAe@ ; `string'
PUBLIC	??_7CTDA9873AudioDecoder@@6BCAudioDecoder@@@	; CTDA9873AudioDecoder::`vftable'
PUBLIC	??_7CTDA9873AudioDecoder@@6BCI2CDevice@@@	; CTDA9873AudioDecoder::`vftable'
EXTRN	??_ECTDA9873AudioDecoder@@UAEPAXI@Z:PROC	; CTDA9873AudioDecoder::`vector deleting destructor'
;	COMDAT ??_7CTDA9873AudioDecoder@@6BCI2CDevice@@@
CONST	SEGMENT
??_7CTDA9873AudioDecoder@@6BCI2CDevice@@@ DD FLAT:??_R4CTDA9873AudioDecoder@@6BCI2CDevice@@@ ; CTDA9873AudioDecoder::`vftable'
	DD	FLAT:??_ECTDA9873AudioDecoder@@WCA@AEPAXI@Z
	DD	FLAT:?GetDefaultAddress@CTDA9873AudioDecoder@@EBEEXZ
CONST	ENDS
;	COMDAT ??_R4CTDA9873AudioDecoder@@6BCI2CDevice@@@
rdata$r	SEGMENT
??_R4CTDA9873AudioDecoder@@6BCI2CDevice@@@ DD 00H	; CTDA9873AudioDecoder::`RTTI Complete Object Locator'
	DD	020H
	DD	00H
	DD	FLAT:??_R0?AVCTDA9873AudioDecoder@@@8
	DD	FLAT:??_R3CTDA9873AudioDecoder@@8
rdata$r	ENDS
;	COMDAT ??_7CTDA9873AudioDecoder@@6BCAudioDecoder@@@
CONST	SEGMENT
??_7CTDA9873AudioDecoder@@6BCAudioDecoder@@@ DD FLAT:??_R4CTDA9873AudioDecoder@@6BCAudioDecoder@@@ ; CTDA9873AudioDecoder::`vftable'
	DD	FLAT:??_ECTDA9873AudioDecoder@@UAEPAXI@Z
	DD	FLAT:?OnEvent@CEventObject@@UAEXPAV1@W4eEventType@@JJPAW42@@Z
	DD	FLAT:?SetSoundChannel@CTDA9873AudioDecoder@@UAEXW4eSoundChannel@@@Z
	DD	FLAT:?GetSoundChannel@CAudioDecoder@@UAE?AW4eSoundChannel@@XZ
	DD	FLAT:?IsAudioChannelDetected@CTDA9873AudioDecoder@@UAE?AW4eSoundChannel@@W42@@Z
	DD	FLAT:?SetAudioInput@CTDA9873AudioDecoder@@UAEXW4eAudioInput@@@Z
	DD	FLAT:?GetAudioInput@CAudioDecoder@@UAE?AW4eAudioInput@@XZ
	DD	FLAT:?GetAudioInputName@CAudioDecoder@@UAEPB_WW4eAudioInput@@@Z
	DD	FLAT:?SetAudioStandard@CTDA9873AudioDecoder@@UAEXJW4eVideoFormat@@@Z
	DD	FLAT:?GetAudioStandardCurrent@CAudioDecoder@@UAEJXZ
	DD	FLAT:?GetAudioStandardName@CTDA9873AudioDecoder@@UAEPB_WJ@Z
	DD	FLAT:?GetNumAudioStandards@CTDA9873AudioDecoder@@UAEHXZ
	DD	FLAT:?GetAudioStandard@CTDA9873AudioDecoder@@UAEJH@Z
	DD	FLAT:?GetAudioStandardMajorCarrier@CAudioDecoder@@UAEJJ@Z
	DD	FLAT:?GetAudioStandardMinorCarrier@CAudioDecoder@@UAEJJ@Z
	DD	FLAT:?SetAudioStandardCarriers@CAudioDecoder@@UAEXJJ@Z
	DD	FLAT:?GetAudioStandardFromVideoFormat@CTDA9873AudioDecoder@@UAEJW4eVideoFormat@@@Z
	DD	FLAT:?DetectAudioStandard@CTDA9873AudioDecoder@@UAEXJHW4eSoundChannel@@@Z
	DD	FLAT:?GetAudioDecoderType@CTDA9873AudioDecoder@@UAE?AW4eAudioDecoderType@CAudioDecoder@@XZ
	DD	FLAT:?SetAudioDecoderValue@CAudioDecoder@@UAEHHJ@Z
	DD	FLAT:?GetAudioDecoderValue@CAudioDecoder@@UAEJH@Z
CONST	ENDS
;	COMDAT ??_R4CTDA9873AudioDecoder@@6BCAudioDecoder@@@
rdata$r	SEGMENT
??_R4CTDA9873AudioDecoder@@6BCAudioDecoder@@@ DD 00H	; CTDA9873AudioDecoder::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCTDA9873AudioDecoder@@@8
	DD	FLAT:??_R3CTDA9873AudioDecoder@@8
rdata$r	ENDS
;	COMDAT ??_R3CTDA9873AudioDecoder@@8
rdata$r	SEGMENT
??_R3CTDA9873AudioDecoder@@8 DD 00H			; CTDA9873AudioDecoder::`RTTI Class Hierarchy Descriptor'
	DD	01H
	DD	04H
	DD	FLAT:??_R2CTDA9873AudioDecoder@@8
rdata$r	ENDS
;	COMDAT ??_R2CTDA9873AudioDecoder@@8
rdata$r	SEGMENT
??_R2CTDA9873AudioDecoder@@8 DD FLAT:??_R1A@?0A@EA@CTDA9873AudioDecoder@@8 ; CTDA9873AudioDecoder::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@CAudioDecoder@@8
	DD	FLAT:??_R1A@?0A@EA@CEventObject@@8
	DD	FLAT:??_R1CA@?0A@EA@CI2CDevice@@8
rdata$r	ENDS
;	COMDAT ??_R1CA@?0A@EA@CI2CDevice@@8
rdata$r	SEGMENT
??_R1CA@?0A@EA@CI2CDevice@@8 DD FLAT:??_R0?AVCI2CDevice@@@8 ; CI2CDevice::`RTTI Base Class Descriptor at (32,-1,0,64)'
	DD	00H
	DD	020H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3CI2CDevice@@8
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@CTDA9873AudioDecoder@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@CTDA9873AudioDecoder@@8 DD FLAT:??_R0?AVCTDA9873AudioDecoder@@@8 ; CTDA9873AudioDecoder::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	03H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3CTDA9873AudioDecoder@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCTDA9873AudioDecoder@@@8
_DATA	SEGMENT
??_R0?AVCTDA9873AudioDecoder@@@8 DD FLAT:??_7type_info@@6B@ ; CTDA9873AudioDecoder `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCTDA9873AudioDecoder@@', 00H
_DATA	ENDS
;	COMDAT ??_C@_1FI@FFGABDL@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?3?$AA?5?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAs?$AAt?$AAe?$AAr?$AAe?$AAo?$AA?3?$AA?5?$AAS?$AAu?$AAp?$AAp?$AAo?$AAr?$AAt?$AAe@
CONST	SEGMENT
??_C@_1FI@FFGABDL@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?3?$AA?5?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAs?$AAt?$AAe?$AAr?$AAe?$AAo?$AA?3?$AA?5?$AAS?$AAu?$AAp?$AAp?$AAo?$AAr?$AAt?$AAe@ DB 'T'
	DB	00H, 'D', 00H, 'A', 00H, '9', 00H, '8', 00H, '7', 00H, '3', 00H
	DB	':', 00H, ' ', 00H, 'D', 00H, 'e', 00H, 't', 00H, 'e', 00H, 'c'
	DB	00H, 't', 00H, ' ', 00H, 's', 00H, 't', 00H, 'e', 00H, 'r', 00H
	DB	'e', 00H, 'o', 00H, ':', 00H, ' ', 00H, 'S', 00H, 'u', 00H, 'p'
	DB	00H, 'p', 00H, 'o', 00H, 'r', 00H, 't', 00H, 'e', 00H, 'd', 00H
	DB	':', 00H, ' ', 00H, '%', 00H, 's', 00H, '%', 00H, 's', 00H, '%'
	DB	00H, 's', 00H, '%', 00H, 's', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1DK@HIKHAHGG@?$AAR?$AAe?$AAs?$AAu?$AAm?$AAi?$AAn?$AAg?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@
CONST	SEGMENT
??_C@_1DK@HIKHAHGG@?$AAR?$AAe?$AAs?$AAu?$AAm?$AAi?$AAn?$AAg?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@ DB 'R'
	DB	00H, 'e', 00H, 's', 00H, 'u', 00H, 'm', 00H, 'i', 00H, 'n', 00H
	DB	'g', 00H, ' ', 00H, 'T', 00H, 'D', 00H, 'A', 00H, '9', 00H, '8'
	DB	00H, '7', 00H, '3', 00H, ' ', 00H, 'd', 00H, 'e', 00H, 't', 00H
	DB	'e', 00H, 'c', 00H, 't', 00H, ' ', 00H, 'l', 00H, 'o', 00H, 'o'
	DB	00H, 'p', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1DI@FDBGJBGD@?$AAW?$AAa?$AAi?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@
CONST	SEGMENT
??_C@_1DI@FDBGJBGD@?$AAW?$AAa?$AAi?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@ DB 'W'
	DB	00H, 'a', 00H, 'i', 00H, 't', 00H, 'i', 00H, 'n', 00H, 'g', 00H
	DB	' ', 00H, 'T', 00H, 'D', 00H, 'A', 00H, '9', 00H, '8', 00H, '7'
	DB	00H, '3', 00H, ' ', 00H, 'd', 00H, 'e', 00H, 't', 00H, 'e', 00H
	DB	'c', 00H, 't', 00H, ' ', 00H, 'l', 00H, 'o', 00H, 'o', 00H, 'p'
	DB	00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1HO@GMHMNHEL@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?5?$AAd?$AAi?$AAd?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAt?$AAe?$AAr?$AAm@
CONST	SEGMENT
??_C@_1HO@GMHMNHEL@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?5?$AAd?$AAi?$AAd?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAt?$AAe?$AAr?$AAm@ DB 'T'
	DB	00H, 'D', 00H, 'A', 00H, '9', 00H, '8', 00H, '7', 00H, '3', 00H
	DB	' ', 00H, 'd', 00H, 'e', 00H, 't', 00H, 'e', 00H, 'c', 00H, 't'
	DB	00H, ' ', 00H, 'l', 00H, 'o', 00H, 'o', 00H, 'p', 00H, ' ', 00H
	DB	'd', 00H, 'i', 00H, 'd', 00H, ' ', 00H, 'n', 00H, 'o', 00H, 't'
	DB	00H, ' ', 00H, 't', 00H, 'e', 00H, 'r', 00H, 'm', 00H, 'i', 00H
	DB	'n', 00H, 'a', 00H, 't', 00H, 'e', 00H, ' ', 00H, 'g', 00H, 'r'
	DB	00H, 'a', 00H, 'c', 00H, 'e', 00H, 'f', 00H, 'u', 00H, 'l', 00H
	DB	'l', 00H, 'y', 00H, ':', 00H, ' ', 00H, 't', 00H, 'e', 00H, 'r'
	DB	00H, 'm', 00H, 'i', 00H, 'n', 00H, 'a', 00H, 't', 00H, 'i', 00H
	DB	'n', 00H, 'g', 00H, '!', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1EG@NIMLIGFL@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAw?$AAa?$AAi?$AAt?$AAi?$AAn?$AAg?$AA?$CI@
CONST	SEGMENT
??_C@_1EG@NIMLIGFL@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAw?$AAa?$AAi?$AAt?$AAi?$AAn?$AAg?$AA?$CI@ DB 'T'
	DB	00H, 'D', 00H, 'A', 00H, '9', 00H, '8', 00H, '7', 00H, '3', 00H
	DB	' ', 00H, 'd', 00H, 'e', 00H, 't', 00H, 'e', 00H, 'c', 00H, 't'
	DB	00H, ' ', 00H, 'l', 00H, 'o', 00H, 'o', 00H, 'p', 00H, ' ', 00H
	DB	'n', 00H, 'o', 00H, 't', 00H, ' ', 00H, 'w', 00H, 'a', 00H, 'i'
	DB	00H, 't', 00H, 'i', 00H, 'n', 00H, 'g', 00H, '(', 00H, '2', 00H
	DB	')', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1EG@FOFPPEPF@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAw?$AAa?$AAi?$AAt?$AAi?$AAn?$AAg?$AA?$CI@
CONST	SEGMENT
??_C@_1EG@FOFPPEPF@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAw?$AAa?$AAi?$AAt?$AAi?$AAn?$AAg?$AA?$CI@ DB 'T'
	DB	00H, 'D', 00H, 'A', 00H, '9', 00H, '8', 00H, '7', 00H, '3', 00H
	DB	' ', 00H, 'd', 00H, 'e', 00H, 't', 00H, 'e', 00H, 'c', 00H, 't'
	DB	00H, ' ', 00H, 'l', 00H, 'o', 00H, 'o', 00H, 'p', 00H, ' ', 00H
	DB	'n', 00H, 'o', 00H, 't', 00H, ' ', 00H, 'w', 00H, 'a', 00H, 'i'
	DB	00H, 't', 00H, 'i', 00H, 'n', 00H, 'g', 00H, '(', 00H, '1', 00H
	DB	')', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1DK@DLIJKAHN@?$AAC?$AAr?$AAa?$AAs?$AAh?$AA?5?$AAi?$AAn?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@
CONST	SEGMENT
??_C@_1DK@DLIJKAHN@?$AAC?$AAr?$AAa?$AAs?$AAh?$AA?5?$AAi?$AAn?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@ DB 'C'
	DB	00H, 'r', 00H, 'a', 00H, 's', 00H, 'h', 00H, ' ', 00H, 'i', 00H
	DB	'n', 00H, ' ', 00H, 'T', 00H, 'D', 00H, 'A', 00H, '9', 00H, '8'
	DB	00H, '7', 00H, '3', 00H, ' ', 00H, 'd', 00H, 'e', 00H, 't', 00H
	DB	'e', 00H, 'c', 00H, 't', 00H, ' ', 00H, 'l', 00H, 'o', 00H, 'o'
	DB	00H, 'p', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1CI@NEOLEGK@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAT?$AAh?$AAr?$AAe?$AAa?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1CI@NEOLEGK@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAT?$AAh?$AAr?$AAe?$AAa?$AAd?$AA?$AA@ DB 'T'
	DB	00H, 'D', 00H, 'A', 00H, '9', 00H, '8', 00H, '7', 00H, '3', 00H
	DB	'D', 00H, 'e', 00H, 't', 00H, 'e', 00H, 'c', 00H, 't', 00H, 'T'
	DB	00H, 'h', 00H, 'r', 00H, 'e', 00H, 'a', 00H, 'd', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1DG@MMFDOONB@?$AAA?$AAb?$AAo?$AAr?$AAt?$AA3?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@
CONST	SEGMENT
??_C@_1DG@MMFDOONB@?$AAA?$AAb?$AAo?$AAr?$AAt?$AA3?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@ DB 'A'
	DB	00H, 'b', 00H, 'o', 00H, 'r', 00H, 't', 00H, '3', 00H, ' ', 00H
	DB	'T', 00H, 'D', 00H, 'A', 00H, '9', 00H, '8', 00H, '7', 00H, '3'
	DB	00H, ' ', 00H, 'd', 00H, 'e', 00H, 't', 00H, 'e', 00H, 'c', 00H
	DB	't', 00H, ' ', 00H, 'l', 00H, 'o', 00H, 'o', 00H, 'p', 00H, 00H
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_1DG@OGHLNGLD@?$AAA?$AAb?$AAo?$AAr?$AAt?$AA2?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@
CONST	SEGMENT
??_C@_1DG@OGHLNGLD@?$AAA?$AAb?$AAo?$AAr?$AAt?$AA2?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@ DB 'A'
	DB	00H, 'b', 00H, 'o', 00H, 'r', 00H, 't', 00H, '2', 00H, ' ', 00H
	DB	'T', 00H, 'D', 00H, 'A', 00H, '9', 00H, '8', 00H, '7', 00H, '3'
	DB	00H, ' ', 00H, 'd', 00H, 'e', 00H, 't', 00H, 'e', 00H, 'c', 00H
	DB	't', 00H, ' ', 00H, 'l', 00H, 'o', 00H, 'o', 00H, 'p', 00H, 00H
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_1DG@JIADJOBF@?$AAA?$AAb?$AAo?$AAr?$AAt?$AA1?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@
CONST	SEGMENT
??_C@_1DG@JIADJOBF@?$AAA?$AAb?$AAo?$AAr?$AAt?$AA1?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@ DB 'A'
	DB	00H, 'b', 00H, 'o', 00H, 'r', 00H, 't', 00H, '1', 00H, ' ', 00H
	DB	'T', 00H, 'D', 00H, 'A', 00H, '9', 00H, '8', 00H, '7', 00H, '3'
	DB	00H, ' ', 00H, 'd', 00H, 'e', 00H, 't', 00H, 'e', 00H, 'c', 00H
	DB	't', 00H, ' ', 00H, 'l', 00H, 'o', 00H, 'o', 00H, 'p', 00H, 00H
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_13DIKHDHFE@?$AAI?$AA?$AA@
CONST	SEGMENT
??_C@_13DIKHDHFE@?$AAI?$AA?$AA@ DB 'I', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1BA@JBADOID@?$AAD?$AA?1?$AAK?$AA?5?$AA?$CI?$AA3?$AA?$CJ?$AA?$AA@
CONST	SEGMENT
??_C@_1BA@JBADOID@?$AAD?$AA?1?$AAK?$AA?5?$AA?$CI?$AA3?$AA?$CJ?$AA?$AA@ DB 'D'
	DB	00H, '/', 00H, 'K', 00H, ' ', 00H, '(', 00H, '3', 00H, ')', 00H
	DB	00H, 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_1BA@MCEMONCG@?$AAD?$AA?1?$AAK?$AA?5?$AA?$CI?$AA2?$AA?$CJ?$AA?$AA@
CONST	SEGMENT
??_C@_1BA@MCEMONCG@?$AAD?$AA?1?$AAK?$AA?5?$AA?$CI?$AA2?$AA?$CJ?$AA?$AA@ DB 'D'
	DB	00H, '/', 00H, 'K', 00H, ' ', 00H, '(', 00H, '2', 00H, ')', 00H
	DB	00H, 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_1BA@EENIJPII@?$AAD?$AA?1?$AAK?$AA?5?$AA?$CI?$AA1?$AA?$CJ?$AA?$AA@
CONST	SEGMENT
??_C@_1BA@EENIJPII@?$AAD?$AA?1?$AAK?$AA?5?$AA?$CI?$AA1?$AA?$CJ?$AA?$AA@ DB 'D'
	DB	00H, '/', 00H, 'K', 00H, ' ', 00H, '(', 00H, '1', 00H, ')', 00H
	DB	00H, 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_13LHMFKAAD@?$AAM?$AA?$AA@
CONST	SEGMENT
??_C@_13LHMFKAAD@?$AAM?$AA?$AA@ DB 'M', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_17BFMDCGB@?$AAB?$AA?1?$AAG?$AA?$AA@
CONST	SEGMENT
??_C@_17BFMDCGB@?$AAB?$AA?1?$AAG?$AA?$AA@ DB 'B', 00H, '/', 00H, 'G', 00H
	DB	00H, 00H					; `string'
?m_TDA9873Standards@CTDA9873AudioDecoder@@0PAUTStandardDefinition@1@A DD FLAT:??_C@_17BFMDCGB@?$AAB?$AA?1?$AAG?$AA?$AA@ ; CTDA9873AudioDecoder::m_TDA9873Standards
	DD	00H
	DD	FLAT:??_C@_13LHMFKAAD@?$AAM?$AA?$AA@
	DD	010H
	DD	FLAT:??_C@_1BA@EENIJPII@?$AAD?$AA?1?$AAK?$AA?5?$AA?$CI?$AA1?$AA?$CJ?$AA?$AA@
	DD	020H
	DD	FLAT:??_C@_1BA@MCEMONCG@?$AAD?$AA?1?$AAK?$AA?5?$AA?$CI?$AA2?$AA?$CJ?$AA?$AA@
	DD	030H
	DD	FLAT:??_C@_1BA@JBADOID@?$AAD?$AA?1?$AAK?$AA?5?$AA?$CI?$AA3?$AA?$CJ?$AA?$AA@
	DD	040H
	DD	FLAT:??_C@_13DIKHDHFE@?$AAI?$AA?$AA@
	DD	050H
; Function compile flags: /Odtp
;	COMDAT ??_ECTDA9873AudioDecoder@@WCA@AEPAXI@Z
_TEXT	SEGMENT
??_ECTDA9873AudioDecoder@@WCA@AEPAXI@Z PROC		; [thunk]:CTDA9873AudioDecoder::`vector deleting destructor', COMDAT
  00000	83 e9 20	 sub	 ecx, 32			; 00000020H
  00003	e9 00 00 00 00	 jmp	 ??_ECTDA9873AudioDecoder@@UAEPAXI@Z
??_ECTDA9873AudioDecoder@@WCA@AEPAXI@Z ENDP		; [thunk]:CTDA9873AudioDecoder::`vector deleting destructor'
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\tda9873audiodecoder.cpp
_TEXT	ENDS
;	COMDAT ?GetAudioStandardFromVideoFormat@CTDA9873AudioDecoder@@UAEJW4eVideoFormat@@@Z
_TEXT	SEGMENT
tv64 = -12						; size = 4
_this$ = -8						; size = 4
_Standard$ = -4						; size = 2
_VideoFormat$ = 8					; size = 4
?GetAudioStandardFromVideoFormat@CTDA9873AudioDecoder@@UAEJW4eVideoFormat@@@Z PROC ; CTDA9873AudioDecoder::GetAudioStandardFromVideoFormat, COMDAT
; _this$ = ecx

; 295  : {

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

; 296  :     // ToDo: Check, add, ...
; 297  : 
; 298  :     /// Guess the correct format
; 299  :     WORD Standard;
; 300  :     switch(VideoFormat)

  00009	8b 45 08	 mov	 eax, DWORD PTR _VideoFormat$[ebp]
  0000c	89 45 f4	 mov	 DWORD PTR tv64[ebp], eax
  0000f	83 7d f4 12	 cmp	 DWORD PTR tv64[ebp], 18	; 00000012H
  00013	77 45		 ja	 SHORT $LN1@GetAudioSt@8
  00015	8b 4d f4	 mov	 ecx, DWORD PTR tv64[ebp]
  00018	0f b6 91 00 00
	00 00		 movzx	 edx, BYTE PTR $LN11@GetAudioSt@8[ecx]
  0001f	ff 24 95 00 00
	00 00		 jmp	 DWORD PTR $LN12@GetAudioSt@8[edx*4]
$LN6@GetAudioSt@8:

; 301  :     {
; 302  :     case VIDEOFORMAT_PAL_B:
; 303  :     case VIDEOFORMAT_PAL_G:
; 304  :     case VIDEOFORMAT_SECAM_B:
; 305  :     case VIDEOFORMAT_SECAM_G:
; 306  :         Standard = TDA9873ST_BG;

  00026	33 c0		 xor	 eax, eax
  00028	66 89 45 fc	 mov	 WORD PTR _Standard$[ebp], ax

; 307  :         break;

  0002c	eb 32		 jmp	 SHORT $LN7@GetAudioSt@8
$LN5@GetAudioSt@8:

; 308  :     case VIDEOFORMAT_PAL_D:
; 309  :     case VIDEOFORMAT_SECAM_D:
; 310  :     case VIDEOFORMAT_SECAM_K:
; 311  :         Standard = TDA9873ST_DK1;

  0002e	b9 20 00 00 00	 mov	 ecx, 32			; 00000020H
  00033	66 89 4d fc	 mov	 WORD PTR _Standard$[ebp], cx

; 312  :         break;

  00037	eb 27		 jmp	 SHORT $LN7@GetAudioSt@8
$LN4@GetAudioSt@8:

; 313  :     case VIDEOFORMAT_PAL_I:
; 314  :         Standard = TDA9873ST_I;

  00039	ba 50 00 00 00	 mov	 edx, 80			; 00000050H
  0003e	66 89 55 fc	 mov	 WORD PTR _Standard$[ebp], dx

; 315  :         break;

  00042	eb 1c		 jmp	 SHORT $LN7@GetAudioSt@8
$LN3@GetAudioSt@8:

; 316  :     case VIDEOFORMAT_PAL_M:
; 317  :     case VIDEOFORMAT_PAL_N:
; 318  :     case VIDEOFORMAT_NTSC_M:
; 319  :     case VIDEOFORMAT_NTSC_M_Japan:
; 320  :         Standard = TDA9873ST_M;

  00044	b8 10 00 00 00	 mov	 eax, 16			; 00000010H
  00049	66 89 45 fc	 mov	 WORD PTR _Standard$[ebp], ax

; 321  :         break;

  0004d	eb 11		 jmp	 SHORT $LN7@GetAudioSt@8
$LN2@GetAudioSt@8:

; 322  :     case VIDEOFORMAT_SECAM_K1:
; 323  :         Standard = TDA9873ST_DK2;

  0004f	b9 30 00 00 00	 mov	 ecx, 48			; 00000030H
  00054	66 89 4d fc	 mov	 WORD PTR _Standard$[ebp], cx

; 324  :         break;

  00058	eb 06		 jmp	 SHORT $LN7@GetAudioSt@8
$LN1@GetAudioSt@8:

; 325  :     default:
; 326  :         Standard = TDA9873ST_BG;

  0005a	33 d2		 xor	 edx, edx
  0005c	66 89 55 fc	 mov	 WORD PTR _Standard$[ebp], dx
$LN7@GetAudioSt@8:

; 327  :         break;
; 328  :     }
; 329  :     return Standard;

  00060	0f b7 45 fc	 movzx	 eax, WORD PTR _Standard$[ebp]

; 330  : }

  00064	8b e5		 mov	 esp, ebp
  00066	5d		 pop	 ebp
  00067	c2 04 00	 ret	 4
  0006a	8b ff		 npad	 2
$LN12@GetAudioSt@8:
  0006c	00 00 00 00	 DD	 $LN6@GetAudioSt@8
  00070	00 00 00 00	 DD	 $LN5@GetAudioSt@8
  00074	00 00 00 00	 DD	 $LN4@GetAudioSt@8
  00078	00 00 00 00	 DD	 $LN3@GetAudioSt@8
  0007c	00 00 00 00	 DD	 $LN2@GetAudioSt@8
  00080	00 00 00 00	 DD	 $LN1@GetAudioSt@8
$LN11@GetAudioSt@8:
  00084	00		 DB	 0
  00085	01		 DB	 1
  00086	00		 DB	 0
  00087	05		 DB	 5
  00088	02		 DB	 2
  00089	03		 DB	 3
  0008a	03		 DB	 3
  0008b	05		 DB	 5
  0008c	05		 DB	 5
  0008d	00		 DB	 0
  0008e	01		 DB	 1
  0008f	00		 DB	 0
  00090	05		 DB	 5
  00091	01		 DB	 1
  00092	04		 DB	 4
  00093	05		 DB	 5
  00094	05		 DB	 5
  00095	03		 DB	 3
  00096	03		 DB	 3
?GetAudioStandardFromVideoFormat@CTDA9873AudioDecoder@@UAEJW4eVideoFormat@@@Z ENDP ; CTDA9873AudioDecoder::GetAudioStandardFromVideoFormat
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?GetAudioStandard@CTDA9873AudioDecoder@@UAEJH@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_nIndex$ = 8						; size = 4
?GetAudioStandard@CTDA9873AudioDecoder@@UAEJH@Z PROC	; CTDA9873AudioDecoder::GetAudioStandard, COMDAT
; _this$ = ecx

; 285  : {

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

; 286  :     if ((nIndex < 0) || (nIndex >= GetNumAudioStandards()) )

  00007	83 7d 08 00	 cmp	 DWORD PTR _nIndex$[ebp], 0
  0000b	7c 12		 jl	 SHORT $LN1@GetAudioSt@9
  0000d	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00010	8b 10		 mov	 edx, DWORD PTR [eax]
  00012	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00015	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  00018	ff d0		 call	 eax
  0001a	39 45 08	 cmp	 DWORD PTR _nIndex$[ebp], eax
  0001d	7c 04		 jl	 SHORT $LN2@GetAudioSt@9
$LN1@GetAudioSt@9:

; 287  :     {
; 288  :         return 0;

  0001f	33 c0		 xor	 eax, eax
  00021	eb 0a		 jmp	 SHORT $LN3@GetAudioSt@9
$LN2@GetAudioSt@9:

; 289  :     }
; 290  : 
; 291  :     return m_TDA9873Standards[nIndex].Standard;

  00023	8b 4d 08	 mov	 ecx, DWORD PTR _nIndex$[ebp]
  00026	8b 04 cd 04 00
	00 00		 mov	 eax, DWORD PTR ?m_TDA9873Standards@CTDA9873AudioDecoder@@0PAUTStandardDefinition@1@A[ecx*8+4]
$LN3@GetAudioSt@9:

; 292  : }

  0002d	8b e5		 mov	 esp, ebp
  0002f	5d		 pop	 ebp
  00030	c2 04 00	 ret	 4
?GetAudioStandard@CTDA9873AudioDecoder@@UAEJH@Z ENDP	; CTDA9873AudioDecoder::GetAudioStandard
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?GetNumAudioStandards@CTDA9873AudioDecoder@@UAEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetNumAudioStandards@CTDA9873AudioDecoder@@UAEHXZ PROC	; CTDA9873AudioDecoder::GetNumAudioStandards, COMDAT
; _this$ = ecx

; 280  : {

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

; 281  :     return sizeof(m_TDA9873Standards)/sizeof(m_TDA9873Standards[0]);

  00007	b8 06 00 00 00	 mov	 eax, 6

; 282  : }

  0000c	8b e5		 mov	 esp, ebp
  0000e	5d		 pop	 ebp
  0000f	c3		 ret	 0
?GetNumAudioStandards@CTDA9873AudioDecoder@@UAEHXZ ENDP	; CTDA9873AudioDecoder::GetNumAudioStandards
_TEXT	ENDS
PUBLIC	?Standard2Index@CTDA9873AudioDecoder@@AAEHJ@Z	; CTDA9873AudioDecoder::Standard2Index
; Function compile flags: /Odtp
;	COMDAT ?Standard2Index@CTDA9873AudioDecoder@@AAEHJ@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_i$139874 = -4						; size = 4
_Standard$ = 8						; size = 4
?Standard2Index@CTDA9873AudioDecoder@@AAEHJ@Z PROC	; CTDA9873AudioDecoder::Standard2Index, COMDAT
; _this$ = ecx

; 241  : {

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

; 242  :     for(int i = 0; i < GetNumAudioStandards(); ++i)

  00009	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _i$139874[ebp], 0
  00010	eb 09		 jmp	 SHORT $LN4@Standard2I
$LN3@Standard2I:
  00012	8b 45 fc	 mov	 eax, DWORD PTR _i$139874[ebp]
  00015	83 c0 01	 add	 eax, 1
  00018	89 45 fc	 mov	 DWORD PTR _i$139874[ebp], eax
$LN4@Standard2I:
  0001b	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0001e	8b 11		 mov	 edx, DWORD PTR [ecx]
  00020	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00023	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  00026	ff d0		 call	 eax
  00028	39 45 fc	 cmp	 DWORD PTR _i$139874[ebp], eax
  0002b	7d 16		 jge	 SHORT $LN2@Standard2I

; 243  :     {
; 244  :         if(m_TDA9873Standards[i].Standard == Standard)

  0002d	8b 4d fc	 mov	 ecx, DWORD PTR _i$139874[ebp]
  00030	8b 14 cd 04 00
	00 00		 mov	 edx, DWORD PTR ?m_TDA9873Standards@CTDA9873AudioDecoder@@0PAUTStandardDefinition@1@A[ecx*8+4]
  00037	3b 55 08	 cmp	 edx, DWORD PTR _Standard$[ebp]
  0003a	75 05		 jne	 SHORT $LN1@Standard2I

; 245  :         {
; 246  :             return i;

  0003c	8b 45 fc	 mov	 eax, DWORD PTR _i$139874[ebp]
  0003f	eb 05		 jmp	 SHORT $LN5@Standard2I
$LN1@Standard2I:

; 247  :         }
; 248  :     }

  00041	eb cf		 jmp	 SHORT $LN3@Standard2I
$LN2@Standard2I:

; 249  : 
; 250  :     return -1;

  00043	83 c8 ff	 or	 eax, -1
$LN5@Standard2I:

; 251  : }

  00046	8b e5		 mov	 esp, ebp
  00048	5d		 pop	 ebp
  00049	c2 04 00	 ret	 4
?Standard2Index@CTDA9873AudioDecoder@@AAEHJ@Z ENDP	; CTDA9873AudioDecoder::Standard2Index
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?IsAudioChannelDetected@CTDA9873AudioDecoder@@UAE?AW4eSoundChannel@@W42@@Z
_TEXT	SEGMENT
tv64 = -12						; size = 4
_this$ = -8						; size = 4
_SoundChannel$ = -4					; size = 4
_DesiredAudioChannel$ = 8				; size = 4
?IsAudioChannelDetected@CTDA9873AudioDecoder@@UAE?AW4eSoundChannel@@W42@@Z PROC ; CTDA9873AudioDecoder::IsAudioChannelDetected, COMDAT
; _this$ = ecx

; 177  : {

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

; 178  :     eSoundChannel SoundChannel = SOUNDCHANNEL_MONO;

  00009	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _SoundChannel$[ebp], 1

; 179  : #if 1
; 180  :     switch (DesiredAudioChannel)

  00010	8b 45 08	 mov	 eax, DWORD PTR _DesiredAudioChannel$[ebp]
  00013	89 45 f4	 mov	 DWORD PTR tv64[ebp], eax
  00016	83 7d f4 02	 cmp	 DWORD PTR tv64[ebp], 2
  0001a	74 0e		 je	 SHORT $LN6@IsAudioCha@2
  0001c	83 7d f4 03	 cmp	 DWORD PTR tv64[ebp], 3
  00020	74 1b		 je	 SHORT $LN4@IsAudioCha@2
  00022	83 7d f4 04	 cmp	 DWORD PTR tv64[ebp], 4
  00026	74 28		 je	 SHORT $LN2@IsAudioCha@2
  00028	eb 37		 jmp	 SHORT $LN7@IsAudioCha@2
$LN6@IsAudioCha@2:

; 181  :     {
; 182  :     case SOUNDCHANNEL_STEREO:
; 183  :         if (m_SupportedSoundChannels & SUPPORTEDSOUNDCHANNEL_STEREO)

  0002a	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0002d	8b 51 4c	 mov	 edx, DWORD PTR [ecx+76]
  00030	83 e2 02	 and	 edx, 2
  00033	74 06		 je	 SHORT $LN5@IsAudioCha@2

; 184  :             SoundChannel = DesiredAudioChannel;

  00035	8b 45 08	 mov	 eax, DWORD PTR _DesiredAudioChannel$[ebp]
  00038	89 45 fc	 mov	 DWORD PTR _SoundChannel$[ebp], eax
$LN5@IsAudioCha@2:

; 185  :         break;

  0003b	eb 24		 jmp	 SHORT $LN7@IsAudioCha@2
$LN4@IsAudioCha@2:

; 186  :     case SOUNDCHANNEL_LANGUAGE1:
; 187  :         if (m_SupportedSoundChannels & SUPPORTEDSOUNDCHANNEL_LANG1)

  0003d	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00040	8b 51 4c	 mov	 edx, DWORD PTR [ecx+76]
  00043	83 e2 04	 and	 edx, 4
  00046	74 06		 je	 SHORT $LN3@IsAudioCha@2

; 188  :             SoundChannel = DesiredAudioChannel;

  00048	8b 45 08	 mov	 eax, DWORD PTR _DesiredAudioChannel$[ebp]
  0004b	89 45 fc	 mov	 DWORD PTR _SoundChannel$[ebp], eax
$LN3@IsAudioCha@2:

; 189  :         break;

  0004e	eb 11		 jmp	 SHORT $LN7@IsAudioCha@2
$LN2@IsAudioCha@2:

; 190  :     case SOUNDCHANNEL_LANGUAGE2:
; 191  :         if (m_SupportedSoundChannels & SUPPORTEDSOUNDCHANNEL_LANG2)

  00050	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00053	8b 51 4c	 mov	 edx, DWORD PTR [ecx+76]
  00056	83 e2 08	 and	 edx, 8
  00059	74 06		 je	 SHORT $LN7@IsAudioCha@2

; 192  :             SoundChannel = DesiredAudioChannel;

  0005b	8b 45 08	 mov	 eax, DWORD PTR _DesiredAudioChannel$[ebp]
  0005e	89 45 fc	 mov	 DWORD PTR _SoundChannel$[ebp], eax
$LN7@IsAudioCha@2:

; 193  :         break;
; 194  :     }
; 195  : #else
; 196  :     switch (DesiredAudioChannel)
; 197  :     {
; 198  :     case SOUNDCHANNEL_STEREO:
; 199  :         if ((ReadStatus()&TDA9873IN_CHANNELMASK) == TDA9873IN_STEREO)
; 200  :         {
; 201  :             SoundChannel = DesiredAudioChannel;
; 202  :         }
; 203  :         break;
; 204  :     case SOUNDCHANNEL_LANGUAGE1:
; 205  :     case SOUNDCHANNEL_LANGUAGE2:
; 206  :         if ((ReadStatus()&TDA9873IN_CHANNELMASK) == TDA9873IN_LANG12)
; 207  :         {
; 208  :             SoundChannel = DesiredAudioChannel;
; 209  :         }
; 210  :         break;
; 211  :     default:
; 212  :         // Nothing
; 213  :         break;
; 214  :     }
; 215  : #endif
; 216  :     return SoundChannel;

  00061	8b 45 fc	 mov	 eax, DWORD PTR _SoundChannel$[ebp]

; 217  : }

  00064	8b e5		 mov	 esp, ebp
  00066	5d		 pop	 ebp
  00067	c2 04 00	 ret	 4
?IsAudioChannelDetected@CTDA9873AudioDecoder@@UAE?AW4eSoundChannel@@W42@@Z ENDP ; CTDA9873AudioDecoder::IsAudioChannelDetected
_TEXT	ENDS
PUBLIC	?ReadStatus@CTDA9873AudioDecoder@@AAEEXZ	; CTDA9873AudioDecoder::ReadStatus
; Function compile flags: /Odtp
;	COMDAT ?ReadStatus@CTDA9873AudioDecoder@@AAEEXZ
_TEXT	SEGMENT
_this$ = -8						; size = 4
_result$ = -1						; size = 1
?ReadStatus@CTDA9873AudioDecoder@@AAEEXZ PROC		; CTDA9873AudioDecoder::ReadStatus, COMDAT
; _this$ = ecx

; 99   : {

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

; 100  :     BYTE result = m_DeviceAddress << 1;

  00009	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	0f b6 48 28	 movzx	 ecx, BYTE PTR [eax+40]
  00010	d1 e1		 shl	 ecx, 1
  00012	88 4d ff	 mov	 BYTE PTR _result$[ebp], cl

; 101  :     if(!m_I2CBus->Read(&result, 1, &result, 1))

  00015	6a 01		 push	 1
  00017	8d 55 ff	 lea	 edx, DWORD PTR _result$[ebp]
  0001a	52		 push	 edx
  0001b	6a 01		 push	 1
  0001d	8d 45 ff	 lea	 eax, DWORD PTR _result$[ebp]
  00020	50		 push	 eax
  00021	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00024	8b 51 24	 mov	 edx, DWORD PTR [ecx+36]
  00027	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0002a	8b 48 24	 mov	 ecx, DWORD PTR [eax+36]
  0002d	8b 12		 mov	 edx, DWORD PTR [edx]
  0002f	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  00032	ff d0		 call	 eax
  00034	85 c0		 test	 eax, eax
  00036	75 04		 jne	 SHORT $LN1@ReadStatus

; 102  :     {
; 103  :         result = -1;

  00038	c6 45 ff ff	 mov	 BYTE PTR _result$[ebp], 255 ; 000000ffH
$LN1@ReadStatus:

; 104  :     }
; 105  : 
; 106  :     return result;

  0003c	8a 45 ff	 mov	 al, BYTE PTR _result$[ebp]

; 107  : }

  0003f	8b e5		 mov	 esp, ebp
  00041	5d		 pop	 ebp
  00042	c3		 ret	 0
?ReadStatus@CTDA9873AudioDecoder@@AAEEXZ ENDP		; CTDA9873AudioDecoder::ReadStatus
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?GetDefaultAddress@CTDA9873AudioDecoder@@EBEEXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetDefaultAddress@CTDA9873AudioDecoder@@EBEEXZ PROC	; CTDA9873AudioDecoder::GetDefaultAddress, COMDAT
; _this$ = ecx

; 94   : {

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

; 95   :     return 0xb6 >> 1;

  00007	b0 5b		 mov	 al, 91			; 0000005bH

; 96   : }

  00009	8b e5		 mov	 esp, ebp
  0000b	5d		 pop	 ebp
  0000c	c3		 ret	 0
?GetDefaultAddress@CTDA9873AudioDecoder@@EBEEXZ ENDP	; CTDA9873AudioDecoder::GetDefaultAddress
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?GetAudioDecoderType@CTDA9873AudioDecoder@@UAE?AW4eAudioDecoderType@CAudioDecoder@@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetAudioDecoderType@CTDA9873AudioDecoder@@UAE?AW4eAudioDecoderType@CAudioDecoder@@XZ PROC ; CTDA9873AudioDecoder::GetAudioDecoderType, COMDAT
; _this$ = ecx

; 89   : {

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

; 90   :     return AUDIODECODERTYPE_TDA9873;

  00007	b8 0a 00 00 00	 mov	 eax, 10			; 0000000aH

; 91   : }

  0000c	8b e5		 mov	 esp, ebp
  0000e	5d		 pop	 ebp
  0000f	c3		 ret	 0
?GetAudioDecoderType@CTDA9873AudioDecoder@@UAE?AW4eAudioDecoderType@CAudioDecoder@@XZ ENDP ; CTDA9873AudioDecoder::GetAudioDecoderType
; Function compile flags: /Odtp
;	COMDAT ?GetAudioStandardName@CTDA9873AudioDecoder@@UAEPB_WJ@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_index$ = -4						; size = 4
_Standard$ = 8						; size = 4
?GetAudioStandardName@CTDA9873AudioDecoder@@UAEPB_WJ@Z PROC ; CTDA9873AudioDecoder::GetAudioStandardName, COMDAT
; _this$ = ecx

; 268  : {

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

; 269  :     int index = Standard2Index(Standard);

  00009	8b 45 08	 mov	 eax, DWORD PTR _Standard$[ebp]
  0000c	50		 push	 eax
  0000d	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00010	e8 00 00 00 00	 call	 ?Standard2Index@CTDA9873AudioDecoder@@AAEHJ@Z ; CTDA9873AudioDecoder::Standard2Index
  00015	89 45 fc	 mov	 DWORD PTR _index$[ebp], eax

; 270  : 
; 271  :     if(index < 0)

  00018	83 7d fc 00	 cmp	 DWORD PTR _index$[ebp], 0
  0001c	7d 04		 jge	 SHORT $LN1@GetAudioSt@15

; 272  :     {
; 273  :         return NULL;

  0001e	33 c0		 xor	 eax, eax
  00020	eb 0a		 jmp	 SHORT $LN2@GetAudioSt@15
$LN1@GetAudioSt@15:

; 274  :     }
; 275  : 
; 276  :     return m_TDA9873Standards[index].Name;

  00022	8b 4d fc	 mov	 ecx, DWORD PTR _index$[ebp]
  00025	8b 04 cd 00 00
	00 00		 mov	 eax, DWORD PTR ?m_TDA9873Standards@CTDA9873AudioDecoder@@0PAUTStandardDefinition@1@A[ecx*8]
$LN2@GetAudioSt@15:

; 277  : }

  0002c	8b e5		 mov	 esp, ebp
  0002e	5d		 pop	 ebp
  0002f	c2 04 00	 ret	 4
?GetAudioStandardName@CTDA9873AudioDecoder@@UAEPB_WJ@Z ENDP ; CTDA9873AudioDecoder::GetAudioStandardName
_TEXT	ENDS
PUBLIC	?Detect@CTDA9873AudioDecoder@@AAEHXZ		; CTDA9873AudioDecoder::Detect
; Function compile flags: /Odtp
;	COMDAT ?Detect@CTDA9873AudioDecoder@@AAEHXZ
_TEXT	SEGMENT
_this$ = -8						; size = 4
_result$ = -1						; size = 1
?Detect@CTDA9873AudioDecoder@@AAEHXZ PROC		; CTDA9873AudioDecoder::Detect, COMDAT
; _this$ = ecx

; 123  : {

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

; 124  :     if((ReadStatus()&TDA9873IN_MAGICMASK) != TDA9873IN_MAGIC)

  00009	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0000c	e8 00 00 00 00	 call	 ?ReadStatus@CTDA9873AudioDecoder@@AAEEXZ ; CTDA9873AudioDecoder::ReadStatus
  00011	0f b6 c0	 movzx	 eax, al
  00014	25 e0 00 00 00	 and	 eax, 224		; 000000e0H
  00019	3d 80 00 00 00	 cmp	 eax, 128		; 00000080H
  0001e	74 04		 je	 SHORT $LN3@Detect@2

; 125  :     {
; 126  :         return FALSE;

  00020	33 c0		 xor	 eax, eax
  00022	eb 2f		 jmp	 SHORT $LN4@Detect@2
$LN3@Detect@2:

; 127  :     }
; 128  : 
; 129  :     BYTE result;
; 130  :     if(!ReadFromSubAddress(TDA9873_REG_DETECT, &result, 1) || result != TDA9873DE_MAGIC)

  00024	6a 01		 push	 1
  00026	8d 4d ff	 lea	 ecx, DWORD PTR _result$[ebp]
  00029	51		 push	 ecx
  0002a	68 fe 00 00 00	 push	 254			; 000000feH
  0002f	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00032	83 c1 20	 add	 ecx, 32			; 00000020H
  00035	e8 00 00 00 00	 call	 ?ReadFromSubAddress@CI2CDevice@@QAEHEPAEI@Z ; CI2CDevice::ReadFromSubAddress
  0003a	85 c0		 test	 eax, eax
  0003c	74 0c		 je	 SHORT $LN1@Detect@2
  0003e	0f b6 55 ff	 movzx	 edx, BYTE PTR _result$[ebp]
  00042	81 fa 80 00 00
	00		 cmp	 edx, 128		; 00000080H
  00048	74 04		 je	 SHORT $LN2@Detect@2
$LN1@Detect@2:

; 131  :     {
; 132  :         return FALSE;

  0004a	33 c0		 xor	 eax, eax
  0004c	eb 05		 jmp	 SHORT $LN4@Detect@2
$LN2@Detect@2:

; 133  :     }
; 134  : 
; 135  :     return TRUE;

  0004e	b8 01 00 00 00	 mov	 eax, 1
$LN4@Detect@2:

; 136  : }

  00053	8b e5		 mov	 esp, ebp
  00055	5d		 pop	 ebp
  00056	c3		 ret	 0
?Detect@CTDA9873AudioDecoder@@AAEHXZ ENDP		; CTDA9873AudioDecoder::Detect
_TEXT	ENDS
PUBLIC	?Write@CTDA9873AudioDecoder@@AAEHW4eReg@1@EE@Z	; CTDA9873AudioDecoder::Write
; Function compile flags: /Odtp
;	COMDAT ?Write@CTDA9873AudioDecoder@@AAEHW4eReg@1@EE@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_NewValue$ = -1						; size = 1
_SubAddress$ = 8					; size = 4
_Data$ = 12						; size = 1
_Mask$ = 16						; size = 1
?Write@CTDA9873AudioDecoder@@AAEHW4eReg@1@EE@Z PROC	; CTDA9873AudioDecoder::Write, COMDAT
; _this$ = ecx

; 110  : {

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

; 111  :     _ASSERTE(SubAddress >= TDA9873_REG_SWITCH && SubAddress < TDA9873_REG_LAST_ONE);
; 112  : 
; 113  :     BYTE NewValue = (m_ShadowReg[SubAddress]&~Mask) | (Data&Mask);

  00009	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	03 45 08	 add	 eax, DWORD PTR _SubAddress$[ebp]
  0000f	0f b6 48 2c	 movzx	 ecx, BYTE PTR [eax+44]
  00013	0f b6 55 10	 movzx	 edx, BYTE PTR _Mask$[ebp]
  00017	f7 d2		 not	 edx
  00019	23 ca		 and	 ecx, edx
  0001b	0f b6 45 0c	 movzx	 eax, BYTE PTR _Data$[ebp]
  0001f	0f b6 55 10	 movzx	 edx, BYTE PTR _Mask$[ebp]
  00023	23 c2		 and	 eax, edx
  00025	0b c8		 or	 ecx, eax
  00027	88 4d ff	 mov	 BYTE PTR _NewValue$[ebp], cl

; 114  : 
; 115  :     if(NewValue == m_ShadowReg[SubAddress])

  0002a	0f b6 45 ff	 movzx	 eax, BYTE PTR _NewValue$[ebp]
  0002e	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00031	03 4d 08	 add	 ecx, DWORD PTR _SubAddress$[ebp]
  00034	0f b6 51 2c	 movzx	 edx, BYTE PTR [ecx+44]
  00038	3b c2		 cmp	 eax, edx
  0003a	75 07		 jne	 SHORT $LN1@Write@3

; 116  :         return TRUE;

  0003c	b8 01 00 00 00	 mov	 eax, 1
  00041	eb 22		 jmp	 SHORT $LN2@Write@3
$LN1@Write@3:

; 117  : 
; 118  :     m_ShadowReg[SubAddress] = NewValue;

  00043	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  00046	03 45 08	 add	 eax, DWORD PTR _SubAddress$[ebp]
  00049	8a 4d ff	 mov	 cl, BYTE PTR _NewValue$[ebp]
  0004c	88 48 2c	 mov	 BYTE PTR [eax+44], cl

; 119  :     return WriteToSubAddress(SubAddress, &NewValue, 1);

  0004f	6a 01		 push	 1
  00051	8d 55 ff	 lea	 edx, DWORD PTR _NewValue$[ebp]
  00054	52		 push	 edx
  00055	0f b6 45 08	 movzx	 eax, BYTE PTR _SubAddress$[ebp]
  00059	50		 push	 eax
  0005a	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0005d	83 c1 20	 add	 ecx, 32			; 00000020H
  00060	e8 00 00 00 00	 call	 ?WriteToSubAddress@CI2CDevice@@QAEHEPBEI@Z ; CI2CDevice::WriteToSubAddress
$LN2@Write@3:

; 120  : }

  00065	8b e5		 mov	 esp, ebp
  00067	5d		 pop	 ebp
  00068	c2 0c 00	 ret	 12			; 0000000cH
?Write@CTDA9873AudioDecoder@@AAEHW4eReg@1@EE@Z ENDP	; CTDA9873AudioDecoder::Write
; Function compile flags: /Odtp
;	COMDAT ?SetAudioStandard@CTDA9873AudioDecoder@@UAEXJW4eVideoFormat@@@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_index$ = -4						; size = 4
_Standard$ = 8						; size = 4
_VideoFormat$ = 12					; size = 4
?SetAudioStandard@CTDA9873AudioDecoder@@UAEXJW4eVideoFormat@@@Z PROC ; CTDA9873AudioDecoder::SetAudioStandard, COMDAT
; _this$ = ecx

; 254  : {

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

; 255  :     CAudioDecoder::SetAudioStandard(Standard, VideoFormat);

  00009	8b 45 0c	 mov	 eax, DWORD PTR _VideoFormat$[ebp]
  0000c	50		 push	 eax
  0000d	8b 4d 08	 mov	 ecx, DWORD PTR _Standard$[ebp]
  00010	51		 push	 ecx
  00011	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00014	e8 00 00 00 00	 call	 ?SetAudioStandard@CAudioDecoder@@UAEXJW4eVideoFormat@@@Z ; CAudioDecoder::SetAudioStandard

; 256  : 
; 257  :     int index = Standard2Index(Standard);

  00019	8b 55 08	 mov	 edx, DWORD PTR _Standard$[ebp]
  0001c	52		 push	 edx
  0001d	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00020	e8 00 00 00 00	 call	 ?Standard2Index@CTDA9873AudioDecoder@@AAEHJ@Z ; CTDA9873AudioDecoder::Standard2Index
  00025	89 45 fc	 mov	 DWORD PTR _index$[ebp], eax

; 258  : 
; 259  :     if(index < 0)

  00028	83 7d fc 00	 cmp	 DWORD PTR _index$[ebp], 0
  0002c	7d 02		 jge	 SHORT $LN1@SetAudioSt@2

; 260  :     {
; 261  :         return;

  0002e	eb 18		 jmp	 SHORT $LN2@SetAudioSt@2
$LN1@SetAudioSt@2:

; 262  :     }
; 263  : 
; 264  :     Write(TDA9873_REG_STANDARD, m_TDA9873Standards[index].Standard, TDA9873ST_STANDARDMASK);

  00030	6a 70		 push	 112			; 00000070H
  00032	8b 45 fc	 mov	 eax, DWORD PTR _index$[ebp]
  00035	0f b6 0c c5 04
	00 00 00	 movzx	 ecx, BYTE PTR ?m_TDA9873Standards@CTDA9873AudioDecoder@@0PAUTStandardDefinition@1@A[eax*8+4]
  0003d	51		 push	 ecx
  0003e	6a 01		 push	 1
  00040	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00043	e8 00 00 00 00	 call	 ?Write@CTDA9873AudioDecoder@@AAEHW4eReg@1@EE@Z ; CTDA9873AudioDecoder::Write
$LN2@SetAudioSt@2:

; 265  : }

  00048	8b e5		 mov	 esp, ebp
  0004a	5d		 pop	 ebp
  0004b	c2 08 00	 ret	 8
?SetAudioStandard@CTDA9873AudioDecoder@@UAEXJW4eVideoFormat@@@Z ENDP ; CTDA9873AudioDecoder::SetAudioStandard
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?SetAudioInput@CTDA9873AudioDecoder@@UAEXW4eAudioInput@@@Z
_TEXT	SEGMENT
tv70 = -12						; size = 4
_this$ = -8						; size = 4
_in$ = -1						; size = 1
_AudioInput$ = 8					; size = 4
?SetAudioInput@CTDA9873AudioDecoder@@UAEXW4eAudioInput@@@Z PROC ; CTDA9873AudioDecoder::SetAudioInput, COMDAT
; _this$ = ecx

; 220  : {

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

; 221  :     CAudioDecoder::SetAudioInput(AudioInput);

  00009	8b 45 08	 mov	 eax, DWORD PTR _AudioInput$[ebp]
  0000c	50		 push	 eax
  0000d	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00010	e8 00 00 00 00	 call	 ?SetAudioInput@CAudioDecoder@@UAEXW4eAudioInput@@@Z ; CAudioDecoder::SetAudioInput

; 222  : 
; 223  :     BYTE in;
; 224  :     switch(AudioInput)

  00015	8b 4d 08	 mov	 ecx, DWORD PTR _AudioInput$[ebp]
  00018	89 4d f4	 mov	 DWORD PTR tv70[ebp], ecx
  0001b	83 7d f4 01	 cmp	 DWORD PTR tv70[ebp], 1
  0001f	74 12		 je	 SHORT $LN1@SetAudioIn
  00021	83 7d f4 04	 cmp	 DWORD PTR tv70[ebp], 4
  00025	74 06		 je	 SHORT $LN2@SetAudioIn

; 225  :     {
; 226  :     default:
; 227  :         in = TDA9873SW_INTERNAL;

  00027	c6 45 ff 00	 mov	 BYTE PTR _in$[ebp], 0

; 228  :         break;

  0002b	eb 0a		 jmp	 SHORT $LN4@SetAudioIn
$LN2@SetAudioIn:

; 229  :     case AUDIOINPUT_MUTE:
; 230  :         in = TDA9873SW_MUTE;

  0002d	c6 45 ff 40	 mov	 BYTE PTR _in$[ebp], 64	; 00000040H

; 231  :         break;

  00031	eb 04		 jmp	 SHORT $LN4@SetAudioIn
$LN1@SetAudioIn:

; 232  :     case AUDIOINPUT_RADIO:
; 233  :         in = TDA9873SW_EXTERNALSTEREO;

  00033	c6 45 ff 02	 mov	 BYTE PTR _in$[ebp], 2
$LN4@SetAudioIn:

; 234  :         break;
; 235  :     }
; 236  : 
; 237  :     Write(TDA9873_REG_SWITCH, in, TDA9873SW_INPUTMASK);

  00037	6a 43		 push	 67			; 00000043H
  00039	0f b6 55 ff	 movzx	 edx, BYTE PTR _in$[ebp]
  0003d	52		 push	 edx
  0003e	6a 00		 push	 0
  00040	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00043	e8 00 00 00 00	 call	 ?Write@CTDA9873AudioDecoder@@AAEHW4eReg@1@EE@Z ; CTDA9873AudioDecoder::Write

; 238  : }

  00048	8b e5		 mov	 esp, ebp
  0004a	5d		 pop	 ebp
  0004b	c2 04 00	 ret	 4
?SetAudioInput@CTDA9873AudioDecoder@@UAEXW4eAudioInput@@@Z ENDP ; CTDA9873AudioDecoder::SetAudioInput
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?SetSoundChannel@CTDA9873AudioDecoder@@UAEXW4eSoundChannel@@@Z
_TEXT	SEGMENT
tv70 = -12						; size = 4
_this$ = -8						; size = 4
_ch$ = -1						; size = 1
_SoundChannel$ = 8					; size = 4
?SetSoundChannel@CTDA9873AudioDecoder@@UAEXW4eSoundChannel@@@Z PROC ; CTDA9873AudioDecoder::SetSoundChannel, COMDAT
; _this$ = ecx

; 153  : {

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

; 154  :     CAudioDecoder::SetSoundChannel(SoundChannel);

  00009	8b 45 08	 mov	 eax, DWORD PTR _SoundChannel$[ebp]
  0000c	50		 push	 eax
  0000d	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00010	e8 00 00 00 00	 call	 ?SetSoundChannel@CAudioDecoder@@UAEXW4eSoundChannel@@@Z ; CAudioDecoder::SetSoundChannel

; 155  : 
; 156  :     BYTE ch;
; 157  :     switch(SoundChannel)

  00015	8b 4d 08	 mov	 ecx, DWORD PTR _SoundChannel$[ebp]
  00018	89 4d f4	 mov	 DWORD PTR tv70[ebp], ecx
  0001b	83 7d f4 02	 cmp	 DWORD PTR tv70[ebp], 2
  0001f	74 12		 je	 SHORT $LN3@SetSoundCh@2
  00021	83 7d f4 03	 cmp	 DWORD PTR tv70[ebp], 3
  00025	74 12		 je	 SHORT $LN2@SetSoundCh@2
  00027	83 7d f4 04	 cmp	 DWORD PTR tv70[ebp], 4
  0002b	74 12		 je	 SHORT $LN1@SetSoundCh@2

; 158  :     {
; 159  :     default:
; 160  :         ch = TDA9873SW_MONO;

  0002d	c6 45 ff 04	 mov	 BYTE PTR _ch$[ebp], 4

; 161  :         break;

  00031	eb 10		 jmp	 SHORT $LN5@SetSoundCh@2
$LN3@SetSoundCh@2:

; 162  :     case SOUNDCHANNEL_STEREO:
; 163  :         ch = TDA9873SW_STEREO;

  00033	c6 45 ff 10	 mov	 BYTE PTR _ch$[ebp], 16	; 00000010H

; 164  :         break;

  00037	eb 0a		 jmp	 SHORT $LN5@SetSoundCh@2
$LN2@SetSoundCh@2:

; 165  :     case SOUNDCHANNEL_LANGUAGE1:
; 166  :         ch = TDA9873SW_LANG1;

  00039	c6 45 ff 04	 mov	 BYTE PTR _ch$[ebp], 4

; 167  :         break;

  0003d	eb 04		 jmp	 SHORT $LN5@SetSoundCh@2
$LN1@SetSoundCh@2:

; 168  :     case SOUNDCHANNEL_LANGUAGE2:
; 169  :         ch = TDA9873SW_LANG2;

  0003f	c6 45 ff 08	 mov	 BYTE PTR _ch$[ebp], 8
$LN5@SetSoundCh@2:

; 170  :         break;
; 171  :     }
; 172  : 
; 173  :     Write(TDA9873_REG_SWITCH, ch, TDA9873SW_CHANNELMASK);

  00043	6a 1c		 push	 28			; 0000001cH
  00045	0f b6 55 ff	 movzx	 edx, BYTE PTR _ch$[ebp]
  00049	52		 push	 edx
  0004a	6a 00		 push	 0
  0004c	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0004f	e8 00 00 00 00	 call	 ?Write@CTDA9873AudioDecoder@@AAEHW4eReg@1@EE@Z ; CTDA9873AudioDecoder::Write

; 174  : }

  00054	8b e5		 mov	 esp, ebp
  00056	5d		 pop	 ebp
  00057	c2 04 00	 ret	 4
?SetSoundChannel@CTDA9873AudioDecoder@@UAEXW4eSoundChannel@@@Z ENDP ; CTDA9873AudioDecoder::SetSoundChannel
_TEXT	ENDS
PUBLIC	?Initialize@CTDA9873AudioDecoder@@QAEHXZ	; CTDA9873AudioDecoder::Initialize
; Function compile flags: /Odtp
;	COMDAT ?Initialize@CTDA9873AudioDecoder@@QAEHXZ
_TEXT	SEGMENT
tv129 = -8						; size = 4
_this$ = -4						; size = 4
?Initialize@CTDA9873AudioDecoder@@QAEHXZ PROC		; CTDA9873AudioDecoder::Initialize, COMDAT
; _this$ = ecx

; 139  : {

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

; 140  :     if(!Detect())

  00009	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000c	e8 00 00 00 00	 call	 ?Detect@CTDA9873AudioDecoder@@AAEHXZ ; CTDA9873AudioDecoder::Detect
  00011	85 c0		 test	 eax, eax
  00013	75 20		 jne	 SHORT $LN2@Initialize@4

; 141  :     {
; 142  :         // Try alternative address
; 143  :         m_DeviceAddress ^= 1;

  00015	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00018	0f b6 48 28	 movzx	 ecx, BYTE PTR [eax+40]
  0001c	83 f1 01	 xor	 ecx, 1
  0001f	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00022	88 4a 28	 mov	 BYTE PTR [edx+40], cl

; 144  :         if(!Detect()) return FALSE;

  00025	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00028	e8 00 00 00 00	 call	 ?Detect@CTDA9873AudioDecoder@@AAEHXZ ; CTDA9873AudioDecoder::Detect
  0002d	85 c0		 test	 eax, eax
  0002f	75 04		 jne	 SHORT $LN2@Initialize@4
  00031	33 c0		 xor	 eax, eax
  00033	eb 55		 jmp	 SHORT $LN3@Initialize@4
$LN2@Initialize@4:

; 145  :     }
; 146  : 
; 147  :     return Write(TDA9873_REG_SWITCH, 0xe4) &&
; 148  :            Write(TDA9873_REG_STANDARD, 0x06) &&
; 149  :            Write(TDA9873_REG_PORT, 0x03);

  00035	68 ff 00 00 00	 push	 255			; 000000ffH
  0003a	68 e4 00 00 00	 push	 228			; 000000e4H
  0003f	6a 00		 push	 0
  00041	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00044	e8 00 00 00 00	 call	 ?Write@CTDA9873AudioDecoder@@AAEHW4eReg@1@EE@Z ; CTDA9873AudioDecoder::Write
  00049	85 c0		 test	 eax, eax
  0004b	74 33		 je	 SHORT $LN5@Initialize@4
  0004d	68 ff 00 00 00	 push	 255			; 000000ffH
  00052	6a 06		 push	 6
  00054	6a 01		 push	 1
  00056	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00059	e8 00 00 00 00	 call	 ?Write@CTDA9873AudioDecoder@@AAEHW4eReg@1@EE@Z ; CTDA9873AudioDecoder::Write
  0005e	85 c0		 test	 eax, eax
  00060	74 1e		 je	 SHORT $LN5@Initialize@4
  00062	68 ff 00 00 00	 push	 255			; 000000ffH
  00067	6a 03		 push	 3
  00069	6a 02		 push	 2
  0006b	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0006e	e8 00 00 00 00	 call	 ?Write@CTDA9873AudioDecoder@@AAEHW4eReg@1@EE@Z ; CTDA9873AudioDecoder::Write
  00073	85 c0		 test	 eax, eax
  00075	74 09		 je	 SHORT $LN5@Initialize@4
  00077	c7 45 f8 01 00
	00 00		 mov	 DWORD PTR tv129[ebp], 1
  0007e	eb 07		 jmp	 SHORT $LN6@Initialize@4
$LN5@Initialize@4:
  00080	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR tv129[ebp], 0
$LN6@Initialize@4:
  00087	8b 45 f8	 mov	 eax, DWORD PTR tv129[ebp]
$LN3@Initialize@4:

; 150  : }

  0008a	8b e5		 mov	 esp, ebp
  0008c	5d		 pop	 ebp
  0008d	c3		 ret	 0
?Initialize@CTDA9873AudioDecoder@@QAEHXZ ENDP		; CTDA9873AudioDecoder::Initialize
PUBLIC	??0CTDA9873AudioDecoder@@QAE@XZ			; CTDA9873AudioDecoder::CTDA9873AudioDecoder
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??0CTDA9873AudioDecoder@@QAE@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??0CTDA9873AudioDecoder@@QAE@XZ$0
	DD	00H
	DD	FLAT:__unwindfunclet$??0CTDA9873AudioDecoder@@QAE@XZ$1
__ehfuncinfo$??0CTDA9873AudioDecoder@@QAE@XZ DD 019930522H
	DD	02H
	DD	FLAT:__unwindtable$??0CTDA9873AudioDecoder@@QAE@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??0CTDA9873AudioDecoder@@QAE@XZ
_TEXT	SEGMENT
_this$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
??0CTDA9873AudioDecoder@@QAE@XZ PROC			; CTDA9873AudioDecoder::CTDA9873AudioDecoder, COMDAT
; _this$ = ecx

; 71   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??0CTDA9873AudioDecoder@@QAE@XZ
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	51		 push	 ecx
  00012	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  00017	33 c5		 xor	 eax, ebp
  00019	50		 push	 eax
  0001a	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  0001d	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00023	89 4d f0	 mov	 DWORD PTR _this$[ebp], ecx
  00026	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00029	e8 00 00 00 00	 call	 ??0CAudioDecoder@@QAE@XZ ; CAudioDecoder::CAudioDecoder
  0002e	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  00035	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00038	83 c1 20	 add	 ecx, 32			; 00000020H
  0003b	e8 00 00 00 00	 call	 ??0CI2CDevice@@QAE@XZ	; CI2CDevice::CI2CDevice
  00040	c6 45 fc 01	 mov	 BYTE PTR __$EHRec$[ebp+8], 1
  00044	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00047	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], OFFSET ??_7CTDA9873AudioDecoder@@6BCAudioDecoder@@@
  0004d	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00050	c7 41 20 00 00
	00 00		 mov	 DWORD PTR [ecx+32], OFFSET ??_7CTDA9873AudioDecoder@@6BCI2CDevice@@@

; 72   :     m_ShadowReg[TDA9873_REG_SWITCH] = 0;

  00057	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  0005a	c6 42 2c 00	 mov	 BYTE PTR [edx+44], 0

; 73   :     m_ShadowReg[TDA9873_REG_STANDARD] = 0;

  0005e	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00061	c6 40 2d 00	 mov	 BYTE PTR [eax+45], 0

; 74   :     m_ShadowReg[TDA9873_REG_PORT] = 0;

  00065	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00068	c6 41 2e 00	 mov	 BYTE PTR [ecx+46], 0

; 75   : 
; 76   :     m_AudioStandard = m_ShadowReg[TDA9873_REG_STANDARD] & TDA9873ST_STANDARDMASK;

  0006c	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  0006f	0f b6 42 2d	 movzx	 eax, BYTE PTR [edx+45]
  00073	83 e0 70	 and	 eax, 112		; 00000070H
  00076	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00079	89 41 10	 mov	 DWORD PTR [ecx+16], eax

; 77   : 
; 78   :     m_AutoDetecting = 0;

  0007c	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  0007f	c7 42 48 00 00
	00 00		 mov	 DWORD PTR [edx+72], 0

; 79   :     m_TDA9873Thread = NULL;

  00086	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00089	c7 40 30 00 00
	00 00		 mov	 DWORD PTR [eax+48], 0

; 80   :     m_SupportedSoundChannels = SUPPORTEDSOUNDCHANNEL_MONO;

  00090	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00093	c7 41 4c 01 00
	00 00		 mov	 DWORD PTR [ecx+76], 1

; 81   : }

  0009a	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  000a1	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  000a4	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  000a7	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  000ae	59		 pop	 ecx
  000af	8b e5		 mov	 esp, ebp
  000b1	5d		 pop	 ebp
  000b2	c3		 ret	 0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??0CTDA9873AudioDecoder@@QAE@XZ$0:
  00000	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1CAudioDecoder@@UAE@XZ ; CAudioDecoder::~CAudioDecoder
__unwindfunclet$??0CTDA9873AudioDecoder@@QAE@XZ$1:
  00008	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0000b	83 c1 20	 add	 ecx, 32			; 00000020H
  0000e	e9 00 00 00 00	 jmp	 ??1CI2CDevice@@UAE@XZ	; CI2CDevice::~CI2CDevice
__ehhandler$??0CTDA9873AudioDecoder@@QAE@XZ:
  00013	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  00017	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  0001a	8b 4a f8	 mov	 ecx, DWORD PTR [edx-8]
  0001d	33 c8		 xor	 ecx, eax
  0001f	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00024	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$??0CTDA9873AudioDecoder@@QAE@XZ
  00029	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??0CTDA9873AudioDecoder@@QAE@XZ ENDP			; CTDA9873AudioDecoder::CTDA9873AudioDecoder
PUBLIC	?StopThread@CTDA9873AudioDecoder@@AAEXXZ	; CTDA9873AudioDecoder::StopThread
; Function compile flags: /Odtp
;	COMDAT ?StopThread@CTDA9873AudioDecoder@@AAEXXZ
_TEXT	SEGMENT
_this$ = -8						; size = 4
_dwResult$139962 = -4					; size = 4
?StopThread@CTDA9873AudioDecoder@@AAEXXZ PROC		; CTDA9873AudioDecoder::StopThread, COMDAT
; _this$ = ecx

; 437  : {

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

; 438  :     if (m_TDA9873Thread != NULL)

  00009	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	83 78 30 00	 cmp	 DWORD PTR [eax+48], 0
  00010	74 67		 je	 SHORT $LN3@StopThread@4

; 439  :     {
; 440  :         // Signal the stop
; 441  :         m_StopThread = TRUE;

  00012	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00015	c7 41 34 01 00
	00 00		 mov	 DWORD PTR [ecx+52], 1

; 442  :         ResumeThread(m_TDA9873Thread);

  0001c	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  0001f	8b 42 30	 mov	 eax, DWORD PTR [edx+48]
  00022	50		 push	 eax
  00023	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__ResumeThread@4

; 443  : 
; 444  :         // Wait one second for the thread to exit gracefully
; 445  :         DWORD dwResult = WaitForSingleObject(m_TDA9873Thread, 1000);

  00029	68 e8 03 00 00	 push	 1000			; 000003e8H
  0002e	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00031	8b 51 30	 mov	 edx, DWORD PTR [ecx+48]
  00034	52		 push	 edx
  00035	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__WaitForSingleObject@8
  0003b	89 45 fc	 mov	 DWORD PTR _dwResult$139962[ebp], eax

; 446  : 
; 447  :         if (dwResult != WAIT_OBJECT_0)

  0003e	83 7d fc 00	 cmp	 DWORD PTR _dwResult$139962[ebp], 0
  00042	74 1e		 je	 SHORT $LN1@StopThread@4

; 448  :         {
; 449  :             LOG(1,_T("TDA9873 detect loop did not terminate gracefully: terminating!"));

  00044	68 00 00 00 00	 push	 OFFSET ??_C@_1HO@GMHMNHEL@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?5?$AAd?$AAi?$AAd?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAt?$AAe?$AAr?$AAm@
  00049	6a 01		 push	 1
  0004b	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00050	83 c4 08	 add	 esp, 8

; 450  :             TerminateThread(m_TDA9873Thread, 0);

  00053	6a 00		 push	 0
  00055	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  00058	8b 48 30	 mov	 ecx, DWORD PTR [eax+48]
  0005b	51		 push	 ecx
  0005c	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__TerminateThread@8
$LN1@StopThread@4:

; 451  :         }
; 452  : 
; 453  :         CloseHandle(m_TDA9873Thread);

  00062	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00065	8b 42 30	 mov	 eax, DWORD PTR [edx+48]
  00068	50		 push	 eax
  00069	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CloseHandle@4

; 454  :         m_TDA9873Thread = NULL;

  0006f	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00072	c7 41 30 00 00
	00 00		 mov	 DWORD PTR [ecx+48], 0
$LN3@StopThread@4:

; 455  :     }
; 456  : }

  00079	8b e5		 mov	 esp, ebp
  0007b	5d		 pop	 ebp
  0007c	c3		 ret	 0
?StopThread@CTDA9873AudioDecoder@@AAEXXZ ENDP		; CTDA9873AudioDecoder::StopThread
_TEXT	ENDS
PUBLIC	??1CTDA9873AudioDecoder@@UAE@XZ			; CTDA9873AudioDecoder::~CTDA9873AudioDecoder
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??1CTDA9873AudioDecoder@@UAE@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??1CTDA9873AudioDecoder@@UAE@XZ$0
	DD	00H
	DD	FLAT:__unwindfunclet$??1CTDA9873AudioDecoder@@UAE@XZ$1
__ehfuncinfo$??1CTDA9873AudioDecoder@@UAE@XZ DD 019930522H
	DD	02H
	DD	FLAT:__unwindtable$??1CTDA9873AudioDecoder@@UAE@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??1CTDA9873AudioDecoder@@UAE@XZ
_TEXT	SEGMENT
_this$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
??1CTDA9873AudioDecoder@@UAE@XZ PROC			; CTDA9873AudioDecoder::~CTDA9873AudioDecoder, COMDAT
; _this$ = ecx

; 84   : {

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

; 85   :     StopThread();

  00040	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00043	e8 00 00 00 00	 call	 ?StopThread@CTDA9873AudioDecoder@@AAEXXZ ; CTDA9873AudioDecoder::StopThread

; 86   : }

  00048	c6 45 fc 00	 mov	 BYTE PTR __$EHRec$[ebp+8], 0
  0004c	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0004f	83 c1 20	 add	 ecx, 32			; 00000020H
  00052	e8 00 00 00 00	 call	 ??1CI2CDevice@@UAE@XZ	; CI2CDevice::~CI2CDevice
  00057	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  0005e	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00061	e8 00 00 00 00	 call	 ??1CAudioDecoder@@UAE@XZ ; CAudioDecoder::~CAudioDecoder
  00066	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  00069	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  00070	59		 pop	 ecx
  00071	8b e5		 mov	 esp, ebp
  00073	5d		 pop	 ebp
  00074	c3		 ret	 0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??1CTDA9873AudioDecoder@@UAE@XZ$0:
  00000	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1CAudioDecoder@@UAE@XZ ; CAudioDecoder::~CAudioDecoder
__unwindfunclet$??1CTDA9873AudioDecoder@@UAE@XZ$1:
  00008	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0000b	83 c1 20	 add	 ecx, 32			; 00000020H
  0000e	e9 00 00 00 00	 jmp	 ??1CI2CDevice@@UAE@XZ	; CI2CDevice::~CI2CDevice
__ehhandler$??1CTDA9873AudioDecoder@@UAE@XZ:
  00013	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  00017	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  0001a	8b 4a f8	 mov	 ecx, DWORD PTR [edx-8]
  0001d	33 c8		 xor	 ecx, eax
  0001f	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00024	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$??1CTDA9873AudioDecoder@@UAE@XZ
  00029	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??1CTDA9873AudioDecoder@@UAE@XZ ENDP			; CTDA9873AudioDecoder::~CTDA9873AudioDecoder
; Function compile flags: /Odtp
;	COMDAT ??_GCTDA9873AudioDecoder@@UAEPAXI@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
___flags$ = 8						; size = 4
??_GCTDA9873AudioDecoder@@UAEPAXI@Z PROC		; CTDA9873AudioDecoder::`scalar deleting destructor', COMDAT
; _this$ = ecx
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx
  00007	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000a	e8 00 00 00 00	 call	 ??1CTDA9873AudioDecoder@@UAE@XZ ; CTDA9873AudioDecoder::~CTDA9873AudioDecoder
  0000f	8b 45 08	 mov	 eax, DWORD PTR ___flags$[ebp]
  00012	83 e0 01	 and	 eax, 1
  00015	74 0c		 je	 SHORT $LN1@scalar@429
  00017	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0001a	51		 push	 ecx
  0001b	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00020	83 c4 04	 add	 esp, 4
$LN1@scalar@429:
  00023	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00026	8b e5		 mov	 esp, ebp
  00028	5d		 pop	 ebp
  00029	c2 04 00	 ret	 4
??_GCTDA9873AudioDecoder@@UAEPAXI@Z ENDP		; CTDA9873AudioDecoder::`scalar deleting destructor'
PUBLIC	?DetectThread@CTDA9873AudioDecoder@@QAEHXZ	; CTDA9873AudioDecoder::DetectThread
; Function compile flags: /Odtp
;	COMDAT ?DetectThread@CTDA9873AudioDecoder@@QAEHXZ
_TEXT	SEGMENT
tv169 = -36						; size = 4
tv165 = -32						; size = 4
tv161 = -28						; size = 4
tv157 = -24						; size = 4
_this$ = -20						; size = 4
_status$139984 = -13					; size = 1
_iSupported$139982 = -12				; size = 4
_Supported$139981 = -8					; size = 4
_DetectCounter$ = -4					; size = 4
?DetectThread@CTDA9873AudioDecoder@@QAEHXZ PROC		; CTDA9873AudioDecoder::DetectThread, COMDAT
; _this$ = ecx

; 459  : {

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

; 460  :     int DetectCounter = 1;

  00009	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _DetectCounter$[ebp], 1

; 461  :     m_SupportedSoundChannels = SUPPORTEDSOUNDCHANNEL_MONO;

  00010	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00013	c7 40 4c 01 00
	00 00		 mov	 DWORD PTR [eax+76], 1
$LN14@DetectThre@2:

; 462  : 
; 463  :     while (!m_StopThread)

  0001a	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  0001d	83 79 34 00	 cmp	 DWORD PTR [ecx+52], 0
  00021	0f 85 11 02 00
	00		 jne	 $LN13@DetectThre@2

; 464  :     {
; 465  :         if (m_ThreadWait)

  00027	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  0002a	83 7a 38 00	 cmp	 DWORD PTR [edx+56], 0
  0002e	74 28		 je	 SHORT $LN12@DetectThre@2

; 466  :         {
; 467  :             LOGD(_T("Waiting TDA9873 detect loop"));
; 468  :             m_AutoDetecting = 0;

  00030	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00033	c7 40 48 00 00
	00 00		 mov	 DWORD PTR [eax+72], 0

; 469  :             SuspendThread(m_TDA9873Thread);

  0003a	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  0003d	8b 51 30	 mov	 edx, DWORD PTR [ecx+48]
  00040	52		 push	 edx
  00041	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SuspendThread@4

; 470  :             LOGD(_T("Resuming TDA9873 detect loop"));
; 471  :             DetectCounter = 1;

  00047	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _DetectCounter$[ebp], 1

; 472  :             m_SupportedSoundChannels = SUPPORTEDSOUNDCHANNEL_MONO;

  0004e	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00051	c7 40 4c 01 00
	00 00		 mov	 DWORD PTR [eax+76], 1
$LN12@DetectThre@2:

; 473  :         }
; 474  : 
; 475  :         if (m_AutoDetecting==1)         //Detect standard

  00058	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  0005b	83 79 48 01	 cmp	 DWORD PTR [ecx+72], 1
  0005f	75 48		 jne	 SHORT $LN11@DetectThre@2

; 476  :         {
; 477  :             // No autodetection of standard possible!!?
; 478  :             EventCollector->RaiseEvent(this, EVENT_AUDIOSTANDARD_DETECTED, 0, m_AudioStandard);

  00061	6a 00		 push	 0
  00063	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  00066	8b 42 10	 mov	 eax, DWORD PTR [edx+16]
  00069	50		 push	 eax
  0006a	6a 00		 push	 0
  0006c	6a 10		 push	 16			; 00000010H
  0006e	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00071	51		 push	 ecx
  00072	b9 00 00 00 00	 mov	 ecx, OFFSET ?EventCollector@@3V?$SmartPtr@VCEventCollector@@@@A ; EventCollector
  00077	e8 00 00 00 00	 call	 ??C?$SmartPtr@VCEventCollector@@@@QBEPAVCEventCollector@@XZ ; SmartPtr<CEventCollector>::operator->
  0007c	8b c8		 mov	 ecx, eax
  0007e	e8 00 00 00 00	 call	 ?RaiseEvent@CEventCollector@@QAEXPAVCEventObject@@W4eEventType@@JJPAW43@@Z ; CEventCollector::RaiseEvent

; 479  : 
; 480  :             if (m_DetectSupportedSoundChannels)

  00083	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  00086	83 7a 3c 00	 cmp	 DWORD PTR [edx+60], 0
  0008a	74 0c		 je	 SHORT $LN10@DetectThre@2

; 481  :             {
; 482  :                 m_AutoDetecting = 2;    //Try to find stereo

  0008c	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  0008f	c7 40 48 02 00
	00 00		 mov	 DWORD PTR [eax+72], 2

; 483  :             }
; 484  :             else

  00096	eb 0a		 jmp	 SHORT $LN9@DetectThre@2
$LN10@DetectThre@2:

; 485  :             {
; 486  :                 m_ThreadWait = TRUE;    //Finished

  00098	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  0009b	c7 41 38 01 00
	00 00		 mov	 DWORD PTR [ecx+56], 1
$LN9@DetectThre@2:

; 487  :             }
; 488  : 
; 489  :             DetectCounter = 1;

  000a2	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _DetectCounter$[ebp], 1
$LN11@DetectThre@2:

; 490  :         }
; 491  : 
; 492  :         if (m_AutoDetecting==2)         //Detect mono/stereo/lang1/lang2

  000a9	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  000ac	83 7a 48 02	 cmp	 DWORD PTR [edx+72], 2
  000b0	0f 85 5a 01 00
	00		 jne	 $LN8@DetectThre@2

; 493  :         {
; 494  :             if ((DetectCounter >= 100) && (DetectCounter%m_DetectInterval10ms) == 0)

  000b6	83 7d fc 64	 cmp	 DWORD PTR _DetectCounter$[ebp], 100 ; 00000064H
  000ba	0f 8c 50 01 00
	00		 jl	 $LN8@DetectThre@2
  000c0	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  000c3	8b 48 44	 mov	 ecx, DWORD PTR [eax+68]
  000c6	8b 45 fc	 mov	 eax, DWORD PTR _DetectCounter$[ebp]
  000c9	99		 cdq
  000ca	f7 f9		 idiv	 ecx
  000cc	85 d2		 test	 edx, edx
  000ce	0f 85 3c 01 00
	00		 jne	 $LN8@DetectThre@2

; 495  :             {
; 496  :                 eSupportedSoundChannels Supported = SUPPORTEDSOUNDCHANNEL_MONO;

  000d4	c7 45 f8 01 00
	00 00		 mov	 DWORD PTR _Supported$139981[ebp], 1

; 497  :                 int iSupported = (int)Supported;

  000db	8b 55 f8	 mov	 edx, DWORD PTR _Supported$139981[ebp]
  000de	89 55 f4	 mov	 DWORD PTR _iSupported$139982[ebp], edx

; 498  : 
; 499  :                 BYTE status = ReadStatus();

  000e1	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  000e4	e8 00 00 00 00	 call	 ?ReadStatus@CTDA9873AudioDecoder@@AAEEXZ ; CTDA9873AudioDecoder::ReadStatus
  000e9	88 45 f3	 mov	 BYTE PTR _status$139984[ebp], al

; 500  : 
; 501  :                 if ((status & TDA9873IN_CHANNELMASK) == TDA9873IN_STEREO)

  000ec	0f b6 45 f3	 movzx	 eax, BYTE PTR _status$139984[ebp]
  000f0	83 e0 06	 and	 eax, 6
  000f3	83 f8 02	 cmp	 eax, 2
  000f6	75 09		 jne	 SHORT $LN6@DetectThre@2

; 502  :                 {
; 503  :                     iSupported |= SUPPORTEDSOUNDCHANNEL_STEREO;

  000f8	8b 4d f4	 mov	 ecx, DWORD PTR _iSupported$139982[ebp]
  000fb	83 c9 02	 or	 ecx, 2
  000fe	89 4d f4	 mov	 DWORD PTR _iSupported$139982[ebp], ecx
$LN6@DetectThre@2:

; 504  :                 }
; 505  :                 if ((status & TDA9873IN_CHANNELMASK) == TDA9873IN_LANG12)

  00101	0f b6 55 f3	 movzx	 edx, BYTE PTR _status$139984[ebp]
  00105	83 e2 06	 and	 edx, 6
  00108	83 fa 04	 cmp	 edx, 4
  0010b	75 09		 jne	 SHORT $LN5@DetectThre@2

; 506  :                 {
; 507  :                     iSupported |= SUPPORTEDSOUNDCHANNEL_LANG1|SUPPORTEDSOUNDCHANNEL_LANG2;

  0010d	8b 45 f4	 mov	 eax, DWORD PTR _iSupported$139982[ebp]
  00110	83 c8 0c	 or	 eax, 12			; 0000000cH
  00113	89 45 f4	 mov	 DWORD PTR _iSupported$139982[ebp], eax
$LN5@DetectThre@2:

; 508  :                 }
; 509  : 
; 510  :                 Supported = (eSupportedSoundChannels)iSupported;

  00116	8b 4d f4	 mov	 ecx, DWORD PTR _iSupported$139982[ebp]
  00119	89 4d f8	 mov	 DWORD PTR _Supported$139981[ebp], ecx

; 511  : 
; 512  :                 if ((Supported != m_SupportedSoundChannels) || (DetectCounter >= 200))

  0011c	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  0011f	8b 42 4c	 mov	 eax, DWORD PTR [edx+76]
  00122	39 45 f8	 cmp	 DWORD PTR _Supported$139981[ebp], eax
  00125	75 0d		 jne	 SHORT $LN3@DetectThre@2
  00127	81 7d fc c8 00
	00 00		 cmp	 DWORD PTR _DetectCounter$[ebp], 200 ; 000000c8H
  0012e	0f 8c dc 00 00
	00		 jl	 $LN8@DetectThre@2
$LN3@DetectThre@2:

; 513  :                 {
; 514  :                     m_SupportedSoundChannels = Supported;

  00134	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00137	8b 55 f8	 mov	 edx, DWORD PTR _Supported$139981[ebp]
  0013a	89 51 4c	 mov	 DWORD PTR [ecx+76], edx

; 515  : 
; 516  :                     LOG(2,_T("TDA9873: Detect stereo: Supported: %s%s%s%s"),
; 517  :                         (Supported&SUPPORTEDSOUNDCHANNEL_MONO)?_T("Mono "):_T(""),
; 518  :                         (Supported&SUPPORTEDSOUNDCHANNEL_STEREO)?_T("Stereo "):_T(""),
; 519  :                         (Supported&SUPPORTEDSOUNDCHANNEL_LANG1)?_T("Lang1 "):_T(""),
; 520  :                         (Supported&SUPPORTEDSOUNDCHANNEL_LANG2)?_T("Lang2 "):_T(""));

  0013d	8b 45 f8	 mov	 eax, DWORD PTR _Supported$139981[ebp]
  00140	83 e0 08	 and	 eax, 8
  00143	74 09		 je	 SHORT $LN17@DetectThre@2
  00145	c7 45 e8 00 00
	00 00		 mov	 DWORD PTR tv157[ebp], OFFSET ??_C@_1O@KHPFEHK@?$AAL?$AAa?$AAn?$AAg?$AA2?$AA?5?$AA?$AA@
  0014c	eb 07		 jmp	 SHORT $LN18@DetectThre@2
$LN17@DetectThre@2:
  0014e	c7 45 e8 00 00
	00 00		 mov	 DWORD PTR tv157[ebp], OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN18@DetectThre@2:
  00155	8b 4d f8	 mov	 ecx, DWORD PTR _Supported$139981[ebp]
  00158	83 e1 04	 and	 ecx, 4
  0015b	74 09		 je	 SHORT $LN19@DetectThre@2
  0015d	c7 45 e4 00 00
	00 00		 mov	 DWORD PTR tv161[ebp], OFFSET ??_C@_1O@IMOLCGNE@?$AAL?$AAa?$AAn?$AAg?$AA1?$AA?5?$AA?$AA@
  00164	eb 07		 jmp	 SHORT $LN20@DetectThre@2
$LN19@DetectThre@2:
  00166	c7 45 e4 00 00
	00 00		 mov	 DWORD PTR tv161[ebp], OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN20@DetectThre@2:
  0016d	8b 55 f8	 mov	 edx, DWORD PTR _Supported$139981[ebp]
  00170	83 e2 02	 and	 edx, 2
  00173	74 09		 je	 SHORT $LN21@DetectThre@2
  00175	c7 45 e0 00 00
	00 00		 mov	 DWORD PTR tv165[ebp], OFFSET ??_C@_1BA@ICMAAGLB@?$AAS?$AAt?$AAe?$AAr?$AAe?$AAo?$AA?5?$AA?$AA@
  0017c	eb 07		 jmp	 SHORT $LN22@DetectThre@2
$LN21@DetectThre@2:
  0017e	c7 45 e0 00 00
	00 00		 mov	 DWORD PTR tv165[ebp], OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN22@DetectThre@2:
  00185	8b 45 f8	 mov	 eax, DWORD PTR _Supported$139981[ebp]
  00188	83 e0 01	 and	 eax, 1
  0018b	74 09		 je	 SHORT $LN23@DetectThre@2
  0018d	c7 45 dc 00 00
	00 00		 mov	 DWORD PTR tv169[ebp], OFFSET ??_C@_1M@JGPLHAEL@?$AAM?$AAo?$AAn?$AAo?$AA?5?$AA?$AA@
  00194	eb 07		 jmp	 SHORT $LN24@DetectThre@2
$LN23@DetectThre@2:
  00196	c7 45 dc 00 00
	00 00		 mov	 DWORD PTR tv169[ebp], OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN24@DetectThre@2:
  0019d	8b 4d e8	 mov	 ecx, DWORD PTR tv157[ebp]
  001a0	51		 push	 ecx
  001a1	8b 55 e4	 mov	 edx, DWORD PTR tv161[ebp]
  001a4	52		 push	 edx
  001a5	8b 45 e0	 mov	 eax, DWORD PTR tv165[ebp]
  001a8	50		 push	 eax
  001a9	8b 4d dc	 mov	 ecx, DWORD PTR tv169[ebp]
  001ac	51		 push	 ecx
  001ad	68 00 00 00 00	 push	 OFFSET ??_C@_1FI@FFGABDL@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?3?$AA?5?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAs?$AAt?$AAe?$AAr?$AAe?$AAo?$AA?3?$AA?5?$AAS?$AAu?$AAp?$AAp?$AAo?$AAr?$AAt?$AAe@
  001b2	6a 02		 push	 2
  001b4	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  001b9	83 c4 18	 add	 esp, 24			; 00000018H

; 521  : 
; 522  :                     SetSoundChannel(IsAudioChannelDetected(m_TargetSoundChannel));

  001bc	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  001bf	8b 42 40	 mov	 eax, DWORD PTR [edx+64]
  001c2	50		 push	 eax
  001c3	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  001c6	8b 11		 mov	 edx, DWORD PTR [ecx]
  001c8	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  001cb	8b 42 10	 mov	 eax, DWORD PTR [edx+16]
  001ce	ff d0		 call	 eax
  001d0	50		 push	 eax
  001d1	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  001d4	8b 11		 mov	 edx, DWORD PTR [ecx]
  001d6	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  001d9	8b 42 08	 mov	 eax, DWORD PTR [edx+8]
  001dc	ff d0		 call	 eax

; 523  : 
; 524  :                     EventCollector->RaiseEvent(this, EVENT_AUDIOCHANNELSUPPORT_DETECTED, 0, Supported);

  001de	6a 00		 push	 0
  001e0	8b 4d f8	 mov	 ecx, DWORD PTR _Supported$139981[ebp]
  001e3	51		 push	 ecx
  001e4	6a 00		 push	 0
  001e6	6a 11		 push	 17			; 00000011H
  001e8	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  001eb	52		 push	 edx
  001ec	b9 00 00 00 00	 mov	 ecx, OFFSET ?EventCollector@@3V?$SmartPtr@VCEventCollector@@@@A ; EventCollector
  001f1	e8 00 00 00 00	 call	 ??C?$SmartPtr@VCEventCollector@@@@QBEPAVCEventCollector@@XZ ; SmartPtr<CEventCollector>::operator->
  001f6	8b c8		 mov	 ecx, eax
  001f8	e8 00 00 00 00	 call	 ?RaiseEvent@CEventCollector@@QAEXPAVCEventObject@@W4eEventType@@JJPAW43@@Z ; CEventCollector::RaiseEvent

; 525  : 
; 526  :                     if (DetectCounter >= 200)

  001fd	81 7d fc c8 00
	00 00		 cmp	 DWORD PTR _DetectCounter$[ebp], 200 ; 000000c8H
  00204	7c 0a		 jl	 SHORT $LN8@DetectThre@2

; 527  :                     {
; 528  :                         m_ThreadWait = TRUE;    //Finished

  00206	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00209	c7 40 38 01 00
	00 00		 mov	 DWORD PTR [eax+56], 1
$LN8@DetectThre@2:

; 529  :                     }
; 530  :                 }
; 531  :             }
; 532  :         }
; 533  : 
; 534  :         if (!m_StopThread && !m_ThreadWait)

  00210	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00213	83 79 34 00	 cmp	 DWORD PTR [ecx+52], 0
  00217	75 1a		 jne	 SHORT $LN1@DetectThre@2
  00219	8b 55 ec	 mov	 edx, DWORD PTR _this$[ebp]
  0021c	83 7a 38 00	 cmp	 DWORD PTR [edx+56], 0
  00220	75 11		 jne	 SHORT $LN1@DetectThre@2

; 535  :         {
; 536  :             Sleep(10);

  00222	6a 0a		 push	 10			; 0000000aH
  00224	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__Sleep@4

; 537  :             ++DetectCounter;

  0022a	8b 45 fc	 mov	 eax, DWORD PTR _DetectCounter$[ebp]
  0022d	83 c0 01	 add	 eax, 1
  00230	89 45 fc	 mov	 DWORD PTR _DetectCounter$[ebp], eax
$LN1@DetectThre@2:

; 538  :         }
; 539  :     }

  00233	e9 e2 fd ff ff	 jmp	 $LN14@DetectThre@2
$LN13@DetectThre@2:

; 540  : 
; 541  :     return 0;

  00238	33 c0		 xor	 eax, eax

; 542  : }

  0023a	8b e5		 mov	 esp, ebp
  0023c	5d		 pop	 ebp
  0023d	c3		 ret	 0
?DetectThread@CTDA9873AudioDecoder@@QAEHXZ ENDP		; CTDA9873AudioDecoder::DetectThread
_TEXT	ENDS
PUBLIC	__$ArrayPad$
PUBLIC	?TDA9873ThreadProc@@YGKPAX@Z			; TDA9873ThreadProc
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?TDA9873ThreadProc@@YGKPAX@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?TDA9873ThreadProc@@YGKPAX@Z$2
	DD	00H
	DD	00H
	DD	00H
	DD	00H
__catchsym$?TDA9873ThreadProc@@YGKPAX@Z$3 DD 00H
	DD	00H
	DD	00H
	DD	FLAT:__catch$?TDA9873ThreadProc@@YGKPAX@Z$0
__tryblocktable$?TDA9873ThreadProc@@YGKPAX@Z DD 01H
	DD	01H
	DD	02H
	DD	01H
	DD	FLAT:__catchsym$?TDA9873ThreadProc@@YGKPAX@Z$3
__ehfuncinfo$?TDA9873ThreadProc@@YGKPAX@Z DD 019930522H
	DD	03H
	DD	FLAT:__unwindtable$?TDA9873ThreadProc@@YGKPAX@Z
	DD	01H
	DD	FLAT:__tryblocktable$?TDA9873ThreadProc@@YGKPAX@Z
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ?TDA9873ThreadProc@@YGKPAX@Z
_TEXT	SEGMENT
$T351956 = -60						; size = 4
_thisThread$ = -56					; size = 32
__$ArrayPad$ = -24					; size = 4
_Result$ = -20						; size = 4
__$EHRec$ = -16						; size = 16
_lpThreadParameter$ = 8					; size = 4
?TDA9873ThreadProc@@YGKPAX@Z PROC			; TDA9873ThreadProc, COMDAT

; 387  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$?TDA9873ThreadProc@@YGKPAX@Z
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	51		 push	 ecx
  00012	83 ec 2c	 sub	 esp, 44			; 0000002cH
  00015	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  0001a	33 c5		 xor	 eax, ebp
  0001c	89 45 e8	 mov	 DWORD PTR __$ArrayPad$[ebp], eax
  0001f	53		 push	 ebx
  00020	56		 push	 esi
  00021	57		 push	 edi
  00022	50		 push	 eax
  00023	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp+4]
  00026	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  0002c	89 65 f0	 mov	 DWORD PTR __$EHRec$[ebp], esp

; 388  :     int Result = 1;

  0002f	c7 45 ec 01 00
	00 00		 mov	 DWORD PTR _Result$[ebp], 1

; 389  : 
; 390  :     DScalerThread thisThread(_T("TDA9873DetectThread"));

  00036	68 00 00 00 00	 push	 OFFSET ??_C@_1CI@NEOLEGK@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAT?$AAh?$AAr?$AAe?$AAa?$AAd?$AA?$AA@
  0003b	8d 4d c8	 lea	 ecx, DWORD PTR _thisThread$[ebp]
  0003e	e8 00 00 00 00	 call	 ??0DScalerThread@@QAE@PB_W@Z ; DScalerThread::DScalerThread
  00043	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+12], 0

; 391  :     if (lpThreadParameter != NULL)

  0004a	83 7d 08 00	 cmp	 DWORD PTR _lpThreadParameter$[ebp], 0
  0004e	74 34		 je	 SHORT $LN2@TDA9873Thr

; 392  :     {
; 393  :         try
; 394  :         {

  00050	c6 45 fc 01	 mov	 BYTE PTR __$EHRec$[ebp+12], 1

; 395  :             Result = ((CTDA9873AudioDecoder*)lpThreadParameter)->DetectThread();

  00054	8b 4d 08	 mov	 ecx, DWORD PTR _lpThreadParameter$[ebp]
  00057	e8 00 00 00 00	 call	 ?DetectThread@CTDA9873AudioDecoder@@QAEHXZ ; CTDA9873AudioDecoder::DetectThread
  0005c	89 45 ec	 mov	 DWORD PTR _Result$[ebp], eax

; 396  :         }

  0005f	eb 1c		 jmp	 SHORT $LN5@TDA9873Thr
__catch$?TDA9873ThreadProc@@YGKPAX@Z$0:

; 397  :         catch(...)
; 398  :         {
; 399  :             LOG(1, _T("Crash in TDA9873 detect loop"));

  00061	68 00 00 00 00	 push	 OFFSET ??_C@_1DK@DLIJKAHN@?$AAC?$AAr?$AAa?$AAs?$AAh?$AA?5?$AAi?$AAn?$AA?5?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?$AA@
  00066	6a 01		 push	 1
  00068	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0006d	83 c4 08	 add	 esp, 8

; 400  :         }

  00070	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+12], 0
  00077	b8 00 00 00 00	 mov	 eax, $LN2@TDA9873Thr
  0007c	c3		 ret	 0
$LN5@TDA9873Thr:
  0007d	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+12], 0
$LN2@TDA9873Thr:

; 401  :     }
; 402  :     return Result;

  00084	8b 45 ec	 mov	 eax, DWORD PTR _Result$[ebp]
  00087	89 45 c4	 mov	 DWORD PTR $T351956[ebp], eax
  0008a	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+12], -1
  00091	8d 4d c8	 lea	 ecx, DWORD PTR _thisThread$[ebp]
  00094	e8 00 00 00 00	 call	 ??1DScalerThread@@QAE@XZ ; DScalerThread::~DScalerThread
  00099	8b 45 c4	 mov	 eax, DWORD PTR $T351956[ebp]

; 403  : }

  0009c	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp+4]
  0009f	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  000a6	59		 pop	 ecx
  000a7	5f		 pop	 edi
  000a8	5e		 pop	 esi
  000a9	5b		 pop	 ebx
  000aa	8b 4d e8	 mov	 ecx, DWORD PTR __$ArrayPad$[ebp]
  000ad	33 cd		 xor	 ecx, ebp
  000af	e8 00 00 00 00	 call	 @__security_check_cookie@4
  000b4	8b e5		 mov	 esp, ebp
  000b6	5d		 pop	 ebp
  000b7	c2 04 00	 ret	 4
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?TDA9873ThreadProc@@YGKPAX@Z$2:
  00000	8d 4d c8	 lea	 ecx, DWORD PTR _thisThread$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1DScalerThread@@QAE@XZ ; DScalerThread::~DScalerThread
__ehhandler$?TDA9873ThreadProc@@YGKPAX@Z:
  00008	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  0000c	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  0000f	8b 4a c0	 mov	 ecx, DWORD PTR [edx-64]
  00012	33 c8		 xor	 ecx, eax
  00014	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00019	8b 4a f4	 mov	 ecx, DWORD PTR [edx-12]
  0001c	33 c8		 xor	 ecx, eax
  0001e	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00023	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$?TDA9873ThreadProc@@YGKPAX@Z
  00028	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
?TDA9873ThreadProc@@YGKPAX@Z ENDP			; TDA9873ThreadProc
PUBLIC	?StartThread@CTDA9873AudioDecoder@@AAEXXZ	; CTDA9873AudioDecoder::StartThread
; Function compile flags: /Odtp
;	COMDAT ?StartThread@CTDA9873AudioDecoder@@AAEXXZ
_TEXT	SEGMENT
_this$ = -8						; size = 4
_LinkThreadID$ = -4					; size = 4
?StartThread@CTDA9873AudioDecoder@@AAEXXZ PROC		; CTDA9873AudioDecoder::StartThread, COMDAT
; _this$ = ecx

; 406  : {

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

; 407  :     DWORD LinkThreadID;
; 408  : 
; 409  :     m_ThreadWait = FALSE;

  00009	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	c7 40 38 00 00
	00 00		 mov	 DWORD PTR [eax+56], 0

; 410  : 
; 411  :     if (m_TDA9873Thread != NULL)

  00013	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00016	83 79 30 00	 cmp	 DWORD PTR [ecx+48], 0
  0001a	74 4a		 je	 SHORT $LN3@StartThrea@3

; 412  :     {
; 413  :         // Already started, resume
; 414  :         if(ResumeThread(m_TDA9873Thread) == 0)

  0001c	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  0001f	8b 42 30	 mov	 eax, DWORD PTR [edx+48]
  00022	50		 push	 eax
  00023	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__ResumeThread@4
  00029	85 c0		 test	 eax, eax
  0002b	75 37		 jne	 SHORT $LN2@StartThrea@3

; 415  :         {
; 416  :             LOG(1, _T("TDA9873 detect loop not waiting(1)"));

  0002d	68 00 00 00 00	 push	 OFFSET ??_C@_1EG@FOFPPEPF@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAw?$AAa?$AAi?$AAt?$AAi?$AAn?$AAg?$AA?$CI@
  00032	6a 01		 push	 1
  00034	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00039	83 c4 08	 add	 esp, 8

; 417  :             Sleep(10);

  0003c	6a 0a		 push	 10			; 0000000aH
  0003e	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__Sleep@4

; 418  :             if(ResumeThread(m_TDA9873Thread) == 0)

  00044	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00047	8b 51 30	 mov	 edx, DWORD PTR [ecx+48]
  0004a	52		 push	 edx
  0004b	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__ResumeThread@4
  00051	85 c0		 test	 eax, eax
  00053	75 0f		 jne	 SHORT $LN2@StartThrea@3

; 419  :             {
; 420  :                 LOG(1, _T("TDA9873 detect loop not waiting(2)"));

  00055	68 00 00 00 00	 push	 OFFSET ??_C@_1EG@NIMLIGFL@?$AAT?$AAD?$AAA?$AA9?$AA8?$AA7?$AA3?$AA?5?$AAd?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAl?$AAo?$AAo?$AAp?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAw?$AAa?$AAi?$AAt?$AAi?$AAn?$AAg?$AA?$CI@
  0005a	6a 01		 push	 1
  0005c	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00061	83 c4 08	 add	 esp, 8
$LN2@StartThrea@3:

; 421  :             }
; 422  :         }
; 423  :         return;

  00064	eb 29		 jmp	 SHORT $LN4@StartThrea@3
$LN3@StartThrea@3:

; 424  :     }
; 425  : 
; 426  :     m_StopThread = FALSE;

  00066	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  00069	c7 40 34 00 00
	00 00		 mov	 DWORD PTR [eax+52], 0

; 427  : 
; 428  :     m_TDA9873Thread = CreateThread((LPSECURITY_ATTRIBUTES) NULL,  // No security.
; 429  :                              (DWORD) 0,                     // Same stack size.
; 430  :                              TDA9873ThreadProc,                  // Thread procedure.
; 431  :                              (LPVOID)this,                          // Parameter.
; 432  :                              (DWORD) 0,                     // Start immediatly.
; 433  :                              (LPDWORD) &LinkThreadID);     // Thread ID.

  00070	8d 4d fc	 lea	 ecx, DWORD PTR _LinkThreadID$[ebp]
  00073	51		 push	 ecx
  00074	6a 00		 push	 0
  00076	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00079	52		 push	 edx
  0007a	68 00 00 00 00	 push	 OFFSET ?TDA9873ThreadProc@@YGKPAX@Z ; TDA9873ThreadProc
  0007f	6a 00		 push	 0
  00081	6a 00		 push	 0
  00083	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CreateThread@24
  00089	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0008c	89 41 30	 mov	 DWORD PTR [ecx+48], eax
$LN4@StartThrea@3:

; 434  : }

  0008f	8b e5		 mov	 esp, ebp
  00091	5d		 pop	 ebp
  00092	c3		 ret	 0
?StartThread@CTDA9873AudioDecoder@@AAEXXZ ENDP		; CTDA9873AudioDecoder::StartThread
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?DetectAudioStandard@CTDA9873AudioDecoder@@UAEXJHW4eSoundChannel@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_Interval$ = 8						; size = 4
_SupportedSoundChannels$ = 12				; size = 4
_TargetChannel$ = 16					; size = 4
?DetectAudioStandard@CTDA9873AudioDecoder@@UAEXJHW4eSoundChannel@@@Z PROC ; CTDA9873AudioDecoder::DetectAudioStandard, COMDAT
; _this$ = ecx

; 333  : {

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

; 334  :     CAudioDecoder::DetectAudioStandard(Interval, SupportedSoundChannels, TargetChannel);

  00007	8b 45 10	 mov	 eax, DWORD PTR _TargetChannel$[ebp]
  0000a	50		 push	 eax
  0000b	8b 4d 0c	 mov	 ecx, DWORD PTR _SupportedSoundChannels$[ebp]
  0000e	51		 push	 ecx
  0000f	8b 55 08	 mov	 edx, DWORD PTR _Interval$[ebp]
  00012	52		 push	 edx
  00013	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00016	e8 00 00 00 00	 call	 ?DetectAudioStandard@CAudioDecoder@@UAEXJHW4eSoundChannel@@@Z ; CAudioDecoder::DetectAudioStandard

; 335  : 
; 336  :     if (Interval > 0)

  0001b	83 7d 08 00	 cmp	 DWORD PTR _Interval$[ebp], 0
  0001f	7e 16		 jle	 SHORT $LN8@DetectAudi@2

; 337  :     {
; 338  :         m_DetectInterval10ms = (Interval+9)/10;

  00021	8b 45 08	 mov	 eax, DWORD PTR _Interval$[ebp]
  00024	83 c0 09	 add	 eax, 9
  00027	99		 cdq
  00028	b9 0a 00 00 00	 mov	 ecx, 10			; 0000000aH
  0002d	f7 f9		 idiv	 ecx
  0002f	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00032	89 42 44	 mov	 DWORD PTR [edx+68], eax

; 339  :     }
; 340  :     else

  00035	eb 0a		 jmp	 SHORT $LN7@DetectAudi@2
$LN8@DetectAudi@2:

; 341  :     {
; 342  :         //Abort
; 343  :         StopThread();

  00037	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0003a	e8 00 00 00 00	 call	 ?StopThread@CTDA9873AudioDecoder@@AAEXXZ ; CTDA9873AudioDecoder::StopThread

; 344  :         return;

  0003f	eb 7f		 jmp	 SHORT $LN9@DetectAudi@2
$LN7@DetectAudi@2:

; 345  :     }
; 346  : 
; 347  :     if (SupportedSoundChannels)

  00041	83 7d 0c 00	 cmp	 DWORD PTR _SupportedSoundChannels$[ebp], 0
  00045	74 09		 je	 SHORT $LN6@DetectAudi@2

; 348  :     {
; 349  :         m_TargetSoundChannel = TargetChannel;

  00047	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0004a	8b 4d 10	 mov	 ecx, DWORD PTR _TargetChannel$[ebp]
  0004d	89 48 40	 mov	 DWORD PTR [eax+64], ecx
$LN6@DetectAudi@2:

; 350  :     }
; 351  : 
; 352  :     // Suspend thread if detecting
; 353  :     if (m_AutoDetecting)

  00050	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00053	83 7a 48 00	 cmp	 DWORD PTR [edx+72], 0
  00057	74 34		 je	 SHORT $LN5@DetectAudi@2

; 354  :     {
; 355  :         LOGD(_T("Abort1 TDA9873 detect loop"));
; 356  :         m_ThreadWait = TRUE;

  00059	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0005c	c7 40 38 01 00
	00 00		 mov	 DWORD PTR [eax+56], 1

; 357  :         Sleep(10);

  00063	6a 0a		 push	 10			; 0000000aH
  00065	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__Sleep@4

; 358  : 
; 359  :         if (m_AutoDetecting)

  0006b	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0006e	83 79 48 00	 cmp	 DWORD PTR [ecx+72], 0
  00072	74 19		 je	 SHORT $LN5@DetectAudi@2

; 360  :         {
; 361  :             LOGD(_T("Abort2 TDA9873 detect loop"));
; 362  :             Sleep(50);

  00074	6a 32		 push	 50			; 00000032H
  00076	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__Sleep@4

; 363  : 
; 364  :             if (m_AutoDetecting)

  0007c	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0007f	83 7a 48 00	 cmp	 DWORD PTR [edx+72], 0
  00083	74 08		 je	 SHORT $LN5@DetectAudi@2

; 365  :             {
; 366  :                 LOGD(_T("Abort3 TDA9873 detect loop"));
; 367  :                 StopThread();

  00085	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00088	e8 00 00 00 00	 call	 ?StopThread@CTDA9873AudioDecoder@@AAEXXZ ; CTDA9873AudioDecoder::StopThread
$LN5@DetectAudi@2:

; 368  :             }
; 369  :         }
; 370  :     }
; 371  : 
; 372  :     if (SupportedSoundChannels == 2)

  0008d	83 7d 0c 02	 cmp	 DWORD PTR _SupportedSoundChannels$[ebp], 2
  00091	75 0c		 jne	 SHORT $LN2@DetectAudi@2

; 373  :     {
; 374  :         m_AutoDetecting = 2;

  00093	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00096	c7 40 48 02 00
	00 00		 mov	 DWORD PTR [eax+72], 2

; 375  :     }
; 376  :     else

  0009d	eb 19		 jmp	 SHORT $LN1@DetectAudi@2
$LN2@DetectAudi@2:

; 377  :     {
; 378  :         m_AutoDetecting = 1;

  0009f	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  000a2	c7 41 48 01 00
	00 00		 mov	 DWORD PTR [ecx+72], 1

; 379  :         m_DetectSupportedSoundChannels = (SupportedSoundChannels == 1);

  000a9	33 d2		 xor	 edx, edx
  000ab	83 7d 0c 01	 cmp	 DWORD PTR _SupportedSoundChannels$[ebp], 1
  000af	0f 94 c2	 sete	 dl
  000b2	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  000b5	89 50 3c	 mov	 DWORD PTR [eax+60], edx
$LN1@DetectAudi@2:

; 380  :     }
; 381  : 
; 382  :     //Start or resume thread
; 383  :     StartThread();

  000b8	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  000bb	e8 00 00 00 00	 call	 ?StartThread@CTDA9873AudioDecoder@@AAEXXZ ; CTDA9873AudioDecoder::StartThread
$LN9@DetectAudi@2:

; 384  : }

  000c0	8b e5		 mov	 esp, ebp
  000c2	5d		 pop	 ebp
  000c3	c2 0c 00	 ret	 12			; 0000000cH
?DetectAudioStandard@CTDA9873AudioDecoder@@UAEXJHW4eSoundChannel@@@Z ENDP ; CTDA9873AudioDecoder::DetectAudioStandard
END
