📄 jquant2.txt
字号:
000038 e006 B |L9.72|
|L9.58|
00003a 6983 LDR r3,[r0,#0x18] ;437
00003c 42a3 CMP r3,r4 ;437
00003e dd01 BLE |L9.68|
000040 4601 MOV r1,r0 ;437
000042 461c MOV r4,r3 ;437
|L9.68|
000044 1c52 ADDS r2,r2,#1 ;437
000046 3020 ADDS r0,r0,#0x20 ;437
|L9.72|
000048 42aa CMP r2,r5 ;437
00004a dbf6 BLT |L9.58|
|L9.76|
00004c b3f1 CBZ r1,|L9.204|
00004e eb081445 ADD r4,r8,r5,LSL #5 ;444
000052 6848 LDR r0,[r1,#4] ;446
000054 6060 STR r0,[r4,#4] ;446
000056 68c8 LDR r0,[r1,#0xc] ;446
000058 60e0 STR r0,[r4,#0xc] ;446
00005a 6948 LDR r0,[r1,#0x14] ;446
00005c 6160 STR r0,[r4,#0x14] ;447
00005e 6808 LDR r0,[r1,#0] ;447
000060 6020 STR r0,[r4,#0] ;447
000062 6888 LDR r0,[r1,#8] ;447
000064 60a0 STR r0,[r4,#8] ;447
000066 6908 LDR r0,[r1,#0x10] ;447
000068 6120 STR r0,[r4,#0x10] ;452
00006a e9d12000 LDRD r2,r0,[r1,#0] ;453
00006e e9d13e02 LDRD r3,lr,[r1,#8] ;453
000072 4683 MOV r11,r0 ;452
000074 1a80 SUBS r0,r0,r2 ;452
000076 0107 LSLS r7,r0,#4 ;452
000078 ebae0003 SUB r0,lr,r3 ;453
00007c 4699 MOV r9,r3 ;453
00007e e9d16304 LDRD r6,r3,[r1,#0x10] ;460
000082 4692 MOV r10,r2 ;452
000084 eb000040 ADD r0,r0,r0,LSL #1 ;453
000088 0082 LSLS r2,r0,#2 ;453
00008a 2001 MOVS r0,#1 ;459
00008c eba30c06 SUB r12,r3,r6 ;454
000090 4297 CMP r7,r2 ;460
000092 ea4f0ccc LSL r12,r12,#3 ;454
000096 dd01 BLE |L9.156|
000098 463a MOV r2,r7 ;460
00009a 2000 MOVS r0,#0 ;460
|L9.156|
00009c 4594 CMP r12,r2 ;461
00009e dd00 BLE |L9.162|
0000a0 2002 MOVS r0,#2 ;461
|L9.162|
0000a2 b1d8 CBZ r0,|L9.220|
0000a4 2801 CMP r0,#1 ;473
0000a6 d022 BEQ |L9.238|
0000a8 2802 CMP r0,#2 ;473
0000aa d106 BNE |L9.186|
0000ac 1998 ADDS r0,r3,r6 ;485
0000ae eb0070d0 ADD r0,r0,r0,LSR #31 ;485
0000b2 1040 ASRS r0,r0,#1 ;485
0000b4 6148 STR r0,[r1,#0x14] ;487
0000b6 1c40 ADDS r0,r0,#1 ;487
0000b8 6120 STR r0,[r4,#0x10] ;487
|L9.186|
0000ba 9800 LDR r0,[sp,#0] ;491
0000bc f7fffffe BL update_box
0000c0 4621 MOV r1,r4 ;492
0000c2 9800 LDR r0,[sp,#0] ;492
0000c4 f7fffffe BL update_box
0000c8 1c6d ADDS r5,r5,#1
|L9.202|
0000ca e000 B |L9.206|
|L9.204|
0000cc e002 B |L9.212|
|L9.206|
0000ce 9803 LDR r0,[sp,#0xc] ;433
0000d0 4285 CMP r5,r0 ;433
0000d2 db9b BLT |L9.12|
|L9.212|
;;;494 }
;;;495 return numboxes;
0000d4 4628 MOV r0,r5
;;;496 }
0000d6 b004 ADD sp,sp,#0x10
0000d8 e8bd9ff0 POP {r4-r12,pc}
|L9.220|
0000dc eb0b000a ADD r0,r11,r10 ;475
0000e0 eb0070d0 ADD r0,r0,r0,LSR #31 ;475
0000e4 1040 ASRS r0,r0,#1 ;475
0000e6 6048 STR r0,[r1,#4] ;477
0000e8 1c40 ADDS r0,r0,#1 ;477
0000ea 6020 STR r0,[r4,#0] ;478
0000ec e7e5 B |L9.186|
|L9.238|
0000ee eb0e0009 ADD r0,lr,r9 ;480
0000f2 eb0070d0 ADD r0,r0,r0,LSR #31 ;480
0000f6 1040 ASRS r0,r0,#1 ;480
0000f8 60c8 STR r0,[r1,#0xc] ;482
0000fa 1c40 ADDS r0,r0,#1 ;482
0000fc 60a0 STR r0,[r4,#8] ;483
0000fe e7dc B |L9.186|
;;;497
ENDP
AREA ||i.new_color_map_2_quant||, CODE, READONLY, ALIGN=1
new_color_map_2_quant PROC
;;;1231 METHODDEF(void)
;;;1232 new_color_map_2_quant (j_decompress_ptr cinfo)
000000 f8d001cc LDR r0,[r0,#0x1cc]
;;;1233 {
;;;1234 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
;;;1235
;;;1236 /* Reset the inverse color map */
;;;1237 cquantize->needs_zeroed = TRUE;
000004 2101 MOVS r1,#1
;;;1238 }
000006 61c1 STR r1,[r0,#0x1c]
000008 4770 BX lr
;;;1239
ENDP
AREA ||i.pass2_fs_dither||, CODE, READONLY, ALIGN=2
pass2_fs_dither PROC
;;;949 METHODDEF(void)
;;;950 pass2_fs_dither (j_decompress_ptr cinfo,
000000 e92d4fff PUSH {r0-r11,lr}
;;;951 JSAMPARRAY input_buf, JSAMPARRAY output_buf, int num_rows)
;;;952 /* This version performs Floyd-Steinberg dithering */
;;;953 {
000004 b093 SUB sp,sp,#0x4c
;;;954 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
000006 9813 LDR r0,[sp,#0x4c]
;;;955 hist3d histogram = cquantize->histogram;
;;;956 register LOCFSERROR cur0, cur1, cur2; /* current error or pixel value */
;;;957 LOCFSERROR belowerr0, belowerr1, belowerr2; /* error for pixel below cur */
;;;958 LOCFSERROR bpreverr0, bpreverr1, bpreverr2; /* error for below/prev col */
;;;959 register FSERRPTR errorptr; /* => fserrors[] at column before current */
;;;960 JSAMPROW inptr; /* => current input pixel */
;;;961 JSAMPROW outptr; /* => current output pixel */
;;;962 histptr cachep;
;;;963 int dir; /* +1 or -1 depending on direction */
;;;964 int dir3; /* 3*dir, for advancing inptr & errorptr */
;;;965 int row;
;;;966 JDIMENSION col;
;;;967 JDIMENSION width = cinfo->output_width;
000008 9913 LDR r1,[sp,#0x4c]
00000a f8d091cc LDR r9,[r0,#0x1cc] ;955
00000e 6f0b LDR r3,[r1,#0x70] ;955
000010 f8d90018 LDR r0,[r9,#0x18]
000014 f8d12144 LDR r2,[r1,#0x144] ;955
;;;968 JSAMPLE *range_limit = cinfo->sample_range_limit;
;;;969 int *error_limit = cquantize->error_limiter;
000018 9011 STR r0,[sp,#0x44]
00001a f8d91028 LDR r1,[r9,#0x28] ;967
;;;970 JSAMPROW colormap0 = cinfo->colormap[0];
00001e 9813 LDR r0,[sp,#0x4c]
000020 9306 STR r3,[sp,#0x18]
000022 f8d00088 LDR r0,[r0,#0x88]
;;;971 JSAMPROW colormap1 = cinfo->colormap[1];
000026 9205 STR r2,[sp,#0x14]
000028 6842 LDR r2,[r0,#4] ;969
;;;972 JSAMPROW colormap2 = cinfo->colormap[2];
00002a 9104 STR r1,[sp,#0x10]
00002c 6883 LDR r3,[r0,#8] ;970
00002e 6800 LDR r0,[r0,#0] ;970
;;;973 SHIFT_TEMPS
;;;974
;;;975 for (row = 0; row < num_rows; row++) {
000030 e9cd3201 STRD r3,r2,[sp,#4]
000034 2100 MOVS r1,#0
000036 9003 STR r0,[sp,#0xc]
000038 9107 STR r1,[sp,#0x1c]
00003a 4608 MOV r0,r1
00003c e0b5 B |L11.426|
|L11.62|
;;;976 inptr = input_buf[row];
00003e 9914 LDR r1,[sp,#0x50]
000040 f8515020 LDR r5,[r1,r0,LSL #2]
;;;977 outptr = output_buf[row];
000044 9907 LDR r1,[sp,#0x1c]
000046 9815 LDR r0,[sp,#0x54]
000048 f8506021 LDR r6,[r0,r1,LSL #2]
;;;978 if (cquantize->on_odd_row) {
00004c f8d90024 LDR r0,[r9,#0x24]
000050 b1a0 CBZ r0,|L11.124|
;;;979 /* work right to left in this row */
;;;980 inptr += (width-1) * 3; /* so point to rightmost pixel */
;;;981 outptr += width-1;
000052 9906 LDR r1,[sp,#0x18]
000054 9806 LDR r0,[sp,#0x18] ;980
000056 440e ADD r6,r6,r1
000058 eb000040 ADD r0,r0,r0,LSL #1 ;980
;;;982 dir = -1;
00005c f04f31ff MOV r1,#0xffffffff
000060 4405 ADD r5,r5,r0 ;980
;;;983 dir3 = -3;
;;;984 errorptr = cquantize->fserrors + (width+1)*3; /* => entry after last column */
000062 9108 STR r1,[sp,#0x20]
000064 2206 MOVS r2,#6
000066 f8d91020 LDR r1,[r9,#0x20]
00006a 1eed SUBS r5,r5,#3 ;980
00006c 1e76 SUBS r6,r6,#1 ;981
00006e eb020040 ADD r0,r2,r0,LSL #1
000072 180c ADDS r4,r1,r0
000074 f06f0a02 MVN r10,#2 ;983
;;;985 cquantize->on_odd_row = FALSE; /* flip for next time */
000078 2000 MOVS r0,#0
00007a e005 B |L11.136|
|L11.124|
;;;986 } else {
;;;987 /* work left to right in this row */
;;;988 dir = 1;
00007c 2001 MOVS r0,#1
;;;989 dir3 = 3;
;;;990 errorptr = cquantize->fserrors; /* => entry before first real column */
00007e 9008 STR r0,[sp,#0x20]
000080 f8d94020 LDR r4,[r9,#0x20]
000084 f04f0a03 MOV r10,#3 ;989
|L11.136|
;;;991 cquantize->on_odd_row = TRUE; /* flip for next time */
;;;992 }
;;;993 /* Preset error values: no error propagated to first pixel from left */
;;;994 cur0 = cur1 = cur2 = 0;
000088 2200 MOVS r2,#0
;;;995 /* and no error propagated to row below yet */
;;;996 belowerr0 = belowerr1 = belowerr2 = 0;
00008a f8c90024 STR r0,[r9,#0x24]
;;;997 bpreverr0 = bpreverr1 = bpreverr2 = 0;
00008e 920f STR r2,[sp,#0x3c]
000090 920b STR r2,[sp,#0x2c]
000092 4613 MOV r3,r2 ;994
000094 4694 MOV r12,r2 ;994
000096 920d STR r2,[sp,#0x34] ;996
000098 920e STR r2,[sp,#0x38] ;996
00009a 920a STR r2,[sp,#0x28]
;;;998
;;;999 for (col = width; col > 0; col--) {
00009c 920c STR r2,[sp,#0x30]
00009e 9806 LDR r0,[sp,#0x18]
0000a0 e077 B |L11.402|
;;;1000 /* curN holds the error propagated from the previous pixel on the
;;;1001 * current line. Add the error propagated from the previous line
;;;1002 * to form the complete error correction term for this pixel, and
;;;1003 * round the error term (which is expressed * 16) to an integer.
;;;1004 * RIGHT_SHIFT rounds towards minus infinity, so adding 8 is correct
;;;1005 * for either sign of the error value.
;;;1006 * Note: errorptr points to *previous* column's array entry.
;;;1007 */
;;;1008 cur0 = RIGHT_SHIFT(cur0 + errorptr[dir3+0] + 8, 4);
0000a2 bf00 NOP
|L11.164|
0000a4 f934101a LDRSH r1,[r4,r10,LSL #1]
0000a8 f10c0008 ADD r0,r12,#8
0000ac 4408 ADD r0,r0,r1
0000ae 1101 ASRS r1,r0,#4
;;;1009 cur1 = RIGHT_SHIFT(cur1 + errorptr[dir3+1] + 8, 4);
0000b0 eb04004a ADD r0,r4,r10,LSL #1
0000b4 9012 STR r0,[sp,#0x48]
0000b6 f9b07002 LDRSH r7,[r0,#2]
0000ba 3308 ADDS r3,r3,#8
;;;1010 cur2 = RIGHT_SHIFT(cur2 + errorptr[dir3+2] + 8, 4);
0000bc f9b00004 LDRSH r0,[r0,#4]
0000c0 443b ADD r3,r3,r7 ;1009
0000c2 3208 ADDS r2,r2,#8
;;;1011 /* Limit the error using transfer function set by init_error_limit.
;;;1012 * See comments with init_error_limit for rationale.
;;;1013 */
;;;1014 cur0 = error_limit[cur0];
0000c4 9f04 LDR r7,[sp,#0x10]
0000c6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -