📄 smsndis.cod
字号:
; 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 : }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -