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

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

INCLUDELIB OLDNAMES

PUBLIC	?GetDefaultAddress@CTDA9875@@MBEEXZ		; CTDA9875::GetDefaultAddress
PUBLIC	??_R4CTDA9875@@6B@				; CTDA9875::`RTTI Complete Object Locator'
PUBLIC	??_R3CTDA9875@@8				; CTDA9875::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2CTDA9875@@8				; CTDA9875::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@CTDA9875@@8			; CTDA9875::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVCTDA9875@@@8				; CTDA9875 `RTTI Type Descriptor'
PUBLIC	??1CTDA9875@@UAE@XZ				; CTDA9875::~CTDA9875
PUBLIC	??_GCTDA9875@@UAEPAXI@Z				; CTDA9875::`scalar deleting destructor'
PUBLIC	??_7CTDA9875@@6B@				; CTDA9875::`vftable'
EXTRN	??_ECTDA9875@@UAEPAXI@Z:PROC			; CTDA9875::`vector deleting destructor'
;	COMDAT ??_7CTDA9875@@6B@
CONST	SEGMENT
??_7CTDA9875@@6B@ DD FLAT:??_R4CTDA9875@@6B@		; CTDA9875::`vftable'
	DD	FLAT:??_ECTDA9875@@UAEPAXI@Z
	DD	FLAT:?GetDefaultAddress@CTDA9875@@MBEEXZ
CONST	ENDS
;	COMDAT ??_R4CTDA9875@@6B@
rdata$r	SEGMENT
??_R4CTDA9875@@6B@ DD 00H				; CTDA9875::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCTDA9875@@@8
	DD	FLAT:??_R3CTDA9875@@8
rdata$r	ENDS
;	COMDAT ??_R3CTDA9875@@8
rdata$r	SEGMENT
??_R3CTDA9875@@8 DD 00H					; CTDA9875::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2CTDA9875@@8
rdata$r	ENDS
;	COMDAT ??_R2CTDA9875@@8
rdata$r	SEGMENT
??_R2CTDA9875@@8 DD FLAT:??_R1A@?0A@EA@CTDA9875@@8	; CTDA9875::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@CI2CDevice@@8
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@CTDA9875@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@CTDA9875@@8 DD FLAT:??_R0?AVCTDA9875@@@8	; CTDA9875::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3CTDA9875@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCTDA9875@@@8
_DATA	SEGMENT
??_R0?AVCTDA9875@@@8 DD FLAT:??_7type_info@@6B@		; CTDA9875 `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCTDA9875@@', 00H
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\tda9875.cpp
;	COMDAT ?GetDefaultAddress@CTDA9875@@MBEEXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetDefaultAddress@CTDA9875@@MBEEXZ PROC		; CTDA9875::GetDefaultAddress, COMDAT
; _this$ = ecx

; 38   : {

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

; 39   :     return I2C_TDA9875 >> 1;

  00007	b0 58		 mov	 al, 88			; 00000058H

; 40   : }

  00009	8b e5		 mov	 esp, ebp
  0000b	5d		 pop	 ebp
  0000c	c3		 ret	 0
?GetDefaultAddress@CTDA9875@@MBEEXZ ENDP		; CTDA9875::GetDefaultAddress
PUBLIC	?IsDevicePresent@CTDA9875@@QAEHAAH0@Z		; CTDA9875::IsDevicePresent
; Function compile flags: /Odtp
;	COMDAT ?IsDevicePresent@CTDA9875@@QAEHAAH0@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_result$ = -1						; size = 1
_dic$ = 8						; size = 4
_rev$ = 12						; size = 4
?IsDevicePresent@CTDA9875@@QAEHAAH0@Z PROC		; CTDA9875::IsDevicePresent, COMDAT
; _this$ = ecx

; 54   : {

  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

; 55   :     // since 0 is a TRUE valuie make sure we get a change
; 56   :     BYTE result[1] = {3};

  00009	c6 45 ff 03	 mov	 BYTE PTR _result$[ebp], 3

; 57   : 
; 58   :     if(ReadFromSubAddress(254, 0, 0, result, sizeof(result)) == FALSE)

  0000d	6a 01		 push	 1
  0000f	8d 45 ff	 lea	 eax, DWORD PTR _result$[ebp]
  00012	50		 push	 eax
  00013	6a 00		 push	 0
  00015	6a 00		 push	 0
  00017	68 fe 00 00 00	 push	 254			; 000000feH
  0001c	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0001f	e8 00 00 00 00	 call	 ?ReadFromSubAddress@CI2CDevice@@QAEHEPBEIPAEI@Z ; CI2CDevice::ReadFromSubAddress
  00024	85 c0		 test	 eax, eax
  00026	75 04		 jne	 SHORT $LN4@IsDevicePr

; 59   :     {
; 60   :         return FALSE;

  00028	33 c0		 xor	 eax, eax
  0002a	eb 4a		 jmp	 SHORT $LN5@IsDevicePr
$LN4@IsDevicePr:

; 61   :     }
; 62   :     dic = result[0];

  0002c	0f b6 4d ff	 movzx	 ecx, BYTE PTR _result$[ebp]
  00030	8b 55 08	 mov	 edx, DWORD PTR _dic$[ebp]
  00033	89 0a		 mov	 DWORD PTR [edx], ecx

; 63   :     if(ReadFromSubAddress(255, 0, 0, result, sizeof(result)) == FALSE)

  00035	6a 01		 push	 1
  00037	8d 45 ff	 lea	 eax, DWORD PTR _result$[ebp]
  0003a	50		 push	 eax
  0003b	6a 00		 push	 0
  0003d	6a 00		 push	 0
  0003f	68 ff 00 00 00	 push	 255			; 000000ffH
  00044	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00047	e8 00 00 00 00	 call	 ?ReadFromSubAddress@CI2CDevice@@QAEHEPBEIPAEI@Z ; CI2CDevice::ReadFromSubAddress
  0004c	85 c0		 test	 eax, eax
  0004e	75 04		 jne	 SHORT $LN3@IsDevicePr

; 64   :     {
; 65   :         return FALSE;

  00050	33 c0		 xor	 eax, eax
  00052	eb 22		 jmp	 SHORT $LN5@IsDevicePr
$LN3@IsDevicePr:

; 66   :     }
; 67   : 
; 68   :     rev = result[0];

  00054	0f b6 4d ff	 movzx	 ecx, BYTE PTR _result$[ebp]
  00058	8b 55 0c	 mov	 edx, DWORD PTR _rev$[ebp]
  0005b	89 0a		 mov	 DWORD PTR [edx], ecx

; 69   : 
; 70   :     if(dic==0 || dic==2) // tda9875 and tda9875A

  0005d	8b 45 08	 mov	 eax, DWORD PTR _dic$[ebp]
  00060	83 38 00	 cmp	 DWORD PTR [eax], 0
  00063	74 08		 je	 SHORT $LN1@IsDevicePr
  00065	8b 4d 08	 mov	 ecx, DWORD PTR _dic$[ebp]
  00068	83 39 02	 cmp	 DWORD PTR [ecx], 2
  0006b	75 07		 jne	 SHORT $LN2@IsDevicePr
$LN1@IsDevicePr:

; 71   :         return TRUE;

  0006d	b8 01 00 00 00	 mov	 eax, 1
  00072	eb 02		 jmp	 SHORT $LN5@IsDevicePr
$LN2@IsDevicePr:

; 72   : 
; 73   :     return FALSE;

  00074	33 c0		 xor	 eax, eax
$LN5@IsDevicePr:

; 74   : }

  00076	8b e5		 mov	 esp, ebp
  00078	5d		 pop	 ebp
  00079	c2 08 00	 ret	 8
?IsDevicePresent@CTDA9875@@QAEHAAH0@Z ENDP		; CTDA9875::IsDevicePresent
_TEXT	ENDS
PUBLIC	?Reset@CTDA9875@@QAEXXZ				; CTDA9875::Reset
; Function compile flags: /Odtp
;	COMDAT ?Reset@CTDA9875@@QAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Reset@CTDA9875@@QAEXXZ PROC				; CTDA9875::Reset, COMDAT
; _this$ = ecx

; 43   : {

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

; 44   : 
; 45   :     WriteToSubAddress(TDA9875_CFG, 0xd0); /* reg de config 0 (reset)*/

  00007	68 d0 00 00 00	 push	 208			; 000000d0H
  0000c	6a 01		 push	 1
  0000e	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00011	e8 00 00 00 00	 call	 ?WriteToSubAddress@CI2CDevice@@QAEHEE@Z ; CI2CDevice::WriteToSubAddress

; 46   :     WriteToSubAddress(TDA9875_CH1V, 22 );  /* Channel volume 1 -10db */

  00016	6a 16		 push	 22			; 00000016H
  00018	6a 0c		 push	 12			; 0000000cH
  0001a	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0001d	e8 00 00 00 00	 call	 ?WriteToSubAddress@CI2CDevice@@QAEHEE@Z ; CI2CDevice::WriteToSubAddress

; 47   :     WriteToSubAddress(TDA9875_CH2V, 22 );  /* Channel volume 2 -10db */

  00022	6a 16		 push	 22			; 00000016H
  00024	6a 0d		 push	 13			; 0000000dH
  00026	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00029	e8 00 00 00 00	 call	 ?WriteToSubAddress@CI2CDevice@@QAEHEE@Z ; CI2CDevice::WriteToSubAddress

; 48   :     WriteToSubAddress(TDA9875_NCHV, 22 );  /* NICAM volume -10db */

  0002e	6a 16		 push	 22			; 00000016H
  00030	6a 0f		 push	 15			; 0000000fH
  00032	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00035	e8 00 00 00 00	 call	 ?WriteToSubAddress@CI2CDevice@@QAEHEE@Z ; CI2CDevice::WriteToSubAddress

; 49   :     WriteToSubAddress(TDA9875_MUT, TDA9875_MUTE_ON);   /* General mute  */

  0003a	68 ff 00 00 00	 push	 255			; 000000ffH
  0003f	6a 12		 push	 18			; 00000012H
  00041	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00044	e8 00 00 00 00	 call	 ?WriteToSubAddress@CI2CDevice@@QAEHEE@Z ; CI2CDevice::WriteToSubAddress

; 50   : 
; 51   : }

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

; 34   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??0CTDA9875@@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	 ??0CI2CDevice@@QAE@XZ	; CI2CDevice::CI2CDevice
  0002e	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  00035	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00038	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], OFFSET ??_7CTDA9875@@6B@

; 35   : }

  0003e	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  00045	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00048	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  0004b	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  00052	59		 pop	 ecx
  00053	8b e5		 mov	 esp, ebp
  00055	5d		 pop	 ebp
  00056	c3		 ret	 0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??0CTDA9875@@QAE@XZ$0:
  00000	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1CI2CDevice@@UAE@XZ	; CI2CDevice::~CI2CDevice
__ehhandler$??0CTDA9875@@QAE@XZ:
  00008	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  0000c	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  0000f	8b 4a f8	 mov	 ecx, DWORD PTR [edx-8]
  00012	33 c8		 xor	 ecx, eax
  00014	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00019	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$??0CTDA9875@@QAE@XZ
  0001e	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??0CTDA9875@@QAE@XZ ENDP				; CTDA9875::CTDA9875
;	COMDAT xdata$x
; File c:\develop\dscaler423a\dscaler\tda9875.h
xdata$x	SEGMENT
__unwindtable$??1CTDA9875@@UAE@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??1CTDA9875@@UAE@XZ$0
__ehfuncinfo$??1CTDA9875@@UAE@XZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$??1CTDA9875@@UAE@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??1CTDA9875@@UAE@XZ
_TEXT	SEGMENT
_this$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
??1CTDA9875@@UAE@XZ PROC				; CTDA9875::~CTDA9875, COMDAT
; _this$ = ecx

; 88   :     virtual ~CTDA9875() {};

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??1CTDA9875@@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 ??_7CTDA9875@@6B@
  0002f	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  00036	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  0003d	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00040	e8 00 00 00 00	 call	 ??1CI2CDevice@@UAE@XZ	; CI2CDevice::~CI2CDevice
  00045	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  00048	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  0004f	59		 pop	 ecx
  00050	8b e5		 mov	 esp, ebp
  00052	5d		 pop	 ebp
  00053	c3		 ret	 0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??1CTDA9875@@UAE@XZ$0:
  00000	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1CI2CDevice@@UAE@XZ	; CI2CDevice::~CI2CDevice
__ehhandler$??1CTDA9875@@UAE@XZ:
  00008	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  0000c	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  0000f	8b 4a f8	 mov	 ecx, DWORD PTR [edx-8]
  00012	33 c8		 xor	 ecx, eax
  00014	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00019	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$??1CTDA9875@@UAE@XZ
  0001e	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??1CTDA9875@@UAE@XZ ENDP				; CTDA9875::~CTDA9875
; Function compile flags: /Odtp
;	COMDAT ??_GCTDA9875@@UAEPAXI@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
___flags$ = 8						; size = 4
??_GCTDA9875@@UAEPAXI@Z PROC				; CTDA9875::`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	 ??1CTDA9875@@UAE@XZ	; CTDA9875::~CTDA9875
  0000f	8b 45 08	 mov	 eax, DWORD PTR ___flags$[ebp]
  00012	83 e0 01	 and	 eax, 1
  00015	74 0c		 je	 SHORT $LN1@scalar@93
  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@93:
  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
??_GCTDA9875@@UAEPAXI@Z ENDP				; CTDA9875::`scalar deleting destructor'
END
