📄 dvdioctl.cod
字号:
008a4 e59d3000 ldr r3, [sp]
008a8 e2831004 add r1, r3, #4
008ac e59d0088 ldr r0, [sp, #0x88]
008b0 eb000000 bl |?DVDGetCopySystem@CPCIDiskAndCD@@QAAHPAE0@Z|
; 310 :
; 311 : memset(&CmdPkt, 0, sizeof(ATAPI_COMMAND_PACKET));
008b4 e3a02014 mov r2, #0x14
008b8 e3a01000 mov r1, #0
008bc e28d0018 add r0, sp, #0x18
008c0 eb000000 bl memset
; 312 :
; 313 : // create command packet to read RPC setting (report key)
; 314 : dwLength = DVDSetupReadTitleKey(&CmdPkt, DvdGetRPC, 0, 0);
008c4 e3a03000 mov r3, #0
008c8 e3a02000 mov r2, #0
008cc e3a01008 mov r1, #8
008d0 e28d0018 add r0, sp, #0x18
008d4 eb000000 bl |?DVDSetupReadTitleKey@@YAKPAU_ATAPI_COMMAND_PACKET@@EEK@Z|
008d8 e58d0048 str r0, [sp, #0x48]
008dc e59d3048 ldr r3, [sp, #0x48]
008e0 e58d302c str r3, [sp, #0x2C]
; 315 : SgBuf.sb_len = sizeof(RKFMT_RPC);
008e4 e3a03008 mov r3, #8
008e8 e58d3034 str r3, [sp, #0x34]
; 316 : SgBuf.sb_buf = (PBYTE) &rpcData;
008ec e28d3008 add r3, sp, #8
008f0 e58d3030 str r3, [sp, #0x30]
; 317 :
; 318 : // send command
; 319 : if (AtapiSendCommand(&CmdPkt)) {
008f4 e3a03000 mov r3, #0
008f8 e3a02000 mov r2, #0
008fc e28d1018 add r1, sp, #0x18
00900 e59d0088 ldr r0, [sp, #0x88]
00904 eb000000 bl |?AtapiSendCommand@CPCIDiskAndCD@@QAAHPAU_ATAPI_COMMAND_PACKET@@GH@Z|
00908 e58d004c str r0, [sp, #0x4C]
0090c e59d304c ldr r3, [sp, #0x4C]
00910 e3530000 cmp r3, #0
00914 0a0000d5 beq |$L32217|
; 320 : // fetch result
; 321 : if (AtapiReceiveData(&SgBuf, 1, &dwRet)) {
00918 e28d3010 add r3, sp, #0x10
0091c e3a02001 mov r2, #1
00920 e28d1030 add r1, sp, #0x30
00924 e59d0088 ldr r0, [sp, #0x88]
00928 eb000000 bl |?AtapiReceiveData@CPCIDiskAndCD@@QAAHPAU_SGX_BUF@@KPAK@Z|
0092c e58d0050 str r0, [sp, #0x50]
00930 e59d3050 ldr r3, [sp, #0x50]
00934 e3530000 cmp r3, #0
00938 0a0000ba beq |$L32218|
; 322 : DUMP_REPORT_KEY(rpcData);
0093c e5dd300c ldrb r3, [sp, #0xC]
00940 e31300c0 tst r3, #0xC0
00944 1a00000f bne |$L32219|
00948 e59f3380 ldr r3, [pc, #0x380]
0094c e5933440 ldr r3, [r3, #0x440]
00950 e2032a02 and r2, r3, #2, 20
00954 e59f3374 ldr r3, [pc, #0x374]
00958 e5933440 ldr r3, [r3, #0x440]
0095c e2033080 and r3, r3, #0x80
00960 e1923003 orrs r3, r2, r3
00964 0a000004 beq |$L32420|
00968 e59f0388 ldr r0, [pc, #0x388]
0096c eb000000 bl NKDbgPrintfW
00970 e3a03001 mov r3, #1
00974 e58d3054 str r3, [sp, #0x54]
00978 ea000001 b |$L32421|
0097c |$L32420|
0097c e3a03000 mov r3, #0
00980 e58d3054 str r3, [sp, #0x54]
00984 |$L32421|
00984 ea00003a b |$L32222|
00988 |$L32219|
00988 e5dd300c ldrb r3, [sp, #0xC]
0098c e20330c0 and r3, r3, #0xC0
00990 e3530040 cmp r3, #0x40
00994 1a00000f bne |$L32223|
00998 e59f3330 ldr r3, [pc, #0x330]
0099c e5933440 ldr r3, [r3, #0x440]
009a0 e2032a02 and r2, r3, #2, 20
009a4 e59f3324 ldr r3, [pc, #0x324]
009a8 e5933440 ldr r3, [r3, #0x440]
009ac e2033080 and r3, r3, #0x80
009b0 e1923003 orrs r3, r2, r3
009b4 0a000004 beq |$L32422|
009b8 e59f0334 ldr r0, [pc, #0x334]
009bc eb000000 bl NKDbgPrintfW
009c0 e3a03001 mov r3, #1
009c4 e58d3058 str r3, [sp, #0x58]
009c8 ea000001 b |$L32423|
009cc |$L32422|
009cc e3a03000 mov r3, #0
009d0 e58d3058 str r3, [sp, #0x58]
009d4 |$L32423|
009d4 ea000026 b |$L32226|
009d8 |$L32223|
009d8 e5dd300c ldrb r3, [sp, #0xC]
009dc e20330c0 and r3, r3, #0xC0
009e0 e3530080 cmp r3, #0x80
009e4 1a00000f bne |$L32227|
009e8 e59f32e0 ldr r3, [pc, #0x2E0]
009ec e5933440 ldr r3, [r3, #0x440]
009f0 e2032a02 and r2, r3, #2, 20
009f4 e59f32d4 ldr r3, [pc, #0x2D4]
009f8 e5933440 ldr r3, [r3, #0x440]
009fc e2033080 and r3, r3, #0x80
00a00 e1923003 orrs r3, r2, r3
00a04 0a000004 beq |$L32424|
00a08 e59f02e0 ldr r0, [pc, #0x2E0]
00a0c eb000000 bl NKDbgPrintfW
00a10 e3a03001 mov r3, #1
00a14 e58d305c str r3, [sp, #0x5C]
00a18 ea000001 b |$L32425|
00a1c |$L32424|
00a1c e3a03000 mov r3, #0
00a20 e58d305c str r3, [sp, #0x5C]
00a24 |$L32425|
00a24 ea000012 b |$L32230|
00a28 |$L32227|
00a28 e5dd300c ldrb r3, [sp, #0xC]
00a2c e20330c0 and r3, r3, #0xC0
00a30 e35300c0 cmp r3, #0xC0
00a34 1a00000e bne |$L32231|
00a38 e59f3290 ldr r3, [pc, #0x290]
00a3c e5933440 ldr r3, [r3, #0x440]
00a40 e2032a02 and r2, r3, #2, 20
00a44 e59f3284 ldr r3, [pc, #0x284]
00a48 e5933440 ldr r3, [r3, #0x440]
00a4c e2033080 and r3, r3, #0x80
00a50 e1923003 orrs r3, r2, r3
00a54 0a000004 beq |$L32426|
00a58 e59f028c ldr r0, [pc, #0x28C]
00a5c eb000000 bl NKDbgPrintfW
00a60 e3a03001 mov r3, #1
00a64 e58d3060 str r3, [sp, #0x60]
00a68 ea000001 b |$L32427|
00a6c |$L32426|
00a6c e3a03000 mov r3, #0
00a70 e58d3060 str r3, [sp, #0x60]
00a74 |$L32427|
00a74 |$L32231|
00a74 |$L32230|
00a74 |$L32226|
00a74 |$L32222|
00a74 e59f3254 ldr r3, [pc, #0x254]
00a78 e5933440 ldr r3, [r3, #0x440]
00a7c e2032a02 and r2, r3, #2, 20
00a80 e59f3248 ldr r3, [pc, #0x248]
00a84 e5933440 ldr r3, [r3, #0x440]
00a88 e2033080 and r3, r3, #0x80
00a8c e1923003 orrs r3, r2, r3
00a90 0a000007 beq |$L32428|
00a94 e5dd300c ldrb r3, [sp, #0xC]
00a98 e2033038 and r3, r3, #0x38
00a9c e1a011c3 mov r1, r3, asr #3
00aa0 e59f0240 ldr r0, [pc, #0x240]
00aa4 eb000000 bl NKDbgPrintfW
00aa8 e3a03001 mov r3, #1
00aac e58d3064 str r3, [sp, #0x64]
00ab0 ea000001 b |$L32429|
00ab4 |$L32428|
00ab4 e3a03000 mov r3, #0
00ab8 e58d3064 str r3, [sp, #0x64]
00abc |$L32429|
00abc e59f320c ldr r3, [pc, #0x20C]
00ac0 e5933440 ldr r3, [r3, #0x440]
00ac4 e2032a02 and r2, r3, #2, 20
00ac8 e59f3200 ldr r3, [pc, #0x200]
00acc e5933440 ldr r3, [r3, #0x440]
00ad0 e2033080 and r3, r3, #0x80
00ad4 e1923003 orrs r3, r2, r3
00ad8 0a000006 beq |$L32430|
00adc e5dd300c ldrb r3, [sp, #0xC]
00ae0 e2031007 and r1, r3, #7
00ae4 e59f01f8 ldr r0, [pc, #0x1F8]
00ae8 eb000000 bl NKDbgPrintfW
00aec e3a03001 mov r3, #1
00af0 e58d3068 str r3, [sp, #0x68]
00af4 ea000001 b |$L32431|
00af8 |$L32430|
00af8 e3a03000 mov r3, #0
00afc e58d3068 str r3, [sp, #0x68]
00b00 |$L32431|
00b00 e59f31c8 ldr r3, [pc, #0x1C8]
00b04 e5933440 ldr r3, [r3, #0x440]
00b08 e2032a02 and r2, r3, #2, 20
00b0c e59f31bc ldr r3, [pc, #0x1BC]
00b10 e5933440 ldr r3, [r3, #0x440]
00b14 e2033080 and r3, r3, #0x80
00b18 e1923003 orrs r3, r2, r3
00b1c 0a000006 beq |$L32432|
00b20 e5dd300d ldrb r3, [sp, #0xD]
00b24 e22310ff eor r1, r3, #0xFF
00b28 e59f01b0 ldr r0, [pc, #0x1B0]
00b2c eb000000 bl NKDbgPrintfW
00b30 e3a03001 mov r3, #1
00b34 e58d306c str r3, [sp, #0x6C]
00b38 ea000001 b |$L32433|
00b3c |$L32432|
00b3c e3a03000 mov r3, #0
00b40 e58d306c str r3, [sp, #0x6C]
00b44 |$L32433|
00b44 e59f3184 ldr r3, [pc, #0x184]
00b48 e5933440 ldr r3, [r3, #0x440]
00b4c e2032a02 and r2, r3, #2, 20
00b50 e59f3178 ldr r3, [pc, #0x178]
00b54 e5933440 ldr r3, [r3, #0x440]
00b58 e2033080 and r3, r3, #0x80
00b5c e1923003 orrs r3, r2, r3
00b60 0a000006 beq |$L32434|
00b64 e5dd300e ldrb r3, [sp, #0xE]
00b68 e1a01003 mov r1, r3
00b6c e59f0168 ldr r0, [pc, #0x168]
00b70 eb000000 bl NKDbgPrintfW
00b74 e3a03001 mov r3, #1
00b78 e58d3070 str r3, [sp, #0x70]
00b7c ea000001 b |$L32435|
00b80 |$L32434|
00b80 e3a03000 mov r3, #0
00b84 e58d3070 str r3, [sp, #0x70]
00b88 |$L32435|
; 323 : // is the drive in a non-NONE RPC state?
; 324 : if (rpcData.ResetCounts & 0xc0) {
00b88 e5dd300c ldrb r3, [sp, #0xC]
00b8c e31300c0 tst r3, #0xC0
00b90 0a00000c beq |$L32242|
; 325 : // the drive is in SET, LAST CHANCE or PERM, i.e., this drive
; 326 : // has had its region set already
; 327 : preg->SystemRegion = rpcData.SystemRegion ^ 0xFF;
00b94 e5dd300d ldrb r3, [sp, #0xD]
00b98 e22330ff eor r3, r3, #0xFF
00b9c e20320ff and r2, r3, #0xFF
00ba0 e59d3000 ldr r3, [sp]
00ba4 e2833006 add r3, r3, #6
00ba8 e5c32000 strb r2, [r3]
; 328 : preg->ResetCount = rpcData.ResetCounts & 0x07;
00bac e5dd300c ldrb r3, [sp, #0xC]
00bb0 e2033007 and r3, r3, #7
00bb4 e20320ff and r2, r3, #0xFF
00bb8 e59d3000 ldr r3, [sp]
00bbc e2833007 add r3, r3, #7
00bc0 e5c32000 strb r2, [r3]
; 329 : }
; 330 : else {
00bc4 ea000016 b |$L32243|
00bc8 |$L32242|
; 331 : // the drive is in NONE, i.e., this drive is a virgin
; 332 : DEBUGMSG(ZONE_ERROR|ZONE_CDROM, (_T(
; 333 : "Atapi!CPCIDiskAndCD::DVDGetRegion> Region has never been set\r\n"
; 334 : )));
00bc8 e59f3100 ldr r3, [pc, #0x100]
00bcc e5933440 ldr r3, [r3, #0x440]
00bd0 e2032a02 and r2, r3, #2, 20
00bd4 e59f30f4 ldr r3, [pc, #0xF4]
00bd8 e5933440 ldr r3, [r3, #0x440]
00bdc e2033080 and r3, r3, #0x80
00be0 e1923003 orrs r3, r2, r3
00be4 0a000004 beq |$L32436|
00be8 e59f00e8 ldr r0, [pc, #0xE8]
00bec eb000000 bl NKDbgPrintfW
00bf0 e3a03001 mov r3, #1
00bf4 e58d3074 str r3, [sp, #0x74]
00bf8 ea000001 b |$L32437|
00bfc |$L32436|
00bfc e3a03000 mov r3, #0
00c00 e58d3074 str r3, [sp, #0x74]
00c04 |$L32437|
; 335 : preg->SystemRegion = 0xFF;
00c04 e59d3000 ldr r3, [sp]
00c08 e2832006 add r2, r3, #6
00c0c e3a030ff mov r3, #0xFF
00c10 e5c23000 strb r3, [r2]
; 336 : preg->ResetCount = 5;
00c14 e59d3000 ldr r3, [sp]
00c18 e2832007 add r2, r3, #7
00c1c e3a03005 mov r3, #5
00c20 e5c23000 strb r3, [r2]
00c24 |$L32243|
; 337 : }
; 338 : }
; 339 : else {
00c24 ea000010 b |$L32246|
00c28 |$L32218|
; 340 : DEBUGMSG(ZONE_ERROR|ZONE_CDROM, (TEXT(
; 341 : "Atapi!CPCIDiskAndCD::DVDGetRegion> Failed to receive REPORT KEY response\r\n"
; 342 : )));
00c28 e59f30a0 ldr r3, [pc, #0xA0]
00c2c e5933440 ldr
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -