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

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

INCLUDELIB OLDNAMES

PUBLIC	?Write@CI2CBus@@UAEHPBEI@Z			; CI2CBus::Write
PUBLIC	?Read@CI2CBus@@UAEHPBEIPAEI@Z			; CI2CBus::Read
PUBLIC	??_R4CI2CBus@@6B@				; CI2CBus::`RTTI Complete Object Locator'
PUBLIC	??_R3CI2CBus@@8					; CI2CBus::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2CI2CBus@@8					; CI2CBus::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@CI2CBus@@8			; CI2CBus::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVCI2CBus@@@8				; CI2CBus `RTTI Type Descriptor'
PUBLIC	??_C@_1IM@MEPKICFK@?$AAI?$AA2?$AAC?$AAB?$AAu?$AAs?$AA?3?$AA?3?$AAw?$AAr?$AAi?$AAt?$AAe?$AA?$CI?$AA0?$AAx?$AA?$CF?$AAx?$AA?$CJ?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAT?$AAR?$AAU@ ; `string'
PUBLIC	??_C@_1IM@FIMFLPPK@?$AAI?$AA2?$AAC?$AAB?$AAu?$AAs?$AA?3?$AA?3?$AAw?$AAr?$AAi?$AAt?$AAe?$AA?$CI?$AA0?$AAx?$AA?$CF?$AAx?$AA?$CJ?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAF?$AAA?$AAL@ ; `string'
PUBLIC	??_7CI2CBus@@6B@				; CI2CBus::`vftable'
;	COMDAT ??_7CI2CBus@@6B@
CONST	SEGMENT
??_7CI2CBus@@6B@ DD FLAT:??_R4CI2CBus@@6B@		; CI2CBus::`vftable'
	DD	FLAT:__purecall
	DD	FLAT:?Read@CI2CBus@@UAEHPBEIPAEI@Z
	DD	FLAT:__purecall
	DD	FLAT:?Write@CI2CBus@@UAEHPBEI@Z
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
CONST	ENDS
;	COMDAT ??_R4CI2CBus@@6B@
rdata$r	SEGMENT
??_R4CI2CBus@@6B@ DD 00H				; CI2CBus::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCI2CBus@@@8
	DD	FLAT:??_R3CI2CBus@@8
rdata$r	ENDS
;	COMDAT ??_R3CI2CBus@@8
rdata$r	SEGMENT
??_R3CI2CBus@@8 DD 00H					; CI2CBus::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2CI2CBus@@8
rdata$r	ENDS
;	COMDAT ??_R2CI2CBus@@8
rdata$r	SEGMENT
??_R2CI2CBus@@8 DD FLAT:??_R1A@?0A@EA@CI2CBus@@8	; CI2CBus::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@CI2CBus@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@CI2CBus@@8 DD FLAT:??_R0?AVCI2CBus@@@8	; CI2CBus::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3CI2CBus@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCI2CBus@@@8
_DATA	SEGMENT
??_R0?AVCI2CBus@@@8 DD FLAT:??_7type_info@@6B@		; CI2CBus `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCI2CBus@@', 00H
_DATA	ENDS
;	COMDAT ??_C@_1IM@FIMFLPPK@?$AAI?$AA2?$AAC?$AAB?$AAu?$AAs?$AA?3?$AA?3?$AAw?$AAr?$AAi?$AAt?$AAe?$AA?$CI?$AA0?$AAx?$AA?$CF?$AAx?$AA?$CJ?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAF?$AAA?$AAL@
CONST	SEGMENT
??_C@_1IM@FIMFLPPK@?$AAI?$AA2?$AAC?$AAB?$AAu?$AAs?$AA?3?$AA?3?$AAw?$AAr?$AAi?$AAt?$AAe?$AA?$CI?$AA0?$AAx?$AA?$CF?$AAx?$AA?$CJ?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAF?$AAA?$AAL@ DB 'I'
	DB	00H, '2', 00H, 'C', 00H, 'B', 00H, 'u', 00H, 's', 00H, ':', 00H
	DB	':', 00H, 'w', 00H, 'r', 00H, 'i', 00H, 't', 00H, 'e', 00H, '('
	DB	00H, '0', 00H, 'x', 00H, '%', 00H, 'x', 00H, ')', 00H, ' ', 00H
	DB	'r', 00H, 'e', 00H, 't', 00H, 'u', 00H, 'r', 00H, 'n', 00H, 'e'
	DB	00H, 'd', 00H, ' ', 00H, 'F', 00H, 'A', 00H, 'L', 00H, 'S', 00H
	DB	'E', 00H, ' ', 00H, 'f', 00H, 'o', 00H, 'r', 00H, ' ', 00H, 'r'
	DB	00H, 'e', 00H, 'a', 00H, 'd', 00H, ' ', 00H, 'a', 00H, 'd', 00H
	DB	'd', 00H, 'r', 00H, 'e', 00H, 's', 00H, 's', 00H, ' ', 00H, 'i'
	DB	00H, 'n', 00H, ' ', 00H, 'C', 00H, 'I', 00H, '2', 00H, 'C', 00H
	DB	'B', 00H, 'u', 00H, 's', 00H, ':', 00H, ':', 00H, 'r', 00H, 'e'
	DB	00H, 'a', 00H, 'd', 00H, 0aH, 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1IM@MEPKICFK@?$AAI?$AA2?$AAC?$AAB?$AAu?$AAs?$AA?3?$AA?3?$AAw?$AAr?$AAi?$AAt?$AAe?$AA?$CI?$AA0?$AAx?$AA?$CF?$AAx?$AA?$CJ?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAT?$AAR?$AAU@
CONST	SEGMENT
??_C@_1IM@MEPKICFK@?$AAI?$AA2?$AAC?$AAB?$AAu?$AAs?$AA?3?$AA?3?$AAw?$AAr?$AAi?$AAt?$AAe?$AA?$CI?$AA0?$AAx?$AA?$CF?$AAx?$AA?$CJ?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAT?$AAR?$AAU@ DB 'I'
	DB	00H, '2', 00H, 'C', 00H, 'B', 00H, 'u', 00H, 's', 00H, ':', 00H
	DB	':', 00H, 'w', 00H, 'r', 00H, 'i', 00H, 't', 00H, 'e', 00H, '('
	DB	00H, '0', 00H, 'x', 00H, '%', 00H, 'x', 00H, ')', 00H, ' ', 00H
	DB	'r', 00H, 'e', 00H, 't', 00H, 'u', 00H, 'r', 00H, 'n', 00H, 'e'
	DB	00H, 'd', 00H, ' ', 00H, 'T', 00H, 'R', 00H, 'U', 00H, 'E', 00H
	DB	' ', 00H, 'f', 00H, 'o', 00H, 'r', 00H, ' ', 00H, 'w', 00H, 'r'
	DB	00H, 'i', 00H, 't', 00H, 'e', 00H, ' ', 00H, 'a', 00H, 'd', 00H
	DB	'd', 00H, 'r', 00H, 'e', 00H, 's', 00H, 's', 00H, ' ', 00H, 'i'
	DB	00H, 'n', 00H, ' ', 00H, 'C', 00H, 'I', 00H, '2', 00H, 'C', 00H
	DB	'B', 00H, 'u', 00H, 's', 00H, ':', 00H, ':', 00H, 'r', 00H, 'e'
	DB	00H, 'a', 00H, 'd', 00H, 0aH, 00H, 00H, 00H	; `string'
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\i2cbus.cpp
;	COMDAT ?Write@CI2CBus@@UAEHPBEI@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_i$139514 = -4						; size = 4
_writeBuffer$ = 8					; size = 4
_writeBufferSize$ = 12					; size = 4
?Write@CI2CBus@@UAEHPBEI@Z PROC				; CI2CBus::Write, COMDAT
; _this$ = ecx

; 113  : {

  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

; 114  :     _ASSERTE(writeBuffer != 0);
; 115  :     _ASSERTE(writeBufferSize >= 1);
; 116  :     _ASSERTE((writeBuffer[0] & 1) == 0);
; 117  : 
; 118  : 
; 119  :     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

; 120  : 
; 121  :     Start();

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

; 122  : 
; 123  :     for (size_t i = 0; i < writeBufferSize; i++)

  00023	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _i$139514[ebp], 0
  0002a	eb 09		 jmp	 SHORT $LN4@Write@2
$LN3@Write@2:
  0002c	8b 4d fc	 mov	 ecx, DWORD PTR _i$139514[ebp]
  0002f	83 c1 01	 add	 ecx, 1
  00032	89 4d fc	 mov	 DWORD PTR _i$139514[ebp], ecx
$LN4@Write@2:
  00035	8b 55 fc	 mov	 edx, DWORD PTR _i$139514[ebp]
  00038	3b 55 0c	 cmp	 edx, DWORD PTR _writeBufferSize$[ebp]
  0003b	73 3b		 jae	 SHORT $LN2@Write@2

; 124  :     {
; 125  :         if (!Write(writeBuffer[i]))

  0003d	8b 45 08	 mov	 eax, DWORD PTR _writeBuffer$[ebp]
  00040	03 45 fc	 add	 eax, DWORD PTR _i$139514[ebp]
  00043	0f b6 08	 movzx	 ecx, BYTE PTR [eax]
  00046	51		 push	 ecx
  00047	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  0004a	8b 02		 mov	 eax, DWORD PTR [edx]
  0004c	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0004f	8b 50 08	 mov	 edx, DWORD PTR [eax+8]
  00052	ff d2		 call	 edx
  00054	85 c0		 test	 eax, eax
  00056	75 1e		 jne	 SHORT $LN1@Write@2

; 126  :         {
; 127  :             Stop();

  00058	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0005b	8b 10		 mov	 edx, DWORD PTR [eax]
  0005d	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00060	8b 42 14	 mov	 eax, DWORD PTR [edx+20]
  00063	ff d0		 call	 eax

; 128  :             Unlock();

  00065	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00068	8b 11		 mov	 edx, DWORD PTR [ecx]
  0006a	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0006d	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  00070	ff d0		 call	 eax

; 129  :             return FALSE;

  00072	33 c0		 xor	 eax, eax
  00074	eb 21		 jmp	 SHORT $LN5@Write@2
$LN1@Write@2:

; 130  :         }
; 131  :     }

  00076	eb b4		 jmp	 SHORT $LN3@Write@2
$LN2@Write@2:

; 132  : 
; 133  :     Stop();

  00078	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0007b	8b 11		 mov	 edx, DWORD PTR [ecx]
  0007d	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00080	8b 42 14	 mov	 eax, DWORD PTR [edx+20]
  00083	ff d0		 call	 eax

; 134  :     Unlock();

  00085	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00088	8b 11		 mov	 edx, DWORD PTR [ecx]
  0008a	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0008d	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  00090	ff d0		 call	 eax

; 135  : 
; 136  :     return TRUE;

  00092	b8 01 00 00 00	 mov	 eax, 1
$LN5@Write@2:

; 137  : }

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

; 46   : {

  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

; 47   :     _ASSERTE(writeBuffer != 0);
; 48   :     _ASSERTE(writeBufferSize >= 1);
; 49   :     _ASSERTE(readBuffer != 0 || readBufferSize == 0);
; 50   : 
; 51   :     if (readBufferSize == 0)

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

; 52   :         return TRUE;

  0000f	b8 01 00 00 00	 mov	 eax, 1
  00014	e9 8d 01 00 00	 jmp	 $LN13@Read@2
$LN12@Read@2:

; 53   : 
; 54   :     BYTE address = writeBuffer[0];

  00019	8b 45 08	 mov	 eax, DWORD PTR _writeBuffer$[ebp]
  0001c	8a 08		 mov	 cl, BYTE PTR [eax]
  0001e	88 4d fb	 mov	 BYTE PTR _address$[ebp], cl

; 55   : 
; 56   :     Lock();

  00021	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  00024	8b 02		 mov	 eax, DWORD PTR [edx]
  00026	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00029	8b 50 28	 mov	 edx, DWORD PTR [eax+40]
  0002c	ff d2		 call	 edx

; 57   : 
; 58   :     if (writeBufferSize != 1)

  0002e	83 7d 0c 01	 cmp	 DWORD PTR _writeBufferSize$[ebp], 1
  00032	0f 84 c0 00 00
	00		 je	 $LN11@Read@2

; 59   :     {
; 60   :         _ASSERTE(writeBufferSize > 1);
; 61   : 
; 62   :         Start();

  00038	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  0003b	8b 10		 mov	 edx, DWORD PTR [eax]
  0003d	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00040	8b 42 10	 mov	 eax, DWORD PTR [edx+16]
  00043	ff d0		 call	 eax

; 63   : 
; 64   :         // send the address
; 65   :         if (!Write(address & ~1))

  00045	0f b6 4d fb	 movzx	 ecx, BYTE PTR _address$[ebp]
  00049	83 e1 fe	 and	 ecx, -2			; fffffffeH
  0004c	51		 push	 ecx
  0004d	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  00050	8b 02		 mov	 eax, DWORD PTR [edx]
  00052	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00055	8b 50 08	 mov	 edx, DWORD PTR [eax+8]
  00058	ff d2		 call	 edx
  0005a	85 c0		 test	 eax, eax
  0005c	75 21		 jne	 SHORT $LN10@Read@2

; 66   :         {
; 67   :             LOGD(_T("I2CBus::write(0x%x) returned TRUE for write address in CI2CBus::read\n"), address & ~1);
; 68   :             Stop();

  0005e	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00061	8b 10		 mov	 edx, DWORD PTR [eax]
  00063	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00066	8b 42 14	 mov	 eax, DWORD PTR [edx+20]
  00069	ff d0		 call	 eax

; 69   :             Unlock();

  0006b	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0006e	8b 11		 mov	 edx, DWORD PTR [ecx]
  00070	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00073	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  00076	ff d0		 call	 eax

; 70   :             return FALSE;

  00078	33 c0		 xor	 eax, eax
  0007a	e9 27 01 00 00	 jmp	 $LN13@Read@2
$LN10@Read@2:

; 71   :         }
; 72   : 
; 73   :         for (size_t i = 1; i < (writeBufferSize - 1); i++)

  0007f	c7 45 f4 01 00
	00 00		 mov	 DWORD PTR _i$139494[ebp], 1
  00086	eb 09		 jmp	 SHORT $LN9@Read@2
$LN8@Read@2:
  00088	8b 4d f4	 mov	 ecx, DWORD PTR _i$139494[ebp]
  0008b	83 c1 01	 add	 ecx, 1
  0008e	89 4d f4	 mov	 DWORD PTR _i$139494[ebp], ecx
$LN9@Read@2:
  00091	8b 55 0c	 mov	 edx, DWORD PTR _writeBufferSize$[ebp]
  00094	83 ea 01	 sub	 edx, 1
  00097	39 55 f4	 cmp	 DWORD PTR _i$139494[ebp], edx
  0009a	73 3e		 jae	 SHORT $LN7@Read@2

; 74   :         {
; 75   :             if(!Write(writeBuffer[i]))

  0009c	8b 45 08	 mov	 eax, DWORD PTR _writeBuffer$[ebp]
  0009f	03 45 f4	 add	 eax, DWORD PTR _i$139494[ebp]
  000a2	0f b6 08	 movzx	 ecx, BYTE PTR [eax]
  000a5	51		 push	 ecx
  000a6	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  000a9	8b 02		 mov	 eax, DWORD PTR [edx]
  000ab	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000ae	8b 50 08	 mov	 edx, DWORD PTR [eax+8]
  000b1	ff d2		 call	 edx
  000b3	85 c0		 test	 eax, eax
  000b5	75 21		 jne	 SHORT $LN6@Read@2

; 76   :             {
; 77   :                 Stop();

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

; 78   :                 Unlock();

  000c4	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000c7	8b 11		 mov	 edx, DWORD PTR [ecx]
  000c9	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000cc	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  000cf	ff d0		 call	 eax

; 79   :                 return FALSE;

  000d1	33 c0		 xor	 eax, eax
  000d3	e9 ce 00 00 00	 jmp	 $LN13@Read@2
$LN6@Read@2:

; 80   :             }
; 81   :         }

  000d8	eb ae		 jmp	 SHORT $LN8@Read@2
$LN7@Read@2:

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

  000da	83 7d 0c 02	 cmp	 DWORD PTR _writeBufferSize$[ebp], 2
  000de	72 18		 jb	 SHORT $LN11@Read@2

; 86   :             Write(writeBuffer[writeBufferSize - 1]);

  000e0	8b 4d 08	 mov	 ecx, DWORD PTR _writeBuffer$[ebp]
  000e3	03 4d 0c	 add	 ecx, DWORD PTR _writeBufferSize$[ebp]
  000e6	0f b6 51 ff	 movzx	 edx, BYTE PTR [ecx-1]
  000ea	52		 push	 edx
  000eb	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  000ee	8b 10		 mov	 edx, DWORD PTR [eax]
  000f0	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000f3	8b 42 08	 mov	 eax, DWORD PTR [edx+8]
  000f6	ff d0		 call	 eax
$LN11@Read@2:

; 87   : 
; 88   :     }
; 89   : 
; 90   :     Start();

  000f8	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000fb	8b 11		 mov	 edx, DWORD PTR [ecx]
  000fd	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00100	8b 42 10	 mov	 eax, DWORD PTR [edx+16]
  00103	ff d0		 call	 eax

; 91   : 
; 92   :     // The read address requires a negative ack
; 93   :     if (!Write(address | 1))

  00105	0f b6 4d fb	 movzx	 ecx, BYTE PTR _address$[ebp]
  00109	83 c9 01	 or	 ecx, 1
  0010c	51		 push	 ecx
  0010d	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  00110	8b 02		 mov	 eax, DWORD PTR [edx]
  00112	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00115	8b 50 08	 mov	 edx, DWORD PTR [eax+8]
  00118	ff d2		 call	 edx
  0011a	85 c0		 test	 eax, eax
  0011c	75 1e		 jne	 SHORT $LN4@Read@2

; 94   :     {
; 95   :         LOGD(_T("I2CBus::write(0x%x) returned FALSE for read address in CI2CBus::read\n"), address | 1);
; 96   :         Stop();

  0011e	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00121	8b 10		 mov	 edx, DWORD PTR [eax]
  00123	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00126	8b 42 14	 mov	 eax, DWORD PTR [edx+20]
  00129	ff d0		 call	 eax

; 97   :         Unlock();

  0012b	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0012e	8b 11		 mov	 edx, DWORD PTR [ecx]
  00130	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00133	8b 42 2c	 mov	 eax, DWORD PTR [edx+44]
  00136	ff d0		 call	 eax

; 98   :         return FALSE;

  00138	33 c0		 xor	 eax, eax
  0013a	eb 6a		 jmp	 SHORT $LN13@Read@2
$LN4@Read@2:

; 99   :     }
; 100  : 
; 101  :     size_t i;
; 102  : 
; 103  :     for (i = 0; i < (readBufferSize - 1); i++)

  0013c	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _i$[ebp], 0
  00143	eb 09		 jmp	 SHORT $LN3@Read@2
$LN2@Read@2:
  00145	8b 4d fc	 mov	 ecx, DWORD PTR _i$[ebp]
  00148	83 c1 01	 add	 ecx, 1
  0014b	89 4d fc	 mov	 DWORD PTR _i$[ebp], ecx
$LN3@Read@2:
  0014e	8b 55 14	 mov	 edx, DWORD PTR _readBufferSize$[ebp]
  00151	83 ea 01	 sub	 edx, 1
  00154	39 55 fc	 cmp	 DWORD PTR _i$[ebp], edx
  00157	73 18		 jae	 SHORT $LN1@Read@2

; 104  :         readBuffer[i] = Read(FALSE);

  00159	6a 00		 push	 0
  0015b	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  0015e	8b 10		 mov	 edx, DWORD PTR [eax]
  00160	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00163	8b 02		 mov	 eax, DWORD PTR [edx]
  00165	ff d0		 call	 eax
  00167	8b 4d 10	 mov	 ecx, DWORD PTR _readBuffer$[ebp]
  0016a	03 4d fc	 add	 ecx, DWORD PTR _i$[ebp]
  0016d	88 01		 mov	 BYTE PTR [ecx], al
  0016f	eb d4		 jmp	 SHORT $LN2@Read@2
$LN1@Read@2:

; 105  :     readBuffer[i] = Read(TRUE);

  00171	6a 01		 push	 1
  00173	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  00176	8b 02		 mov	 eax, DWORD PTR [edx]
  00178	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0017b	8b 10		 mov	 edx, DWORD PTR [eax]
  0017d	ff d2		 call	 edx
  0017f	8b 4d 10	 mov	 ecx, DWORD PTR _readBuffer$[ebp]
  00182	03 4d fc	 add	 ecx, DWORD PTR _i$[ebp]
  00185	88 01		 mov	 BYTE PTR [ecx], al

; 106  :     Stop();

  00187	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  0018a	8b 02		 mov	 eax, DWORD PTR [edx]
  0018c	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0018f	8b 50 14	 mov	 edx, DWORD PTR [eax+20]
  00192	ff d2		 call	 edx

; 107  :     Unlock();

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

; 108  : 
; 109  :     return TRUE;

  001a1	b8 01 00 00 00	 mov	 eax, 1
$LN13@Read@2:

; 110  : }

  001a6	8b e5		 mov	 esp, ebp
  001a8	5d		 pop	 ebp
  001a9	c2 10 00	 ret	 16			; 00000010H
?Read@CI2CBus@@UAEHPBEIPAEI@Z ENDP			; CI2CBus::Read
_TEXT	ENDS
PUBLIC	??1CI2CBus@@QAE@XZ				; CI2CBus::~CI2CBus
; Function compile flags: /Odtp
;	COMDAT ??1CI2CBus@@QAE@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
??1CI2CBus@@QAE@XZ PROC					; CI2CBus::~CI2CBus, COMDAT
; _this$ = ecx

; 39   : {

  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 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], OFFSET ??_7CI2CBus@@6B@

; 40   : }

  00010	8b e5		 mov	 esp, ebp
  00012	5d		 pop	 ebp
  00013	c3		 ret	 0
??1CI2CBus@@QAE@XZ ENDP					; CI2CBus::~CI2CBus
_TEXT	ENDS
PUBLIC	??0CI2CBus@@QAE@XZ				; CI2CBus::CI2CBus
; Function compile flags: /Odtp
;	COMDAT ??0CI2CBus@@QAE@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
??0CI2CBus@@QAE@XZ PROC					; CI2CBus::CI2CBus, COMDAT
; _this$ = ecx

; 35   : {

  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 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], OFFSET ??_7CI2CBus@@6B@

; 36   : }

  00010	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00013	8b e5		 mov	 esp, ebp
  00015	5d		 pop	 ebp
  00016	c3		 ret	 0
??0CI2CBus@@QAE@XZ ENDP					; CI2CBus::CI2CBus
END
