⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dvdioctl.cod

📁 PXA270的BSP
💻 COD
📖 第 1 页 / 共 4 页
字号:
  0010c	e8bd41f0	 ldmia       sp!, {r4 - r8, lr}
  00110	e12fff1e	 bx          lr
  00114		 |$M33116|

			 ENDP  ; |?DVDSetupReadKey@@YAKPAU_ATAPI_COMMAND_PACKET@@PAU_DVD_COPY_PROTECT_KEY@@@Z|, DVDSetupReadKey

	EXPORT	|?CopyDVDKey@@YAKKPAU_DVD_COPY_PROTECT_KEY@@PAU_RKFMT_TITLE@@@Z| ; CopyDVDKey

  00000			 AREA	 |.text| { |?CopyDVDKey@@YAKKPAU_DVD_COPY_PROTECT_KEY@@PAU_RKFMT_TITLE@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?CopyDVDKey@@YAKKPAU_DVD_COPY_PROTECT_KEY@@PAU_RKFMT_TITLE@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?CopyDVDKey@@YAKKPAU_DVD_COPY_PROTECT_KEY@@PAU_RKFMT_TITLE@@@Z| } ; comdat associative
|$T33135| DCD	|$L33134|
	DCD	0x40003002
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?CopyDVDKey@@YAKKPAU_DVD_COPY_PROTECT_KEY@@PAU_RKFMT_TITLE@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?CopyDVDKey@@YAKKPAU_DVD_COPY_PROTECT_KEY@@PAU_RKFMT_TITLE@@@Z| PROC ; CopyDVDKey

; 116  : {

  00000		 |$L33134|
  00000	e92d4070	 stmdb       sp!, {r4 - r6, lr}
  00004	e24dd004	 sub         sp, sp, #4
  00008		 |$M33132|
  00008	e1a06001	 mov         r6, r1

; 117  :     DWORD dwTmp;
; 118  :     PBYTE psrc, pdest;
; 119  : 
; 120  :     dwTmp = dwKeyLength - 4;
; 121  : 
; 122  :     //
; 123  :     // copy the key
; 124  :     //
; 125  : 
; 126  :     pdest = (PBYTE)&(pKey->KeyData[0]);
; 127  : 
; 128  :     switch (pKey->KeyType)

  0000c	e5d6400c	 ldrb        r4, [r6, #0xC]
  00010	e5d6300d	 ldrb        r3, [r6, #0xD]
  00014	e5d6e00e	 ldrb        lr, [r6, #0xE]
  00018	e5d6500f	 ldrb        r5, [r6, #0xF]
  0001c	e1843403	 orr         r3, r4, r3, lsl #8
  00020	e183380e	 orr         r3, r3, lr, lsl #16
  00024	e1933c05	 orrs        r3, r3, r5, lsl #24
  00028	e286e020	 add         lr, r6, #0x20
  0002c	e2404004	 sub         r4, r0, #4
  00030	0a00000d	 beq         |$L32856|
  00034	e3530004	 cmp         r3, #4

; 145  : 
; 146  :         break;
; 147  : 
; 148  :     default:
; 149  : 
; 150  :         psrc = (PBYTE)&(pTitle->cgms);

  00038	12825004	 addne       r5, r2, #4
  0003c	1a000015	 bne         |$L32850|
  00040	e5d20004	 ldrb        r0, [r2, #4]
  00044	e2825005	 add         r5, r2, #5
  00048	e2444001	 sub         r4, r4, #1
  0004c	e1a03420	 mov         r3, r0, lsr #8
  00050	e1a02820	 mov         r2, r0, lsr #16
  00054	e1a01c20	 mov         r1, r0, lsr #24
  00058	e5c63015	 strb        r3, [r6, #0x15]
  0005c	e5c62016	 strb        r2, [r6, #0x16]
  00060	e5c61017	 strb        r1, [r6, #0x17]
  00064	e5c60014	 strb        r0, [r6, #0x14]
  00068	ea00000a	 b           |$L32850|
  0006c		 |$L32856|

; 129  :     {
; 130  :     case DvdTitleKey:
; 131  : 
; 132  :         pKey->KeyFlags = pTitle->cgms;
; 133  :         
; 134  :         dwTmp--;
; 135  : 
; 136  :         psrc = (PBYTE)&(pTitle->title[0]);
; 137  :         pdest = (PBYTE)&(pKey->KeyData[0]);
; 138  :         break;
; 139  : 
; 140  :     case DvdAGID:
; 141  : 
; 142  :         pKey->SessionId = ((PRKFMT_AGID)pTitle)->agid >> 6;

  0006c	e5d23007	 ldrb        r3, [r2, #7]

; 143  : 
; 144  :         dwTmp = 0;

  00070	e59d5000	 ldr         r5, [sp]
  00074	e3a04000	 mov         r4, #0
  00078	e1a00323	 mov         r0, r3, lsr #6
  0007c	e1a03420	 mov         r3, r0, lsr #8
  00080	e1a02820	 mov         r2, r0, lsr #16
  00084	e1a01c20	 mov         r1, r0, lsr #24
  00088	e5c63009	 strb        r3, [r6, #9]
  0008c	e5c6200a	 strb        r2, [r6, #0xA]
  00090	e5c6100b	 strb        r1, [r6, #0xB]
  00094	e5c60008	 strb        r0, [r6, #8]
  00098		 |$L32850|

; 151  :         pdest = (PBYTE)&(pKey->KeyData[0]);
; 152  : 
; 153  :         break;
; 154  : 
; 155  :     } // end switch on key type
; 156  : 
; 157  :     for (;dwTmp >0; dwTmp--)

  00098	e3540000	 cmp         r4, #0
  0009c	0a000003	 beq         |$L32863|
  000a0		 |$L32861|

; 158  :     {
; 159  :         *pdest++ = *psrc++;

  000a0	e4d53001	 ldrb        r3, [r5], #1
  000a4	e2544001	 subs        r4, r4, #1
  000a8	e4ce3001	 strb        r3, [lr], #1
  000ac	1afffffb	 bne         |$L32861|
  000b0		 |$L32863|

; 160  :     }
; 161  :     
; 162  :     return(TRUE);

  000b0	e3a00001	 mov         r0, #1

; 163  : }

  000b4	e28dd004	 add         sp, sp, #4
  000b8	e8bd4070	 ldmia       sp!, {r4 - r6, lr}
  000bc	e12fff1e	 bx          lr
  000c0		 |$M33133|

			 ENDP  ; |?CopyDVDKey@@YAKKPAU_DVD_COPY_PROTECT_KEY@@PAU_RKFMT_TITLE@@@Z|, CopyDVDKey

	EXPORT	|?DVDReadKey@CDisk@@QAAKPAU_IOREQ@@@Z|	; CDisk::DVDReadKey
	IMPORT	|memset|
	IMPORT	|?AtapiSendCommand@CDisk@@QAAHPAU_ATAPI_COMMAND_PACKET@@GH@Z| ; CDisk::AtapiSendCommand
	IMPORT	|?AtapiReceiveData@CDisk@@QAAHPAU_SGX_BUF@@KPAK@Z| ; CDisk::AtapiReceiveData

  00000			 AREA	 |.text| { |?DVDReadKey@CDisk@@QAAKPAU_IOREQ@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?DVDReadKey@CDisk@@QAAKPAU_IOREQ@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?DVDReadKey@CDisk@@QAAKPAU_IOREQ@@@Z| } ; comdat associative
|$T33151| DCD	|$L33150|
	DCD	0x40004603
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?DVDReadKey@CDisk@@QAAKPAU_IOREQ@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?DVDReadKey@CDisk@@QAAKPAU_IOREQ@@@Z| PROC ; CDisk::DVDReadKey

; 167  : {

  00000		 |$L33150|
  00000	e92d40f0	 stmdb       sp!, {r4 - r7, lr}
  00004	e59fc108	 ldr         r12, [pc, #0x108]
  00008	e08dd00c	 add         sp, sp, r12
  0000c		 |$M33148|
  0000c	e1a04001	 mov         r4, r1
  00010	e1a07000	 mov         r7, r0

; 168  :     DWORD dwError = ERROR_SUCCESS;
; 169  :     SGX_BUF SgBuf;
; 170  :     ATAPI_COMMAND_PACKET    CmdPkt;
; 171  :     PDVD_COPY_PROTECT_KEY pKey = (PDVD_COPY_PROTECT_KEY)pIOReq->pInBuf;
; 172  :     DWORD dwLength;
; 173  :     RKFMT_DISC keyBuf;
; 174  :     DWORD dwRet;
; 175  : 
; 176  :     memset( &CmdPkt, 0, sizeof(ATAPI_COMMAND_PACKET));

  00014	e5946018	 ldr         r6, [r4, #0x18]
  00018	e3a02014	 mov         r2, #0x14
  0001c	e3a01000	 mov         r1, #0
  00020	e28d0010	 add         r0, sp, #0x10
  00024	e3a05000	 mov         r5, #0
  00028	eb000000	 bl          memset

; 177  :     
; 178  :     if (pIOReq->dwCode ==  IOCTL_DVD_START_SESSION) {

  0002c	e5943014	 ldr         r3, [r4, #0x14]

; 179  :         pKey->KeyType = DvdAGID;
; 180  :         // TODO: Add Region check here !!!
; 181  :         dwLength = DVDSetupReadTitleKey( &CmdPkt, DvdAGID, 0, 0);

  00030	e28d0010	 add         r0, sp, #0x10
  00034	e35309cd	 cmp         r3, #0xCD, 18
  00038	1a000009	 bne         |$L32877|
  0003c	e3a0e000	 mov         lr, #0
  00040	e3a03000	 mov         r3, #0
  00044	e3a02000	 mov         r2, #0
  00048	e3a01000	 mov         r1, #0
  0004c	e5c6e00c	 strb        lr, [r6, #0xC]
  00050	e5c6e00d	 strb        lr, [r6, #0xD]
  00054	e5c6e00e	 strb        lr, [r6, #0xE]
  00058	e5c6e00f	 strb        lr, [r6, #0xF]
  0005c	eb000000	 bl          |?DVDSetupReadTitleKey@@YAKPAU_ATAPI_COMMAND_PACKET@@EEK@Z|

; 182  :     } else {

  00060	ea000001	 b           |$L33147|
  00064		 |$L32877|

; 183  :         dwLength = DVDSetupReadKey(&CmdPkt, pKey);

  00064	e1a01006	 mov         r1, r6
  00068	eb000000	 bl          |?DVDSetupReadKey@@YAKPAU_ATAPI_COMMAND_PACKET@@PAU_DVD_COPY_PROTECT_KEY@@@Z|
  0006c		 |$L33147|

; 184  :     }    
; 185  :     
; 186  :     if (dwLength > pKey->KeyLength) {

  0006c	e5d63005	 ldrb        r3, [r6, #5]
  00070	e1a04000	 mov         r4, r0
  00074	e5d60004	 ldrb        r0, [r6, #4]
  00078	e5d62006	 ldrb        r2, [r6, #6]
  0007c	e5d61007	 ldrb        r1, [r6, #7]
  00080	e1803403	 orr         r3, r0, r3, lsl #8
  00084	e1833802	 orr         r3, r3, r2, lsl #16
  00088	e1833c01	 orr         r3, r3, r1, lsl #24
  0008c	e1540003	 cmp         r4, r3

; 187  :         DEBUGMSG(ZONE_ERROR, (TEXT("cdReadKey illegal key request\r\n")));
; 188  :         return (ERROR_INVALID_PARAMETER);

  00090	83a05057	 movhi       r5, #0x57
  00094	8a000018	 bhi         |$L32887|

; 189  :     }
; 190  :     
; 191  :     SgBuf.sb_len = dwLength;
; 192  :     SgBuf.sb_buf = (PBYTE) &keyBuf;

  00098	e28d3028	 add         r3, sp, #0x28
  0009c	e58d3000	 str         r3, [sp]

; 193  :     
; 194  :     if (AtapiSendCommand(&CmdPkt)) {

  000a0	e3a03000	 mov         r3, #0
  000a4	e3a02000	 mov         r2, #0
  000a8	e28d1010	 add         r1, sp, #0x10
  000ac	e1a00007	 mov         r0, r7
  000b0	e58d4004	 str         r4, [sp, #4]
  000b4	eb000000	 bl          |?AtapiSendCommand@CDisk@@QAAHPAU_ATAPI_COMMAND_PACKET@@GH@Z|
  000b8	e3500000	 cmp         r0, #0
  000bc	0a00000d	 beq         |$L32882|

; 195  :         if (AtapiReceiveData(&SgBuf, 1, &dwRet)) {

  000c0	e28d3008	 add         r3, sp, #8
  000c4	e3a02001	 mov         r2, #1
  000c8	e28d1000	 add         r1, sp, #0
  000cc	e1a00007	 mov         r0, r7
  000d0	eb000000	 bl          |?AtapiReceiveData@CDisk@@QAAHPAU_SGX_BUF@@KPAK@Z|
  000d4	e3500000	 cmp         r0, #0
  000d8	0a000004	 beq         |$L32883|

; 196  :             CopyDVDKey(dwLength, pKey, (PRKFMT_TITLE)&keyBuf);

  000dc	e28d2028	 add         r2, sp, #0x28
  000e0	e1a01006	 mov         r1, r6
  000e4	e1a00004	 mov         r0, r4
  000e8	eb000000	 bl          |?CopyDVDKey@@YAKKPAU_DVD_COPY_PROTECT_KEY@@PAU_RKFMT_TITLE@@@Z|

; 197  :         } else {

  000ec	ea000002	 b           |$L32887|
  000f0		 |$L32883|

; 198  :             DEBUGMSG( ZONE_ERROR|ZONE_CDROM, (TEXT("Atapi:DVDReadKey failed on recieve\r\n")));
; 199  :             dwError = ERROR_READ_FAULT;

  000f0	e3a0501e	 mov         r5, #0x1E

; 200  :         }        
; 201  :     } else {

  000f4	ea000000	 b           |$L32887|
  000f8		 |$L32882|

; 202  :         dwError = ERROR_GEN_FAILURE;

  000f8	e3a0501f	 mov         r5, #0x1F
  000fc		 |$L32887|

; 187  :         DEBUGMSG(ZONE_ERROR, (TEXT("cdReadKey illegal key request\r\n")));
; 188  :         return (ERROR_INVALID_PARAMETER);

  000fc	e1a00005	 mov         r0, r5

; 203  :     }    
; 204  :     return dwError;
; 205  : }

  00100	e3a0ce82	 mov         r12, #0x82, 28
  00104	e38cc00c	 orr         r12, r12, #0xC
  00108	e08dd00c	 add         sp, sp, r12
  0010c	e8bd40f0	 ldmia       sp!, {r4 - r7, lr}
  00110	e12fff1e	 bx          lr
  00114		 |$L33153|
  00114	fffff7d4	 DCD         0xfffff7d4
  00118		 |$M33149|

			 ENDP  ; |?DVDReadKey@CDisk@@QAAKPAU_IOREQ@@@Z|, CDisk::DVDReadKey

	EXPORT	|?DVDSetupSendKey@@YAKPAU_ATAPI_COMMAND_PACKET@@PAU_DVD_COPY_PROTECT_KEY@@PAU_RKFMT_CHLGKEY@@@Z| ; DVDSetupSendKey

  00000			 AREA	 |.text| { |?DVDSetupSendKey@@YAKPAU_ATAPI_COMMAND_PACKET@@PAU_DVD_COPY_PROTECT_KEY@@PAU_RKFMT_CHLGKEY@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?DVDSetupSendKey@@YAKPAU_ATAPI_COMMAND_PACKET@@PAU_DVD_COPY_PROTECT_KEY@@PAU_RKFMT_CHLGKEY@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?DVDSetupSendKey@@YAKPAU_ATAPI_COMMAND_PACKET@@PAU_DVD_COPY_PROTECT_KEY@@PAU_RKFMT_CHLGKEY@@@Z| } ; comdat associative
|$T33180| DCD	|$L33179|
	DCD	0x40005d01
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?DVDSetupSendKey@@YAKPAU_ATAPI_COMMAND_PACKET@@PAU_DVD_COPY_PROTECT_KEY@@PAU_RKFMT_CHLGKEY@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?DVDSetupSendKey@@YAKPAU_ATAPI_COMMAND_PACKET@@PAU_DVD_COPY_PROTECT_KEY@@PAU_RKFMT_CHLGKEY@@@Z| PROC ; DVDSetupSendKey

; 258  : {

  00000		 |$L33179|
  00000	e92d47f0	 stmdb       sp!, {r4 - r10, lr}
  00004		 |$M33177|
  00004	e1a08002	 mov         r8, r2
  00008	e1a0a001	 mov         r10, r1
  0000c	e1a09000	 mov         r9, r0

; 259  :     BYTE KeyType;
; 260  :     BYTE agid;
; 261  :     DWORD dwRet;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -