www.pudn.com > DMBDRV.rar > SianoSPI.cod


; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4345  
 
	TTL	E:\WM604\PLATFORM\SEUICBSP\SRC\DRIVERS\DMBDRV\SpiDrv\.\SianoSPI.c 
	CODE32 
 
  00000			 AREA	 |.drectve|, DRECTVE 
	DCB	"-defaultlib:coredll.lib " 
	DCB	"-defaultlib:corelibc.lib " 
 
	EXPORT	|dpCurSettings| [ DATA ] 
 
  00000			 AREA	 |.data|, DATA 
	 COMMON	|gt_ClntST|, 0x4 
 
	 COMMON	|gt_ClntET|, 0x4 
 
	 COMMON	|Li_Clnt|, 0x8 
 
|preamble_pattern| DCB 0xa5 
	DCB	0x5a 
	DCB	0xe7 
	DCB	0x7e 
	%	4 
|dpCurSettings| DCB "B", 0x0, "U", 0x0, "I", 0x0, "L", 0x0, "T", 0x0, "I", 0x0 
	DCB	"N", 0x0, "T", 0x0, "E", 0x0, "S", 0x0, "T", 0x0, 0x0, 0x0 
	%	40 
	DCB	"E", 0x0, "r", 0x0, "r", 0x0, "o", 0x0, "r", 0x0, "s", 0x0 
	DCB	0x0, 0x0 
	%	50 
	DCB	"W", 0x0, "a", 0x0, "r", 0x0, "n", 0x0, "i", 0x0, "n", 0x0 
	DCB	"g", 0x0, "s", 0x0, 0x0, 0x0 
	%	46 
	DCB	"I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, 0x0, 0x0 
	%	54 
	DCB	"T", 0x0, "r", 0x0, "a", 0x0, "c", 0x0, "e", 0x0, 0x0, 0x0 
	%	52 
	DCB	"S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I", 0x0, "N", 0x0 
	DCB	"I", 0x0, "T", 0x0, 0x0, 0x0 
	%	46 
	DCB	"S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "R", 0x0, "E", 0x0 
	DCB	"A", 0x0, "D", 0x0, 0x0, 0x0 
	%	46 
	DCB	"S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "W", 0x0, "R", 0x0 
	DCB	"I", 0x0, "T", 0x0, "E", 0x0, 0x0, 0x0 
	%	44 
	DCB	"S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I", 0x0, "O", 0x0 
	DCB	"C", 0x0, "T", 0x0, "L", 0x0, 0x0, 0x0 
	%	44 
	DCB	"S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "D", 0x0, "E", 0x0 
	DCB	"I", 0x0, "N", 0x0, "I", 0x0, "T", 0x0, 0x0, 0x0 
	%	42 
	DCB	"Z", 0x0, "O", 0x0, "N", 0x0, "E", 0x0, "_", 0x0, "F", 0x0 
	DCB	"U", 0x0, "N", 0x0, "C", 0x0, "T", 0x0, "I", 0x0, "O", 0x0 
	DCB	"N", 0x0, 0x0, 0x0 
	%	36 
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0 
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0 
	%	44 
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0 
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0 
	%	44 
	%	256 
	DCD	0xf 
	EXPORT	|ResetEvent| 
	IMPORT	|EventModify| 
; File e:\wm604\public\common\sdk\inc\kfuncs.h 
 
  00000			 AREA	 |.text| { |ResetEvent| }, CODE, ARM, SELECTION=2 ; comdat any 
 
  00000			 AREA	 |.pdata$$ResetEvent|, PDATA, SELECTION=5, ASSOC=|.text| { |ResetEvent| } ; comdat associative 
|$T38825| DCD	|$L38824| 
	DCD	0x40000501 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |ResetEvent| }, CODE, ARM, SELECTION=2 ; comdat any 
 
  00000		 |ResetEvent| PROC 
 
; 174  : _inline BOOL ResetEvent(HANDLE h) { 
 
  00000		 |$L38824| 
  00000	e52de004	 str         lr, [sp, #-4]! 
  00004		 |$M38822| 
 
; 175  : 	return EventModify(h,EVENT_RESET); 
 
  00004	e3a01002	 mov         r1, #2 
  00008	eb000000	 bl          EventModify 
 
; 176  : } 
 
  0000c	e49de004	 ldr         lr, [sp], #4 
  00010	e12fff1e	 bx          lr 
  00014		 |$M38823| 
 
			 ENDP  ; |ResetEvent| 
 
	EXPORT	|SetEvent| 
 
  00000			 AREA	 |.text| { |SetEvent| }, CODE, ARM, SELECTION=2 ; comdat any 
 
  00000			 AREA	 |.pdata$$SetEvent|, PDATA, SELECTION=5, ASSOC=|.text| { |SetEvent| } ; comdat associative 
|$T38835| DCD	|$L38834| 
	DCD	0x40000501 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |SetEvent| }, CODE, ARM, SELECTION=2 ; comdat any 
 
  00000		 |SetEvent| PROC 
 
; 186  : _inline BOOL SetEvent(HANDLE h) { 
 
  00000		 |$L38834| 
  00000	e52de004	 str         lr, [sp, #-4]! 
  00004		 |$M38832| 
 
; 187  : 	return EventModify(h,EVENT_SET); 
 
  00004	e3a01003	 mov         r1, #3 
  00008	eb000000	 bl          EventModify 
 
; 188  : } 
 
  0000c	e49de004	 ldr         lr, [sp], #4 
  00010	e12fff1e	 bx          lr 
  00014		 |$M38833| 
 
			 ENDP  ; |SetEvent| 
 
; File e:\wm604\platform\seuicbsp\src\drivers\dmbdrv\spidrv\sianospi.c 
 
  00000			 AREA	 |.text| { |MsgFound| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$MsgFound|, PDATA, SELECTION=5, ASSOC=|.text| { |MsgFound| } ; comdat associative 
|$T38845| DCD	|$L38844| 
	DCD	0x40000801 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |MsgFound| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |MsgFound| PROC 
 
; 66   : {	 
 
  00000		 |$L38844| 
  00000	e52de004	 str         lr, [sp, #-4]! 
  00004		 |$M38842| 
 
; 67   : 	PSPIDEVICEEXTENSION pSpiDevExt = context; 
; 68   : 	//DBGMSG(ZONE_INFO, (TEXT("SmsSpi: MsgFound().\r\n"))); 
; 69   : 	if (pSpiDevExt->pBD_ReadCBFunc) 
 
  00004	e590305c	 ldr         r3, [r0, #0x5C] 
  00008	e3530000	 cmp         r3, #0 
 
; 70   : 	{ 
; 71   : 		//DBGMSG(ZONE_INFO, (TEXT("SmsSpi: Calling back with message.\r\n"))); 
; 72   : 		pSpiDevExt->pBD_ReadCBFunc(pSpiDevExt->hBDContext, buf, (DWORD)len); 
 
  0000c	15900068	 ldrne       r0, [r0, #0x68] 
  00010	11a0e00f	 movne       lr, pc 
  00014	112fff13	 bxne        r3 
 
; 73   : 	} 
; 74   : 	//DBGMSG(ZONE_INFO, (TEXT("SmsSpi: MsgFound end.\r\n"))); 
; 75   : 	 
; 76   : } 
 
  00018	e49de004	 ldr         lr, [sp], #4 
  0001c	e12fff1e	 bx          lr 
  00020		 |$M38843| 
 
			 ENDP  ; |MsgFound| 
 
	IMPORT	|SetEventData| 
; File e:\wm604\public\common\sdk\inc\kfuncs.h 
 
  00000			 AREA	 |.text| { |smsspi_interruptHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$smsspi_interruptHandler|, PDATA, SELECTION=5, ASSOC=|.text| { |smsspi_interruptHandler| } ; comdat associative 
|$T38857| DCD	|$L38856| 
	DCD	0x40000a01 
; Function compile flags: /Ogsy 
; File e:\wm604\platform\seuicbsp\src\drivers\dmbdrv\spidrv\sianospi.c 
 
  00000			 AREA	 |.text| { |smsspi_interruptHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |smsspi_interruptHandler| PROC 
 
; 80   : { 
 
  00000		 |$L38856| 
  00000	e92d4010	 stmdb       sp!, {r4, lr} 
  00004		 |$M38854| 
  00004	e1a04000	 mov         r4, r0 
 
; 81   : 	PSPIDEVICEEXTENSION pSpiDevExt  = (PSPIDEVICEEXTENSION)pArg; 
; 82   : 	//DBGMSG(ZONE_ERROR, (TEXT("SmsSpi: Interrupt().\r\n"))); 
; 83   : 	SetEventData(pSpiDevExt->transferMsgQueue, 0); 
 
  00008	e594004c	 ldr         r0, [r4, #0x4C] 
  0000c	e3a01000	 mov         r1, #0 
  00010	eb000000	 bl          SetEventData 
 
; 84   : 	SetEvent(pSpiDevExt->transferMsgQueue); 
 
  00014	e594004c	 ldr         r0, [r4, #0x4C] 
  00018	e3a01003	 mov         r1, #3 
  0001c	eb000000	 bl          EventModify 
 
; 85   : } 
 
  00020	e8bd4010	 ldmia       sp!, {r4, lr} 
  00024	e12fff1e	 bx          lr 
  00028		 |$M38855| 
 
			 ENDP  ; |smsspi_interruptHandler| 
 
	EXPORT	|??_C@_1DE@OLMIHPOI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAE?$AAn?$AAd?$AA?5?$AAx?$AAf?$AAe?$AAr?$AA?5?$AAe?$AAv?$AAe@| [ DATA ] ; `string' 
	IMPORT	|GetEventData| 
	IMPORT	|smsspi_common_transfer_msg| 
	IMPORT	|WaitForSingleObject| 
	IMPORT	|NKDbgPrintfW| 
; File e:\wm604\public\common\sdk\inc\kfuncs.h 
 
  00000			 AREA	 |.text| { |SpiTransferThread| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$SpiTransferThread|, PDATA, SELECTION=5, ASSOC=|.text| { |SpiTransferThread| } ; comdat associative 
|$T38873| DCD	|$L38872| 
	DCD	0x40001701 
 
  00000			 AREA	 |.rdata| { |??_C@_1DE@OLMIHPOI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAE?$AAn?$AAd?$AA?5?$AAx?$AAf?$AAe?$AAr?$AA?5?$AAe?$AAv?$AAe@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1DE@OLMIHPOI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAE?$AAn?$AAd?$AA?5?$AAx?$AAf?$AAe?$AAr?$AA?5?$AAe?$AAv?$AAe@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "E", 0x0, "n", 0x0, "d", 0x0, " ", 0x0, "x" 
	DCB	0x0, "f", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "e", 0x0, "v" 
	DCB	0x0, "e", 0x0, "n", 0x0, "t", 0x0, ".", 0x0, 0xd, 0x0, 0xa 
	DCB	0x0, 0x0, 0x0				; `string' 
; Function compile flags: /Ogsy 
; File e:\wm604\platform\seuicbsp\src\drivers\dmbdrv\spidrv\sianospi.c 
 
  00000			 AREA	 |.text| { |SpiTransferThread| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |SpiTransferThread| PROC 
 
; 89   : { 
 
  00000		 |$L38872| 
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr} 
  00004		 |$M38870| 
  00004	e1a04000	 mov         r4, r0 
  00008	e59f5048	 ldr         r5, [pc, #0x48] 
  0000c		 |$L38426| 
 
; 90   : 	PSPIDEVICEEXTENSION pSpiDevExt  = (PSPIDEVICEEXTENSION)pArg; 
; 91   : 	struct spi_msg *msg; 
; 92   :  
; 93   : 	while (1) 
; 94   : 	{ 
; 95   : 		WaitForSingleObject(pSpiDevExt->transferMsgQueue, INFINITE); 
 
  0000c	e594004c	 ldr         r0, [r4, #0x4C] 
  00010	e3e01000	 mvn         r1, #0 
  00014	eb000000	 bl          WaitForSingleObject 
 
; 96   : 		//DBGMSG(ZONE_DETAILED, (TEXT("SmsSpi: Recieved xfer event.\r\n"))); 
; 97   : 		msg = (struct spi_msg *)GetEventData(pSpiDevExt->transferMsgQueue); 
 
  00018	e594004c	 ldr         r0, [r4, #0x4C] 
  0001c	eb000000	 bl          GetEventData 
 
; 98   : 		//if (msg) 
; 99   : 		//	DBGMSG(ZONE_INFO, (TEXT("SmsSpi: Transfering packet, buf=0x%x, len=%d.\r\n"), msg->buf, msg->len)); 
; 100  : 		smsspi_common_transfer_msg(&pSpiDevExt->dev, msg, pSpiDevExt->PaddingAllowed); 
 
  00020	e5942034	 ldr         r2, [r4, #0x34] 
  00024	e1a01000	 mov         r1, r0 
  00028	e1a00004	 mov         r0, r4 
  0002c	eb000000	 bl          smsspi_common_transfer_msg 
 
; 101  :         SetEvent(pSpiDevExt->WriteOperation); 
 
  00030	e5940048	 ldr         r0, [r4, #0x48] 
  00034	e3a01003	 mov         r1, #3 
  00038	eb000000	 bl          EventModify 
 
; 102  : 		DBGMSG(ZONE_DETAILED, (TEXT("SmsSpi: End xfer event.\r\n"))); 
 
  0003c	e5953440	 ldr         r3, [r5, #0x440] 
  00040	e3130010	 tst         r3, #0x10 
  00044	0afffff0	 beq         |$L38426| 
  00048	e59f0004	 ldr         r0, [pc, #4] 
  0004c	eb000000	 bl          NKDbgPrintfW 
 
; 103  :     } 
 
  00050	eaffffed	 b           |$L38426| 
  00054		 |$L38875| 
  00054	00000000	 DCD         |??_C@_1DE@OLMIHPOI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAE?$AAn?$AAd?$AA?5?$AAx?$AAf?$AAe?$AAr?$AA?5?$AAe?$AAv?$AAe@| 
  00058	00000000	 DCD         |dpCurSettings| 
  0005c		 |$M38871| 
 
			 ENDP  ; |SpiTransferThread| 
 
	EXPORT	|GetInstance| 
	EXPORT	|??_C@_1DC@DJFBBKNH@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AAs?$AA?2?$AAB?$AAu?$AAi?$AAl?$AAt?$AAI?$AAn?$AA?2?$AAS?$AAi?$AAa?$AAn@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1CC@KBENDKOI@?$AAM?$AAi?$AAn?$AAi?$AAP?$AAo?$AAr?$AAt?$AAI?$AAn?$AAs?$AAt?$AAa?$AAn?$AAc?$AAe?$AA?$AA@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1BK@KPLOIJDF@?$AAM?$AAi?$AAn?$AAi?$AAp?$AAo?$AAr?$AAt?$AAN?$AAa?$AAm?$AAe?$AA?$AA@| [ DATA ] ; `string' 
	IMPORT	|RegCloseKey| 
	IMPORT	|RegOpenKeyExW| 
	IMPORT	|RegQueryValueExW| 
 
  00000			 AREA	 |.text| { |GetInstance| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$GetInstance|, PDATA, SELECTION=5, ASSOC=|.text| { |GetInstance| } ; comdat associative 
|$T38886| DCD	|$L38885| 
	DCD	0x40003102 
 
  00000			 AREA	 |.rdata| { |??_C@_1BK@KPLOIJDF@?$AAM?$AAi?$AAn?$AAi?$AAp?$AAo?$AAr?$AAt?$AAN?$AAa?$AAm?$AAe?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1BK@KPLOIJDF@?$AAM?$AAi?$AAn?$AAi?$AAp?$AAo?$AAr?$AAt?$AAN?$AAa?$AAm?$AAe?$AA?$AA@| DCB "M" 
	DCB	0x0, "i", 0x0, "n", 0x0, "i", 0x0, "p", 0x0, "o", 0x0, "r" 
	DCB	0x0, "t", 0x0, "N", 0x0, "a", 0x0, "m", 0x0, "e", 0x0, 0x0 
	DCB	0x0					; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1CC@KBENDKOI@?$AAM?$AAi?$AAn?$AAi?$AAP?$AAo?$AAr?$AAt?$AAI?$AAn?$AAs?$AAt?$AAa?$AAn?$AAc?$AAe?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1CC@KBENDKOI@?$AAM?$AAi?$AAn?$AAi?$AAP?$AAo?$AAr?$AAt?$AAI?$AAn?$AAs?$AAt?$AAa?$AAn?$AAc?$AAe?$AA?$AA@| DCB "M" 
	DCB	0x0, "i", 0x0, "n", 0x0, "i", 0x0, "P", 0x0, "o", 0x0, "r" 
	DCB	0x0, "t", 0x0, "I", 0x0, "n", 0x0, "s", 0x0, "t", 0x0, "a" 
	DCB	0x0, "n", 0x0, "c", 0x0, "e", 0x0, 0x0, 0x0 ; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1DC@DJFBBKNH@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AAs?$AA?2?$AAB?$AAu?$AAi?$AAl?$AAt?$AAI?$AAn?$AA?2?$AAS?$AAi?$AAa?$AAn@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1DC@DJFBBKNH@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AAs?$AA?2?$AAB?$AAu?$AAi?$AAl?$AAt?$AAI?$AAn?$AA?2?$AAS?$AAi?$AAa?$AAn@| DCB "D" 
	DCB	0x0, "r", 0x0, "i", 0x0, "v", 0x0, "e", 0x0, "r", 0x0, "s" 
	DCB	0x0, "\\", 0x0, "B", 0x0, "u", 0x0, "i", 0x0, "l", 0x0, "t" 
	DCB	0x0, "I", 0x0, "n", 0x0, "\\", 0x0, "S", 0x0, "i", 0x0, "a" 
	DCB	0x0, "n", 0x0, "o", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, 0x0 
	DCB	0x0					; `string' 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |GetInstance| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |GetInstance| PROC 
 
; 114  : { 
 
  00000		 |$L38885| 
  00000	e92d4070	 stmdb       sp!, {r4 - r6, lr} 
  00004	e24dd018	 sub         sp, sp, #0x18 
  00008		 |$M38883| 
  00008	e1a05000	 mov         r5, r0 
 
; 115  : 	HKEY hSpikey; 
; 116  : 	LONG lRes; 
; 117  : 	DWORD dwType; 
; 118  : 	DWORD CurrInstancenum; 
; 119  : 	DWORD DataSize; 
; 120  : 	 
; 121  : 	lRes = RegOpenKeyEx(  
; 122  : 						HKEY_LOCAL_MACHINE,  
; 123  : 						REG_PATH,  
; 124  : 						0,//N\A  
; 125  : 						0,//N\A 
; 126  : 						 &hSpikey  
; 127  : 						); 
 
  0000c	e59f10ac	 ldr         r1, [pc, #0xAC] 
  00010	e28de008	 add         lr, sp, #8 
  00014	e3a03000	 mov         r3, #0 
  00018	e3a02000	 mov         r2, #0 
  0001c	e3a0010a	 mov         r0, #0xA, 2 
  00020	e58de000	 str         lr, [sp] 
  00024	eb000000	 bl          RegOpenKeyExW 
  00028	e3500000	 cmp         r0, #0 
 
; 128  : 	if(lRes != ERROR_SUCCESS) 
; 129  : 		return (-1); 
 
  0002c	1a00001a	 bne         |$L38882| 
 
; 130  :  
; 131  : 	DataSize=sizeof(DWORD); 
; 132  : 	lRes = RegQueryValueEx(  
; 133  : 						  hSpikey,  
; 134  : 						  L"MiniPortInstance",  
; 135  : 						  0,  
; 136  : 						  &dwType,  
; 137  : 						  (LPBYTE)&CurrInstancenum,  
; 138  : 						  &DataSize  
; 139  : 						);  
 
  00030	e59f1084	 ldr         r1, [pc, #0x84] 
  00034	e59d0008	 ldr         r0, [sp, #8] 
  00038	e3a06004	 mov         r6, #4 
  0003c	e28de00c	 add         lr, sp, #0xC 
  00040	e28d4014	 add         r4, sp, #0x14 
  00044	e28d3010	 add         r3, sp, #0x10 
  00048	e3a02000	 mov         r2, #0 
  0004c	e58d600c	 str         r6, [sp, #0xC] 
  00050	e58de004	 str         lr, [sp, #4] 
  00054	e58d4000	 str         r4, [sp] 
  00058	eb000000	 bl          RegQueryValueExW 
  0005c	e3500000	 cmp         r0, #0 
 
; 140  : 	if(lRes!=ERROR_SUCCESS)	 
; 141  : 	{ 
; 142  : 		RegCloseKey(hSpikey); 
 
  00060	e59d0008	 ldr         r0, [sp, #8] 
 
; 143  : 		return (-1); 
 
  00064	1a00000b	 bne         |$L38881| 
 
; 144  : 	} 
; 145  : 	 
; 146  : 	DataSize=MAX_MNPRT_NAME; 
; 147  : 	lRes = RegQueryValueEx(  
; 148  : 						  hSpikey,  
; 149  : 						  L"MiniportName",  
; 150  : 						  0,  
; 151  : 						  &dwType,  
; 152  : 						  (LPBYTE)szName,  
; 153  : 						  &DataSize  
; 154  : 						);  
 
  00068	e59f1048	 ldr         r1, [pc, #0x48] 
  0006c	e3a04040	 mov         r4, #0x40 
  00070	e28de00c	 add         lr, sp, #0xC 
  00074	e28d3010	 add         r3, sp, #0x10 
  00078	e3a02000	 mov         r2, #0 
  0007c	e58d400c	 str         r4, [sp, #0xC] 
  00080	e58de004	 str         lr, [sp, #4] 
  00084	e58d5000	 str         r5, [sp] 
  00088	eb000000	 bl          RegQueryValueExW 
  0008c	e3500000	 cmp         r0, #0 
 
; 155  : 	if(lRes!=ERROR_SUCCESS)	 
; 156  : 	{ 
; 157  : 		RegCloseKey(hSpikey); 
 
  00090	e59d0008	 ldr         r0, [sp, #8] 
  00094	0a000002	 beq         |$L38449| 
  00098		 |$L38881| 
  00098	eb000000	 bl          RegCloseKey 
  0009c		 |$L38882| 
 
; 158  : 		return (-1); 
 
  0009c	e3e00000	 mvn         r0, #0 
  000a0	ea000001	 b           |$L38433| 
  000a4		 |$L38449| 
 
; 159  : 	} 
; 160  :  
; 161  : 	RegCloseKey(hSpikey); 
 
  000a4	eb000000	 bl          RegCloseKey 
 
; 162  : 	return CurrInstancenum; 
 
  000a8	e59d0014	 ldr         r0, [sp, #0x14] 
  000ac		 |$L38433| 
 
; 163  : } 
 
  000ac	e28dd018	 add         sp, sp, #0x18 
  000b0	e8bd4070	 ldmia       sp!, {r4 - r6, lr} 
  000b4	e12fff1e	 bx          lr 
  000b8		 |$L38888| 
  000b8	00000000	 DCD         |??_C@_1BK@KPLOIJDF@?$AAM?$AAi?$AAn?$AAi?$AAp?$AAo?$AAr?$AAt?$AAN?$AAa?$AAm?$AAe?$AA?$AA@| 
  000bc	00000000	 DCD         |??_C@_1CC@KBENDKOI@?$AAM?$AAi?$AAn?$AAi?$AAP?$AAo?$AAr?$AAt?$AAI?$AAn?$AAs?$AAt?$AAa?$AAn?$AAc?$AAe?$AA?$AA@| 
  000c0	00000000	 DCD         |??_C@_1DC@DJFBBKNH@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AAs?$AA?2?$AAB?$AAu?$AAi?$AAl?$AAt?$AAI?$AAn?$AA?2?$AAS?$AAi?$AAa?$AAn@| 
  000c4		 |$M38884| 
 
			 ENDP  ; |GetInstance| 
 
	EXPORT	|DllEntry| 
 
  00000			 AREA	 |.text| { |DllEntry| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$DllEntry|, PDATA, SELECTION=5, ASSOC=|.text| { |DllEntry| } ; comdat associative 
|$T38896| DCD	|$L38895| 
	DCD	0x40000200 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |DllEntry| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |DllEntry| PROC 
 
; 190  : { 
 
  00000		 |$L38895| 
  00000		 |$M38893| 
 
; 191  :     BOOL bRc = TRUE; 
; 192  :      
; 193  :     UNREFERENCED_PARAMETER(hDllHandle); 
; 194  :     UNREFERENCED_PARAMETER(lpreserved); 
; 195  :      
; 196  :     switch (dwReason) { 
; 197  :         case DLL_PROCESS_ATTACH:  
; 198  : 			{ 
; 199  :             DEBUGREGISTER((HINSTANCE)hDllHandle); 
; 200  :             DEBUGMSG(1,(_T("*** DLL_PROCESS_ATTACH - Current Process: 0x%x, ID: 0x%x ***\r\n"), 
; 201  :                 GetCurrentProcess(), GetCurrentProcessId())); 
; 202  : 	 
; 203  : 			 
; 204  : 			}  
; 205  : 			break; 
; 206  : 			 
; 207  :         case DLL_PROCESS_DETACH:  
; 208  : 			{ 
; 209  :             DEBUGMSG(1,(_T("*** DLL_PROCESS_DETACH - Current Process: 0x%x, ID: 0x%x ***\r\n"), 
; 210  :                 GetCurrentProcess(), GetCurrentProcessId())); 
; 211  :  
; 212  :  
; 213  : 			}  
; 214  : 			break; 
; 215  : 			 
; 216  :         default: 
; 217  :             break; 
; 218  :     } 
; 219  : 	 
; 220  :     return bRc; 
 
  00000	e3a00001	 mov         r0, #1 
 
; 221  : } 
 
  00004	e12fff1e	 bx          lr 
  00008		 |$M38894| 
 
			 ENDP  ; |DllEntry| 
 
	IMPORT	|LocalFree| 
	IMPORT	|DeactivateDevice| 
	IMPORT	|smsspiphy_deinit| 
	IMPORT	|TerminateThread| 
	IMPORT	|CloseHandle| 
	IMPORT	|HalFreeCommonBuffer| 
 
  00000			 AREA	 |.text| { |FreeAllocatedResources| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$FreeAllocatedResources|, PDATA, SELECTION=5, ASSOC=|.text| { |FreeAllocatedResources| } ; comdat associative 
|$T38906| DCD	|$L38905| 
	DCD	0x40003302 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |FreeAllocatedResources| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |FreeAllocatedResources| PROC 
 
; 225  : { 
 
  00000		 |$L38905| 
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr} 
  00004	e24dd014	 sub         sp, sp, #0x14 
  00008		 |$M38903| 
  00008	e1b04000	 movs        r4, r0 
 
; 226  : 	DMA_ADAPTER_OBJECT adapter; 
; 227  :  
; 228  : 	if (pSpiDevExt) 
 
  0000c	0a00002b	 beq         |$L38474| 
 
; 229  : 	{ 
; 230  : 		if (pSpiDevExt->hSmsGenDrv != INVALID_HANDLE_VALUE) 
 
  00010	e5940058	 ldr         r0, [r4, #0x58] 
  00014	e3700001	 cmn         r0, #1 
  00018	0a000002	 beq         |$L38476| 
 
; 231  : 		{ 
; 232  : 			DeactivateDevice(pSpiDevExt->hSmsGenDrv); 
 
  0001c	eb000000	 bl          DeactivateDevice 
 
; 233  : 			pSpiDevExt->hSmsGenDrv = INVALID_HANDLE_VALUE; 
 
  00020	e3e03000	 mvn         r3, #0 
  00024	e5843058	 str         r3, [r4, #0x58] 
  00028		 |$L38476| 
 
; 234  : 		} 
; 235  : 		if (pSpiDevExt->transferThread) 
 
  00028	e5943050	 ldr         r3, [r4, #0x50] 
  0002c	e3530000	 cmp         r3, #0 
  00030	0a000004	 beq         |$L38478| 
 
; 236  : 		{ 
; 237  : 			TerminateThread(pSpiDevExt->transferThread, 0); 
 
  00034	e3a01000	 mov         r1, #0 
  00038	e1a00003	 mov         r0, r3 
  0003c	eb000000	 bl          TerminateThread 
 
; 238  : 			CloseHandle(pSpiDevExt->transferThread); 
 
  00040	e5940050	 ldr         r0, [r4, #0x50] 
  00044	eb000000	 bl          CloseHandle 
  00048		 |$L38478| 
 
; 239  : 		} 
; 240  : 		if (pSpiDevExt->transferMsgQueue) 
 
  00048	e594304c	 ldr         r3, [r4, #0x4C] 
  0004c	e3530000	 cmp         r3, #0 
 
; 241  : 		{ 
; 242  : 			CloseHandle(pSpiDevExt->transferMsgQueue); 
 
  00050	11a00003	 movne       r0, r3 
  00054	1b000000	 blne        CloseHandle 
 
; 243  : 		} 
; 244  : 		if (pSpiDevExt->WriteOperation) 
 
  00058	e5943048	 ldr         r3, [r4, #0x48] 
  0005c	e3530000	 cmp         r3, #0 
 
; 245  : 		{ 
; 246  : 			CloseHandle(pSpiDevExt->WriteOperation); 
 
  00060	11a00003	 movne       r0, r3 
  00064	1b000000	 blne        CloseHandle 
 
; 247  : 		} 
; 248  :  
; 249  : 		if (pSpiDevExt->dev.rxbuf) 
 
  00068	e5943010	 ldr         r3, [r4, #0x10] 
  0006c	e3530000	 cmp         r3, #0 
 
; 250  : 		{ 
; 251  : 			LocalFree(pSpiDevExt->dev.rxbuf); 
 
  00070	11a00003	 movne       r0, r3 
  00074	1b000000	 blne        LocalFree 
 
; 252  : 		} 
; 253  : 		if (pSpiDevExt->phyDrv) 
 
  00078	e5943054	 ldr         r3, [r4, #0x54] 
  0007c	e3a05000	 mov         r5, #0 
  00080	e3530000	 cmp         r3, #0 
  00084	0a000002	 beq         |$L38482| 
 
; 254  : 		{ 
; 255  : 			smsspiphy_deinit(pSpiDevExt->phyDrv); 
 
  00088	e1a00003	 mov         r0, r3 
  0008c	eb000000	 bl          smsspiphy_deinit 
 
; 256  : 			pSpiDevExt->phyDrv = NULL; 
 
  00090	e5845054	 str         r5, [r4, #0x54] 
  00094		 |$L38482| 
 
; 257  : 		} 
; 258  : 		if (pSpiDevExt->txbuf) 
 
  00094	e5943040	 ldr         r3, [r4, #0x40] 
  00098	e1b0e003	 movs        lr, r3 
 
; 259  : 		{ 
; 260  : 			PHYSICAL_ADDRESS phyAddr; 
; 261  : 			phyAddr.QuadPart = pSpiDevExt->txbuf_phy_addr; 
 
  0009c	15942044	 ldrne       r2, [r4, #0x44] 
  000a0	13a03000	 movne       r3, #0 
 
; 262  : 			HalFreeCommonBuffer(&adapter, TX_BUF_SIZE, phyAddr, pSpiDevExt->txbuf, FALSE); 
 
  000a4	13a01c02	 movne       r1, #2, 24 
  000a8	128d0008	 addne       r0, sp, #8 
  000ac	158d5004	 strne       r5, [sp, #4] 
  000b0	158de000	 strne       lr, [sp] 
  000b4	1b000000	 blne        HalFreeCommonBuffer 
 
; 263  : 		} 
; 264  : 		LocalFree(pSpiDevExt); 
 
  000b8	e1a00004	 mov         r0, r4 
  000bc	eb000000	 bl          LocalFree 
  000c0		 |$L38474| 
 
; 265  : 		pSpiDevExt = NULL; 
; 266  : 	} 
; 267  : } 
 
  000c0	e28dd014	 add         sp, sp, #0x14 
  000c4	e8bd4030	 ldmia       sp!, {r4, r5, lr} 
  000c8	e12fff1e	 bx          lr 
  000cc		 |$M38904| 
 
			 ENDP  ; |FreeAllocatedResources| 
 
	EXPORT	|??_C@_1IK@EOBAPHCE@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1GG@LOGBBJNB@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| [ DATA ] ; `string' 
	EXPORT	|??_C@_17KACEIPNC@?$AAK?$AAe?$AAy?$AA?$AA@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1GO@DOKPPNLL@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1BG@IDJMGAAE@?$AAn?$AAo?$AAv?$AAa?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?$AA@| [ DATA ] ; `string' 
	IMPORT	|LocalAlloc| 
 
  00000			 AREA	 |.text| { |GetRegistrySettings| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$GetRegistrySettings|, PDATA, SELECTION=5, ASSOC=|.text| { |GetRegistrySettings| } ; comdat associative 
|$T38935| DCD	|$L38934| 
	DCD	0x40006502 
 
  00000			 AREA	 |.rdata| { |??_C@_1BG@IDJMGAAE@?$AAn?$AAo?$AAv?$AAa?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1BG@IDJMGAAE@?$AAn?$AAo?$AAv?$AAa?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?$AA@| DCB "n" 
	DCB	0x0, "o", 0x0, "v", 0x0, "a", 0x0, "D", 0x0, "e", 0x0, "v" 
	DCB	0x0, "i", 0x0, "c", 0x0, "e", 0x0, 0x0, 0x0 ; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1GO@DOKPPNLL@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1GO@DOKPPNLL@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| DCB "S" 
	DCB	0x0, "i", 0x0, "a", 0x0, "n", 0x0, "o", 0x0, " ", 0x0, "S" 
	DCB	0x0, "P", 0x0, "I", 0x0, " ", 0x0, "-", 0x0, " ", 0x0, "E" 
	DCB	0x0, "R", 0x0, "R", 0x0, "O", 0x0, "R", 0x0, "!", 0x0, "!" 
	DCB	0x0, " ", 0x0, "C", 0x0, "o", 0x0, "u", 0x0, "l", 0x0, "d" 
	DCB	0x0, " ", 0x0, "n", 0x0, "o", 0x0, "t", 0x0, " ", 0x0, "g" 
	DCB	0x0, "e", 0x0, "t", 0x0, " ", 0x0, "r", 0x0, "e", 0x0, "g" 
	DCB	0x0, "i", 0x0, "s", 0x0, "t", 0x0, "r", 0x0, "y", 0x0, " " 
	DCB	0x0, "k", 0x0, "e", 0x0, "y", 0x0, " ", 0x0, "n", 0x0, "a" 
	DCB	0x0, "m", 0x0, "e", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0 
	DCB	0x0					; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_17KACEIPNC@?$AAK?$AAe?$AAy?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_17KACEIPNC@?$AAK?$AAe?$AAy?$AA?$AA@| DCB "K", 0x0, "e", 0x0, "y", 0x0 
	DCB	0x0, 0x0				; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1GG@LOGBBJNB@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1GG@LOGBBJNB@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| DCB "S" 
	DCB	0x0, "i", 0x0, "a", 0x0, "n", 0x0, "o", 0x0, " ", 0x0, "S" 
	DCB	0x0, "P", 0x0, "I", 0x0, " ", 0x0, "-", 0x0, " ", 0x0, "E" 
	DCB	0x0, "R", 0x0, "R", 0x0, "O", 0x0, "R", 0x0, "!", 0x0, "!" 
	DCB	0x0, " ", 0x0, "C", 0x0, "o", 0x0, "u", 0x0, "l", 0x0, "d" 
	DCB	0x0, " ", 0x0, "n", 0x0, "o", 0x0, "t", 0x0, " ", 0x0, "o" 
	DCB	0x0, "p", 0x0, "e", 0x0, "n", 0x0, " ", 0x0, "r", 0x0, "e" 
	DCB	0x0, "g", 0x0, "i", 0x0, "s", 0x0, "t", 0x0, "r", 0x0, "y" 
	DCB	0x0, " ", 0x0, "k", 0x0, "e", 0x0, "y", 0x0, ".", 0x0, 0xd 
	DCB	0x0, 0xa, 0x0, 0x0, 0x0			; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1IK@EOBAPHCE@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1IK@EOBAPHCE@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| DCB "S" 
	DCB	0x0, "i", 0x0, "a", 0x0, "n", 0x0, "o", 0x0, " ", 0x0, "S" 
	DCB	0x0, "P", 0x0, "I", 0x0, " ", 0x0, "-", 0x0, " ", 0x0, "E" 
	DCB	0x0, "R", 0x0, "R", 0x0, "O", 0x0, "R", 0x0, "!", 0x0, "!" 
	DCB	0x0, " ", 0x0, "A", 0x0, "l", 0x0, "l", 0x0, "o", 0x0, "c" 
	DCB	0x0, "a", 0x0, "t", 0x0, "i", 0x0, "n", 0x0, "g", 0x0, " " 
	DCB	0x0, "m", 0x0, "e", 0x0, "m", 0x0, "o", 0x0, "r", 0x0, "y" 
	DCB	0x0, " ", 0x0, "f", 0x0, "o", 0x0, "r", 0x0, " ", 0x0, "r" 
	DCB	0x0, "e", 0x0, "g", 0x0, "i", 0x0, "s", 0x0, "t", 0x0, "r" 
	DCB	0x0, "y", 0x0, " ", 0x0, "r", 0x0, "e", 0x0, "a", 0x0, "d" 
	DCB	0x0, "i", 0x0, "n", 0x0, "g", 0x0, " ", 0x0, "f", 0x0, "a" 
	DCB	0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d", 0x0, ".", 0x0, 0xd 
	DCB	0x0, 0xa, 0x0, 0x0, 0x0			; `string' 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |GetRegistrySettings| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |GetRegistrySettings| PROC 
 
; 272  : { 
 
  00000		 |$L38934| 
  00000	e92d40f0	 stmdb       sp!, {r4 - r7, lr} 
  00004	e24dd014	 sub         sp, sp, #0x14 
  00008		 |$M38932| 
  00008	e1a05001	 mov         r5, r1 
  0000c	e1a04000	 mov         r4, r0 
 
; 273  : 	TCHAR*	regKey; 
; 274  : 	BOOL	st; 
; 275  : 	HKEY	hKey; 
; 276  : 	DWORD	dataSize, type; 
; 277  : 	regKey = (TCHAR *)LocalAlloc (LPTR, MAX_REG_KEY_SIZE); 
 
  00010	e3a01064	 mov         r1, #0x64 
  00014	e3a00040	 mov         r0, #0x40 
  00018	eb000000	 bl          LocalAlloc 
  0001c	e1b06000	 movs        r6, r0 
 
; 278  : 	if (regKey == NULL) 
 
  00020	1a000006	 bne         |$L38500| 
 
; 279  : 	{ 
; 280  : 		DBGMSG( ZONE_ERROR,(TEXT("Siano SPI - ERROR!! Allocating memory for registry reading failed.\r\n"))); 
 
  00024	e59f3154	 ldr         r3, [pc, #0x154] 
  00028	e5933440	 ldr         r3, [r3, #0x440] 
  0002c	e3130001	 tst         r3, #1 
  00030	159f0158	 ldrne       r0, [pc, #0x158] 
  00034	1b000000	 blne        NKDbgPrintfW 
 
; 281  : 		return FALSE; 
 
  00038	e3a04000	 mov         r4, #0 
  0003c	ea00004a	 b           |$L38492| 
  00040		 |$L38500| 
 
; 282  : 	} 
; 283  :  
; 284  :  
; 285  : 	st = RegOpenKeyEx(HKEY_LOCAL_MACHINE, (LPCWSTR)Context, 0, 0, &hKey);						 
 
  00040	e28d3008	 add         r3, sp, #8 
  00044	e58d3000	 str         r3, [sp] 
  00048	e3a03000	 mov         r3, #0 
  0004c	e3a02000	 mov         r2, #0 
  00050	e1a01004	 mov         r1, r4 
  00054	e3a0010a	 mov         r0, #0xA, 2 
  00058	eb000000	 bl          RegOpenKeyExW 
  0005c	e3500000	 cmp         r0, #0 
 
; 286  : 	if(st != ERROR_SUCCESS) 
 
  00060	0a000007	 beq         |$L38505| 
  00064		 |$L38931| 
 
; 287  : 	{ 
; 288  : 		DBGMSG( ZONE_ERROR,(TEXT("Siano SPI - ERROR!! Could not open registry key.\r\n"))); 
 
  00064	e59f3114	 ldr         r3, [pc, #0x114] 
  00068	e5933440	 ldr         r3, [r3, #0x440] 
  0006c	e3130001	 tst         r3, #1 
  00070	0a000001	 beq         |$L38912| 
  00074	e59f0110	 ldr         r0, [pc, #0x110] 
  00078		 |$L38930| 
  00078	eb000000	 bl          NKDbgPrintfW 
  0007c		 |$L38912| 
  0007c	e3a04000	 mov         r4, #0 
  00080	ea000037	 b           |$L38920| 
  00084		 |$L38505| 
 
; 289  : 		LocalFree(regKey); 
; 290  : 		return (FALSE); 
; 291  : 	} 
; 292  :  
; 293  : 	dataSize=MAX_REG_KEY_SIZE; 
; 294  : 	st = RegQueryValueEx(	hKey,  
; 295  : 							TEXT("Key"),  
; 296  : 							NULL, 
; 297  : 							&type,  
; 298  : 							(LPBYTE)regKey,  
; 299  : 							&dataSize); 
 
  00084	e59f10fc	 ldr         r1, [pc, #0xFC] 
  00088	e59d0008	 ldr         r0, [sp, #8] 
  0008c	e3a04064	 mov         r4, #0x64 
  00090	e28de00c	 add         lr, sp, #0xC 
  00094	e28d3010	 add         r3, sp, #0x10 
  00098	e3a02000	 mov         r2, #0 
  0009c	e58d400c	 str         r4, [sp, #0xC] 
  000a0	e58de004	 str         lr, [sp, #4] 
  000a4	e58d6000	 str         r6, [sp] 
  000a8	eb000000	 bl          RegQueryValueExW 
  000ac	e1a04000	 mov         r4, r0 
 
; 300  : 	 
; 301  : 	RegCloseKey(hKey); 
 
  000b0	e59d0008	 ldr         r0, [sp, #8] 
  000b4	eb000000	 bl          RegCloseKey 
 
; 302  : 	if(st!=ERROR_SUCCESS)	 
 
  000b8	e3540000	 cmp         r4, #0 
  000bc	0a000005	 beq         |$L38510| 
 
; 303  : 	{ 
; 304  : 		DBGMSG( ZONE_ERROR,(TEXT("Siano SPI - ERROR!! Could not get registry key name.\r\n"))); 
 
  000c0	e59f30b8	 ldr         r3, [pc, #0xB8] 
  000c4	e5933440	 ldr         r3, [r3, #0x440] 
  000c8	e3130001	 tst         r3, #1 
  000cc	0affffea	 beq         |$L38912| 
  000d0	e59f00a4	 ldr         r0, [pc, #0xA4] 
  000d4	eaffffe7	 b           |$L38930| 
  000d8		 |$L38510| 
 
; 305  : 		LocalFree(regKey); 
; 306  : 		return (FALSE); 
; 307  : 	} 
; 308  : 	 
; 309  : 	// Now - read all the needed parameters for the driver from the registry. 
; 310  :  
; 311  :  
; 312  : 	st = RegOpenKeyEx(HKEY_LOCAL_MACHINE, regKey, 0, 0, &hKey); 
 
  000d8	e28d3008	 add         r3, sp, #8 
  000dc	e58d3000	 str         r3, [sp] 
  000e0	e3a03000	 mov         r3, #0 
  000e4	e3a02000	 mov         r2, #0 
  000e8	e1a01006	 mov         r1, r6 
  000ec	e3a0010a	 mov         r0, #0xA, 2 
  000f0	eb000000	 bl          RegOpenKeyExW 
  000f4	e3500000	 cmp         r0, #0 
  000f8	1affffd9	 bne         |$L38931| 
 
; 313  : 	if(st != ERROR_SUCCESS) 
; 314  : 	{ 
; 315  : 		DBGMSG( ZONE_ERROR,(TEXT("Siano SPI - ERROR!! Could not open registry key.\r\n"))); 
; 316  : 		LocalFree(regKey); 
; 317  : 		return (FALSE); 
; 318  : 	} 
; 319  :  
; 320  :  
; 321  :  
; 322  : 	dataSize = sizeof(pSpiDevExt->novaDevice); 
; 323  : 	st = RegQueryValueEx( hKey,  
; 324  : 					  L"novaDevice",  
; 325  : 					  0,  
; 326  : 					  &type,  
; 327  : 					  (LPBYTE)&pSpiDevExt->novaDevice,  
; 328  : 					  &dataSize); 
 
  000fc	e59f1080	 ldr         r1, [pc, #0x80] 
  00100	e59d0008	 ldr         r0, [sp, #8] 
  00104	e3a07004	 mov         r7, #4 
  00108	e28de00c	 add         lr, sp, #0xC 
  0010c	e2854060	 add         r4, r5, #0x60 
  00110	e28d3010	 add         r3, sp, #0x10 
  00114	e3a02000	 mov         r2, #0 
  00118	e58d700c	 str         r7, [sp, #0xC] 
  0011c	e58de004	 str         lr, [sp, #4] 
  00120	e58d4000	 str         r4, [sp] 
  00124	eb000000	 bl          RegQueryValueExW 
  00128	e3500000	 cmp         r0, #0 
 
; 329  :  
; 330  : 	if(st != ERROR_SUCCESS) 
; 331  : 	{ //Set default value if registry entry is not found. 
; 332  : 		pSpiDevExt->novaDevice = FALSE; 
; 333  : 	} 
; 334  :  
; 335  : 	 
; 336  : 	st = RegCloseKey(hKey); 
 
  0012c	e59d0008	 ldr         r0, [sp, #8] 
  00130	e3a04000	 mov         r4, #0 
  00134	15854060	 strne       r4, [r5, #0x60] 
  00138	eb000000	 bl          RegCloseKey 
  0013c	e3500000	 cmp         r0, #0 
 
; 337  : 	if(st!=ERROR_SUCCESS)	 
 
  00140	0a000006	 beq         |$L38518| 
 
; 338  : 	{ 
; 339  : 		DBGMSG( ZONE_ERROR,(TEXT("Siano SPI - ERROR!! Could not get registry key name.\r\n"))); 
 
  00144	e59f3034	 ldr         r3, [pc, #0x34] 
  00148	e5933440	 ldr         r3, [r3, #0x440] 
  0014c	e3130001	 tst         r3, #1 
  00150	0a000003	 beq         |$L38920| 
  00154	e59f0020	 ldr         r0, [pc, #0x20] 
  00158	eb000000	 bl          NKDbgPrintfW 
  0015c	ea000000	 b           |$L38920| 
  00160		 |$L38518| 
  00160	e3a04001	 mov         r4, #1 
  00164		 |$L38920| 
 
; 340  : 		LocalFree(regKey); 
; 341  : 		return (FALSE); 
; 342  : 	} 
; 343  :  
; 344  : 	LocalFree(regKey); 
 
  00164	e1a00006	 mov         r0, r6 
  00168	eb000000	 bl          LocalFree 
 
; 345  : 	return (TRUE); 
 
  0016c		 |$L38492| 
 
; 281  : 		return FALSE; 
 
  0016c	e1a00004	 mov         r0, r4 
 
; 346  :  
; 347  : } 
 
  00170	e28dd014	 add         sp, sp, #0x14 
  00174	e8bd40f0	 ldmia       sp!, {r4 - r7, lr} 
  00178	e12fff1e	 bx          lr 
  0017c		 |$L38937| 
  0017c	00000000	 DCD         |??_C@_1GO@DOKPPNLL@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| 
  00180	00000000	 DCD         |dpCurSettings| 
  00184	00000000	 DCD         |??_C@_1BG@IDJMGAAE@?$AAn?$AAo?$AAv?$AAa?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?$AA@| 
  00188	00000000	 DCD         |??_C@_17KACEIPNC@?$AAK?$AAe?$AAy?$AA?$AA@| 
  0018c	00000000	 DCD         |??_C@_1GG@LOGBBJNB@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| 
  00190	00000000	 DCD         |??_C@_1IK@EOBAPHCE@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| 
  00194		 |$M38933| 
 
			 ENDP  ; |GetRegistrySettings| 
 
	EXPORT	|SPI_Init| 
	EXPORT	|??_C@_1DI@KKPKNNHG@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAS@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1HG@GJLBCNC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| [ DATA ] ; `string' 
	EXPORT	|??_C@_0P@NOOCNBDL@I2C?3?5v_pI2CReg?$AA@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1HG@BOIGLGC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1HM@GACDLBAD@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1GG@DJHEGEHP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1HA@MCAFDEAP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1HK@JOLIIND@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1IG@PCKFGJPM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1HK@DMNNACLP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAA@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1EA@FCMJOLGJ@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AAs?$AA?2?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?2?$AAS?$AAM?$AAS?$AA1?$AA0?$AA0@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1IA@JPGPNFKL@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAA@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1FK@FEKJBJKM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAl?$AAo@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1DE@COIBIHEA@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAE@| [ DATA ] ; `string' 
	IMPORT	|memset| 
	IMPORT	|ActivateDevice| 
	IMPORT	|CreateEventW| 
	IMPORT	|smsspicommon_init| 
	IMPORT	|smsspibus_xfer| 
	IMPORT	|smsspiphy_init| 
	IMPORT	|CreateThread| 
	IMPORT	|VirtualAllocCopy| 
	IMPORT	|GetLastError| 
	IMPORT	|CeSetThreadPriority| 
 
  00000			 AREA	 |.text| { |SPI_Init| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$SPI_Init|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_Init| } ; comdat associative 
|$T38974| DCD	|$L38973| 
	DCD	0x4000d102 
 
  00000			 AREA	 |.rdata| { |??_C@_1FK@FEKJBJKM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAl?$AAo@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1FK@FEKJBJKM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAl?$AAo@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "F", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e" 
	DCB	0x0, "d", 0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "l" 
	DCB	0x0, "o", 0x0, "a", 0x0, "d", 0x0, " ", 0x0, "S", 0x0, "m" 
	DCB	0x0, "s", 0x0, "G", 0x0, "e", 0x0, "n", 0x0, "D", 0x0, "r" 
	DCB	0x0, "v", 0x0, ".", 0x0, " ", 0x0, "E", 0x0, "r", 0x0, "r" 
	DCB	0x0, "o", 0x0, "r", 0x0, " ", 0x0, "%", 0x0, "d", 0x0, 0xd 
	DCB	0x0, 0xa, 0x0, 0x0, 0x0			; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1DE@COIBIHEA@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAE@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1DE@COIBIHEA@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAE@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I" 
	DCB	0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " " 
	DCB	0x0, "E", 0x0, "n", 0x0, "d", 0x0, ".", 0x0, 0xd, 0x0, 0xa 
	DCB	0x0, 0x0, 0x0				; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1IA@JPGPNFKL@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAA@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1IA@JPGPNFKL@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAA@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I" 
	DCB	0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " " 
	DCB	0x0, "A", 0x0, "c", 0x0, "t", 0x0, "i", 0x0, "v", 0x0, "a" 
	DCB	0x0, "t", 0x0, "i", 0x0, "n", 0x0, "g", 0x0, " ", 0x0, "G" 
	DCB	0x0, "e", 0x0, "n", 0x0, " ", 0x0, "d", 0x0, "r", 0x0, "i" 
	DCB	0x0, "v", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "w", 0x0, "i" 
	DCB	0x0, "t", 0x0, "h", 0x0, " ", 0x0, "S", 0x0, "t", 0x0, "e" 
	DCB	0x0, "l", 0x0, "l", 0x0, "a", 0x0, "r", 0x0, " ", 0x0, "d" 
	DCB	0x0, "e", 0x0, "v", 0x0, "i", 0x0, "c", 0x0, "e", 0x0, "." 
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1EA@FCMJOLGJ@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AAs?$AA?2?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?2?$AAS?$AAM?$AAS?$AA1?$AA0?$AA0@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1EA@FCMJOLGJ@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AAs?$AA?2?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?2?$AAS?$AAM?$AAS?$AA1?$AA0?$AA0@| DCB "D" 
	DCB	0x0, "r", 0x0, "i", 0x0, "v", 0x0, "e", 0x0, "r", 0x0, "s" 
	DCB	0x0, "\\", 0x0, "S", 0x0, "i", 0x0, "a", 0x0, "n", 0x0, "o" 
	DCB	0x0, "\\", 0x0, "S", 0x0, "M", 0x0, "S", 0x0, "1", 0x0, "0" 
	DCB	0x0, "0", 0x0, "0", 0x0, "\\", 0x0, "S", 0x0, "m", 0x0, "s" 
	DCB	0x0, "G", 0x0, "e", 0x0, "n", 0x0, "D", 0x0, "r", 0x0, "v" 
	DCB	0x0, 0x0, 0x0				; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1HK@DMNNACLP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAA@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1HK@DMNNACLP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAA@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I" 
	DCB	0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " " 
	DCB	0x0, "A", 0x0, "c", 0x0, "t", 0x0, "i", 0x0, "v", 0x0, "a" 
	DCB	0x0, "t", 0x0, "i", 0x0, "n", 0x0, "g", 0x0, " ", 0x0, "G" 
	DCB	0x0, "e", 0x0, "n", 0x0, " ", 0x0, "d", 0x0, "r", 0x0, "i" 
	DCB	0x0, "v", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "w", 0x0, "i" 
	DCB	0x0, "t", 0x0, "h", 0x0, " ", 0x0, "N", 0x0, "a", 0x0, "v" 
	DCB	0x0, "a", 0x0, " ", 0x0, "d", 0x0, "e", 0x0, "v", 0x0, "i" 
	DCB	0x0, "c", 0x0, "e", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0 
	DCB	0x0					; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1IG@PCKFGJPM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1IG@PCKFGJPM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I" 
	DCB	0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " " 
	DCB	0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d" 
	DCB	0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "s", 0x0, "e" 
	DCB	0x0, "t", 0x0, " ", 0x0, "t", 0x0, "r", 0x0, "a", 0x0, "n" 
	DCB	0x0, "s", 0x0, "f", 0x0, "e", 0x0, "r", 0x0, "T", 0x0, "h" 
	DCB	0x0, "r", 0x0, "e", 0x0, "a", 0x0, "d", 0x0, " ", 0x0, "t" 
	DCB	0x0, "h", 0x0, "r", 0x0, "e", 0x0, "a", 0x0, "d", 0x0, " " 
	DCB	0x0, "p", 0x0, "r", 0x0, "i", 0x0, "o", 0x0, "r", 0x0, "i" 
	DCB	0x0, "t", 0x0, "y", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0 
	DCB	0x0					; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1HK@JOLIIND@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1HK@JOLIIND@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I" 
	DCB	0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " " 
	DCB	0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d" 
	DCB	0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "c", 0x0, "r" 
	DCB	0x0, "e", 0x0, "a", 0x0, "t", 0x0, "e", 0x0, " ", 0x0, "t" 
	DCB	0x0, "r", 0x0, "a", 0x0, "n", 0x0, "s", 0x0, "f", 0x0, "e" 
	DCB	0x0, "r", 0x0, "T", 0x0, "h", 0x0, "r", 0x0, "e", 0x0, "a" 
	DCB	0x0, "d", 0x0, " ", 0x0, "t", 0x0, "h", 0x0, "r", 0x0, "e" 
	DCB	0x0, "a", 0x0, "d", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0 
	DCB	0x0					; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1HA@MCAFDEAP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1HA@MCAFDEAP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I" 
	DCB	0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " " 
	DCB	0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d" 
	DCB	0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "c", 0x0, "r" 
	DCB	0x0, "e", 0x0, "a", 0x0, "t", 0x0, "e", 0x0, " ", 0x0, "t" 
	DCB	0x0, "r", 0x0, "a", 0x0, "n", 0x0, "s", 0x0, "f", 0x0, "e" 
	DCB	0x0, "r", 0x0, "M", 0x0, "s", 0x0, "g", 0x0, "Q", 0x0, "u" 
	DCB	0x0, "e", 0x0, "u", 0x0, "e", 0x0, ".", 0x0, 0xd, 0x0, 0xa 
	DCB	0x0, 0x0, 0x0				; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1GG@DJHEGEHP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1GG@DJHEGEHP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I" 
	DCB	0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " " 
	DCB	0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d" 
	DCB	0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "c", 0x0, "r" 
	DCB	0x0, "e", 0x0, "a", 0x0, "t", 0x0, "e", 0x0, " ", 0x0, "W" 
	DCB	0x0, "r", 0x0, "i", 0x0, "t", 0x0, "e", 0x0, " ", 0x0, "e" 
	DCB	0x0, "v", 0x0, "e", 0x0, "n", 0x0, "t", 0x0, ".", 0x0, 0xd 
	DCB	0x0, 0xa, 0x0, 0x0, 0x0			; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1HM@GACDLBAD@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1HM@GACDLBAD@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I" 
	DCB	0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " " 
	DCB	0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d" 
	DCB	0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "a", 0x0, "l" 
	DCB	0x0, "l", 0x0, "o", 0x0, "c", 0x0, "a", 0x0, "t", 0x0, "e" 
	DCB	0x0, " ", 0x0, "m", 0x0, "e", 0x0, "m", 0x0, "o", 0x0, "r" 
	DCB	0x0, "y", 0x0, " ", 0x0, "f", 0x0, "o", 0x0, "r", 0x0, " " 
	DCB	0x0, "R", 0x0, "X", 0x0, " ", 0x0, "b", 0x0, "u", 0x0, "f" 
	DCB	0x0, "f", 0x0, "e", 0x0, "r", 0x0, ".", 0x0, 0xd, 0x0, 0xa 
	DCB	0x0, 0x0, 0x0				; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1HG@BOIGLGC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1HG@BOIGLGC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I" 
	DCB	0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " " 
	DCB	0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d" 
	DCB	0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "i", 0x0, "n" 
	DCB	0x0, "i", 0x0, "t", 0x0, "i", 0x0, "a", 0x0, "l", 0x0, "i" 
	DCB	0x0, "z", 0x0, "e", 0x0, " ", 0x0, "p", 0x0, "h", 0x0, "y" 
	DCB	0x0, "s", 0x0, "i", 0x0, "c", 0x0, "a", 0x0, "l", 0x0, " " 
	DCB	0x0, "d", 0x0, "r", 0x0, "i", 0x0, "v", 0x0, "e", 0x0, "r" 
	DCB	0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_0P@NOOCNBDL@I2C?3?5v_pI2CReg?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_0P@NOOCNBDL@I2C?3?5v_pI2CReg?$AA@| DCB "I2C: v_pI2CReg", 0x0 ; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1HG@GJLBCNC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1HG@GJLBCNC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I" 
	DCB	0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " " 
	DCB	0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d" 
	DCB	0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "a", 0x0, "l" 
	DCB	0x0, "l", 0x0, "o", 0x0, "c", 0x0, "a", 0x0, "t", 0x0, "e" 
	DCB	0x0, " ", 0x0, "m", 0x0, "e", 0x0, "m", 0x0, "o", 0x0, "r" 
	DCB	0x0, "y", 0x0, " ", 0x0, "f", 0x0, "o", 0x0, "r", 0x0, " " 
	DCB	0x0, "h", 0x0, "a", 0x0, "n", 0x0, "d", 0x0, "l", 0x0, "e" 
	DCB	0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1DI@KKPKNNHG@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAS@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1DI@KKPKNNHG@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAS@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I" 
	DCB	0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " " 
	DCB	0x0, "S", 0x0, "t", 0x0, "a", 0x0, "r", 0x0, "t", 0x0, "." 
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string' 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |SPI_Init| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |SPI_Init| PROC 
 
; 364  : { 
 
  00000		 |$L38973| 
  00000	e92d43f0	 stmdb       sp!, {r4 - r9, lr} 
  00004	e24dd00c	 sub         sp, sp, #0xC 
  00008		 |$M38971| 
  00008	e1a07000	 mov         r7, r0 
 
; 365  :  
; 366  : 	DWORD Res = 0; 
; 367  : 	//DMA_ADAPTER_OBJECT adapter; 
; 368  : 	MSGQUEUEOPTIONS	msgOptions; 
; 369  : 	//PHYSICAL_ADDRESS phyAddr; 
; 370  : 	PSPIDEVICEEXTENSION pSpiDevExt = (PSPIDEVICEEXTENSION)LocalAlloc(LPTR,sizeof(SPIDEVICEEXTENSION)); 
 
  0000c	e3a0106c	 mov         r1, #0x6C 
  00010	e3a00040	 mov         r0, #0x40 
  00014	eb000000	 bl          LocalAlloc 
 
; 371  : 	 
; 372  : 	DBGMSG(ZONE_INIT, (TEXT("SmsSpi: SPI_Init() Start.\r\n"))); 
 
  00018	e59f6320	 ldr         r6, [pc, #0x320] 
  0001c	e1a05000	 mov         r5, r0 
  00020	e5963448	 ldr         r3, [r6, #0x448] 
  00024	e3130004	 tst         r3, #4 
  00028	0a000002	 beq         |$L38940| 
  0002c	e59f0308	 ldr         r0, [pc, #0x308] 
  00030	eb000000	 bl          NKDbgPrintfW 
  00034	e5963448	 ldr         r3, [r6, #0x448] 
  00038		 |$L38940| 
 
; 373  : 	if(pSpiDevExt == NULL) 
 
  00038	e3550000	 cmp         r5, #0 
  0003c	1a000004	 bne         |$L38537| 
 
; 374  : 	{ 
; 375  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to allocate memory for handle.\r\n"))); 
 
  00040	e3130005	 tst         r3, #5 
  00044	0a0000a6	 beq         |$L38942| 
  00048	e59f02e8	 ldr         r0, [pc, #0x2E8] 
  0004c	eb000000	 bl          NKDbgPrintfW 
 
; 376  : 		return 0; 
 
  00050	ea0000a3	 b           |$L38942| 
  00054		 |$L38537| 
 
; 377  : 	} 
; 378  : 	memset (pSpiDevExt, 0, sizeof(SPIDEVICEEXTENSION)); 
 
  00054	e3a0206c	 mov         r2, #0x6C 
  00058	e3a01000	 mov         r1, #0 
  0005c	e1a00005	 mov         r0, r5 
  00060	eb000000	 bl          memset 
 
; 379  :  
; 380  : 	//Init the hw: 
; 381  : 	 
; 382  : 	pSpiDevExt->txbuf = (char *)VirtualAllocCopy(0x2000, "I2C: v_pI2CReg", (PVOID)(IM_STORAGE_BASE_U_VIRTUAL + 0x4000)); 
 
  00064	e59f12c8	 ldr         r1, [pc, #0x2C8] 
  00068	e3a02329	 mov         r2, #0x29, 6 
  0006c	e3822901	 orr         r2, r2, #1, 18 
  00070	e3a00a02	 mov         r0, #2, 20 
  00074	eb000000	 bl          VirtualAllocCopy 
  00078	e1a02000	 mov         r2, r0 
 
; 383  : 	pSpiDevExt->txbuf_phy_addr = (unsigned long)(IM_STORAGE_BASE_PHYSICAL + 0x4000); 
 
  0007c	e3a0e317	 mov         lr, #0x17, 6 
 
; 384  :  
; 385  : 	pSpiDevExt->rxbuf = (char *)(pSpiDevExt->txbuf + 0x1000); 
; 386  : 	pSpiDevExt->rxbuf_phy_addr = (unsigned long)pSpiDevExt->txbuf_phy_addr + 0x1000; 
 
  00080	e3a04317	 mov         r4, #0x17, 6 
  00084	e38ee901	 orr         lr, lr, #1, 18 
  00088	e2823a01	 add         r3, r2, #1, 20 
  0008c	e3844a05	 orr         r4, r4, #5, 20 
 
; 387  : /* 
; 388  : 	pSpiDevExt->txbuf = HalAllocateCommonBuffer(&adapter, TX_BUF_SIZE, &phyAddr, FALSE); 
; 389  : 	pSpiDevExt->txbuf_phy_addr = phyAddr.LowPart; 
; 390  : 	pSpiDevExt->rxbuf = HalAllocateCommonBuffer(&adapter, RX_BUF_SIZE, &phyAddr, FALSE); 
; 391  : 	pSpiDevExt->rxbuf_phy_addr = phyAddr.LowPart; 
; 392  : */ 
; 393  : 	pSpiDevExt->PaddingAllowed = 1; 
 
  00090	e3a08001	 mov         r8, #1 
 
; 394  : 	pSpiDevExt->pBD_ReadCBFunc = NULL; 
 
  00094	e3a09000	 mov         r9, #0 
 
; 395  :  
; 396  : 	GetRegistrySettings(Context, pSpiDevExt); 
 
  00098	e1a01005	 mov         r1, r5 
  0009c	e1a00007	 mov         r0, r7 
  000a0	e5853038	 str         r3, [r5, #0x38] 
  000a4	e585e044	 str         lr, [r5, #0x44] 
  000a8	e5852040	 str         r2, [r5, #0x40] 
  000ac	e585403c	 str         r4, [r5, #0x3C] 
  000b0	e5858034	 str         r8, [r5, #0x34] 
  000b4	e585905c	 str         r9, [r5, #0x5C] 
  000b8	eb000000	 bl          GetRegistrySettings 
 
; 397  : 	pSpiDevExt->phyDrv = smsspiphy_init(Context, smsspi_interruptHandler, pSpiDevExt); 
 
  000bc	e59f126c	 ldr         r1, [pc, #0x26C] 
  000c0	e1a02005	 mov         r2, r5 
  000c4	e1a00007	 mov         r0, r7 
  000c8	eb000000	 bl          smsspiphy_init 
  000cc	e3500000	 cmp         r0, #0 
  000d0	e5850054	 str         r0, [r5, #0x54] 
 
; 398  : 	if (pSpiDevExt->phyDrv == NULL) 
 
  000d4	1a000005	 bne         |$L38548| 
 
; 399  : 	{ 
; 400  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to initialize physical driver.\r\n"))); 
 
  000d8	e5963448	 ldr         r3, [r6, #0x448] 
  000dc	e3130005	 tst         r3, #5 
  000e0	0a00007d	 beq         |$L38960| 
  000e4	e59f0240	 ldr         r0, [pc, #0x240] 
 
; 447  : 	{ 
; 448  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to set transferThread thread priority.\r\n"))); 
 
  000e8	eb000000	 bl          NKDbgPrintfW 
 
; 449  : 		FreeAllocatedResources(pSpiDevExt); 
; 450  : 		return 0; 
 
  000ec	ea00007a	 b           |$L38960| 
  000f0		 |$L38548| 
 
; 401  : 		FreeAllocatedResources(pSpiDevExt); 
; 402  : 		return 0; 
; 403  : 	} 
; 404  : 	pSpiDevExt->dev.rxbuf = LocalAlloc(LPTR, RX_BUF_SIZE); 
 
  000f0	e3a01a01	 mov         r1, #1, 20 
  000f4	e3a00040	 mov         r0, #0x40 
  000f8	eb000000	 bl          LocalAlloc 
  000fc	e3500000	 cmp         r0, #0 
  00100	e5850010	 str         r0, [r5, #0x10] 
 
; 405  : 	if (pSpiDevExt->dev.rxbuf == NULL) 
 
  00104	1a000005	 bne         |$L38551| 
 
; 406  : 	{ 
; 407  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to allocate memory for RX buffer.\r\n"))); 
 
  00108	e5963448	 ldr         r3, [r6, #0x448] 
  0010c	e3130005	 tst         r3, #5 
  00110	0a000071	 beq         |$L38960| 
  00114	e59f020c	 ldr         r0, [pc, #0x20C] 
 
; 447  : 	{ 
; 448  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to set transferThread thread priority.\r\n"))); 
 
  00118	eb000000	 bl          NKDbgPrintfW 
 
; 449  : 		FreeAllocatedResources(pSpiDevExt); 
; 450  : 		return 0; 
 
  0011c	ea00006e	 b           |$L38960| 
  00120		 |$L38551| 
 
; 408  : 		FreeAllocatedResources(pSpiDevExt); 
; 409  : 		return 0; 
; 410  : 	} 
; 411  :  
; 412  : 	smsspicommon_init(&pSpiDevExt->dev, (PVOID)pSpiDevExt->rxbuf, pSpiDevExt->rxbuf_phy_addr, pSpiDevExt, pSpiDevExt->phyDrv, smsspibus_xfer, MsgFound); 
 
  00120	e59f31fc	 ldr         r3, [pc, #0x1FC] 
  00124	e59f01f4	 ldr         r0, [pc, #0x1F4] 
  00128	e595e054	 ldr         lr, [r5, #0x54] 
  0012c	e595203c	 ldr         r2, [r5, #0x3C] 
  00130	e5951038	 ldr         r1, [r5, #0x38] 
  00134	e58d3008	 str         r3, [sp, #8] 
  00138	e58d0004	 str         r0, [sp, #4] 
  0013c	e1a03005	 mov         r3, r5 
  00140	e1a00005	 mov         r0, r5 
  00144	e58de000	 str         lr, [sp] 
  00148	eb000000	 bl          smsspicommon_init 
 
; 413  : 	memcpy (pSpiDevExt->txbuf, preamble_pattern, sizeof(preamble_pattern)); 
 
  0014c	e5954040	 ldr         r4, [r5, #0x40] 
  00150	e5961000	 ldr         r1, [r6] 
 
; 414  : 	 
; 415  :  
; 416  :  
; 417  : 	pSpiDevExt->WriteOperation = CreateEvent(NULL, FALSE, FALSE, NULL); 
 
  00154	e3a03000	 mov         r3, #0 
  00158	e3a02000	 mov         r2, #0 
  0015c	e5c41000	 strb        r1, [r4] 
  00160	e596e000	 ldr         lr, [r6] 
  00164	e3a01000	 mov         r1, #0 
  00168	e3a00000	 mov         r0, #0 
  0016c	e1a0e42e	 mov         lr, lr, lsr #8 
  00170	e5c4e001	 strb        lr, [r4, #1] 
  00174	e596e000	 ldr         lr, [r6] 
  00178	e1a0e82e	 mov         lr, lr, lsr #16 
  0017c	e5c4e002	 strb        lr, [r4, #2] 
  00180	e596e000	 ldr         lr, [r6] 
  00184	e1a0ec2e	 mov         lr, lr, lsr #24 
  00188	e5c4e003	 strb        lr, [r4, #3] 
  0018c	eb000000	 bl          CreateEventW 
  00190	e3500000	 cmp         r0, #0 
  00194	e5850048	 str         r0, [r5, #0x48] 
 
; 418  : 	if (pSpiDevExt->WriteOperation == NULL) 
 
  00198	1a000005	 bne         |$L38557| 
 
; 419  : 	{ 
; 420  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to create Write event.\r\n"))); 
 
  0019c	e5963448	 ldr         r3, [r6, #0x448] 
  001a0	e3130005	 tst         r3, #5 
  001a4	0a00004c	 beq         |$L38960| 
  001a8	e59f016c	 ldr         r0, [pc, #0x16C] 
 
; 447  : 	{ 
; 448  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to set transferThread thread priority.\r\n"))); 
 
  001ac	eb000000	 bl          NKDbgPrintfW 
 
; 449  : 		FreeAllocatedResources(pSpiDevExt); 
; 450  : 		return 0; 
 
  001b0	ea000049	 b           |$L38960| 
  001b4		 |$L38557| 
 
; 421  : 		FreeAllocatedResources(pSpiDevExt); 
; 422  : 		return 0; 
; 423  : 	} 
; 424  :  
; 425  : 	msgOptions.dwSize = sizeof(msgOptions); 
; 426  : 	msgOptions.dwFlags = 0; 
; 427  : 	msgOptions.dwMaxMessages = 5; 
; 428  : 	msgOptions.cbMaxMessage = sizeof(struct spi_msg); 
; 429  : 	msgOptions.bReadAccess = TRUE; 
; 430  :  
; 431  : 	pSpiDevExt->transferMsgQueue = CreateEvent(NULL, FALSE, FALSE, NULL); 
 
  001b4	e3a03000	 mov         r3, #0 
  001b8	e3a02000	 mov         r2, #0 
  001bc	e3a01000	 mov         r1, #0 
  001c0	e3a00000	 mov         r0, #0 
  001c4	eb000000	 bl          CreateEventW 
  001c8	e3500000	 cmp         r0, #0 
  001cc	e585004c	 str         r0, [r5, #0x4C] 
 
; 432  : 	if (pSpiDevExt->transferMsgQueue == NULL) 
 
  001d0	1a000005	 bne         |$L38563| 
 
; 433  : 	{ 
; 434  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to create transferMsgQueue.\r\n"))); 
 
  001d4	e5963448	 ldr         r3, [r6, #0x448] 
  001d8	e3130005	 tst         r3, #5 
  001dc	0a00003e	 beq         |$L38960| 
  001e0	e59f0130	 ldr         r0, [pc, #0x130] 
 
; 447  : 	{ 
; 448  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to set transferThread thread priority.\r\n"))); 
 
  001e4	eb000000	 bl          NKDbgPrintfW 
 
; 449  : 		FreeAllocatedResources(pSpiDevExt); 
; 450  : 		return 0; 
 
  001e8	ea00003b	 b           |$L38960| 
  001ec		 |$L38563| 
 
; 435  : 		FreeAllocatedResources(pSpiDevExt); 
; 436  : 		return 0; 
; 437  : 	} 
; 438  :  
; 439  : 	pSpiDevExt->transferThread = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE)SpiTransferThread, pSpiDevExt, 0, NULL); 
 
  001ec	e59f2120	 ldr         r2, [pc, #0x120] 
  001f0	e1a03005	 mov         r3, r5 
  001f4	e3a01000	 mov         r1, #0 
  001f8	e3a00000	 mov         r0, #0 
  001fc	e58d9004	 str         r9, [sp, #4] 
  00200	e58d9000	 str         r9, [sp] 
  00204	eb000000	 bl          CreateThread 
  00208	e3500000	 cmp         r0, #0 
  0020c	e5850050	 str         r0, [r5, #0x50] 
 
; 440  : 	if (pSpiDevExt->transferThread == NULL) 
 
  00210	1a000005	 bne         |$L38569| 
 
; 441  : 	{ 
; 442  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to create transferThread thread.\r\n"))); 
 
  00214	e5963448	 ldr         r3, [r6, #0x448] 
  00218	e3130005	 tst         r3, #5 
  0021c	0a00002e	 beq         |$L38960| 
  00220	e59f00e8	 ldr         r0, [pc, #0xE8] 
 
; 447  : 	{ 
; 448  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to set transferThread thread priority.\r\n"))); 
 
  00224	eb000000	 bl          NKDbgPrintfW 
 
; 449  : 		FreeAllocatedResources(pSpiDevExt); 
; 450  : 		return 0; 
 
  00228	ea00002b	 b           |$L38960| 
  0022c		 |$L38569| 
 
; 443  : 		FreeAllocatedResources(pSpiDevExt); 
; 444  : 		return 0; 
; 445  : 	} 
; 446  : 	if (CeSetThreadPriority(pSpiDevExt->transferThread, 0) == FALSE) 
 
  0022c	e3a01000	 mov         r1, #0 
  00230	eb000000	 bl          CeSetThreadPriority 
  00234	e3500000	 cmp         r0, #0 
  00238	1a000005	 bne         |$L38571| 
 
; 447  : 	{ 
; 448  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to set transferThread thread priority.\r\n"))); 
 
  0023c	e5963448	 ldr         r3, [r6, #0x448] 
  00240	e3130005	 tst         r3, #5 
  00244	0a000024	 beq         |$L38960| 
  00248	e59f00bc	 ldr         r0, [pc, #0xBC] 
  0024c	eb000000	 bl          NKDbgPrintfW 
 
; 449  : 		FreeAllocatedResources(pSpiDevExt); 
; 450  : 		return 0; 
 
  00250	ea000021	 b           |$L38960| 
  00254		 |$L38571| 
 
; 451  : 	} 
; 452  :  
; 453  : 	if (pSpiDevExt->novaDevice) 
 
  00254	e5953060	 ldr         r3, [r5, #0x60] 
  00258	e3530000	 cmp         r3, #0 
 
; 454  : 	{ 
; 455  : 		DBGMSG(ZONE_INIT, (TEXT("SmsSpi: SPI_Init() Activating Gen driver with Nava device.\r\n"))); 
 
  0025c	e5963448	 ldr         r3, [r6, #0x448] 
  00260	0a000004	 beq         |$L38573| 
  00264	e3130004	 tst         r3, #4 
  00268	159f0098	 ldrne       r0, [pc, #0x98] 
  0026c	1b000000	 blne        NKDbgPrintfW 
 
; 456  : 		pSpiDevExt->hSmsGenDrv = ActivateDevice(SMS_GEN_DRIVER_REGISTRY_PATH,BD_TYPE_SPI_NOVA); 
 
  00270	e3a01006	 mov         r1, #6 
 
; 457  : 	} 
; 458  : 	else 
 
  00274	ea000003	 b           |$L38969| 
  00278		 |$L38573| 
 
; 459  : 	{ 
; 460  : 		DBGMSG(ZONE_INIT, (TEXT("SmsSpi: SPI_Init() Activating Gen driver with Stellar device.\r\n"))); 
 
  00278	e3130004	 tst         r3, #4 
  0027c	159f0080	 ldrne       r0, [pc, #0x80] 
  00280	1b000000	 blne        NKDbgPrintfW 
 
; 461  : 		pSpiDevExt->hSmsGenDrv = ActivateDevice(SMS_GEN_DRIVER_REGISTRY_PATH,BD_TYPE_SPI_STELLAR); 
 
  00284	e3a01001	 mov         r1, #1 
  00288		 |$L38969| 
  00288	e59f0070	 ldr         r0, [pc, #0x70] 
  0028c	eb000000	 bl          ActivateDevice 
 
; 462  : 	} 
; 463  : 	if (pSpiDevExt->hSmsGenDrv == NULL || pSpiDevExt->hSmsGenDrv == INVALID_HANDLE_VALUE) 
 
  00290	e1a03000	 mov         r3, r0 
  00294	e3530000	 cmp         r3, #0 
  00298	e5850058	 str         r0, [r5, #0x58] 
  0029c	0a000007	 beq         |$L38581| 
  002a0	e3730001	 cmn         r3, #1 
  002a4	0a000005	 beq         |$L38581| 
 
; 468  : 	} 
; 469  : 	 
; 470  : 	DBGMSG(ZONE_INIT, (TEXT("SmsSpi: SPI_Init() End.\r\n"))); 
 
  002a8	e5963448	 ldr         r3, [r6, #0x448] 
  002ac	e3130004	 tst         r3, #4 
  002b0	0a00000c	 beq         |$L38529| 
  002b4	e59f0040	 ldr         r0, [pc, #0x40] 
  002b8	eb000000	 bl          NKDbgPrintfW 
 
; 471  :  
; 472  : 	return (DWORD)pSpiDevExt; 
 
  002bc	ea000009	 b           |$L38529| 
  002c0		 |$L38581| 
 
; 464  : 	{ 
; 465  : 		DBGMSG(ZONE_ERROR, (TEXT("SmsSpi: Failed to load SmsGenDrv. Error %d\r\n"),GetLastError())); 
 
  002c0	e5963448	 ldr         r3, [r6, #0x448] 
  002c4	e3130001	 tst         r3, #1 
  002c8	0a000003	 beq         |$L38960| 
  002cc	eb000000	 bl          GetLastError 
  002d0	e1a01000	 mov         r1, r0 
  002d4	e59f001c	 ldr         r0, [pc, #0x1C] 
  002d8	eb000000	 bl          NKDbgPrintfW 
  002dc		 |$L38960| 
 
; 466  : 		FreeAllocatedResources(pSpiDevExt); 
 
  002dc	e1a00005	 mov         r0, r5 
  002e0	eb000000	 bl          FreeAllocatedResources 
  002e4		 |$L38942| 
 
; 467  : 		return 0; 
 
  002e4	e3a05000	 mov         r5, #0 
  002e8		 |$L38529| 
 
; 376  : 		return 0; 
 
  002e8	e1a00005	 mov         r0, r5 
 
; 473  : } 
 
  002ec	e28dd00c	 add         sp, sp, #0xC 
  002f0	e8bd43f0	 ldmia       sp!, {r4 - r9, lr} 
  002f4	e12fff1e	 bx          lr 
  002f8		 |$L38976| 
  002f8	00000000	 DCD         |??_C@_1FK@FEKJBJKM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAl?$AAo@| 
  002fc	00000000	 DCD         |??_C@_1DE@COIBIHEA@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAE@| 
  00300	00000000	 DCD         |??_C@_1EA@FCMJOLGJ@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AAs?$AA?2?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?2?$AAS?$AAM?$AAS?$AA1?$AA0?$AA0@| 
  00304	00000000	 DCD         |??_C@_1IA@JPGPNFKL@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAA@| 
  00308	00000000	 DCD         |??_C@_1HK@DMNNACLP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAA@| 
  0030c	00000000	 DCD         |??_C@_1IG@PCKFGJPM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| 
  00310	00000000	 DCD         |??_C@_1HK@JOLIIND@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| 
  00314	00000000	 DCD         |SpiTransferThread| 
  00318	00000000	 DCD         |??_C@_1HA@MCAFDEAP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| 
  0031c	00000000	 DCD         |??_C@_1GG@DJHEGEHP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| 
  00320	00000000	 DCD         |smsspibus_xfer| 
  00324	00000000	 DCD         |MsgFound| 
  00328	00000000	 DCD         |??_C@_1HM@GACDLBAD@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| 
  0032c	00000000	 DCD         |??_C@_1HG@BOIGLGC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| 
  00330	00000000	 DCD         |smsspi_interruptHandler| 
  00334	00000000	 DCD         |??_C@_0P@NOOCNBDL@I2C?3?5v_pI2CReg?$AA@| 
  00338	00000000	 DCD         |??_C@_1HG@GJLBCNC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| 
  0033c	00000000	 DCD         |??_C@_1DI@KKPKNNHG@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAS@| 
  00340	00000000	 DCD         |preamble_pattern| 
  00344		 |$M38972| 
 
			 ENDP  ; |SPI_Init| 
 
	EXPORT	|SPI_Deinit| 
 
  00000			 AREA	 |.text| { |SPI_Deinit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$SPI_Deinit|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_Deinit| } ; comdat associative 
|$T38985| DCD	|$L38984| 
	DCD	0x40000501 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |SPI_Deinit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |SPI_Deinit| PROC 
 
; 488  : { 
 
  00000		 |$L38984| 
  00000	e52de004	 str         lr, [sp, #-4]! 
  00004		 |$M38982| 
 
; 489  : 	PSPIDEVICEEXTENSION pSpiDevExt = (PSPIDEVICEEXTENSION)dwContext; 
; 490  :  
; 491  : 	FreeAllocatedResources(pSpiDevExt); 
 
  00004	eb000000	 bl          FreeAllocatedResources 
 
; 492  : 	return TRUE; 
 
  00008	e3a00001	 mov         r0, #1 
 
; 493  : } 
 
  0000c	e49de004	 ldr         lr, [sp], #4 
  00010	e12fff1e	 bx          lr 
  00014		 |$M38983| 
 
			 ENDP  ; |SPI_Deinit| 
 
	EXPORT	|SPI_Open| 
	EXPORT	|??_C@_1CK@BCLBBAHP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAO?$AAp?$AAe?$AAn?$AA?$CI?$AA?$CJ?$AA?$AN?$AA?6@| [ DATA ] ; `string' 
 
  00000			 AREA	 |.text| { |SPI_Open| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$SPI_Open|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_Open| } ; comdat associative 
|$T38997| DCD	|$L38996| 
	DCD	0x40000c01 
 
  00000			 AREA	 |.rdata| { |??_C@_1CK@BCLBBAHP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAO?$AAp?$AAe?$AAn?$AA?$CI?$AA?$CJ?$AA?$AN?$AA?6@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1CK@BCLBBAHP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAO?$AAp?$AAe?$AAn?$AA?$CI?$AA?$CJ?$AA?$AN?$AA?6@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "O" 
	DCB	0x0, "p", 0x0, "e", 0x0, "n", 0x0, "(", 0x0, ")", 0x0, 0xd 
	DCB	0x0, 0xa, 0x0, 0x0, 0x0			; `string' 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |SPI_Open| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |SPI_Open| PROC 
 
; 513  : { 
 
  00000		 |$L38996| 
  00000	e92d4010	 stmdb       sp!, {r4, lr} 
  00004		 |$M38994| 
  00004	e1a04000	 mov         r4, r0 
 
; 514  :  
; 515  : 	DBGMSG(ZONE_INFO, (TEXT("SmsSpi: SPI_Open()\r\n"))); 
 
  00008	e59f301c	 ldr         r3, [pc, #0x1C] 
  0000c	e5933440	 ldr         r3, [r3, #0x440] 
  00010	e3130008	 tst         r3, #8 
  00014	159f000c	 ldrne       r0, [pc, #0xC] 
  00018	1b000000	 blne        NKDbgPrintfW 
 
; 516  : 	return (DWORD)Context; 
 
  0001c	e1a00004	 mov         r0, r4 
 
; 517  :  
; 518  : } 
 
  00020	e8bd4010	 ldmia       sp!, {r4, lr} 
  00024	e12fff1e	 bx          lr 
  00028		 |$L38999| 
  00028	00000000	 DCD         |??_C@_1CK@BCLBBAHP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAO?$AAp?$AAe?$AAn?$AA?$CI?$AA?$CJ?$AA?$AN?$AA?6@| 
  0002c	00000000	 DCD         |dpCurSettings| 
  00030		 |$M38995| 
 
			 ENDP  ; |SPI_Open| 
 
	EXPORT	|SPI_Close| 
	EXPORT	|??_C@_1CM@DPANOIFO@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAC?$AAl?$AAo?$AAs?$AAe?$AA?$CI?$AA?$CJ?$AA?$AN@| [ DATA ] ; `string' 
 
  00000			 AREA	 |.text| { |SPI_Close| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$SPI_Close|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_Close| } ; comdat associative 
|$T39009| DCD	|$L39008| 
	DCD	0x40000b01 
 
  00000			 AREA	 |.rdata| { |??_C@_1CM@DPANOIFO@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAC?$AAl?$AAo?$AAs?$AAe?$AA?$CI?$AA?$CJ?$AA?$AN@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1CM@DPANOIFO@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAC?$AAl?$AAo?$AAs?$AAe?$AA?$CI?$AA?$CJ?$AA?$AN@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "C" 
	DCB	0x0, "l", 0x0, "o", 0x0, "s", 0x0, "e", 0x0, "(", 0x0, ")" 
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string' 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |SPI_Close| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |SPI_Close| PROC 
 
; 535  : { 
 
  00000		 |$L39008| 
  00000	e52de004	 str         lr, [sp, #-4]! 
  00004		 |$M39006| 
 
; 536  : 	DBGMSG(ZONE_INFO, (TEXT("SmsSpi: SPI_Close()\r\n"))); 
 
  00004	e59f301c	 ldr         r3, [pc, #0x1C] 
  00008	e5933440	 ldr         r3, [r3, #0x440] 
  0000c	e3130008	 tst         r3, #8 
  00010	159f000c	 ldrne       r0, [pc, #0xC] 
  00014	1b000000	 blne        NKDbgPrintfW 
 
; 537  : 	 
; 538  : 	return TRUE; 
 
  00018	e3a00001	 mov         r0, #1 
 
; 539  : } 
 
  0001c	e49de004	 ldr         lr, [sp], #4 
  00020	e12fff1e	 bx          lr 
  00024		 |$L39011| 
  00024	00000000	 DCD         |??_C@_1CM@DPANOIFO@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAC?$AAl?$AAo?$AAs?$AAe?$AA?$CI?$AA?$CJ?$AA?$AN@| 
  00028	00000000	 DCD         |dpCurSettings| 
  0002c		 |$M39007| 
 
			 ENDP  ; |SPI_Close| 
 
	EXPORT	|SPI_Read| 
	EXPORT	|??_C@_1FO@EKIDJEMB@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAR?$AAe?$AAa?$AAd?$AA?$CI?$AA?$CJ?$AA?5?$AAc@| [ DATA ] ; `string' 
 
  00000			 AREA	 |.text| { |SPI_Read| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$SPI_Read|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_Read| } ; comdat associative 
|$T39021| DCD	|$L39020| 
	DCD	0x40000b01 
 
  00000			 AREA	 |.rdata| { |??_C@_1FO@EKIDJEMB@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAR?$AAe?$AAa?$AAd?$AA?$CI?$AA?$CJ?$AA?5?$AAc@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1FO@EKIDJEMB@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAR?$AAe?$AAa?$AAd?$AA?$CI?$AA?$CJ?$AA?5?$AAc@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "R" 
	DCB	0x0, "e", 0x0, "a", 0x0, "d", 0x0, "(", 0x0, ")", 0x0, " " 
	DCB	0x0, "c", 0x0, "a", 0x0, "l", 0x0, "l", 0x0, "e", 0x0, "d" 
	DCB	0x0, ",", 0x0, " ", 0x0, "b", 0x0, "u", 0x0, "t", 0x0, " " 
	DCB	0x0, "n", 0x0, "o", 0x0, "t", 0x0, " ", 0x0, "s", 0x0, "u" 
	DCB	0x0, "p", 0x0, "p", 0x0, "o", 0x0, "r", 0x0, "t", 0x0, "e" 
	DCB	0x0, "d", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string' 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |SPI_Read| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |SPI_Read| PROC 
 
; 557  : { 
 
  00000		 |$L39020| 
  00000	e52de004	 str         lr, [sp, #-4]! 
  00004		 |$M39018| 
 
; 558  : 	DBGMSG(ZONE_ERROR, (TEXT("SmsSpi: SPI_Read() called, but not supported\r\n"))); 
 
  00004	e59f301c	 ldr         r3, [pc, #0x1C] 
  00008	e5933440	 ldr         r3, [r3, #0x440] 
  0000c	e3130001	 tst         r3, #1 
  00010	159f000c	 ldrne       r0, [pc, #0xC] 
  00014	1b000000	 blne        NKDbgPrintfW 
 
; 559  : 	return (-1); 
 
  00018	e3e00000	 mvn         r0, #0 
 
; 560  : } 
 
  0001c	e49de004	 ldr         lr, [sp], #4 
  00020	e12fff1e	 bx          lr 
  00024		 |$L39023| 
  00024	00000000	 DCD         |??_C@_1FO@EKIDJEMB@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAR?$AAe?$AAa?$AAd?$AA?$CI?$AA?$CJ?$AA?5?$AAc@| 
  00028	00000000	 DCD         |dpCurSettings| 
  0002c		 |$M39019| 
 
			 ENDP  ; |SPI_Read| 
 
	EXPORT	|SPI_Write| 
	EXPORT	|??_C@_1FC@EKKFDOBI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAW?$AAr?$AAi?$AAt?$AAe?$AA?$CI?$AA?$CJ?$AA?5@| [ DATA ] ; `string' 
	IMPORT	|memcpy| 
	IMPORT	|smschipreset| 
 
  00000			 AREA	 |.bss|, NOINIT 
|?txmsg@?1??SPI_Write@@9@9| % 0xc			; `SPI_Write'::`2'::txmsg 
; File e:\wm604\public\common\sdk\inc\kfuncs.h 
 
  00000			 AREA	 |.text| { |SPI_Write| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$SPI_Write|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_Write| } ; comdat associative 
|$T39054| DCD	|$L39053| 
	DCD	0x40006001 
 
  00000			 AREA	 |.rdata| { |??_C@_1FC@EKKFDOBI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAW?$AAr?$AAi?$AAt?$AAe?$AA?$CI?$AA?$CJ?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1FC@EKKFDOBI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAW?$AAr?$AAi?$AAt?$AAe?$AA?$CI?$AA?$CJ?$AA?5@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "W" 
	DCB	0x0, "r", 0x0, "i", 0x0, "t", 0x0, "e", 0x0, "(", 0x0, ")" 
	DCB	0x0, " ", 0x0, "N", 0x0, "o", 0x0, " ", 0x0, "p", 0x0, "r" 
	DCB	0x0, "e", 0x0, "a", 0x0, "m", 0x0, "b", 0x0, "l", 0x0, "e" 
	DCB	0x0, " ", 0x0, "a", 0x0, "d", 0x0, "d", 0x0, "e", 0x0, "d" 
	DCB	0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string' 
; Function compile flags: /Ogsy 
; File e:\wm604\platform\seuicbsp\src\drivers\dmbdrv\spidrv\sianospi.c 
 
  00000			 AREA	 |.text| { |SPI_Write| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |SPI_Write| PROC 
 
; 576  : {	 
 
  00000		 |$L39053| 
  00000	e92d47f0	 stmdb       sp!, {r4 - r10, lr} 
  00004		 |$M39051| 
  00004	e1a04002	 mov         r4, r2 
  00008	e1a09001	 mov         r9, r1 
  0000c	e1a06000	 mov         r6, r0 
 
; 577  : 	int 	Cnt; 
; 578  : 	int 	AddingPreamble, WrittenBytes; 
; 579  : 	static struct spi_msg   txmsg; 
; 580  : 	PSPIDEVICEEXTENSION pSpiDevExt  = (PSPIDEVICEEXTENSION)dwContext; 
; 581  : 	 
; 582  : 	//DBGMSG(ZONE_INFO, (TEXT("SmsSpi: SPI_Write() Writing %d bytes.\r\n"), BufferLength)); 
; 583  :  
; 584  : 	AddingPreamble = 1; 
; 585  : 	if (BufferLength > 0x1000) 
 
  00010	e3540a01	 cmp         r4, #1, 20 
 
; 586  : 	{ /* The FW is the only long message. Do not add preamble, and do not padd it*/ 
; 587  : 		pSpiDevExt->PaddingAllowed = 0; 
; 588  : 		AddingPreamble = 0; 
; 589  : 		BufferLength += 4; 
; 590  : 		smschipreset(pSpiDevExt->phyDrv);		 
 
  00014	85960054	 ldrhi       r0, [r6, #0x54] 
  00018	83a03000	 movhi       r3, #0 
  0001c	e3a05001	 mov         r5, #1 
  00020	85863034	 strhi       r3, [r6, #0x34] 
  00024	83a05000	 movhi       r5, #0 
  00028	82844004	 addhi       r4, r4, #4 
  0002c	8b000000	 blhi        smschipreset 
 
; 591  : 	} 
; 592  : 	WrittenBytes = 0; 
 
  00030	e3a07000	 mov         r7, #0 
 
; 593  : 		 
; 594  : 	while (BufferLength > 0) 
 
  00034	e3540000	 cmp         r4, #0 
  00038	0a000048	 beq         |$L38633| 
  0003c	e59fa138	 ldr         r10, [pc, #0x138] 
  00040	e59f8130	 ldr         r8, [pc, #0x130] 
  00044		 |$L38632| 
 
; 595  : 	{ 
; 596  : 		ResetEvent(pSpiDevExt->WriteOperation);	 
 
  00044	e5960048	 ldr         r0, [r6, #0x48] 
  00048	e3a01002	 mov         r1, #2 
  0004c	eb000000	 bl          EventModify 
 
; 597  : 		txmsg.buf = pSpiDevExt->txbuf; 
 
  00050	e5963040	 ldr         r3, [r6, #0x40] 
 
; 598  : 		txmsg.buf_phy_addr = pSpiDevExt->txbuf_phy_addr; 
; 599  : 		if (AddingPreamble == 1) 
 
  00054	e3550001	 cmp         r5, #1 
  00058	e5883000	 str         r3, [r8] 
  0005c	e5963044	 ldr         r3, [r6, #0x44] 
  00060	e5883004	 str         r3, [r8, #4] 
  00064	1a000019	 bne         |$L38634| 
 
; 600  : 		{ 
; 601  : 			//DBGMSG(ZONE_INFO, (TEXT("SmsSpi: SPI_Write() Adding peamble.\r\n"))); 
; 602  : 			Cnt = min((int)(BufferLength + sizeof(preamble_pattern)), (int)TX_BUF_SIZE); 
 
  00068	e2845004	 add         r5, r4, #4 
  0006c	e3550c02	 cmp         r5, #2, 24 
  00070	a3a05c02	 movge       r5, #2, 24 
 
; 603  : 			txmsg.len = Cnt; 
; 604  : 			memcpy (pSpiDevExt->txbuf, preamble_pattern, sizeof(preamble_pattern)); 
 
  00074	e59a3000	 ldr         r3, [r10] 
  00078	e5885008	 str         r5, [r8, #8] 
  0007c	e5960040	 ldr         r0, [r6, #0x40] 
 
; 605  : 			memcpy(pSpiDevExt->txbuf+sizeof(preamble_pattern), pBuff, Cnt - sizeof(preamble_pattern)); 
 
  00080	e2452004	 sub         r2, r5, #4 
  00084	e1a01009	 mov         r1, r9 
  00088	e5c03000	 strb        r3, [r0] 
  0008c	e59a3000	 ldr         r3, [r10] 
  00090	e1a03423	 mov         r3, r3, lsr #8 
  00094	e5c03001	 strb        r3, [r0, #1] 
  00098	e59a3000	 ldr         r3, [r10] 
  0009c	e1a03823	 mov         r3, r3, lsr #16 
  000a0	e5c03002	 strb        r3, [r0, #2] 
  000a4	e59a3000	 ldr         r3, [r10] 
  000a8	e1a03c23	 mov         r3, r3, lsr #24 
  000ac	e5c03003	 strb        r3, [r0, #3] 
  000b0	e5963040	 ldr         r3, [r6, #0x40] 
  000b4	e2830004	 add         r0, r3, #4 
  000b8	eb000000	 bl          memcpy 
 
; 606  : 			WrittenBytes += (Cnt - sizeof(preamble_pattern)); 
 
  000bc	e0853007	 add         r3, r5, r7 
 
; 607  : 			BufferLength -= (Cnt - sizeof(preamble_pattern));		 
 
  000c0	e0442005	 sub         r2, r4, r5 
  000c4	e2437004	 sub         r7, r3, #4 
  000c8	e2824004	 add         r4, r2, #4 
 
; 608  : 		} 
; 609  : 		else 
 
  000cc	ea00000d	 b           |$L38639| 
  000d0		 |$L38634| 
 
; 610  : 		{ 
; 611  : 			DBGMSG(ZONE_INFO, (TEXT("SmsSpi: SPI_Write() No preamble added.\r\n"))); 
 
  000d0	e59a3448	 ldr         r3, [r10, #0x448] 
  000d4	e3130008	 tst         r3, #8 
  000d8	159f0094	 ldrne       r0, [pc, #0x94] 
  000dc	1b000000	 blne        NKDbgPrintfW 
 
; 612  : 			Cnt = min(BufferLength, TX_BUF_SIZE); 
 
  000e0	e3540c02	 cmp         r4, #2, 24 
  000e4	31a05004	 movcc       r5, r4 
  000e8	23a05c02	 movcs       r5, #2, 24 
 
; 613  : 			txmsg.len = Cnt; 
 
  000ec	e5885008	 str         r5, [r8, #8] 
 
; 614  : 			memcpy(pSpiDevExt->txbuf, (CHAR*)pBuff, Cnt); 
 
  000f0	e5960040	 ldr         r0, [r6, #0x40] 
  000f4	e1a02005	 mov         r2, r5 
  000f8	e1a01009	 mov         r1, r9 
  000fc	eb000000	 bl          memcpy 
 
; 615  : 			WrittenBytes += Cnt; 
 
  00100	e0877005	 add         r7, r7, r5 
 
; 616  : 			BufferLength -= Cnt;		 
 
  00104	e0444005	 sub         r4, r4, r5 
  00108		 |$L38639| 
 
; 617  : 		} 
; 618  : 		memset (pSpiDevExt->txbuf + Cnt, 0, TX_BUF_SIZE - Cnt); 
 
  00108	e5963040	 ldr         r3, [r6, #0x40] 
  0010c	e2652c02	 rsb         r2, r5, #2, 24 
  00110	e3a01000	 mov         r1, #0 
  00114	e0830005	 add         r0, r3, r5 
  00118	eb000000	 bl          memset 
 
; 619  : 		//DBGMSG(ZONE_ERROR, (TEXT("SmsSpi: SPI_Write() Sending to transfer queue. buf = 0x%x, len=%d.\r\n"), txmsg.buf, txmsg.len)); 
; 620  : 		SetEventData(pSpiDevExt->transferMsgQueue, (DWORD)&txmsg); 
 
  0011c	e596004c	 ldr         r0, [r6, #0x4C] 
  00120	e1a01008	 mov         r1, r8 
  00124	eb000000	 bl          SetEventData 
 
; 621  : 		//DBGMSG(ZONE_INFO, (TEXT("SmsSpi: SPI_Write() Sending to transfer queue. msg = 0x%x.\r\n"), (DWORD)&txmsg)); 
; 622  : 		SetEvent(pSpiDevExt->transferMsgQueue); 
 
  00128	e596004c	 ldr         r0, [r6, #0x4C] 
  0012c	e3a01003	 mov         r1, #3 
  00130	eb000000	 bl          EventModify 
 
; 623  : 		WaitForSingleObject(pSpiDevExt->WriteOperation, INFINITE); 
 
  00134	e5960048	 ldr         r0, [r6, #0x48] 
  00138	e3e01000	 mvn         r1, #0 
  0013c	eb000000	 bl          WaitForSingleObject 
 
; 624  : 		memset (pSpiDevExt->txbuf, 0, Cnt); 
 
  00140	e5960040	 ldr         r0, [r6, #0x40] 
  00144	e1a02005	 mov         r2, r5 
  00148	e3a01000	 mov         r1, #0 
  0014c	eb000000	 bl          memset 
 
; 625  : 		(PCHAR)pBuff+=Cnt;		 
 
  00150	e0899005	 add         r9, r9, r5 
 
; 626  : 		AddingPreamble = 0; 
 
  00154	e3a05000	 mov         r5, #0 
  00158	e3540000	 cmp         r4, #0 
  0015c	1affffb8	 bne         |$L38632| 
  00160		 |$L38633| 
 
; 627  : 	} 
; 628  : 	pSpiDevExt->PaddingAllowed = 1; 
 
  00160	e3a03001	 mov         r3, #1 
  00164	e5863034	 str         r3, [r6, #0x34] 
 
; 629  : 	//DBGMSG(ZONE_INFO, (TEXT("SmsSpi: SPI_Write() Write exits.\r\n"))); 
; 630  : 	return WrittenBytes; 
 
  00168	e1a00007	 mov         r0, r7 
 
; 631  : 	 
; 632  : } 
 
  0016c	e8bd47f0	 ldmia       sp!, {r4 - r10, lr} 
  00170	e12fff1e	 bx          lr 
  00174		 |$L39056| 
  00174	00000000	 DCD         |??_C@_1FC@EKKFDOBI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAW?$AAr?$AAi?$AAt?$AAe?$AA?$CI?$AA?$CJ?$AA?5@| 
  00178	00000000	 DCD         |?txmsg@?1??SPI_Write@@9@9| 
  0017c	00000000	 DCD         |preamble_pattern| 
  00180		 |$M39052| 
 
			 ENDP  ; |SPI_Write| 
 
	EXPORT	|SPI_IOControl| 
	EXPORT	|??_C@_1JM@NFKLAFLM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1HE@FIBOFPED@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1GC@KNMMGEFD@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1HE@PIEBBJHC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAP?$AAo?$AAw?$AAe?$AAr?$AA?5?$AAm?$AAa?$AAn?$AAa?$AAg?$AAe@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1GM@NMNJMHPJ@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| [ DATA ] ; `string' 
	IMPORT	|Sleep| 
	IMPORT	|WriteFWtoStellar| 
	IMPORT	|WriteFWtoNova| 
 
  00000			 AREA	 |.text| { |SPI_IOControl| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$SPI_IOControl|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_IOControl| } ; comdat associative 
|$T39083| DCD	|$L39082| 
	DCD	0x40008401 
 
  00000			 AREA	 |.rdata| { |??_C@_1HE@FIBOFPED@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1HE@FIBOFPED@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "I", 0x0, "O", 0x0, "C", 0x0, "T", 0x0, "L" 
	DCB	0x0, "_", 0x0, "P", 0x0, "O", 0x0, "W", 0x0, "E", 0x0, "R" 
	DCB	0x0, "_", 0x0, "S", 0x0, "E", 0x0, "T", 0x0, " ", 0x0, "-" 
	DCB	0x0, " ", 0x0, "C", 0x0, "h", 0x0, "a", 0x0, "n", 0x0, "g" 
	DCB	0x0, "i", 0x0, "n", 0x0, "g", 0x0, " ", 0x0, "p", 0x0, "o" 
	DCB	0x0, "w", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "s", 0x0, "t" 
	DCB	0x0, "a", 0x0, "t", 0x0, "e", 0x0, " ", 0x0, "t", 0x0, "o" 
	DCB	0x0, " ", 0x0, "0", 0x0, "x", 0x0, "%", 0x0, "x", 0x0, " " 
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1JM@NFKLAFLM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1JM@NFKLAFLM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "I", 0x0, "O", 0x0, "C", 0x0, "T", 0x0, "L" 
	DCB	0x0, "_", 0x0, "P", 0x0, "O", 0x0, "W", 0x0, "E", 0x0, "R" 
	DCB	0x0, "_", 0x0, "C", 0x0, "A", 0x0, "P", 0x0, "A", 0x0, "B" 
	DCB	0x0, "I", 0x0, "L", 0x0, "I", 0x0, "T", 0x0, "I", 0x0, "E" 
	DCB	0x0, "S", 0x0, " ", 0x0, "-", 0x0, " ", 0x0, "s", 0x0, "u" 
	DCB	0x0, "p", 0x0, "p", 0x0, "o", 0x0, "r", 0x0, "t", 0x0, "e" 
	DCB	0x0, "d", 0x0, " ", 0x0, "p", 0x0, "o", 0x0, "w", 0x0, "e" 
	DCB	0x0, "r", 0x0, " ", 0x0, "s", 0x0, "t", 0x0, "a", 0x0, "t" 
	DCB	0x0, "e", 0x0, "s", 0x0, " ", 0x0, "a", 0x0, "r", 0x0, "e" 
	DCB	0x0, " ", 0x0, "D", 0x0, "0", 0x0, ",", 0x0, " ", 0x0, "D" 
	DCB	0x0, "3", 0x0, " ", 0x0, "a", 0x0, "n", 0x0, "d", 0x0, " " 
	DCB	0x0, "D", 0x0, "4", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1GC@KNMMGEFD@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1GC@KNMMGEFD@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "I", 0x0, "O", 0x0, "C", 0x0, "T", 0x0, "L" 
	DCB	0x0, "_", 0x0, "P", 0x0, "O", 0x0, "W", 0x0, "E", 0x0, "R" 
	DCB	0x0, "_", 0x0, "G", 0x0, "E", 0x0, "T", 0x0, " ", 0x0, "-" 
	DCB	0x0, " ", 0x0, "p", 0x0, "o", 0x0, "w", 0x0, "e", 0x0, "r" 
	DCB	0x0, " ", 0x0, "s", 0x0, "t", 0x0, "a", 0x0, "t", 0x0, "e" 
	DCB	0x0, " ", 0x0, "i", 0x0, "s", 0x0, " ", 0x0, "0", 0x0, "x" 
	DCB	0x0, "%", 0x0, "x", 0x0, " ", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0 
	DCB	0x0					; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1GM@NMNJMHPJ@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1GM@NMNJMHPJ@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "I", 0x0, "O", 0x0, "C", 0x0, "T", 0x0, "L" 
	DCB	0x0, "_", 0x0, "P", 0x0, "O", 0x0, "W", 0x0, "E", 0x0, "R" 
	DCB	0x0, "_", 0x0, "Q", 0x0, "U", 0x0, "E", 0x0, "R", 0x0, "Y" 
	DCB	0x0, " ", 0x0, "-", 0x0, " ", 0x0, "n", 0x0, "o", 0x0, "t" 
	DCB	0x0, " ", 0x0, "s", 0x0, "u", 0x0, "p", 0x0, "p", 0x0, "o" 
	DCB	0x0, "r", 0x0, "t", 0x0, "e", 0x0, "d", 0x0, " ", 0x0, "y" 
	DCB	0x0, "e", 0x0, "t", 0x0, " ", 0x0, "0", 0x0, "x", 0x0, "%" 
	DCB	0x0, "x", 0x0, " ", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1HE@PIEBBJHC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAP?$AAo?$AAw?$AAe?$AAr?$AA?5?$AAm?$AAa?$AAn?$AAa?$AAg?$AAe@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1HE@PIEBBJHC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAP?$AAo?$AAw?$AAe?$AAr?$AA?5?$AAm?$AAa?$AAn?$AAa?$AAg?$AAe@| DCB "S" 
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":" 
	DCB	0x0, " ", 0x0, "P", 0x0, "o", 0x0, "w", 0x0, "e", 0x0, "r" 
	DCB	0x0, " ", 0x0, "m", 0x0, "a", 0x0, "n", 0x0, "a", 0x0, "g" 
	DCB	0x0, "e", 0x0, "r", 0x0, " ", 0x0, "c", 0x0, "o", 0x0, "m" 
	DCB	0x0, "m", 0x0, "a", 0x0, "n", 0x0, "d", 0x0, " ", 0x0, "-" 
	DCB	0x0, " ", 0x0, "n", 0x0, "o", 0x0, "t", 0x0, " ", 0x0, "s" 
	DCB	0x0, "u", 0x0, "p", 0x0, "p", 0x0, "o", 0x0, "r", 0x0, "t" 
	DCB	0x0, "e", 0x0, "d", 0x0, " ", 0x0, "y", 0x0, "e", 0x0, "t" 
	DCB	0x0, " ", 0x0, "0", 0x0, "x", 0x0, "%", 0x0, "x", 0x0, " " 
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string' 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |SPI_IOControl| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |SPI_IOControl| PROC 
 
; 660  : {	 
 
  00000		 |$L39082| 
  00000	e92d43f0	 stmdb       sp!, {r4 - r9, lr} 
  00004		 |$M39080| 
  00004	e1a08003	 mov         r8, r3 
  00008	e1a07002	 mov         r7, r2 
  0000c	e1a04000	 mov         r4, r0 
 
; 661  : 	BOOL retVal; 
; 662  : 	PSPIDEVICEEXTENSION pSpiDevExt  = (PSPIDEVICEEXTENSION)dwContext; 
; 663  :  
; 664  : 	retVal = FALSE; 
; 665  :  
; 666  : 	switch(Ioctl) 
 
  00010	e3a0e832	 mov         lr, #0x32, 16 
  00014	e38eea01	 orr         lr, lr, #1, 20 
  00018	e59f91cc	 ldr         r9, [pc, #0x1CC] 
  0001c	e59d601c	 ldr         r6, [sp, #0x1C] 
  00020	e151000e	 cmp         r1, lr 
  00024	e3a05000	 mov         r5, #0 
  00028	0a000045	 beq         |$L38678| 
  0002c	e59fe1d8	 ldr         lr, [pc, #0x1D8] 
  00030	e151000e	 cmp         r1, lr 
  00034	0a000038	 beq         |$L38694| 
  00038	e59fe1c8	 ldr         lr, [pc, #0x1C8] 
  0003c	e151000e	 cmp         r1, lr 
  00040	0a000054	 beq         |$L39070| 
  00044	e59f21b8	 ldr         r2, [pc, #0x1B8] 
  00048	e1510002	 cmp         r1, r2 
  0004c	0a000025	 beq         |$L38699| 
  00050	e59f21a8	 ldr         r2, [pc, #0x1A8] 
  00054	e1510002	 cmp         r1, r2 
  00058	0a00001a	 beq         |$L38697| 
  0005c	e59f3198	 ldr         r3, [pc, #0x198] 
  00060	e1510003	 cmp         r1, r3 
  00064	0a00000e	 beq         |$L38667| 
  00068	e59f3188	 ldr         r3, [pc, #0x188] 
  0006c	e1510003	 cmp         r1, r3 
  00070	1a000057	 bne         |$L38664| 
 
; 676  :  
; 677  : 		case SIANO_BD_IOCTL_WRITE_FW_BUFF_TO_DEVICE: 
; 678  : 			if (pInBuf != NULL) 
 
  00074	e3570000	 cmp         r7, #0 
  00078	0a000055	 beq         |$L38664| 
 
; 679  : 			{ 
; 680  : 				if (pSpiDevExt->novaDevice) 
 
  0007c	e5943060	 ldr         r3, [r4, #0x60] 
 
; 681  : 					WriteFWtoNova(pSpiDevExt->phyDrv,pInBuf,InBufLen); 
 
  00080	e5940054	 ldr         r0, [r4, #0x54] 
  00084	e1a02008	 mov         r2, r8 
  00088	e3530000	 cmp         r3, #0 
  0008c	e1a01007	 mov         r1, r7 
  00090	0a000001	 beq         |$L38676| 
  00094	eb000000	 bl          WriteFWtoNova 
 
; 682  : 				else 
 
  00098	ea00004c	 b           |$L38677| 
  0009c		 |$L38676| 
 
; 683  : 					WriteFWtoStellar(pSpiDevExt->phyDrv,pInBuf,InBufLen); 
 
  0009c	eb000000	 bl          WriteFWtoStellar 
 
; 684  : 				retVal = TRUE; 
; 685  :  
; 686  : 			} 
; 687  : 			break; 
 
  000a0	ea00004a	 b           |$L38677| 
  000a4		 |$L38667| 
 
; 667  : 	{ 
; 668  : 		case SIANO_BD_IOCTL_REGISTER_READ_CB: 
; 669  : 			if ((pInBuf != NULL) && (InBufLen >= sizeof(BD_IOCTL_REGISTER_READ_PARAMS_ST))) 
 
  000a4	e3570000	 cmp         r7, #0 
  000a8	0a000049	 beq         |$L38664| 
  000ac	e3580008	 cmp         r8, #8 
  000b0	3a000047	 bcc         |$L38664| 
 
; 670  : 			{ 
; 671  : 				pSpiDevExt->hBDContext = ((PBD_IOCTL_REGISTER_READ_PARAMS_ST)pInBuf)->hContext; 
 
  000b4	e5973004	 ldr         r3, [r7, #4] 
 
; 672  : 				pSpiDevExt->pBD_ReadCBFunc = ((PBD_IOCTL_REGISTER_READ_PARAMS_ST)pInBuf)->pBD_ReadCBFunc; 
; 673  : 				retVal = TRUE; 
 
  000b8	e5843068	 str         r3, [r4, #0x68] 
  000bc	e5973000	 ldr         r3, [r7] 
  000c0	e584305c	 str         r3, [r4, #0x5C] 
 
; 674  : 			} 
; 675  : 			break; 
 
  000c4	ea000041	 b           |$L38677| 
  000c8		 |$L38697| 
 
; 716  : 		case IOCTL_REGISTER_POWER_RELATIONSHIP:			 
; 717  : 			DBGMSG(ZONE_WARNING, (TEXT("SmsSpi: Power manager command - not supported yet 0x%x \r\n"),Ioctl)); 
 
  000c8	e59f311c	 ldr         r3, [pc, #0x11C] 
  000cc	e5933440	 ldr         r3, [r3, #0x440] 
  000d0	e3130002	 tst         r3, #2 
  000d4	0a00003e	 beq         |$L38664| 
  000d8	e59f0114	 ldr         r0, [pc, #0x114] 
  000dc	e1a01002	 mov         r1, r2 
  000e0	eb000000	 bl          NKDbgPrintfW 
 
; 718  : 			break; 
 
  000e4	ea00003a	 b           |$L38664| 
  000e8		 |$L38699| 
 
; 719  : 		case IOCTL_POWER_QUERY: 
; 720  : 			DBGMSG(ZONE_INFO, (TEXT("SmsSpi: IOCTL_POWER_QUERY - not supported yet 0x%x \r\n"),Ioctl)); 
 
  000e8	e59f30fc	 ldr         r3, [pc, #0xFC] 
  000ec	e5933440	 ldr         r3, [r3, #0x440] 
  000f0	e3130008	 tst         r3, #8 
  000f4	159f00f4	 ldrne       r0, [pc, #0xF4] 
  000f8	11a01002	 movne       r1, r2 
  000fc	1b000000	 blne        NKDbgPrintfW 
 
; 721  : 			if (*(CEDEVICE_POWER_STATE*)pOutBuf == D3) //D3 is not supported by SMS1000 
 
  00100	e59d201c	 ldr         r2, [sp, #0x1C] 
  00104	e5923000	 ldr         r3, [r2] 
  00108	e3530003	 cmp         r3, #3 
  0010c	1a00002f	 bne         |$L38677| 
 
; 722  : 				*(CEDEVICE_POWER_STATE*)pOutBuf = PwrDeviceUnspecified; 
 
  00110	e3e03000	 mvn         r3, #0 
  00114	e5823000	 str         r3, [r2] 
 
; 723  : 			retVal = TRUE; 
; 724  : 			break; 
 
  00118	ea00002c	 b           |$L38677| 
  0011c		 |$L38694| 
 
; 710  : 			break; 
; 711  : 		case IOCTL_POWER_GET: 
; 712  : 			DBGMSG(ZONE_INFO, (TEXT("SmsSpi: IOCTL_POWER_GET - power state is 0x%x \r\n"),pSpiDevExt->powerState)); 
 
  0011c	e59f30c8	 ldr         r3, [pc, #0xC8] 
  00120	e5933440	 ldr         r3, [r3, #0x440] 
  00124	e3130008	 tst         r3, #8 
  00128	15941064	 ldrne       r1, [r4, #0x64] 
  0012c	159f00b4	 ldrne       r0, [pc, #0xB4] 
  00130	1b000000	 blne        NKDbgPrintfW 
 
; 713  : 			*(CEDEVICE_POWER_STATE*)pOutBuf = pSpiDevExt->powerState; 
 
  00134	e5942064	 ldr         r2, [r4, #0x64] 
  00138	e59d301c	 ldr         r3, [sp, #0x1C] 
 
; 714  : 			retVal = TRUE; 
 
  0013c	e5832000	 str         r2, [r3] 
 
; 715  : 			break; 
 
  00140	ea000022	 b           |$L38677| 
  00144		 |$L38678| 
 
; 688  : 		case IOCTL_POWER_CAPABILITIES: 
; 689  : 			DBGMSG(ZONE_INFO, (TEXT("SmsSpi: IOCTL_POWER_CAPABILITIES - supported power states are D0, D3 and D4\r\n"))); 
 
  00144	e5993440	 ldr         r3, [r9, #0x440] 
  00148	e3130008	 tst         r3, #8 
  0014c	159f0090	 ldrne       r0, [pc, #0x90] 
  00150	1b000000	 blne        NKDbgPrintfW 
 
; 690  : 			if (pOutBuf != NULL && pdwBytesTransferred != NULL && OutBufLen >= sizeof(POWER_CAPABILITIES)) 
 
  00154	e3560000	 cmp         r6, #0 
  00158	0a00000e	 beq         |$L39070| 
  0015c	e59d5024	 ldr         r5, [sp, #0x24] 
  00160	e3550000	 cmp         r5, #0 
  00164	0a00000b	 beq         |$L39070| 
  00168	e59d3020	 ldr         r3, [sp, #0x20] 
  0016c	e3530030	 cmp         r3, #0x30 
  00170	3a000008	 bcc         |$L39070| 
 
; 691  : 			{ 
; 692  : 				PPOWER_CAPABILITIES pCapabilities = (PPOWER_CAPABILITIES)pOutBuf; 
; 693  : 				memset(pCapabilities, 0, sizeof(POWER_CAPABILITIES)); 
 
  00174	e3a02030	 mov         r2, #0x30 
  00178	e3a01000	 mov         r1, #0 
  0017c	e1a00006	 mov         r0, r6 
  00180	eb000000	 bl          memset 
 
; 694  : 				// support D0, D3, D4 
; 695  : 				pCapabilities->DeviceDx = DX_MASK(D0)|DX_MASK(D3)|DX_MASK(D4); 
 
  00184	e3a03019	 mov         r3, #0x19 
  00188	e5c63000	 strb        r3, [r6] 
 
; 696  : 				*pdwBytesTransferred = sizeof(POWER_CAPABILITIES); 
 
  0018c	e3a03030	 mov         r3, #0x30 
  00190	e5853000	 str         r3, [r5] 
 
; 697  : 				retVal = TRUE; 
; 698  : 				break; 
 
  00194	ea00000d	 b           |$L38677| 
  00198		 |$L39070| 
 
; 688  : 		case IOCTL_POWER_CAPABILITIES: 
; 689  : 			DBGMSG(ZONE_INFO, (TEXT("SmsSpi: IOCTL_POWER_CAPABILITIES - supported power states are D0, D3 and D4\r\n"))); 
 
  00198	e5993440	 ldr         r3, [r9, #0x440] 
 
; 699  : 			} 
; 700  : 			 
; 701  : 		case IOCTL_POWER_SET: 
; 702  : 			DBGMSG(ZONE_INFO, (TEXT("SmsSpi: IOCTL_POWER_SET - Changing power state to 0x%x \r\n"),*(CEDEVICE_POWER_STATE*)pOutBuf)); 
 
  0019c	e3130008	 tst         r3, #8 
  001a0	15961000	 ldrne       r1, [r6] 
  001a4	159f0034	 ldrne       r0, [pc, #0x34] 
  001a8	1b000000	 blne        NKDbgPrintfW 
 
; 703  : 			/* Here we need to send the command of changing the power state to FW - not supported yet*/ 
; 704  : 			if (pSpiDevExt->powerState >= D3 && *(CEDEVICE_POWER_STATE*)pOutBuf == D0) 
 
  001ac	e5943064	 ldr         r3, [r4, #0x64] 
  001b0	e3530003	 cmp         r3, #3 
  001b4	ba000003	 blt         |$L38692| 
  001b8	e5963000	 ldr         r3, [r6] 
  001bc	e3530000	 cmp         r3, #0 
 
; 705  : 			{ // When going back to D0 need to reset the FW in  order to make sure the device is ready for FW download. 
; 706  : 				Sleep(1000); 
 
  001c0	03a00ffa	 moveq       r0, #0xFA, 30 
  001c4	0b000000	 bleq        Sleep 
  001c8		 |$L38692| 
 
; 707  : 			} 
; 708  : 			pSpiDevExt->powerState = *(CEDEVICE_POWER_STATE*)pOutBuf; 
 
  001c8	e5963000	 ldr         r3, [r6] 
 
; 709  : 			retVal = TRUE; 
 
  001cc	e5843064	 str         r3, [r4, #0x64] 
  001d0		 |$L38677| 
  001d0	e3a05001	 mov         r5, #1 
  001d4		 |$L38664| 
 
; 725  :  
; 726  :         default: 
; 727  :             break; 
; 728  : 	} 
; 729  :  
; 730  : 	return retVal; 
 
  001d4	e1a00005	 mov         r0, r5 
 
; 731  :  
; 732  : } 
 
  001d8	e8bd43f0	 ldmia       sp!, {r4 - r9, lr} 
  001dc	e12fff1e	 bx          lr 
  001e0		 |$L39085| 
  001e0	00000000	 DCD         |??_C@_1HE@FIBOFPED@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| 
  001e4	00000000	 DCD         |??_C@_1JM@NFKLAFLM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| 
  001e8	00000000	 DCD         |??_C@_1GC@KNMMGEFD@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| 
  001ec	00000000	 DCD         |dpCurSettings| 
  001f0	00000000	 DCD         |??_C@_1GM@NMNJMHPJ@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| 
  001f4	00000000	 DCD         |??_C@_1HE@PIEBBJHC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAP?$AAo?$AAw?$AAe?$AAr?$AA?5?$AAm?$AAa?$AAn?$AAa?$AAg?$AAe@| 
  001f8	9c402004	 DCD         0x9c402004 
  001fc	9c402000	 DCD         0x9c402000 
  00200	00321018	 DCD         0x321018 
  00204	0032100c	 DCD         0x32100c 
  00208	00321008	 DCD         0x321008 
  0020c	00321004	 DCD         0x321004 
  00210		 |$M39081| 
 
			 ENDP  ; |SPI_IOControl| 
 
	EXPORT	|SPI_Seek| 
 
  00000			 AREA	 |.text| { |SPI_Seek| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$SPI_Seek|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_Seek| } ; comdat associative 
|$T39093| DCD	|$L39092| 
	DCD	0x40000200 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |SPI_Seek| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |SPI_Seek| PROC 
 
; 753  : { 
 
  00000		 |$L39092| 
  00000		 |$M39090| 
 
; 754  :     UNREFERENCED_PARAMETER(Context); 
; 755  :     UNREFERENCED_PARAMETER(Position); 
; 756  :     UNREFERENCED_PARAMETER(Type); 
; 757  :      
; 758  :     return (ULONG)-1; 
 
  00000	e3e00000	 mvn         r0, #0 
 
; 759  : } 
 
  00004	e12fff1e	 bx          lr 
  00008		 |$M39091| 
 
			 ENDP  ; |SPI_Seek| 
 
	EXPORT	|SPI_PowerDown| 
 
  00000			 AREA	 |.text| { |SPI_PowerDown| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$SPI_PowerDown|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_PowerDown| } ; comdat associative 
|$T39100| DCD	|$L39099| 
	DCD	0x40000100 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |SPI_PowerDown| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |SPI_PowerDown| PROC 
 
; 775  : { 
 
  00000		 |$L39099| 
  00000		 |$M39097| 
 
; 776  : 	UNREFERENCED_PARAMETER(dwContext); 
; 777  : } 
 
  00000	e12fff1e	 bx          lr 
  00004		 |$M39098| 
 
			 ENDP  ; |SPI_PowerDown| 
 
	EXPORT	|SPI_PowerUp| 
 
  00000			 AREA	 |.text| { |SPI_PowerUp| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$SPI_PowerUp|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_PowerUp| } ; comdat associative 
|$T39107| DCD	|$L39106| 
	DCD	0x40000100 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |SPI_PowerUp| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |SPI_PowerUp| PROC 
 
; 793  : { 
 
  00000		 |$L39106| 
  00000		 |$M39104| 
 
; 794  : 	UNREFERENCED_PARAMETER(dwContext); 
; 795  : 	 
; 796  : } 
 
  00000	e12fff1e	 bx          lr 
  00004		 |$M39105| 
 
			 ENDP  ; |SPI_PowerUp| 
 
	END