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

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

INCLUDELIB OLDNAMES

PUBLIC	?Unlock@CI2CBusForLineInterface@@MAEXXZ		; CI2CBusForLineInterface::Unlock
PUBLIC	?Lock@CI2CBusForLineInterface@@MAEXXZ		; CI2CBusForLineInterface::Lock
PUBLIC	?SendNAK@CI2CBusForLineInterface@@MAEXXZ	; CI2CBusForLineInterface::SendNAK
PUBLIC	?SendACK@CI2CBusForLineInterface@@MAEXXZ	; CI2CBusForLineInterface::SendACK
PUBLIC	?Sleep@CI2CBusForLineInterface@@MAEXXZ		; CI2CBusForLineInterface::Sleep
PUBLIC	?GetAcknowledge@CI2CBusForLineInterface@@MAEHXZ	; CI2CBusForLineInterface::GetAcknowledge
PUBLIC	?Stop@CI2CBusForLineInterface@@MAEXXZ		; CI2CBusForLineInterface::Stop
PUBLIC	?Start@CI2CBusForLineInterface@@MAEXXZ		; CI2CBusForLineInterface::Start
PUBLIC	?Write@CI2CBusForLineInterface@@MAEHE@Z		; CI2CBusForLineInterface::Write
PUBLIC	?Read@CI2CBusForLineInterface@@MAEEH@Z		; CI2CBusForLineInterface::Read
PUBLIC	??_R4CI2CBusForLineInterface@@6B@		; CI2CBusForLineInterface::`RTTI Complete Object Locator'
PUBLIC	??_R3CI2CBusForLineInterface@@8			; CI2CBusForLineInterface::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2CI2CBusForLineInterface@@8			; CI2CBusForLineInterface::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@CI2CBusForLineInterface@@8	; CI2CBusForLineInterface::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVCI2CBusForLineInterface@@@8		; CI2CBusForLineInterface `RTTI Type Descriptor'
PUBLIC	??_C@_1CK@MBBNDDFH@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAS?$AAt?$AAa?$AAr?$AAt?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CI@CJEDJMMH@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAS?$AAt?$AAo?$AAp?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CO@NKBNHJNE@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAg?$AAo?$AAt?$AA?5?$AAN?$AAA?$AAK?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CO@EOPFMKHD@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAg?$AAo?$AAt?$AA?5?$AAA?$AAC?$AAK?$AA?$AA@ ; `string'
PUBLIC	??_C@_1DM@PGMKEOIL@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAN?$AAA?$AAK?$AA?5?$AAW?$AAr?$AAi?$AAt?$AAe?$AA?5?$AA?$CF?$AA0?$AA2?$AAX?$AA?$AA@ ; `string'
PUBLIC	??_C@_1DC@MDHMEICK@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAR?$AAe?$AAa?$AAd?$AA?5?$AA?$CF?$AA0?$AA2?$AAX?$AA?$AA@ ; `string'
PUBLIC	??_C@_1DA@GBFFJCOB@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAs?$AAe?$AAn?$AAd?$AA?5?$AAN?$AAA?$AAK?$AA?$AA@ ; `string'
PUBLIC	??_C@_1DA@PFLNCBEG@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAs?$AAe?$AAn?$AAd?$AA?5?$AAA?$AAC?$AAK?$AA?$AA@ ; `string'
PUBLIC	??_7CI2CBusForLineInterface@@6B@		; CI2CBusForLineInterface::`vftable'
;	COMDAT ??_7CI2CBusForLineInterface@@6B@
CONST	SEGMENT
??_7CI2CBusForLineInterface@@6B@ DD FLAT:??_R4CI2CBusForLineInterface@@6B@ ; CI2CBusForLineInterface::`vftable'
	DD	FLAT:?Read@CI2CBusForLineInterface@@MAEEH@Z
	DD	FLAT:?Read@CI2CBus@@UAEHPBEIPAEI@Z
	DD	FLAT:?Write@CI2CBusForLineInterface@@MAEHE@Z
	DD	FLAT:?Write@CI2CBus@@UAEHPBEI@Z
	DD	FLAT:?Start@CI2CBusForLineInterface@@MAEXXZ
	DD	FLAT:?Stop@CI2CBusForLineInterface@@MAEXXZ
	DD	FLAT:?GetAcknowledge@CI2CBusForLineInterface@@MAEHXZ
	DD	FLAT:?Sleep@CI2CBusForLineInterface@@MAEXXZ
	DD	FLAT:?SendACK@CI2CBusForLineInterface@@MAEXXZ
	DD	FLAT:?SendNAK@CI2CBusForLineInterface@@MAEXXZ
	DD	FLAT:?Lock@CI2CBusForLineInterface@@MAEXXZ
	DD	FLAT:?Unlock@CI2CBusForLineInterface@@MAEXXZ
CONST	ENDS
;	COMDAT ??_R4CI2CBusForLineInterface@@6B@
rdata$r	SEGMENT
??_R4CI2CBusForLineInterface@@6B@ DD 00H		; CI2CBusForLineInterface::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCI2CBusForLineInterface@@@8
	DD	FLAT:??_R3CI2CBusForLineInterface@@8
rdata$r	ENDS
;	COMDAT ??_R3CI2CBusForLineInterface@@8
rdata$r	SEGMENT
??_R3CI2CBusForLineInterface@@8 DD 00H			; CI2CBusForLineInterface::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2CI2CBusForLineInterface@@8
rdata$r	ENDS
;	COMDAT ??_R2CI2CBusForLineInterface@@8
rdata$r	SEGMENT
??_R2CI2CBusForLineInterface@@8 DD FLAT:??_R1A@?0A@EA@CI2CBusForLineInterface@@8 ; CI2CBusForLineInterface::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@CI2CBus@@8
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@CI2CBusForLineInterface@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@CI2CBusForLineInterface@@8 DD FLAT:??_R0?AVCI2CBusForLineInterface@@@8 ; CI2CBusForLineInterface::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3CI2CBusForLineInterface@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCI2CBusForLineInterface@@@8
_DATA	SEGMENT
??_R0?AVCI2CBusForLineInterface@@@8 DD FLAT:??_7type_info@@6B@ ; CI2CBusForLineInterface `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCI2CBusForLineInterface@@', 00H
_DATA	ENDS
;	COMDAT ??_C@_1DA@PFLNCBEG@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAs?$AAe?$AAn?$AAd?$AA?5?$AAA?$AAC?$AAK?$AA?$AA@
CONST	SEGMENT
??_C@_1DA@PFLNCBEG@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAs?$AAe?$AAn?$AAd?$AA?5?$AAA?$AAC?$AAK?$AA?$AA@ DB 'I'
	DB	00H, '2', 00H, 'C', 00H, ' ', 00H, 'B', 00H, 'u', 00H, 's', 00H
	DB	'F', 00H, 'o', 00H, 'r', 00H, 'L', 00H, 'i', 00H, 'n', 00H, 'e'
	DB	00H, ' ', 00H, 's', 00H, 'e', 00H, 'n', 00H, 'd', 00H, ' ', 00H
	DB	'A', 00H, 'C', 00H, 'K', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1DA@GBFFJCOB@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAs?$AAe?$AAn?$AAd?$AA?5?$AAN?$AAA?$AAK?$AA?$AA@
CONST	SEGMENT
??_C@_1DA@GBFFJCOB@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAs?$AAe?$AAn?$AAd?$AA?5?$AAN?$AAA?$AAK?$AA?$AA@ DB 'I'
	DB	00H, '2', 00H, 'C', 00H, ' ', 00H, 'B', 00H, 'u', 00H, 's', 00H
	DB	'F', 00H, 'o', 00H, 'r', 00H, 'L', 00H, 'i', 00H, 'n', 00H, 'e'
	DB	00H, ' ', 00H, 's', 00H, 'e', 00H, 'n', 00H, 'd', 00H, ' ', 00H
	DB	'N', 00H, 'A', 00H, 'K', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1DC@MDHMEICK@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAR?$AAe?$AAa?$AAd?$AA?5?$AA?$CF?$AA0?$AA2?$AAX?$AA?$AA@
CONST	SEGMENT
??_C@_1DC@MDHMEICK@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAR?$AAe?$AAa?$AAd?$AA?5?$AA?$CF?$AA0?$AA2?$AAX?$AA?$AA@ DB 'I'
	DB	00H, '2', 00H, 'C', 00H, ' ', 00H, 'B', 00H, 'u', 00H, 's', 00H
	DB	'F', 00H, 'o', 00H, 'r', 00H, 'L', 00H, 'i', 00H, 'n', 00H, 'e'
	DB	00H, ' ', 00H, 'R', 00H, 'e', 00H, 'a', 00H, 'd', 00H, ' ', 00H
	DB	'%', 00H, '0', 00H, '2', 00H, 'X', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1DM@PGMKEOIL@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAN?$AAA?$AAK?$AA?5?$AAW?$AAr?$AAi?$AAt?$AAe?$AA?5?$AA?$CF?$AA0?$AA2?$AAX?$AA?$AA@
CONST	SEGMENT
??_C@_1DM@PGMKEOIL@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAN?$AAA?$AAK?$AA?5?$AAW?$AAr?$AAi?$AAt?$AAe?$AA?5?$AA?$CF?$AA0?$AA2?$AAX?$AA?$AA@ DB 'I'
	DB	00H, '2', 00H, 'C', 00H, ' ', 00H, 'B', 00H, 'u', 00H, 's', 00H
	DB	'F', 00H, 'o', 00H, 'r', 00H, 'L', 00H, 'i', 00H, 'n', 00H, 'e'
	DB	00H, ' ', 00H, 'N', 00H, 'A', 00H, 'K', 00H, ' ', 00H, 'W', 00H
	DB	'r', 00H, 'i', 00H, 't', 00H, 'e', 00H, ' ', 00H, '%', 00H, '0'
	DB	00H, '2', 00H, 'X', 00H, 00H, 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_1CO@EOPFMKHD@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAg?$AAo?$AAt?$AA?5?$AAA?$AAC?$AAK?$AA?$AA@
CONST	SEGMENT
??_C@_1CO@EOPFMKHD@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAg?$AAo?$AAt?$AA?5?$AAA?$AAC?$AAK?$AA?$AA@ DB 'I'
	DB	00H, '2', 00H, 'C', 00H, ' ', 00H, 'B', 00H, 'u', 00H, 's', 00H
	DB	'F', 00H, 'o', 00H, 'r', 00H, 'L', 00H, 'i', 00H, 'n', 00H, 'e'
	DB	00H, ' ', 00H, 'g', 00H, 'o', 00H, 't', 00H, ' ', 00H, 'A', 00H
	DB	'C', 00H, 'K', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1CO@NKBNHJNE@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAg?$AAo?$AAt?$AA?5?$AAN?$AAA?$AAK?$AA?$AA@
CONST	SEGMENT
??_C@_1CO@NKBNHJNE@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAg?$AAo?$AAt?$AA?5?$AAN?$AAA?$AAK?$AA?$AA@ DB 'I'
	DB	00H, '2', 00H, 'C', 00H, ' ', 00H, 'B', 00H, 'u', 00H, 's', 00H
	DB	'F', 00H, 'o', 00H, 'r', 00H, 'L', 00H, 'i', 00H, 'n', 00H, 'e'
	DB	00H, ' ', 00H, 'g', 00H, 'o', 00H, 't', 00H, ' ', 00H, 'N', 00H
	DB	'A', 00H, 'K', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1CI@CJEDJMMH@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAS?$AAt?$AAo?$AAp?$AA?$AA@
CONST	SEGMENT
??_C@_1CI@CJEDJMMH@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAS?$AAt?$AAo?$AAp?$AA?$AA@ DB 'I'
	DB	00H, '2', 00H, 'C', 00H, ' ', 00H, 'B', 00H, 'u', 00H, 's', 00H
	DB	'F', 00H, 'o', 00H, 'r', 00H, 'L', 00H, 'i', 00H, 'n', 00H, 'e'
	DB	00H, ' ', 00H, 'S', 00H, 't', 00H, 'o', 00H, 'p', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1CK@MBBNDDFH@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAS?$AAt?$AAa?$AAr?$AAt?$AA?$AA@
CONST	SEGMENT
??_C@_1CK@MBBNDDFH@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAS?$AAt?$AAa?$AAr?$AAt?$AA?$AA@ DB 'I'
	DB	00H, '2', 00H, 'C', 00H, ' ', 00H, 'B', 00H, 'u', 00H, 's', 00H
	DB	'F', 00H, 'o', 00H, 'r', 00H, 'L', 00H, 'i', 00H, 'n', 00H, 'e'
	DB	00H, ' ', 00H, 'S', 00H, 't', 00H, 'a', 00H, 'r', 00H, 't', 00H
	DB	00H, 00H					; `string'
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\i2cbusforlineinterface.cpp
;	COMDAT ?Unlock@CI2CBusForLineInterface@@MAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Unlock@CI2CBusForLineInterface@@MAEXXZ PROC		; CI2CBusForLineInterface::Unlock, COMDAT
; _this$ = ecx

; 206  : {

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

; 207  :     m_LineInterface->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

; 208  : }

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

; 201  : {

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

; 202  :     m_LineInterface->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

; 203  : }

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

; 66   : {

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

; 67   :     m_LineInterface->SetSCL(TRUE);

  00007	6a 01		 push	 1
  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 04	 mov	 eax, DWORD PTR [edx+4]
  0001c	ff d0		 call	 eax

; 68   :     Sleep();

  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 1c	 mov	 eax, DWORD PTR [edx+28]
  00029	ff d0		 call	 eax
$LN2@SetSCLHi:

; 69   :     while (!m_LineInterface->GetSCL())

  0002b	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0002e	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00031	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00034	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  00037	8b 12		 mov	 edx, DWORD PTR [edx]
  00039	8b 42 0c	 mov	 eax, DWORD PTR [edx+12]
  0003c	ff d0		 call	 eax
  0003e	85 c0		 test	 eax, eax
  00040	75 17		 jne	 SHORT $LN3@SetSCLHi

; 70   :     {
; 71   :         /* the hw knows how to read the clock line,
; 72   :          * so we wait until it actually gets high.
; 73   :          * This is safer as some chips may hold it low
; 74   :          * while they are processing data internally.
; 75   :          */
; 76   :         m_LineInterface->SetSCL(TRUE);

  00042	6a 01		 push	 1
  00044	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00047	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  0004a	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0004d	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  00050	8b 12		 mov	 edx, DWORD PTR [edx]
  00052	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  00055	ff d0		 call	 eax

; 77   :         /// \todo FIXME yield here/timeout
; 78   :     }

  00057	eb d2		 jmp	 SHORT $LN2@SetSCLHi
$LN3@SetSCLHi:

; 79   : }

  00059	8b e5		 mov	 esp, ebp
  0005b	5d		 pop	 ebp
  0005c	c3		 ret	 0
?SetSCLHi@CI2CBusForLineInterface@@AAEXXZ ENDP		; CI2CBusForLineInterface::SetSCLHi
_TEXT	ENDS
PUBLIC	?SetSCLLo@CI2CBusForLineInterface@@AAEXXZ	; CI2CBusForLineInterface::SetSCLLo
; Function compile flags: /Odtp
;	COMDAT ?SetSCLLo@CI2CBusForLineInterface@@AAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?SetSCLLo@CI2CBusForLineInterface@@AAEXXZ PROC		; CI2CBusForLineInterface::SetSCLLo, COMDAT
; _this$ = ecx

; 60   : {

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

; 61   :     m_LineInterface->SetSCL(FALSE);

  00007	6a 00		 push	 0
  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 04	 mov	 eax, DWORD PTR [edx+4]
  0001c	ff d0		 call	 eax

; 62   :     Sleep();

  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 1c	 mov	 eax, DWORD PTR [edx+28]
  00029	ff d0		 call	 eax

; 63   : }

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

; 54   : {

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

; 55   :     m_LineInterface->SetSDA(TRUE);

  00007	6a 01		 push	 1
  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 02		 mov	 eax, DWORD PTR [edx]
  0001b	ff d0		 call	 eax

; 56   :     Sleep();

  0001d	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00020	8b 11		 mov	 edx, DWORD PTR [ecx]
  00022	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00025	8b 42 1c	 mov	 eax, DWORD PTR [edx+28]
  00028	ff d0		 call	 eax

; 57   : }

  0002a	8b e5		 mov	 esp, ebp
  0002c	5d		 pop	 ebp
  0002d	c3		 ret	 0
?SetSDAHi@CI2CBusForLineInterface@@AAEXXZ ENDP		; CI2CBusForLineInterface::SetSDAHi
_TEXT	ENDS
PUBLIC	?SetSDALo@CI2CBusForLineInterface@@AAEXXZ	; CI2CBusForLineInterface::SetSDALo
; Function compile flags: /Odtp
;	COMDAT ?SetSDALo@CI2CBusForLineInterface@@AAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?SetSDALo@CI2CBusForLineInterface@@AAEXXZ PROC		; CI2CBusForLineInterface::SetSDALo, COMDAT
; _this$ = ecx

; 48   : {

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

; 49   :     m_LineInterface->SetSDA(FALSE);

  00007	6a 00		 push	 0
  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 02		 mov	 eax, DWORD PTR [edx]
  0001b	ff d0		 call	 eax

; 50   :     Sleep();

  0001d	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00020	8b 11		 mov	 edx, DWORD PTR [ecx]
  00022	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00025	8b 42 1c	 mov	 eax, DWORD PTR [edx+28]
  00028	ff d0		 call	 eax

; 51   : }

  0002a	8b e5		 mov	 esp, ebp
  0002c	5d		 pop	 ebp
  0002d	c3		 ret	 0
?SetSDALo@CI2CBusForLineInterface@@AAEXXZ ENDP		; CI2CBusForLineInterface::SetSDALo
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Sleep@CI2CBusForLineInterface@@MAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Sleep@CI2CBusForLineInterface@@MAEXXZ PROC		; CI2CBusForLineInterface::Sleep, COMDAT
; _this$ = ecx

; 41   : {

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

; 42   :     _ASSERTE(m_LineInterface != 0);
; 43   :     m_LineInterface->Sleep();

  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 10	 mov	 eax, DWORD PTR [edx+16]
  0001a	ff d0		 call	 eax

; 44   : }

  0001c	8b e5		 mov	 esp, ebp
  0001e	5d		 pop	 ebp
  0001f	c3		 ret	 0
?Sleep@CI2CBusForLineInterface@@MAEXXZ ENDP		; CI2CBusForLineInterface::Sleep
PUBLIC	??0CI2CBusForLineInterface@@QAE@PAVII2CLineInterface@@@Z ; CI2CBusForLineInterface::CI2CBusForLineInterface
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??0CI2CBusForLineInterface@@QAE@PAVII2CLineInterface@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??0CI2CBusForLineInterface@@QAE@PAVII2CLineInterface@@@Z$0
__ehfuncinfo$??0CI2CBusForLineInterface@@QAE@PAVII2CLineInterface@@@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$??0CI2CBusForLineInterface@@QAE@PAVII2CLineInterface@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??0CI2CBusForLineInterface@@QAE@PAVII2CLineInterface@@@Z
_TEXT	SEGMENT
_this$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
_lineInterface$ = 8					; size = 4
??0CI2CBusForLineInterface@@QAE@PAVII2CLineInterface@@@Z PROC ; CI2CBusForLineInterface::CI2CBusForLineInterface, COMDAT
; _this$ = ecx

; 35   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??0CI2CBusForLineInterface@@QAE@PAVII2CLineInterface@@@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 ??_7CI2CBusForLineInterface@@6B@

; 36   :     _ASSERTE(lineInterface != 0);
; 37   :     this->m_LineInterface = lineInterface;

  0003e	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00041	8b 55 08	 mov	 edx, DWORD PTR _lineInterface$[ebp]
  00044	89 51 04	 mov	 DWORD PTR [ecx+4], edx

; 38   : }

  00047	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  0004e	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00051	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  00054	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  0005b	59		 pop	 ecx
  0005c	8b e5		 mov	 esp, ebp
  0005e	5d		 pop	 ebp
  0005f	c2 04 00	 ret	 4
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??0CI2CBusForLineInterface@@QAE@PAVII2CLineInterface@@@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$??0CI2CBusForLineInterface@@QAE@PAVII2CLineInterface@@@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$??0CI2CBusForLineInterface@@QAE@PAVII2CLineInterface@@@Z
  0001e	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??0CI2CBusForLineInterface@@QAE@PAVII2CLineInterface@@@Z ENDP ; CI2CBusForLineInterface::CI2CBusForLineInterface
; Function compile flags: /Odtp
;	COMDAT ?SendACK@CI2CBusForLineInterface@@MAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?SendACK@CI2CBusForLineInterface@@MAEXXZ PROC		; CI2CBusForLineInterface::SendACK, COMDAT
; _this$ = ecx

; 189  : {

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

; 190  :     _ASSERTE(m_LineInterface != 0);
; 191  : 
; 192  :     LOG(4, _T("I2C BusForLine send ACK"));

  00007	68 00 00 00 00	 push	 OFFSET ??_C@_1DA@PFLNCBEG@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAs?$AAe?$AAn?$AAd?$AA?5?$AAA?$AAC?$AAK?$AA?$AA@
  0000c	6a 04		 push	 4
  0000e	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00013	83 c4 08	 add	 esp, 8

; 193  :     SetSCLLo();

  00016	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00019	e8 00 00 00 00	 call	 ?SetSCLLo@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSCLLo

; 194  :     SetSDALo();

  0001e	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00021	e8 00 00 00 00	 call	 ?SetSDALo@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSDALo

; 195  :     SetSCLHi();

  00026	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00029	e8 00 00 00 00	 call	 ?SetSCLHi@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSCLHi

; 196  :     SetSCLLo();

  0002e	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00031	e8 00 00 00 00	 call	 ?SetSCLLo@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSCLLo

; 197  :     SetSDAHi();

  00036	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00039	e8 00 00 00 00	 call	 ?SetSDAHi@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSDAHi

; 198  : }

  0003e	8b e5		 mov	 esp, ebp
  00040	5d		 pop	 ebp
  00041	c3		 ret	 0
?SendACK@CI2CBusForLineInterface@@MAEXXZ ENDP		; CI2CBusForLineInterface::SendACK
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?SendNAK@CI2CBusForLineInterface@@MAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?SendNAK@CI2CBusForLineInterface@@MAEXXZ PROC		; CI2CBusForLineInterface::SendNAK, COMDAT
; _this$ = ecx

; 177  : {

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

; 178  :     _ASSERTE(m_LineInterface != 0);
; 179  : 
; 180  :     LOG(4, _T("I2C BusForLine send NAK"));

  00007	68 00 00 00 00	 push	 OFFSET ??_C@_1DA@GBFFJCOB@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAs?$AAe?$AAn?$AAd?$AA?5?$AAN?$AAA?$AAK?$AA?$AA@
  0000c	6a 04		 push	 4
  0000e	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00013	83 c4 08	 add	 esp, 8

; 181  :     SetSCLLo();

  00016	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00019	e8 00 00 00 00	 call	 ?SetSCLLo@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSCLLo

; 182  :     SetSDAHi();

  0001e	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00021	e8 00 00 00 00	 call	 ?SetSDAHi@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSDAHi

; 183  :     SetSCLHi();

  00026	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00029	e8 00 00 00 00	 call	 ?SetSCLHi@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSCLHi

; 184  :     SetSCLLo();

  0002e	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00031	e8 00 00 00 00	 call	 ?SetSCLLo@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSCLLo

; 185  :     SetSDALo();

  00036	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00039	e8 00 00 00 00	 call	 ?SetSDALo@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSDALo

; 186  : }

  0003e	8b e5		 mov	 esp, ebp
  00040	5d		 pop	 ebp
  00041	c3		 ret	 0
?SendNAK@CI2CBusForLineInterface@@MAEXXZ ENDP		; CI2CBusForLineInterface::SendNAK
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Read@CI2CBusForLineInterface@@MAEEH@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_mask$139585 = -2					; size = 1
_result$ = -1						; size = 1
_last$ = 8						; size = 4
?Read@CI2CBusForLineInterface@@MAEEH@Z PROC		; CI2CBusForLineInterface::Read, COMDAT
; _this$ = ecx

; 149  : {

  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

; 150  :     _ASSERTE(m_LineInterface != 0);
; 151  : 
; 152  :     BYTE result = 0;

  00009	c6 45 ff 00	 mov	 BYTE PTR _result$[ebp], 0

; 153  : 
; 154  :     SetSDAHi();

  0000d	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00010	e8 00 00 00 00	 call	 ?SetSDAHi@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSDAHi

; 155  :     for (BYTE mask = 0x80; mask > 0; mask /= 2)

  00015	c6 45 fe 80	 mov	 BYTE PTR _mask$139585[ebp], 128 ; 00000080H
  00019	eb 0c		 jmp	 SHORT $LN6@Read@5
$LN5@Read@5:
  0001b	0f b6 45 fe	 movzx	 eax, BYTE PTR _mask$139585[ebp]
  0001f	99		 cdq
  00020	2b c2		 sub	 eax, edx
  00022	d1 f8		 sar	 eax, 1
  00024	88 45 fe	 mov	 BYTE PTR _mask$139585[ebp], al
$LN6@Read@5:
  00027	0f b6 45 fe	 movzx	 eax, BYTE PTR _mask$139585[ebp]
  0002b	85 c0		 test	 eax, eax
  0002d	7e 36		 jle	 SHORT $LN4@Read@5

; 156  :     {
; 157  :         SetSCLLo();

  0002f	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00032	e8 00 00 00 00	 call	 ?SetSCLLo@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSCLLo

; 158  :         SetSCLHi();

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

; 159  :         if (m_LineInterface->GetSDA())

  0003f	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00042	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00045	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  00048	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  0004b	8b 12		 mov	 edx, DWORD PTR [edx]
  0004d	8b 42 08	 mov	 eax, DWORD PTR [edx+8]
  00050	ff d0		 call	 eax
  00052	85 c0		 test	 eax, eax
  00054	74 0d		 je	 SHORT $LN3@Read@5

; 160  :         {
; 161  :             result |= mask;

  00056	0f b6 4d fe	 movzx	 ecx, BYTE PTR _mask$139585[ebp]
  0005a	0f b6 55 ff	 movzx	 edx, BYTE PTR _result$[ebp]
  0005e	0b d1		 or	 edx, ecx
  00060	88 55 ff	 mov	 BYTE PTR _result$[ebp], dl
$LN3@Read@5:

; 162  :         }
; 163  :     }

  00063	eb b6		 jmp	 SHORT $LN5@Read@5
$LN4@Read@5:

; 164  :     LOG(4, _T("I2C BusForLine Read %02X"), result);

  00065	0f b6 45 ff	 movzx	 eax, BYTE PTR _result$[ebp]
  00069	50		 push	 eax
  0006a	68 00 00 00 00	 push	 OFFSET ??_C@_1DC@MDHMEICK@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAR?$AAe?$AAa?$AAd?$AA?5?$AA?$CF?$AA0?$AA2?$AAX?$AA?$AA@
  0006f	6a 04		 push	 4
  00071	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00076	83 c4 0c	 add	 esp, 12			; 0000000cH

; 165  :     if (last)

  00079	83 7d 08 00	 cmp	 DWORD PTR _last$[ebp], 0
  0007d	74 0f		 je	 SHORT $LN2@Read@5

; 166  :     {
; 167  :         SendNAK();

  0007f	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00082	8b 11		 mov	 edx, DWORD PTR [ecx]
  00084	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00087	8b 42 24	 mov	 eax, DWORD PTR [edx+36]
  0008a	ff d0		 call	 eax

; 168  :     }
; 169  :     else

  0008c	eb 0d		 jmp	 SHORT $LN1@Read@5
$LN2@Read@5:

; 170  :     {
; 171  :         SendACK();

  0008e	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00091	8b 11		 mov	 edx, DWORD PTR [ecx]
  00093	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00096	8b 42 20	 mov	 eax, DWORD PTR [edx+32]
  00099	ff d0		 call	 eax
$LN1@Read@5:

; 172  :     }
; 173  :     return result;

  0009b	8a 45 ff	 mov	 al, BYTE PTR _result$[ebp]

; 174  : }

  0009e	8b e5		 mov	 esp, ebp
  000a0	5d		 pop	 ebp
  000a1	c2 04 00	 ret	 4
?Read@CI2CBusForLineInterface@@MAEEH@Z ENDP		; CI2CBusForLineInterface::Read
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Write@CI2CBusForLineInterface@@MAEHE@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_mask$139573 = -1					; size = 1
_byte$ = 8						; size = 1
?Write@CI2CBusForLineInterface@@MAEHE@Z PROC		; CI2CBusForLineInterface::Write, COMDAT
; _this$ = ecx

; 128  : {

  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

; 129  :     _ASSERTE(m_LineInterface != 0);
; 130  : 
; 131  :     LOG(4, _T("I2C BusForLine NAK Write %02X"), byte);

  00009	0f b6 45 08	 movzx	 eax, BYTE PTR _byte$[ebp]
  0000d	50		 push	 eax
  0000e	68 00 00 00 00	 push	 OFFSET ??_C@_1DM@PGMKEOIL@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAN?$AAA?$AAK?$AA?5?$AAW?$AAr?$AAi?$AAt?$AAe?$AA?5?$AA?$CF?$AA0?$AA2?$AAX?$AA?$AA@
  00013	6a 04		 push	 4
  00015	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0001a	83 c4 0c	 add	 esp, 12			; 0000000cH

; 132  :     for(BYTE mask = 0x80; mask > 0; mask /= 2)

  0001d	c6 45 ff 80	 mov	 BYTE PTR _mask$139573[ebp], 128 ; 00000080H
  00021	eb 0c		 jmp	 SHORT $LN5@Write@4
$LN4@Write@4:
  00023	0f b6 45 ff	 movzx	 eax, BYTE PTR _mask$139573[ebp]
  00027	99		 cdq
  00028	2b c2		 sub	 eax, edx
  0002a	d1 f8		 sar	 eax, 1
  0002c	88 45 ff	 mov	 BYTE PTR _mask$139573[ebp], al
$LN5@Write@4:
  0002f	0f b6 4d ff	 movzx	 ecx, BYTE PTR _mask$139573[ebp]
  00033	85 c9		 test	 ecx, ecx
  00035	7e 30		 jle	 SHORT $LN3@Write@4

; 133  :     {
; 134  :         SetSCLLo();

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

; 135  :         if ((byte & mask) != 0)

  0003f	0f b6 55 08	 movzx	 edx, BYTE PTR _byte$[ebp]
  00043	0f b6 45 ff	 movzx	 eax, BYTE PTR _mask$139573[ebp]
  00047	23 d0		 and	 edx, eax
  00049	74 0a		 je	 SHORT $LN2@Write@4

; 136  :         {
; 137  :             SetSDAHi();

  0004b	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0004e	e8 00 00 00 00	 call	 ?SetSDAHi@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSDAHi

; 138  :         }
; 139  :         else

  00053	eb 08		 jmp	 SHORT $LN1@Write@4
$LN2@Write@4:

; 140  :         {
; 141  :             SetSDALo();

  00055	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00058	e8 00 00 00 00	 call	 ?SetSDALo@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSDALo
$LN1@Write@4:

; 142  :         }
; 143  :         SetSCLHi();

  0005d	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00060	e8 00 00 00 00	 call	 ?SetSCLHi@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSCLHi

; 144  :     }

  00065	eb bc		 jmp	 SHORT $LN4@Write@4
$LN3@Write@4:

; 145  :     return GetAcknowledge();

  00067	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0006a	8b 11		 mov	 edx, DWORD PTR [ecx]
  0006c	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0006f	8b 42 18	 mov	 eax, DWORD PTR [edx+24]
  00072	ff d0		 call	 eax

; 146  : }

  00074	8b e5		 mov	 esp, ebp
  00076	5d		 pop	 ebp
  00077	c2 04 00	 ret	 4
?Write@CI2CBusForLineInterface@@MAEHE@Z ENDP		; CI2CBusForLineInterface::Write
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?GetAcknowledge@CI2CBusForLineInterface@@MAEHXZ
_TEXT	SEGMENT
tv77 = -12						; size = 4
_this$ = -8						; size = 4
_result$ = -4						; size = 4
?GetAcknowledge@CI2CBusForLineInterface@@MAEHXZ PROC	; CI2CBusForLineInterface::GetAcknowledge, COMDAT
; _this$ = ecx

; 114  : {

  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

; 115  :     _ASSERTE(m_LineInterface != 0);
; 116  : 
; 117  :     SetSCLLo();

  00009	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0000c	e8 00 00 00 00	 call	 ?SetSCLLo@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSCLLo

; 118  :     SetSDAHi();

  00011	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00014	e8 00 00 00 00	 call	 ?SetSDAHi@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSDAHi

; 119  :     // SDA = 0 means the slave ACK'd
; 120  :     BOOL result = m_LineInterface->GetSDA();

  00019	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0001c	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  0001f	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00022	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  00025	8b 11		 mov	 edx, DWORD PTR [ecx]
  00027	8b c8		 mov	 ecx, eax
  00029	8b 42 08	 mov	 eax, DWORD PTR [edx+8]
  0002c	ff d0		 call	 eax
  0002e	89 45 fc	 mov	 DWORD PTR _result$[ebp], eax

; 121  :     SetSCLHi();

  00031	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00034	e8 00 00 00 00	 call	 ?SetSCLHi@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSCLHi

; 122  :     SetSCLLo();

  00039	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0003c	e8 00 00 00 00	 call	 ?SetSCLLo@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSCLLo

; 123  :     LOG(4, result ? _T("I2C BusForLine got NAK") : _T("I2C BusForLine got ACK"));

  00041	83 7d fc 00	 cmp	 DWORD PTR _result$[ebp], 0
  00045	74 09		 je	 SHORT $LN3@GetAcknowl
  00047	c7 45 f4 00 00
	00 00		 mov	 DWORD PTR tv77[ebp], OFFSET ??_C@_1CO@NKBNHJNE@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAg?$AAo?$AAt?$AA?5?$AAN?$AAA?$AAK?$AA?$AA@
  0004e	eb 07		 jmp	 SHORT $LN4@GetAcknowl
$LN3@GetAcknowl:
  00050	c7 45 f4 00 00
	00 00		 mov	 DWORD PTR tv77[ebp], OFFSET ??_C@_1CO@EOPFMKHD@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAg?$AAo?$AAt?$AA?5?$AAA?$AAC?$AAK?$AA?$AA@
$LN4@GetAcknowl:
  00057	8b 4d f4	 mov	 ecx, DWORD PTR tv77[ebp]
  0005a	51		 push	 ecx
  0005b	6a 04		 push	 4
  0005d	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00062	83 c4 08	 add	 esp, 8

; 124  :     return !result;

  00065	33 c0		 xor	 eax, eax
  00067	83 7d fc 00	 cmp	 DWORD PTR _result$[ebp], 0
  0006b	0f 94 c0	 sete	 al

; 125  : }

  0006e	8b e5		 mov	 esp, ebp
  00070	5d		 pop	 ebp
  00071	c3		 ret	 0
?GetAcknowledge@CI2CBusForLineInterface@@MAEHXZ ENDP	; CI2CBusForLineInterface::GetAcknowledge
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?Stop@CI2CBusForLineInterface@@MAEXXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?Stop@CI2CBusForLineInterface@@MAEXXZ PROC		; CI2CBusForLineInterface::Stop, COMDAT
; _this$ = ecx

; 99   : {

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

; 100  :     _ASSERTE(m_LineInterface != 0);
; 101  : 
; 102  :     LOG(4, _T("I2C BusForLine Stop"));

  00007	68 00 00 00 00	 push	 OFFSET ??_C@_1CI@CJEDJMMH@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAS?$AAt?$AAo?$AAp?$AA?$AA@
  0000c	6a 04		 push	 4
  0000e	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00013	83 c4 08	 add	 esp, 8

; 103  :     // I2C stop: SDA 0 -> 1 with SCL = 1
; 104  :     // SDA    ___/^^^
; 105  :     // SCL ____/^^^
; 106  :     SetSCLLo();

  00016	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00019	e8 00 00 00 00	 call	 ?SetSCLLo@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSCLLo

; 107  :     SetSDALo();

  0001e	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00021	e8 00 00 00 00	 call	 ?SetSDALo@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSDALo

; 108  :     SetSCLHi();

  00026	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00029	e8 00 00 00 00	 call	 ?SetSCLHi@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSCLHi

; 109  :     SetSDAHi();

  0002e	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00031	e8 00 00 00 00	 call	 ?SetSDAHi@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSDAHi

; 110  : }

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

; 83   : {

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

; 84   :     _ASSERTE(m_LineInterface != 0);
; 85   : 
; 86   :     LOG(4, _T("I2C BusForLine Start"));

  00007	68 00 00 00 00	 push	 OFFSET ??_C@_1CK@MBBNDDFH@?$AAI?$AA2?$AAC?$AA?5?$AAB?$AAu?$AAs?$AAF?$AAo?$AAr?$AAL?$AAi?$AAn?$AAe?$AA?5?$AAS?$AAt?$AAa?$AAr?$AAt?$AA?$AA@
  0000c	6a 04		 push	 4
  0000e	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00013	83 c4 08	 add	 esp, 8

; 87   :     // I2C start: SDA 1 -> 0 with SCL = 1
; 88   :     // SDA   ^^^\___
; 89   :     // SCL ___/^^^\_____
; 90   :     //
; 91   :     SetSCLLo();

  00016	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00019	e8 00 00 00 00	 call	 ?SetSCLLo@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSCLLo

; 92   :     SetSDAHi();

  0001e	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00021	e8 00 00 00 00	 call	 ?SetSDAHi@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSDAHi

; 93   :     SetSCLHi();

  00026	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00029	e8 00 00 00 00	 call	 ?SetSCLHi@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSCLHi

; 94   :     SetSDALo();

  0002e	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00031	e8 00 00 00 00	 call	 ?SetSDALo@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSDALo

; 95   :     SetSCLLo();

  00036	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00039	e8 00 00 00 00	 call	 ?SetSCLLo@CI2CBusForLineInterface@@AAEXXZ ; CI2CBusForLineInterface::SetSCLLo

; 96   : }

  0003e	8b e5		 mov	 esp, ebp
  00040	5d		 pop	 ebp
  00041	c3		 ret	 0
?Start@CI2CBusForLineInterface@@MAEXXZ ENDP		; CI2CBusForLineInterface::Start
END
