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

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

INCLUDELIB OLDNAMES

PUBLIC	?I2CContinue@CSAA7134I2CBus@@MAEHXZ		; CSAA7134I2CBus::I2CContinue
PUBLIC	?I2CStop@CSAA7134I2CBus@@MAEHXZ			; CSAA7134I2CBus::I2CStop
PUBLIC	?I2CStart@CSAA7134I2CBus@@MAEHXZ		; CSAA7134I2CBus::I2CStart
PUBLIC	?IsError@CSAA7134I2CBus@@MAEHE@Z		; CSAA7134I2CBus::IsError
PUBLIC	?IsBusReady@CSAA7134I2CBus@@MAEHXZ		; CSAA7134I2CBus::IsBusReady
PUBLIC	?BusyWait@CSAA7134I2CBus@@MAEHXZ		; CSAA7134I2CBus::BusyWait
PUBLIC	?GetData@CSAA7134I2CBus@@MAEEXZ			; CSAA7134I2CBus::GetData
PUBLIC	?SetData@CSAA7134I2CBus@@MAEXE@Z		; CSAA7134I2CBus::SetData
PUBLIC	?Unlock@CSAA7134I2CBus@@MAEXXZ			; CSAA7134I2CBus::Unlock
PUBLIC	?Lock@CSAA7134I2CBus@@MAEXXZ			; CSAA7134I2CBus::Lock
PUBLIC	?SendNAK@CSAA7134I2CBus@@MAEXXZ			; CSAA7134I2CBus::SendNAK
PUBLIC	?SendACK@CSAA7134I2CBus@@MAEXXZ			; CSAA7134I2CBus::SendACK
PUBLIC	?Sleep@CSAA7134I2CBus@@MAEXXZ			; CSAA7134I2CBus::Sleep
PUBLIC	?GetAcknowledge@CSAA7134I2CBus@@MAEHXZ		; CSAA7134I2CBus::GetAcknowledge
PUBLIC	?Stop@CSAA7134I2CBus@@MAEXXZ			; CSAA7134I2CBus::Stop
PUBLIC	?Start@CSAA7134I2CBus@@MAEXXZ			; CSAA7134I2CBus::Start
PUBLIC	?Write@CSAA7134I2CBus@@UAEHPBEI@Z		; CSAA7134I2CBus::Write
PUBLIC	?Write@CSAA7134I2CBus@@MAEHE@Z			; CSAA7134I2CBus::Write
PUBLIC	?Read@CSAA7134I2CBus@@UAEHPBEIPAEI@Z		; CSAA7134I2CBus::Read
PUBLIC	?Read@CSAA7134I2CBus@@MAEEH@Z			; CSAA7134I2CBus::Read
PUBLIC	??_R4CSAA7134I2CBus@@6B@			; CSAA7134I2CBus::`RTTI Complete Object Locator'
PUBLIC	??_R3CSAA7134I2CBus@@8				; CSAA7134I2CBus::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2CSAA7134I2CBus@@8				; CSAA7134I2CBus::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@CSAA7134I2CBus@@8			; CSAA7134I2CBus::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVCSAA7134I2CBus@@@8			; CSAA7134I2CBus `RTTI Type Descriptor'
PUBLIC	??_7CSAA7134I2CBus@@6B@				; CSAA7134I2CBus::`vftable'
;	COMDAT ??_7CSAA7134I2CBus@@6B@
CONST	SEGMENT
??_7CSAA7134I2CBus@@6B@ DD FLAT:??_R4CSAA7134I2CBus@@6B@ ; CSAA7134I2CBus::`vftable'
	DD	FLAT:?Read@CSAA7134I2CBus@@MAEEH@Z
	DD	FLAT:?Read@CSAA7134I2CBus@@UAEHPBEIPAEI@Z
	DD	FLAT:?Write@CSAA7134I2CBus@@MAEHE@Z
	DD	FLAT:?Write@CSAA7134I2CBus@@UAEHPBEI@Z
	DD	FLAT:?Start@CSAA7134I2CBus@@MAEXXZ
	DD	FLAT:?Stop@CSAA7134I2CBus@@MAEXXZ
	DD	FLAT:?GetAcknowledge@CSAA7134I2CBus@@MAEHXZ
	DD	FLAT:?Sleep@CSAA7134I2CBus@@MAEXXZ
	DD	FLAT:?SendACK@CSAA7134I2CBus@@MAEXXZ
	DD	FLAT:?SendNAK@CSAA7134I2CBus@@MAEXXZ
	DD	FLAT:?Lock@CSAA7134I2CBus@@MAEXXZ
	DD	FLAT:?Unlock@CSAA7134I2CBus@@MAEXXZ
	DD	FLAT:?SetData@CSAA7134I2CBus@@MAEXE@Z
	DD	FLAT:?GetData@CSAA7134I2CBus@@MAEEXZ
	DD	FLAT:?BusyWait@CSAA7134I2CBus@@MAEHXZ
	DD	FLAT:?IsBusReady@CSAA7134I2CBus@@MAEHXZ
	DD	FLAT:?IsError@CSAA7134I2CBus@@MAEHE@Z
	DD	FLAT:?I2CStart@CSAA7134I2CBus@@MAEHXZ
	DD	FLAT:?I2CStop@CSAA7134I2CBus@@MAEHXZ
	DD	FLAT:?I2CContinue@CSAA7134I2CBus@@MAEHXZ
CONST	ENDS
;	COMDAT ??_R4CSAA7134I2CBus@@6B@
rdata$r	SEGMENT
??_R4CSAA7134I2CBus@@6B@ DD 00H				; CSAA7134I2CBus::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCSAA7134I2CBus@@@8
	DD	FLAT:??_R3CSAA7134I2CBus@@8
rdata$r	ENDS
;	COMDAT ??_R3CSAA7134I2CBus@@8
rdata$r	SEGMENT
??_R3CSAA7134I2CBus@@8 DD 00H				; CSAA7134I2CBus::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2CSAA7134I2CBus@@8
rdata$r	ENDS
;	COMDAT ??_R2CSAA7134I2CBus@@8
rdata$r	SEGMENT
??_R2CSAA7134I2CBus@@8 DD FLAT:??_R1A@?0A@EA@CSAA7134I2CBus@@8 ; CSAA7134I2CBus::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@CI2CBus@@8
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@CSAA7134I2CBus@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@CSAA7134I2CBus@@8 DD FLAT:??_R0?AVCSAA7134I2CBus@@@8 ; CSAA7134I2CBus::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3CSAA7134I2CBus@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCSAA7134I2CBus@@@8
_DATA	SEGMENT
??_R0?AVCSAA7134I2CBus@@@8 DD FLAT:??_7type_info@@6B@	; CSAA7134I2CBus `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCSAA7134I2CBus@@', 00H
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\saa7134i2cbus.cpp
;	COMDAT ?SendNAK@CSAA7134I2CBus@@MAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?SendNAK@CSAA7134I2CBus@@MAEXXZ PROC			; CSAA7134I2CBus::SendNAK, COMDAT
; _this$ = ecx

; 361  : {

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

; 362  :     // Unsupported
; 363  : }

  00007	8b e5		 mov	 esp, ebp
  00009	5d		 pop	 ebp
  0000a	c3		 ret	 0
?SendNAK@CSAA7134I2CBus@@MAEXXZ ENDP			; CSAA7134I2CBus::SendNAK
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?SendACK@CSAA7134I2CBus@@MAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?SendACK@CSAA7134I2CBus@@MAEXXZ PROC			; CSAA7134I2CBus::SendACK, COMDAT
; _this$ = ecx

; 356  : {

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

; 357  :     // Unsupported
; 358  : }

  00007	8b e5		 mov	 esp, ebp
  00009	5d		 pop	 ebp
  0000a	c3		 ret	 0
?SendACK@CSAA7134I2CBus@@MAEXXZ ENDP			; CSAA7134I2CBus::SendACK
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Unlock@CSAA7134I2CBus@@MAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Unlock@CSAA7134I2CBus@@MAEXXZ PROC			; CSAA7134I2CBus::Unlock, COMDAT
; _this$ = ecx

; 350  : {

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

; 351  :     m_pSAA7134I2C->I2CUnlock();

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  0000d	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00010	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  00013	8b 11		 mov	 edx, DWORD PTR [ecx]
  00015	8b c8		 mov	 ecx, eax
  00017	8b 42 18	 mov	 eax, DWORD PTR [edx+24]
  0001a	ff d0		 call	 eax

; 352  : }

  0001c	8b e5		 mov	 esp, ebp
  0001e	5d		 pop	 ebp
  0001f	c3		 ret	 0
?Unlock@CSAA7134I2CBus@@MAEXXZ ENDP			; CSAA7134I2CBus::Unlock
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Lock@CSAA7134I2CBus@@MAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Lock@CSAA7134I2CBus@@MAEXXZ PROC			; CSAA7134I2CBus::Lock, COMDAT
; _this$ = ecx

; 345  : {

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

; 346  :     m_pSAA7134I2C->I2CLock();

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  0000d	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00010	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  00013	8b 11		 mov	 edx, DWORD PTR [ecx]
  00015	8b c8		 mov	 ecx, eax
  00017	8b 42 14	 mov	 eax, DWORD PTR [edx+20]
  0001a	ff d0		 call	 eax

; 347  : }

  0001c	8b e5		 mov	 esp, ebp
  0001e	5d		 pop	 ebp
  0001f	c3		 ret	 0
?Lock@CSAA7134I2CBus@@MAEXXZ ENDP			; CSAA7134I2CBus::Lock
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?GetAcknowledge@CSAA7134I2CBus@@MAEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetAcknowledge@CSAA7134I2CBus@@MAEHXZ PROC		; CSAA7134I2CBus::GetAcknowledge, COMDAT
; _this$ = ecx

; 339  : {

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

; 340  :     // Unsupported
; 341  :     return FALSE;

  00007	33 c0		 xor	 eax, eax

; 342  : }

  00009	8b e5		 mov	 esp, ebp
  0000b	5d		 pop	 ebp
  0000c	c3		 ret	 0
?GetAcknowledge@CSAA7134I2CBus@@MAEHXZ ENDP		; CSAA7134I2CBus::GetAcknowledge
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Read@CSAA7134I2CBus@@MAEEH@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_last$ = 8						; size = 4
?Read@CSAA7134I2CBus@@MAEEH@Z PROC			; CSAA7134I2CBus::Read, 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  :     // Unsupported
; 335  :     return 0x00;

  00007	32 c0		 xor	 al, al

; 336  : }

  00009	8b e5		 mov	 esp, ebp
  0000b	5d		 pop	 ebp
  0000c	c2 04 00	 ret	 4
?Read@CSAA7134I2CBus@@MAEEH@Z ENDP			; CSAA7134I2CBus::Read
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Write@CSAA7134I2CBus@@MAEHE@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_byte$ = 8						; size = 1
?Write@CSAA7134I2CBus@@MAEHE@Z PROC			; CSAA7134I2CBus::Write, COMDAT
; _this$ = ecx

; 327  : {

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

; 328  :     // Unsupported
; 329  :     return FALSE;

  00007	33 c0		 xor	 eax, eax

; 330  : }

  00009	8b e5		 mov	 esp, ebp
  0000b	5d		 pop	 ebp
  0000c	c2 04 00	 ret	 4
?Write@CSAA7134I2CBus@@MAEHE@Z ENDP			; CSAA7134I2CBus::Write
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Stop@CSAA7134I2CBus@@MAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Stop@CSAA7134I2CBus@@MAEXXZ PROC			; CSAA7134I2CBus::Stop, COMDAT
; _this$ = ecx

; 322  : {

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

; 323  :     // Unsupported
; 324  : }

  00007	8b e5		 mov	 esp, ebp
  00009	5d		 pop	 ebp
  0000a	c3		 ret	 0
?Stop@CSAA7134I2CBus@@MAEXXZ ENDP			; CSAA7134I2CBus::Stop
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Start@CSAA7134I2CBus@@MAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Start@CSAA7134I2CBus@@MAEXXZ PROC			; CSAA7134I2CBus::Start, COMDAT
; _this$ = ecx

; 317  : {

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

; 318  :     // Unsupported
; 319  : }

  00007	8b e5		 mov	 esp, ebp
  00009	5d		 pop	 ebp
  0000a	c3		 ret	 0
?Start@CSAA7134I2CBus@@MAEXXZ ENDP			; CSAA7134I2CBus::Start
_TEXT	ENDS
PUBLIC	?GetTickCount@CSAA7134I2CBus@@AAEKXZ		; CSAA7134I2CBus::GetTickCount
; Function compile flags: /Odtp
;	COMDAT ?GetTickCount@CSAA7134I2CBus@@AAEKXZ
_TEXT	SEGMENT
_this$ = -20						; size = 4
_frequency$ = -16					; size = 8
_ticks$ = -8						; size = 8
?GetTickCount@CSAA7134I2CBus@@AAEKXZ PROC		; CSAA7134I2CBus::GetTickCount, COMDAT
; _this$ = ecx

; 305  : {

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

; 306  :     ULONGLONG ticks;
; 307  :     ULONGLONG frequency;
; 308  : 
; 309  :     QueryPerformanceFrequency((PLARGE_INTEGER)&frequency);

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

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

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

; 311  : 
; 312  :     ticks = ticks * 1000 / frequency;

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

; 313  :     return (ULONG)ticks;

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

; 314  : }

  00049	8b e5		 mov	 esp, ebp
  0004b	5d		 pop	 ebp
  0004c	c3		 ret	 0
?GetTickCount@CSAA7134I2CBus@@AAEKXZ ENDP		; CSAA7134I2CBus::GetTickCount
_TEXT	ENDS
PUBLIC	?InitializeSleep@CSAA7134I2CBus@@AAEXXZ		; CSAA7134I2CBus::InitializeSleep
; Function compile flags: /Odtp
;	COMDAT ?InitializeSleep@CSAA7134I2CBus@@AAEXXZ
_TEXT	SEGMENT
_this$ = -12						; size = 4
_frequency$ = -8					; size = 8
?InitializeSleep@CSAA7134I2CBus@@AAEXXZ PROC		; CSAA7134I2CBus::InitializeSleep, COMDAT
; _this$ = ecx

; 293  : {

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

; 294  :     ULONGLONG frequency;
; 295  :     QueryPerformanceFrequency((PLARGE_INTEGER)&frequency);

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

; 296  : 
; 297  :     m_I2CSleepCycle = (unsigned long)(frequency / 50000);

  00013	6a 00		 push	 0
  00015	68 50 c3 00 00	 push	 50000			; 0000c350H
  0001a	8b 4d fc	 mov	 ecx, DWORD PTR _frequency$[ebp+4]
  0001d	51		 push	 ecx
  0001e	8b 55 f8	 mov	 edx, DWORD PTR _frequency$[ebp]
  00021	52		 push	 edx
  00022	e8 00 00 00 00	 call	 __aulldiv
  00027	8b 4d f4	 mov	 ecx, DWORD PTR _this$[ebp]
  0002a	89 41 0c	 mov	 DWORD PTR [ecx+12], eax

; 298  : 
; 299  :     m_InitializedSleep = TRUE;

  0002d	8b 55 f4	 mov	 edx, DWORD PTR _this$[ebp]
  00030	c7 42 08 01 00
	00 00		 mov	 DWORD PTR [edx+8], 1

; 300  : }

  00037	8b e5		 mov	 esp, ebp
  00039	5d		 pop	 ebp
  0003a	c3		 ret	 0
?InitializeSleep@CSAA7134I2CBus@@AAEXXZ ENDP		; CSAA7134I2CBus::InitializeSleep
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?I2CContinue@CSAA7134I2CBus@@MAEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?I2CContinue@CSAA7134I2CBus@@MAEHXZ PROC		; CSAA7134I2CBus::I2CContinue, COMDAT
; _this$ = ecx

; 284  : {

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

; 285  :     _ASSERTE(m_pSAA7134I2C != 0);
; 286  : 
; 287  :     m_pSAA7134I2C->SetI2CCommand(ISAA7134I2CInterface::COMMAND_CONTINUE);

  00007	68 80 00 00 00	 push	 128			; 00000080H
  0000c	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000f	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  00012	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00015	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  00018	8b 11		 mov	 edx, DWORD PTR [ecx]
  0001a	8b c8		 mov	 ecx, eax
  0001c	8b 42 10	 mov	 eax, DWORD PTR [edx+16]
  0001f	ff d0		 call	 eax

; 288  :     return BusyWait();

  00021	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00024	8b 11		 mov	 edx, DWORD PTR [ecx]
  00026	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00029	8b 42 38	 mov	 eax, DWORD PTR [edx+56]
  0002c	ff d0		 call	 eax

; 289  : }

  0002e	8b e5		 mov	 esp, ebp
  00030	5d		 pop	 ebp
  00031	c3		 ret	 0
?I2CContinue@CSAA7134I2CBus@@MAEHXZ ENDP		; CSAA7134I2CBus::I2CContinue
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?I2CStop@CSAA7134I2CBus@@MAEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?I2CStop@CSAA7134I2CBus@@MAEHXZ PROC			; CSAA7134I2CBus::I2CStop, COMDAT
; _this$ = ecx

; 275  : {

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

; 276  :     _ASSERTE(m_pSAA7134I2C != 0);
; 277  : 
; 278  :     m_pSAA7134I2C->SetI2CCommand(ISAA7134I2CInterface::COMMAND_STOP);

  00007	6a 40		 push	 64			; 00000040H
  00009	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  0000f	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00012	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  00015	8b 11		 mov	 edx, DWORD PTR [ecx]
  00017	8b c8		 mov	 ecx, eax
  00019	8b 42 10	 mov	 eax, DWORD PTR [edx+16]
  0001c	ff d0		 call	 eax

; 279  :     return BusyWait();

  0001e	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00021	8b 11		 mov	 edx, DWORD PTR [ecx]
  00023	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00026	8b 42 38	 mov	 eax, DWORD PTR [edx+56]
  00029	ff d0		 call	 eax

; 280  : }

  0002b	8b e5		 mov	 esp, ebp
  0002d	5d		 pop	 ebp
  0002e	c3		 ret	 0
?I2CStop@CSAA7134I2CBus@@MAEHXZ ENDP			; CSAA7134I2CBus::I2CStop
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?I2CStart@CSAA7134I2CBus@@MAEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?I2CStart@CSAA7134I2CBus@@MAEHXZ PROC			; CSAA7134I2CBus::I2CStart, COMDAT
; _this$ = ecx

; 266  : {

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

; 267  :     _ASSERTE(m_pSAA7134I2C != 0);
; 268  : 
; 269  :     m_pSAA7134I2C->SetI2CCommand(ISAA7134I2CInterface::COMMAND_START);

  00007	68 c0 00 00 00	 push	 192			; 000000c0H
  0000c	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000f	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  00012	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00015	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  00018	8b 11		 mov	 edx, DWORD PTR [ecx]
  0001a	8b c8		 mov	 ecx, eax
  0001c	8b 42 10	 mov	 eax, DWORD PTR [edx+16]
  0001f	ff d0		 call	 eax

; 270  :     return BusyWait();

  00021	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00024	8b 11		 mov	 edx, DWORD PTR [ecx]
  00026	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00029	8b 42 38	 mov	 eax, DWORD PTR [edx+56]
  0002c	ff d0		 call	 eax

; 271  : }

  0002e	8b e5		 mov	 esp, ebp
  00030	5d		 pop	 ebp
  00031	c3		 ret	 0
?I2CStart@CSAA7134I2CBus@@MAEHXZ ENDP			; CSAA7134I2CBus::I2CStart
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?IsError@CSAA7134I2CBus@@MAEHE@Z
_TEXT	SEGMENT
tv65 = -8						; size = 4
_this$ = -4						; size = 4
_Status$ = 8						; size = 1
?IsError@CSAA7134I2CBus@@MAEHE@Z PROC			; CSAA7134I2CBus::IsError, COMDAT
; _this$ = ecx

; 245  : {

  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

; 246  :     switch (Status)

  00009	8a 45 08	 mov	 al, BYTE PTR _Status$[ebp]
  0000c	88 45 f8	 mov	 BYTE PTR tv65[ebp], al
  0000f	80 7d f8 09	 cmp	 BYTE PTR tv65[ebp], 9
  00013	72 0f		 jb	 SHORT $LN3@IsError
  00015	80 7d f8 0f	 cmp	 BYTE PTR tv65[ebp], 15	; 0000000fH
  00019	76 02		 jbe	 SHORT $LN2@IsError
  0001b	eb 07		 jmp	 SHORT $LN3@IsError
$LN2@IsError:

; 247  :     {
; 248  :     case ISAA7134I2CInterface::STATUS_NO_DEVICE:
; 249  :     case ISAA7134I2CInterface::STATUS_NO_ACKN:
; 250  :     case ISAA7134I2CInterface::STATUS_BUS_ERR:
; 251  :     case ISAA7134I2CInterface::STATUS_ARB_LOST:
; 252  :     case ISAA7134I2CInterface::STATUS_SEQ_ERR:
; 253  :     case ISAA7134I2CInterface::STATUS_ST_ERR:
; 254  :     case ISAA7134I2CInterface::STATUS_SW_ERR:
; 255  :         return TRUE;

  0001d	b8 01 00 00 00	 mov	 eax, 1
  00022	eb 02		 jmp	 SHORT $LN5@IsError
$LN3@IsError:

; 256  : 
; 257  :     default:
; 258  :         // do nothing
; 259  :         break;
; 260  :     }
; 261  :     return FALSE;

  00024	33 c0		 xor	 eax, eax
$LN5@IsError:

; 262  : }

  00026	8b e5		 mov	 esp, ebp
  00028	5d		 pop	 ebp
  00029	c2 04 00	 ret	 4
?IsError@CSAA7134I2CBus@@MAEHE@Z ENDP			; CSAA7134I2CBus::IsError
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?IsBusReady@CSAA7134I2CBus@@MAEHXZ
_TEXT	SEGMENT
tv76 = -12						; size = 4
_this$ = -8						; size = 4
_Status$ = -1						; size = 1
?IsBusReady@CSAA7134I2CBus@@MAEHXZ PROC			; CSAA7134I2CBus::IsBusReady, COMDAT
; _this$ = ecx

; 236  : {

  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

; 237  :     BYTE Status = m_pSAA7134I2C->GetI2CStatus();

  00009	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  0000f	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00012	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  00015	8b 11		 mov	 edx, DWORD PTR [ecx]
  00017	8b c8		 mov	 ecx, eax
  00019	8b 42 08	 mov	 eax, DWORD PTR [edx+8]
  0001c	ff d0		 call	 eax
  0001e	88 45 ff	 mov	 BYTE PTR _Status$[ebp], al

; 238  : 
; 239  :     return Status == ISAA7134I2CInterface::STATUS_IDLE ||
; 240  :         Status == ISAA7134I2CInterface::STATUS_DONE_STOP;

  00021	0f b6 4d ff	 movzx	 ecx, BYTE PTR _Status$[ebp]
  00025	85 c9		 test	 ecx, ecx
  00027	74 12		 je	 SHORT $LN3@IsBusReady
  00029	0f b6 55 ff	 movzx	 edx, BYTE PTR _Status$[ebp]
  0002d	83 fa 01	 cmp	 edx, 1
  00030	74 09		 je	 SHORT $LN3@IsBusReady
  00032	c7 45 f4 00 00
	00 00		 mov	 DWORD PTR tv76[ebp], 0
  00039	eb 07		 jmp	 SHORT $LN4@IsBusReady
$LN3@IsBusReady:
  0003b	c7 45 f4 01 00
	00 00		 mov	 DWORD PTR tv76[ebp], 1
$LN4@IsBusReady:
  00042	8b 45 f4	 mov	 eax, DWORD PTR tv76[ebp]

; 241  : }

  00045	8b e5		 mov	 esp, ebp
  00047	5d		 pop	 ebp
  00048	c3		 ret	 0
?IsBusReady@CSAA7134I2CBus@@MAEHXZ ENDP			; CSAA7134I2CBus::IsBusReady
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?GetData@CSAA7134I2CBus@@MAEEXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?GetData@CSAA7134I2CBus@@MAEEXZ PROC			; CSAA7134I2CBus::GetData, COMDAT
; _this$ = ecx

; 229  : {

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

; 230  :     _ASSERTE(m_pSAA7134I2C != 0);
; 231  : 
; 232  :     return m_pSAA7134I2C->GetI2CData();

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  0000d	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00010	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  00013	8b 11		 mov	 edx, DWORD PTR [ecx]
  00015	8b c8		 mov	 ecx, eax
  00017	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  0001a	ff d0		 call	 eax

; 233  : }

  0001c	8b e5		 mov	 esp, ebp
  0001e	5d		 pop	 ebp
  0001f	c3		 ret	 0
?GetData@CSAA7134I2CBus@@MAEEXZ ENDP			; CSAA7134I2CBus::GetData
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?SetData@CSAA7134I2CBus@@MAEXE@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_Data$ = 8						; size = 1
?SetData@CSAA7134I2CBus@@MAEXE@Z PROC			; CSAA7134I2CBus::SetData, COMDAT
; _this$ = ecx

; 221  : {

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

; 222  :     _ASSERTE(m_pSAA7134I2C != NULL);
; 223  : 
; 224  :     m_pSAA7134I2C->SetI2CData(Data);

  00007	0f b6 45 08	 movzx	 eax, BYTE PTR _Data$[ebp]
  0000b	50		 push	 eax
  0000c	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000f	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00012	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00015	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  00018	8b 12		 mov	 edx, DWORD PTR [edx]
  0001a	8b 02		 mov	 eax, DWORD PTR [edx]
  0001c	ff d0		 call	 eax

; 225  : }

  0001e	8b e5		 mov	 esp, ebp
  00020	5d		 pop	 ebp
  00021	c2 04 00	 ret	 4
?SetData@CSAA7134I2CBus@@MAEXE@Z ENDP			; CSAA7134I2CBus::SetData
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?BusyWait@CSAA7134I2CBus@@MAEHXZ
_TEXT	SEGMENT
_this$ = -12						; size = 4
_Status$ = -5						; size = 1
_Retries$ = -4						; size = 4
?BusyWait@CSAA7134I2CBus@@MAEHXZ PROC			; CSAA7134I2CBus::BusyWait, COMDAT
; _this$ = ecx

; 195  : {

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

; 196  :     _ASSERTE(m_pSAA7134I2C != NULL);
; 197  : 
; 198  :     int Retries = 0;

  00009	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _Retries$[ebp], 0

; 199  :     BYTE Status;
; 200  : 
; 201  :     if (m_InitializedSleep == FALSE)

  00010	8b 45 f4	 mov	 eax, DWORD PTR _this$[ebp]
  00013	83 78 08 00	 cmp	 DWORD PTR [eax+8], 0
  00017	75 08		 jne	 SHORT $LN3@BusyWait

; 202  :     {
; 203  :         InitializeSleep();

  00019	8b 4d f4	 mov	 ecx, DWORD PTR _this$[ebp]
  0001c	e8 00 00 00 00	 call	 ?InitializeSleep@CSAA7134I2CBus@@AAEXXZ ; CSAA7134I2CBus::InitializeSleep
$LN3@BusyWait:

; 204  :     }
; 205  : 
; 206  :     while ((Status = m_pSAA7134I2C->GetI2CStatus()) ==
; 207  :         ISAA7134I2CInterface::STATUS_BUSY)

  00021	8b 4d f4	 mov	 ecx, DWORD PTR _this$[ebp]
  00024	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00027	8b 45 f4	 mov	 eax, DWORD PTR _this$[ebp]
  0002a	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  0002d	8b 12		 mov	 edx, DWORD PTR [edx]
  0002f	8b 42 08	 mov	 eax, DWORD PTR [edx+8]
  00032	ff d0		 call	 eax
  00034	88 45 fb	 mov	 BYTE PTR _Status$[ebp], al
  00037	0f b6 4d fb	 movzx	 ecx, BYTE PTR _Status$[ebp]
  0003b	83 f9 02	 cmp	 ecx, 2
  0003e	75 24		 jne	 SHORT $LN2@BusyWait

; 208  :     {
; 209  :         if (Retries++ > MAX_BUSYWAIT_RETRIES)

  00040	8b 55 fc	 mov	 edx, DWORD PTR _Retries$[ebp]
  00043	8b 45 fc	 mov	 eax, DWORD PTR _Retries$[ebp]
  00046	83 c0 01	 add	 eax, 1
  00049	89 45 fc	 mov	 DWORD PTR _Retries$[ebp], eax
  0004c	83 fa 10	 cmp	 edx, 16			; 00000010H
  0004f	7e 04		 jle	 SHORT $LN1@BusyWait

; 210  :         {
; 211  :             return FALSE;

  00051	33 c0		 xor	 eax, eax
  00053	eb 28		 jmp	 SHORT $LN5@BusyWait
$LN1@BusyWait:

; 212  :         }
; 213  :         Sleep();

  00055	8b 4d f4	 mov	 ecx, DWORD PTR _this$[ebp]
  00058	8b 11		 mov	 edx, DWORD PTR [ecx]
  0005a	8b 4d f4	 mov	 ecx, DWORD PTR _this$[ebp]
  0005d	8b 42 1c	 mov	 eax, DWORD PTR [edx+28]
  00060	ff d0		 call	 eax

; 214  :     }

  00062	eb bd		 jmp	 SHORT $LN3@BusyWait
$LN2@BusyWait:

; 215  : 
; 216  :     return !IsError(Status);

  00064	0f b6 4d fb	 movzx	 ecx, BYTE PTR _Status$[ebp]
  00068	51		 push	 ecx
  00069	8b 55 f4	 mov	 edx, DWORD PTR _this$[ebp]
  0006c	8b 02		 mov	 eax, DWORD PTR [edx]
  0006e	8b 4d f4	 mov	 ecx, DWORD PTR _this$[ebp]
  00071	8b 50 40	 mov	 edx, DWORD PTR [eax+64]
  00074	ff d2		 call	 edx
  00076	f7 d8		 neg	 eax
  00078	1b c0		 sbb	 eax, eax
  0007a	83 c0 01	 add	 eax, 1
$LN5@BusyWait:

; 217  : }

  0007d	8b e5		 mov	 esp, ebp
  0007f	5d		 pop	 ebp
  00080	c3		 ret	 0
?BusyWait@CSAA7134I2CBus@@MAEHXZ ENDP			; CSAA7134I2CBus::BusyWait
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Sleep@CSAA7134I2CBus@@MAEXXZ
_TEXT	SEGMENT
tv78 = -28						; size = 8
_this$ = -20						; size = 4
_start$ = -16						; size = 8
_ticks$ = -8						; size = 8
?Sleep@CSAA7134I2CBus@@MAEXXZ PROC			; CSAA7134I2CBus::Sleep, COMDAT
; _this$ = ecx

; 181  : {

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

; 182  :     ULONGLONG ticks = 0;

  00009	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR _ticks$[ebp], 0
  00010	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _ticks$[ebp+4], 0

; 183  :     ULONGLONG start;
; 184  : 
; 185  :     QueryPerformanceCounter((PLARGE_INTEGER)&start);

  00017	8d 45 f0	 lea	 eax, DWORD PTR _start$[ebp]
  0001a	50		 push	 eax
  0001b	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__QueryPerformanceCounter@4
$LN2@Sleep:

; 186  : 
; 187  :     while(start + m_I2CSleepCycle > ticks)

  00021	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00024	8b 51 0c	 mov	 edx, DWORD PTR [ecx+12]
  00027	33 c0		 xor	 eax, eax
  00029	03 55 f0	 add	 edx, DWORD PTR _start$[ebp]
  0002c	8b 4d f4	 mov	 ecx, DWORD PTR _start$[ebp+4]
  0002f	13 c8		 adc	 ecx, eax
  00031	89 55 e4	 mov	 DWORD PTR tv78[ebp], edx
  00034	89 4d e8	 mov	 DWORD PTR tv78[ebp+4], ecx
  00037	8b 55 e8	 mov	 edx, DWORD PTR tv78[ebp+4]
  0003a	3b 55 fc	 cmp	 edx, DWORD PTR _ticks$[ebp+4]
  0003d	72 16		 jb	 SHORT $LN3@Sleep
  0003f	77 08		 ja	 SHORT $LN5@Sleep
  00041	8b 45 e4	 mov	 eax, DWORD PTR tv78[ebp]
  00044	3b 45 f8	 cmp	 eax, DWORD PTR _ticks$[ebp]
  00047	76 0c		 jbe	 SHORT $LN3@Sleep
$LN5@Sleep:

; 188  :     {
; 189  :         QueryPerformanceCounter((PLARGE_INTEGER)&ticks);

  00049	8d 4d f8	 lea	 ecx, DWORD PTR _ticks$[ebp]
  0004c	51		 push	 ecx
  0004d	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__QueryPerformanceCounter@4

; 190  :     }

  00053	eb cc		 jmp	 SHORT $LN2@Sleep
$LN3@Sleep:

; 191  : }

  00055	8b e5		 mov	 esp, ebp
  00057	5d		 pop	 ebp
  00058	c3		 ret	 0
?Sleep@CSAA7134I2CBus@@MAEXXZ ENDP			; CSAA7134I2CBus::Sleep
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Write@CSAA7134I2CBus@@UAEHPBEI@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_i$139618 = -4						; size = 4
_writeBuffer$ = 8					; size = 4
_writeBufferSize$ = 12					; size = 4
?Write@CSAA7134I2CBus@@UAEHPBEI@Z PROC			; CSAA7134I2CBus::Write, COMDAT
; _this$ = ecx

; 136  : {

  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

; 137  :     _ASSERTE(m_pSAA7134I2C != NULL);
; 138  :     _ASSERTE(writeBuffer != 0);
; 139  :     _ASSERTE(writeBufferSize >= 1);
; 140  :     _ASSERTE((writeBuffer[0] & 1) == 0);
; 141  : 
; 142  :     Lock();

  00009	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	8b 10		 mov	 edx, DWORD PTR [eax]
  0000e	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00011	8b 42 28	 mov	 eax, DWORD PTR [edx+40]
  00014	ff d0		 call	 eax

; 143  : 
; 144  :     if (!IsBusReady())

  00016	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00019	8b 11		 mov	 edx, DWORD PTR [ecx]
  0001b	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0001e	8b 42 3c	 mov	 eax, DWORD PTR [edx+60]
  00021	ff d0		 call	 eax
  00023	85 c0		 test	 eax, eax
  00025	75 36		 jne	 SHORT $LN8@Write

; 145  :     {
; 146  :         // Try to ready the bus
; 147  :         if (!I2CStop() || !IsBusReady())

  00027	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0002a	8b 11		 mov	 edx, DWORD PTR [ecx]
  0002c	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0002f	8b 42 48	 mov	 eax, DWORD PTR [edx+72]
  00032	ff d0		 call	 eax
  00034	85 c0		 test	 eax, eax
  00036	74 11		 je	 SHORT $LN6@Write
  00038	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0003b	8b 11		 mov	 edx, DWORD PTR [ecx]
  0003d	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00040	8b 42 3c	 mov	 eax, DWORD PTR [edx+60]
  00043	ff d0		 call	 eax
  00045	85 c0		 test	 eax, eax
  00047	75 14		 jne	 SHORT $LN8@Write
$LN6@Write:

; 148  :         {
; 149  :             Unlock();

  00049	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0004c	8b 11		 mov	 edx, DWORD PTR [ecx]
  0004e	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00051	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  00054	ff d0		 call	 eax

; 150  :             return FALSE;

  00056	33 c0		 xor	 eax, eax
  00058	e9 c7 00 00 00	 jmp	 $LN9@Write
$LN8@Write:

; 151  :         }
; 152  :     }
; 153  : 
; 154  :     SetData(writeBuffer[0]);

  0005d	8b 4d 08	 mov	 ecx, DWORD PTR _writeBuffer$[ebp]
  00060	0f b6 11	 movzx	 edx, BYTE PTR [ecx]
  00063	52		 push	 edx
  00064	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  00067	8b 10		 mov	 edx, DWORD PTR [eax]
  00069	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0006c	8b 42 30	 mov	 eax, DWORD PTR [edx+48]
  0006f	ff d0		 call	 eax

; 155  :     if (!I2CStart())

  00071	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00074	8b 11		 mov	 edx, DWORD PTR [ecx]
  00076	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00079	8b 42 44	 mov	 eax, DWORD PTR [edx+68]
  0007c	ff d0		 call	 eax
  0007e	85 c0		 test	 eax, eax
  00080	75 21		 jne	 SHORT $LN5@Write

; 156  :     {
; 157  :         I2CStop();

  00082	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00085	8b 11		 mov	 edx, DWORD PTR [ecx]
  00087	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0008a	8b 42 48	 mov	 eax, DWORD PTR [edx+72]
  0008d	ff d0		 call	 eax

; 158  :         Unlock();

  0008f	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00092	8b 11		 mov	 edx, DWORD PTR [ecx]
  00094	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00097	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  0009a	ff d0		 call	 eax

; 159  :         return FALSE;

  0009c	33 c0		 xor	 eax, eax
  0009e	e9 81 00 00 00	 jmp	 $LN9@Write
$LN5@Write:

; 160  :     }
; 161  : 
; 162  :     for (size_t i = 1; i < writeBufferSize; i++)

  000a3	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _i$139618[ebp], 1
  000aa	eb 09		 jmp	 SHORT $LN4@Write
$LN3@Write:
  000ac	8b 4d fc	 mov	 ecx, DWORD PTR _i$139618[ebp]
  000af	83 c1 01	 add	 ecx, 1
  000b2	89 4d fc	 mov	 DWORD PTR _i$139618[ebp], ecx
$LN4@Write:
  000b5	8b 55 fc	 mov	 edx, DWORD PTR _i$139618[ebp]
  000b8	3b 55 0c	 cmp	 edx, DWORD PTR _writeBufferSize$[ebp]
  000bb	73 48		 jae	 SHORT $LN2@Write

; 163  :     {
; 164  :         SetData(writeBuffer[i]);

  000bd	8b 45 08	 mov	 eax, DWORD PTR _writeBuffer$[ebp]
  000c0	03 45 fc	 add	 eax, DWORD PTR _i$139618[ebp]
  000c3	0f b6 08	 movzx	 ecx, BYTE PTR [eax]
  000c6	51		 push	 ecx
  000c7	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  000ca	8b 02		 mov	 eax, DWORD PTR [edx]
  000cc	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  000cf	8b 50 30	 mov	 edx, DWORD PTR [eax+48]
  000d2	ff d2		 call	 edx

; 165  :         if (!I2CContinue())

  000d4	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  000d7	8b 10		 mov	 edx, DWORD PTR [eax]
  000d9	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  000dc	8b 42 4c	 mov	 eax, DWORD PTR [edx+76]
  000df	ff d0		 call	 eax
  000e1	85 c0		 test	 eax, eax
  000e3	75 1e		 jne	 SHORT $LN1@Write

; 166  :         {
; 167  :             I2CStop();

  000e5	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  000e8	8b 11		 mov	 edx, DWORD PTR [ecx]
  000ea	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  000ed	8b 42 48	 mov	 eax, DWORD PTR [edx+72]
  000f0	ff d0		 call	 eax

; 168  :             Unlock();

  000f2	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  000f5	8b 11		 mov	 edx, DWORD PTR [ecx]
  000f7	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  000fa	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  000fd	ff d0		 call	 eax

; 169  :             return FALSE;

  000ff	33 c0		 xor	 eax, eax
  00101	eb 21		 jmp	 SHORT $LN9@Write
$LN1@Write:

; 170  :         }
; 171  :     }

  00103	eb a7		 jmp	 SHORT $LN3@Write
$LN2@Write:

; 172  : 
; 173  :     I2CStop();

  00105	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00108	8b 11		 mov	 edx, DWORD PTR [ecx]
  0010a	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0010d	8b 42 48	 mov	 eax, DWORD PTR [edx+72]
  00110	ff d0		 call	 eax

; 174  :     Unlock();

  00112	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00115	8b 11		 mov	 edx, DWORD PTR [ecx]
  00117	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0011a	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  0011d	ff d0		 call	 eax

; 175  : 
; 176  :     return TRUE;

  0011f	b8 01 00 00 00	 mov	 eax, 1
$LN9@Write:

; 177  : }

  00124	8b e5		 mov	 esp, ebp
  00126	5d		 pop	 ebp
  00127	c2 08 00	 ret	 8
?Write@CSAA7134I2CBus@@UAEHPBEI@Z ENDP			; CSAA7134I2CBus::Write
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Read@CSAA7134I2CBus@@UAEHPBEIPAEI@Z
_TEXT	SEGMENT
_this$ = -16						; size = 4
_i$139601 = -12						; size = 4
_i$139593 = -8						; size = 4
_address$ = -1						; size = 1
_writeBuffer$ = 8					; size = 4
_writeBufferSize$ = 12					; size = 4
_readBuffer$ = 16					; size = 4
_readBufferSize$ = 20					; size = 4
?Read@CSAA7134I2CBus@@UAEHPBEIPAEI@Z PROC		; CSAA7134I2CBus::Read, COMDAT
; _this$ = ecx

; 51   : {

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

; 52   :     _ASSERTE(m_pSAA7134I2C != 0);
; 53   :     _ASSERTE(writeBuffer != 0);
; 54   :     _ASSERTE(writeBufferSize >= 1);
; 55   :     _ASSERTE(readBuffer != 0 || readBufferSize == 0);
; 56   : 
; 57   :     if (readBufferSize == 0)

  00009	83 7d 14 00	 cmp	 DWORD PTR _readBufferSize$[ebp], 0
  0000d	75 0a		 jne	 SHORT $LN15@Read

; 58   :     {
; 59   :         return TRUE;

  0000f	b8 01 00 00 00	 mov	 eax, 1
  00014	e9 e1 01 00 00	 jmp	 $LN16@Read
$LN15@Read:

; 60   :     }
; 61   : 
; 62   :     Lock();

  00019	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  0001c	8b 10		 mov	 edx, DWORD PTR [eax]
  0001e	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00021	8b 42 28	 mov	 eax, DWORD PTR [edx+40]
  00024	ff d0		 call	 eax

; 63   :     if (!IsBusReady())

  00026	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00029	8b 11		 mov	 edx, DWORD PTR [ecx]
  0002b	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0002e	8b 42 3c	 mov	 eax, DWORD PTR [edx+60]
  00031	ff d0		 call	 eax
  00033	85 c0		 test	 eax, eax
  00035	75 36		 jne	 SHORT $LN14@Read

; 64   :     {
; 65   :         // Try to ready the bus
; 66   :         if (!I2CStop() || !IsBusReady())

  00037	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0003a	8b 11		 mov	 edx, DWORD PTR [ecx]
  0003c	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0003f	8b 42 48	 mov	 eax, DWORD PTR [edx+72]
  00042	ff d0		 call	 eax
  00044	85 c0		 test	 eax, eax
  00046	74 11		 je	 SHORT $LN12@Read
  00048	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0004b	8b 11		 mov	 edx, DWORD PTR [ecx]
  0004d	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00050	8b 42 3c	 mov	 eax, DWORD PTR [edx+60]
  00053	ff d0		 call	 eax
  00055	85 c0		 test	 eax, eax
  00057	75 14		 jne	 SHORT $LN14@Read
$LN12@Read:

; 67   :         {
; 68   :             Unlock();

  00059	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0005c	8b 11		 mov	 edx, DWORD PTR [ecx]
  0005e	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00061	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  00064	ff d0		 call	 eax

; 69   :             return FALSE;

  00066	33 c0		 xor	 eax, eax
  00068	e9 8d 01 00 00	 jmp	 $LN16@Read
$LN14@Read:

; 70   :         }
; 71   :     }
; 72   : 
; 73   :     BYTE address = writeBuffer[0];

  0006d	8b 4d 08	 mov	 ecx, DWORD PTR _writeBuffer$[ebp]
  00070	8a 11		 mov	 dl, BYTE PTR [ecx]
  00072	88 55 ff	 mov	 BYTE PTR _address$[ebp], dl

; 74   : 
; 75   :     if (writeBufferSize != 1)

  00075	83 7d 0c 01	 cmp	 DWORD PTR _writeBufferSize$[ebp], 1
  00079	0f 84 da 00 00
	00		 je	 $LN11@Read

; 76   :     {
; 77   :         _ASSERTE(writeBufferSize > 1);
; 78   : 
; 79   :         SetData(address & ~1);

  0007f	0f b6 45 ff	 movzx	 eax, BYTE PTR _address$[ebp]
  00083	83 e0 fe	 and	 eax, -2			; fffffffeH
  00086	50		 push	 eax
  00087	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0008a	8b 11		 mov	 edx, DWORD PTR [ecx]
  0008c	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0008f	8b 42 30	 mov	 eax, DWORD PTR [edx+48]
  00092	ff d0		 call	 eax

; 80   : 
; 81   :         // Send the address
; 82   :         if (!I2CStart())

  00094	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00097	8b 11		 mov	 edx, DWORD PTR [ecx]
  00099	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0009c	8b 42 44	 mov	 eax, DWORD PTR [edx+68]
  0009f	ff d0		 call	 eax
  000a1	85 c0		 test	 eax, eax
  000a3	75 21		 jne	 SHORT $LN10@Read

; 83   :         {
; 84   :             LOGD(_T("I2CBus::write(0x%x) returned TRUE for write address in CI2CBus::read\n"), address & ~1);
; 85   :             I2CStop();

  000a5	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000a8	8b 11		 mov	 edx, DWORD PTR [ecx]
  000aa	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000ad	8b 42 48	 mov	 eax, DWORD PTR [edx+72]
  000b0	ff d0		 call	 eax

; 86   :             Unlock();

  000b2	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000b5	8b 11		 mov	 edx, DWORD PTR [ecx]
  000b7	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000ba	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  000bd	ff d0		 call	 eax

; 87   :             return FALSE;

  000bf	33 c0		 xor	 eax, eax
  000c1	e9 34 01 00 00	 jmp	 $LN16@Read
$LN10@Read:

; 88   :         }
; 89   : 
; 90   :         for (size_t i = 1; i < (writeBufferSize - 1); i++)

  000c6	c7 45 f8 01 00
	00 00		 mov	 DWORD PTR _i$139593[ebp], 1
  000cd	eb 09		 jmp	 SHORT $LN9@Read
$LN8@Read:
  000cf	8b 4d f8	 mov	 ecx, DWORD PTR _i$139593[ebp]
  000d2	83 c1 01	 add	 ecx, 1
  000d5	89 4d f8	 mov	 DWORD PTR _i$139593[ebp], ecx
$LN9@Read:
  000d8	8b 55 0c	 mov	 edx, DWORD PTR _writeBufferSize$[ebp]
  000db	83 ea 01	 sub	 edx, 1
  000de	39 55 f8	 cmp	 DWORD PTR _i$139593[ebp], edx
  000e1	73 4b		 jae	 SHORT $LN7@Read

; 91   :         {
; 92   :             SetData(writeBuffer[i]);

  000e3	8b 45 08	 mov	 eax, DWORD PTR _writeBuffer$[ebp]
  000e6	03 45 f8	 add	 eax, DWORD PTR _i$139593[ebp]
  000e9	0f b6 08	 movzx	 ecx, BYTE PTR [eax]
  000ec	51		 push	 ecx
  000ed	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  000f0	8b 02		 mov	 eax, DWORD PTR [edx]
  000f2	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000f5	8b 50 30	 mov	 edx, DWORD PTR [eax+48]
  000f8	ff d2		 call	 edx

; 93   :             if(!I2CContinue())

  000fa	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  000fd	8b 10		 mov	 edx, DWORD PTR [eax]
  000ff	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00102	8b 42 4c	 mov	 eax, DWORD PTR [edx+76]
  00105	ff d0		 call	 eax
  00107	85 c0		 test	 eax, eax
  00109	75 21		 jne	 SHORT $LN6@Read

; 94   :             {
; 95   :                 I2CStop();

  0010b	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0010e	8b 11		 mov	 edx, DWORD PTR [ecx]
  00110	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00113	8b 42 48	 mov	 eax, DWORD PTR [edx+72]
  00116	ff d0		 call	 eax

; 96   :                 Unlock();

  00118	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0011b	8b 11		 mov	 edx, DWORD PTR [ecx]
  0011d	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00120	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  00123	ff d0		 call	 eax

; 97   :                 return FALSE;

  00125	33 c0		 xor	 eax, eax
  00127	e9 ce 00 00 00	 jmp	 $LN16@Read
$LN6@Read:

; 98   :             }
; 99   :         }

  0012c	eb a1		 jmp	 SHORT $LN8@Read
$LN7@Read:

; 100  : 
; 101  :         // The last byte may also create a positive acknowledge, indicating, that
; 102  :         // the device is _T("full"), which is not an error.
; 103  :         if (writeBufferSize >= 2)

  0012e	83 7d 0c 02	 cmp	 DWORD PTR _writeBufferSize$[ebp], 2
  00132	72 25		 jb	 SHORT $LN11@Read

; 104  :         {
; 105  :             SetData(writeBuffer[writeBufferSize - 1]);

  00134	8b 4d 08	 mov	 ecx, DWORD PTR _writeBuffer$[ebp]
  00137	03 4d 0c	 add	 ecx, DWORD PTR _writeBufferSize$[ebp]
  0013a	0f b6 51 ff	 movzx	 edx, BYTE PTR [ecx-1]
  0013e	52		 push	 edx
  0013f	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00142	8b 10		 mov	 edx, DWORD PTR [eax]
  00144	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00147	8b 42 30	 mov	 eax, DWORD PTR [edx+48]
  0014a	ff d0		 call	 eax

; 106  :             I2CContinue();

  0014c	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0014f	8b 11		 mov	 edx, DWORD PTR [ecx]
  00151	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00154	8b 42 4c	 mov	 eax, DWORD PTR [edx+76]
  00157	ff d0		 call	 eax
$LN11@Read:

; 107  :         }
; 108  :     }
; 109  : 
; 110  :     SetData(address | 1);

  00159	0f b6 4d ff	 movzx	 ecx, BYTE PTR _address$[ebp]
  0015d	83 c9 01	 or	 ecx, 1
  00160	51		 push	 ecx
  00161	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  00164	8b 02		 mov	 eax, DWORD PTR [edx]
  00166	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00169	8b 50 30	 mov	 edx, DWORD PTR [eax+48]
  0016c	ff d2		 call	 edx

; 111  : 
; 112  :     // The read address requires a negative ack
; 113  :     if (!I2CStart())

  0016e	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00171	8b 10		 mov	 edx, DWORD PTR [eax]
  00173	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00176	8b 42 44	 mov	 eax, DWORD PTR [edx+68]
  00179	ff d0		 call	 eax
  0017b	85 c0		 test	 eax, eax
  0017d	75 1e		 jne	 SHORT $LN4@Read

; 114  :     {
; 115  :         LOGD(_T("I2CBus::write(0x%x) returned FALSE for read address in CI2CBus::read\n"), address | 1);
; 116  :         I2CStop();

  0017f	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00182	8b 11		 mov	 edx, DWORD PTR [ecx]
  00184	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00187	8b 42 48	 mov	 eax, DWORD PTR [edx+72]
  0018a	ff d0		 call	 eax

; 117  :         Unlock();

  0018c	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0018f	8b 11		 mov	 edx, DWORD PTR [ecx]
  00191	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00194	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  00197	ff d0		 call	 eax

; 118  :         return FALSE;

  00199	33 c0		 xor	 eax, eax
  0019b	eb 5d		 jmp	 SHORT $LN16@Read
$LN4@Read:

; 119  :     }
; 120  : 
; 121  :     // \todo I don't know if the CONTINUE before reading is right.
; 122  :     // STOP might be needed before the last grab to NAK the bus
; 123  :     for (size_t i = 0; i < readBufferSize; i++)

  0019d	c7 45 f4 00 00
	00 00		 mov	 DWORD PTR _i$139601[ebp], 0
  001a4	eb 09		 jmp	 SHORT $LN3@Read
$LN2@Read:
  001a6	8b 4d f4	 mov	 ecx, DWORD PTR _i$139601[ebp]
  001a9	83 c1 01	 add	 ecx, 1
  001ac	89 4d f4	 mov	 DWORD PTR _i$139601[ebp], ecx
$LN3@Read:
  001af	8b 55 f4	 mov	 edx, DWORD PTR _i$139601[ebp]
  001b2	3b 55 14	 cmp	 edx, DWORD PTR _readBufferSize$[ebp]
  001b5	73 24		 jae	 SHORT $LN1@Read

; 124  :     {
; 125  :         I2CContinue();

  001b7	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  001ba	8b 10		 mov	 edx, DWORD PTR [eax]
  001bc	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  001bf	8b 42 4c	 mov	 eax, DWORD PTR [edx+76]
  001c2	ff d0		 call	 eax

; 126  :         readBuffer[i] = GetData();

  001c4	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  001c7	8b 11		 mov	 edx, DWORD PTR [ecx]
  001c9	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  001cc	8b 42 34	 mov	 eax, DWORD PTR [edx+52]
  001cf	ff d0		 call	 eax
  001d1	8b 4d 10	 mov	 ecx, DWORD PTR _readBuffer$[ebp]
  001d4	03 4d f4	 add	 ecx, DWORD PTR _i$139601[ebp]
  001d7	88 01		 mov	 BYTE PTR [ecx], al

; 127  :     }

  001d9	eb cb		 jmp	 SHORT $LN2@Read
$LN1@Read:

; 128  : 
; 129  :     I2CStop();

  001db	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  001de	8b 02		 mov	 eax, DWORD PTR [edx]
  001e0	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  001e3	8b 50 48	 mov	 edx, DWORD PTR [eax+72]
  001e6	ff d2		 call	 edx

; 130  :     Unlock();

  001e8	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  001eb	8b 10		 mov	 edx, DWORD PTR [eax]
  001ed	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  001f0	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  001f3	ff d0		 call	 eax

; 131  : 
; 132  :     return TRUE;

  001f5	b8 01 00 00 00	 mov	 eax, 1
$LN16@Read:

; 133  : }

  001fa	8b e5		 mov	 esp, ebp
  001fc	5d		 pop	 ebp
  001fd	c2 10 00	 ret	 16			; 00000010H
?Read@CSAA7134I2CBus@@UAEHPBEIPAEI@Z ENDP		; CSAA7134I2CBus::Read
PUBLIC	??0CSAA7134I2CBus@@QAE@PAVISAA7134I2CInterface@@@Z ; CSAA7134I2CBus::CSAA7134I2CBus
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??0CSAA7134I2CBus@@QAE@PAVISAA7134I2CInterface@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??0CSAA7134I2CBus@@QAE@PAVISAA7134I2CInterface@@@Z$0
__ehfuncinfo$??0CSAA7134I2CBus@@QAE@PAVISAA7134I2CInterface@@@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$??0CSAA7134I2CBus@@QAE@PAVISAA7134I2CInterface@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??0CSAA7134I2CBus@@QAE@PAVISAA7134I2CInterface@@@Z
_TEXT	SEGMENT
_this$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
_pSAA7134I2C$ = 8					; size = 4
??0CSAA7134I2CBus@@QAE@PAVISAA7134I2CInterface@@@Z PROC	; CSAA7134I2CBus::CSAA7134I2CBus, COMDAT
; _this$ = ecx

; 41   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??0CSAA7134I2CBus@@QAE@PAVISAA7134I2CInterface@@@Z
  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	 ??0CI2CBus@@QAE@XZ	; CI2CBus::CI2CBus
  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 ??_7CSAA7134I2CBus@@6B@
  0003e	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00041	c7 41 08 00 00
	00 00		 mov	 DWORD PTR [ecx+8], 0

; 42   :     _ASSERTE(pSAA7134I2C != 0);
; 43   :     this->m_pSAA7134I2C = pSAA7134I2C;

  00048	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  0004b	8b 45 08	 mov	 eax, DWORD PTR _pSAA7134I2C$[ebp]
  0004e	89 42 04	 mov	 DWORD PTR [edx+4], eax

; 44   : }

  00051	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  00058	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  0005b	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  0005e	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  00065	59		 pop	 ecx
  00066	8b e5		 mov	 esp, ebp
  00068	5d		 pop	 ebp
  00069	c2 04 00	 ret	 4
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??0CSAA7134I2CBus@@QAE@PAVISAA7134I2CInterface@@@Z$0:
  00000	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1CI2CBus@@QAE@XZ	; CI2CBus::~CI2CBus
__ehhandler$??0CSAA7134I2CBus@@QAE@PAVISAA7134I2CInterface@@@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 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$??0CSAA7134I2CBus@@QAE@PAVISAA7134I2CInterface@@@Z
  0001e	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??0CSAA7134I2CBus@@QAE@PAVISAA7134I2CInterface@@@Z ENDP	; CSAA7134I2CBus::CSAA7134I2CBus
END
