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


; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4345  
 
	TTL	E:\WM604\PLATFORM\SEUICBSP\SRC\DRIVERS\DMBDRV\SmsNdis\.\SmsNdis.c 
	CODE32 
 
  00000			 AREA	 |.drectve|, DRECTVE 
	DCB	"-defaultlib:coredll.lib " 
	DCB	"-defaultlib:corelibc.lib " 
 
	EXPORT	|dpCurSettings| [ DATA ] 
 
  00000			 AREA	 |.data|, DATA 
|RemoteMAC| DCB	0x0 
	DCB	0x1 
	DCB	0x1 
	DCB	0x3 
	DCB	0x4 
	DCB	0x40 
	%	2 
|LocalMAC| DCB	0x0 
	DCB	0x4 
	DCB	0x76 
	DCB	0xd 
	DCB	0xad 
	DCB	0x7a 
	%	2 
|dpCurSettings| DCB "S", 0x0, "i", 0x0, "a", 0x0, "n", 0x0, "o", 0x0, " ", 0x0 
	DCB	"N", 0x0, "D", 0x0, "I", 0x0, "S", 0x0, 0x0, 0x0 
	%	42 
	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	"I", 0x0, "n", 0x0, "f", 0x0, "o", 0x0, 0x0, 0x0 
	%	54 
	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 
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0 
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0 
	%	44 
	DCB	"T", 0x0, "e", 0x0, "m", 0x0, "p", 0x0, "o", 0x0, "r", 0x0 
	DCB	"a", 0x0, "r", 0x0, "y", 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 
	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 
	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 
	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 
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0 
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0 
	%	44 
	DCD	0x3 
	EXPORT	|DllMain| 
; File e:\wm604\platform\seuicbsp\src\drivers\dmbdrv\smsndis\smsndis.c 
 
  00000			 AREA	 |.text| { |DllMain| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$DllMain|, PDATA, SELECTION=5, ASSOC=|.text| { |DllMain| } ; comdat associative 
|$T42309| DCD	|$L42308| 
	DCD	0x40000200 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |DllMain| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |DllMain| PROC 
 
; 120  : { 
 
  00000		 |$L42308| 
  00000		 |$M42306| 
 
; 121  :     BOOL bRc = TRUE; 
; 122  :     
; 123  :     UNREFERENCED_PARAMETER(hDllHandle); 
; 124  :     UNREFERENCED_PARAMETER(lpreserved); 
; 125  :  
; 126  : 	switch (dwReason) 
; 127  : 	{ 
; 128  : 		case DLL_PROCESS_ATTACH: 
; 129  : 			REGISTERZONES(hDllHandle); 
; 130  : #ifdef LOG_TO_FILE 
; 131  : 			hLogFile = CreateFile(LOG_FILE, 
; 132  :                                   GENERIC_WRITE, 
; 133  :                                   FILE_SHARE_READ | FILE_SHARE_WRITE, 
; 134  :                                   NULL, 
; 135  :                                   CREATE_ALWAYS, 
; 136  :                                   0, 
; 137  :                                   NULL); 
; 138  :  
; 139  : 			if (hLogFile == INVALID_HANDLE_VALUE) 
; 140  : 				return FALSE; 
; 141  : 			InitializeCriticalSection(&g_CriticalSection); 
; 142  : #endif 
; 143  : 			DBGMSG(ZONE_INIT, (TEXT("SmsNdis: DLL_PROCESS_ATTACH\r\n"))); 
; 144  : 			break; 
; 145  :  
; 146  : 		case DLL_PROCESS_DETACH: 
; 147  : 			DBGMSG(ZONE_INIT, (TEXT("SmsNdis: DLL_PROCESS_DETACH\r\n"))); 
; 148  : #ifdef LOG_TO_FILE 
; 149  : 			if (hLogFile != INVALID_HANDLE_VALUE) 
; 150  : 			{ 
; 151  : 				CloseHandle(hLogFile); 
; 152  : 			} 
; 153  : 			DeleteCriticalSection(&g_CriticalSection); 
; 154  : #endif 
; 155  : 			break; 
; 156  :  
; 157  : 		default: 
; 158  : 			break; 
; 159  : 	} 
; 160  :  
; 161  :     return bRc; 
 
  00000	e3a00001	 mov         r0, #1 
 
; 162  : } 
 
  00004	e12fff1e	 bx          lr 
  00008		 |$M42307| 
 
			 ENDP  ; |DllMain| 
 
	EXPORT	|SmsNdis_HaltHandler| 
	IMPORT	|NdisFreeMemory| 
	IMPORT	|NdisTerminateWrapper| 
	IMPORT	|CloseHandle| 
 
  00000			 AREA	 |.text| { |SmsNdis_HaltHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$SmsNdis_HaltHandler|, PDATA, SELECTION=5, ASSOC=|.text| { |SmsNdis_HaltHandler| } ; comdat associative 
|$T42317| DCD	|$L42316| 
	DCD	0x40001401 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |SmsNdis_HaltHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |SmsNdis_HaltHandler| PROC 
 
; 251  : { 
 
  00000		 |$L42316| 
  00000	e92d4010	 stmdb       sp!, {r4, lr} 
  00004		 |$M42314| 
  00004	e1b04000	 movs        r4, r0 
 
; 252  : 	PSMS_SMS_NDIS_ST pSmsNdis = (PSMS_SMS_NDIS_ST)MiniportAdapterContext; 
; 253  :  
; 254  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: +SmsNdis_HaltHandler\r\n"))); 
; 255  :  
; 256  : 	if (pSmsNdis) 
 
  00008	0a00000e	 beq         |$L41704| 
 
; 257  : 	{ 
; 258  : 		if (pSmsNdis->hGenDrv) 
 
  0000c	e5943008	 ldr         r3, [r4, #8] 
  00010	e3530000	 cmp         r3, #0 
  00014	0a000003	 beq         |$L41705| 
 
; 259  : 		{ 
; 260  : 			CloseHandle(pSmsNdis->hGenDrv); 
 
  00018	e1a00003	 mov         r0, r3 
  0001c	eb000000	 bl          CloseHandle 
 
; 261  : 			pSmsNdis->hGenDrv = NULL; 
 
  00020	e3a03000	 mov         r3, #0 
  00024	e5843008	 str         r3, [r4, #8] 
  00028		 |$L41705| 
 
; 262  : 		} 
; 263  :  
; 264  : 		NdisTerminateWrapper(pSmsNdis->hWrapperConfigContext,NULL); 
 
  00028	e5940004	 ldr         r0, [r4, #4] 
  0002c	e3a01000	 mov         r1, #0 
  00030	eb000000	 bl          NdisTerminateWrapper 
 
; 265  :  
; 266  : 		// freeing the SmsNdis device 
; 267  : 		NdisFreeMemory(pSmsNdis,sizeof(SMS_SMS_NDIS_ST),0); 
 
  00034	e3a01e65	 mov         r1, #0x65, 28 
  00038	e3811004	 orr         r1, r1, #4 
  0003c	e3a02000	 mov         r2, #0 
  00040	e1a00004	 mov         r0, r4 
  00044	eb000000	 bl          NdisFreeMemory 
  00048		 |$L41704| 
 
; 268  : 	} 
; 269  :  
; 270  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: -SmsNdis_HaltHandler\r\n"))); 
; 271  : } 
 
  00048	e8bd4010	 ldmia       sp!, {r4, lr} 
  0004c	e12fff1e	 bx          lr 
  00050		 |$M42315| 
 
			 ENDP  ; |SmsNdis_HaltHandler| 
 
	EXPORT	|SmsNdis_QueryInformationHandler| 
	EXPORT	|??_C@_0BF@HDBOHGE@Siano?5NDIS?5Miniport?$AA?$AA@| [ DATA ] ; `string' 
	IMPORT	|__security_cookie| 
	IMPORT	|__security_check_cookie| 
	IMPORT	|strlen| 
	IMPORT	|memcpy| 
 
  00000			 AREA	 |.text| { |SmsNdis_QueryInformationHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$SmsNdis_QueryInformationHandler|, PDATA, SELECTION=5, ASSOC=|.text| { |SmsNdis_QueryInformationHandler| } ; comdat associative 
|$T42353| DCD	|$L42352| 
	DCD	0x4000e802 
 
  00000			 AREA	 |.rdata| { |??_C@_0BF@HDBOHGE@Siano?5NDIS?5Miniport?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_0BF@HDBOHGE@Siano?5NDIS?5Miniport?$AA?$AA@| DCB "Siano NDIS Minipo" 
	DCB	"rt", 0x0, 0x0				; `string' 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |SmsNdis_QueryInformationHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |SmsNdis_QueryInformationHandler| PROC 
 
; 293  : { 
 
  00000		 |$L42352| 
  00000	e92d4ff0	 stmdb       sp!, {r4 - r11, lr} 
  00004	e24dd010	 sub         sp, sp, #0x10 
  00008		 |$M42350| 
  00008	e1a08003	 mov         r8, r3 
  0000c	e1a0a002	 mov         r10, r2 
  00010	e59fe384	 ldr         lr, [pc, #0x384] 
  00014	e59ee000	 ldr         lr, [lr] 
  00018	e58de00c	 str         lr, [sp, #0xC] 
 
; 294  :     NDIS_STATUS ndisStatus; 
; 295  : 	PSMS_SMS_NDIS_ST pSmsNdis; 
; 296  : 	PVOID pReturnBuff; 
; 297  : 	ULONG returnBuffLen; 
; 298  : 	ULONG tmpULong; 
; 299  : 	USHORT tmpUshort; 
; 300  : 	NDIS_HARDWARE_STATUS hwStatus; 
; 301  : 	NDIS_MEDIUM ndisMedium; 
; 302  :     const PCHAR strVendor = "Siano NDIS Miniport\0"; 
; 303  : 	const UCHAR EmuEthernetAddr[] = {0x00,0x04,0x76,0x0D,0xAD,0x7A}; 
; 304  :  
; 305  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: +SmsNdis_QueryInformationHandler\r\n"),Oid)); 
; 306  :  
; 307  : 	pSmsNdis = (PSMS_SMS_NDIS_ST)MiniportAdapterContext; 
; 308  : 	*pBytesWritten = 0; 
 
  0001c	e59d9034	 ldr         r9, [sp, #0x34] 
 
; 309  : 	*pBytesNeeded = 0; 
 
  00020	e59d7038	 ldr         r7, [sp, #0x38] 
  00024	e3a0e000	 mov         lr, #0 
  00028	e589e000	 str         lr, [r9] 
  0002c	e587e000	 str         lr, [r7] 
 
; 310  : 	ndisStatus = NDIS_STATUS_SUCCESS; 
; 311  : 	pReturnBuff = NULL; 
; 312  : 	returnBuffLen = 0; 
; 313  :  
; 314  : #define CASE_OID(Oid) \ 
; 315  : 	case Oid: \ 
; 316  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: Query 0x%08X ") TEXT(#Oid) TEXT("\r\n"),Oid)); 
; 317  :  
; 318  : #define CASE_OID_NOT_SUPPORTED(Oid) \ 
; 319  : 	case Oid: \ 
; 320  : 	DBGMSG(ZONE_WARNING, (TEXT("SmsNdis: Query 0x%08X ") TEXT(#Oid) TEXT(" not supported\r\n"),Oid)); \ 
; 321  : 	ndisStatus = NDIS_STATUS_NOT_SUPPORTED; 
; 322  :  
; 323  : 	switch(Oid) 
 
  00030	e59fe360	 ldr         lr, [pc, #0x360] 
  00034	e3a04076	 mov         r4, #0x76 
  00038	e3a03000	 mov         r3, #0 
  0003c	e3a02004	 mov         r2, #4 
  00040	e3a0500d	 mov         r5, #0xD 
  00044	e3a060ad	 mov         r6, #0xAD 
  00048	e3a0b07a	 mov         r11, #0x7A 
  0004c	e5cd4006	 strb        r4, [sp, #6] 
  00050	e151000e	 cmp         r1, lr 
  00054	e5cd3004	 strb        r3, [sp, #4] 
  00058	e5cd2005	 strb        r2, [sp, #5] 
  0005c	e5cd5007	 strb        r5, [sp, #7] 
  00060	e5cd6008	 strb        r6, [sp, #8] 
  00064	e5cdb009	 strb        r11, [sp, #9] 
  00068	e3a04000	 mov         r4, #0 
  0006c	8a000033	 bhi         |$L42321| 
  00070	0a000098	 beq         |$L41851| 
  00074	e59f3318	 ldr         r3, [pc, #0x318] 
  00078	e0412003	 sub         r2, r1, r3 
  0007c	e3520015	 cmp         r2, #0x15 
  00080	8a000047	 bhi         |$L41940| 
  00084	e1a03082	 mov         r3, r2, lsl #1 
  00088	e083300f	 add         r3, r3, pc 
  0008c	e1d330b4	 ldrh        r3, [r3, #4] 
  00090	e08ff003	 add         pc, pc, r3 
  00094		 |$L42347| 
  00094		 |$L42346| 
  00094	0240		 DCW         0x240 
  00096	0028		 DCW         0x28 
  00098	0028		 DCW         0x28 
  0009a	0028		 DCW         0x28 
  0009c	003c		 DCW         0x3c 
  0009e	003c		 DCW         0x3c 
  000a0	0054		 DCW         0x54 
  000a2	0028		 DCW         0x28 
  000a4	003c		 DCW         0x3c 
  000a6	0028		 DCW         0x28 
  000a8	003c		 DCW         0x3c 
  000aa	0240		 DCW         0x240 
  000ac	0060		 DCW         0x60 
  000ae	0088		 DCW         0x88 
  000b0	0090		 DCW         0x90 
  000b2	0074		 DCW         0x74 
  000b4	003c		 DCW         0x3c 
  000b6	010c		 DCW         0x10c 
  000b8	0098		 DCW         0x98 
  000ba	0028		 DCW         0x28 
  000bc	00a0		 DCW         0xa0 
  000be	0074		 DCW         0x74 
  000c0		 |$L41744| 
 
; 324  : 	{ 
; 325  : 		CASE_OID(OID_GEN_HARDWARE_STATUS) 
; 326  :             hwStatus = NdisHardwareStatusReady; 
 
  000c0	e3a03000	 mov         r3, #0 
  000c4		 |$L42343| 
  000c4	e58d3000	 str         r3, [sp] 
 
; 327  :             pReturnBuff = (PVOID)&hwStatus; 
 
  000c8	e28d6000	 add         r6, sp, #0 
 
; 328  :             returnBuffLen  = sizeof(hwStatus); 
 
  000cc	e3a05004	 mov         r5, #4 
 
; 329  :             break; 
 
  000d0	ea00008c	 b           |$L41741| 
  000d4		 |$L41753| 
 
; 330  : 		CASE_OID(OID_GEN_MEDIA_SUPPORTED) 
; 331  :             ndisMedium = NdisMedium802_3; 
; 332  :             pReturnBuff = (PVOID)&ndisMedium; 
; 333  :             returnBuffLen  = sizeof(ndisMedium); 
; 334  :             break; 
; 335  : 		CASE_OID(OID_GEN_MEDIA_IN_USE) 
; 336  :             ndisMedium = NdisMedium802_3; 
; 337  :             pReturnBuff = (PVOID)&ndisMedium; 
; 338  :             returnBuffLen  = sizeof(ndisMedium); 
; 339  :             break; 
; 340  : 		CASE_OID(OID_GEN_MAXIMUM_LOOKAHEAD) 
; 341  :             tmpULong = MAX_IP_PACKET_LEN; 
 
  000d4	e3a03e5d	 mov         r3, #0x5D, 28 
  000d8	e383300c	 orr         r3, r3, #0xC 
  000dc		 |$L42344| 
 
; 342  :             pReturnBuff = (PVOID)&tmpULong; 
 
  000dc	e28d6000	 add         r6, sp, #0 
 
; 343  :             returnBuffLen  = sizeof(tmpULong); 
 
  000e0	e3a05004	 mov         r5, #4 
  000e4	e58d3000	 str         r3, [sp] 
 
; 344  :             break; 
 
  000e8	ea000086	 b           |$L41741| 
  000ec		 |$L41759| 
 
; 345  : 		CASE_OID(OID_GEN_MAXIMUM_FRAME_SIZE) 
; 346  :             tmpULong = MAX_IP_PACKET_LEN; 
; 347  :             pReturnBuff = (PVOID)&tmpULong; 
; 348  :             returnBuffLen  = sizeof(tmpULong); 
; 349  :             break; 
; 350  : 		CASE_OID(OID_GEN_LINK_SPEED) 
; 351  :             tmpULong = 100000; 
 
  000ec	e3a03b61	 mov         r3, #0x61, 22 
  000f0	e3833e2a	 orr         r3, r3, #0x2A, 28 
 
; 352  :             pReturnBuff = (PVOID)&tmpULong; 
; 353  :             returnBuffLen  = sizeof(tmpULong); 
; 354  :             break; 
 
  000f4	eafffff8	 b           |$L42344| 
  000f8		 |$L41774| 
 
; 355  : 		CASE_OID(OID_GEN_TRANSMIT_BUFFER_SPACE) 
; 356  :             tmpULong = 0; 
; 357  :             pReturnBuff = (PVOID)&tmpULong; 
; 358  :             returnBuffLen  = sizeof(tmpULong); 
; 359  :             break; 
; 360  : 		CASE_OID(OID_GEN_RECEIVE_BUFFER_SPACE) 
; 361  :             tmpULong = MAX_IP_PACKET_LEN; 
; 362  :             pReturnBuff = (PVOID)&tmpULong; 
; 363  :             returnBuffLen  = sizeof(tmpULong); 
; 364  :             break; 
; 365  : 		CASE_OID(OID_GEN_TRANSMIT_BLOCK_SIZE) 
; 366  :             tmpULong = 0; 
; 367  :             pReturnBuff = (PVOID)&tmpULong; 
; 368  :             returnBuffLen  = sizeof(tmpULong); 
; 369  :             break; 
; 370  : 		CASE_OID(OID_GEN_RECEIVE_BLOCK_SIZE) 
; 371  :             tmpULong = MAX_IP_PACKET_LEN; 
; 372  :             pReturnBuff = (PVOID)&tmpULong; 
; 373  :             returnBuffLen  = sizeof(tmpULong); 
; 374  :             break; 
; 375  : 		CASE_OID(OID_GEN_VENDOR_DESCRIPTION) 
; 376  : 			pReturnBuff = (PVOID)strVendor; 
 
  000f8	e59f6290	 ldr         r6, [pc, #0x290] 
 
; 377  :             returnBuffLen  = strlen(strVendor) + 1; 
 
  000fc	e1a00006	 mov         r0, r6 
  00100	eb000000	 bl          strlen 
  00104	e2805001	 add         r5, r0, #1 
 
; 378  :             break; 
 
  00108	ea00007e	 b           |$L41741| 
  0010c		 |$L41777| 
 
; 379  :         CASE_OID(OID_GEN_VENDOR_DRIVER_VERSION) 
; 380  :             tmpUshort = 0x0001; 
 
  0010c	e3a03001	 mov         r3, #1 
  00110	e1cd30b0	 strh        r3, [sp] 
 
; 381  :             pReturnBuff = (PVOID)&tmpUshort; 
 
  00114	e28d6000	 add         r6, sp, #0 
 
; 382  :             returnBuffLen  = sizeof(tmpUshort); 
 
  00118	e3a05002	 mov         r5, #2 
 
; 383  :             break; 
 
  0011c	ea000079	 b           |$L41741| 
  00120		 |$L41783| 
 
; 384  :         CASE_OID(OID_GEN_DRIVER_VERSION) 
; 385  :             tmpUshort = 0x0001; 
; 386  :             pReturnBuff = (PVOID)&tmpUshort; 
; 387  :             returnBuffLen  = sizeof(tmpUshort); 
; 388  :             break; 
; 389  : 		CASE_OID(OID_GEN_CURRENT_PACKET_FILTER) 
; 390  : 			tmpULong = pSmsNdis->CurrentPacketFilter; 
 
  00120	e5903058	 ldr         r3, [r0, #0x58] 
 
; 391  :             pReturnBuff = (PVOID)&tmpULong; 
; 392  :             returnBuffLen  = sizeof(tmpULong); 
; 393  :             break; 
 
  00124	eaffffec	 b           |$L42344| 
  00128		 |$L41786| 
 
; 394  : 		CASE_OID(OID_GEN_CURRENT_LOOKAHEAD) 
; 395  :             tmpULong = pSmsNdis->CurrentLookahead; 
 
  00128	e590305c	 ldr         r3, [r0, #0x5C] 
 
; 396  :             pReturnBuff = (PVOID)&tmpULong; 
; 397  :             returnBuffLen  = sizeof(tmpULong); 
; 398  :             break; 
 
  0012c	eaffffea	 b           |$L42344| 
  00130		 |$L41792| 
 
; 399  : 		CASE_OID(OID_GEN_MAXIMUM_TOTAL_SIZE) 
; 400  :             tmpULong = MAX_IP_PACKET_LEN; 
; 401  :             pReturnBuff = (PVOID)&tmpULong; 
; 402  :             returnBuffLen  = sizeof(tmpULong); 
; 403  :             break; 
; 404  :         CASE_OID(OID_GEN_MAC_OPTIONS) 
; 405  : 			tmpULong = NDIS_MAC_OPTION_TRANSFERS_NOT_PEND |  
; 406  : 						NDIS_MAC_OPTION_RECEIVE_SERIALIZED |  
; 407  : 						NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA | 
; 408  : 						NDIS_MAC_OPTION_NO_LOOPBACK; 
 
  00130	e3a0300f	 mov         r3, #0xF 
 
; 409  :             pReturnBuff = (PVOID)&tmpULong; 
; 410  :             returnBuffLen  = sizeof(tmpULong); 
; 411  :             break; 
 
  00134	eaffffe2	 b           |$L42343| 
  00138		 |$L41795| 
 
; 412  : 		CASE_OID(OID_GEN_MAXIMUM_SEND_PACKETS) 
; 413  :             tmpULong = 1; 
 
  00138	e3a03001	 mov         r3, #1 
 
; 414  :             pReturnBuff = (PVOID)&tmpULong; 
; 415  :             returnBuffLen  = sizeof(tmpULong); 
; 416  :             break; 
 
  0013c	eaffffe0	 b           |$L42343| 
  00140		 |$L42321| 
 
; 310  : 	ndisStatus = NDIS_STATUS_SUCCESS; 
; 311  : 	pReturnBuff = NULL; 
; 312  : 	returnBuffLen = 0; 
; 313  :  
; 314  : #define CASE_OID(Oid) \ 
; 315  : 	case Oid: \ 
; 316  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: Query 0x%08X ") TEXT(#Oid) TEXT("\r\n"),Oid)); 
; 317  :  
; 318  : #define CASE_OID_NOT_SUPPORTED(Oid) \ 
; 319  : 	case Oid: \ 
; 320  : 	DBGMSG(ZONE_WARNING, (TEXT("SmsNdis: Query 0x%08X ") TEXT(#Oid) TEXT(" not supported\r\n"),Oid)); \ 
; 321  : 	ndisStatus = NDIS_STATUS_NOT_SUPPORTED; 
; 322  :  
; 323  : 	switch(Oid) 
 
  00140	e59f3244	 ldr         r3, [pc, #0x244] 
  00144	e1510003	 cmp         r1, r3 
  00148	8a00003c	 bhi         |$L42322| 
  0014c	0a000061	 beq         |$L41851| 
  00150	e59f3230	 ldr         r3, [pc, #0x230] 
  00154	e1510003	 cmp         r1, r3 
  00158	8a000022	 bhi         |$L42323| 
  0015c	0a00005d	 beq         |$L41851| 
  00160	e3a03802	 mov         r3, #2, 16 
  00164	e3833f41	 orr         r3, r3, #0x41, 30 
  00168	e1510003	 cmp         r1, r3 
  0016c	8a000015	 bhi         |$L42324| 
  00170	0affffd2	 beq         |$L41744| 
  00174	e59f3208	 ldr         r3, [pc, #0x208] 
  00178	e1510003	 cmp         r1, r3 
  0017c	0a000055	 beq         |$L41851| 
  00180	e59f31f8	 ldr         r3, [pc, #0x1F8] 
  00184	e1510003	 cmp         r1, r3 
  00188	0affffcc	 beq         |$L41744| 
  0018c	e59f31e8	 ldr         r3, [pc, #0x1E8] 
  00190	e1510003	 cmp         r1, r3 
  00194	0a000009	 beq         |$L41801| 
  00198	e59f31d8	 ldr         r3, [pc, #0x1D8] 
  0019c	e1510003	 cmp         r1, r3 
  001a0	0affffc6	 beq         |$L41744| 
  001a4		 |$L41940| 
 
; 546  : 			{ 
; 547  : 				DBGMSG(ZONE_ERROR, (TEXT("SmsNdis: Wrong handling of OID\r\n"))); 
; 548  : 				ndisStatus = NDIS_STATUS_INVALID_OID; 
 
  001a4	e59f41c8	 ldr         r4, [pc, #0x1C8] 
  001a8		 |$L41941| 
 
; 549  : 			} 
; 550  : 		} 
; 551  : 	} 
; 552  :  
; 553  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: -SmsNdis_QueryInformationHandler. status 0x%X\r\n"),ndisStatus)); 
; 554  : 	return ndisStatus; 
 
  001a8	e59d000c	 ldr         r0, [sp, #0xC] 
  001ac	eb000000	 bl          __security_check_cookie 
  001b0	e1a00004	 mov         r0, r4 
 
; 555  : } 
 
  001b4	e28dd010	 add         sp, sp, #0x10 
  001b8	e8bd4ff0	 ldmia       sp!, {r4 - r11, lr} 
  001bc	e12fff1e	 bx          lr 
  001c0		 |$L41801| 
 
; 417  : 		CASE_OID(OID_GEN_XMIT_OK) 
; 418  :             tmpULong = 0; 
; 419  :             pReturnBuff = (PVOID)&tmpULong; 
; 420  :             returnBuffLen  = sizeof(tmpULong); 
; 421  :             break;			 
; 422  : 		CASE_OID(OID_GEN_RCV_OK) 
; 423  : 			tmpULong = pSmsNdis->RxPacketCount; 
 
  001c0	e5903060	 ldr         r3, [r0, #0x60] 
 
; 424  :             pReturnBuff = (PVOID)&tmpULong; 
; 425  :             returnBuffLen  = sizeof(tmpULong); 
; 426  :             break; 
 
  001c4	eaffffc4	 b           |$L42344| 
  001c8		 |$L42324| 
 
; 310  : 	ndisStatus = NDIS_STATUS_SUCCESS; 
; 311  : 	pReturnBuff = NULL; 
; 312  : 	returnBuffLen = 0; 
; 313  :  
; 314  : #define CASE_OID(Oid) \ 
; 315  : 	case Oid: \ 
; 316  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: Query 0x%08X ") TEXT(#Oid) TEXT("\r\n"),Oid)); 
; 317  :  
; 318  : #define CASE_OID_NOT_SUPPORTED(Oid) \ 
; 319  : 	case Oid: \ 
; 320  : 	DBGMSG(ZONE_WARNING, (TEXT("SmsNdis: Query 0x%08X ") TEXT(#Oid) TEXT(" not supported\r\n"),Oid)); \ 
; 321  : 	ndisStatus = NDIS_STATUS_NOT_SUPPORTED; 
; 322  :  
; 323  : 	switch(Oid) 
 
  001c8	e59f31a0	 ldr         r3, [pc, #0x1A0] 
  001cc	e1510003	 cmp         r1, r3 
  001d0	0affffba	 beq         |$L41744| 
  001d4	e59f3190	 ldr         r3, [pc, #0x190] 
  001d8	e1510003	 cmp         r1, r3 
  001dc	0a00003d	 beq         |$L41851| 
  001e0	e59f3180	 ldr         r3, [pc, #0x180] 
 
; 482  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_DIRECTED_BYTES_XMIT) 
; 483  : 			break; 
; 484  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_DIRECTED_FRAMES_XMIT) 
; 485  : 			break; 
 
  001e4	ea000039	 b           |$L42345| 
  001e8		 |$L42323| 
 
; 310  : 	ndisStatus = NDIS_STATUS_SUCCESS; 
; 311  : 	pReturnBuff = NULL; 
; 312  : 	returnBuffLen = 0; 
; 313  :  
; 314  : #define CASE_OID(Oid) \ 
; 315  : 	case Oid: \ 
; 316  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: Query 0x%08X ") TEXT(#Oid) TEXT("\r\n"),Oid)); 
; 317  :  
; 318  : #define CASE_OID_NOT_SUPPORTED(Oid) \ 
; 319  : 	case Oid: \ 
; 320  : 	DBGMSG(ZONE_WARNING, (TEXT("SmsNdis: Query 0x%08X ") TEXT(#Oid) TEXT(" not supported\r\n"),Oid)); \ 
; 321  : 	ndisStatus = NDIS_STATUS_NOT_SUPPORTED; 
; 322  :  
; 323  : 	switch(Oid) 
 
  001e8	e3a03802	 mov         r3, #2, 16 
  001ec	e3833f81	 orr         r3, r3, #0x81, 30 
  001f0	e1510003	 cmp         r1, r3 
  001f4	0a000037	 beq         |$L41851| 
  001f8	e59f3164	 ldr         r3, [pc, #0x164] 
  001fc	e1510003	 cmp         r1, r3 
  00200	0a000034	 beq         |$L41851| 
  00204	e59f3154	 ldr         r3, [pc, #0x154] 
  00208	e1510003	 cmp         r1, r3 
  0020c	0a000031	 beq         |$L41851| 
  00210	e59f3144	 ldr         r3, [pc, #0x144] 
  00214	e1510003	 cmp         r1, r3 
  00218	0a00002e	 beq         |$L41851| 
  0021c	e3a03802	 mov         r3, #2, 16 
  00220	e3833f82	 orr         r3, r3, #0x82, 30 
  00224	e1510003	 cmp         r1, r3 
  00228	0a00002a	 beq         |$L41851| 
  0022c	e59f3124	 ldr         r3, [pc, #0x124] 
  00230	e1510003	 cmp         r1, r3 
  00234	0a000027	 beq         |$L41851| 
  00238	e59f3114	 ldr         r3, [pc, #0x114] 
 
; 486  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_MULTICAST_BYTES_XMIT) 
; 487  : 			break; 
; 488  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_MULTICAST_FRAMES_XMIT) 
; 489  : 			break; 
; 490  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_BROADCAST_BYTES_XMIT) 
; 491  : 			break; 
; 492  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_BROADCAST_FRAMES_XMIT) 
; 493  : 			break; 
; 494  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_DIRECTED_BYTES_RCV) 
; 495  : 			break; 
; 496  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_DIRECTED_FRAMES_RCV) 
; 497  : 			break; 
; 498  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_MULTICAST_BYTES_RCV) 
; 499  : 			break; 
; 500  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_MULTICAST_FRAMES_RCV) 
; 501  : 			break; 
 
  0023c	ea000023	 b           |$L42345| 
  00240		 |$L42322| 
 
; 310  : 	ndisStatus = NDIS_STATUS_SUCCESS; 
; 311  : 	pReturnBuff = NULL; 
; 312  : 	returnBuffLen = 0; 
; 313  :  
; 314  : #define CASE_OID(Oid) \ 
; 315  : 	case Oid: \ 
; 316  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: Query 0x%08X ") TEXT(#Oid) TEXT("\r\n"),Oid)); 
; 317  :  
; 318  : #define CASE_OID_NOT_SUPPORTED(Oid) \ 
; 319  : 	case Oid: \ 
; 320  : 	DBGMSG(ZONE_WARNING, (TEXT("SmsNdis: Query 0x%08X ") TEXT(#Oid) TEXT(" not supported\r\n"),Oid)); \ 
; 321  : 	ndisStatus = NDIS_STATUS_NOT_SUPPORTED; 
; 322  :  
; 323  : 	switch(Oid) 
 
  00240	e59f3108	 ldr         r3, [pc, #0x108] 
  00244	e1510003	 cmp         r1, r3 
  00248	8a000013	 bhi         |$L42325| 
  0024c	0a00002b	 beq         |$L41819| 
  00250	e3a03802	 mov         r3, #2, 16 
  00254	e3833f83	 orr         r3, r3, #0x83, 30 
  00258	e0412003	 sub         r2, r1, r3 
  0025c	e3520009	 cmp         r2, #9 
  00260	8affffcf	 bhi         |$L41940| 
  00264	e1a03102	 mov         r3, r2, lsl #2 
  00268	e083300f	 add         r3, r3, pc 
  0026c	e5933004	 ldr         r3, [r3, #4] 
  00270	e08ff003	 add         pc, pc, r3 
  00274		 |$L42349| 
  00274		 |$L42348| 
  00274	00000060	 DCD         0x60 
  00278	00000060	 DCD         0x60 
  0027c	00000060	 DCD         0x60 
  00280	00000060	 DCD         0x60 
  00284	00000060	 DCD         0x60 
  00288	00000060	 DCD         0x60 
  0028c	00000060	 DCD         0x60 
  00290	fffffe48	 DCD         0xfffffe48 
  00294	ffffff2c	 DCD         0xffffff2c 
  00298	00000060	 DCD         0x60 
  0029c		 |$L42325| 
  0029c	e59f30a8	 ldr         r3, [pc, #0xA8] 
  002a0	e1510003	 cmp         r1, r3 
  002a4	0a000015	 beq         |$L41819| 
  002a8	e59f3098	 ldr         r3, [pc, #0x98] 
  002ac	e1510003	 cmp         r1, r3 
  002b0	0a00000d	 beq         |$L41825| 
  002b4	e59f3088	 ldr         r3, [pc, #0x88] 
  002b8	e1510003	 cmp         r1, r3 
  002bc	0a000008	 beq         |$L41822| 
  002c0	e59f3078	 ldr         r3, [pc, #0x78] 
  002c4	e1510003	 cmp         r1, r3 
  002c8	0a000002	 beq         |$L41851| 
  002cc	e59f3068	 ldr         r3, [pc, #0x68] 
  002d0		 |$L42345| 
  002d0	e1510003	 cmp         r1, r3 
 
; 502  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_BROADCAST_BYTES_RCV) 
; 503  : 			break; 
; 504  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_BROADCAST_FRAMES_RCV) 
; 505  : 			break; 
; 506  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_RCV_CRC_ERROR) 
; 507  : 			break; 
; 508  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_TRANSMIT_QUEUE_LENGTH) 
; 509  : 			break; 
; 510  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_GET_TIME_CAPS) 
; 511  : 			break; 
; 512  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_GET_NETCARD_TIME) 
; 513  : 			break; 
; 514  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_NETCARD_LOAD) 
; 515  : 			break; 
; 516  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_DEVICE_PROFILE) 
; 517  : 			break; 
; 518  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_MEDIA_SENSE_COUNTS) 
; 519  : 			break; 
; 520  : 		 
; 521  : 		default: 
; 522  : 			DBGMSG(ZONE_WARNING, (TEXT("SmsNdis: Query Oid 0x%08X invalid or not supported\r\n"),Oid)); 
; 523  : 			ndisStatus = NDIS_STATUS_INVALID_OID; 
; 524  : 			break; 
 
  002d4	1affffb2	 bne         |$L41940| 
  002d8		 |$L41851| 
 
; 464  : 		CASE_OID(OID_GEN_MEDIA_CONNECT_STATUS) 
; 465  :             tmpULong = NdisMediaStateConnected; 
; 466  :             pReturnBuff = (PVOID)&tmpULong; 
; 467  :             returnBuffLen  = sizeof(tmpULong); 
; 468  :             break; 
; 469  :  
; 470  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_SUPPORTED_LIST) 
; 471  :             break; 
; 472  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_VENDOR_ID) 
; 473  :             break; 
; 474  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_PHYSICAL_MEDIUM) 
; 475  :             break; 
; 476  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_MEDIA_CAPABILITIES) 
; 477  : 			break; 
; 478  : 		CASE_OID_NOT_SUPPORTED(OID_PNP_CAPABILITIES) 
; 479  :             break; 
; 480  : 		CASE_OID_NOT_SUPPORTED(OID_TCP_TASK_OFFLOAD) 
 
  002d8	e3a04103	 mov         r4, #3, 2 
  002dc	e38440bb	 orr         r4, r4, #0xBB 
 
; 481  :             break; 
 
  002e0	eaffffb0	 b           |$L41941| 
  002e4		 |$L41822| 
 
; 454  :             break; 
; 455  : 		CASE_OID(OID_802_3_MAXIMUM_LIST_SIZE) 
; 456  :             tmpULong = MAX_MULTICAST_LIST_SIZE; 
 
  002e4	e3a0300c	 mov         r3, #0xC 
 
; 457  :             pReturnBuff = (PVOID)&tmpULong; 
; 458  :             returnBuffLen  = sizeof(tmpULong); 
; 459  :             break; 
 
  002e8	eaffff75	 b           |$L42343| 
  002ec		 |$L41825| 
 
; 460  : 		CASE_OID(OID_802_3_MULTICAST_LIST) 
; 461  : 			pReturnBuff = (PVOID)pSmsNdis->MulticastList; 
; 462  :             returnBuffLen  = pSmsNdis->MulticastListCount * ETHERNET_ADDRESS_LEN;			 
 
  002ec	e5903054	 ldr         r3, [r0, #0x54] 
  002f0	e280600c	 add         r6, r0, #0xC 
  002f4	e0833083	 add         r3, r3, r3, lsl #1 
  002f8	e1a05083	 mov         r5, r3, lsl #1 
 
; 463  :             break; 
 
  002fc	ea000001	 b           |$L41741| 
  00300		 |$L41819| 
 
; 427  : 		CASE_OID(OID_GEN_XMIT_ERROR) 
; 428  : 			tmpULong = 0; 
; 429  :             pReturnBuff = (PVOID)&tmpULong; 
; 430  :             returnBuffLen  = sizeof(tmpULong); 
; 431  :             break; 
; 432  : 		CASE_OID(OID_GEN_RCV_ERROR) 
; 433  : 			tmpULong = 0; 
; 434  :             pReturnBuff = (PVOID)&tmpULong; 
; 435  :             returnBuffLen  = sizeof(tmpULong); 
; 436  :             break; 
; 437  : 		CASE_OID(OID_GEN_RCV_NO_BUFFER) 
; 438  : 			tmpULong = 0; 
; 439  :             pReturnBuff = (PVOID)&tmpULong; 
; 440  :             returnBuffLen  = sizeof(tmpULong); 
; 441  :             break; 
; 442  : 		CASE_OID(OID_GEN_INIT_TIME_MS) 
; 443  : 			tmpULong = 0; 
; 444  :             pReturnBuff = (PVOID)&tmpULong; 
; 445  :             returnBuffLen  = sizeof(tmpULong); 
; 446  :             break; 
; 447  : 		CASE_OID(OID_802_3_PERMANENT_ADDRESS) 
; 448  :             pReturnBuff = (PVOID)EmuEthernetAddr; 
; 449  :             returnBuffLen  = sizeof(EmuEthernetAddr); 
; 450  :             break; 
; 451  : 		CASE_OID(OID_802_3_CURRENT_ADDRESS) 
; 452  :             pReturnBuff = (PVOID)EmuEthernetAddr; 
; 453  :             returnBuffLen  = sizeof(EmuEthernetAddr); 
 
  00300	e3a05006	 mov         r5, #6 
  00304	e28d6004	 add         r6, sp, #4 
  00308		 |$L41741| 
 
; 525  : 	} 
; 526  :  
; 527  : #undef CASE_OID 
; 528  : #undef CASE_OID_NOT_SUPPORTED 
; 529  :  
; 530  : 	if (ndisStatus == NDIS_STATUS_SUCCESS) 
; 531  : 	{ 
; 532  : 		if (returnBuffLen > InfoBufferLen) 
 
  00308	e1550008	 cmp         r5, r8 
 
; 533  : 		{ 
; 534  : 			*pBytesNeeded = returnBuffLen; 
 
  0030c	85875000	 strhi       r5, [r7] 
  00310	8affffa4	 bhi         |$L41941| 
 
; 535  : 			DBGMSG(ZONE_ERROR, (TEXT("SmsNdis: pInfoBuffer len too small. Len %d Need %d\r\n"),InfoBufferLen,returnBuffLen)); 
; 536  : 		} 
; 537  : 		else 
; 538  : 		{ 
; 539  : 			if (pReturnBuff) 
 
  00314	e3560000	 cmp         r6, #0 
  00318	0affffa1	 beq         |$L41940| 
 
; 540  : 			{ 
; 541  : 				NdisMoveMemory(pInfoBuffer, pReturnBuff, returnBuffLen); 
 
  0031c	e1a02005	 mov         r2, r5 
  00320	e1a01006	 mov         r1, r6 
  00324	e1a0000a	 mov         r0, r10 
  00328	eb000000	 bl          memcpy 
 
; 542  : 				*pBytesWritten = returnBuffLen; 
; 543  : 				*pBytesNeeded = 0; 
 
  0032c	e3a03000	 mov         r3, #0 
  00330	e5895000	 str         r5, [r9] 
  00334	e5873000	 str         r3, [r7] 
 
; 544  : 			} 
; 545  : 			else 
 
  00338	eaffff9a	 b           |$L41941| 
  0033c		 |$L42355| 
  0033c	fd010100	 DCD         0xfd010100 
  00340	fc010201	 DCD         0xfc010201 
  00344	01010104	 DCD         0x1010104 
  00348	01010103	 DCD         0x1010103 
  0034c	01010102	 DCD         0x1010102 
  00350	01010101	 DCD         0x1010101 
  00354	0002020a	 DCD         0x2020a 
  00358	00020209	 DCD         0x20209 
  0035c	00020207	 DCD         0x20207 
  00360	00020206	 DCD         0x20206 
  00364	00020205	 DCD         0x20205 
  00368	00020202	 DCD         0x20202 
  0036c	00020201	 DCD         0x20201 
  00370	00020105	 DCD         0x20105 
  00374	c0010017	 DCD         0xc0010017 
  00378	00020103	 DCD         0x20103 
  0037c	00020102	 DCD         0x20102 
  00380	00020101	 DCD         0x20101 
  00384	00010202	 DCD         0x10202 
  00388	00020203	 DCD         0x20203 
  0038c	0002020b	 DCD         0x2020b 
  00390	00000000	 DCD         |??_C@_0BF@HDBOHGE@Siano?5NDIS?5Miniport?$AA?$AA@| 
  00394	00010101	 DCD         0x10101 
  00398	00010201	 DCD         0x10201 
  0039c	00000000	 DCD         |__security_cookie| 
  003a0		 |$M42351| 
 
			 ENDP  ; |SmsNdis_QueryInformationHandler| 
 
	EXPORT	|SmsNdis_SetInformationHandler| 
	IMPORT	|memset| 
 
  00000			 AREA	 |.text| { |SmsNdis_SetInformationHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$SmsNdis_SetInformationHandler|, PDATA, SELECTION=5, ASSOC=|.text| { |SmsNdis_SetInformationHandler| } ; comdat associative 
|$T42375| DCD	|$L42374| 
	DCD	0x40005801 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |SmsNdis_SetInformationHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |SmsNdis_SetInformationHandler| PROC 
 
; 576  : { 
 
  00000		 |$L42374| 
  00000	e92d47f0	 stmdb       sp!, {r4 - r10, lr} 
  00004		 |$M42372| 
  00004	e1a05003	 mov         r5, r3 
  00008	e1a0a002	 mov         r10, r2 
  0000c	e1a07000	 mov         r7, r0 
 
; 577  :     NDIS_STATUS ndisStatus; 
; 578  : 	PSMS_SMS_NDIS_ST pSmsNdis; 
; 579  : 	UINT32 i; 
; 580  : 	ULONG tmpULong; 
; 581  :  
; 582  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: +SmsNdis_SetInformationHandler\r\n"))); 
; 583  :  
; 584  : 	pSmsNdis = (PSMS_SMS_NDIS_ST)MiniportAdapterContext; 
; 585  : 	ndisStatus = NDIS_STATUS_SUCCESS; 
; 586  : 	*pBytesRead = 0; 
 
  00010	e59d8020	 ldr         r8, [sp, #0x20] 
 
; 587  : 	*pBytesNeeded = 0; 
 
  00014	e59d6024	 ldr         r6, [sp, #0x24] 
 
; 588  : 	 
; 589  : #define CASE_OID(Oid) \ 
; 590  : 	case Oid: \ 
; 591  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: Set 0x%08X ") TEXT(#Oid) TEXT("\r\n"),Oid)); 
; 592  :  
; 593  : #define CASE_OID_NOT_SUPPORTED(Oid) \ 
; 594  : 	case Oid: \ 
; 595  : 	DBGMSG(ZONE_WARNING, (TEXT("SmsNdis: Set 0x%08X ") TEXT(#Oid) TEXT(" not supported\r\n"),Oid)); \ 
; 596  : 	ndisStatus = NDIS_STATUS_NOT_SUPPORTED; 
; 597  :  
; 598  : 	switch(Oid) 
 
  00018	e59fe13c	 ldr         lr, [pc, #0x13C] 
  0001c	e3a00000	 mov         r0, #0 
  00020	e5880000	 str         r0, [r8] 
  00024	e5860000	 str         r0, [r6] 
  00028	e3a04000	 mov         r4, #0 
  0002c	e151000e	 cmp         r1, lr 
  00030	0a00003a	 beq         |$L41971| 
  00034	e59fe11c	 ldr         lr, [pc, #0x11C] 
  00038	e151000e	 cmp         r1, lr 
  0003c	0a00002e	 beq         |$L41978| 
  00040	e59fe10c	 ldr         lr, [pc, #0x10C] 
  00044	e151000e	 cmp         r1, lr 
  00048	0a00000d	 beq         |$L42004| 
  0004c	e3a03801	 mov         r3, #1, 16 
  00050	e3833f46	 orr         r3, r3, #0x46, 30 
  00054	e1510003	 cmp         r1, r3 
  00058	0a000024	 beq         |$L41998| 
  0005c	e59f30ec	 ldr         r3, [pc, #0xEC] 
  00060	e1510003	 cmp         r1, r3 
  00064	0a000021	 beq         |$L41998| 
  00068	e59f30dc	 ldr         r3, [pc, #0xDC] 
  0006c	e1510003	 cmp         r1, r3 
  00070	0a000006	 beq         |$L41985| 
  00074	e59f30cc	 ldr         r3, [pc, #0xCC] 
  00078	e1510003	 cmp         r1, r3 
 
; 672  : 		default: 
; 673  : 			DBGMSG(ZONE_WARNING, (TEXT("SmsNdis: Set Oid 0x%08X invalid or not supported\r\n"),Oid)); 
; 674  : 			ndisStatus = NDIS_STATUS_INVALID_OID; 
 
  0007c	159f40c0	 ldrne       r4, [pc, #0xC0] 
  00080	1a00002a	 bne         |$L41968| 
  00084		 |$L42004| 
 
; 667  :  
; 668  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_PROTOCOL_OPTIONS) 
; 669  : 			break; 
; 670  : 		CASE_OID_NOT_SUPPORTED(OID_PNP_ADD_WAKE_UP_PATTERN) 
 
  00084	e3a04103	 mov         r4, #3, 2 
  00088	e38440bb	 orr         r4, r4, #0xBB 
 
; 671  : 			break; 
 
  0008c	ea000027	 b           |$L41968| 
  00090		 |$L41985| 
 
; 629  : 			*pBytesNeeded = 0; 
; 630  : 			break; 
; 631  : 		CASE_OID(OID_802_3_MULTICAST_LIST) 
; 632  :  
; 633  :             if (((InfoBufferLen % ETHERNET_ADDRESS_LEN) != 0) || 
; 634  :                  (InfoBufferLen > (ETHERNET_ADDRESS_LEN * MAX_MULTICAST_LIST_SIZE))) 
 
  00090	e59f30a8	 ldr         r3, [pc, #0xA8] 
  00094	e0832395	 umull       r2, r3, r5, r3 
  00098	e1a09123	 mov         r9, r3, lsr #2 
  0009c	e0893089	 add         r3, r9, r9, lsl #1 
  000a0	e0553083	 subs        r3, r5, r3, lsl #1 
  000a4	1a00000d	 bne         |$L41988| 
  000a8	e3550048	 cmp         r5, #0x48 
  000ac	8a00000b	 bhi         |$L41988| 
 
; 639  : 			} 
; 640  :  
; 641  : 			NdisZeroMemory(pSmsNdis->MulticastList,ETHERNET_ADDRESS_LEN * MAX_MULTICAST_LIST_SIZE); 
 
  000b0	e287000c	 add         r0, r7, #0xC 
  000b4	e3a02048	 mov         r2, #0x48 
  000b8	e3a01000	 mov         r1, #0 
  000bc	eb000000	 bl          memset 
 
; 642  : 			if (InfoBufferLen > 0) 
 
  000c0	e3550000	 cmp         r5, #0 
 
; 643  : 			{ 
; 644  : 				NdisMoveMemory(pSmsNdis->MulticastList,pInfoBuffer,InfoBufferLen); 
 
  000c4	11a02005	 movne       r2, r5 
  000c8	11a0100a	 movne       r1, r10 
  000cc	1287000c	 addne       r0, r7, #0xC 
  000d0	1b000000	 blne        memcpy 
 
; 645  : 			} 
; 646  : 			pSmsNdis->MulticastListCount = InfoBufferLen / ETHERNET_ADDRESS_LEN; 
 
  000d4	e5879054	 str         r9, [r7, #0x54] 
 
; 647  : 			 
; 648  : 			*pBytesRead = InfoBufferLen; 
 
  000d8	e5885000	 str         r5, [r8] 
 
; 649  :  
; 650  : 			DBGMSG(ZONE_INFO, (TEXT("SmsNdis: Multicast Address List :\r\n"))); 
; 651  : 			for (i = 0;i < pSmsNdis->MulticastListCount;i++) 
; 652  : 			{ 
; 653  : 				DBGMSG(ZONE_INFO, (TEXT("SmsNdis: %02x:%02x:%02x:%02x:%02x:%02x\r\n"), 
; 654  : 					pSmsNdis->MulticastList[i][0],pSmsNdis->MulticastList[i][1], 
; 655  : 					pSmsNdis->MulticastList[i][2],pSmsNdis->MulticastList[i][3], 
; 656  : 					pSmsNdis->MulticastList[i][4],pSmsNdis->MulticastList[i][5])); 
; 657  : 			} 
; 658  : 			break; 
 
  000dc	ea000013	 b           |$L41968| 
  000e0		 |$L41988| 
 
; 635  : 			{ 
; 636  : 				*pBytesNeeded = ETHERNET_ADDRESS_LEN; 
 
  000e0	e3a03006	 mov         r3, #6 
  000e4		 |$L42371| 
 
; 637  : 				ndisStatus = NDIS_STATUS_INVALID_LENGTH; 
 
  000e4	e59f4050	 ldr         r4, [pc, #0x50] 
  000e8	e5863000	 str         r3, [r6] 
 
; 638  : 				break; 
 
  000ec	ea00000f	 b           |$L41968| 
  000f0		 |$L41998| 
 
; 659  : 		CASE_OID(OID_GEN_NETWORK_LAYER_ADDRESSES) 
; 660  : 			*pBytesRead = InfoBufferLen; 
; 661  : 			*pBytesNeeded = 0; 
; 662  : 			break; 
; 663  : 		CASE_OID(OID_GEN_TRANSPORT_HEADER_OFFSET) 
; 664  : 			*pBytesRead = InfoBufferLen; 
 
  000f0	e5885000	 str         r5, [r8] 
 
; 665  : 			*pBytesNeeded = 0; 
 
  000f4	e5860000	 str         r0, [r6] 
 
; 666  : 			break; 
 
  000f8	ea00000c	 b           |$L41968| 
  000fc		 |$L41978| 
 
; 617  : 			}	 
; 618  : 			DBGMSG(ZONE_INFO, (TEXT("SmsNdis: Set Current packet filter 0x%X\r\n"),tmpULong)); 
; 619  : 			break; 
; 620  : 		CASE_OID(OID_GEN_CURRENT_LOOKAHEAD) 
; 621  :             if (InfoBufferLen != sizeof(ULONG)) 
 
  000fc	e3550004	 cmp         r5, #4 
 
; 622  : 			{ 
; 623  : 				*pBytesNeeded = sizeof(ULONG); 
 
  00100	13a03004	 movne       r3, #4 
  00104	1afffff6	 bne         |$L42371| 
 
; 624  : 				ndisStatus = NDIS_STATUS_INVALID_LENGTH; 
; 625  : 				break; 
; 626  : 			} 
; 627  : 			pSmsNdis->CurrentLookahead = *((ULONG*)pInfoBuffer); 
 
  00108	e59a3000	 ldr         r3, [r10] 
 
; 628  : 			*pBytesRead = InfoBufferLen; 
 
  0010c	e3a02004	 mov         r2, #4 
  00110	e587305c	 str         r3, [r7, #0x5C] 
  00114	e5882000	 str         r2, [r8] 
 
; 665  : 			*pBytesNeeded = 0; 
 
  00118	e5860000	 str         r0, [r6] 
 
; 666  : 			break; 
 
  0011c	ea000003	 b           |$L41968| 
  00120		 |$L41971| 
 
; 599  : 	{ 
; 600  : 		CASE_OID(OID_GEN_CURRENT_PACKET_FILTER) 
; 601  :             if (InfoBufferLen != sizeof(ULONG)) 
 
  00120	e3550004	 cmp         r5, #4 
 
; 602  : 			{ 
; 603  : 				*pBytesNeeded = ETHERNET_ADDRESS_LEN; 
; 604  : 				ndisStatus = NDIS_STATUS_INVALID_LENGTH; 
; 605  : 				break; 
 
  00124	1affffed	 bne         |$L41988| 
 
; 606  : 			} 
; 607  : 			tmpULong = *((ULONG*)pInfoBuffer); 
; 608  : 			//if (tmpULong & SUPPORTED_PACKET_FILTER) 
; 609  : 			//{ 
; 610  : 			//	*pBytesRead = InfoBufferLen; 
; 611  : 			//	*pBytesNeeded = 0; 
; 612  : 			//	ndisStatus = NDIS_STATUS_NOT_SUPPORTED; 
; 613  : 			//} 
; 614  : 			//else 
; 615  : 			{ 
; 616  : 				pSmsNdis->CurrentPacketFilter = tmpULong; 
 
  00128	e59a3000	 ldr         r3, [r10] 
  0012c	e5873058	 str         r3, [r7, #0x58] 
  00130		 |$L41968| 
 
; 675  : 			break; 
; 676  : 	} 
; 677  :  
; 678  : #undef CASE_OID 
; 679  : #undef CASE_OID_NOT_SUPPORTED 
; 680  :  
; 681  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: -SmsNdis_SetInformationHandler. status 0x%X\r\n"),ndisStatus)); 
; 682  : 	return ndisStatus; 
 
  00130	e1a00004	 mov         r0, r4 
 
; 683  : } 
 
  00134	e8bd47f0	 ldmia       sp!, {r4 - r10, lr} 
  00138	e12fff1e	 bx          lr 
  0013c		 |$L42377| 
  0013c	c0010014	 DCD         0xc0010014 
  00140	aaaaaaab	 DCD         0xaaaaaaab 
  00144	c0010017	 DCD         0xc0010017 
  00148	fd010103	 DCD         0xfd010103 
  0014c	01010103	 DCD         0x1010103 
  00150	00010119	 DCD         0x10119 
  00154	00010112	 DCD         0x10112 
  00158	0001010f	 DCD         0x1010f 
  0015c	0001010e	 DCD         0x1010e 
  00160		 |$M42373| 
 
			 ENDP  ; |SmsNdis_SetInformationHandler| 
 
	EXPORT	|SmsNdis_SendHandler| 
 
  00000			 AREA	 |.text| { |SmsNdis_SendHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$SmsNdis_SendHandler|, PDATA, SELECTION=5, ASSOC=|.text| { |SmsNdis_SendHandler| } ; comdat associative 
|$T42385| DCD	|$L42384| 
	DCD	0x40000200 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |SmsNdis_SendHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |SmsNdis_SendHandler| PROC 
 
; 697  : { 
 
  00000		 |$L42384| 
  00000		 |$M42382| 
 
; 698  : 	//PSMS_SMS_NDIS_ST pSmsNdis = (PSMS_SMS_NDIS_ST)MiniportAdapterContext; 
; 699  :  
; 700  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: +SmsNdis_SendHandler\r\n"))); 
; 701  :  
; 702  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: -SmsNdis_SendHandler\n"))); 
; 703  : 	return NDIS_STATUS_SUCCESS; 
 
  00000	e3a00000	 mov         r0, #0 
 
; 704  : } 
 
  00004	e12fff1e	 bx          lr 
  00008		 |$M42383| 
 
			 ENDP  ; |SmsNdis_SendHandler| 
 
	EXPORT	|MulticastEthAddrFromIpAddr| 
 
  00000			 AREA	 |.text| { |MulticastEthAddrFromIpAddr| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$MulticastEthAddrFromIpAddr|, PDATA, SELECTION=5, ASSOC=|.text| { |MulticastEthAddrFromIpAddr| } ; comdat associative 
|$T42394| DCD	|$L42393| 
	DCD	0x40001001 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |MulticastEthAddrFromIpAddr| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |MulticastEthAddrFromIpAddr| PROC 
 
; 782  : { 
 
  00000		 |$L42393| 
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr} 
  00004		 |$M42391| 
 
; 783  : 	ethAddr[0] = 0x01; 
; 784  : 	ethAddr[1] = 0x00; 
; 785  : 	ethAddr[2] = 0x5E; 
; 786  : 	ethAddr[3] = (UCHAR)((ipAddr & 0x00ff00)>>8) & 0x7f; 
 
  00004	e1a03880	 mov         r3, r0, lsl #17 
 
; 787  : 	ethAddr[4] = (UCHAR)((ipAddr & 0x00ff0000)>>16); 
 
  00008	e1a02820	 mov         r2, r0, lsr #16 
  0000c	e1a03ca3	 mov         r3, r3, lsr #25 
  00010	e3a0e001	 mov         lr, #1 
  00014	e3a04000	 mov         r4, #0 
  00018	e3a0505e	 mov         r5, #0x5E 
 
; 788  : 	ethAddr[5] = (UCHAR)((ipAddr & 0xff000000)>>24); 
 
  0001c	e1a00c20	 mov         r0, r0, lsr #24 
  00020	e5c13003	 strb        r3, [r1, #3] 
  00024	e5c1e000	 strb        lr, [r1] 
  00028	e5c14001	 strb        r4, [r1, #1] 
  0002c	e5c15002	 strb        r5, [r1, #2] 
  00030	e5c12004	 strb        r2, [r1, #4] 
  00034	e5c10005	 strb        r0, [r1, #5] 
 
; 789  : } 
 
  00038	e8bd4030	 ldmia       sp!, {r4, r5, lr} 
  0003c	e12fff1e	 bx          lr 
  00040		 |$M42392| 
 
			 ENDP  ; |MulticastEthAddrFromIpAddr| 
 
 
  00000			 AREA	 |.text| { |IsAnIPMulticastGroup| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$IsAnIPMulticastGroup|, PDATA, SELECTION=5, ASSOC=|.text| { |IsAnIPMulticastGroup| } ; comdat associative 
|$T42403| DCD	|$L42402| 
	DCD	0x40000d03 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |IsAnIPMulticastGroup| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |IsAnIPMulticastGroup| PROC 
 
; 800  : { 
 
  00000		 |$L42402| 
  00000	e1a0c00d	 mov         r12, sp 
  00004	e92d000f	 stmdb       sp!, {r0 - r3} 
  00008	e92d5000	 stmdb       sp!, {r12, lr} 
  0000c		 |$M42400| 
 
; 801  : 	UCHAR *AddrArray = (PUCHAR)&IpAddr; 
; 802  :  
; 803  : 	if (AddrArray[3] >= 224 && AddrArray[3] < 240) { 
 
  0000c	e5dd300b	 ldrb        r3, [sp, #0xB] 
  00010	e35300e0	 cmp         r3, #0xE0 
  00014	3a000003	 bcc         |$L42073| 
  00018	e35300f0	 cmp         r3, #0xF0 
 
; 804  : 		return TRUE; 
 
  0001c	33a00001	 movcc       r0, #1 
 
; 807  : 	} 
; 808  : } 
 
  00020	389d6000	 ldmccia     sp, {sp, lr} 
  00024	312fff1e	 bxcc        lr 
  00028		 |$L42073| 
 
; 805  : 	} else { 
; 806  : 		return FALSE; 
 
  00028	e3a00000	 mov         r0, #0 
 
; 807  : 	} 
; 808  : } 
 
  0002c	e89d6000	 ldmia       sp, {sp, lr} 
  00030	e12fff1e	 bx          lr 
  00034		 |$M42401| 
 
			 ENDP  ; |IsAnIPMulticastGroup| 
 
	EXPORT	|IsAnIPv6MulticastGroup| 
 
  00000			 AREA	 |.text| { |IsAnIPv6MulticastGroup| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$IsAnIPv6MulticastGroup|, PDATA, SELECTION=5, ASSOC=|.text| { |IsAnIPv6MulticastGroup| } ; comdat associative 
|$T42413| DCD	|$L42412| 
	DCD	0x40000500 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |IsAnIPv6MulticastGroup| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |IsAnIPv6MulticastGroup| PROC 
 
; 813  : { 
 
  00000		 |$L42412| 
  00000		 |$M42410| 
 
; 814  : 	if(ipAddr[0]==IPV6_MULTICAST_INDICATOR) 
 
  00000	e5d03000	 ldrb        r3, [r0] 
  00004	e35300ff	 cmp         r3, #0xFF 
 
; 815  : 	{ 
; 816  : 		return TRUE; 
 
  00008	03a00001	 moveq       r0, #1 
 
; 817  : 	} 
; 818  : 	else 
; 819  : 	{ 
; 820  : 		return FALSE; 
 
  0000c	13a00000	 movne       r0, #0 
 
; 821  : 	} 
; 822  : } 
 
  00010	e12fff1e	 bx          lr 
  00014		 |$M42411| 
 
			 ENDP  ; |IsAnIPv6MulticastGroup| 
 
	EXPORT	|MulticastEthAddrFromIPv6Addr| 
 
  00000			 AREA	 |.text| { |MulticastEthAddrFromIPv6Addr| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$MulticastEthAddrFromIPv6Addr|, PDATA, SELECTION=5, ASSOC=|.text| { |MulticastEthAddrFromIPv6Addr| } ; comdat associative 
|$T42422| DCD	|$L42421| 
	DCD	0x40000c00 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |MulticastEthAddrFromIPv6Addr| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |MulticastEthAddrFromIPv6Addr| PROC 
 
; 827  : { 
 
  00000		 |$L42421| 
  00000		 |$M42419| 
 
; 828  : 	/* 
; 829  : 	For IPv6 Multicast addresses,  
; 830  : 	the Ethernet MAC is derived by the four low-order octets  
; 831  : 	OR'ed with the MAC 33:33:00:00:00:00,  
; 832  : 	so for example the IPv6 address FF02:DEAD:BEEF:1:3  
; 833  : 	would map to the Ethernet MAC address 33:33:00:01:00:03 
; 834  : 	*/ 
; 835  :  
; 836  : 	ethAddr[0] = 0x33; 
 
  00000	e3a03033	 mov         r3, #0x33 
  00004	e5c13000	 strb        r3, [r1] 
 
; 837  : 	ethAddr[1] = 0x33; 
 
  00008	e5c13001	 strb        r3, [r1, #1] 
 
; 838  : 	ethAddr[2] = ipAddr[12]; 
 
  0000c	e5d0300c	 ldrb        r3, [r0, #0xC] 
  00010	e5c13002	 strb        r3, [r1, #2] 
 
; 839  : 	ethAddr[3] = ipAddr[13]; 
 
  00014	e5d0300d	 ldrb        r3, [r0, #0xD] 
  00018	e5c13003	 strb        r3, [r1, #3] 
 
; 840  : 	ethAddr[4] = ipAddr[14]; 
 
  0001c	e5d0300e	 ldrb        r3, [r0, #0xE] 
  00020	e5c13004	 strb        r3, [r1, #4] 
 
; 841  : 	ethAddr[5] = ipAddr[15]; 
 
  00024	e5d0300f	 ldrb        r3, [r0, #0xF] 
  00028	e5c13005	 strb        r3, [r1, #5] 
 
; 842  : } 
 
  0002c	e12fff1e	 bx          lr 
  00030		 |$M42420| 
 
			 ENDP  ; |MulticastEthAddrFromIPv6Addr| 
 
	EXPORT	|IndicateIpPacketReceive| 
	IMPORT	|htons| 
	IMPORT	|ntohl| 
 
  00000			 AREA	 |.text| { |IndicateIpPacketReceive| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$IndicateIpPacketReceive|, PDATA, SELECTION=5, ASSOC=|.text| { |IndicateIpPacketReceive| } ; comdat associative 
|$T42459| DCD	|$L42458| 
	DCD	0x40006702 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |IndicateIpPacketReceive| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |IndicateIpPacketReceive| PROC 
 
; 847  : { 
 
  00000		 |$L42458| 
  00000	e92d43f0	 stmdb       sp!, {r4 - r9, lr} 
  00004	e24dd02c	 sub         sp, sp, #0x2C 
  00008		 |$M42456| 
  00008	e1a08002	 mov         r8, r2 
  0000c	e1a06001	 mov         r6, r1 
  00010	e1a07000	 mov         r7, r0 
  00014	e59f317c	 ldr         r3, [pc, #0x17C] 
  00018	e5933000	 ldr         r3, [r3] 
  0001c	e58d3028	 str         r3, [sp, #0x28] 
 
; 848  : 	ETHERNETHEADER_ST EthHdr; 
; 849  : 	ULONG u32; 
; 850  :  
; 851  : 	if ((pPacket[0] & 0xF0) == 0x60) 
 
  00020	e5d63000	 ldrb        r3, [r6] 
  00024	e20330f0	 and         r3, r3, #0xF0 
  00028	e3530060	 cmp         r3, #0x60 
  0002c	1a00001a	 bne         |$L42097| 
 
; 852  : 	{ 
; 853  : 		// fill ethernet header 
; 854  : 		if (IsAnIPv6MulticastGroup( pPacket + 24 /*DstAddress*/ )) 
 
  00030	e5d63018	 ldrb        r3, [r6, #0x18] 
  00034	e59f1158	 ldr         r1, [pc, #0x158] 
  00038	e35300ff	 cmp         r3, #0xFF 
  0003c	1a00000c	 bne         |$L42098| 
 
; 855  : 		{ 
; 856  : 			MulticastEthAddrFromIPv6Addr(pPacket + 24 /*DstAddress*/ , EthHdr.DestAdd); 
 
  00040	e5d63024	 ldrb        r3, [r6, #0x24] 
  00044	e5d6e025	 ldrb        lr, [r6, #0x25] 
  00048	e5d64026	 ldrb        r4, [r6, #0x26] 
  0004c	e5d65027	 ldrb        r5, [r6, #0x27] 
  00050	e3a02033	 mov         r2, #0x33 
  00054	e3a00033	 mov         r0, #0x33 
  00058	e5cd301a	 strb        r3, [sp, #0x1A] 
  0005c	e5cde01b	 strb        lr, [sp, #0x1B] 
  00060	e5cd401c	 strb        r4, [sp, #0x1C] 
  00064	e5cd501d	 strb        r5, [sp, #0x1D] 
  00068	e5cd2018	 strb        r2, [sp, #0x18] 
  0006c	e5cd0019	 strb        r0, [sp, #0x19] 
 
; 857  : 		} 
; 858  : 		else 
 
  00070	ea000003	 b           |$L42099| 
  00074		 |$L42098| 
 
; 859  : 		{ 
; 860  : 			memcpy(EthHdr.DestAdd, LocalMAC, 6); 
 
  00074	e5913008	 ldr         r3, [r1, #8] 
  00078	e1d120bc	 ldrh        r2, [r1, #0xC] 
  0007c	e58d3018	 str         r3, [sp, #0x18] 
  00080	e1cd21bc	 strh        r2, [sp, #0x1C] 
  00084		 |$L42099| 
 
; 861  : 		} 
; 862  : 		memcpy(EthHdr.SrcAdd,RemoteMAC,6); 
 
  00084	e28d001e	 add         r0, sp, #0x1E 
  00088	e3a02006	 mov         r2, #6 
  0008c	eb000000	 bl          memcpy 
 
; 863  : 		EthHdr.PacketType = htons(PACKET_TYPE_IPV6); 
 
  00090	e3a00c86	 mov         r0, #0x86, 24 
  00094	e38000dd	 orr         r0, r0, #0xDD 
 
; 864  : 	} 
; 865  : 	else // v4 
 
  00098	ea000026	 b           |$L42455| 
  0009c		 |$L42097| 
 
; 866  : 	{ 
; 867  : 		// fill ethernet header 
; 868  : 		u32 = (pPacket[16] << 24) | (pPacket[17] << 16) | (pPacket[18] << 8) | pPacket[19]; /* DestAdd */ 
 
  0009c	e5d60010	 ldrb        r0, [r6, #0x10] 
  000a0	e5d63011	 ldrb        r3, [r6, #0x11] 
  000a4	e5d62012	 ldrb        r2, [r6, #0x12] 
  000a8	e5d61013	 ldrb        r1, [r6, #0x13] 
  000ac	e1833400	 orr         r3, r3, r0, lsl #8 
  000b0	e1823403	 orr         r3, r2, r3, lsl #8 
  000b4	e1814403	 orr         r4, r1, r3, lsl #8 
 
; 869  : 		if (IsAnIPMulticastGroup( ntohl(u32) )) 
 
  000b8	e1a00004	 mov         r0, r4 
  000bc	eb000000	 bl          ntohl 
  000c0	e58d0010	 str         r0, [sp, #0x10] 
  000c4	e5dd3013	 ldrb        r3, [sp, #0x13] 
  000c8	e59fe0c4	 ldr         lr, [pc, #0xC4] 
  000cc	e35300e0	 cmp         r3, #0xE0 
  000d0	3a00000f	 bcc         |$L42101| 
  000d4	e35300f0	 cmp         r3, #0xF0 
  000d8	2a00000d	 bcs         |$L42101| 
 
; 870  : 		{ 
; 871  : 			MulticastEthAddrFromIpAddr(u32, EthHdr.DestAdd); 
 
  000dc	e1a03884	 mov         r3, r4, lsl #17 
  000e0	e1a03ca3	 mov         r3, r3, lsr #25 
  000e4	e3a00001	 mov         r0, #1 
  000e8	e3a05000	 mov         r5, #0 
  000ec	e3a0905e	 mov         r9, #0x5E 
  000f0	e1a02824	 mov         r2, r4, lsr #16 
  000f4	e1a01c24	 mov         r1, r4, lsr #24 
  000f8	e5cd301b	 strb        r3, [sp, #0x1B] 
  000fc	e5cd0018	 strb        r0, [sp, #0x18] 
  00100	e5cd5019	 strb        r5, [sp, #0x19] 
  00104	e5cd901a	 strb        r9, [sp, #0x1A] 
  00108	e5cd201c	 strb        r2, [sp, #0x1C] 
  0010c	e5cd101d	 strb        r1, [sp, #0x1D] 
 
; 872  : 		} 
; 873  : 		else 
 
  00110	ea000003	 b           |$L42102| 
  00114		 |$L42101| 
 
; 874  : 		{ 
; 875  : 			memcpy(EthHdr.DestAdd, LocalMAC, 6); 
 
  00114	e59e3008	 ldr         r3, [lr, #8] 
  00118	e1de20bc	 ldrh        r2, [lr, #0xC] 
  0011c	e58d3018	 str         r3, [sp, #0x18] 
  00120	e1cd21bc	 strh        r2, [sp, #0x1C] 
  00124		 |$L42102| 
 
; 876  : 		} 
; 877  : 		memcpy(EthHdr.SrcAdd,RemoteMAC,6); 
 
  00124	e28d001e	 add         r0, sp, #0x1E 
  00128	e3a02006	 mov         r2, #6 
  0012c	e1a0100e	 mov         r1, lr 
  00130	eb000000	 bl          memcpy 
 
; 878  : 		EthHdr.PacketType = htons(PACKET_TYPE_IP); 
 
  00134	e3a00b02	 mov         r0, #2, 22 
  00138		 |$L42455| 
  00138	eb000000	 bl          htons 
 
; 879  : 	} 
; 880  :  
; 881  : #if 0 // to print RTP sequence num. and check it, enable this line 
; 882  : 		{ 
; 883  : 			PBYTE pUdpHdr; 
; 884  : 			UINT16 curSeq,destPort; 
; 885  : 			static UINT16 basePort = 0xFFFF; 
; 886  :  
; 887  : 			if ((pPacket[0] & 0xF0) == 0x60) 
; 888  : 				pUdpHdr = pPacket + 40; 
; 889  : 			else 
; 890  : 				pUdpHdr = pPacket + 20; 
; 891  : 			destPort = (pUdpHdr[2] << 8) + pUdpHdr[3]; /* Udp DestinationPort */ 
; 892  : 			curSeq = (pUdpHdr[10] << 8) + pUdpHdr[11]; /* seq num */ 
; 893  :  
; 894  : 			//DBGMSG(ZONE_WARNING, (TEXT("SmsNdis: %u %u\r\n"),destPort,curSeq)); 
; 895  :  
; 896  : 			if (basePort == 0xFFFF) 
; 897  : 			{ 
; 898  : 				// get the port that will be checked. assumption: the audio port is bigger by 2 from the video 
; 899  : 				basePort = destPort & 0xFFFC; 
; 900  : 			} 
; 901  :  
; 902  : 			if (destPort == basePort) 
; 903  : 			{ 
; 904  : 				static UINT16 prevSeq = 0xFFFF; 
; 905  : 				if (prevSeq == 0xFFFF) 
; 906  : 				{ 
; 907  : 					DBGMSG(ZONE_WARNING, (TEXT("SmsNdis: checking vd seq port %d\r\n"),destPort)); 
; 908  : 				} 
; 909  : 				if ((prevSeq < curSeq) && ((prevSeq+1) != curSeq)) 
; 910  : 				{ 
; 911  : 					DBGMSG(ZONE_ERROR, (TEXT("SmsNdis: miss vd t %d %d %d miss %d\r\n"),GetTickCount(),prevSeq,curSeq,curSeq-prevSeq-1)); 
; 912  : 					MessageBeep(0xFFFFFFFF); 
; 913  : 				} 
; 914  : 				prevSeq = curSeq; 
; 915  : 			} 
; 916  : 			else if (destPort == (basePort+2)) 
; 917  : 			{ 
; 918  : 				static UINT16 prevSeq = 0xFFFF; 
; 919  : 				if (prevSeq == 0xFFFF) 
; 920  : 				{ 
; 921  : 					DBGMSG(ZONE_WARNING, (TEXT("SmsNdis: checking au seq port %d\r\n"),destPort)); 
; 922  : 				} 
; 923  : 				if ((prevSeq < curSeq) && ((prevSeq+1) != curSeq)) 
; 924  : 				{ 
; 925  : 					DBGMSG(ZONE_ERROR, (TEXT("SmsNdis: miss au t %d %d %d miss %d\r\n"),GetTickCount(),prevSeq,curSeq,curSeq-prevSeq-1)); 
; 926  : 					MessageBeep(0xFFFFFFFF); 
; 927  : 				} 
; 928  : 				prevSeq = curSeq; 
; 929  : 			} 
; 930  : 		} 
; 931  : #endif 
; 932  :  
; 933  : 		// insert ip to ip stack 
; 934  : 		NdisMEthIndicateReceive(pSmsNdis->hMiniportAdapter, 
; 935  : 						        NULL,					// TransferData will not be called 
; 936  :         						(PCHAR)&EthHdr,			// pointer to header 
; 937  :         						ETHERNET_HEADER_LEN,	// header size 
; 938  : 								pPacket,				// pointer to buffer 
; 939  : 								PacketLen,				// lookahead buffer size 
; 940  :         						PacketLen);				// packet size 
 
  0013c	e5972000	 ldr         r2, [r7] 
  00140	e1cd02b4	 strh        r0, [sp, #0x24] 
  00144	e3a0500e	 mov         r5, #0xE 
  00148	e59200f8	 ldr         r0, [r2, #0xF8] 
  0014c	e5924208	 ldr         r4, [r2, #0x208] 
  00150	e28d2018	 add         r2, sp, #0x18 
  00154	e28d3018	 add         r3, sp, #0x18 
  00158	e3a01000	 mov         r1, #0 
  0015c	e58d800c	 str         r8, [sp, #0xC] 
  00160	e58d8008	 str         r8, [sp, #8] 
  00164	e58d6004	 str         r6, [sp, #4] 
  00168	e58d5000	 str         r5, [sp] 
  0016c	e1a0e00f	 mov         lr, pc 
  00170	e12fff14	 bx          r4 
 
; 941  :  
; 942  : 		// update statistics counter 
; 943  : 		pSmsNdis->RxPacketCount++; 
 
  00174	e5973060	 ldr         r3, [r7, #0x60] 
  00178	e2833001	 add         r3, r3, #1 
  0017c	e5873060	 str         r3, [r7, #0x60] 
  00180	e59d0028	 ldr         r0, [sp, #0x28] 
  00184	eb000000	 bl          __security_check_cookie 
 
; 944  : } 
 
  00188	e28dd02c	 add         sp, sp, #0x2C 
  0018c	e8bd43f0	 ldmia       sp!, {r4 - r9, lr} 
  00190	e12fff1e	 bx          lr 
  00194		 |$L42461| 
  00194	00000000	 DCD         |RemoteMAC| 
  00198	00000000	 DCD         |__security_cookie| 
  0019c		 |$M42457| 
 
			 ENDP  ; |IndicateIpPacketReceive| 
 
	EXPORT	|ReadIpCB| 
	IMPORT	|NdisIMSwitchToMiniport| 
	IMPORT	|NdisIMRevertBack| 
 
  00000			 AREA	 |.text| { |ReadIpCB| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$ReadIpCB|, PDATA, SELECTION=5, ASSOC=|.text| { |ReadIpCB| } ; comdat associative 
|$T42482| DCD	|$L42481| 
	DCD	0x40008002 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |ReadIpCB| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |ReadIpCB| PROC 
 
; 949  : { 
 
  00000		 |$L42481| 
  00000	e92d47f0	 stmdb       sp!, {r4 - r10, lr} 
  00004	e24dd004	 sub         sp, sp, #4 
  00008		 |$M42479| 
  00008	e1a04002	 mov         r4, r2 
  0000c	e1a06001	 mov         r6, r1 
  00010	e1a05000	 mov         r5, r0 
 
; 950  : 	PSMS_SMS_NDIS_ST pSmsNdis = (PSMS_SMS_NDIS_ST)hContext; 
; 951  : 	NDIS_HANDLE SwitchHandle; 
; 952  : 	ULONG validIpCount = 0; 
; 953  : 	ULONG u32; 
; 954  : 	ULONG PktLen; 
; 955  : 	PBYTE pBuff = (PBYTE)pBuffer; 
; 956  :  
; 957  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: +ReadIpCB 0x08%X %d\r\n"),pBuffer,BufSize)); 
; 958  :  
; 959  : 	NdisIMSwitchToMiniport(pSmsNdis->hMiniportAdapter,&SwitchHandle); 
 
  00014	e5950000	 ldr         r0, [r5] 
  00018	e28d1000	 add         r1, sp, #0 
  0001c	e3a09000	 mov         r9, #0 
  00020	eb000000	 bl          NdisIMSwitchToMiniport 
 
; 960  :  
; 961  : 	if (pSmsNdis->PrevPktPortionCount > 0) 
 
  00024	e5953650	 ldr         r3, [r5, #0x650] 
  00028	e3a0ae5e	 mov         r10, #0x5E, 28 
  0002c	e38aa00a	 orr         r10, r10, #0xA 
  00030	e3530000	 cmp         r3, #0 
  00034	0a00005a	 beq         |$L42477| 
 
; 962  : 	{ 
; 963  : 		DBGMSG(ZONE_INFO, (TEXT("SmsNdis: Handle split packet. PrevPktPortionCount %d\r\n"),pSmsNdis->PrevPktPortionCount)); 
; 964  :  
; 965  : 		// handle prev partial packet 
; 966  : 		if (pSmsNdis->PrevPktPortionCount < (sizeof(UINT32) * 2)) 
 
  00038	e3530008	 cmp         r3, #8 
  0003c	2a00000c	 bcs         |$L42127| 
 
; 967  : 		{ 
; 968  : 			// can't extract ip len form prev packet bytes. 
; 969  : 			u32 = (sizeof(UINT32) * 2) - pSmsNdis->PrevPktPortionCount; 
 
  00040	e2637008	 rsb         r7, r3, #8 
 
; 970  : 			if (u32 > BufSize) 
; 971  : 			{ 
; 972  : 				// append to prev 
; 973  : 				NdisMoveMappedMemory(pSmsNdis->PrevPktPortion + pSmsNdis->PrevPktPortionCount,pBuff,BufSize); 
 
  00044	e0833005	 add         r3, r3, r5 
  00048	e2830064	 add         r0, r3, #0x64 
  0004c	e1570004	 cmp         r7, r4 
  00050	e1a01006	 mov         r1, r6 
 
; 974  : 				pSmsNdis->PrevPktPortionCount += BufSize; 
; 975  : 				NdisIMRevertBack(pSmsNdis->hMiniportAdapter,&SwitchHandle); 
; 976  : 				return; 
 
  00054	8a000021	 bhi         |$L42478| 
 
; 977  : 			} 
; 978  : 			// append to prev 
; 979  : 			NdisMoveMappedMemory(pSmsNdis->PrevPktPortion + pSmsNdis->PrevPktPortionCount,pBuff,u32); 
 
  00058	e1a02007	 mov         r2, r7 
  0005c	eb000000	 bl          memcpy 
 
; 980  : 			pSmsNdis->PrevPktPortionCount += u32; 
 
  00060	e5953650	 ldr         r3, [r5, #0x650] 
 
; 981  : 			pBuff += u32; 
 
  00064	e0876006	 add         r6, r7, r6 
 
; 982  : 			BufSize -= u32; 
 
  00068	e0444007	 sub         r4, r4, r7 
  0006c	e0833007	 add         r3, r3, r7 
  00070	e5853650	 str         r3, [r5, #0x650] 
  00074		 |$L42127| 
 
; 983  : 		} 
; 984  :  
; 985  : 		if ((pSmsNdis->PrevPktPortion[0] & 0xF0) == 0x60) 
 
  00074	e5d53064	 ldrb        r3, [r5, #0x64] 
  00078	e20330f0	 and         r3, r3, #0xF0 
  0007c	e3530060	 cmp         r3, #0x60 
 
; 986  : 		{ 
; 987  : 			PktLen = ((pSmsNdis->PrevPktPortion[4] << 8) + pSmsNdis->PrevPktPortion[5]); /* PayloadLen */ 
; 988  : 			PktLen += IPV6_HEADER_LEN; 
 
  00080	05d52068	 ldreqb      r2, [r5, #0x68] 
  00084	05d53069	 ldreqb      r3, [r5, #0x69] 
  00088	00833402	 addeq       r3, r3, r2, lsl #8 
  0008c	02837028	 addeq       r7, r3, #0x28 
  00090	0a000004	 beq         |$L42133| 
 
; 989  : 		} 
; 990  : 		else if ((pSmsNdis->PrevPktPortion[0] & 0xF0) == 0x40) 
 
  00094	e3530040	 cmp         r3, #0x40 
 
; 991  : 		{ 
; 992  : 			PktLen = (pSmsNdis->PrevPktPortion[2] << 8) + pSmsNdis->PrevPktPortion[3]; /* TotalLen */ 
 
  00098	05d52066	 ldreqb      r2, [r5, #0x66] 
  0009c	05d53067	 ldreqb      r3, [r5, #0x67] 
  000a0	00837402	 addeq       r7, r3, r2, lsl #8 
 
; 993  : 		} 
; 994  : 		else 
; 995  : 		{ 
; 996  : 			PktLen = 0; 
 
  000a4	13a07000	 movne       r7, #0 
  000a8		 |$L42133| 
 
; 997  : 		} 
; 998  :  
; 999  : 		u32 = PktLen - pSmsNdis->PrevPktPortionCount; // bytes needed from pBuff 
 
  000a8	e5952650	 ldr         r2, [r5, #0x650] 
  000ac	e0478002	 sub         r8, r7, r2 
 
; 1000 : 		if (PktLen > pSmsNdis->PrevPktPortionCount && PktLen < MAX_IP_FRAME_LEN &&  // is valid ip len 
; 1001 : 			(pSmsNdis->PrevPktPortionCount + u32 <= MAX_IP_FRAME_LEN)) // there is enough space in buff 
 
  000b0	e1570002	 cmp         r7, r2 
  000b4	9a000018	 bls         |$L42134| 
  000b8	e157000a	 cmp         r7, r10 
  000bc	2a000016	 bcs         |$L42134| 
  000c0	e0823008	 add         r3, r2, r8 
  000c4	e153000a	 cmp         r3, r10 
  000c8	8a000013	 bhi         |$L42134| 
 
; 1002 : 		{ 
; 1003 : 			if (u32 > BufSize) 
; 1004 : 			{ 
; 1005 : 				// append to prev 
; 1006 : 				NdisMoveMappedMemory(pSmsNdis->PrevPktPortion + pSmsNdis->PrevPktPortionCount,pBuff,BufSize); 
 
  000cc	e0823005	 add         r3, r2, r5 
  000d0	e2830064	 add         r0, r3, #0x64 
  000d4	e1580004	 cmp         r8, r4 
  000d8	e1a01006	 mov         r1, r6 
  000dc	9a000005	 bls         |$L42135| 
  000e0		 |$L42478| 
  000e0	e1a02004	 mov         r2, r4 
  000e4	eb000000	 bl          memcpy 
 
; 1007 : 				pSmsNdis->PrevPktPortionCount += BufSize; 
 
  000e8	e5953650	 ldr         r3, [r5, #0x650] 
 
; 1008 : 				NdisIMRevertBack(pSmsNdis->hMiniportAdapter,&SwitchHandle); 
 
  000ec	e0833004	 add         r3, r3, r4 
  000f0	e5853650	 str         r3, [r5, #0x650] 
 
; 1009 : 				return; 
 
  000f4	ea00003b	 b           |$L42153| 
  000f8		 |$L42135| 
 
; 1010 : 			} 
; 1011 : 			// concatenate the two portion and update pBuff pointer 
; 1012 : 			NdisMoveMappedMemory(pSmsNdis->PrevPktPortion + pSmsNdis->PrevPktPortionCount,pBuff,u32); 
 
  000f8	e1a02008	 mov         r2, r8 
  000fc	eb000000	 bl          memcpy 
 
; 1013 : 			pBuff += u32; 
; 1014 : 			BufSize -= u32; 
; 1015 :  
; 1016 : 			// insert ip to stack 
; 1017 : 			IndicateIpPacketReceive(pSmsNdis,pSmsNdis->PrevPktPortion,PktLen); 
 
  00100	e1a02007	 mov         r2, r7 
  00104	e2851064	 add         r1, r5, #0x64 
  00108	e1a00005	 mov         r0, r5 
  0010c	e0866008	 add         r6, r6, r8 
  00110	e0444008	 sub         r4, r4, r8 
  00114	eb000000	 bl          IndicateIpPacketReceive 
 
; 1018 : 			validIpCount++; 
 
  00118	e3a09001	 mov         r9, #1 
  0011c		 |$L42134| 
 
; 1019 : 		} 
; 1020 : 		else 
; 1021 : 		{ 
; 1022 : 			DBGMSG(ZONE_ERROR, (TEXT("SmsNdis: IP concatenation failed. %d\r\n"),PktLen)); 
; 1023 : 		} 
; 1024 : 		pSmsNdis->PrevPktPortionCount = 0; 
 
  0011c	e3a03000	 mov         r3, #0 
  00120	e5853650	 str         r3, [r5, #0x650] 
  00124	ea00001e	 b           |$L42477| 
  00128		 |$L42140| 
 
; 1028 : 	{ 
; 1029 : 		if ((pBuff[0] & 0xF0) == 0x60) 
 
  00128	e5d63000	 ldrb        r3, [r6] 
  0012c	e20330f0	 and         r3, r3, #0xF0 
  00130	e3530060	 cmp         r3, #0x60 
 
; 1030 : 		{ 
; 1031 : 			PktLen = ((pBuff[4] << 8) + pBuff[5]); /* PayloadLen */ 
; 1032 : 			PktLen += IPV6_HEADER_LEN; 
 
  00134	05d62004	 ldreqb      r2, [r6, #4] 
  00138	05d63005	 ldreqb      r3, [r6, #5] 
  0013c	00833402	 addeq       r3, r3, r2, lsl #8 
  00140	02837028	 addeq       r7, r3, #0x28 
  00144	0a000004	 beq         |$L42145| 
 
; 1033 : 		} 
; 1034 : 		else if ((pBuff[0] & 0xF0) == 0x40) 
 
  00148	e3530040	 cmp         r3, #0x40 
 
; 1035 : 		{ 
; 1036 : 			PktLen = (pBuff[2] << 8) + pBuff[3]; /* TotalLen */ 
 
  0014c	05d62002	 ldreqb      r2, [r6, #2] 
  00150	05d63003	 ldreqb      r3, [r6, #3] 
  00154	00837402	 addeq       r7, r3, r2, lsl #8 
 
; 1037 : 		} 
; 1038 : 		else 
; 1039 : 		{ 
; 1040 : 			PktLen = 0; 
 
  00158	13a07000	 movne       r7, #0 
  0015c		 |$L42145| 
 
; 1041 : 		} 
; 1042 :  
; 1043 : 		if (PktLen == 0 || PktLen > MAX_IP_FRAME_LEN) 
 
  0015c	e3570000	 cmp         r7, #0 
  00160	0a00000b	 beq         |$L42147| 
  00164	e157000a	 cmp         r7, r10 
  00168	8a000009	 bhi         |$L42147| 
 
; 1052 : 				break; 
; 1053 : 			} 
; 1054 : 			DBGMSG(ZONE_ERROR, (TEXT("SmsNdis: resync %02X %d %d\r\n"),pBuff[0],PktLen,BufSize)); 
; 1055 : 			continue; 
; 1056 : 		} 
; 1057 :  
; 1058 : 		if (PktLen > BufSize) 
 
  0016c	e1570004	 cmp         r7, r4 
  00170	8a00000f	 bhi         |$L42141| 
 
; 1059 : 		{ 
; 1060 : 			// partial packet 
; 1061 : 			break; 
; 1062 : 		} 
; 1063 :  
; 1064 : 		// insert ip to stack 
; 1065 : 		IndicateIpPacketReceive(pSmsNdis,pBuff,PktLen); 
 
  00174	e1a02007	 mov         r2, r7 
  00178	e1a01006	 mov         r1, r6 
  0017c	e1a00005	 mov         r0, r5 
  00180	eb000000	 bl          IndicateIpPacketReceive 
 
; 1066 :  
; 1067 : 		validIpCount++; 
 
  00184	e2899001	 add         r9, r9, #1 
 
; 1068 : 		pBuff += PktLen; 
 
  00188	e0866007	 add         r6, r6, r7 
 
; 1069 : 		BufSize -= PktLen; 
 
  0018c	e0444007	 sub         r4, r4, r7 
 
; 1070 : 	} 
 
  00190	ea000003	 b           |$L42477| 
  00194		 |$L42147| 
 
; 1044 : 		{ 
; 1045 : 			// search for sync bytes 
; 1046 : 			pBuff++; 
; 1047 : 			BufSize--; 
 
  00194	e2444001	 sub         r4, r4, #1 
 
; 1048 : 			if (BufSize < (sizeof(UINT32) * 2)) 
 
  00198	e3540008	 cmp         r4, #8 
  0019c	e2866001	 add         r6, r6, #1 
  001a0	3a000002	 bcc         |$L42467| 
  001a4		 |$L42477| 
 
; 1025 : 	} 
; 1026 :  
; 1027 : 	while (BufSize >= (sizeof(UINT32) * 2)) // atleast part of header include len 
 
  001a4	e3540008	 cmp         r4, #8 
  001a8	2affffde	 bcs         |$L42140| 
 
; 1048 : 			if (BufSize < (sizeof(UINT32) * 2)) 
 
  001ac	ea000000	 b           |$L42141| 
  001b0		 |$L42467| 
 
; 1049 : 			{ 
; 1050 : 				// no chance to find sync bytes 
; 1051 : 				BufSize = 0; 
 
  001b0	e3a04000	 mov         r4, #0 
  001b4		 |$L42141| 
 
; 1071 :  
; 1072 : 	if (BufSize > 0) 
 
  001b4	e3540000	 cmp         r4, #0 
  001b8	0a000004	 beq         |$L42152| 
 
; 1073 : 	{ 
; 1074 : 		// save partial packet 
; 1075 : 		NdisMoveMappedMemory(pSmsNdis->PrevPktPortion,pBuff,BufSize); 
 
  001bc	e1a02004	 mov         r2, r4 
  001c0	e1a01006	 mov         r1, r6 
  001c4	e2850064	 add         r0, r5, #0x64 
  001c8	eb000000	 bl          memcpy 
 
; 1076 : 		pSmsNdis->PrevPktPortionCount = BufSize; 
 
  001cc	e5854650	 str         r4, [r5, #0x650] 
  001d0		 |$L42152| 
 
; 1077 : 	} 
; 1078 :  
; 1079 : 	if (validIpCount > 0) 
 
  001d0	e3590000	 cmp         r9, #0 
 
; 1080 : 	{ 
; 1081 : 		// flush ip stack 
; 1082 : 		NdisMEthIndicateReceiveComplete(pSmsNdis->hMiniportAdapter); 
 
  001d4	15953000	 ldrne       r3, [r5] 
  001d8	159300f8	 ldrne       r0, [r3, #0xF8] 
  001dc	15933214	 ldrne       r3, [r3, #0x214] 
  001e0	11a0e00f	 movne       lr, pc 
  001e4	112fff13	 bxne        r3 
  001e8		 |$L42153| 
 
; 1083 : 		DBGMSG(ZONE_INFO, (TEXT("SmsNdis: %d valid packets\r\n"),validIpCount)); 
; 1084 : 	} 
; 1085 :  
; 1086 : 	NdisIMRevertBack(pSmsNdis->hMiniportAdapter,&SwitchHandle); 
 
  001e8	e5950000	 ldr         r0, [r5] 
  001ec	e28d1000	 add         r1, sp, #0 
  001f0	eb000000	 bl          NdisIMRevertBack 
 
; 1087 :  
; 1088 : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: -ReadIpCB\r\n"))); 
; 1089 : } 
 
  001f4	e28dd004	 add         sp, sp, #4 
  001f8	e8bd47f0	 ldmia       sp!, {r4 - r10, lr} 
  001fc	e12fff1e	 bx          lr 
  00200		 |$M42480| 
 
			 ENDP  ; |ReadIpCB| 
 
	EXPORT	|??_C@_1M@EOMOKNGP@?$AAS?$AAG?$AAD?$AA1?$AA?3?$AA?$AA@| [ DATA ] ; `string' 
	EXPORT	|RegisterReadIpCBFunc| 
	IMPORT	|CreateFileW| 
	IMPORT	|DeviceIoControl| 
 
  00000			 AREA	 |.text| { |RegisterReadIpCBFunc| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$RegisterReadIpCBFunc|, PDATA, SELECTION=5, ASSOC=|.text| { |RegisterReadIpCBFunc| } ; comdat associative 
|$T42492| DCD	|$L42491| 
	DCD	0x40002802 
 
  00000			 AREA	 |.rdata| { |??_C@_1M@EOMOKNGP@?$AAS?$AAG?$AAD?$AA1?$AA?3?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1M@EOMOKNGP@?$AAS?$AAG?$AAD?$AA1?$AA?3?$AA?$AA@| DCB "S", 0x0, "G", 0x0 
	DCB	"D", 0x0, "1", 0x0, ":", 0x0, 0x0, 0x0	; `string' 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |RegisterReadIpCBFunc| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |RegisterReadIpCBFunc| PROC 
 
; 749  : { 
 
  00000		 |$L42491| 
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr} 
  00004	e24dd018	 sub         sp, sp, #0x18 
  00008		 |$M42489| 
  00008	e1a04000	 mov         r4, r0 
 
; 750  : 	GEN_IOCTL_REGISTER_READ_IP_PARAMS_ST readIpParams; 
; 751  :  
; 752  : 	pSmsNdis->hGenDrv = CreateFile(TEXT("SGD1:"),GENERIC_READ | GENERIC_WRITE,  
; 753  : 									0,NULL,OPEN_EXISTING,0,NULL); 
 
  0000c	e59f0088	 ldr         r0, [pc, #0x88] 
  00010	e3a0e003	 mov         lr, #3 
  00014	e3a05000	 mov         r5, #0 
  00018	e3a03000	 mov         r3, #0 
  0001c	e3a02000	 mov         r2, #0 
  00020	e3a01103	 mov         r1, #3, 2 
  00024	e58d5008	 str         r5, [sp, #8] 
  00028	e58d5004	 str         r5, [sp, #4] 
  0002c	e58de000	 str         lr, [sp] 
  00030	eb000000	 bl          CreateFileW 
  00034	e3500000	 cmp         r0, #0 
  00038	e5840008	 str         r0, [r4, #8] 
 
; 754  : 	if (pSmsNdis->hGenDrv == NULL) 
; 755  : 	{ 
; 756  : 		DBGMSG(ZONE_ERROR, (TEXT("SmsNdis: Failed to open connection to GenDrv\r\n"))); 
; 757  : 		return FALSE; 
 
  0003c	03a00000	 moveq       r0, #0 
  00040	0a000010	 beq         |$L42043| 
 
; 758  : 	} 
; 759  :  
; 760  : 	readIpParams.pReadIpCBFunc = ReadIpCB; 
 
  00044	e59f204c	 ldr         r2, [pc, #0x4C] 
 
; 761  : 	readIpParams.hContext = (DWORD)pSmsNdis; 
; 762  : 	if (DeviceIoControl(pSmsNdis->hGenDrv,SIANO_GEN_IOCTL_REGISTER_READ_IP_CB, 
; 763  : 						&readIpParams,sizeof(readIpParams),NULL,0,NULL,NULL) == FALSE) 
 
  00048	e59f1044	 ldr         r1, [pc, #0x44] 
  0004c	e3a03008	 mov         r3, #8 
  00050	e58d2010	 str         r2, [sp, #0x10] 
  00054	e28d2010	 add         r2, sp, #0x10 
  00058	e58d4014	 str         r4, [sp, #0x14] 
  0005c	e58d500c	 str         r5, [sp, #0xC] 
  00060	e58d5008	 str         r5, [sp, #8] 
  00064	e58d5004	 str         r5, [sp, #4] 
  00068	e58d5000	 str         r5, [sp] 
  0006c	eb000000	 bl          DeviceIoControl 
  00070	e3500000	 cmp         r0, #0 
  00074	1a000002	 bne         |$L42055| 
 
; 764  : 	{ 
; 765  : 		DBGMSG(ZONE_ERROR, (TEXT("SmsNdis: Failed to register ReadIpCB\r\n"))); 
; 766  : 		CloseHandle(pSmsNdis->hGenDrv); 
 
  00078	e5940008	 ldr         r0, [r4, #8] 
  0007c	eb000000	 bl          CloseHandle 
 
; 767  : 		pSmsNdis->hGenDrv = NULL; 
 
  00080	e5845008	 str         r5, [r4, #8] 
  00084		 |$L42055| 
 
; 768  : 	} 
; 769  :  
; 770  : 	return TRUE; 
 
  00084	e3a00001	 mov         r0, #1 
  00088		 |$L42043| 
 
; 771  : } 
 
  00088	e28dd018	 add         sp, sp, #0x18 
  0008c	e8bd4030	 ldmia       sp!, {r4, r5, lr} 
  00090	e12fff1e	 bx          lr 
  00094		 |$L42494| 
  00094	9c402008	 DCD         0x9c402008 
  00098	00000000	 DCD         |ReadIpCB| 
  0009c	00000000	 DCD         |??_C@_1M@EOMOKNGP@?$AAS?$AAG?$AAD?$AA1?$AA?3?$AA?$AA@| 
  000a0		 |$M42490| 
 
			 ENDP  ; |RegisterReadIpCBFunc| 
 
	EXPORT	|SmsNdis_InitializeHandler| 
	IMPORT	|NdisMSetAttributesEx| 
	IMPORT	|NdisAllocateMemory| 
 
  00000			 AREA	 |.text| { |SmsNdis_InitializeHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$SmsNdis_InitializeHandler|, PDATA, SELECTION=5, ASSOC=|.text| { |SmsNdis_InitializeHandler| } ; comdat associative 
|$T42514| DCD	|$L42513| 
	DCD	0x40003f02 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |SmsNdis_InitializeHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |SmsNdis_InitializeHandler| PROC 
 
; 185  : { 
 
  00000		 |$L42513| 
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr} 
  00004	e24dd008	 sub         sp, sp, #8 
  00008		 |$M42511| 
  00008	e3530000	 cmp         r3, #0 
  0000c	e1a04001	 mov         r4, r1 
 
; 186  :     NDIS_STATUS ndisStatus; 
; 187  : 	UINT mIdx; 
; 188  : 	PSMS_SMS_NDIS_ST pSmsNdis; 
; 189  : 	NDIS_PHYSICAL_ADDRESS HighestAcceptableMax = NDIS_PHYSICAL_ADDRESS_CONST(-1,-1); 
 
  00010	e3e05000	 mvn         r5, #0 
 
; 190  :  
; 191  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: +SmsNdis_InitializeHandler\r\n"))); 
; 192  :  
; 193  : 	// search for the medium type (802.3) in the given array. 
; 194  : 	for (mIdx = 0; mIdx < MediumArraySize; mIdx++) 
 
  00014	e3a0e000	 mov         lr, #0 
  00018	0a000006	 beq         |$L42501| 
  0001c		 |$L41674| 
 
; 195  : 	{ 
; 196  : 		if (MediumArray[mIdx] == NdisMedium802_3) 
 
  0001c	e5920000	 ldr         r0, [r2] 
  00020	e3500000	 cmp         r0, #0 
  00024	0a000003	 beq         |$L42501| 
  00028	e28ee001	 add         lr, lr, #1 
  0002c	e15e0003	 cmp         lr, r3 
  00030	e2822004	 add         r2, r2, #4 
  00034	3afffff8	 bcc         |$L41674| 
  00038		 |$L42501| 
 
; 197  : 		{ 
; 198  : 			// found what we're looking for 
; 199  : 			break; 
; 200  : 		} 
; 201  : 	} 
; 202  :  
; 203  : 	if (mIdx == MediumArraySize) 
; 204  : 	{ 
; 205  : 		DBGMSG(ZONE_ERROR, (TEXT("SmsNdis: Unsupported mediums\r\n"))); 
; 206  : 	} 
; 207  :  
; 208  : 	*pSelectedMediumIndex = mIdx; 
; 209  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: Selected Medium Index %d\r\n"),mIdx)); 
; 210  :  
; 211  : 	// allocate device structure 
; 212  : 	ndisStatus = NdisAllocateMemory((PVOID*)&pSmsNdis,sizeof(SMS_SMS_NDIS_ST),0,HighestAcceptableMax); 
 
  00038	e3a01e65	 mov         r1, #0x65, 28 
  0003c	e3811004	 orr         r1, r1, #4 
  00040	e3e03000	 mvn         r3, #0 
  00044	e3a02000	 mov         r2, #0 
  00048	e28d0004	 add         r0, sp, #4 
  0004c	e584e000	 str         lr, [r4] 
  00050	e58d5000	 str         r5, [sp] 
  00054	eb000000	 bl          NdisAllocateMemory 
  00058	e1b05000	 movs        r5, r0 
 
; 213  : 	if (ndisStatus == NDIS_STATUS_SUCCESS) 
 
  0005c	1a000022	 bne         |$L41688| 
 
; 214  : 	{ 
; 215  : 		NdisZeroMemory(pSmsNdis,sizeof(SMS_SMS_NDIS_ST)); 
 
  00060	e59d0004	 ldr         r0, [sp, #4] 
  00064	e3a02e65	 mov         r2, #0x65, 28 
  00068	e3822004	 orr         r2, r2, #4 
  0006c	e3a01000	 mov         r1, #0 
  00070	eb000000	 bl          memset 
 
; 216  :  
; 217  : 		// register the allocated device as adapter context for use in SmsNdis_XXX 
; 218  : 		NdisMSetAttributesEx(MiniportAdapterHandle,(NDIS_HANDLE)pSmsNdis,0,0,NdisInterfaceInternal); 
 
  00074	e59d4014	 ldr         r4, [sp, #0x14] 
  00078	e59d1004	 ldr         r1, [sp, #4] 
  0007c	e3a0e000	 mov         lr, #0 
  00080	e1a00004	 mov         r0, r4 
  00084	e3a03000	 mov         r3, #0 
  00088	e3a02000	 mov         r2, #0 
  0008c	e58de000	 str         lr, [sp] 
  00090	eb000000	 bl          NdisMSetAttributesEx 
 
; 219  :  
; 220  : 		pSmsNdis->hMiniportAdapter = MiniportAdapterHandle; 
 
  00094	e59d3004	 ldr         r3, [sp, #4] 
 
; 221  : 		pSmsNdis->hWrapperConfigContext = WrapperConfigurationContext; 
 
  00098	e59d2018	 ldr         r2, [sp, #0x18] 
 
; 222  : 		pSmsNdis->CurrentPacketFilter = SUPPORTED_PACKET_FILTER; 
 
  0009c	e3a01006	 mov         r1, #6 
  000a0	e5834000	 str         r4, [r3] 
  000a4	e59d3004	 ldr         r3, [sp, #4] 
 
; 223  : 		pSmsNdis->CurrentLookahead = MAX_IP_PACKET_LEN; 
 
  000a8	e3a0ee5d	 mov         lr, #0x5D, 28 
  000ac	e38ee00c	 orr         lr, lr, #0xC 
  000b0	e5832004	 str         r2, [r3, #4] 
  000b4	e59d3004	 ldr         r3, [sp, #4] 
  000b8	e5831058	 str         r1, [r3, #0x58] 
  000bc	e59d3004	 ldr         r3, [sp, #4] 
  000c0	e583e05c	 str         lr, [r3, #0x5C] 
 
; 224  :  
; 225  : 		if (RegisterReadIpCBFunc(pSmsNdis) == FALSE) 
 
  000c4	e59d0004	 ldr         r0, [sp, #4] 
  000c8	eb000000	 bl          RegisterReadIpCBFunc 
  000cc	e3500000	 cmp         r0, #0 
  000d0	1a000005	 bne         |$L41688| 
 
; 226  : 		{ 
; 227  : 			NdisFreeMemory(pSmsNdis,sizeof(SMS_SMS_NDIS_ST),0); 
 
  000d4	e59d0004	 ldr         r0, [sp, #4] 
  000d8	e3a01e65	 mov         r1, #0x65, 28 
  000dc	e3811004	 orr         r1, r1, #4 
  000e0	e3a02000	 mov         r2, #0 
  000e4	eb000000	 bl          NdisFreeMemory 
 
; 228  : 			pSmsNdis = NULL; 
; 229  : 			ndisStatus = NDIS_STATUS_FAILURE; 
 
  000e8	e3a05107	 mov         r5, #7, 2 
  000ec		 |$L41688| 
 
; 230  : 		} 
; 231  : 	} 
; 232  : 	else 
; 233  : 	{ 
; 234  : 		pSmsNdis = NULL; 
; 235  : 		DBGMSG(ZONE_ERROR, (TEXT("SmsNdis: Failed to allocate SmsNdis device\r\n"))); 
; 236  : 	} 
; 237  :  
; 238  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: -SmsNdis_InitializeHandler\r\n"))); 
; 239  : 	return ndisStatus; 
 
  000ec	e1a00005	 mov         r0, r5 
 
; 240  : } 
 
  000f0	e28dd008	 add         sp, sp, #8 
  000f4	e8bd4030	 ldmia       sp!, {r4, r5, lr} 
  000f8	e12fff1e	 bx          lr 
  000fc		 |$M42512| 
 
			 ENDP  ; |SmsNdis_InitializeHandler| 
 
	EXPORT	|DriverEntry| 
	IMPORT	|NdisMRegisterMiniport| 
	IMPORT	|NdisInitializeWrapper| 
 
  00000			 AREA	 |.text| { |DriverEntry| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$DriverEntry|, PDATA, SELECTION=5, ASSOC=|.text| { |DriverEntry| } ; comdat associative 
|$T42526| DCD	|$L42525| 
	DCD	0x40002a02 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |DriverEntry| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |DriverEntry| PROC 
 
; 715  : { 
 
  00000		 |$L42525| 
  00000	e92d4070	 stmdb       sp!, {r4 - r6, lr} 
  00004	e24dd050	 sub         sp, sp, #0x50 
  00008		 |$M42523| 
  00008	e1a02001	 mov         r2, r1 
  0000c	e1a01000	 mov         r1, r0 
 
; 716  :     NDIS_STATUS ndisStatus; 
; 717  : 	NDIS_HANDLE hNdisWrapper; 
; 718  : 	NDIS_MINIPORT_CHARACTERISTICS mChars; 
; 719  :  
; 720  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: +DriverEntry\r\n"))); 
; 721  :  
; 722  : 	NdisMInitializeWrapper (&hNdisWrapper,pDriverObject,pRegistryPath,NULL); 
 
  00010	e3a03000	 mov         r3, #0 
  00014	e28d0000	 add         r0, sp, #0 
  00018	eb000000	 bl          NdisInitializeWrapper 
 
; 723  :  
; 724  : 	NdisZeroMemory(&mChars,sizeof(mChars)); 
 
  0001c	e3a02048	 mov         r2, #0x48 
  00020	e3a01000	 mov         r1, #0 
  00024	e28d0008	 add         r0, sp, #8 
  00028	eb000000	 bl          memset 
 
; 725  :  
; 726  : 	mChars.MajorNdisVersion = 0x04; 
; 727  : 	mChars.MinorNdisVersion = 0x00; 
; 728  : 	mChars.HaltHandler = SmsNdis_HaltHandler; 
; 729  : 	mChars.InitializeHandler = SmsNdis_InitializeHandler; 
 
  0002c	e59f2070	 ldr         r2, [pc, #0x70] 
 
; 730  : 	mChars.QueryInformationHandler = SmsNdis_QueryInformationHandler; 
 
  00030	e59f1068	 ldr         r1, [pc, #0x68] 
  00034	e59f3060	 ldr         r3, [pc, #0x60] 
 
; 731  : 	mChars.SendHandler = SmsNdis_SendHandler; 
 
  00038	e59fe058	 ldr         lr, [pc, #0x58] 
 
; 732  : 	mChars.SetInformationHandler = SmsNdis_SetInformationHandler; 
 
  0003c	e59f4050	 ldr         r4, [pc, #0x50] 
 
; 733  :  
; 734  : 	// register NIC entry point 
; 735  : 	ndisStatus = NdisMRegisterMiniport(hNdisWrapper,&mChars,sizeof(mChars)); 
 
  00040	e59d0000	 ldr         r0, [sp] 
  00044	e58d2024	 str         r2, [sp, #0x24] 
  00048	e58d102c	 str         r1, [sp, #0x2C] 
  0004c	e3a05004	 mov         r5, #4 
  00050	e3a06000	 mov         r6, #0 
  00054	e3a02048	 mov         r2, #0x48 
  00058	e28d1008	 add         r1, sp, #8 
  0005c	e58d301c	 str         r3, [sp, #0x1C] 
  00060	e58de038	 str         lr, [sp, #0x38] 
  00064	e58d403c	 str         r4, [sp, #0x3C] 
  00068	e5cd5008	 strb        r5, [sp, #8] 
  0006c	e5cd6009	 strb        r6, [sp, #9] 
  00070	eb000000	 bl          NdisMRegisterMiniport 
  00074	e1b04000	 movs        r4, r0 
 
; 736  : 	if (ndisStatus != NDIS_STATUS_SUCCESS) 
; 737  : 	{ 
; 738  : 		NdisTerminateWrapper(hNdisWrapper,NULL); 
 
  00078	159d0000	 ldrne       r0, [sp] 
  0007c	13a01000	 movne       r1, #0 
  00080	1b000000	 blne        NdisTerminateWrapper 
 
; 739  : 		DBGMSG(ZONE_ERROR, (TEXT("SmsNdis: Failed to register miniport. status 0x%X\r\n"),ndisStatus)); 
; 740  : 	} 
; 741  :  
; 742  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: -DriverEntry\r\n"))); 
; 743  : 	return ndisStatus; 
 
  00084	e1a00004	 mov         r0, r4 
 
; 744  : } 
 
  00088	e28dd050	 add         sp, sp, #0x50 
  0008c	e8bd4070	 ldmia       sp!, {r4 - r6, lr} 
  00090	e12fff1e	 bx          lr 
  00094		 |$L42528| 
  00094	00000000	 DCD         |SmsNdis_SetInformationHandler| 
  00098	00000000	 DCD         |SmsNdis_SendHandler| 
  0009c	00000000	 DCD         |SmsNdis_HaltHandler| 
  000a0	00000000	 DCD         |SmsNdis_QueryInformationHandler| 
  000a4	00000000	 DCD         |SmsNdis_InitializeHandler| 
  000a8		 |$M42524| 
 
			 ENDP  ; |DriverEntry| 
 
	END