📄 jdmarker.txt
字号:
000016 788d LDRB r5,[r1,#2] ;672
000018 2d6f CMP r5,#0x6f ;672
00001a d124 BNE |L2.102|
00001c 78cd LDRB r5,[r1,#3] ;673
00001e 2d62 CMP r5,#0x62 ;673
000020 d121 BNE |L2.102|
000022 790d LDRB r5,[r1,#4] ;674
000024 2d65 CMP r5,#0x65 ;674
000026 d11e BNE |L2.102|
000028 798a LDRB r2,[r1,#6] ;676
00002a 794b LDRB r3,[r1,#5] ;676
00002c 79cd LDRB r5,[r1,#7] ;677
00002e eb022203 ADD r2,r2,r3,LSL #8 ;676
000032 7a0b LDRB r3,[r1,#8] ;677
000034 7a4e LDRB r6,[r1,#9] ;678
000036 eb032305 ADD r3,r3,r5,LSL #8 ;677
00003a 7a8d LDRB r5,[r1,#0xa] ;678
00003c eb052606 ADD r6,r5,r6,LSL #8 ;678
000040 7acd LDRB r5,[r1,#0xb] ;679
000042 e9c06508 STRD r6,r5,[r0,#0x20]
000046 e9c02306 STRD r2,r3,[r0,#0x18]
00004a 6821 LDR r1,[r4,#0]
00004c 204c MOVS r0,#0x4c
00004e 6148 STR r0,[r1,#0x14]
000050 6820 LDR r0,[r4,#0]
000052 2101 MOVS r1,#1
000054 6842 LDR r2,[r0,#4]
000056 4620 MOV r0,r4
000058 4790 BLX r2
;;;681 cinfo->saw_Adobe_marker = TRUE;
00005a 2001 MOVS r0,#1
;;;682 cinfo->Adobe_transform = (UINT8) transform;
00005c f8c40124 STR r0,[r4,#0x124]
000060 f8845128 STRB r5,[r4,#0x128]
;;;683 } else {
;;;684 /* Start of APP14 does not match "Adobe", or too short */
;;;685 TRACEMS1(cinfo, 1, JTRC_APP14, (int) (datalen + remaining));
;;;686 }
;;;687 }
000064 bd70 POP {r4-r6,pc}
|L2.102|
000066 214e MOVS r1,#0x4e ;685
000068 6141 STR r1,[r0,#0x14] ;685
00006a 6821 LDR r1,[r4,#0] ;685
00006c 18d0 ADDS r0,r2,r3 ;685
00006e 6188 STR r0,[r1,#0x18] ;685
000070 6820 LDR r0,[r4,#0] ;685
000072 2101 MOVS r1,#1 ;685
000074 6842 LDR r2,[r0,#4] ;685
000076 4620 MOV r0,r4 ;685
000078 e8bd4070 POP {r4-r6,lr} ;685
00007c 4710 BX r2 ;685
;;;688
ENDP
AREA ||i.first_marker||, CODE, READONLY, ALIGN=1
first_marker PROC
;;;920 LOCAL(boolean)
;;;921 first_marker (j_decompress_ptr cinfo)
000000 e92d47f0 PUSH {r4-r10,lr}
;;;922 /* Like next_marker, but used to obtain the initial SOI marker. */
;;;923 /* For this marker, we do not allow preceding garbage or fill; otherwise,
;;;924 * we might well scan an entire input file before realizing it ain't JPEG.
;;;925 * If an application wants to process non-JFIF files, it must seek to the
;;;926 * SOI before calling the JPEG library.
;;;927 */
;;;928 {
;;;929 int c, c2;
;;;930 INPUT_VARS(cinfo);
000004 6984 LDR r4,[r0,#0x18]
000006 4605 MOV r5,r0 ;928
;;;931
;;;932 INPUT_BYTE(cinfo, c, return FALSE);
000008 e9d40100 LDRD r0,r1,[r4,#0]
00000c b929 CBNZ r1,|L3.26|
00000e 68e1 LDR r1,[r4,#0xc]
000010 4628 MOV r0,r5
000012 4788 BLX r1
000014 b148 CBZ r0,|L3.42|
000016 e9d40100 LDRD r0,r1,[r4,#0]
|L3.26|
00001a f8107b01 LDRB r7,[r0],#1
00001e 1e49 SUBS r1,r1,#1
;;;933 INPUT_BYTE(cinfo, c2, return FALSE);
000020 d108 BNE |L3.52|
000022 68e1 LDR r1,[r4,#0xc]
000024 4628 MOV r0,r5
000026 4788 BLX r1
000028 b910 CBNZ r0,|L3.48|
|L3.42|
00002a 2000 MOVS r0,#0
|L3.44|
;;;934 if (c != 0xFF || c2 != (int) M_SOI)
;;;935 ERREXIT2(cinfo, JERR_NO_SOI, c, c2);
;;;936
;;;937 cinfo->unread_marker = c2;
;;;938
;;;939 INPUT_SYNC(cinfo);
;;;940 return TRUE;
;;;941 }
00002c e8bd87f0 POP {r4-r10,pc}
|L3.48|
000030 e9d40100 LDRD r0,r1,[r4,#0] ;933
|L3.52|
000034 f8106b01 LDRB r6,[r0],#1 ;933
000038 f1a10901 SUB r9,r1,#1 ;933
00003c 4680 MOV r8,r0 ;933
00003e 2fff CMP r7,#0xff ;934
000040 d101 BNE |L3.70|
000042 2ed8 CMP r6,#0xd8 ;934
000044 d00a BEQ |L3.92|
|L3.70|
000046 6829 LDR r1,[r5,#0] ;935
000048 2035 MOVS r0,#0x35 ;935
00004a 6148 STR r0,[r1,#0x14] ;935
00004c 6828 LDR r0,[r5,#0] ;935
00004e 6187 STR r7,[r0,#0x18] ;935
000050 6828 LDR r0,[r5,#0] ;935
000052 61c6 STR r6,[r0,#0x1c] ;935
000054 6828 LDR r0,[r5,#0] ;935
000056 6801 LDR r1,[r0,#0] ;935
000058 4628 MOV r0,r5 ;935
00005a 4788 BLX r1 ;935
|L3.92|
00005c f8c561a0 STR r6,[r5,#0x1a0] ;939
000060 2001 MOVS r0,#1 ;940
000062 e9c48900 STRD r8,r9,[r4,#0] ;940
000066 e7e1 B |L3.44|
;;;942
ENDP
AREA ||i.get_dht||, CODE, READONLY, ALIGN=1
get_dht PROC
;;;418 LOCAL(boolean)
;;;419 get_dht (j_decompress_ptr cinfo)
000000 e92d4ff0 PUSH {r4-r11,lr}
;;;420 /* Process a DHT marker */
;;;421 {
;;;422 INT32 length;
;;;423 UINT8 bits[17];
;;;424 UINT8 huffval[256];
;;;425 int i, index, count;
;;;426 JHUFF_TBL **htblptr;
;;;427 INPUT_VARS(cinfo);
000004 6985 LDR r5,[r0,#0x18]
000006 b0c5 SUB sp,sp,#0x114 ;421
;;;428
;;;429 INPUT_2BYTES(cinfo, length, return FALSE);
000008 e9d56700 LDRD r6,r7,[r5,#0]
00000c 4604 MOV r4,r0 ;421
00000e b937 CBNZ r7,|L4.30|
000010 68e9 LDR r1,[r5,#0xc]
000012 4620 MOV r0,r4
000014 4788 BLX r1
000016 2800 CMP r0,#0
|L4.24|
000018 d07d BEQ |L4.278|
00001a e9d56700 LDRD r6,r7,[r5,#0]
|L4.30|
00001e f8160b01 LDRB r0,[r6],#1
000022 1e7f SUBS r7,r7,#1
000024 ea4f2800 LSL r8,r0,#8
000028 d106 BNE |L4.56|
00002a 68e9 LDR r1,[r5,#0xc]
00002c 4620 MOV r0,r4
00002e 4788 BLX r1
000030 2800 CMP r0,#0
000032 d0f1 BEQ |L4.24|
000034 e9d56700 LDRD r6,r7,[r5,#0]
|L4.56|
000038 f8160b01 LDRB r0,[r6],#1
00003c 1e7f SUBS r7,r7,#1
00003e 4440 ADD r0,r0,r8
;;;430 length -= 2;
000040 f1a00b02 SUB r11,r0,#2
;;;431
;;;432 while (length > 16) {
000044 e0cf B |L4.486|
|L4.70|
;;;433 INPUT_BYTE(cinfo, index, return FALSE);
000046 b937 CBNZ r7,|L4.86|
000048 68e9 LDR r1,[r5,#0xc]
00004a 4620 MOV r0,r4
00004c 4788 BLX r1
00004e 2800 CMP r0,#0
000050 d061 BEQ |L4.278|
000052 e9d56700 LDRD r6,r7,[r5,#0]
|L4.86|
;;;434
;;;435 TRACEMS1(cinfo, 1, JTRC_DHT, index);
000056 6821 LDR r1,[r4,#0]
000058 f8168b01 LDRB r8,[r6],#1 ;433
00005c 2050 MOVS r0,#0x50
00005e 6148 STR r0,[r1,#0x14]
000060 6821 LDR r1,[r4,#0]
000062 1e7f SUBS r7,r7,#1 ;433
000064 f8c18018 STR r8,[r1,#0x18]
000068 6820 LDR r0,[r4,#0]
00006a 2101 MOVS r1,#1
00006c 6842 LDR r2,[r0,#4]
00006e 4620 MOV r0,r4
000070 4790 BLX r2
;;;436
;;;437 bits[0] = 0;
000072 2000 MOVS r0,#0
000074 f88d0100 STRB r0,[sp,#0x100]
;;;438 count = 0;
000078 4682 MOV r10,r0
;;;439 for (i = 1; i <= 16; i++) {
00007a f04f0901 MOV r9,#1
|L4.126|
;;;440 INPUT_BYTE(cinfo, bits[i], return FALSE);
00007e b937 CBNZ r7,|L4.142|
000080 68e9 LDR r1,[r5,#0xc]
000082 4620 MOV r0,r4
000084 4788 BLX r1
000086 2800 CMP r0,#0
000088 d06a BEQ |L4.352|
00008a e9d56700 LDRD r6,r7,[r5,#0]
|L4.142|
00008e f8161b01 LDRB r1,[r6],#1
000092 a840 ADD r0,sp,#0x100
000094 f8001009 STRB r1,[r0,r9]
;;;441 count += bits[i];
000098 f8100009 LDRB r0,[r0,r9]
00009c 1e7f SUBS r7,r7,#1 ;440
00009e f1090901 ADD r9,r9,#1 ;439
0000a2 4482 ADD r10,r10,r0
0000a4 f1b90f10 CMP r9,#0x10 ;439
0000a8 dde9 BLE |L4.126|
;;;442 }
;;;443
;;;444 length -= 1 + 16;
;;;445
;;;446 TRACEMS8(cinfo, 2, JTRC_HUFFBITS,
0000aa 6820 LDR r0,[r4,#0]
0000ac f89d1101 LDRB r1,[sp,#0x101]
0000b0 6181 STR r1,[r0,#0x18]
0000b2 f89d1102 LDRB r1,[sp,#0x102]
0000b6 61c1 STR r1,[r0,#0x1c]
0000b8 f89d1103 LDRB r1,[sp,#0x103]
0000bc 6201 STR r1,[r0,#0x20]
0000be f89d1104 LDRB r1,[sp,#0x104]
0000c2 6241 STR r1,[r0,#0x24]
0000c4 f89d1105 LDRB r1,[sp,#0x105]
0000c8 6281 STR r1,[r0,#0x28]
0000ca f89d1106 LDRB r1,[sp,#0x106]
0000ce 62c1 STR r1,[r0,#0x2c]
0000d0 f89d1107 LDRB r1,[sp,#0x107]
0000d4 6301 STR r1,[r0,#0x30]
0000d6 f89d1108 LDRB r1,[sp,#0x108]
0000da 6341 STR r1,[r0,#0x34]
0000dc 6821 LDR r1,[r4,#0]
0000de f04f0956 MOV r9,#0x56
0000e2 f8c19014 STR r9,[r1,#0x14]
0000e6 6820 LDR r0,[r4,#0]
0000e8 f1ab0b11 SUB r11,r11,#0x11 ;444
0000ec 6842 LDR r2,[r0,#4]
0000ee 2102 MOVS r1,#2
0000f0 4620 MOV r0,r4
0000f2 4790 BLX r2
;;;447 bits[1], bits[2], bits[3], bits[4],
;;;448 bits[5], bits[6], bits[7], bits[8]);
;;;449 TRACEMS8(cinfo, 2, JTRC_HUFFBITS,
0000f4 6820 LDR r0,[r4,#0]
0000f6 f89d1109 LDRB r1,[sp,#0x109]
0000fa 6181 STR r1,[r0,#0x18]
0000fc f89d110a LDRB r1,[sp,#0x10a]
000100 61c1 STR r1,[r0,#0x1c]
000102 f89d110b LDRB r1,[sp,#0x10b]
000106 6201 STR r1,[r0,#0x20]
000108 f89d110c LDRB r1,[sp,#0x10c]
00010c 6241 STR r1,[r0,#0x24]
00010e f89d110d LDRB r1,[sp,#0x10d]
000112 6281 STR r1,[r0,#0x28]
000114 e000 B |L4.280|
|L4.278|
000116 e023 B |L4.352|
|L4.280|
000118 f89d110e LDRB r1,[sp,#0x10e]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -