diff --git a/s/jhdr b/s/jhdr new file mode 100644 index 0000000000000000000000000000000000000000..3d281e0fcde9ebed60f48079e586f503c8477eb4 --- /dev/null +++ b/s/jhdr @@ -0,0 +1,28 @@ +; Copyright 1996 Acorn Computers Ltd +; +; Licensed under the Apache License, Version 2.0 (the "License"); +; you may not use this file except in compliance with the License. +; You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. +; +; s.JHdr, generated by MakeJHdr Mar 17 1995 16:36:01. + +huff_tbl_maxcode * 276 +huff_tbl_valptr * 348 +huff_tbl_huffval * 17 +huff_tbl_shortcut * 416 + +cinfo_next_input_byte * 52 +cinfo_get_buffer * 260 +cinfo_bits_left * 264 +cinfo_buffer_end * 56 + + END + diff --git a/s/putscaled b/s/putscaled new file mode 100644 index 0000000000000000000000000000000000000000..e394b476a2015dbafa4ddc8f3ac17b7bdb6e1a1f --- /dev/null +++ b/s/putscaled @@ -0,0 +1,10535 @@ +; Copyright 1996 Acorn Computers Ltd +; +; Licensed under the Apache License, Version 2.0 (the "License"); +; you may not use this file except in compliance with the License. +; You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. +; +; generated by Norcroft RISC OS ARM C vsn 5.05 (Acorn Computers Ltd) [Dec 23 1994] + + AREA |C$$code|, CODE, READONLY +|x$codeseg| + + EXPORT memcpy +memcpy + MOV a4,a1 + MOV ip,a3 + SUB a3,a3,#1 + CMP ip,#0 + MOVLSS pc,lr +|L000014.J4.memcpy| + LDRB ip,[a2],#1 + STRB ip,[a4],#1 + MOV ip,a3 + SUB a3,a3,#1 + CMP ip,#0 + BHI |L000014.J4.memcpy| + MOVS pc,lr + + EXPORT strcpy +strcpy + MOV a3,a1 + LDRB a4,[a2,#0] + CMP a4,#&1f + MOVLES pc,lr +|L000040.J4.strcpy| + LDRB a4,[a2],#1 + STRB a4,[a3],#1 + LDRB a4,[a2,#0] + CMP a4,#&1f + BGT |L000040.J4.strcpy| + MOVS pc,lr + + EXPORT memset +memset + MOV a4,a1 + MOV ip,a3 + SUB a3,a3,#1 + CMP ip,#0 + MOVLSS pc,lr + AND a2,a2,#&ff +|L000070.J4.memset| + STRB a2,[a4],#1 + MOV ip,a3 + SUB a3,a3,#1 + CMP ip,#0 + BHI |L000070.J4.memset| + MOVS pc,lr + + IMPORT exit + EXPORT panic_exit +panic_exit + B exit + +get_2bytes + MOV a4,#&ff + LDR a2,[a1,#&38] + LDR a3,[a1,#&34] + CMP a3,a2 + LDRCCB a2,[a3],#1 + STRCC a3,[a1,#&34] + MOVCS a2,a4 + MOV a3,a2 + ADD ip,a1,#&34 + LDMIA ip,{a2,ip} + CMP a2,ip + LDRCCB a4,[a2],#1 + STRCC a2,[a1,#&34]! + ADD a1,a4,a3,LSL #8 + MOVS pc,lr + +skip_variable + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + SUB a1,a1,#2 + CMP a1,#0 + LDMLEDB fp,{v1,fp,sp,pc}^ + LDR a2,[v1,#&38] +|L0000ec.J4.skip_variable| + LDR a3,[v1,#&34] + CMP a3,a2 + ADDCC a3,a3,#1 + STRCC a3,[v1,#&34] + SUB a1,a1,#1 + CMP a1,#0 + BGT |L0000ec.J4.skip_variable| + LDMDB fp,{v1,fp,sp,pc}^ + +get_dht + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + SUB sp,sp,#&114 + BL get_2bytes + SUB v4,a1,#2 + CMP v4,#0 + BLE |L000250.J37.get_dht| + MOV v6,#0 + MOV v5,#&ff +|L000138.J4.get_dht| + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a2,v5 + MOV v2,a2 + STRB v6,[sp,#&100] + MOV v3,#0 + MOV a1,#1 +|L000160.J10.get_dht| + ADD a3,v1,#&34 + LDMIA a3,{a2,a3} + CMP a2,a3 + MOVCS a2,v5 + BCS |L000180.J11.get_dht| + LDRB a3,[a2],#1 + STR a2,[v1,#&34] + MOV a2,a3 +|L000180.J11.get_dht| + ADD a3,sp,#&100 + STRB a2,[a3,a1] + ADD a2,sp,#&100 + LDRB a2,[a2,a1] + ADD v3,a2,v3 + ADD a1,a1,#1 + CMP a1,#&10 + BLE |L000160.J10.get_dht| + CMP v3,#&100 + MOVGT a1,#&b9 + ADDGT a1,a1,#&4e00 + BLGT exit + MOV a1,#0 + CMP v3,#0 + BLE |L0001ec.J18.get_dht| +|L0001bc.J17.get_dht| + ADD a3,v1,#&34 + LDMIA a3,{a2,a3} + CMP a2,a3 + MOVCS a2,v5 + BCS |L0001dc.J20.get_dht| + LDRB a3,[a2],#1 + STR a2,[v1,#&34] + MOV a2,a3 +|L0001dc.J20.get_dht| + STRB a2,[sp,a1] + ADD a1,a1,#1 + CMP a1,v3 + BLT |L0001bc.J17.get_dht| +|L0001ec.J18.get_dht| + ADD a1,v3,#&11 + SUB v4,v4,a1 + TST v2,#&10 + SUBNE v2,v2,#&10 + ADD a1,v1,v2,LSL #2 + ADDEQ v3,a1,#&64 + ADDNE v3,a1,#&74 + CMP v2,#0 + BLT |L000218.J28.get_dht| + CMP v2,#4 + BLT |L000224.J27.get_dht| +|L000218.J28.get_dht| + MOV a1,#&2c8 + ADD a1,a1,#&4c00 + BL exit +|L000224.J27.get_dht| + ADD a2,sp,#&100 + MOV a3,#&11 + LDR a1,[v3,#0] + BL memcpy + LDR a1,[v3,#0] + ADD a1,a1,#&11 + MOV a2,sp + MOV a3,#&100 + BL memcpy + CMP v4,#0 + BGT |L000138.J4.get_dht| +|L000250.J37.get_dht| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +get_dac + MOV ip,sp + STMDB sp!,{v1-v5,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + SUB v4,a1,#2 + CMP v4,#0 + LDMLEDB fp,{v1-v5,fp,sp,pc}^ + MOV v5,#&ff +|L000278.J4.get_dac| + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + LDRCCB a3,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a3,v5 + MOV v2,a3 + LDR a1,[v1,#&34] + CMP a1,a2 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a2,v5 + MOV v3,a2 + CMP v2,#0 + BLT |L0002bc.J14.get_dac| + CMP v2,#&20 + BLT |L0002c8.J13.get_dac| +|L0002bc.J14.get_dac| + MOV a1,#&2e8 + ADD a1,a1,#&4c00 + BL exit +|L0002c8.J13.get_dac| + CMP v2,#&10 + MOVGE a1,v3 + ADDGE a2,v1,v2 + STRGEB a1,[a2,#&94] + BGE |L000304.J19.get_dac| + AND a1,v3,#&f + ADD a2,v1,v2 + STRB a1,[a2,#&84] + MOV a3,v3,ASR #4 + AND a3,a3,#&ff + STRB a3,[a2,#&94] + CMP a1,a3 + MOVGT a1,#&ef0 + ADDGT a1,a1,#&4000 + BLGT exit +|L000304.J19.get_dac| + SUB v4,v4,#2 + CMP v4,#0 + BGT |L000278.J4.get_dac| + LDMDB fp,{v1-v5,fp,sp,pc}^ + +get_dqt + MOV ip,sp + STMDB sp!,{v1-v5,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + SUB v2,a1,#2 + CMP v2,#0 + LDMLEDB fp,{v1-v5,fp,sp,pc}^ + MOV v4,#&ff +|L000338.J4.get_dqt| + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + MOVCS a1,v4 + BCS |L000358.J7.get_dqt| + LDRB a2,[a1],#1 + STR a1,[v1,#&34] + MOV a1,a2 +|L000358.J7.get_dqt| + MOV v3,a1,ASR #4 + AND v5,a1,#&f + CMP v5,#4 + MOVGE a1,#&30c + ADDGE a1,a1,#&4c00 + BLGE exit + ADD a1,v1,v5,LSL #2 + LDR a4,[a1,#&54]! + MOV a1,#0 +|L00037c.J12.get_dqt| + ADD ip,v1,#&34 + LDMIA ip,{a3,ip} + CMP a3,ip + LDRCCB a2,[a3],#1 + STRCC a3,[v1,#&34] + MOVCS a2,v4 + MOV a2,a2,LSL #16 + MOV a2,a2,LSR #16 + TEQ v3,#0 + BEQ |L0003c4.J16.get_dqt| + LDR a3,[v1,#&34] + CMP a3,ip + LDRCCB ip,[a3],#1 + STRCC a3,[v1,#&34] + MOVCS ip,v4 + ADD a2,ip,a2,LSL #8 + MOV a2,a2,LSL #16 + MOV a2,a2,LSR #16 +|L0003c4.J16.get_dqt| + STR a2,[a4,a1,LSL #2] + ADD a1,a1,#1 + CMP a1,#&40 + BLT |L00037c.J12.get_dqt| + MOV a1,#0 +|L0003d8.J22.get_dqt| + ADD a1,a1,#8 + CMP a1,#&40 + BLT |L0003d8.J22.get_dqt| + SUB v2,v2,#&41 + TEQ v3,#0 + SUBNE v2,v2,#&40 + CMP v2,#0 + BGT |L000338.J4.get_dqt| + LDMDB fp,{v1-v5,fp,sp,pc}^ + +get_dri + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + TEQ a1,#4 + MOVNE a1,#&2d + ADDNE a1,a1,#&4f00 + BLNE exit + MOV a1,v1 + BL get_2bytes + MOV a1,a1,LSL #16 + MOV a1,a1,LSR #16 + STR a1,[v1,#&bc]! + LDMDB fp,{v1,fp,sp,pc}^ + +get_app0 + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + SUB sp,sp,#&10 + BL get_2bytes + SUB v2,a1,#2 + CMP v2,#&e + BLT |L000508.J25.get_app0| + MOV a1,#0 + MOV a2,#&ff +|L000464.J6.get_app0| + LDR a3,[v1,#&38] + LDR a4,[v1,#&34] + CMP a4,a3 + LDRCCB a3,[a4],#1 + STRCC a4,[v1,#&34] + MOVCS a3,a2 + STRB a3,[sp,a1] + ADD a1,a1,#1 + CMP a1,#&e + BLT |L000464.J6.get_app0| + SUB v2,v2,#&e + LDRB a1,[sp,#0] + TEQ a1,#&4a + LDREQB a1,[sp,#1] + TEQEQ a1,#&46 + LDREQB a1,[sp,#2] + TEQEQ a1,#&49 + LDREQB a1,[sp,#3] + TEQEQ a1,#&46 + LDREQB a1,[sp,#4] + TEQEQ a1,#0 + BNE |L000508.J25.get_app0| + LDRB a1,[sp,#5] + TEQ a1,#1 + MOVNE a1,#&4d + ADDNE a1,a1,#&4f00 + BLNE exit + LDRB a1,[sp,#7] + STR a1,[v1,#&40] + LDRB a1,[sp,#9] + LDRB a2,[sp,#8] + ADD a1,a1,a2,LSL #8 + STR a1,[v1,#&44] + LDRB a2,[sp,#&b] + LDRB a1,[sp,#&a] + ADD a1,a2,a1,LSL #8 + STR a1,[v1,#&48] + LDR a1,[v1,#&1c] + TEQ a1,#0 + MOVEQ a1,#3 + STREQ a1,[v1,#&1c] +|L000508.J25.get_app0| + MOV a1,v2 + SUB v2,v2,#1 + CMP a1,#0 + BLE |L00053c.J37.get_app0| + LDR a2,[v1,#&38] +|L00051c.J26.get_app0| + LDR a1,[v1,#&34] + CMP a1,a2 + ADDCC a1,a1,#1 + STRCC a1,[v1,#&34] + MOV a1,v2 + SUB v2,v2,#1 + CMP a1,#0 + BGT |L00051c.J26.get_app0| +|L00053c.J37.get_app0| + LDMDB fp,{v1,v2,fp,sp,pc}^ + +get_sof + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + MOV v3,a1 + MOV v2,#&ff + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a2,v2 + STR a2,[v1,#&3c] + MOV a1,v1 + BL get_2bytes + STR a1,[v1,#&18] + MOV a1,v1 + BL get_2bytes + STR a1,[v1,#&14] + MOV a2,a1 + ADD a3,v1,#&34 + LDMIA a3,{a1,a3} + CMP a1,a3 + MOVCS a1,v2 + BCS |L0005b4.J7.get_sof| + LDRB a3,[a1],#1 + STR a1,[v1,#&34] + MOV a1,a3 +|L0005b4.J7.get_sof| + STR a1,[v1,#&4c] + LDR a3,[v1,#&18] + CMP a3,#0 + CMPGT a2,#0 + CMPGT a1,#0 + MOVLE a1,#&82 + ADDLE a1,a1,#&4f00 + BLLE exit + LDR a1,[v1,#&3c] + TEQ a1,#8 + MOVNE a1,#&86 + ADDNE a1,a1,#&4f00 + BLNE exit + LDR a1,[v1,#&4c] + ADD a1,a1,a1,LSL #1 + ADD a1,a1,#8 + TEQ a1,v3 + MOVNE a1,#&92 + ADDNE a1,a1,#&4f00 + BLNE exit + LDR a1,[v1,#&4c] + CMP a1,#3 + MOVGT a1,#&96 + ADDGT a1,a1,#&4f00 + BLGT exit + MOV a1,#0 + LDR a2,[v1,#&4c] + CMP a2,#0 + LDMLEDB fp,{v1-v3,fp,sp,pc}^ + MOV a2,#&f +|L00062c.J21.get_sof| + RSB a4,a1,a1,LSL #3 + LDR a3,[v1,#&50] + ADD a3,a3,a4,LSL #3 + STR a1,[a3,#4] + ADD ip,v1,#&34 + LDMIA ip,{a4,ip} + CMP a4,ip + LDRCCB ip,[a4],#1 + STRCC a4,[v1,#&34] + MOVCS ip,v2 + STR ip,[a3,#0] + ADD ip,v1,#&34 + LDMIA ip,{a4,ip} + CMP a4,ip + MOVCS a4,v2 + BCS |L00067c.J27.get_sof| + MOV ip,a4 + LDRB a4,[a4,#0] + ADD ip,ip,#1 + STR ip,[v1,#&34] +|L00067c.J27.get_sof| + AND ip,a2,a4,ASR #4 + AND a4,a4,#&f + STR a4,[a3,#&c] + STR ip,[a3,#8] + ADD ip,v1,#&34 + LDMIA ip,{a4,ip} + CMP a4,ip + LDRCCB ip,[a4],#1 + STRCC a4,[v1,#&34] + MOVCS ip,v2 + ADD a1,a1,#1 + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR ip,[a3,#&10]! + LDR a3,[v1,#&4c] + CMP a1,a3 + BLT |L00062c.J21.get_sof| + LDMDB fp,{v1-v3,fp,sp,pc}^ + +get_sos + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + MOV v4,#&ff + ADD a3,v1,#&34 + LDMIA a3,{a2,a3} + CMP a2,a3 + LDRCCB a3,[a2],#1 + STRCC a2,[v1,#&34] + MOVCS a3,v4 + MOV v3,a3 + SUB v2,a1,#3 + MOV a1,#3 + STR a3,[v1,#&c8] + ADD a1,a1,a3,LSL #1 + TEQ a1,v2 + BNE |L000720.J8.get_sos| + CMP v3,#1 + BLT |L000720.J8.get_sos| + CMP v3,#4 + BLE |L00072c.J7.get_sos| +|L000720.J8.get_sos| + MOV a1,#&3bc + ADD a1,a1,#&4c00 + BL exit +|L00072c.J7.get_sos| + MOV v5,#0 + CMP v3,#0 + BLE |L0007e4.J13.get_sos| +|L000738.J12.get_sos| + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + LDRCCB a3,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a3,#&ff + LDR a1,[v1,#&34] + CMP a1,a2 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a2,#&ff + MOV v6,a2 + SUB v2,v2,#2 + MOV v4,#0 + LDR a1,[v1,#&4c] + CMP a1,#0 + BLE |L0007a0.J22.get_sos| + LDR a2,[v1,#&50] +|L000780.J21.get_sos| + RSB a4,v4,v4,LSL #3 + ADD a4,a2,a4,LSL #3 + LDR a4,[a4,#0] + TEQ a4,a3 + BEQ |L0007a0.J22.get_sos| + ADD v4,v4,#1 + CMP v4,a1 + BLT |L000780.J21.get_sos| +|L0007a0.J22.get_sos| + CMP v4,a1 + MOVGE a1,#&ca + ADDGE a1,a1,#&4f00 + BLGE exit + RSB a1,v4,v4,LSL #3 + LDR a2,[v1,#&50] + ADD a1,a2,a1,LSL #3 + ADD a2,v1,v5,LSL #2 + STR a1,[a2,#&cc]! + MOV a2,#&f + AND a2,a2,v6,ASR #4 + STR a2,[a1,#&14] + AND a2,v6,#&f + ADD v5,v5,#1 + CMP v5,v3 + STR a2,[a1,#&18]! + BLT |L000738.J12.get_sos| +|L0007e4.J13.get_sos| + CMP v2,#0 + LDMLEDB fp,{v1-v6,fp,sp,pc}^ + LDR a1,[v1,#&38] +|L0007f0.J30.get_sos| + LDR a2,[v1,#&34] + CMP a2,a1 + ADDCC a2,a2,#1 + STRCC a2,[v1,#&34] + SUB v2,v2,#1 + CMP v2,#0 + BGT |L0007f0.J30.get_sos| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +get_soi + STMDB sp!,{lr} + MOV a2,#0 + MOV ip,#0 + MOV a4,#1 + MOV lr,#5 +|L000824.J4.get_soi| + ADD a3,a1,a2 + STRB ip,[a3,#&84] + STRB a4,[a3,#&94] + STRB lr,[a3,#&a4] + ADD a2,a2,#1 + CMP a2,#&10 + BLT |L000824.J4.get_soi| + STR ip,[a1,#&bc] + STR a4,[a1,#&44] + STR ip,[a1,#&40] + STR a4,[a1,#&48]! + STR ip,[a1,#&70]! + LDMIA sp!,{pc}^ + +next_marker + MOV a3,#&ff + LDR a2,[a1,#&38] +|L000860.J5.next_marker| + LDR ip,[a1,#&34] + CMP ip,a2 + LDRCCB a4,[ip],#1 + STRCC ip,[a1,#&34] + MOVCS a4,a3 + TEQ a4,#&ff + BNE |L000860.J5.next_marker| +|L00087c.J10.next_marker| + LDR ip,[a1,#&34] + CMP ip,a2 + LDRCCB a4,[ip],#1 + STRCC ip,[a1,#&34] + MOVCS a4,a3 + TEQ a4,#&ff + BEQ |L00087c.J10.next_marker| + TEQ a4,#0 + BEQ |L000860.J5.next_marker| + MOV a1,a4 + MOVS pc,lr + +process_tables + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 +|L0008b8.J4.process_tables| + MOV a1,v1 + BL next_marker + MOV a2,a1 + CMP a1,#&ce + LDMEQDB fp,{v1,fp,sp,pc}^ + BGT |L000950.J39.process_tables| + CMP a1,#&c6 + LDMEQDB fp,{v1,fp,sp,pc}^ + BGT |L000924.J42.process_tables| + CMP a1,#&c2 + LDMEQDB fp,{v1,fp,sp,pc}^ + BGT |L000900.J45.process_tables| + TEQ a1,#1 + BEQ |L0008b8.J4.process_tables| + TEQ a1,#&c0 + TEQNE a1,#&c1 + LDMEQDB fp,{v1,fp,sp,pc}^ + B |L0009d4.J7.process_tables| +|L000900.J45.process_tables| + TEQ a1,#&c3 + LDMEQDB fp,{v1,fp,sp,pc}^ + TEQ a1,#&c4 + MOVEQ a1,v1 + BLEQ get_dht + BEQ |L0008b8.J4.process_tables| + TEQ a1,#&c5 + LDMEQDB fp,{v1,fp,sp,pc}^ + B |L0009d4.J7.process_tables| +|L000924.J42.process_tables| + SUB a3,a1,#&c7 + CMP a3,#6 + ADDLS pc,pc,a3,LSL #2 + B |L0009d4.J7.process_tables| + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + B |L0009b0.J25.process_tables| + LDMDB fp,{v1,fp,sp,pc}^ +|L000950.J39.process_tables| + SUB a3,a1,#&cf + CMP a3,#&11 + ADDLS pc,pc,a3,LSL #2 + B |L0009d4.J7.process_tables| + LDMDB fp,{v1,fp,sp,pc}^ + B |L0008b8.J4.process_tables| + B |L0008b8.J4.process_tables| + B |L0008b8.J4.process_tables| + B |L0008b8.J4.process_tables| + B |L0008b8.J4.process_tables| + B |L0008b8.J4.process_tables| + B |L0008b8.J4.process_tables| + B |L0008b8.J4.process_tables| + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + B |L0009bc.J10.process_tables| + B |L0009d4.J7.process_tables| + B |L0009c8.J9.process_tables| + B |L0009d4.J7.process_tables| + B |L0009d4.J7.process_tables| + MOV a1,v1 + BL get_app0 + B |L0008b8.J4.process_tables| +|L0009b0.J25.process_tables| + MOV a1,v1 + BL get_dac + B |L0008b8.J4.process_tables| +|L0009bc.J10.process_tables| + MOV a1,v1 + BL get_dqt + B |L0008b8.J4.process_tables| +|L0009c8.J9.process_tables| + MOV a1,v1 + BL get_dri + B |L0008b8.J4.process_tables| +|L0009d4.J7.process_tables| + MOV a1,v1 + BL skip_variable + B |L0008b8.J4.process_tables| + +read_file_header + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + LDR a3,[a1,#&34] + LDR a1,[a1,#&38] + MOV a2,#&ff + CMP a3,a1 + LDRCCB a1,[a3],#1 + STRCC a3,[v1,#&34] + MOVCS a1,a2 + TEQ a1,#&ff + BNE |L000a30.J5.read_file_header| + ADD a3,v1,#&34 + LDMIA a3,{a1,a3} + CMP a1,a3 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + TEQ a2,#&d8 + BEQ |L000a3c.J4.read_file_header| +|L000a30.J5.read_file_header| + MOV a1,#&67 + ADD a1,a1,#&5000 + BL exit +|L000a3c.J4.read_file_header| + MOV a1,v1 + BL get_soi + MOV a1,v1 + BL process_tables + MOV v3,#0 + MOV v2,#1 + TEQ a1,#&c0 + TEQNE a1,#&c1 + BEQ |L000a7c.J17.read_file_header| + TEQ a1,#&c9 + BNE |L000a90.J15.read_file_header| + MOV a2,a1 + MOV a1,v1 + BL get_sof + STR v2,[v1,#&b4] + B |L000a9c.J14.read_file_header| +|L000a7c.J17.read_file_header| + MOV a2,a1 + MOV a1,v1 + BL get_sof + STR v3,[v1,#&b4] + B |L000a9c.J14.read_file_header| +|L000a90.J15.read_file_header| + MOV a1,#&7b + ADD a1,a1,#&5000 + BL exit +|L000a9c.J14.read_file_header| + LDR a1,[v1,#&4c] + TEQ a1,#1 + STREQ v2,[v1,#&1c]! + LDMEQDB fp,{v1-v3,fp,sp,pc}^ + TEQ a1,#3 + BEQ |L000ac8.J25.read_file_header| + TEQ a1,#4 + STRNE v3,[v1,#&1c]! + LDMNEDB fp,{v1-v3,fp,sp,pc}^ + MOV a1,#5 + B |L000b28.J44.read_file_header| +|L000ac8.J25.read_file_header| + LDR a1,[v1,#&1c] + TEQ a1,#0 + LDMNEDB fp,{v1-v3,fp,sp,pc}^ + LDR a2,[v1,#&50] + LDR a1,[a2,#0] + MOV a4,a1,LSL #16 + MOV a4,a4,ASR #16 + LDR a1,[a2,#&38] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + LDR a2,[a2,#&70] + MOV a2,a2,LSL #16 + MOV a2,a2,ASR #16 + MOV a3,#3 + CMP a4,#1 + BNE |L000b14.J32.read_file_header| + TEQ a1,#2 + BEQ |L000b30.J37.read_file_header| + B |L000b18.J38.read_file_header| +|L000b14.J32.read_file_header| + BNE |L000b30.J37.read_file_header| +|L000b18.J38.read_file_header| + TEQ a1,#4 + TEQEQ a2,#5 + BNE |L000b30.J37.read_file_header| + MOV a1,#4 +|L000b28.J44.read_file_header| + STR a1,[v1,#&1c]! + LDMDB fp,{v1-v3,fp,sp,pc}^ +|L000b30.J37.read_file_header| + STR a3,[v1,#&1c]! + LDMDB fp,{v1-v3,fp,sp,pc}^ + +read_scan_header + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL process_tables + TEQ a1,#&d9 + BEQ |L000b74.J4.read_scan_header| + TEQ a1,#&da + MOVEQ a1,v1 + BLEQ get_sos + MOVEQ a1,#1 + LDMEQDB fp,{v1,fp,sp,pc}^ + MOV a1,#&be + ADD a1,a1,#&5000 + BL exit +|L000b74.J4.read_scan_header| + MOV a1,#0 + LDMDB fp,{v1,fp,sp,pc}^ + + ;MPORT huff_DECODE_buildshortcut + IMPORT exit_c +fix_huff_tbl + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + SUB sp,sp,#&308 + MOV a2,#0 + MOV a3,#1 +|L000b9c.J4.fix_huff_tbl| + MOV a1,#1 + ADD lr,v1,a3 + LDRB a4,[lr,#0] + CMP a4,#1 + BLT |L000bd4.J6.fix_huff_tbl| + AND a4,a3,#&ff +|L000bb4.J5.fix_huff_tbl| + MOV v3,a2 + ADD a2,a2,#1 + ADD ip,sp,#&204 + STRB a4,[ip,v3] + ADD a1,a1,#1 + LDRB v3,[lr,#0] + CMP v3,a1 + BGE |L000bb4.J5.fix_huff_tbl| +|L000bd4.J6.fix_huff_tbl| + ADD a3,a3,#1 + CMP a3,#&10 + BLE |L000b9c.J4.fix_huff_tbl| + MOV v6,#0 + ADD a1,sp,#&204 + STRB v6,[a1,a2] + MOV a1,#0 + LDRB a3,[sp,#&204] + MOV a2,#0 + LDRB a4,[sp,#&204] + TEQ a4,#0 + BEQ |L000c68.J11.fix_huff_tbl| +|L000c04.J10.fix_huff_tbl| + ADD a4,sp,#&204 + LDRB a4,[a4,a2] + TEQ a4,a3 + BNE |L000c48.J14.fix_huff_tbl| +|L000c14.J13.fix_huff_tbl| + MOV a4,a2 + ADD a2,a2,#1 + ADD a4,sp,a4,LSL #1 + STRB a1,[a4,#0] + MOV ip,a1,ASR #8 + STRB ip,[a4,#1] + ADD a1,a1,#1 + MOV a1,a1,LSL #16 + MOV a1,a1,LSR #16 + ADD a4,sp,#&204 + LDRB a4,[a4,a2] + TEQ a4,a3 + BEQ |L000c14.J13.fix_huff_tbl| +|L000c48.J14.fix_huff_tbl| + MOV a1,a1,LSL #1 + MOV a1,a1,LSL #16 + MOV a1,a1,LSR #16 + ADD a3,a3,#1 + ADD a4,sp,#&204 + LDRB a4,[a4,a2] + TEQ a4,#0 + BNE |L000c04.J10.fix_huff_tbl| +|L000c68.J11.fix_huff_tbl| + MOV a2,#0 + MOV a3,#1 + MVN a1,#0 +|L000c74.J18.fix_huff_tbl| + ADD v3,v1,a3 + LDRB a4,[v3,#0] + TEQ a4,#0 + BEQ |L000cc8.J19.fix_huff_tbl| + ADD lr,v1,a3,LSL #2 + STR a2,[lr,#&15c] + ADD a4,lr,#&15c + LDR v4,[sp,a2,LSL #1] + MOV v4,v4,LSL #16 + MOV v4,v4,LSR #16 + LDR ip,[a4,#0] + SUB v4,ip,v4 + STR v4,[a4,#0] + LDRB a4,[v3,#0] + ADD a2,a4,a2 + ADD a4,sp,a2,LSL #1 + LDR a4,[a4,#-2] + MOV a4,a4,LSL #16 + MOV a4,a4,LSR #16 + STR a4,[lr,#&114]! + B |L000cd0.J21.fix_huff_tbl| +|L000cc8.J19.fix_huff_tbl| + ADD a4,v1,a3,LSL #2 + STR a1,[a4,#&114]! +|L000cd0.J21.fix_huff_tbl| + ADD a3,a3,#1 + CMP a3,#&10 + BLE |L000c74.J18.fix_huff_tbl| + MVN a2,#&ff00000 + ADD a2,a2,#&10000000 + MOV v3,#0 + MOV v5,#&20 + STR a2,[v1,#&158] +|L000cf0.J23.fix_huff_tbl| + MOV a1,v3,LSL #24 + MOV a2,v1 + ADD v2,v2,#&104 + STMIA v2,{a1,v5} + SUB v2,v2,#&104 + MOV a1,v2 + BL huff_DECODE_buildshortcut + MOV v4,a1 + LDR a1,[v2,#&108] + CMP a1,#&18 + MVNLT a1,#0 + BLT |L000d3c.J39.fix_huff_tbl| + CMP v4,#0 + MOVLT a2,#4 + MOVLT a1,#&69 + BLLT exit_c + LDR a1,[v2,#&108] + SUB a1,v5,a1 + ORR a1,v4,a1,LSL #24 +|L000d3c.J39.fix_huff_tbl| + ADD a2,v1,v3,LSL #2 + ADD v3,v3,#1 + CMP v3,#&100 + STR a1,[a2,#&1a0]! + BLT |L000cf0.J23.fix_huff_tbl| + STR v6,[v2,#&108] + STR v6,[v2,#&104]! + LDMDB fp,{v1-v6,fp,sp,pc}^ + +get_bits + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + LDR a1,[a1,#&108] + CMP a2,a1 + BLE |L000df0.J5.get_bits| + MOV v3,#&ff +|L000d80.J4.get_bits| + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + MOVCS a1,v3 + BCS |L000da0.J7.get_bits| + LDRB a3,[a1],#1 + STR a1,[v1,#&34] + MOV a1,a3 +|L000da0.J7.get_bits| + LDR a3,[v1,#&104] + ORR a3,a1,a3,LSL #8 + STR a3,[v1,#&104] + LDR a3,[v1,#&108] + ADD a3,a3,#8 + TEQ a1,#&ff + STR a3,[v1,#&108] + BNE |L000de4.J10.get_bits| + LDR a1,[v1,#&34] + CMP a1,a2 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a2,v3 + TEQ a2,#0 + MOVNE a1,#&394 + ADDNE a1,a1,#&2400 + BLNE exit +|L000de4.J10.get_bits| + LDR a1,[v1,#&108] + CMP v2,a1 + BGT |L000d80.J4.get_bits| +|L000df0.J5.get_bits| + LDR a1,[v1,#&108] + SUB a1,a1,v2 + STR a1,[v1,#&108] + LDR a2,[v1,#&104]! + MOV a1,a2,ASR a1 + MOV a2,#1 + MOV a2,a2,LSL v2 + SUB a2,a2,#1 + AND a1,a1,a2 + LDMDB fp,{v1-v3,fp,sp,pc}^ + +huff_DECODE_buildshortcut + MOV ip,sp + STMDB sp!,{v1-v4,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + LDR a2,[a1,#&108] + TEQ a2,#0 + BEQ |L000e50.J5.huff_DECODE_buildshortcut| + SUB a2,a2,#1 + STR a2,[v1,#&108] + LDR a1,[v1,#&104] + MOV a1,a1,ASR a2 + AND a1,a1,#1 + B |L000e58.J4.huff_DECODE_buildshortcut| +|L000e50.J5.huff_DECODE_buildshortcut| + MOV a2,#1 + BL get_bits +|L000e58.J4.huff_DECODE_buildshortcut| + MOV v4,a1 + MOV v3,#1 + B |L000e9c.J8.huff_DECODE_buildshortcut| +|L000e64.J7.huff_DECODE_buildshortcut| + LDR a1,[v1,#&108] + TEQ a1,#0 + BEQ |L000e88.J10.huff_DECODE_buildshortcut| + SUB a1,a1,#1 + STR a1,[v1,#&108] + LDR a2,[v1,#&104] + MOV a1,a2,ASR a1 + AND a1,a1,#1 + B |L000e94.J9.huff_DECODE_buildshortcut| +|L000e88.J10.huff_DECODE_buildshortcut| + MOV a1,v1 + MOV a2,#1 + BL get_bits +|L000e94.J9.huff_DECODE_buildshortcut| + ADD v4,a1,v4,LSL #1 + ADD v3,v3,#1 +|L000e9c.J8.huff_DECODE_buildshortcut| + ADD a1,v2,v3,LSL #2 + LDR a1,[a1,#&114] + CMP a1,v4 + BGE |L000eb4.J12.huff_DECODE_buildshortcut| + CMP v3,#8 + BLE |L000e64.J7.huff_DECODE_buildshortcut| +|L000eb4.J12.huff_DECODE_buildshortcut| + CMP v3,#8 + MVNGT a1,#0 + LDMGTDB fp,{v1-v4,fp,sp,pc}^ + ADD a1,v2,v3,LSL #2 + LDR a1,[a1,#&15c] + ADD a1,a1,v4 + ADD a1,v2,a1 + LDRB a1,[a1,#&11] + LDMDB fp,{v1-v4,fp,sp,pc}^ + +huff_decoder_init + MOV a2,#0 + STR a2,[a1,#&108]! + MOVS pc,lr + +mono_convert_block + STMDB sp!,{v1,lr} + MOV ip,#0 +|L000eec.J4.mono_convert_block| + MOV a4,#0 +|L000ef0.J5.mono_convert_block| + ADD lr,ip,a4,LSL #3 + LDR lr,[a1,lr,LSL #2] + ADD lr,lr,#&40000 + MOV lr,lr,ASR #19 + ADDS lr,lr,#&80 + MOVMI lr,#0 + BMI |L000f14.J8.mono_convert_block| + CMP lr,#&ff + MOVGT lr,#&ff +|L000f14.J8.mono_convert_block| + ORR v1,lr,lr,LSL #8 + ORR lr,v1,lr,LSL #16 + STR lr,[a2,a4,LSL #2] + ADD a4,a4,#1 + CMP a4,#8 + BLT |L000ef0.J5.mono_convert_block| + ADD a2,a2,a3,LSL #2 + ADD ip,ip,#1 + CMP ip,#8 + BLT |L000eec.J4.mono_convert_block| + LDMIA sp!,{v1,pc}^ + +mono_convert_pixel + ADDS a1,a2,#&80 + MOVMI a1,#0 + BMI |L000f54.J6.mono_convert_pixel| + CMP a1,#&ff + MOVGT a1,#&ff +|L000f54.J6.mono_convert_pixel| + ORR a2,a1,a1,LSL #8 + ORR a1,a2,a1,LSL #16 + MOVS pc,lr + +colour_convert_block + MOV ip,sp + STMDB sp!,{a1-a3,v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + SUB sp,sp,#&14 + MOV v5,a1 + ADD a1,a1,#&100 + STR a1,[sp,#&10] + ADD a1,a1,#&100 + STR a1,[sp,#&c] + ADD a1,a1,#&100 + STR a1,[sp,#8] + ADD a1,a1,#&100 + STR a1,[sp,#4] + ADD a1,a1,#&100 + MOV a3,#0 + STR a1,[sp,#0] +|L000fa0.J4.colour_convert_block| + MOV a1,#0 + AND v3,a3,#7 + MOV v2,a3,ASR #1 +|L000fac.J5.colour_convert_block| + AND a4,a1,#7 + ADD ip,v3,a4,LSL #3 + CMP a3,#8 + BGE |L000fcc.J7.colour_convert_block| + CMP a1,#8 + LDRGE a4,[sp,#&10] + MOVLT a4,v5 + B |L000fd8.J6.colour_convert_block| +|L000fcc.J7.colour_convert_block| + CMP a1,#8 + LDRGE a4,[sp,#8] + LDRLT a4,[sp,#&c] +|L000fd8.J6.colour_convert_block| + LDR a4,[a4,ip,LSL #2] + MOV ip,a1,ASR #1 + ADD ip,v2,ip,LSL #3 + LDR lr,[sp,#4] + LDR lr,[lr,ip,LSL #2] + LDR v1,[sp,#0] + LDR ip,[v1,ip,LSL #2] + ADD a4,a4,#&40000 + MOV a4,a4,ASR #19 + ADD a4,a4,#&80 + ADD lr,lr,#&40000 + MOV lr,lr,ASR #19 + ADD ip,ip,#&40000 + MOV v1,ip,ASR #19 + ADD v4,v1,v1,LSL #5 + RSB v4,v4,v4,LSL #3 + ADD v4,v4,v1,LSL #7 + ADD ip,lr,lr,LSL #1 + ADD ip,ip,lr,LSL #3 + MOV ip,ip,LSL #3 + RSB v6,ip,#0 + ADD ip,v1,v1,LSL #1 + RSB ip,ip,v1,LSL #6 + ADD ip,ip,ip,LSL #1 + SUB v1,v6,ip + ADD ip,lr,lr,LSL #5 + RSB ip,ip,lr,LSL #8 + ADD ip,ip,lr,LSL #2 + MOV ip,ip,LSL #1 + ADD lr,v4,#&80 + ADDS lr,a4,lr,ASR #8 + MOVMI lr,#0 + BMI |L001064.J15.colour_convert_block| + CMP lr,#&ff + MOVGT lr,#&ff +|L001064.J15.colour_convert_block| + ADD v1,v1,#&80 + ADDS v1,a4,v1,ASR #8 + MOVMI v1,#0 + BMI |L00107c.J19.colour_convert_block| + CMP v1,#&ff + MOVGT v1,#&ff +|L00107c.J19.colour_convert_block| + ADD ip,ip,#&80 + ADDS a4,a4,ip,ASR #8 + MOVMI a4,#0 + BMI |L001094.J23.colour_convert_block| + CMP a4,#&ff + MOVGT a4,#&ff +|L001094.J23.colour_convert_block| + ORR ip,lr,v1,LSL #8 + ORR a4,ip,a4,LSL #16 + STR a4,[a2,a1,LSL #2] + ADD a1,a1,#1 + CMP a1,#&10 + BLT |L000fac.J5.colour_convert_block| + LDR a1,[fp,#-&28] + ADD a2,a2,a1,LSL #2 + ADD a3,a3,#1 + CMP a3,#&10 + BLT |L000fa0.J4.colour_convert_block| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +colour_convert_unusual_block + MOV ip,sp + STMDB sp!,{a1-a4} + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#&14 + SUB sp,sp,#&20 + LDR v3,[fp,#&14] + STR a1,[sp,#&14] + ADD a1,a1,#&100 + STR a1,[sp,#&10] + ADD a1,a1,#&100 + STR a1,[sp,#&c] + ADD a1,a1,#&100 + STR a1,[sp,#8] + ADD a1,a1,#&100 + STR a1,[sp,#4] + ADD a1,a1,#&100 + MOV a3,#0 + CMP a3,v3,LSL #3 + STR a1,[sp,#0] + BGE |L001254.J35.colour_convert_unusual_block| + SUB a1,a4,#1 + STR a1,[sp,#&1c] +|L00111c.J4.colour_convert_unusual_block| + MOV a1,#0 + CMP a1,a4,LSL #3 + BGE |L001240.J8.colour_convert_unusual_block| + AND v4,a3,#7 + SUB lr,v3,#1 + MOV ip,a3,ASR lr + STR ip,[sp,#&18] +|L001138.J7.colour_convert_unusual_block| + AND ip,a1,#7 + ADD lr,v4,ip,LSL #3 + CMP a3,#8 + BGE |L001158.J11.colour_convert_unusual_block| + CMP a1,#8 + LDRGE ip,[sp,#&10] + LDRLT ip,[sp,#&14] + B |L001164.J10.colour_convert_unusual_block| +|L001158.J11.colour_convert_unusual_block| + CMP a1,#8 + LDRGE ip,[sp,#8] + LDRLT ip,[sp,#&c] +|L001164.J10.colour_convert_unusual_block| + LDR lr,[ip,lr,LSL #2] + LDR v1,[sp,#&1c] + MOV v1,a1,ASR v1 + LDR ip,[sp,#&18] + ADD ip,ip,v1,LSL #3 + LDR v1,[sp,#4] + LDR v1,[v1,ip,LSL #2] + LDR v2,[sp,#0] + LDR ip,[v2,ip,LSL #2] + ADD lr,lr,#&40000 + MOV lr,lr,ASR #19 + ADD lr,lr,#&80 + ADD v1,v1,#&40000 + MOV v1,v1,ASR #19 + ADD ip,ip,#&40000 + MOV v2,ip,ASR #19 + ADD v5,v2,v2,LSL #5 + RSB v5,v5,v5,LSL #3 + ADD v5,v5,v2,LSL #7 + ADD ip,v1,v1,LSL #1 + ADD ip,ip,v1,LSL #3 + MOV ip,ip,LSL #3 + RSB v6,ip,#0 + ADD ip,v2,v2,LSL #1 + RSB ip,ip,v2,LSL #6 + ADD ip,ip,ip,LSL #1 + SUB v2,v6,ip + ADD ip,v1,v1,LSL #5 + RSB ip,ip,v1,LSL #8 + ADD ip,ip,v1,LSL #2 + MOV ip,ip,LSL #1 + ADD v1,v5,#&80 + ADDS v1,lr,v1,ASR #8 + MOVMI v1,#0 + BMI |L0011f8.J19.colour_convert_unusual_block| + CMP v1,#&ff + MOVGT v1,#&ff +|L0011f8.J19.colour_convert_unusual_block| + ADD v2,v2,#&80 + ADDS v2,lr,v2,ASR #8 + MOVMI v2,#0 + BMI |L001210.J23.colour_convert_unusual_block| + CMP v2,#&ff + MOVGT v2,#&ff +|L001210.J23.colour_convert_unusual_block| + ADD ip,ip,#&80 + ADDS ip,lr,ip,ASR #8 + MOVMI ip,#0 + BMI |L001228.J27.colour_convert_unusual_block| + CMP ip,#&ff + MOVGT ip,#&ff +|L001228.J27.colour_convert_unusual_block| + ORR lr,v1,v2,LSL #8 + ORR ip,lr,ip,LSL #16 + STR ip,[a2,a1,LSL #2] + ADD a1,a1,#1 + CMP a1,a4,LSL #3 + BLT |L001138.J7.colour_convert_unusual_block| +|L001240.J8.colour_convert_unusual_block| + LDR a1,[fp,#&c] + ADD a2,a2,a1,LSL #2 + ADD a3,a3,#1 + CMP a3,v3,LSL #3 + BLT |L00111c.J4.colour_convert_unusual_block| +|L001254.J35.colour_convert_unusual_block| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +colour_convert_pixels + STMDB sp!,{v1-v3,lr} + ADD a2,a2,#4 + MOV a2,a2,ASR #3 + ADD a3,a3,#4 + MOV a3,a3,ASR #3 + ADD a4,a3,a3,LSL #5 + RSB a4,a4,a4,LSL #3 + ADD a4,a4,a3,LSL #7 + ADD ip,a2,a2,LSL #1 + ADD ip,ip,a2,LSL #3 + MOV ip,ip,LSL #3 + RSB lr,ip,#0 + ADD ip,a3,a3,LSL #1 + RSB a3,ip,a3,LSL #6 + ADD a3,a3,a3,LSL #1 + SUB a3,lr,a3 + ADD ip,a2,a2,LSL #5 + RSB ip,ip,a2,LSL #8 + ADD a2,ip,a2,LSL #2 + MOV a2,a2,LSL #1 + ADD a4,a4,#&80 + MOV v2,a4,ASR #8 + ADD a3,a3,#&80 + MOV v1,a3,ASR #8 + ADD a2,a2,#&80 + MOV lr,a2,ASR #8 + MOV a4,#0 + MOV v3,#&80 +|L0012c8.J4.colour_convert_pixels| + LDR a2,[a1,a4,LSL #2] + ADD a2,a2,#4 + ADD ip,v3,a2,ASR #3 + ADDS a3,v2,ip + MOVMI a3,#0 + BMI |L0012e8.J7.colour_convert_pixels| + CMP a3,#&ff + MOVGT a3,#&ff +|L0012e8.J7.colour_convert_pixels| + ADDS a2,v1,ip + MOVMI a2,#0 + BMI |L0012fc.J11.colour_convert_pixels| + CMP a2,#&ff + MOVGT a2,#&ff +|L0012fc.J11.colour_convert_pixels| + ADDS ip,lr,ip + MOVMI ip,#0 + BMI |L001310.J15.colour_convert_pixels| + CMP ip,#&ff + MOVGT ip,#&ff +|L001310.J15.colour_convert_pixels| + ORR a2,a3,a2,LSL #8 + ORR a2,a2,ip,LSL #16 + STR a2,[a1,a4,LSL #2] + ADD a4,a4,#1 + CMP a4,#4 + BLT |L0012c8.J4.colour_convert_pixels| + LDMIA sp!,{v1-v3,pc}^ + + EXPORT assembler_panic +assembler_panic + MOVS pc,lr + +init_workspace + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV a3,a2 + MOV a2,#0 + LDR v2,[a1,#&20] + LDR v3,[a1,#&10] + BL memset + STR v2,[v1,#&20] + STR v3,[v1,#&10] + ADD a1,v1,#&1c + ADD a1,a1,#&800 + STR a1,[v1,#&50] + MOV a1,#0 +|L00136c.J4.init_workspace| + ADD a2,v1,a1,LSL #8 + ADD a2,a2,#&fc + ADD a2,a2,#&800 + ADD a3,v1,a1,LSL #2 + ADD a1,a1,#1 + CMP a1,#4 + STR a2,[a3,#&54]! + BLT |L00136c.J4.init_workspace| + MOV a1,#0 +|L001390.J6.init_workspace| + RSB a2,a1,a1,LSL #4 + ADD a2,a2,a2,LSL #1 + ADD a3,v1,a2,LSL #5 + SUB a4,a3,#&304 + ADD a4,a4,#&1000 + ADD a2,v1,a1,LSL #2 + ADD a3,a3,#&37c + ADD a3,a3,#&2000 + ADD a1,a1,#1 + CMP a1,#4 + STR a4,[a2,#&64]! + STR a3,[a2,#&10] + BLT |L001390.J6.init_workspace| + LDMDB fp,{v1-v3,fp,sp,pc}^ + +save_huff_stream + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + LDR a1,[a1,#&108] + CMP a1,#&20 + MOVGE a2,#2 + MOVGE a1,#&d8 + BLGE exit_c + LDR a1,[v1,#&108] + CMP a1,#0 + MOVLT a2,#2 + MOVLT a1,#&d9 + BLLT exit_c + LDR a1,[v1,#&34] + LDR a2,[v1,#&30] + CMP a2,a1 + MOVCS a2,#2 + MOVCS a1,#&da + BLCS exit_c + LDR a1,[v1,#&38] + LDR a2,[v1,#&34] + CMP a2,a1 + MOVCS a2,#2 + MOVCS a1,#&db + BLCS exit_c + ADD a2,v1,#&30 + LDMIA a2,{a1,a2} + SUB a1,a2,a1 + LDR a2,[v1,#&108] + ADD a1,a2,a1,LSL #5 + STR a1,[v2,#0] + LDR a1,[v1,#&104] + STR a1,[v2,#4] + LDR a1,[v1,#&e4] + STRB a1,[v2,#8] + MOV a1,a1,ASR #8 + STRB a1,[v2,#9] + LDR a1,[v1,#&e8] + STRB a1,[v2,#&a] + MOV a1,a1,ASR #8 + STRB a1,[v2,#&b] + LDR a1,[v1,#&ec] + STRB a1,[v2,#&c] + MOV a1,a1,ASR #8 + STRB a1,[v2,#&d] + LDR a1,[v1,#&c0] + STRB a1,[v2,#&10] + MOV a1,a1,ASR #8 + STRB a1,[v2,#&11] + LDR a1,[v1,#&c4]! + STRB a1,[v2,#&12] + MOV a1,a1,ASR #8 + STRB a1,[v2,#&13] + LDMDB fp,{v1,v2,fp,sp,pc}^ + +restore_huff_stream + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + LDR a1,[a2,#4] + STR a1,[v1,#&104] + LDR a1,[a2,#0] + CMP a1,#0 + ADDLT a1,a1,#&1f + LDR a3,[v1,#&30] + ADD a1,a3,a1,ASR #5 + STR a1,[v1,#&34] + LDR a1,[a2,#0] + AND a1,a1,#&1f + STR a1,[v1,#&108] + LDR a1,[a2,#8] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR a1,[v1,#&e4] + LDR a1,[a2,#&a] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR a1,[v1,#&e8] + LDR a1,[a2,#&c] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR a1,[v1,#&ec] + LDR a1,[a2,#&10] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR a1,[v1,#&c0] + LDR a1,[a2,#&12] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR a1,[v1,#&c4] + ADD a2,v1,#&30 + LDMIA a2,{a1,a2} + CMP a1,a2 + MOVCS a2,#4 + MOVCS a1,#&fa + BLCS exit_c + ADD v1,v1,#&30 + LDMIB v1!,{a1,a2} + CMP a1,a2 + MOVCS a2,#4 + MOVCS a1,#&fb + LDMCSDB fp,{v1,fp,sp,lr} + BCS exit_c + LDMDB fp,{v1,fp,sp,pc}^ + +process_restart + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + LDR a1,[a1,#&34] + LDRB v2,[a1],#1 + STR a1,[v1,#&34] + LDR a1,[v1,#&108] + CMP a1,#7 + MOVGT a2,#2 + MOVGT a1,#&12 + ADDGT a1,a1,#&100 + BLGT exit_c + TEQ v2,#&ff + MOVNE a2,#2 + MOVNE a1,#&13 + ADDNE a1,a1,#&100 + BLNE exit_c + LDR a1,[v1,#&34] + LDRB a1,[a1,#0] + TEQ a1,#&ff + BNE |L0015dc.J9.process_restart| +|L0015c4.J8.process_restart| + LDR a1,[v1,#&34] + ADD a1,a1,#1 + STR a1,[v1,#&34] + LDRB a1,[a1,#0] + TEQ a1,#&ff + BEQ |L0015c4.J8.process_restart| +|L0015dc.J9.process_restart| + LDR a1,[v1,#&34] + LDRB v2,[a1],#1 + STR a1,[v1,#&34] + AND a1,v2,#&f8 + TEQ a1,#&d0 + MOVNE a2,#2 + MOVNE a1,#&16 + ADDNE a1,a1,#&100 + BLNE exit_c + AND a2,v2,#7 + LDR a1,[v1,#&c4] + TEQ a2,a1 + MOVNE a2,#2 + MOVNE a1,#&17 + ADDNE a1,a1,#&100 + BLNE exit_c + MOV a2,#0 + STR a2,[v1,#&108] + STR a2,[v1,#&104] + LDR a1,[v1,#&bc] + STR a1,[v1,#&c0] + LDR a1,[v1,#&c4] + ADD a1,a1,#1 + AND a1,a1,#7 + STR a1,[v1,#&c4] + MOV a1,#0 + LDR a3,[v1,#&c8] + CMP a3,#0 + LDMLEDB fp,{v1,v2,fp,sp,pc}^ +|L001650.J16.process_restart| + ADD a3,v1,a1,LSL #2 + ADD a1,a1,#1 + STR a2,[a3,#&e4]! + LDR a3,[v1,#&c8] + CMP a1,a3 + BLT |L001650.J16.process_restart| + LDMDB fp,{v1,v2,fp,sp,pc}^ + + IMPORT asm_huff_skip_blocks +do_huff_skip_blocks + MOV ip,sp + STMDB sp!,{a1-a4} + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#&14 + MOV v1,a1 + MOV v2,a2 + MOV v3,a3 + LDR v4,[fp,#&1c] + LDR v5,[fp,#&18] + LDR v6,[fp,#&14] + LDR a2,[a1,#&bc] + TEQ a2,#0 + BEQ |L001710.J4.do_huff_skip_blocks| + CMP v4,#0 + LDMLEDB fp,{v1-v6,fp,sp,pc}^ + B |L0016b4.J10.do_huff_skip_blocks| +|L0016ac.J6.do_huff_skip_blocks| + TEQ a1,#0 + BEQ |L0016d0.J9.do_huff_skip_blocks| +|L0016b4.J10.do_huff_skip_blocks| + LDR a1,[v1,#&c0] + TEQ a1,#0 + MOVEQ a1,v1 + BLEQ process_restart + LDR a1,[v1,#&c0] + SUB a1,a1,#1 + STR a1,[v1,#&c0] +|L0016d0.J9.do_huff_skip_blocks| + MOV a4,#1 + MOV a3,v5 + MOV a2,v6 + STMDB sp!,{a2-a4} + MOV a3,v3 + MOV a2,v2 + MOV a1,v1 + LDR a4,[fp,#&10] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + SUB v4,v4,#1 + ADD v2,v2,#&100 + CMP v4,#0 + LDR a1,[fp,#&20] + BGT |L0016ac.J6.do_huff_skip_blocks| + LDMDB fp,{v1-v6,fp,sp,pc}^ +|L001710.J4.do_huff_skip_blocks| + MOV a4,v4 + MOV a3,v5 + MOV a2,v6 + STMDB sp!,{a2-a4} + MOV a3,v3 + MOV a2,v2 + LDR a4,[fp,#&10] + BL asm_huff_skip_blocks + LDMDB fp,{v1-v6,fp,sp,pc}^ + + IMPORT asm_huff_decode_blocks +do_huff_decode_blocks + MOV ip,sp + STMDB sp!,{a1-a4} + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#&14 + MOV v1,a1 + MOV v2,a2 + MOV v3,a3 + LDR v4,[fp,#&1c] + LDR v5,[fp,#&18] + LDR v6,[fp,#&14] + LDR a2,[a1,#&bc] + TEQ a2,#0 + BEQ |L0017d8.J4.do_huff_decode_blocks| + CMP v4,#0 + LDMLEDB fp,{v1-v6,fp,sp,pc}^ + B |L00177c.J10.do_huff_decode_blocks| +|L001774.J6.do_huff_decode_blocks| + TEQ a1,#0 + BEQ |L001798.J9.do_huff_decode_blocks| +|L00177c.J10.do_huff_decode_blocks| + LDR a1,[v1,#&c0] + TEQ a1,#0 + MOVEQ a1,v1 + BLEQ process_restart + LDR a1,[v1,#&c0] + SUB a1,a1,#1 + STR a1,[v1,#&c0] +|L001798.J9.do_huff_decode_blocks| + MOV a4,#1 + MOV a3,v5 + MOV a2,v6 + STMDB sp!,{a2-a4} + MOV a3,v3 + MOV a2,v2 + MOV a1,v1 + LDR a4,[fp,#&10] + BL asm_huff_decode_blocks + ADD sp,sp,#&c + SUB v4,v4,#1 + ADD v2,v2,#&100 + CMP v4,#0 + LDR a1,[fp,#&20] + BGT |L001774.J6.do_huff_decode_blocks| + LDMDB fp,{v1-v6,fp,sp,pc}^ +|L0017d8.J4.do_huff_decode_blocks| + MOV a4,v4 + MOV a3,v5 + MOV a2,v6 + STMDB sp!,{a2-a4} + MOV a3,v3 + MOV a2,v2 + LDR a4,[fp,#&10] + BL asm_huff_decode_blocks + LDMDB fp,{v1-v6,fp,sp,pc}^ + + ;MPORT jpeg_scan_file +do_jpeg_scan_file + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV lr,a3 + MOV ip,a4 + MOV v1,a1 + STR a2,[a1,#&10] + MVN a1,#0 + MOV a4,#0 + MVN a3,#0 + MVN a2,#0 + STR a1,[v1,#0] + MVN a1,#&80000000 + STMDB sp!,{a1-a4} + MOV a3,ip + MOV a2,lr + MOV a1,v1 + BL jpeg_scan_file + LDMDB fp,{v1,fp,sp,pc}^ + +do_jpeg_scan_file_16 + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV lr,a3 + MOV ip,a4 + MOV v1,a1 + STR a2,[a1,#&10] + MVN a1,#0 + MOV a4,#&10 + MVN a3,#0 + MVN a2,#0 + STR a1,[v1,#0] + MVN a1,#&80000000 + STMDB sp!,{a1-a4} + MOV a3,ip + MOV a2,lr + MOV a1,v1 + MOV a4,#0 + BL jpeg_scan_file + LDMDB fp,{v1,fp,sp,pc}^ + + IMPORT |__rt_sdiv| +jpeg_scan_file + MOV ip,sp + STMDB sp!,{a1-a4} + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#&14 + MOV v1,a1 + MOV v5,a2 + MOV v4,a3 + MOV v3,a4 + SUB sp,sp,#&20 + LDR v2,[fp,#&20] + TST v2,#2 + LDR v6,[fp,#&14] + BICNE v2,v2,#&38 + CMP v3,#0 + MOVLT v3,#0 + TST v2,#&28 + BEQ |L0018ec.J8.jpeg_scan_file| + SUBS v3,v3,#&10 + MOVMI v3,#0 + BIC v3,v3,#&f + ADD v6,v6,#&10 +|L0018ec.J8.jpeg_scan_file| + LDR a2,[v1,#0] + CMP a2,#0 + BNE |L0019fc.J12.jpeg_scan_file| + LDR a2,[v1,#&30] + TEQ a2,v5 + BNE |L001a04.J42.jpeg_scan_file| + LDR a3,[v1,#&38] + SUB a2,a3,a2 + TEQ a2,v4 + BNE |L001a04.J42.jpeg_scan_file| + LDR a2,[fp,#&18] + CMN a2,#1 + LDRNE a2,[v1,#&14] + LDRNE a3,[fp,#&18] + TEQNE a2,a3 + BNE |L001a04.J42.jpeg_scan_file| + LDR a2,[fp,#&1c] + CMN a2,#1 + LDRNE a2,[v1,#&18] + LDRNE a3,[fp,#&1c] + TEQNE a2,a3 + BNE |L001a04.J42.jpeg_scan_file| + MOVS a2,v4 + ADDMI a2,a2,#7 + MOV a2,a2,ASR #3 + LDR a2,[v5,a2,LSL #2] + LDR a3,[v1,#&10c] + TEQ a2,a3 + BNE |L001a04.J42.jpeg_scan_file| + MOV a3,v4 + CMP v4,#0 + ADDLT a3,a3,#3 + MOV a3,a3,ASR #2 + MOV a2,v4 + ADDLT a2,a2,#&f + SUB a2,a3,a2,ASR #4 + LDR a3,[v5,a2,LSL #2] + LDR a2,[v1,#&110] + TEQ a3,a2 + BNE |L001a04.J42.jpeg_scan_file| + MOV a2,v4 + CMP v4,#0 + ADDLT a2,a2,#3 + MOV a2,a2,ASR #2 + MOV a3,v4 + ADDLT a3,a3,#&1f + SUB a2,a2,a3,ASR #5 + LDR a3,[v5,a2,LSL #2] + LDR a2,[v1,#&114] + TEQ a3,a2 + LDREQ a2,[v1,#&100] + TEQEQ a2,v2 + BNE |L001a04.J42.jpeg_scan_file| + LDR a1,[v1,#&14] + CMP v6,a1 + MOVGT v6,a1 + LDR a1,[v1,#&f8] + CMP v3,a1 + BLT |L0019e4.J39.jpeg_scan_file| + LDR a1,[v1,#&fc] + CMP v6,a1 + BLE |L0019ec.J38.jpeg_scan_file| +|L0019e4.J39.jpeg_scan_file| + MVN a1,#0 + STR a1,[v1,#&f4] +|L0019ec.J38.jpeg_scan_file| + MOV a1,#0 + ADD v1,v1,#&f4 + STMIB v1!,{v3,v6} + B |L002040.J135.jpeg_scan_file| +|L0019fc.J12.jpeg_scan_file| + MOVLT a2,#0 + STRLT a2,[v1,#&20] +|L001a04.J42.jpeg_scan_file| + LDR a2,[v1,#&10] + BL init_workspace + LDR a1,[v1,#&10] + TEQ a1,#0 + STREQ a1,[v1,#&28] + LDREQ a1,[pc, #L001b48-.-8] + BEQ |L001a3c.J134.jpeg_scan_file| + ADD a2,v1,#&1fc + ADD a2,a2,#&3800 + ADD a1,a1,#&204 + SUB a1,a1,#&3c00 + MOV a1,a1,LSR #2 + BIC a1,a1,#&f + STR a2,[v1,#&28] +|L001a3c.J134.jpeg_scan_file| + STR a1,[v1,#&2c] + MOV a1,v4 + CMP v4,#0 + ADDLT a1,a1,#7 + MOV a1,a1,ASR #3 + LDR a1,[v5,a1,LSL #2] + MOV a2,v4 + STR a1,[v1,#&10c] + ADDLT a2,a2,#3 + MOV a2,a2,ASR #2 + MOV a1,v4 + ADDLT a1,a1,#&f + SUB a1,a2,a1,ASR #4 + LDR a1,[v5,a1,LSL #2] + MOV a2,v4 + STR a1,[v1,#&110] + ADDLT a2,a2,#3 + MOV a2,a2,ASR #2 + MOV a1,v4 + ADDLT a1,a1,#&1f + SUB a1,a2,a1,ASR #5 + LDR a1,[v5,a1,LSL #2] + STR a1,[v1,#&114] + STR v5,[v1,#&30] + STR v5,[v1,#&34] + ADD a1,v5,v4 + STR a1,[v1,#&38] + MOV a1,v1 + BL read_file_header + MOV a1,v1 + BL read_scan_header + MOV v4,#0 +|L001abc.J57.jpeg_scan_file| + ADD v5,v1,v4,LSL #2 + MOV a1,v1 + LDR a2,[v5,#&64] + BL fix_huff_tbl + MOV a1,v1 + LDR a2,[v5,#&74]! + BL fix_huff_tbl + ADD v4,v4,#1 + CMP v4,#4 + BLT |L001abc.J57.jpeg_scan_file| + MOV a1,v1 + BL huff_decoder_init + MVN a1,#0 + STR a1,[v1,#&f4] + LDR a1,[v1,#&bc] + STR a1,[v1,#&c0] + MOV a1,#0 + STR a1,[v1,#&c4] + LDR v4,[v1,#&14] + CMP v6,v4 + MOVGT v6,v4 + CMP v3,v6 + MOVGT v3,v6 + STR v2,[v1,#&100] + ADD v1,v1,#&f8 + STMIA v1,{v3,v6} + SUB v1,v1,#&f8 + LDR a1,[v1,#&3c] + TEQ a1,#8 + BEQ |L001b4c.J63.jpeg_scan_file| + MOV a2,#1 + STR a1,[v1,#4] + STR a2,[v1,#0] + MOV a1,#1 + B |L002040.J135.jpeg_scan_file| +L001b48 + DCD &05f5e100 +|L001b4c.J63.jpeg_scan_file| + LDR a1,[v1,#&c8] + LDR v3,[v1,#&4c] + TEQ v3,a1 + MOVNE a1,#3 + STRNE a1,[v1,#0] + BNE |L002040.J135.jpeg_scan_file| + LDR a1,[fp,#&18] + TEQ v4,a1 + LDRNE a1,[fp,#&18] + CMNNE a1,#1 + BEQ |L001b84.J67.jpeg_scan_file| + MOV a1,#7 + STMIA v1,{a1,v4} + B |L002040.J135.jpeg_scan_file| +|L001b84.J67.jpeg_scan_file| + LDR a2,[v1,#&18] + STR a2,[sp,#&1c] + LDR a1,[fp,#&1c] + TEQ a2,a1 + LDRNE a1,[fp,#&1c] + CMNNE a1,#1 + BEQ |L001bb8.J70.jpeg_scan_file| + MOV a1,#6 + STR a1,[v1,#0] + LDR a1,[sp,#&1c] + STR a1,[v1,#4]! + MOV a1,#6 + B |L002040.J135.jpeg_scan_file| +|L001bb8.J70.jpeg_scan_file| + LDR v6,[v1,#&50] + LDR a1,[v6,#&c] + MOV v5,a1,LSL #3 + LDR a1,[sp,#&1c] + ADD a1,a1,v5 + SUB a2,a1,#1 + MOV a1,v5 + BL |__rt_sdiv| + ADD a1,a1,a1,LSL #2 + MOV a1,a1,LSL #2 + LDR a2,[v1,#&28] + MOV a1,a1,LSR #2 + STR a2,[v1,#&818] + ADD a2,a2,a1,LSL #2 + STR a2,[v1,#&28] + LDR a2,[v1,#&2c] + SUB a2,a2,a1 + MOV a1,v5 + STR a2,[v1,#&2c] + BL |__rt_sdiv| + MOV a2,a1 + CMP a1,v4 + BGE |L001c2c.J73.jpeg_scan_file| + MOV a1,#&a + STMIA v1,{a1,v4} + MOV a1,a2 + STR a1,[v1,#8]! + MOV a1,#&a + B |L002040.J135.jpeg_scan_file| +|L001c2c.J73.jpeg_scan_file| + MOV a2,#8 + MOV a1,#5 + ADD v5,v1,#&e4 + TEQ v3,#1 + BNE |L001d3c.J75.jpeg_scan_file| + LDR a3,[v1,#&1c] + TEQ a3,#1 + MOVNE a1,#8 + STMNEIA v1,{a2,a3} + BNE |L002040.J135.jpeg_scan_file| + LDR a2,[v6,#8] + TEQ a2,#1 + LDREQ a2,[v6,#&c] + TEQEQ a2,#1 + BEQ |L001c84.J79.jpeg_scan_file| + STR a1,[v1,#0] + LDR a1,[v6,#8] + STR a1,[v1,#4] + LDR a1,[v6,#&c]! + STR a1,[v1,#8]! + MOV a1,#5 + B |L002040.J135.jpeg_scan_file| +|L001c84.J79.jpeg_scan_file| + SUB sp,sp,#8 + MOV v4,#0 + LDR a1,[v1,#&cc] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR v6,[a2,#&64]! + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#4] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + MOV v3,#0 + STR a1,[sp,#0] + LDR a1,[sp,#&24] + CMP a1,#0 + BLE |L001d30.J84.jpeg_scan_file| + ADD a1,v1,#&118 + STR a1,[sp,#&20] +|L001cd4.J83.jpeg_scan_file| + ADD a1,v3,v3,LSL #2 + LDR a2,[v1,#&818] + ADD a2,a2,a1,LSL #2 + MOV a1,v1 + BL save_huff_stream + ADD v3,v3,#1 + MOV a4,#1 + LDR a1,[v1,#&14] + ADD a1,a1,#7 + MOV a3,a1,ASR #3 + MOV a2,v5 + LDR a1,[sp,#0] + STMDB sp!,{a1-a4} + MOV a3,v6 + MOV a1,v1 + LDR a2,[sp,#&30] + LDR a4,[sp,#&14] + BL do_huff_skip_blocks + ADD sp,sp,#&10 + ADD v4,v4,#8 + LDR a1,[v1,#&18] + CMP v4,a1 + BLT |L001cd4.J83.jpeg_scan_file| +|L001d30.J84.jpeg_scan_file| + ADD sp,sp,#8 + BIC v2,v2,#&30 + B |L001fc0.J87.jpeg_scan_file| +|L001d3c.J75.jpeg_scan_file| + TEQ v3,#3 + BNE |L002038.J88.jpeg_scan_file| + LDR a3,[v6,#&c] + STR a3,[sp,#-4]! + LDR a4,[v6,#8] + MOV v3,a4 + CMP a4,#2 + CMPLE a3,#2 + BLE |L001d74.J90.jpeg_scan_file| + STR a1,[v1,#0] + LDR a1,[v6,#8] + STR a1,[v1,#4] + LDR a1,[v6,#&c]! + B |L001dc0.J137.jpeg_scan_file| +|L001d74.J90.jpeg_scan_file| + LDR a3,[v6,#&40] + TEQ a3,#1 + LDREQ a3,[v6,#&44] + TEQEQ a3,#1 + BEQ |L001d9c.J94.jpeg_scan_file| + STR a1,[v1,#0] + LDR a1,[v6,#&40] + STR a1,[v1,#4] + LDR a1,[v6,#&44]! + B |L001dc0.J137.jpeg_scan_file| +|L001d9c.J94.jpeg_scan_file| + LDR a3,[v6,#&78] + TEQ a3,#1 + LDREQ a3,[v6,#&7c] + TEQEQ a3,#1 + BEQ |L001dcc.J98.jpeg_scan_file| + STR a1,[v1,#0] + LDR a1,[v6,#&78] + STR a1,[v1,#4] + LDR a1,[v6,#&7c]! +|L001dc0.J137.jpeg_scan_file| + STR a1,[v1,#8]! + MOV a1,#5 + B |L001de4.J138.jpeg_scan_file| +|L001dcc.J98.jpeg_scan_file| + LDR a1,[v1,#&1c] + TEQ a1,#3 + BEQ |L001de8.J102.jpeg_scan_file| + STR a1,[v1,#4] + STR a2,[v1,#0] + MOV a1,#8 +|L001de4.J138.jpeg_scan_file| + LDMDB fp,{v1-v6,fp,sp,pc}^ +|L001de8.J102.jpeg_scan_file| + TEQ v3,#2 + LDREQ a1,[sp,#0] + TEQEQ a1,#2 + BICNE v2,v2,#&30 + SUB sp,sp,#&28 + MOV a1,#0 + MOV v4,#0 + STR a1,[sp,#&24] + LDR a1,[v1,#&cc] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#&20] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#&1c] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#&18] + LDR a1,[v1,#&d0] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#&14] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#&10] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#&c] + LDR a1,[v1,#&d4] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#8] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#4] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#0] + LDR a1,[sp,#&48] + CMP a1,#0 + BLE |L001fbc.J109.jpeg_scan_file| + LDR a2,[sp,#&28] + MUL a1,a2,v3 + ADD a2,v1,#&218 + STR a2,[sp,#&3c] + ADD a2,v1,#&e8 + STR a2,[sp,#&38] + ADD a2,v1,#&218 + ADD a2,a2,#&400 + STR a2,[sp,#&34] + ADD a2,v1,#&ec + STR a1,[sp,#&40] + ADD a1,v1,#&318 + ADD a1,a1,#&400 + STR a1,[sp,#&2c] + STR a2,[sp,#&30] +|L001eec.J108.jpeg_scan_file| + ADD a1,v4,v4,LSL #2 + LDR a2,[v1,#&818] + ADD a2,a2,a1,LSL #2 + MOV a1,v1 + BL save_huff_stream + ADD v4,v4,#1 + MOV v6,#0 + LDR a1,[v1,#&14] + CMP a1,#0 + BLE |L001fa0.J112.jpeg_scan_file| +|L001f14.J111.jpeg_scan_file| + MOV a4,#0 + MOV a2,v5 + LDR a1,[sp,#&18] + LDR a3,[sp,#&40] + STMDB sp!,{a1-a4} + MOV a1,v1 + LDR a2,[sp,#&4c] + LDR a3,[sp,#&30] + LDR a4,[sp,#&2c] + BL do_huff_skip_blocks + ADD sp,sp,#&10 + MOV a4,#1 + LDR a2,[sp,#&c] + LDR a3,[sp,#&38] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&40] + LDR a3,[sp,#&20] + LDR a4,[sp,#&1c] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + MOV a4,#1 + LDR a2,[sp,#0] + LDR a3,[sp,#&30] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&38] + LDR a3,[sp,#&14] + LDR a4,[sp,#&10] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + ADD v6,v6,v3,LSL #3 + LDR a1,[v1,#&14] + CMP v6,a1 + BLT |L001f14.J111.jpeg_scan_file| +|L001fa0.J112.jpeg_scan_file| + ADD a2,sp,#&24 + LDMIA a2,{a1,a2} + ADD a2,a1,a2,LSL #3 + STR a2,[sp,#&24] + LDR a1,[v1,#&18] + CMP a2,a1 + BLT |L001eec.J108.jpeg_scan_file| +|L001fbc.J109.jpeg_scan_file| + ADD sp,sp,#&2c +|L001fc0.J87.jpeg_scan_file| + TST v2,#4 + BEQ |L001ffc.J117.jpeg_scan_file| + LDR a1,[v1,#&50] + LDR a1,[a1,#8] + MOV a1,a1,LSL #3 + LDR a2,[v1,#&2c] + BL |__rt_sdiv| + LDR a2,[v1,#&14] + CMP a1,a2,LSL #1 + LDRLT a1,[v1,#&100] + BICLT a1,a1,#4 + STRLT a1,[v1,#&100] + LDRGE a1,[v1,#4] + ORRGE a1,a1,#4 + STRGE a1,[v1,#4] +|L001ffc.J117.jpeg_scan_file| + TST v2,#8 + LDRNE a1,[v1,#4] + ORRNE a1,a1,#8 + STRNE a1,[v1,#4] + TST v2,#&10 + LDRNE a1,[v1,#4] + ORRNE a1,a1,#&10 + STRNE a1,[v1,#4] + TST v2,#&20 + LDRNE a1,[v1,#4] + ORRNE a1,a1,#&20 + STRNE a1,[v1,#4] + STR v2,[v1,#&100] + LDR a1,[v1,#0] + B |L002040.J135.jpeg_scan_file| +|L002038.J88.jpeg_scan_file| + MOV a1,#9 + STMIA v1,{a1,v3} +|L002040.J135.jpeg_scan_file| + LDMDB fp,{v1-v6,fp,sp,pc}^ + + IMPORT asm_j_rev_dct + IMPORT asm_mono_convert_block + IMPORT asm_colour_convert_block_16 + IMPORT asm_colour_convert_block + IMPORT asm_colour_convert_block_8 + IMPORT asm_get_table32k + IMPORT asm_diffuse_to_8bpp +jpeg_find_line + MOV ip,sp + STMDB sp!,{a1-a3,v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + LDR a1,[a1,#&50] + LDR a1,[a1,#&c] + ADD a1,a1,#2 + STR a1,[sp,#-&34]! + LDR a1,[v1,#&2c] + LDR a2,[sp,#0] + MOV v4,a1,ASR a2 + LDR a1,[v1,#&18] + LDR a2,[fp,#-&2c] + SUB a1,a1,a2 + SUBS a1,a1,#1 + STR a1,[fp,#-&2c] + MOVMI a2,#4 + MOVMI a1,#&8e + ADDMI a1,a1,#&200 + BLMI exit_c + LDR a2,[fp,#-&2c] + LDR a1,[v1,#&18] + CMP a2,a1 + MOVGE a2,#4 + MOVGE a1,#&8f + ADDGE a1,a1,#&200 + BLGE exit_c + LDR a2,[fp,#-&2c] + LDR a1,[sp,#0] + MOV a2,a2,ASR a1 + STR a2,[sp,#4] + LDR a1,[v1,#&f4] + TEQ a2,a1 + BEQ |L002900.J8.jpeg_find_line| + SUB sp,sp,#4 + LDR a1,[v1,#&28] + TEQ a1,#0 + MOVEQ a2,#4 + MOVEQ a1,#&a2 + ADDEQ a1,a1,#&200 + BLEQ exit_c + MVN a1,#0 + STR a1,[v1,#&f4] + LDR a1,[sp,#8] + ADD a2,a1,a1,LSL #2 + LDR a1,[v1,#&818] + ADD a2,a1,a2,LSL #2 + MOV a1,v1 + BL restore_huff_stream + LDR a1,[v1,#&4c] + ADD a3,v1,#&e4 + ADD v6,v1,#&118 + ADD a2,v1,#&218 + TEQ a1,#1 + STR a2,[sp,#&30] + STR a3,[sp,#&34] + BNE |L0022bc.J12.jpeg_find_line| + SUB sp,sp,#8 + MOV v3,#0 + LDR a1,[v1,#&cc] + LDR v2,[v1,#&28] + LDR a2,[a1,#&10] + ADD a2,v1,a2,LSL #2 + LDR v5,[a2,#&54]! + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#4] + LDR a1,[a1,#&18] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&74] + STR a1,[sp,#0] + LDR a1,[v1,#&f8] + CMP a1,#8 + BLT |L0021b4.J14.jpeg_find_line| + SUB a1,a1,#8 + MOV a1,a1,ASR #3 + MOV a4,#1 + STR a1,[sp,#-4]! + MOV a3,a1 + MOV a1,v5 + LDR a2,[sp,#&40] + STMDB sp!,{a1-a4} + MOV a2,v6 + MOV a1,v1 + LDR a3,[sp,#&18] + LDR a4,[sp,#&14] + BL do_huff_skip_blocks + LDR a1,[sp,#&10]! + ADD v3,v3,a1,LSL #3 + ADD v2,v2,a1,LSL #5 + ADD sp,sp,#4 +|L0021b4.J14.jpeg_find_line| + LDR a1,[v1,#&100] + TST a1,#2 + LDR a1,[v1,#&fc] + BEQ |L002248.J16.jpeg_find_line| + CMP v3,a1 + BGE |L002240.J19.jpeg_find_line| +|L0021cc.J18.jpeg_find_line| + MOV a4,#1 + MOV a3,#1 + MOV a1,v5 + LDR a2,[sp,#&3c] + STMDB sp!,{a1-a4} + MOV a1,v1 + LDR a2,[sp,#&48] + LDR a3,[sp,#&14] + LDR a4,[sp,#&10] + BL do_huff_skip_blocks + ADD sp,sp,#&10 + LDR a2,[v1,#&e4] + LDR a1,[v5,#0] + MUL a2,a1,a2 + MOV a1,v1 + BL mono_convert_pixel + STR a1,[v2,#0] + STR a1,[v2,#4] + STR a1,[v2,#8] + STR a1,[v2,#&c] + STR a1,[v2,#&10] + STR a1,[v2,#&14] + STR a1,[v2,#&18] + ADD v3,v3,#8 + STR a1,[v2,#&1c]! + ADD v2,v2,#4 + LDR a1,[v1,#&fc] + CMP v3,a1 + BLT |L0021cc.J18.jpeg_find_line| +|L002240.J19.jpeg_find_line| + MOV a1,#1 + B |L0022b4.J127.jpeg_find_line| +|L002248.J16.jpeg_find_line| + CMP v3,a1 + BGE |L0022b0.J24.jpeg_find_line| +|L002250.J23.jpeg_find_line| + MOV a4,#1 + MOV a3,#1 + MOV a1,v5 + LDR a2,[sp,#&3c] + STMDB sp!,{a1-a4} + MOV a1,v1 + LDR a2,[sp,#&48] + LDR a3,[sp,#&14] + LDR a4,[sp,#&10] + BL do_huff_decode_blocks + ADD sp,sp,#&10 + MOV a1,v1 + MOV a3,#1 + LDR a2,[sp,#&38] + BL asm_j_rev_dct + MOV a1,v6 + MOV a3,v4 + MOV a2,v2 + BL asm_mono_convert_block + ADD v3,v3,#8 + ADD v2,v2,#&20 + LDR a1,[v1,#&fc] + CMP v3,a1 + BLT |L002250.J23.jpeg_find_line| +|L0022b0.J24.jpeg_find_line| + MOV a1,#8 +|L0022b4.J127.jpeg_find_line| + STR a1,[sp,#8]! + B |L002828.J27.jpeg_find_line| +|L0022bc.J12.jpeg_find_line| + SUB sp,sp,#&28 + MOV v5,#0 + LDR a1,[v1,#&cc] + LDR v2,[v1,#&28] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#&24] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#&20] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#&1c] + LDR a1,[v1,#&d0] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#&18] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#&14] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#&10] + LDR a1,[v1,#&d4] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#&c] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#8] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#4] + LDR a1,[v1,#&50] + LDR a2,[a1,#&c] + STR a2,[sp,#0] + LDR v3,[a1,#8]! + ADD a1,v5,v3,LSL #3 + LDR a2,[v1,#&f8] + ADD a4,v1,#&e8 + ADD a3,v1,#&ec + CMP a1,a2 + STR a3,[sp,#&50] + STR a4,[sp,#&54] + BGT |L00244c.J29.jpeg_find_line| + LDR a2,[sp,#0] + MUL a1,a2,v3 + STR a1,[sp,#&4c] +|L0023a0.J28.jpeg_find_line| + MOV a4,#0 + LDR a1,[sp,#&1c] + LDR a2,[sp,#&5c] + LDR a3,[sp,#&4c] + STMDB sp!,{a1-a4} + MOV a2,v6 + MOV a1,v1 + LDR a3,[sp,#&34] + LDR a4,[sp,#&30] + BL do_huff_skip_blocks + ADD sp,sp,#&10 + MOV a4,#1 + LDR a2,[sp,#&10] + LDR a3,[sp,#&54] + STMDB sp!,{a2-a4} + MOV a2,v6 + MOV a1,v1 + LDR a3,[sp,#&24] + LDR a4,[sp,#&20] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + MOV a4,#1 + LDR a2,[sp,#4] + LDR a3,[sp,#&50] + STMDB sp!,{a2-a4} + MOV a2,v6 + MOV a1,v1 + LDR a3,[sp,#&18] + LDR a4,[sp,#&14] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + ADD v5,v5,v3,LSL #3 + LDR a1,[v1,#&100] + TST a1,#&10 + ADDNE v2,v2,v3,LSL #4 + BNE |L00243c.J33.jpeg_find_line| + TST a1,#&20 + ADDEQ v2,v2,v3,LSL #5 + ADDNE v2,v2,v3,LSL #3 +|L00243c.J33.jpeg_find_line| + ADD a2,v5,v3,LSL #3 + LDR a1,[v1,#&f8] + CMP a2,a1 + BLE |L0023a0.J28.jpeg_find_line| +|L00244c.J29.jpeg_find_line| + LDR a1,[v1,#&100] + TST a1,#2 + ADD a1,v1,#&318 + ADD a1,a1,#&400 + STR a1,[sp,#&48] + MOV a1,#2 + ADD a3,v1,#&218 + ADD a3,a3,#&400 + STR a3,[sp,#&44] + LDR a2,[v1,#&fc] + BEQ |L002628.J38.jpeg_find_line| + CMP v5,a2 + BGE |L002620.J41.jpeg_find_line| + LDR a2,[sp,#0] + MUL a1,a2,v3 + STR a1,[sp,#&40] +|L00248c.J40.jpeg_find_line| + SUB sp,sp,#&10 + MOV a4,#0 + MOV a3,#1 + LDR a1,[sp,#&2c] + LDR a2,[sp,#&6c] + STMDB sp!,{a1-a4} + MOV a1,v1 + LDR a2,[sp,#&78] + LDR a3,[sp,#&44] + LDR a4,[sp,#&40] + BL do_huff_skip_blocks + ADD sp,sp,#&10 + LDR a2,[v1,#&e4] + LDR a1,[sp,#&2c] + LDR a1,[a1,#0] + MUL a2,a1,a2 + MOV v6,#1 + STR a2,[sp,#0] + LDR a1,[sp,#&50] + CMP a1,#1 + BLE |L002530.J44.jpeg_find_line| +|L0024e0.J43.jpeg_find_line| + MOV a4,#1 + LDR a2,[sp,#&2c] + LDR a3,[sp,#&6c] + STMDB sp!,{a2-a4} + ADD a1,v1,v6,LSL #8 + ADD a2,a1,#&218 + MOV a1,v1 + LDR a3,[sp,#&40] + LDR a4,[sp,#&3c] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + LDR a2,[v1,#&e4] + LDR a1,[sp,#&2c] + LDR a1,[a1,#0] + MUL a2,a1,a2 + STR a2,[sp,v6,LSL #2] + ADD v6,v6,#1 + LDR a1,[sp,#&50] + CMP a1,v6 + BGT |L0024e0.J43.jpeg_find_line| +|L002530.J44.jpeg_find_line| + MOV a4,#1 + LDR a2,[sp,#&20] + LDR a3,[sp,#&64] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&60] + LDR a3,[sp,#&34] + LDR a4,[sp,#&30] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + MOV a4,#1 + LDR a2,[sp,#&14] + LDR a3,[sp,#&60] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&64] + LDR a3,[sp,#&28] + LDR a4,[sp,#&24] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + LDR a2,[v1,#&e8] + LDR a1,[sp,#&20] + LDR a1,[a1,#0] + MUL a2,a1,a2 + LDR a3,[v1,#&ec] + LDR a1,[sp,#&14] + LDR a1,[a1,#0] + MUL a3,a1,a3 + MOV a1,sp + BL colour_convert_pixels + MOV v6,#0 + MOV a3,#2 + MOV a4,#1 +|L0025b4.J47.jpeg_find_line| + LDR a1,[sp,#0] + STR a1,[v2,v6,LSL #2] + TEQ v3,#2 + ADDEQ a2,v2,v6,LSL #2 + LDREQ a1,[sp,#4] + STREQ a1,[a2,#&20]! + LDR a1,[sp,#&10] + TEQ a1,#2 + BNE |L0025fc.J50.jpeg_find_line| + CMP v3,#2 + MOVNE a1,a4 + MOVEQ a1,a3 + LDR a2,[sp,a1,LSL #2] + ADD a1,v4,v6 + STR a2,[v2,a1,LSL #2] + ADDEQ a1,v2,a1,LSL #2 + LDREQ a2,[sp,#&c] + STREQ a2,[a1,#&20]! +|L0025fc.J50.jpeg_find_line| + ADD v6,v6,#1 + CMP v6,#8 + BLT |L0025b4.J47.jpeg_find_line| + ADD v5,v5,v3,LSL #3 + ADD v2,v2,v3,LSL #5 + ADD sp,sp,#&10 + LDR a1,[v1,#&fc] + CMP v5,a1 + BLT |L00248c.J40.jpeg_find_line| +|L002620.J41.jpeg_find_line| + LDR a1,[sp,#0] + B |L002824.J128.jpeg_find_line| +|L002628.J38.jpeg_find_line| + CMP v5,a2 + BGE |L00281c.J61.jpeg_find_line| + ADD a1,v1,#&18 + ADD a1,a1,#&400 + STR a1,[sp,#&3c] + LDR a2,[sp,#0] + MUL a1,a2,v3 + STR a1,[sp,#&38] +|L002648.J60.jpeg_find_line| + MOV a4,#0 + LDR a1,[sp,#&1c] + LDR a2,[sp,#&5c] + LDR a3,[sp,#&38] + STMDB sp!,{a1-a4} + MOV a1,v1 + LDR a2,[sp,#&68] + LDR a3,[sp,#&34] + LDR a4,[sp,#&30] + BL do_huff_decode_blocks + ADD sp,sp,#&10 + MOV a4,#1 + LDR a2,[sp,#&10] + LDR a3,[sp,#&54] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&50] + LDR a3,[sp,#&24] + LDR a4,[sp,#&20] + BL asm_huff_decode_blocks + ADD sp,sp,#&c + MOV a4,#1 + LDR a2,[sp,#4] + LDR a3,[sp,#&50] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&54] + LDR a3,[sp,#&18] + LDR a4,[sp,#&14] + BL asm_huff_decode_blocks + ADD sp,sp,#&c + LDR a1,[v1,#&100] + TST a1,#1 + BEQ |L002758.J63.jpeg_find_line| + MOV a1,v1 + LDR a2,[sp,#&58] + LDR a3,[sp,#&38] + BL asm_j_rev_dct + MOV a1,v6 + MOV a3,v4 + MOV a2,v2 + BL asm_mono_convert_block + TEQ v3,#2 + BNE |L002708.J65.jpeg_find_line| + ADD a2,v2,#&20 + MOV a3,v4 + LDR a1,[sp,#&58] + BL asm_mono_convert_block +|L002708.J65.jpeg_find_line| + LDR a1,[sp,#0] + TEQ a1,#2 + BNE |L0027f0.J74.jpeg_find_line| + ADD a2,v2,v4,LSL #5 + TEQ v3,#1 + STR a2,[sp,#&34] + MOVNE a1,#2 + MOVEQ a1,#1 + ADD a1,v1,a1,LSL #8 + ADD a1,a1,#&118 + MOV a3,v4 + BL asm_mono_convert_block + TEQ v3,#2 + BNE |L0027f0.J74.jpeg_find_line| + LDR a1,[sp,#&34] + ADD a2,a1,#&20 + MOV a3,v4 + LDR a1,[sp,#&3c] + BL asm_mono_convert_block + B |L0027f0.J74.jpeg_find_line| +|L002758.J63.jpeg_find_line| + LDR a1,[sp,#&38] + TEQ a1,#4 + BNE |L0027b0.J75.jpeg_find_line| + MOV a1,v1 + MOV a3,#6 + LDR a2,[sp,#&58] + BL asm_j_rev_dct + LDR a1,[v1,#&100] + TST a1,#&10 + BEQ |L002794.J77.jpeg_find_line| + MOV a1,v6 + MOV a3,v4 + MOV a2,v2 + BL asm_colour_convert_block_16 + B |L0027f0.J74.jpeg_find_line| +|L002794.J77.jpeg_find_line| + TST a1,#&20 + MOV a1,v6 + MOV a3,v4 + MOV a2,v2 + BLEQ asm_colour_convert_block + BLNE asm_colour_convert_block_8 + B |L0027f0.J74.jpeg_find_line| +|L0027b0.J75.jpeg_find_line| + MOV a1,v1 + LDR a2,[sp,#&58] + LDR a3,[sp,#&38] + BL asm_j_rev_dct + MOV a1,v1 + MOV a3,#2 + LDR a2,[sp,#&44] + BL asm_j_rev_dct + LDR a4,[sp,#0] + STMDB sp!,{a4} + MOV a1,v6 + MOV a4,v3 + MOV a3,v4 + MOV a2,v2 + BL colour_convert_unusual_block + ADD sp,sp,#4 +|L0027f0.J74.jpeg_find_line| + ADD v5,v5,v3,LSL #3 + LDR a1,[v1,#&100] + TST a1,#&10 + ADDNE v2,v2,v3,LSL #4 + BNE |L002810.J86.jpeg_find_line| + TST a1,#&20 + ADDEQ v2,v2,v3,LSL #5 + ADDNE v2,v2,v3,LSL #3 +|L002810.J86.jpeg_find_line| + LDR a1,[v1,#&fc] + CMP v5,a1 + BLT |L002648.J60.jpeg_find_line| +|L00281c.J61.jpeg_find_line| + LDR a1,[sp,#0] + MOV a1,a1,LSL #3 +|L002824.J128.jpeg_find_line| + STR a1,[sp,#&28]! +|L002828.J27.jpeg_find_line| + LDR a1,[v1,#&100] + TST a1,#8 + BEQ |L0028f4.J91.jpeg_find_line| + LDR a1,[v1,#&20] + TEQ a1,#0 + BNE |L002860.J93.jpeg_find_line| + LDR a1,[v1,#&24] + TEQ a1,#0 + BNE |L002860.J93.jpeg_find_line| + BL asm_get_table32k + STR a1,[v1,#&20] + TEQ a1,#0 + MOVEQ a1,#1 + STREQ a1,[v1,#&24] +|L002860.J93.jpeg_find_line| + LDR a1,[v1,#&f8] + MOV a2,a1 + LDR a4,[v1,#&28] + ADD v3,a4,a1,LSL #2 + LDR a3,[v1,#&fc] + SUB a3,a3,a1 + ADD v6,a4,a1 + ADD a3,a3,#&f + BIC v2,a3,#&f + LDR a3,[v1,#&14] + SUB a1,a3,a1 + CMP a1,v2 + MOVLT v2,a1 + LDR a1,[v1,#&100] + TST a1,#4 + ADDNE v3,v3,a2,LSL #2 + MOVNE v2,v2,LSL #1 + CMP v2,#0 + BLE |L0028f4.J91.jpeg_find_line| +|L0028ac.J102.jpeg_find_line| + CMP v2,#&20 + MOVLT v5,v2 + MOVGE v5,#&10 + MOV a3,v4 + LDR a4,[fp,#-&28] + LDR a2,[sp,#0] + STMDB sp!,{a2-a4} + MOV a3,v6 + MOV a2,v5 + MOV a1,v3 + LDR a4,[v1,#&20] + BL asm_diffuse_to_8bpp + ADD sp,sp,#&c + ADD v3,v3,v5,LSL #2 + ADD v6,v6,v5 + SUB v2,v2,v5 + CMP v2,#0 + BGT |L0028ac.J102.jpeg_find_line| +|L0028f4.J91.jpeg_find_line| + LDR a1,[sp,#8] + ADD sp,sp,#4 + STR a1,[v1,#&f4] +|L002900.J8.jpeg_find_line| + LDR a1,[v1,#&28]! + LDR a2,[v1,#&d8]! + TST a2,#2 + LDR a2,[sp,#0] + BEQ |L002930.J109.jpeg_find_line| + TEQ a2,#4 + BNE |L00294c.J129.jpeg_find_line| + LDR a2,[fp,#-&2c] + AND a2,a2,#&f + CMP a2,#8 + ADDGE a1,a1,v4,LSL #2 + B |L00294c.J129.jpeg_find_line| +|L002930.J109.jpeg_find_line| + MOV a3,#1 + MOV a2,a3,LSL a2 + SUB a2,a2,#1 + LDR a3,[fp,#-&2c] + AND a2,a2,a3 + MUL a2,v4,a2 + ADD a1,a1,a2,LSL #2 +|L00294c.J129.jpeg_find_line| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +looks_like_jpeg + LDR a2,[a1,#0] + ADD ip,a2,#&1f000000 + ADD ip,ip,#&2700 + CMN ip,#1 + BNE |L002994.J5.looks_like_jpeg| + LDRB a2,[a1,#6] + TEQ a2,#&4a + LDREQB a2,[a1,#7] + TEQEQ a2,#&46 + LDREQB a2,[a1,#8] + TEQEQ a2,#&49 + LDREQB a2,[a1,#9] + TEQEQ a2,#&46 + LDREQB a1,[a1,#&a] + TEQEQ a1,#0 + MOVEQ a1,#1 + MOVEQS pc,lr +|L002994.J5.looks_like_jpeg| + MOV a1,#0 + MOVS pc,lr + + IMPORT |_swix| +find_image_dims + MOV ip,sp + STMDB sp!,{a1-a4} + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#&14 + MOV v4,a1 + SUB sp,sp,#&14 + SUB sp,sp,#&400 + MOV a1,#0 + LDR v1,[fp,#&1c] + LDR v3,[fp,#&18] + MOV v2,#0 + STR a1,[sp,#&40c] + AND a1,v3,#3 + TEQ a1,#1 + BNE |L002a60.J6.find_image_dims| + MOV v2,#1 + ADD a4,sp,#8 + STMDB sp!,{a4} + MOV a4,v4 + MOV a3,#&4f + MOV a2,#&80000003 + MOV a1,#&d + BL |_swix| + ADD sp,sp,#4 + MOVS a2,a1 + BEQ |L002a0c.J8.find_image_dims| +|L002a04.J9.find_image_dims| + STR a2,[v1,#0] + B |L002dec.J95.find_image_dims| +|L002a0c.J8.find_image_dims| + ADD v4,sp,#&c + ADD a4,sp,#4 + MOV a3,#&400 + MOV a2,v4 + STMDB sp!,{a2-a4} + MOV a3,#4 + MOV a2,#&2000000f + MOV a1,#&c + LDR a4,[sp,#&14] + BL |_swix| + ADD sp,sp,#&c + MOVS v5,a1 + BEQ |L002a60.J6.find_image_dims| + MOV a3,#0 + MOV a2,#3 + MOV a1,#&d + LDR a4,[sp,#8] + BL |_swix| + STR v5,[v1,#0] + MOV a1,v5 + B |L002dec.J95.find_image_dims| +|L002a60.J6.find_image_dims| + MOV a1,v4 + BL looks_like_jpeg + TEQ a1,#0 + BNE |L002a9c.J12.find_image_dims| + TEQ v2,#0 + BEQ |L002a94.J14.find_image_dims| + MOV a3,#0 + MOV a2,#3 + MOV a1,#&d + LDR a4,[sp,#8] + BL |_swix| + MOVS a2,a1 + BNE |L002a04.J9.find_image_dims| +|L002a94.J14.find_image_dims| + MOV a1,#1 + B |L002dec.J95.find_image_dims| +|L002a9c.J12.find_image_dims| + LDRB a1,[v4,#&d] + TEQ a1,#1 + BNE |L002acc.J18.find_image_dims| + LDRB a1,[v4,#&e] + MOV a1,a1,LSL #24 + LDRB a2,[v4,#&f] + ADD a1,a1,a2,LSL #16 + LDRB a2,[v4,#&10] + ADD a1,a1,a2,LSL #8 + LDRB a2,[v4,#&11] + ADD a1,a1,a2 + B |L002b40.J92.find_image_dims| +|L002acc.J18.find_image_dims| + TEQ a1,#2 + BNE |L002b48.J21.find_image_dims| + LDRB a1,[v4,#&e] + RSB a2,a1,a1,LSL #7 + MOV a2,a2,LSL #1 + MOV a1,#&64 + BL |__rt_sdiv| + MOV v5,a1 + LDRB a1,[v4,#&f] + RSB a2,a1,a1,LSL #7 + MOV a2,a2,LSL #1 + MOV a1,#&64 + BL |__rt_sdiv| + ADD a1,a1,#&18 + MOV v5,v5,LSL a1 + LDRB a1,[v4,#&10] + RSB a2,a1,a1,LSL #7 + MOV a2,a2,LSL #1 + MOV a1,#&64 + BL |__rt_sdiv| + ADD a1,a1,#&10 + MOV v5,v5,LSL a1 + LDRB a1,[v4,#&11] + RSB a2,a1,a1,LSL #7 + MOV a2,a2,LSL #1 + MOV a1,#&64 + BL |__rt_sdiv| + ADD a1,a1,#8 + MOV a1,v5,LSL a1 +|L002b40.J92.find_image_dims| + STR a1,[sp,#0] + B |L002b8c.J20.find_image_dims| +|L002b48.J21.find_image_dims| + LDRB a1,[v4,#&f] + LDRB a2,[v4,#&e] + ADDS a1,a1,a2,LSL #8 + MOVEQ a1,#1 + LDRB a2,[v4,#&11] + LDRB a3,[v4,#&10] + ADD a2,a2,a3,LSL #8 + BL |__rt_sdiv| + TEQ a1,#0 + RSBNE a1,a1,a1,LSL #4 + ADDNE a1,a1,a1,LSL #1 + MOVNE a1,a1,LSL #1 + MOVEQ a1,#&5a + ORR a1,a1,#&5a0000 + STR a1,[sp,#0] + MOV a1,#&100 + STR a1,[sp,#&40c] +|L002b8c.J20.find_image_dims| + ADD v4,v4,#2 +|L002b90.J88.find_image_dims| + LDR a1,[sp,#4] + B |L002c60.J30.find_image_dims| +|L002b98.J29.find_image_dims| + LDRB a2,[v4,#3] + LDRB a3,[v4,#2] + ADD a2,a2,a3,LSL #8 + ADD a2,a2,v4 + ADD v4,a2,#2 + TEQ v2,#0 + BEQ |L002c60.J30.find_image_dims| + CMP v4,a1 + BLT |L002c60.J30.find_image_dims| + SUB v5,v4,a1 + ADD v4,sp,#&c + ADD a4,sp,#4 + MOV a3,#&400 + MOV a2,v4 + STMDB sp!,{a2-a4} + MOV a3,#4 + MOV a2,#&2000000f + MOV a1,#&c + LDR a4,[sp,#&14] + BL |_swix| + ADD sp,sp,#&c + MOVS v6,a1 + BEQ |L002c14.J35.find_image_dims| +|L002bf4.J36.find_image_dims| + MOV a3,#0 + MOV a2,#3 + MOV a1,#&d + LDR a4,[sp,#8] + BL |_swix| + STR v6,[v1,#0] + MOV a1,v6 + B |L002dec.J95.find_image_dims| +|L002c14.J35.find_image_dims| + CMP v5,#&400 + BLE |L002c58.J38.find_image_dims| +|L002c1c.J37.find_image_dims| + ADD a4,sp,#4 + MOV a3,#&400 + MOV a2,v4 + STMDB sp!,{a2-a4} + MOV a3,#4 + MOV a2,#&2000000f + MOV a1,#&c + LDR a4,[sp,#&14] + BL |_swix| + ADD sp,sp,#&c + MOVS v6,a1 + BNE |L002bf4.J36.find_image_dims| + SUB v5,v5,#&400 + CMP v5,#&400 + BGT |L002c1c.J37.find_image_dims| +|L002c58.J38.find_image_dims| + ADD v4,v4,v5 + B |L002b90.J88.find_image_dims| +|L002c60.J30.find_image_dims| + LDRB a2,[v4,#0] + TEQ a2,#&ff + BNE |L002c84.J43.find_image_dims| + LDRB a2,[v4,#1] + TEQ a2,#&c0 + TEQNE a2,#&c1 + TEQNE a2,#&c9 + BNE |L002b98.J29.find_image_dims| + B |L002c98.J49.find_image_dims| +|L002c84.J43.find_image_dims| + LDRB a1,[v4,#1] + TEQ a1,#&c0 + TEQNE a1,#&c1 + TEQNE a1,#&c9 + BNE |L002a94.J14.find_image_dims| +|L002c98.J49.find_image_dims| + LDRB a1,[v4,#6] + LDRB a2,[v4,#5] + ADD v5,a1,a2,LSL #8 + LDRB a1,[v4,#8] + LDRB a2,[v4,#7] + ADD a1,a1,a2,LSL #8 + STR a1,[sp,#&410] + LDRB a1,[v4,#9] + LDR a2,[sp,#&40c] + ORR v6,a1,a2 + CMP v3,#3 + BLE |L002d78.J54.find_image_dims| + SUB sp,sp,#8 + BIC v3,v3,#3 + LDR a1,[v3,#0] + CMP v6,#1 + STR a1,[sp,#4] + MOVNE a1,#&10 + MOVEQ a1,#8 + LDR a2,[sp,#&418] + ADD a2,a2,#&f + MUL a1,a2,a1 + MOV a2,a1,LSL #2 + BNE |L002d08.J60.find_image_dims| + ADDS a1,v5,#7 + ADDMI a1,a1,#7 + MOV a1,a1,ASR #3 + B |L002d0c.J59.find_image_dims| +|L002d08.J60.find_image_dims| + MOV a1,v5 +|L002d0c.J59.find_image_dims| + ADD a1,a1,a1,LSL #2 + ADD a1,a2,a1,LSL #2 + ADD a1,a1,#&ff + ADD a1,a1,#&3d00 + BIC v4,a1,#3 + MOV a3,sp + MOV a2,#&80000000 + MOV a1,#&51 + BL |_swix| + LDR a1,[sp,#4] + TEQ a1,#0 + LDREQ a1,[sp,#0] + ADDEQ a2,v4,a1 + BEQ |L002d64.J93.find_image_dims| + LDR a1,[sp,#4] + LDR a1,[a1,#&10] + CMP a1,v4 + MOVGE a1,#0 + BGE |L002d70.J66.find_image_dims| + SUB a2,v4,a1 + LDR a1,[sp,#0] + ADD a2,a2,a1 +|L002d64.J93.find_image_dims| + SUB a2,a2,#1 + SUB a1,a1,#1 + BIC a1,a2,a1 +|L002d70.J66.find_image_dims| + ADD sp,sp,#8 + STR a1,[v3,#0] +|L002d78.J54.find_image_dims| + LDR a1,[fp,#&c] + TEQ a1,#0 + LDRNE a1,[fp,#&c] + STRNE v5,[a1,#0] + LDR a1,[fp,#8] + TEQ a1,#0 + LDRNE a1,[sp,#&410] + LDRNE a2,[fp,#8] + STRNE a1,[a2,#0] + LDR a1,[fp,#&10] + TEQ a1,#0 + MOVNE a1,v6 + LDRNE a2,[fp,#&10] + STRNE a1,[a2,#0] + LDR a1,[fp,#&14] + CMP a1,#0 + LDRNE a1,[sp,#0] + LDRNE a2,[fp,#&14] + STRNE a1,[a2,#0] + TEQ v2,#0 + BEQ |L002de8.J80.find_image_dims| + MOV a3,#0 + MOV a2,#3 + MOV a1,#&d + LDR a4,[sp,#8] + BL |_swix| + MOVS a2,a1 + BNE |L002a04.J9.find_image_dims| +|L002de8.J80.find_image_dims| + MOV a1,#0 +|L002dec.J95.find_image_dims| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +check_sprite_area + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + SUB sp,sp,#&10 + LDMIA a1,{a2,a3} + STR a3,[sp,#8] + ADD a4,a1,#8 + LDMIA a4,{a3,a4} + CMP a3,a4 + CMPLE a4,a2 + MOVGT a1,#1 + BGT |L002fc0.J55.check_sprite_area| + ADD v1,a1,a3 + MOV a3,#0 + STR a3,[sp,#4] + LDR a3,[sp,#8] + CMP a3,#0 + BLE |L002fbc.J9.check_sprite_area| + ADD v5,a1,a2 +|L002e3c.J8.check_sprite_area| + ADD a2,v1,#&18 + LDMIA a2,{a1,a2} + LDR a4,[v1,#&14] + LDR v3,[v1,#0] + LDR v6,[v1,#&10] + STR a2,[sp,#-4]! + LDR a3,[v1,#&28] + LDR v2,[v1,#&24] + LDR v4,[v1,#&20] + ADD a2,v3,v1 + CMP a2,v5 + CMPLE a1,#&1f + LDRLE a2,[sp,#0] + CMPLE a2,#&1f + ADDLE a2,v4,v1 + CMPLE a2,v5 + ADDLE a2,v2,v1 + CMPLE a2,v5 + BGT |L002fa0.J50.check_sprite_area| + MOV a2,#0 + CMP a2,a3,ASR #24 + BGE |L002e9c.J21.check_sprite_area| + TEQ a1,#0 + BNE |L002fa0.J50.check_sprite_area| +|L002e9c.J21.check_sprite_area| + TEQ v4,v2 + BEQ |L002f54.J25.check_sprite_area| + ADD a1,v6,#1 + ADD a4,a4,#1 + STR a4,[sp,#&10] + MUL a1,a4,a1 + ADD a4,v4,a1,LSL #2 + CMP a4,v2 + BGT |L002fa0.J50.check_sprite_area| + TEQ a2,a3,ASR #24 + BNE |L002ee8.J29.check_sprite_area| + ADD a1,v2,a1,LSL #2 + CMP a1,v3 + BGT |L002fa0.J50.check_sprite_area| + SUB a1,v3,v2 + SUB a2,v2,v4 + TEQ a1,a2 + BNE |L002fa0.J50.check_sprite_area| + B |L002f6c.J43.check_sprite_area| +|L002ee8.J29.check_sprite_area| + CMP a3,#&ff + BLE |L002ef8.J36.check_sprite_area| + TST a3,#1 + BEQ |L002fa0.J50.check_sprite_area| +|L002ef8.J36.check_sprite_area| + ADD a4,sp,#4 + STMDB sp!,{a4} + MOV a4,#9 + MOV a2,#&20000003 + MOV a1,#&35 + BL |_swix| + ADD sp,sp,#4 + TEQ a1,#0 + BNE |L002fa0.J50.check_sprite_area| + LDR a1,[sp,#4] + RSB a2,a1,#5 + MOV a2,v6,LSL a2 + LDR a3,[sp,#0] + ADD a3,a3,#1 + ADD a1,a2,a3,ASR a1 + ADD a1,a1,#&1f + BIC a1,a1,#&1f + MOV a1,a1,LSR #3 + LDR a2,[sp,#&10] + MLA a1,a2,a1,v2 + TEQ a1,v3 + BNE |L002fa0.J50.check_sprite_area| + B |L002f6c.J43.check_sprite_area| +|L002f54.J25.check_sprite_area| + ADD a1,v6,#1 + ADD a2,a4,#1 + MUL a1,a2,a1 + ADD a1,v4,a1,LSL #2 + CMP a1,v3 + BGT |L002fa0.J50.check_sprite_area| +|L002f6c.J43.check_sprite_area| + ORR a1,v3,v4 + ORR a1,a1,v2 + TST a1,#3 + BNE |L002fa0.J50.check_sprite_area| + ADD v1,v1,v3 + LDR a1,[sp,#8] + ADD a1,a1,#1 + LDR a2,[sp,#&c] + CMP a1,a2 + BGE |L002fa8.J48.check_sprite_area| + ADD a2,v1,#&2c + CMP a2,v5 + BLE |L002fa8.J48.check_sprite_area| +|L002fa0.J50.check_sprite_area| + MOV a1,#1 + LDMDB fp,{v1-v6,fp,sp,pc}^ +|L002fa8.J48.check_sprite_area| + ADD sp,sp,#4 + STR a1,[sp,#4] + LDR a2,[sp,#8] + CMP a1,a2 + BLT |L002e3c.J8.check_sprite_area| +|L002fbc.J9.check_sprite_area| + MOV a1,#0 +|L002fc0.J55.check_sprite_area| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +rr + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + CMN a1,#1 + MOVEQ a2,#4 + MOVEQ a1,#&bd + ADDEQ a1,a1,#&200 + BLEQ exit_c + MOV a1,v1 + LDMDB fp,{v1,fp,sp,pc}^ + +check_workspace + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOVS v1,a1 + MOVEQ a2,#1 + MOVEQ a1,#&2fc + BLEQ exit_c + LDR a3,[v1,#0] + LDR a2,[pc, #L003074-.-8] + ADD a1,v1,#&2000 + TEQ a3,a2 + BEQ |L003054.J6.check_workspace| + STR a2,[v1,#0] + MOV a3,#0 + STR a2,[a1,#&2ec] + STR a3,[v1,#8] + ADD a3,v1,#&22c + ADD a4,v1,#&2ec + ADD a4,a4,#&2000 + MVN ip,#0 + CMP a4,a3 + BLS |L003054.J6.check_workspace| +|L003048.J8.check_workspace| + STR ip,[a3],#&418 + CMP a4,a3 + BHI |L003048.J8.check_workspace| +|L003054.J6.check_workspace| + LDR a1,[a1,#&2ec] + TEQ a1,a2 + MOVNE a2,#4 + MOVNE a1,#&67 + ADDNE a1,a1,#&300 + LDMNEDB fp,{v1,fp,sp,lr} + BNE exit_c + LDMDB fp,{v1,fp,sp,pc}^ +L003074 + DCD &075bcd15 + +compile_word + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + LDR a1,[a1,#&10] + LDR a2,[v1,#&14] + CMP a1,a2 + MOVCS a2,#1 + MOVCS a1,#&2e + ADDCS a1,a1,#&400 + BLCS exit_c + LDR a1,[v1,#&10] + STR v2,[a1],#4 + STR a1,[v1,#&10]! + LDMDB fp,{v1,v2,fp,sp,pc}^ + +do_ins + AND a3,a2,#&f0000000 + TEQ a3,#&f0000000 + BICEQ a2,a2,#&f0000000 + BEQ |L0030d0.J6.do_ins| + TEQ a3,#0 + ORREQ a2,a2,#&e0000000 +|L0030d0.J6.do_ins| + B compile_word + +define_label + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a2,#0] + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&5f + ADDNE a1,a1,#&400 + BLNE exit_c + LDR a2,[v2,#&10]! + STR a2,[v1,#0] + LDR a1,[v1,#4] + TEQ a1,#0 + LDMEQDB fp,{v1,v2,fp,sp,pc}^ + ADD a3,a1,#8 + SUBS a2,a2,a3 + ADDMI a2,a2,#3 + MOV a2,a2,ASR #2 + BIC a2,a2,#&ff000000 + LDR a3,[a1,#0] + ORR a2,a2,a3 + STR a2,[a1,#0] + MOV a1,#0 + STR a1,[v1,#4]! + LDMDB fp,{v1,v2,fp,sp,pc}^ + +do_branch + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v3,a2 + MOV v1,a3 + LDR a1,[a3,#0] + TEQ a1,#0 + LDR a1,[a3,#4] + BNE |L003194.J4.do_branch| + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&7e + ADDNE a1,a1,#&400 + BLNE exit_c + LDR a1,[v2,#&10] + MOV a2,v3 + STR a1,[v1,#4]! + MOV a1,v2 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L003194.J4.do_branch| + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&84 + ADDNE a1,a1,#&400 + BLNE exit_c + LDR a1,[v2,#&10] + ADD a1,a1,#8 + LDR a2,[v1,#0] + SUBS a1,a2,a1 + ADDMI a1,a1,#3 + MOV a1,a1,ASR #2 + BIC a1,a1,#&ff000000 + ORR a2,a1,v3 + MOV a1,v2 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +do_set_regname + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v3,a2 + MOV v1,a3 + CMN a3,#1 + BNE |L003240.J4.do_set_regname| + LDR a1,[v2,#&1e0] + MOVS v1,a1 + ADD a1,a1,#1 + STR a1,[v2,#&1e0] + BMI |L003210.J7.do_set_regname| + CMP v1,#&c + BLE |L003220.J6.do_set_regname| +|L003210.J7.do_set_regname| + MOV a2,#4 + MOV a1,#&97 + ADD a1,a1,#&400 + BL exit_c +|L003220.J6.do_set_regname| + TEQ v1,#&c + BNE |L003240.J4.do_set_regname| + LDR a1,[v2,#&1e4]! + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&98 + ADDNE a1,a1,#&400 + BLNE exit_c +|L003240.J4.do_set_regname| + STR v1,[v3,#0] + LDMDB fp,{v1-v3,fp,sp,pc}^ + +compile_buffer_init + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a2 + LDR a1,[a2,#8] + ADD ip,a1,a1,LSL #1 + ADD a1,ip,a1,LSL #7 + ADD a1,a2,a1,LSL #3 + ADD a1,a1,#&244 + STR a1,[a2,#&c] + STR a1,[a2,#&10] + LDR a1,[a2,#&c] + ADD a1,a1,#&400 + STR a1,[a2,#&14] + ADD a1,a2,#&18 + ADD a2,v1,#&150 + MOV v3,#0 + CMP a2,a1 + BCC |L0032a8.J5.compile_buffer_init| +|L003294.J4.compile_buffer_init| + STR v3,[a1,#0] + STR v3,[a1,#4]! + ADD a1,a1,#4 + CMP a2,a1 + BCS |L003294.J4.compile_buffer_init| +|L0032a8.J5.compile_buffer_init| + ADD a1,v1,#&158 + ADD v2,v1,#&1dc + MVN a2,#0 + CMP v2,a1 + BCC |L0032c8.J9.compile_buffer_init| +|L0032bc.J8.compile_buffer_init| + STR a2,[a1],#4 + CMP v2,a1 + BCS |L0032bc.J8.compile_buffer_init| +|L0032c8.J9.compile_buffer_init| + STR v3,[v1,#&1e0] + ADD a2,v1,#&1c4 + MOV a1,v1 + MOV a3,#1 + BL do_set_regname + ADD a2,v1,#&1c8 + MOV a1,v1 + MOV a3,#2 + BL do_set_regname + ADD a2,v1,#&1cc + MOV a1,v1 + MOV a3,#3 + BL do_set_regname + ADD a2,v1,#&1d0 + MOV a1,v1 + MOV a3,#&c + BL do_set_regname + ADD a2,v1,#&1d4 + MOV a1,v1 + MOV a3,#&d + BL do_set_regname + ADD a2,v1,#&1d8 + MOV a1,v1 + MOV a3,#&e + BL do_set_regname + MOV a2,v2 + MOV a1,v1 + MOV a3,#&f + BL do_set_regname + STR v3,[v1,#&1e4]! + LDMDB fp,{v1-v3,fp,sp,pc}^ + +compile_buffer_done + LDR a2,[a1,#8] + ADD a2,a2,#1 + STR a2,[a1,#8] + CMP a2,#8 + MOVGE a2,#0 + STRGE a2,[a1,#8]! + MOVS pc,lr + +simple_x_scale + ADD ip,a1,#&40 + LDMIA ip,{a3,ip} + MOV a4,a3 + SUB ip,ip,a3 + TEQ ip,a3 + BNE |L0033ac.J5.simple_x_scale| + LDR a3,[a1,#&30] + CMP a4,a3 + BGT |L0033ac.J5.simple_x_scale| + LDR a1,[a1,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BEQ |L0033ac.J5.simple_x_scale| + LDR a1,[a2,#&1e8] + TEQ a1,#0 + LDREQ a1,[a2,#&1f4]! + TEQEQ a1,#0 + MOVEQ a1,#1 + MOVEQS pc,lr +|L0033ac.J5.simple_x_scale| + MOV a1,#0 + MOVS pc,lr + +x_block_move + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + BL simple_x_scale + TEQ a1,#0 + BEQ |L00341c.J5.x_block_move| + MOV a1,#1 + LDR a2,[v1,#&78] + MOV a2,a1,LSL a2 + LDR a1,[v1,#&100] + TEQ a2,a1 + LDREQ a1,[v2,#&1e8] + TEQEQ a1,#0 + LDREQ a1,[v2,#&1ec]! + TEQEQ a1,#0 + LDREQ a1,[v1,#&b4] + TEQEQ a1,#0 + LDREQ a1,[v1,#&f8] + TEQEQ a1,#0 + BNE |L00341c.J5.x_block_move| + LDR a1,[v1,#&10c]! + TEQ a1,#0 + MOVEQ a1,#1 + LDMEQDB fp,{v1,v2,fp,sp,pc}^ +|L00341c.J5.x_block_move| + MOV a1,#0 + LDMDB fp,{v1,v2,fp,sp,pc}^ + +simple_y_scale + ADD a2,a1,#&10 + LDMIA a2,{a1,a2} + TEQ a2,a1 + MOVNE a1,#0 + MOVEQ a1,#1 + MOVS pc,lr + +ptrs_rn + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + ADD a2,a2,#&158 + MOV a1,v1 + MOV a3,#&e + BL do_set_regname + ADD a2,v1,#&15c + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + ADD a2,v1,#&198 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L00349c.J5.ptrs_rn| + LDR a1,[v2,#&f4]! + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L0034ac.J4.ptrs_rn| +|L00349c.J5.ptrs_rn| + ADD a2,v1,#&168 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L0034ac.J4.ptrs_rn| + LDR a1,[v1,#&1f4] + TEQ a1,#0 + LDMEQDB fp,{v1,v2,fp,sp,pc}^ + ADD a2,v1,#&184 + MOV a1,v1 + MVN a3,#0 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_set_regname + +xloop_rn + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + MOV v3,#0 + BL x_block_move + ADD a2,v1,#&160 + ADD v6,v1,#&1a0 + ADD v5,v1,#&1a8 + TEQ a1,#0 + BEQ |L0035b8.J4.xloop_rn| + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + MOV a2,v6 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + MOV a2,v5 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + ADD a2,v1,#&188 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + LDR a1,[v1,#&15c] + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&f5 + ADDNE a1,a1,#&500 + BLNE exit_c + LDR a1,[v1,#&198] + TEQ a1,#1 + MOVNE a2,#4 + MOVNE a1,#&f6 + ADDNE a1,a1,#&500 + BLNE exit_c + LDR a1,[v1,#&160] + TEQ a1,#2 + MOVNE a2,#4 + MOVNE a1,#&f7 + ADDNE a1,a1,#&500 + BLNE exit_c + LDR a1,[v1,#&1a0] + TEQ a1,#3 + MOVNE a2,#4 + MOVNE a1,#&1f8 + ADDNE a1,a1,#&400 + BLNE exit_c + LDR a1,[v1,#&1a8]! + TEQ a1,#4 + MOVNE a2,#4 + MOVNE a1,#&f9 + ADDNE a1,a1,#&500 + LDMNEDB fp,{v1-v6,fp,sp,lr} + BNE exit_c + LDMDB fp,{v1-v6,fp,sp,pc}^ +|L0035b8.J4.xloop_rn| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + ADD v4,v1,#&164 + TEQ a1,#&32 + BNE |L0035e0.J17.xloop_rn| +|L0035cc.J18.xloop_rn| + MOV a2,v4 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + B |L0035f8.J19.xloop_rn| +|L0035e0.J17.xloop_rn| + LDR a1,[v2,#&74] + TEQ a1,#5 + MOVNE a1,v1 + MVNNE a3,#0 + BLNE do_set_regname + BNE |L0035cc.J18.xloop_rn| +|L0035f8.J19.xloop_rn| + LDR a1,[v1,#&1ec] + TEQ a1,#0 + BEQ |L003644.J30.xloop_rn| + ADD a2,v1,#&16c + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L003634.J25.xloop_rn| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + ADDNE a2,v1,#&174 + BNE |L003638.J67.xloop_rn| +|L003634.J25.xloop_rn| + ADD a2,v1,#&170 +|L003638.J67.xloop_rn| + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L003644.J30.xloop_rn| + LDR a1,[v1,#&1e8] + TEQ a1,#0 + BEQ |L00365c.J29.xloop_rn| + LDR a1,[v2,#&104] + TEQ a1,#&20 + MOVEQ v3,#1 +|L00365c.J29.xloop_rn| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L003690.J33.xloop_rn| + ADD a2,v1,#&18c + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + ADD a2,v1,#&190 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + B |L003734.J35.xloop_rn| +|L003690.J33.xloop_rn| + LDR a1,[v2,#&b4] + TEQ a1,#0 + LDREQ a1,[v2,#&f8] + TEQEQ a1,#0 + BNE |L0036b0.J37.xloop_rn| + LDR a1,[v2,#&10c] + TEQ a1,#0 + BEQ |L0036c0.J36.xloop_rn| +|L0036b0.J37.xloop_rn| + ADD a2,v1,#&1a4 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L0036c0.J36.xloop_rn| + LDR a2,[v2,#&f8] + TEQ a2,#0 + LDR a1,[v2,#&74] + LDRNE a2,[v2,#&104] + TEQNE a2,#&10 + BNE |L0036e0.J45.xloop_rn| + TEQ a1,#5 + BNE |L0036f0.J44.xloop_rn| +|L0036e0.J45.xloop_rn| + LDR a1,[v2,#&104] + TEQ a1,#&20 + MOVNE v3,#2 + B |L003714.J47.xloop_rn| +|L0036f0.J44.xloop_rn| + TEQ a1,#4 + LDREQ a1,[v2,#&104] + TEQEQ a1,#&20 + BNE |L003714.J47.xloop_rn| + MOV v3,#2 + ADD a2,v1,#&180 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L003714.J47.xloop_rn| + TEQ v3,#0 + LDREQ a1,[v2,#&40] + LDREQ a2,[v2,#&68] + BLEQ |__rt_sdiv| + TEQEQ a2,#0 + BNE |L003734.J35.xloop_rn| + CMP a1,#4 + MOVGT v3,#1 +|L003734.J35.xloop_rn| + LDR a1,[v2,#&104] + TEQ a1,#&20 + BEQ |L003760.J54.xloop_rn| + ADD a2,v1,#&19c + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + MOV a2,v6 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L003760.J54.xloop_rn| + LDR a1,[v2,#&74] + CMP a1,#3 + BGT |L003790.J56.xloop_rn| + MOV a2,v1 + MOV a1,v2 + BL simple_x_scale + TEQ a1,#0 + BEQ |L003790.J56.xloop_rn| + ADD a2,v1,#&1c0 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L003790.J56.xloop_rn| + MOV a2,v5 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + MOV a2,v1 + MOV a1,v2 + BL simple_x_scale + TEQ a1,#0 + BNE |L0037c4.J16.xloop_rn| + ADD a2,v1,#&1ac + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L0037c4.J16.xloop_rn| + CMP v3,#1 + BLT |L0037dc.J61.xloop_rn| + ADD a2,v1,#&178 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L0037dc.J61.xloop_rn| + CMP v3,#2 + LDMLTDB fp,{v1-v6,fp,sp,pc}^ + ADD a2,v1,#&17c + MOV a1,v1 + MVN a3,#0 + LDMDB fp,{v1-v6,fp,sp,lr} + B do_set_regname + +yloop_rn_count + MOV a3,#2 + LDR a4,[a1,#&14] + LDR ip,[a1,#&10] + TEQ a4,ip + MOVNE a3,#3 + LDR a2,[a2,#&1f0] + TEQ a2,#0 + BNE |L003828.J7.yloop_rn_count| + LDR a2,[a1,#&f4] + AND a2,a2,#&ff + TEQ a2,#&32 + BNE |L00382c.J6.yloop_rn_count| +|L003828.J7.yloop_rn_count| + ADD a3,a3,#1 +|L00382c.J6.yloop_rn_count| + LDR a1,[a1,#&110] + TEQ a1,#0 + ADDNE a3,a3,#1 + MOV a1,a3 + MOVS pc,lr + +yloop_rn + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + ADD a2,a2,#&1b0 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + MOV a2,v1 + MOV a1,v2 + BL simple_y_scale + TEQ a1,#0 + BNE |L003888.J4.yloop_rn| + ADD a2,v1,#&1b4 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L003888.J4.yloop_rn| + ADD a2,v1,#&1b8 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L0038b4.J7.yloop_rn| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L0038c4.J6.yloop_rn| +|L0038b4.J7.yloop_rn| + ADD a2,v1,#&1bc + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L0038c4.J6.yloop_rn| + LDR a1,[v2,#&110]! + TEQ a1,#0 + LDMEQDB fp,{v1,v2,fp,sp,pc}^ + ADD a2,v1,#&194 + MOV a1,v1 + MVN a3,#0 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_set_regname + +get_in_shift + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&110] + TEQ a1,#0 + LDRNE a1,[v2,#&74] + TEQNE a1,#5 + LDR a1,[v1,#&160] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + BEQ |L003a24.J4.get_in_shift| + ADD a3,v2,#&114 + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&74]! + TEQ a1,#4 + LDR a1,[v1,#&160] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&160] + BL rr + ORR a1,v2,a1,LSL #16 + BNE |L0039c0.J7.get_in_shift| + ORR a2,a1,#&2100000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&160] + BL rr + MOV a2,#&1a00000 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&f2000000 + ORR a2,a2,#2 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&160] + BL rr + MOV v2,a1 + LDR a1,[v1,#&160] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&200 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L0039c0.J7.get_in_shift| + ORR a2,a1,#&2100000 + ORR a2,a2,#3 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&160] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&160] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&160] + BL rr + MOV v2,a1 + LDR a1,[v1,#&160] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&180 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L003a24.J4.get_in_shift| + ADD a1,v2,#&20 + SUB a1,a1,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&160] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&160] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#&20 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +fetch_pixel_init + MOV ip,sp + STMDB sp!,{v1-v5,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&f4] + AND a1,a1,#&ff + ADD a3,v2,#8 + SUB a2,a3,v2 + ORR v4,a2,#&1800000 + TEQ a1,#&32 + BNE |L003ac8.J4.fetch_pixel_init| + LDR a1,[v1,#&15c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a3,a1,#&4100000 + ADD a2,v2,#&38 + SUB a1,a2,v2 + ORR a1,a1,#&1800000 + ADD a2,a3,a1 + B |L003b08.J49.fetch_pixel_init| +|L003ac8.J4.fetch_pixel_init| + LDR a1,[v2,#&110] + TEQ a1,#0 + LDR a1,[v1,#&15c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORREQ a1,a1,#&4100000 + ADDEQ a2,a1,v4 + BEQ |L003b08.J49.fetch_pixel_init| + ORR a2,a1,#&4100000 + ADD a3,v2,#&118 + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 +|L003b08.J49.fetch_pixel_init| + MOV a1,v1 + BL do_ins + MOV a2,v1 + MOV a1,v2 + BL x_block_move + TEQ a1,#0 + BEQ |L003b68.J10.fetch_pixel_init| + MOV a2,v1 + MOV a1,v2 + BL get_in_shift + LDR a1,[v1,#&188] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a1,v2,#&108 + SUB a1,a1,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + LDMDB fp,{v1-v5,fp,sp,lr} + B do_ins +|L003b68.J10.fetch_pixel_init| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L003c34.J13.fetch_pixel_init| + LDR a1,[v1,#&18c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&34 + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&18c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#&18 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&15c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&800000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&190] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a3,a1,#&4100000 + ADD a2,v2,#&130 + SUB a1,a2,v2 + ORR a1,a1,#&1800000 + ADD a2,a3,a1 + B |L003c6c.J50.fetch_pixel_init| +|L003c34.J13.fetch_pixel_init| + LDR a1,[v2,#&74] + TEQ a1,#5 + BEQ |L003c74.J15.fetch_pixel_init| + MOV a2,v1 + MOV a1,v2 + BL get_in_shift + LDR a1,[v1,#&160] + BL rr + MOV v3,a1 + LDR a1,[v1,#&160] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&d80 +|L003c6c.J50.fetch_pixel_init| + MOV a1,v1 + BL do_ins +|L003c74.J15.fetch_pixel_init| + LDR a1,[v1,#&1ec] + TEQ a1,#0 + BEQ |L003e04.J18.fetch_pixel_init| + ADD a3,v2,#&48 + SUB a2,a3,v2 + ORR v3,a2,#&1800000 + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L003ca8.J21.fetch_pixel_init| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L003ddc.J20.fetch_pixel_init| +|L003ca8.J21.fetch_pixel_init| + LDR a1,[v1,#&170] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a3,a1,#&4100000 + ADD a2,v2,#&88 + SUB a1,a2,v2 + ORR a1,a1,#&1800000 + ADD a2,a3,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1f0] + TEQ a1,#0 + LDR a1,[v1,#&168] + BL rr + BEQ |L003d18.J24.fetch_pixel_init| + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&8c + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + B |L003d88.J51.fetch_pixel_init| +|L003d18.J24.fetch_pixel_init| + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,v4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,v3 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&168] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&168] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&800000 +|L003d88.J51.fetch_pixel_init| + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&170] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&170] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&170] + BL rr + MOV v3,a1 + LDR a1,[v1,#&170] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&d80 + B |L003dfc.J52.fetch_pixel_init| +|L003ddc.J20.fetch_pixel_init| + LDR a1,[v1,#&174] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,v3 +|L003dfc.J52.fetch_pixel_init| + MOV a1,v1 + BL do_ins +|L003e04.J18.fetch_pixel_init| + LDR a1,[v2,#&10c] + TEQ a1,#0 + BEQ |L003e40.J28.fetch_pixel_init| + LDR a1,[v1,#&1a4] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&10c + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + B |L003ef4.J53.fetch_pixel_init| +|L003e40.J28.fetch_pixel_init| + LDR a1,[v2,#&f8] + TEQ a1,#0 + BEQ |L003e7c.J31.fetch_pixel_init| + LDR a1,[v1,#&1a4] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a3,a1,#&4100000 + ADD a2,v2,#&f8 + SUB a1,a2,v2 + ORR a1,a1,#&1800000 + ADD a2,a3,a1 + B |L003ef4.J53.fetch_pixel_init| +|L003e7c.J31.fetch_pixel_init| + LDR a1,[v2,#&b4] + TEQ a1,#0 + BEQ |L003efc.J30.fetch_pixel_init| + LDR a1,[v1,#&1a4] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&b4 + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&104] + CMP a1,#8 + BGT |L003efc.J30.fetch_pixel_init| + LDR a1,[v2,#&74] + CMP a1,#4 + BLT |L003efc.J30.fetch_pixel_init| + LDR a1,[v1,#&1a4] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a4] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&5900000 + ORR a2,a2,#4 +|L003ef4.J53.fetch_pixel_init| + MOV a1,v1 + BL do_ins +|L003efc.J30.fetch_pixel_init| + LDR a1,[v2,#&74] + CMP a1,#3 + BGT |L003f38.J39.fetch_pixel_init| + MOV a2,v1 + MOV a1,v2 + BL simple_x_scale + TEQ a1,#0 + BEQ |L003f38.J39.fetch_pixel_init| + LDR a1,[v1,#&1c0] + BL rr + LDR a2,[v1,#&200] + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&3a00000 + MOV a1,v1 + BL do_ins +|L003f38.J39.fetch_pixel_init| + LDR a1,[v1,#&180] + CMN a1,#1 + BEQ |L003fc4.J42.fetch_pixel_init| + BL rr + MOV a2,#&3a00000 + ADD a2,a2,#&e0 + ORR a2,a2,a1,LSL #12 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&180] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&180] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&180] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&400 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&180] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&180] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&180] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&400 + MOV a1,v1 + BL do_ins +|L003fc4.J42.fetch_pixel_init| + LDR a1,[v1,#&1f4] + TEQ a1,#0 + LDMEQDB fp,{v1-v5,fp,sp,pc}^ + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a3,a1,#&4100000 + ADD a2,v2,#&4c + SUB a1,a2,v2 + ORR a1,a1,#&1800000 + ADD a2,a3,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&184] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&50 + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&184] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&184] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&184] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&200000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&184] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&184] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&80 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,#&c10 + ADD v3,v3,#&3a00000 + ORR a2,v3,a1,LSL #12 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a2,a1,#&5900000 + ORR a2,a2,#&1fc + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV a2,#&3100000 + ADD a2,a2,#1 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&184] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&184] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a2,a1,#&10000000 + ORR a2,a2,#&2200000 + ORR a2,a2,#3 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + ORR a2,v3,a1,LSL #12 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&5900000 + ORR a2,a2,#&1f8 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + LDR a2,[v2,#&104]! + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&3100000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&184] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&184] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&10000000 + ORR a2,a2,#&2200000 + ORR a2,a2,#2 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&184] + BL rr + LDR a2,[v1,#&1f4] + ADD a2,a2,#&17 + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&184] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + LDMDB fp,{v1-v5,fp,sp,lr} + B do_ins + +save_pixel_init + MOV ip,sp + STMDB sp!,{v1-v4,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a2,#&198] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&c + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins + MOV a2,v1 + MOV a1,v2 + BL x_block_move + ADD a3,v2,#&4c + SUB a2,a3,v2 + ORR v3,a2,#&1800000 + TEQ a1,#0 + BEQ |L004340.J4.save_pixel_init| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,v3 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #16 + LDR a2,[v1,#&220] + SUB a2,a2,#1 + ORR a1,a1,a2 + ORR a2,a1,#&2000000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + LDR a2,[v1,#&214] + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#&20 + MOV a1,v1 + LDMDB fp,{v1-v4,fp,sp,lr} + B do_ins +|L004340.J4.save_pixel_init| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BEQ |L00435c.J8.save_pixel_init| + LDR a1,[v2,#&104] + TEQ a1,#&20 + BEQ |L004384.J7.save_pixel_init| +|L00435c.J8.save_pixel_init| + LDR a1,[v1,#&158] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,v3 + MOV a1,v1 + BL do_ins +|L004384.J7.save_pixel_init| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L004434.J11.save_pixel_init| + LDR a1,[v1,#&18c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a2,v3,a1,LSL #16 + LDR a1,[v1,#&220] + ORR a1,a2,a1 + ORR a2,a1,#&2000000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&224] + CMP a1,#2 + BLE |L0043fc.J13.save_pixel_init| + LDR a1,[v1,#&18c] + BL rr + LDR a2,[v1,#&224] + SUB a2,a2,#2 + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&18c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins +|L0043fc.J13.save_pixel_init| + LDR a1,[v1,#&224] + CMP a1,#2 + BGE |L004434.J11.save_pixel_init| + LDR a1,[v1,#&18c] + BL rr + LDR a2,[v1,#&224] + RSB a2,a2,#2 + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&18c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins +|L004434.J11.save_pixel_init| + LDR a1,[v2,#&104]! + TEQ a1,#&20 + LDMEQDB fp,{v1-v4,fp,sp,pc}^ + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #16 + LDR a2,[v1,#&220] + SUB a2,a2,#1 + ORR a1,a1,a2 + ORR a2,a1,#&2000000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + LDR a2,[v1,#&214] + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&d80 + MOV a1,v1 + LDMDB fp,{v1-v4,fp,sp,lr} + B do_ins + +xloop_init + MOV ip,sp + STMDB sp!,{v1-v4,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a2,#&1a8] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a3,a1,#&4100000 + ADD a2,v2,#&2c + SUB a1,a2,v2 + ORR a1,a1,#&1800000 + ADD a2,a3,a1 + MOV a1,v1 + BL do_ins + MOV a2,v1 + MOV a1,v2 + BL simple_x_scale + TEQ a1,#0 + BNE |L004598.J4.xloop_init| + ADD a3,v2,#&30 + SUB a2,a3,v2 + ORR v3,a2,#&1800000 + LDR a1,[v1,#&1f4] + TEQ a1,#0 + BEQ |L004570.J6.xloop_init| + LDR a1,[v2,#&74] + TEQ a1,#4 + LDREQ a1,[v1,#&158] + BEQ |L004574.J14.xloop_init| +|L004570.J6.xloop_init| + LDR a1,[v1,#&1ac] +|L004574.J14.xloop_init| + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,v3 + MOV a1,v1 + BL do_ins +|L004598.J4.xloop_init| + MOV a2,v1 + MOV a1,v2 + BL x_block_move + TEQ a1,#0 + LDMEQDB fp,{v1-v4,fp,sp,pc}^ + LDR a1,[v1,#&1a8] + BL rr + LDR a2,[v1,#&214] + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&1a8] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + LDMDB fp,{v1-v4,fp,sp,lr} + B do_ins + +yloop_init + MOV ip,sp + STMDB sp!,{v1-v4,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&110] + TEQ a1,#0 + BEQ |L00462c.J4.yloop_init| + LDR a1,[v1,#&194] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&11c + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins +|L00462c.J4.yloop_init| + LDR a1,[v1,#&1b0] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a3,a1,#&4100000 + ADD a2,v2,#&18 + SUB a1,a2,v2 + ORR a1,a1,#&1800000 + ADD a2,a3,a1 + MOV a1,v1 + BL do_ins + MOV a2,v1 + MOV a1,v2 + BL simple_y_scale + TEQ a1,#0 + BNE |L0046a8.J6.yloop_init| + LDR a1,[v1,#&1b4] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a3,a1,#&4100000 + ADD a2,v2,#&1c + SUB a1,a2,v2 + ORR a1,a1,#&1800000 + ADD a2,a3,a1 + MOV a1,v1 + BL do_ins +|L0046a8.J6.yloop_init| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + ADD a3,v2,#4 + SUB a2,a3,v2 + ORR v3,a2,#&1800000 + TEQ a1,#&32 + BEQ |L004704.J8.yloop_init| + LDR a1,[v2,#&110] + TEQ a1,#0 + LDR a1,[v1,#&1b8] + BL rr + MOVNE a2,#&3a00000 + ADDNE a2,a2,#1 + ORRNE a2,a2,a1,LSL #12 + BNE |L0046fc.J20.yloop_init| + MOV v4,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,v3 +|L0046fc.J20.yloop_init| + MOV a1,v1 + BL do_ins +|L004704.J8.yloop_init| + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BEQ |L004748.J13.yloop_init| + LDR a1,[v1,#&1bc] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a1,v2,#&90 + SUB a1,a1,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + LDMDB fp,{v1-v4,fp,sp,lr} + B do_ins +|L004748.J13.yloop_init| + LDR a1,[v2,#&f4]! + AND a1,a1,#&ff + TEQ a1,#&32 + LDMNEDB fp,{v1-v4,fp,sp,pc}^ + LDR a1,[v1,#&1bc] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,v3 + MOV a1,v1 + LDMDB fp,{v1-v4,fp,sp,lr} + B do_ins + +fetch_pixel_unmasked + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a2 + LDR a2,[a1,#&f4] + AND a2,a2,#&ff + TEQ a2,#&32 + BNE |L00489c.J4.fetch_pixel_unmasked| + LDR a1,[a1,#&104] + TEQ a1,#&20 + BNE |L0047e4.J6.fetch_pixel_unmasked| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&18c] + BL rr + ORR a1,v2,a1 + ORR a2,a1,#&7900000 + MOV a1,v1 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_ins +|L0047e4.J6.fetch_pixel_unmasked| + TEQ a1,#&10 + BNE |L004840.J9.fetch_pixel_unmasked| + LDR a1,[v1,#&164] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&800 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&820 + MOV a1,v1 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_ins +|L004840.J9.fetch_pixel_unmasked| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&164] + BL rr + ORR a1,v2,a1,LSL #16 + LDR a2,[v1,#&218] + ORR a1,a1,a2 + ORR a2,a1,#&2000000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&190] + BL rr + ORR a2,v2,a1 + MOV a1,v1 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_ins +|L00489c.J4.fetch_pixel_unmasked| + LDR a1,[a1,#&74] + TEQ a1,#5 + BNE |L0048d0.J13.fetch_pixel_unmasked| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4900000 + MOV a1,v1 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_ins +|L0048d0.J13.fetch_pixel_unmasked| + TEQ a1,#4 + BNE |L00492c.J16.fetch_pixel_unmasked| + LDR a1,[v1,#&164] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&800 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&820 + MOV a1,v1 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_ins +|L00492c.J16.fetch_pixel_unmasked| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&164] + BL rr + ORR a2,v2,a1,LSL #16 + LDR a1,[v1,#&200] + ORR a1,a2,a1 + ORR a2,a1,#&2000000 + MOV a1,v1 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_ins + +fetch_pixel + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + MOV v3,a3 + LDR a1,[a2,#&1ec] + TEQ a1,#0 + BEQ |L0049ac.J4.fetch_pixel| + LDR a1,[v1,#&16c] + BL rr + MOV a2,#&3100000 + ADD a2,a2,#1 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + MOV a3,v3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch +|L0049ac.J4.fetch_pixel| + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_unmasked + LDR a1,[v1,#&1ec]! + LDMDB fp,{v1-v3,fp,sp,pc}^ + +fetch_pixel2 + MOV ip,sp + STMDB sp!,{v1-v4,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + MOV v3,a3 + LDR a1,[a1,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + MOVEQ a2,#4 + MOVEQ a1,#&37 + ADDEQ a1,a1,#&800 + BLEQ exit_c + LDR a1,[v1,#&1ec] + TEQ a1,#0 + BEQ |L004af0.J6.fetch_pixel2| + LDR a1,[v1,#&1f0] + TEQ a1,#0 + LDR a1,[v1,#&16c] + BL rr + LDR a2,[v1,#&204] + BEQ |L004aac.J8.fetch_pixel2| + ORR v4,a1,a2,LSL #7 + LDR a1,[v1,#&16c] + BL rr + ORR a1,v4,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&170] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&170] + BL rr + ORR a2,v4,a1,LSL #16 + LDR a1,[v1,#&204] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&16c] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&168] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a2,a1,#&f0000000 + ORR a2,a2,#&5b00000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&16c] + BL rr + MOV a2,#&3100000 + ADD a2,a2,#1 + ORR a2,a2,a1,LSL #16 + B |L004ad8.J22.fetch_pixel2| +|L004aac.J8.fetch_pixel2| + TEQ a2,#1 + MOVEQ a2,#&2000000 + ADDEQ a2,a2,#2 + BEQ |L004ad0.J11.fetch_pixel2| + LDR a2,[v1,#&208] + RSB a2,a2,#&20 + MOV a3,#&2000000 + ADD a3,a3,#1 + ORR a2,a3,a2,LSL #7 +|L004ad0.J11.fetch_pixel2| + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&1100000 +|L004ad8.J22.fetch_pixel2| + MOV a1,v1 + BL do_ins + MOV a3,v3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch +|L004af0.J6.fetch_pixel2| + LDR a1,[v2,#&74]! + TEQ a1,#5 + BNE |L004b20.J14.fetch_pixel2| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&5900000 + ORR a2,a2,#4 + B |L004b7c.J23.fetch_pixel2| +|L004b20.J14.fetch_pixel2| + TEQ a1,#4 + BNE |L004b4c.J17.fetch_pixel2| + LDR a1,[v1,#&164] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&820 + B |L004b7c.J23.fetch_pixel2| +|L004b4c.J17.fetch_pixel2| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1c0] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&164] + BL rr + LDR a2,[v1,#&1fc] + ORR a1,a1,a2,LSL #7 + ORR a1,v2,a1 + ORR a2,a1,#&20 +|L004b7c.J23.fetch_pixel2| + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ec]! + LDMDB fp,{v1-v4,fp,sp,pc}^ + +do_add_ordered_dither_gun + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a2 + RSB a1,a3,#&20 + SUB v2,a1,a4 + LDR a1,[a2,#&158] + BL rr + ORR v3,a1,v2,LSL #7 + LDR a1,[v1,#&184] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&1700000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&184] + BL rr + ORR a1,a1,v2,LSL #7 + ORR a1,v3,a1 + ORR a2,a1,#&30800000 + ORR a2,a2,#&20 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +add_ordered_dither + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v3,a1 + MOV v2,a2 + MOV v1,a3 + LDR a4,[a2,#&1f4] + TEQ a4,#0 + LDMEQDB fp,{v1-v3,fp,sp,pc}^ + MOV a4,v1,LSL #1 + BL do_add_ordered_dither_gun + MOV a4,v1 + MOV a3,v1 + MOV a2,v2 + MOV a1,v3 + BL do_add_ordered_dither_gun + MOV a3,v1 + MOV a2,v2 + MOV a1,v3 + MOV a4,#0 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_add_ordered_dither_gun + +translate_pixel + MOV ip,sp + STMDB sp!,{v1-v5,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a3,[a1,#&f4] + AND a3,a3,#&ff + MOV v5,#&1f + TEQ a3,#&32 + LDR v3,[a1,#&74] + BNE |L004d24.J4.translate_pixel| + LDR a1,[v1,#&1e8] + AND a1,a1,#7 + TEQ a1,#2 + LDMNEDB fp,{v1-v5,fp,sp,pc}^ + LDR a1,[v1,#&158] + BL rr + LDR a2,[v2,#&104] + SUB a2,v5,a2 + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&3800000 + ORR a2,a2,#&100 + ORR a2,a2,#2 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + LDR a2,[v2,#&104]! + SUB a2,v5,a2 + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&40 + MOV a1,v1 + LDMDB fp,{v1-v5,fp,sp,lr} + B do_ins +|L004d24.J4.translate_pixel| + LDR a3,[v1,#&1f4] + TEQ a3,#0 + BEQ |L004d40.J8.translate_pixel| + TEQ v3,#5 + MOVNE a3,#5 + MOVEQ a3,#8 + BL add_ordered_dither +|L004d40.J8.translate_pixel| + LDR a1,[v2,#&f8] + TEQ a1,#0 + BEQ |L004dd8.J13.translate_pixel| + CMP v3,#3 + MOVGT a2,#4 + MOVGT a1,#&9d + ADDGT a1,a1,#&800 + BLGT exit_c + LDR a1,[v2,#&104] + TEQ a1,#&10 + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a4] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1 + ORREQ a2,a1,#&7900000 + ORREQ a2,a2,#&100 + BEQ |L004f1c.J58.translate_pixel| + ORR a2,a1,#&7900000 + ORR a2,a2,#&180 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&420 + MOV a1,v1 + BL do_ins + MOV v3,#5 + B |L004de0.J21.translate_pixel| +|L004dd8.J13.translate_pixel| + TEQ v3,#5 + BNE |L004f2c.J20.translate_pixel| +|L004de0.J21.translate_pixel| + LDR a1,[v2,#&104] + TEQ a1,#&20 + BEQ |L0050d8.J23.translate_pixel| + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#&800 + ORR a2,a2,#&f8 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1 + LDR a1,[v1,#&17c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&380 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#&c00 + ORR a2,a2,#&f8 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&17c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&17c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&500 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#&f8 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&17c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&680 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&820 +|L004f1c.J58.translate_pixel| + MOV a1,v1 + BL do_ins + MOV v3,#4 + B |L004f34.J24.translate_pixel| +|L004f2c.J20.translate_pixel| + TEQ v3,#4 + BNE |L0050d8.J23.translate_pixel| +|L004f34.J24.translate_pixel| + LDR a1,[v2,#&104] + TEQ a1,#&20 + BNE |L0050d8.J23.translate_pixel| + LDR a1,[v1,#&158] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&800 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&d20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1 + LDR a1,[v1,#&17c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&980 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#&600 + ORR a2,a2,#&3e + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&17c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&17c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&520 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&580 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&17c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&17c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&c20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&180] + BL rr + ORR a2,v3,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&17c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&2a0 + MOV a1,v1 + BL do_ins + MOV v3,#5 +|L0050d8.J23.translate_pixel| + LDR a1,[v2,#&b4] + TEQ a1,#0 + BEQ |L005180.J26.translate_pixel| + LDR a1,[v1,#&210] + CMP a1,#3 + BGT |L005130.J28.translate_pixel| + CMP v3,#4 + MOVGT a2,#4 + MOVGT a1,#&f6 + ADDGT a1,a1,#&800 + BLGT exit_c + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a4] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&7d00000 + B |L005170.J59.translate_pixel| +|L005130.J28.translate_pixel| + CMP v3,#3 + MOVGT a2,#4 + MOVGT a1,#&fc + ADDGT a1,a1,#&800 + BLGT exit_c + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a4] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&7900000 + ORR a2,a2,#&100 +|L005170.J59.translate_pixel| + MOV a1,v1 + BL do_ins + LDR v3,[v1,#&210] + B |L005624.J35.translate_pixel| +|L005180.J26.translate_pixel| + TEQ v3,#4 + BNE |L005624.J35.translate_pixel| + LDR a1,[v1,#&210] + CMP a1,#4 + BGE |L005624.J35.translate_pixel| + MOV v4,#&3100000 + ADD v4,v4,#&10 + TEQ a1,#0 + BNE |L0051f8.J39.translate_pixel| + LDR a1,[v1,#&158] + BL rr + ORR a2,v4,a1,LSL #16 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV a2,#&3a00000 + ADD a2,a2,#1 + ORR a2,a2,a1,LSL #12 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV a2,#&3a00000 + ADD a2,a2,#&10000000 + ORR a2,a2,a1,LSL #12 + MOV a1,v1 + BL do_ins + MOV v3,#0 + B |L00527c.J41.translate_pixel| +|L0051f8.J39.translate_pixel| + TEQ a1,#1 + BNE |L00527c.J41.translate_pixel| + LDR a1,[v1,#&158] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&1a0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#3 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#3 + MOV a1,v1 + BL do_ins + MOV v3,#1 +|L00527c.J41.translate_pixel| + LDR a1,[v1,#&210] + TEQ a1,#2 + BNE |L005308.J44.translate_pixel| + LDR a1,[v1,#&158] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&120 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#7 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#7 + MOV a1,v1 + BL do_ins + MOV v3,#2 + B |L005624.J35.translate_pixel| +|L005308.J44.translate_pixel| + TEQ a1,#3 + BNE |L005624.J35.translate_pixel| + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#&c00 + ORR a2,a2,#&1c + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1 + LDR a1,[v1,#&17c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&520 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#&e0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&17c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&17c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&800000 + ORR a2,a2,#&2a0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#7 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&17c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&17c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&800000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&17c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&17c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&17c] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&800000 + ORR a2,a2,#&100 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV a2,#&3a00000 + ORR a2,a2,a1,LSL #12 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV a2,#&c40 + ADD a2,a2,#&3100000 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&13800000 + ORR a2,a2,#&80 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV a2,#&c20 + ADD a2,a2,#&3100000 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&13800000 + ORR a2,a2,#8 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + LDR a2,[pc, #L005728-.-8] + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&13800000 + ORR a2,a2,#&40 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + LDR a2,[pc, #L00572c-.-8] + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&13800000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + ORR a2,v4,a1,LSL #16 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&13800000 + ORR a2,a2,#&10 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV a2,#&3100000 + ADD a2,a2,#8 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&13800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&17c] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&2a0 + MOV a1,v1 + BL do_ins + MOV v3,#3 +|L005624.J35.translate_pixel| + LDR a1,[v1,#&210] + TEQ v3,a1 + MOVNE a2,#4 + MOVNE a1,#&56 + ADDNE a1,a1,#&900 + BLNE exit_c + LDR a1,[v1,#&1e8] + AND a1,a1,#7 + TEQ a1,#2 + BNE |L0056dc.J51.translate_pixel| + TEQ v3,#5 + BEQ |L0056dc.J51.translate_pixel| + LDR a1,[v1,#&158] + BL rr + LDR a2,[v2,#&104] + SUB a2,v5,a2 + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&3800000 + ORR a2,a2,#&100 + ORR a2,a2,#2 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + LDR a2,[v2,#&104] + SUB a2,v5,a2 + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&40 + MOV a1,v1 + BL do_ins +|L0056dc.J51.translate_pixel| + LDR a1,[v2,#&104] + LDR a2,[v2,#&100] + TEQ a1,a2 + LDMEQDB fp,{v1-v5,fp,sp,pc}^ + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + LDR a2,[v2,#&104]! + ORR a1,a1,a2,LSL #7 + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + MOV a1,v1 + LDMDB fp,{v1-v5,fp,sp,lr} + B do_ins +L005728 + DCD &03100c02 +L00572c + DCD &03100c01 + +save_pixel + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&104] + TEQ a1,#&20 + LDR a1,[a2,#&1e8] + BNE |L00591c.J4.save_pixel| + TEQ a1,#0 + BEQ |L0058f4.J6.save_pixel| + LDR a1,[v1,#&178] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4900000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1e8] + SUB a1,a1,#1 + CMP a1,#6 + ADDLS pc,pc,a1,LSL #2 + B |L005898.J8.save_pixel| + B |L0057d0.J14.save_pixel| + B |L005820.J13.save_pixel| + B |L005848.J12.save_pixel| + B |L005874.J11.save_pixel| + B |L005898.J8.save_pixel| + B |L0057fc.J10.save_pixel| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1e00000 + MOV a1,v1 + BL do_ins +|L0057d0.J14.save_pixel| + LDR a1,[v1,#&178] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v2,a1 + ORR a2,a1,#&1800000 + B |L005890.J54.save_pixel| +|L0057fc.J10.save_pixel| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1e00000 + MOV a1,v1 + BL do_ins +|L005820.J13.save_pixel| + LDR a1,[v1,#&178] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a2,v2,a1 + B |L005890.J54.save_pixel| +|L005848.J12.save_pixel| + LDR a1,[v1,#&178] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v2,a1 + ORR a2,a1,#&200000 + B |L005890.J54.save_pixel| +|L005874.J11.save_pixel| + LDR a1,[v1,#&178] + BL rr + MOV v2,a1 + LDR a1,[v1,#&178] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1e00000 +|L005890.J54.save_pixel| + MOV a1,v1 + BL do_ins +|L005898.J8.save_pixel| + LDR a1,[v1,#&178] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4800000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1e8] + TEQ a1,#7 + TEQNE a1,#6 + LDMNEDB fp,{v1-v3,fp,sp,pc}^ + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1e00000 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L0058f4.J6.save_pixel| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4800000 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L00591c.J4.save_pixel| + TEQ a1,#6 + TEQNE a1,#7 + BNE |L005994.J21.save_pixel| + LDR a1,[v2,#&100] + TEQ a1,#&10 + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + LDRNE a2,[v1,#&21c] + ORRNE a1,a1,a2 + ORRNE a2,a1,#&2200000 + BNE |L00598c.J55.save_pixel| + ORR a2,a1,#&2200000 + ORR a2,a2,#&ff + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2200000 + ORR a2,a2,#&c00 + ORR a2,a2,#&ff +|L00598c.J55.save_pixel| + MOV a1,v1 + BL do_ins +|L005994.J21.save_pixel| + LDR a1,[v1,#&1e8] + CMP a1,#7 + ADDLS pc,pc,a1,LSL #2 + B |L005b38.J28.save_pixel| + B |L0059c4.J36.save_pixel| + B |L005a44.J35.save_pixel| + B |L005a70.J34.save_pixel| + B |L005a98.J33.save_pixel| + B |L005ac4.J32.save_pixel| + B |L005b38.J28.save_pixel| + B |L005a70.J34.save_pixel| + B |L005a44.J35.save_pixel| +|L0059c4.J36.save_pixel| + LDR a1,[v1,#&1ec] + TEQ a1,#0 + BEQ |L005a44.J35.save_pixel| + LDR a1,[v2,#&100] + TEQ a1,#&10 + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + BNE |L005a2c.J39.save_pixel| + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&3c00000 + ORR a2,a2,#&ff + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&3c00000 + ORR a2,a2,#&c00 + ORR a2,a2,#&ff + B |L005a3c.J56.save_pixel| +|L005a2c.J39.save_pixel| + ORR a2,v3,a1,LSL #16 + LDR a1,[v1,#&21c] + ORR a1,a2,a1 + ORR a2,a1,#&3c00000 +|L005a3c.J56.save_pixel| + MOV a1,v1 + BL do_ins +|L005a44.J35.save_pixel| + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + B |L005b30.J57.save_pixel| +|L005a70.J34.save_pixel| + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a2,v3,a1 + B |L005b30.J57.save_pixel| +|L005a98.J33.save_pixel| + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&200000 + B |L005b30.J57.save_pixel| +|L005ac4.J32.save_pixel| + LDR a1,[v2,#&100] + TEQ a1,#&10 + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + BNE |L005b20.J42.save_pixel| + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2200000 + ORR a2,a2,#&ff + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2200000 + ORR a2,a2,#&c00 + ORR a2,a2,#&ff + B |L005b30.J57.save_pixel| +|L005b20.J42.save_pixel| + ORR a2,v3,a1,LSL #16 + LDR a1,[v1,#&21c] + ORR a1,a2,a1 + ORR a2,a1,#&2200000 +|L005b30.J57.save_pixel| + MOV a1,v1 + BL do_ins +|L005b38.J28.save_pixel| + LDR a1,[v1,#&1e8] + TEQ a1,#6 + TEQNE a1,#7 + LDMNEDB fp,{v1-v3,fp,sp,pc}^ + LDR a1,[v2,#&100]! + TEQ a1,#&10 + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #16 + BNE |L005bac.J49.save_pixel| + ORR a2,a1,#&2200000 + ORR a2,a2,#&ff + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2200000 + ORR a2,a2,#&c00 + ORR a2,a2,#&ff + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L005bac.J49.save_pixel| + LDR a2,[v1,#&21c] + ORR a1,a1,a2 + ORR a2,a1,#&2200000 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +save_pixel_opt + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a2 + LDR a1,[a1,#&100] + TEQ a1,#&10 + LDR a1,[a2,#&19c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + BNE |L005c30.J4.save_pixel_opt| + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&3c00000 + ORR a2,a2,#&ff + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&3c00000 + ORR a2,a2,#&c00 + ORR a2,a2,#&ff + B |L005c40.J9.save_pixel_opt| +|L005c30.J4.save_pixel_opt| + ORR a2,v2,a1,LSL #16 + LDR a1,[v1,#&21c] + ORR a1,a2,a1 + ORR a2,a1,#&3c00000 +|L005c40.J9.save_pixel_opt| + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1 + ORR a2,a1,#&1800000 + MOV a1,v1 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_ins + +save_pixel2 + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a2,#&1e8] + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&eb + ADDNE a1,a1,#&900 + BLNE exit_c + LDR a1,[v2,#&104] + TEQ a1,#&20 + BNE |L005ce0.J6.save_pixel2| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&5800000 + ORR a2,a2,#4 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L005ce0.J6.save_pixel2| + LDR a1,[v1,#&1ec] + TEQ a1,#0 + BEQ |L005d84.J9.save_pixel2| + LDR a1,[v2,#&100] + TEQ a1,#&10 + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + BNE |L005d4c.J11.save_pixel2| + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&3c00000 + ORR a2,a2,#&800 + ORR a2,a2,#&ff + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&3c00000 + ORR a2,a2,#&400 + ORR a2,a2,#&ff + B |L005d7c.J19.save_pixel2| +|L005d4c.J11.save_pixel2| + ORR a2,v3,a1,LSL #16 + LDR a1,[v2,#&100] + TEQ a1,#1 + MOVEQ a1,#&2000000 + ADDEQ a1,a1,#2 + BEQ |L005d74.J14.save_pixel2| + RSB a3,a1,#&20 + LDR a1,[v1,#&21c] + ORR a1,a1,a3,LSL #7 + ORR a1,a1,#&2000000 +|L005d74.J14.save_pixel2| + ORR a1,a2,a1 + ORR a2,a1,#&1c00000 +|L005d7c.J19.save_pixel2| + MOV a1,v1 + BL do_ins +|L005d84.J9.save_pixel2| + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + LDR a2,[v2,#&100]! + ORR a1,a1,a2,LSL #7 + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +fetch_pixel_inc + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BEQ |L005ee4.J4.fetch_pixel_inc| + LDR a1,[v2,#&74] + TEQ a1,#5 + BNE |L005e14.J6.fetch_pixel_inc| + LDR a1,[v1,#&15c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2800000 + ORR a2,a2,#4 + B |L005edc.J25.fetch_pixel_inc| +|L005e14.J6.fetch_pixel_inc| + LDR a1,[v1,#&164] + BL rr + LDR a2,[v1,#&1fc] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&164] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1f0] + TEQ a1,#0 + MOVNE a1,#0 + MOVEQ a1,#1 + LDR a2,[v1,#&1ec] + TST a1,a2 + BEQ |L005e88.J9.fetch_pixel_inc| + LDR a1,[v1,#&16c] + BL rr + LDR a2,[v1,#&1fc] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&16c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins +|L005e88.J9.fetch_pixel_inc| + LDR a1,[v1,#&160] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&160] + BL rr + ORR a2,v3,a1,LSL #16 + LDR a1,[v1,#&1fc] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&164] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&f0000000 + ORR a2,a2,#&5b00000 + ORR a2,a2,#4 +|L005edc.J25.fetch_pixel_inc| + MOV a1,v1 + BL do_ins +|L005ee4.J4.fetch_pixel_inc| + LDR a1,[v1,#&1ec] + TEQ a1,#0 + LDMEQDB fp,{v1-v3,fp,sp,pc}^ + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L005f0c.J17.fetch_pixel_inc| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L005f98.J16.fetch_pixel_inc| +|L005f0c.J17.fetch_pixel_inc| + LDR a1,[v1,#&16c] + BL rr + LDR a2,[v1,#&204] + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&16c] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&170] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&170] + BL rr + ORR a1,v2,a1,LSL #16 + LDR a2,[v1,#&204] + ORR a1,a1,a2,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&16c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&168] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&f0000000 + ORR a2,a2,#&5b00000 + ORR a2,a2,#4 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L005f98.J16.fetch_pixel_inc| + LDR a1,[v2,#&74]! + TEQ a1,#5 + MOVEQ a2,#4 + MOVEQ a1,#&31 + ADDEQ a1,a1,#&a00 + BLEQ exit_c + LDR a1,[v1,#&16c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v2,a1,LSL #16 + ORR v2,a1,#&4100000 + LDR a1,[v1,#&174] + BL rr + ORR a1,a1,#&3800000 + ORR a1,v2,a1 + ORR a2,a1,#&f0000000 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +fetch_pixel_inc2 + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&74] + TEQ a1,#5 + BNE |L006030.J4.fetch_pixel_inc2| + LDR a1,[v1,#&15c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2800000 + ORR a2,a2,#8 + B |L006128.J24.fetch_pixel_inc2| +|L006030.J4.fetch_pixel_inc2| + LDR a1,[v2,#&78] + TEQ a1,#4 + LDR a1,[v1,#&164] + BL rr + BNE |L006060.J7.fetch_pixel_inc2| + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&5b00000 + ORR a2,a2,#4 + B |L006128.J24.fetch_pixel_inc2| +|L006060.J7.fetch_pixel_inc2| + LDR a2,[v1,#&1fc] + MOV a2,a2,LSL #1 + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&164] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1f0] + TEQ a1,#0 + MOVNE a2,#0 + MOVEQ a2,#1 + LDR a1,[v1,#&1ec] + TST a2,a1 + BEQ |L0060d4.J10.fetch_pixel_inc2| + LDR a1,[v1,#&16c] + BL rr + LDR a2,[v1,#&1fc] + MOV a2,a2,LSL #1 + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&16c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins +|L0060d4.J10.fetch_pixel_inc2| + LDR a1,[v1,#&160] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&160] + BL rr + ORR a1,v3,a1,LSL #16 + LDR a2,[v1,#&1fc] + ORR a1,a1,a2 + ORR a2,a1,#&2500000 + ORR a2,a2,#&200 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&164] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&f0000000 + ORR a2,a2,#&5b00000 + ORR a2,a2,#4 +|L006128.J24.fetch_pixel_inc2| + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ec] + TEQ a1,#0 + LDMEQDB fp,{v1-v3,fp,sp,pc}^ + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BEQ |L0061d4.J17.fetch_pixel_inc2| + LDR a1,[v1,#&16c] + BL rr + LDR a2,[v1,#&204] + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&16c] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&170] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&170] + BL rr + ORR a2,v2,a1,LSL #16 + LDR a1,[v1,#&204] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&16c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&168] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&f0000000 + ORR a2,a2,#&5b00000 + ORR a2,a2,#4 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L0061d4.J17.fetch_pixel_inc2| + LDR a1,[v2,#&74]! + TEQ a1,#5 + MOVEQ a2,#4 + MOVEQ a1,#&6a + ADDEQ a1,a1,#&a00 + BLEQ exit_c + LDR a1,[v1,#&16c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v2,a1,LSL #16 + ORR v2,a1,#&4100000 + LDR a1,[v1,#&174] + BL rr + ORR a1,a1,#&3800000 + ORR a1,v2,a1 + ORR a2,a1,#&f0000000 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +odither_inc + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a2 + MOV v2,a3 + LDR a1,[a2,#&1f4] + TEQ a1,#0 + LDMEQDB fp,{v1-v3,fp,sp,pc}^ + LDR a1,[v1,#&184] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&184] + BL rr + ORR a2,v3,a1,LSL #16 + LDR a1,[v1,#&1f4] + SUB a3,a1,v2 + MOV a1,#1 + ORR a1,a2,a1,LSL a3 + ORR a2,a1,#&2200000 + ORR a2,a2,#&400 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +skip_current_output_words + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a2 + LDR a1,[a1,#&104] + MOV v2,#&3a00000 + TEQ a1,#&20 + BNE |L0062f0.J4.skip_current_output_words| + LDR a1,[v1,#&198] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&800000 + ORR a2,a2,#&100 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + ORR a2,v2,a1,LSL #12 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L0062f0.J4.skip_current_output_words| + LDR a1,[v1,#&1ac] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&400000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + LDR a2,[v1,#&214] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1 + LDR a1,[v1,#&178] + BL rr + ORR v3,v3,a1,LSL #8 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&70 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + ORR a2,v2,a1,LSL #12 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + LDR a2,[v1,#&224] + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&178] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1b00000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&198] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v2,a1 + ORR a2,a1,#&10800000 + ORR a2,a2,#&100 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4900000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + LDR a2,[v1,#&224] + ORR a1,a1,a2,LSL #7 + ORR a1,v2,a1 + ORR a2,a1,#&400000 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +skip_some_pixels + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a2 + LDR a1,[a2,#&1ac] + BL rr + LDR a2,[v1,#&214] + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&178] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1 + LDR a1,[v1,#&178] + BL rr + ORR v2,v2,a1,LSL #8 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&70 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v2,a1 + ORR a2,a1,#&400000 + ORR a2,a2,#&d80 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV a2,#&3a00000 + ORR a2,a2,a1,LSL #12 + MOV a1,v1 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_ins + +save_pixel_inc + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&104] + TEQ a1,#&20 + BNE |L006590.J4.save_pixel_inc| + LDR a1,[v1,#&198] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L0066dc.J8.save_pixel_inc| + B |L0066ac.J16.save_pixel_inc| +|L006590.J4.save_pixel_inc| + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L0065f8.J9.save_pixel_inc| + LDR a1,[v1,#&164] + BL rr + LDR a2,[v2,#&100] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&164] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins +|L0065f8.J9.save_pixel_inc| + LDR a1,[v1,#&1a0] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a2,v3,a1,LSL #16 + LDR a1,[v2,#&100] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&c0000000 + ORR a2,a2,#&34800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1e8] + TEQ a1,#0 + LDREQ a1,[v1,#&1ec] + TEQEQ a1,#0 + LDR a1,[v1,#&19c] + BL rr + MOVEQ a2,#&1a00000 + ORREQ a1,a2,a1,LSL #12 + ORREQ a2,a1,#&f2000000 + BEQ |L006694.J19.save_pixel_inc| + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&f0000000 + ORR a2,a2,#&4900000 +|L006694.J19.save_pixel_inc| + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L0066dc.J8.save_pixel_inc| +|L0066ac.J16.save_pixel_inc| + LDR a1,[v1,#&164] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&18c] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&7900000 + MOV a1,v1 + BL do_ins +|L0066dc.J8.save_pixel_inc| + MOV a2,v1 + MOV a1,v2 + MOV a3,#0 + LDMDB fp,{v1-v3,fp,sp,lr} + B odither_inc + +save_pixel_inc2 + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&104] + TEQ a1,#&20 + BNE |L006734.J4.save_pixel_inc2| + LDR a1,[v1,#&198] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2800000 + ORR a2,a2,#8 + B |L006858.J18.save_pixel_inc2| +|L006734.J4.save_pixel_inc2| + LDR a1,[v2,#&100] + TEQ a1,#&10 + LDR a1,[v1,#&19c] + BL rr + BNE |L00679c.J7.save_pixel_inc2| + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ec] + TEQ a1,#0 + LDR a1,[v1,#&19c] + BL rr + MOVEQ a2,#&3a00000 + ORREQ a2,a2,a1,LSL #12 + BEQ |L006858.J18.save_pixel_inc2| + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4900000 + B |L006858.J18.save_pixel_inc2| +|L00679c.J7.save_pixel_inc2| + LDR a2,[v2,#&100] + MOV a2,a2,LSL #1 + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v3,a1,LSL #16 + LDR a2,[v2,#&100] + ORR a1,a1,a2 + ORR a2,a1,#&2500000 + ORR a2,a2,#&200 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&c0000000 + ORR a2,a2,#&34800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ec] + TEQ a1,#0 + LDR a1,[v1,#&19c] + BL rr + MOVEQ a2,#&1a00000 + ORREQ a1,a2,a1,LSL #12 + ORREQ a2,a1,#&f2000000 + BEQ |L006858.J18.save_pixel_inc2| + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&f0000000 + ORR a2,a2,#&4900000 +|L006858.J18.save_pixel_inc2| + MOV a1,v1 + BL do_ins + MOV a2,v1 + MOV a1,v2 + MOV a3,#0 + LDMDB fp,{v1-v3,fp,sp,lr} + B odither_inc + +plot_current_output_words + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + MOV v5,a3 + LDR a1,[a1,#&104] + ADD v4,a2,#&110 + ADD v3,a2,#&108 + TEQ a1,#&20 + BNE |L006ab0.J4.plot_current_output_words| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + CMP v5,#&15 + BGE |L006968.J6.plot_current_output_words| + MOV v6,#1 + CMP v5,#1 + LDMLEDB fp,{v1-v6,fp,sp,pc}^ +|L006904.J8.plot_current_output_words| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&14800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&10000000 + ORR a2,a2,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + ADD v6,v6,#1 + CMP v6,v5 + BLT |L006904.J8.plot_current_output_words| + LDMDB fp,{v1-v6,fp,sp,pc}^ +|L006968.J6.plot_current_output_words| + LDR a1,[v1,#&1ac] + BL rr + MOV v2,#&3500000 + ADD v2,v2,#&a + ORR a2,v2,a1,LSL #16 + MOV a1,v1 + BL do_ins + MOV a3,v4 + MOV a1,v1 + MOV a2,#&da000000 + BL do_branch + MOV a2,v3 + MOV a1,v1 + BL define_label + MOV v6,#0 +|L0069a4.J13.plot_current_output_words| + LDR a1,[v1,#&158] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a2,a1,#&4800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + ADD v6,v6,#1 + CMP v6,#&a + BLT |L0069a4.J13.plot_current_output_words| + LDR a1,[v1,#&1ac] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a2,a1,#&2400000 + ORR a2,a2,#&a + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + ORR a2,v2,a1,LSL #16 + MOV a1,v1 + BL do_ins + MOV a3,v3 + MOV a1,v1 + MOV a2,#&ca000000 + BL do_branch + MOV a2,v4 + MOV a1,v1 + BL define_label + LDR a1,[v1,#&1ac] + BL rr + MOV a2,#&3500000 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + MOV v6,#0 +|L006a4c.J15.plot_current_output_words| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&14800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&10000000 + ORR a2,a2,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + ADD v6,v6,#1 + CMP v6,#&a + BLT |L006a4c.J15.plot_current_output_words| + LDMDB fp,{v1-v6,fp,sp,pc}^ +|L006ab0.J4.plot_current_output_words| + LDR a1,[v1,#&1ac] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR v5,v5,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v5,a1 + ORR a2,a1,#&400000 + MOV a1,v1 + BL do_ins + ADD a2,v1,#&100 + MOV v6,a2 + MOV a1,v1 + BL define_label + MOV a2,v1 + MOV a1,v2 + BL save_pixel_opt + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR v5,a1,a2,LSL #7 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v5,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a2,v5,a1,LSL #16 + LDR a1,[v2,#&100] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + MOV a3,v3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL save_pixel_opt + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR v5,a1,a2,LSL #7 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v5,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v5,a1,LSL #16 + LDR a2,[v2,#&100] + ORR a1,a1,a2,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + MOV a3,v4 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL save_pixel_opt + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR v5,a1,a2,LSL #7 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v5,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a2,v5,a1,LSL #16 + LDR a1,[v2,#&100] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + ADD a3,v1,#&118 + MOV v5,a3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL save_pixel_opt + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR a2,a1,a2,LSL #7 + STR a2,[sp,#-4]! + LDR a1,[v1,#&19c] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1a0] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + LDR a2,[v2,#&100] + ORR a1,a1,a2,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + MOV a3,v6 + MOV a1,v1 + MOV a2,#&1a000000 + BL do_branch + MOV a2,v3 + MOV a1,v1 + BL define_label + MOV a2,v4 + MOV a1,v1 + BL define_label + MOV a2,v5 + MOV a1,v1 + BL define_label + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + LDR a2,[v1,#&224] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1b00000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + ADD a3,v1,#&128 + MOV v3,a3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + LDR v6,[v2,#&104] + CMP v6,#&20 + BGE |L006dbc.J19.plot_current_output_words| +|L006d7c.J18.plot_current_output_words| + LDR a1,[v1,#&158] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR v4,v4,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,a1,v6,LSL #7 + ORR a1,v4,a1 + ORR a2,a1,#&1800000 + MOV a1,v1 + BL do_ins + MOV v6,v6,LSL #1 + CMP v6,#&20 + BLT |L006d7c.J18.plot_current_output_words| +|L006dbc.J19.plot_current_output_words| + ADD a2,v1,#&120 + MOV v4,a2 + MOV a1,v1 + BL define_label + LDR a1,[v1,#&158] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a2,a1,#&4800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a2,v5,a1,LSL #16 + LDR a1,[v1,#&220] + ORR a1,a2,a1 + ORR a2,a1,#&2400000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + MOV a3,v4 + MOV a1,v1 + MOV a2,#&1a000000 + BL do_branch + LDR a1,[v2,#&100]! + TEQ a1,#&10 + LDR a1,[v1,#&158] + BL rr + BNE |L006eb0.J22.plot_current_output_words| + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&800 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&820 + B |L006ecc.J32.plot_current_output_words| +|L006eb0.J22.plot_current_output_words| + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a2,v2,a1,LSL #16 + LDR a1,[v1,#&21c] + ORR a1,a2,a1 + ORR a2,a1,#&2000000 +|L006ecc.J32.plot_current_output_words| + MOV a1,v1 + BL do_ins + MOV a2,v3 + MOV a1,v1 + BL define_label + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4900000 + MOV a1,v1 + LDMDB fp,{v1-v6,fp,sp,lr} + B do_ins + +plot_some_pixels + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + ADD a2,a2,#&130 + MOV v6,a2 + MOV a1,v1 + BL define_label + MOV a2,v1 + MOV a1,v2 + BL save_pixel_opt + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a2,v3,a1,LSL #16 + LDR a1,[v2,#&100] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + ADD a3,v1,#&138 + MOV v5,a3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL save_pixel_opt + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v3,a1,LSL #16 + LDR a2,[v2,#&100] + ORR a1,a1,a2,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + ADD a3,v1,#&140 + MOV v4,a3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL save_pixel_opt + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v3,a1,LSL #16 + LDR a2,[v2,#&100] + ORR a1,a1,a2,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + ADD a3,v1,#&148 + MOV v3,a3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL save_pixel_opt + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR a2,a1,a2,LSL #7 + STR a2,[sp,#-4]! + LDR a1,[v1,#&19c] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1a0] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + LDR a2,[v2,#&100]! + ORR a1,a1,a2,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + MOV a3,v6 + MOV a1,v1 + MOV a2,#&1a000000 + BL do_branch + MOV a2,v5 + MOV a1,v1 + BL define_label + MOV a2,v4 + MOV a1,v1 + BL define_label + MOV a2,v3 + MOV a1,v1 + LDMDB fp,{v1-v6,fp,sp,lr} + B define_label + +arbitrary_add + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a4 + MOV ip,#1 + MOV a4,#0 + LDR v3,[fp,#4] + CMP v3,#0 + BGE |L007228.J4.arbitrary_add| + RSB v3,v3,#0 + TEQ a2,#0 + MOVNE a2,a4 + MOVEQ a2,ip +|L007228.J4.arbitrary_add| + TEQ v3,#0 + BNE |L00724c.J9.arbitrary_add| + TEQ a3,#0 + LDMEQDB fp,{v1-v6,fp,sp,pc}^ + MOV a2,#&3500000 + LDR a3,[v1,#0] + ORR a2,a2,a3,LSL #16 + LDMDB fp,{v1-v6,fp,sp,lr} + B do_ins +|L00724c.J9.arbitrary_add| + TEQ a2,#0 + MOVEQ v6,#&400000 + MOVNE v6,#&800000 + TEQ a3,#0 + MOVEQ v5,a4 + MOVNE v5,#&100000 + MOV v4,#0 +|L007268.J20.arbitrary_add| + CMP v3,#&ff + BLE |L007288.J23.arbitrary_add| + TST v3,#3 + BNE |L007288.J23.arbitrary_add| +|L007278.J25.arbitrary_add| + MOV v3,v3,ASR #2 + ADD v4,v4,#2 + TST v3,#3 + BEQ |L007278.J25.arbitrary_add| +|L007288.J23.arbitrary_add| + AND a2,v3,#&ff + BICS v3,v3,#&ff + MOVNE a1,#0 + MOVEQ a1,#1 + TEQ a1,#0 + MOVNE a1,v5 + ORR a3,a1,v6 + LDR a1,[v1,#0] + ORR a3,a3,a1,LSL #12 + ORR a1,a3,a1,LSL #16 + ORR a1,a1,a2 + RSB a2,v4,#&20 + AND a2,a2,#&1e + ORR a1,a1,a2,LSL #7 + ORR a2,a1,#&2000000 + MOV a1,v2 + BL do_ins + TEQ v3,#0 + BNE |L007268.J20.arbitrary_add| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +init_word_registers + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + LDRNE a1,[v2,#&74] + TEQNE a1,#5 + BEQ |L0073b0.J4.init_word_registers| + LDR a1,[v1,#&164] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,#&800000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&160] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&da0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&164] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR v3,v3,a1,LSL #8 + LDR a1,[v1,#&164] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&70 + MOV a1,v1 + BL do_ins +|L0073b0.J4.init_word_registers| + LDR a1,[v1,#&1ec] + TEQ a1,#0 + BEQ |L0074b0.J8.init_word_registers| + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L0073d8.J11.init_word_registers| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L00744c.J10.init_word_registers| +|L0073d8.J11.init_word_registers| + LDR a1,[v1,#&16c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&168] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,#&800000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&170] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&da0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#&20 + B |L007474.J25.init_word_registers| +|L00744c.J10.init_word_registers| + LDR a1,[v1,#&16c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&174] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&7900000 +|L007474.J25.init_word_registers| + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&16c] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR v3,v3,a1,LSL #8 + LDR a1,[v1,#&16c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&70 + MOV a1,v1 + BL do_ins +|L0074b0.J8.init_word_registers| + LDR a1,[v2,#&104] + TEQ a1,#&20 + LDMEQDB fp,{v1-v3,fp,sp,pc}^ + LDR a1,[v1,#&1e8] + TEQ a1,#0 + LDREQ a1,[v1,#&1ec] + TEQEQ a1,#0 + BNE |L00757c.J17.init_word_registers| + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1b00000 + ORR a2,a2,#&da0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a1,a1,#&800000 + ORR a2,a1,#&10000000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR v2,v2,a1,LSL #8 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&10000000 + ORR a2,a2,#&1a00000 + ORR a2,a2,#&10 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV a2,#&1a00000 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&f2000000 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L00757c.J17.init_word_registers| + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,#&800000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&da0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR v3,v3,a1,LSL #8 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&70 + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&f4]! + AND a1,a1,#&ff + TEQ a1,#&32 + LDMNEDB fp,{v1-v3,fp,sp,pc}^ + LDR a1,[v1,#&164] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&18c] + BL rr + ORR a1,v2,a1 + ORR a2,a1,#&7900000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&164] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR v2,v2,a1,LSL #8 + LDR a1,[v1,#&164] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&70 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +align16 + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a2 + LDR a1,[a2,#&10] + TST a1,#1 + LDMEQDB fp,{v1,v2,fp,sp,pc}^ +|L0076bc.J4.align16| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&10] + TST a1,#1 + BNE |L0076bc.J4.align16| + LDMDB fp,{v1,v2,fp,sp,pc}^ + +loop_x + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + SUB sp,sp,#&24 + BL x_block_move + TEQ a1,#0 + BEQ |L007758.J4.loop_x| + LDR a1,[v1,#&1dc] + BL rr + MOV v2,a1 + LDR a1,[v1,#&1d8] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&188] + BL rr + MOV v2,a1 + LDR a1,[v1,#&1dc] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + B |L008670.J80.loop_x| +|L007758.J4.loop_x| + MOV a2,v1 + MOV a1,v2 + BL init_word_registers + MOV a2,v1 + MOV a1,v2 + BL simple_x_scale + ADD v5,v1,#&30 + TEQ a1,#0 + BEQ |L007cb8.J7.loop_x| + LDR a1,[v2,#&104] + TEQ a1,#&20 + BEQ |L00785c.J9.loop_x| + LDR a1,[v1,#&1a0] + BL rr + MOV a2,a1,LSL #16 + LDR a1,[v2,#&100] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&3100000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + ADD a3,v1,#&70 + MOV v3,a3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + ADD a3,v1,#&78 + MOV v6,a3 + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel + MOV v4,a1 + MOV a2,v1 + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel + TEQ v4,#0 + MOVNE a2,v6 + MOVNE a1,v1 + BLNE define_label + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc + MOV a2,v1 + MOV a1,v2 + BL save_pixel_inc + LDR a1,[v1,#&1a8] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&1a8] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + MOV a3,v5 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v3 + MOV a1,v1 + BL define_label +|L00785c.J9.loop_x| + ADD v3,v1,#&a0 + LDR a1,[v2,#&74] + TEQ a1,#5 + BEQ |L0078a0.J13.loop_x| + LDR a1,[v1,#&160] + BL rr + MOV a2,a1,LSL #16 + LDR a1,[v1,#&1fc] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&3100000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + MOV a3,v3 + MOV a1,v1 + MOV a2,#&1a000000 + BL do_branch +|L0078a0.J13.loop_x| + ADD a3,v1,#&88 + MOV v6,a3 + MOV a1,v1 + MOV a2,#&a000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL align16 + ADD a2,v1,#&80 + MOV a1,v1 + STR a2,[sp,#&20] + BL define_label + ADD a3,v1,#&90 + MOV a2,v1 + MOV a1,v2 + STR a3,[sp,#&1c] + BL fetch_pixel + MOV v4,a1 + MOV a2,v1 + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel + TEQ v4,#0 + MOVNE a1,v1 + LDRNE a2,[sp,#&1c] + BLNE define_label + MOV a2,v1 + MOV a1,v2 + MOV a3,#0 + BL odither_inc + ADD a3,v1,#&98 + MOV a2,v1 + MOV a1,v2 + STR a3,[sp,#&18] + BL fetch_pixel2 + MOV v4,a1 + MOV a2,v1 + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel2 + TEQ v4,#0 + MOVNE a1,v1 + LDRNE a2,[sp,#&18] + BLNE define_label + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc2 + MOV a2,v1 + MOV a1,v2 + BL save_pixel_inc2 + MOV a2,v6 + MOV a1,v1 + BL define_label + LDR a1,[v1,#&1a8] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&1a8] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#2 + MOV a1,v1 + BL do_ins + MOV a1,v1 + MOV a2,#&aa000000 + LDR a3,[sp,#&20] + BL do_branch + LDR a1,[v2,#&74] + TEQ a1,#5 + BEQ |L007c14.J32.loop_x| + ADD a3,v1,#&c8 + MOV v4,a3 + MOV a1,v1 + MOV a2,#&a000000 + BL do_branch + MOV a2,v3 + MOV a1,v1 + BL define_label + LDR a1,[v2,#&74] + TEQ a1,#5 + BNE |L007a18.J21.loop_x| + LDR a1,[v1,#&15c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2400000 + ORR a2,a2,#4 + B |L007a68.J76.loop_x| +|L007a18.J21.loop_x| + LDR a1,[v1,#&164] + BL rr + LDR a2,[v1,#&1f8] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&164] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&160] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&160] + BL rr + ORR a1,v3,a1,LSL #16 + LDR a2,[v1,#&1f8] + ORR a1,a1,a2,LSL #1 + ORR a2,a1,#&2800000 + ORR a2,a2,#&300 +|L007a68.J76.loop_x| + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ec] + TEQ a1,#0 + BEQ |L007ae0.J24.loop_x| + LDR a1,[v1,#&16c] + BL rr + LDR a2,[v1,#&204] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&16c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BEQ |L007ae0.J24.loop_x| + LDR a1,[v1,#&170] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&170] + BL rr + ORR a2,v3,a1,LSL #16 + LDR a1,[v1,#&204] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&2800000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins +|L007ae0.J24.loop_x| + ADD a3,v1,#&b0 + MOV v3,a3 + MOV a1,v1 + MOV a2,#&a000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL align16 + ADD a2,v1,#&a8 + MOV a1,v1 + STR a2,[sp,#&14] + BL define_label + ADD a3,v1,#&b8 + MOV a2,v1 + MOV a1,v2 + STR a3,[sp,#&10] + BL fetch_pixel2 + MOV v6,a1 + MOV a2,v1 + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel + TEQ v6,#0 + MOVNE a1,v1 + LDRNE a2,[sp,#&10] + BLNE define_label + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc2 + MOV a2,v1 + MOV a1,v2 + MOV a3,#0 + BL odither_inc + ADD a3,v1,#&c0 + MOV a2,v1 + MOV a1,v2 + STR a3,[sp,#&c] + BL fetch_pixel + MOV v6,a1 + MOV a2,v1 + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel2 + TEQ v6,#0 + MOVNE a1,v1 + LDRNE a2,[sp,#&c] + BLNE define_label + MOV a2,v1 + MOV a1,v2 + BL save_pixel_inc2 + MOV a2,v3 + MOV a1,v1 + BL define_label + LDR a1,[v1,#&1a8] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a8] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#2 + MOV a1,v1 + BL do_ins + MOV a1,v1 + MOV a2,#&aa000000 + LDR a3,[sp,#&14] + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc + MOV a2,v4 + MOV a1,v1 + BL define_label +|L007c14.J32.loop_x| + LDR a1,[v1,#&1a8] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a8] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2900000 + ORR a2,a2,#2 + MOV a1,v1 + BL do_ins + ADD a3,v1,#&d8 + MOV v4,a3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + ADD a3,v1,#&d0 + MOV v3,a3 + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel + MOV v6,a1 + MOV a2,v1 + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel + TEQ v6,#0 + MOVNE a2,v3 + MOVNE a1,v1 + BLNE define_label + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc + MOV a2,v1 + MOV a1,v2 + BL save_pixel_inc + MOV a2,v4 + MOV a1,v1 + BL define_label + B |L0084e0.J35.loop_x| +|L007cb8.J7.loop_x| + LDR a1,[v1,#&1f4] + ADD a3,v1,#&38 + ADD v3,v1,#&28 + ADD v6,v1,#&40 + ADD v4,v1,#&1ac + TEQ a1,#0 + STR a3,[sp,#8] + BEQ |L007e28.J36.loop_x| + ADD a2,v2,#&40 + LDMIA a2,{a1,a2} + SUB a3,a2,a1 + CMP a3,a1 + BLE |L007e28.J36.loop_x| + MOV a4,a2 + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#0 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v3 + MOV a1,v1 + BL define_label + LDR a4,[v2,#&44] + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#0 + MOV a2,#1 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v1 + MOV a1,v2 + LDR a3,[sp,#8] + BL fetch_pixel + STR a1,[sp,#0] + LDR a4,[v2,#&40] + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#1 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v6 + MOV a1,v1 + BL define_label + MOV a2,v1 + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel_inc + LDR a1,[v1,#&1a8] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1a8] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + MOV a3,v5 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_unmasked + LDR a4,[v2,#&40] + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#1 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a3,v6 + MOV a1,v1 + MOV a2,#&5a000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc + B |L0080c4.J50.loop_x| +|L007e28.J36.loop_x| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BEQ |L008110.J40.loop_x| + LDR a1,[v2,#&40] + LDR a2,[v2,#&68] + BL |__rt_sdiv| + TEQ a2,#0 + BNE |L008110.J40.loop_x| + CMP a1,#4 + BLE |L008110.J40.loop_x| + LDR a2,[v1,#&1e8] + TEQ a2,#0 + BNE |L008110.J40.loop_x| + MOV v6,a1 + MOV a4,a1 + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#0 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v3 + MOV a1,v1 + BL define_label + LDR a1,[v1,#&1a8] + BL rr + MOV a2,#&3300000 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + ADD a2,v1,#&e0 + MOV a1,v1 + BL define_label + MOV a3,v5 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a4,v6 + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#0 + MOV a2,#1 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v1 + MOV a1,v2 + LDR a3,[sp,#8] + BL fetch_pixel + MOV a2,v1 + STR a1,[sp,#0] + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc + LDR a1,[v1,#&1a8] + BL rr + MOV a2,a1 + STR a2,[sp,#-4]! + LDR a1,[v1,#&178] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a8] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1a8] + BL rr + LDR a2,[sp,#0] + ORR a2,a2,a1,LSL #16 + STR a2,[sp,#0] + LDR a1,[v1,#&1ac] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1 + ORR a2,a1,#&500000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a8] + BL rr + MOV a2,#&3a00000 + ADD a2,a2,#&40000000 + ORR a2,a2,a1,LSL #12 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV a2,a1 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1ac] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&40000000 + ORR a2,a2,#&1a00000 + MOV a1,v1 + BL do_ins + ADD a2,v1,#&f0 + LDR a1,[v2,#&104] + TEQ a1,#&20 + STR a2,[sp,#4] + BEQ |L0080a8.J45.loop_x| + LDR a1,[v1,#&1a0] + BL rr + MOV a2,a1 + STR a2,[sp,#-4]! + LDR a1,[v1,#&178] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&1b00000 + ORR a2,a2,#&da0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV a2,#&1a00000 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&f2000000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&100] + TEQ a1,#1 + BEQ |L00806c.J47.loop_x| + LDR a1,[v1,#&178] + BL rr + LDR a2,[v1,#&214] + ORR a2,a1,a2,LSL #7 + STR a2,[sp,#-4]! + LDR a1,[v1,#&178] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins +|L00806c.J47.loop_x| + LDR a1,[v1,#&178] + BL rr + MOV a2,a1 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1ac] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&1500000 + MOV a1,v1 + BL do_ins + MOV a1,v1 + MOV a2,#&ba000000 + LDR a3,[sp,#4] + BL do_branch +|L0080a8.J45.loop_x| + MOV a3,v6 + MOV a2,v1 + MOV a1,v2 + BL plot_current_output_words + LDR a1,[v2,#&104] + TEQ a1,#&20 + BNE |L0080cc.J49.loop_x| +|L0080c4.J50.loop_x| + MOV a3,v3 + B |L008220.J77.loop_x| +|L0080cc.J49.loop_x| + LDR a1,[v1,#&1ac] + BL rr + MOV a2,#&3300000 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + MOV a3,v3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a1,v1 + LDR a2,[sp,#4] + BL define_label + MOV a2,v1 + MOV a1,v2 + BL plot_some_pixels + B |L0080c4.J50.loop_x| +|L008110.J40.loop_x| + LDR a4,[v2,#&44] + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#0 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v3 + MOV a1,v1 + BL define_label + LDR a4,[v2,#&44] + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#0 + MOV a2,#1 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v1 + MOV a1,v2 + LDR a3,[sp,#8] + BL fetch_pixel + MOV a2,v1 + STR a1,[sp,#0] + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc + MOV a2,v6 + MOV a1,v1 + BL define_label + LDR a4,[v2,#&40] + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#1 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a3,v3 + MOV a1,v1 + MOV a2,#&4a000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL save_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel_inc + LDR a1,[v1,#&1a8] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1a8] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + MOV a3,v6 + MOV a1,v1 + MOV a2,#&1a000000 + BL do_branch + MOV a3,v5 +|L008220.J77.loop_x| + MOV a1,v1 + MOV a2,#&a000000 + BL do_branch + LDR a1,[sp,#0] + TEQ a1,#0 + BEQ |L0084e0.J35.loop_x| + MOV a1,v1 + LDR a2,[sp,#8] + BL define_label + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BEQ |L008450.J55.loop_x| + LDR a1,[v2,#&40] + LDR a2,[v2,#&68] + BL |__rt_sdiv| + TEQ a2,#0 + BNE |L008450.J55.loop_x| + CMP a1,#4 + BLE |L008450.J55.loop_x| + LDR a1,[v1,#&1e8] + TEQ a1,#0 + BNE |L008450.J55.loop_x| + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc + LDR a1,[v1,#&1a8] + BL rr + MOV v4,a1 + LDR a1,[v1,#&178] + BL rr + ORR a1,v4,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a8] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&1a8] + BL rr + ORR v4,v4,a1,LSL #16 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v4,a1 + ORR a2,a1,#&500000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a8] + BL rr + MOV a2,#&3a00000 + ADD a2,a2,#&40000000 + ORR a2,a2,a1,LSL #12 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v4,a1 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v4,a1,LSL #12 + ORR a2,a1,#&40000000 + ORR a2,a2,#&1a00000 + MOV a1,v1 + BL do_ins + ADD v4,v1,#&e8 + LDR a1,[v2,#&104] + TEQ a1,#&20 + BEQ |L0083e4.J60.loop_x| + LDR a1,[v1,#&1a0] + BL rr + MOV v6,a1 + LDR a1,[v1,#&178] + BL rr + ORR a1,v6,a1,LSL #12 + ORR a2,a1,#&1b00000 + ORR a2,a2,#&da0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV a2,#&1a00000 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&f2000000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&100] + TEQ a1,#1 + BEQ |L0083b0.J62.loop_x| + LDR a1,[v1,#&178] + BL rr + LDR a2,[v1,#&214] + ORR v6,a1,a2,LSL #7 + LDR a1,[v1,#&178] + BL rr + ORR a1,v6,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins +|L0083b0.J62.loop_x| + LDR a1,[v1,#&178] + BL rr + MOV v6,a1 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v6,a1,LSL #16 + ORR a2,a1,#&1500000 + MOV a1,v1 + BL do_ins + MOV a3,v4 + MOV a1,v1 + MOV a2,#&ba000000 + BL do_branch +|L0083e4.J60.loop_x| + MOV a2,v1 + MOV a1,v2 + BL skip_current_output_words + LDR a1,[v2,#&104] + TEQ a1,#&20 + BNE |L00840c.J64.loop_x| +|L0083fc.J65.loop_x| + MOV a3,v3 + MOV a1,v1 + MOV a2,#&a000000 + B |L0084dc.J78.loop_x| +|L00840c.J64.loop_x| + LDR a1,[v1,#&1ac] + BL rr + MOV a2,#&3300000 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + MOV a3,v3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v4 + MOV a1,v1 + BL define_label + MOV a2,v1 + MOV a1,v2 + BL skip_some_pixels + B |L0083fc.J65.loop_x| +|L008450.J55.loop_x| + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc + ADD a2,v1,#&48 + MOV v6,a2 + MOV a1,v1 + BL define_label + LDR a4,[v2,#&40] + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#1 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a3,v3 + MOV a1,v1 + MOV a2,#&4a000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL save_pixel_inc + LDR a1,[v1,#&1a8] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a8] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + MOV a3,v6 + MOV a1,v1 + MOV a2,#&1a000000 +|L0084dc.J78.loop_x| + BL do_branch +|L0084e0.J35.loop_x| + MOV a2,v5 + MOV a1,v1 + BL define_label + LDR a1,[v2,#&104]! + TEQ a1,#&20 + BEQ |L008678.J81.loop_x| + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1b00000 + ORR a2,a2,#&da0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV a2,#&1a00000 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&f2000000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1e8] + TEQ a1,#0 + LDREQ a1,[v1,#&1ec] + TEQEQ a1,#0 + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1 + LDR a1,[v1,#&1a0] + BL rr + ORR v2,v2,a1,LSL #8 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v2,a1,LSL #12 + ORRNE a2,a1,#&1a00000 + ORRNE a2,a2,#&70 + BNE |L00864c.J79.loop_x| + ORR a2,a1,#&1a00000 + ORR a2,a2,#&30 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4900000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&1a0] + BL rr + ORR v2,v2,a1,LSL #8 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&30 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR v3,v2,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v2,a1,LSL #8 + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&10 +|L00864c.J79.loop_x| + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4800000 +|L008670.J80.loop_x| + MOV a1,v1 + BL do_ins +|L008678.J81.loop_x| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +loop_y + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + SUB sp,sp,#&10 + LDR a1,[a1,#&74] + MOV v3,#1 + MOV a1,v3,LSL a1 + STR a1,[a2,#&1f8] + LDR a1,[v2,#&78] + MOV a1,v3,LSL a1 + STR a1,[a2,#&1fc] + LDR a1,[a2,#&1f8] + MOV a1,v3,LSL a1 + SUB a1,a1,#1 + STR a1,[v1,#&200] + LDR a2,[v1,#&1ec] + TEQ a2,#0 + LDR a1,[v1,#&1f8] + BEQ |L0086fc.J17.loop_y| + LDR a2,[v1,#&1f0] + TEQ a2,#0 + STRNE v3,[v1,#&204] + STRNE v3,[v1,#&208] + STRNE v3,[v1,#&20c] + BNE |L0086fc.J17.loop_y| + STR a1,[v1,#&204] + LDR a1,[v1,#&1fc] + STR a1,[v1,#&208] + LDR a1,[v1,#&200] + STR a1,[v1,#&20c] +|L0086fc.J17.loop_y| + LDR a2,[v1,#&214] + RSB a1,a2,#5 + STR a1,[v1,#&224] + MOV a1,v3,LSL a1 + STR a1,[v1,#&220] + LDR a1,[v2,#&104] + MOV a1,v3,LSL a1 + SUB a1,a1,#1 + STR a1,[v1,#&218] + LDR a1,[v2,#&100] + MOV a1,v3,LSL a1 + SUB a1,a1,#1 + STR a1,[v1,#&21c] + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BEQ |L0087a4.J20.loop_y| + LDR a2,[v1,#&1f8] + CMP a2,#&10 + BLT |L0087a4.J20.loop_y| + LDR a1,[v2,#&104] + CMP a1,a2 + BGE |L0087a4.J20.loop_y| + LDR a2,[v2,#&138] + TST a2,#1 + BEQ |L0087a4.J20.loop_y| + TEQ a1,#&10 + MOVEQ a1,#2 + BEQ |L0087a0.J111.loop_y| + LDR a1,[v1,#&210] + TEQ a1,#3 + RSBNE a1,a1,#6 + BNE |L0087a0.J111.loop_y| + LDR a1,[v2,#&110] + TEQ a1,#0 + BEQ |L00879c.J30.loop_y| + LDR a1,[a3,#&1c]! + TEQ a1,#1 + MOVEQ a1,#3 + BEQ |L0087a0.J111.loop_y| +|L00879c.J30.loop_y| + MOV a1,#4 +|L0087a0.J111.loop_y| + STR a1,[v1,#&1f4] +|L0087a4.J20.loop_y| + MOV a1,v1 + MVN a2,#&2a000 + ADD a2,a2,#&9300000 + BL do_ins + LDR a1,[v2,#&110] + TEQ a1,#0 + STRNE v3,[v1,#&1e4] + MOV a2,v1 + MOV a1,v2 + BL ptrs_rn + LDR a1,[v1,#&1e0] + MOV a1,v3,LSL a1 + SUB v5,a1,#1 + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L0087f4.J39.loop_y| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L0087fc.J38.loop_y| +|L0087f4.J39.loop_y| + MOV v6,#&c + B |L008800.J37.loop_y| +|L0087fc.J38.loop_y| + MOV v6,#8 +|L008800.J37.loop_y| + LDR a1,[v1,#&1f4] + TEQ a1,#0 + ADDNE v6,v6,#4 + MOV a2,v1 + MOV a1,v2 + BL xloop_rn + MOV a2,#1 + LDR a1,[v1,#&1e0] + MOV a2,a2,LSL a1 + SUB a3,a2,#1 + BIC v3,a3,v5 + RSB v4,v6,a1,LSL #2 + LDR a1,[v1,#&164] + CMN a1,#1 + BEQ |L00884c.J44.loop_y| + MOV a2,#1 + MVN a1,a2,LSL a1 + AND v3,a1,v3 + SUB v4,v4,#4 +|L00884c.J44.loop_y| + LDR a1,[v1,#&19c] + CMN a1,#1 + BEQ |L008868.J46.loop_y| + MOV a2,#1 + MVN a1,a2,LSL a1 + AND v3,a1,v3 + SUB v4,v4,#4 +|L008868.J46.loop_y| + LDR a1,[v1,#&16c] + CMN a1,#1 + BEQ |L008884.J48.loop_y| + MOV a2,#1 + MVN a1,a2,LSL a1 + AND v3,a1,v3 + SUB v4,v4,#4 +|L008884.J48.loop_y| + LDR a1,[v1,#&178] + CMN a1,#1 + BEQ |L0088a0.J50.loop_y| + MOV a2,#1 + MVN a1,a2,LSL a1 + AND v3,a1,v3 + SUB v4,v4,#4 +|L0088a0.J50.loop_y| + LDR a1,[v1,#&17c] + CMN a1,#1 + BEQ |L0088bc.J52.loop_y| + MOV a2,#1 + MVN a1,a2,LSL a1 + AND v3,a1,v3 + SUB v4,v4,#4 +|L0088bc.J52.loop_y| + MOV a2,v1 + MOV a1,v2 + BL yloop_rn_count + LDR a2,[v1,#&1e0] + ADD a2,a1,a2 + LDR a1,[v1,#&1e4] + ADD a1,a2,a1 + CMP a1,#&d + MOVGT a1,#0 + MOVLE a1,#1 + STR a1,[sp,#0] + CMP a1,#0 + MOVEQ a1,#4 + STREQ a1,[v1,#&1e0] + MOV a2,v1 + MOV a1,v2 + BL yloop_rn + BNE |L00891c.J59.loop_y| + MOV a2,#1 + LDR a1,[v1,#&1e0] + MOV a1,a2,LSL a1 + SUB a1,a1,#1 + BIC a1,a1,#&f + STR a1,[sp,#4] +|L00891c.J59.loop_y| + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_init + MOV a2,v1 + MOV a1,v2 + BL save_pixel_init + MOV a2,v1 + MOV a1,v2 + BL xloop_init + LDR a1,[v1,#&1f4] + TEQ a1,#0 + BEQ |L0089a8.J61.loop_y| + LDR a1,[v2,#&74] + TEQ a1,#4 + BNE |L0089a8.J61.loop_y| + MOV a2,#1 + LDR a1,[v1,#&1ac] + MVN a1,a2,LSL a1 + AND a1,a1,v3 + MOV a3,#1 + LDR a2,[v1,#&158] + ORR v3,a1,a3,LSL a2 + ORR a1,v3,v5 + ORR a2,a1,#&9000000 + ORR a2,a2,#&2d0000 + MOV a1,v1 + BL do_ins + MOV a2,#1 + LDR a1,[v1,#&1ac] + ORR a1,v3,a2,LSL a1 + MOV a3,#1 + LDR a2,[v1,#&158] + MVN a2,a3,LSL a2 + AND v3,a2,a1 + B |L0089bc.J64.loop_y| +|L0089a8.J61.loop_y| + ORR a1,v3,v5 + ORR a2,a1,#&9000000 + ORR a2,a2,#&2d0000 + MOV a1,v1 + BL do_ins +|L0089bc.J64.loop_y| + MOV a2,v1 + MOV a1,v2 + BL yloop_init + LDR a1,[v1,#&1f4] + TEQ a1,#0 + BEQ |L008a0c.J65.loop_y| + LDR a1,[v2,#&74] + TEQ a1,#4 + BNE |L008a0c.J65.loop_y| + LDR a1,[v1,#&158] + BL rr + MOV a2,a1 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1ac] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins +|L008a0c.J65.loop_y| + MOV a2,v1 + MOV a1,v2 + BL simple_y_scale + ADD a2,v1,#&58 + TEQ a1,#0 + STR a2,[sp,#&c] + BNE |L008a38.J68.loop_y| + MOV a1,v1 + MOV a2,#&a000000 + LDR a3,[sp,#&c] + BL do_branch +|L008a38.J68.loop_y| + ADD a2,v1,#&50 + MOV a1,v1 + STR a2,[sp,#8] + BL define_label + MOV a2,v1 + MOV a1,v2 + BL simple_y_scale + TEQ a1,#0 + BNE |L008a74.J70.loop_y| + LDR a1,[v1,#&1d4] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a2,a1,#&8800000 + MOV a1,v1 + BL do_ins +|L008a74.J70.loop_y| + LDR a1,[v2,#&110] + TEQ a1,#0 + BEQ |L008c10.J72.loop_y| + LDR a1,[v1,#&1dc] + BL rr + MOV a2,a1 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1d8] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&194] + BL rr + MOV a2,a1 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1dc] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1d8] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1d0] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&114 + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&74] + CMP a1,#5 + BGE |L008bcc.J74.loop_y| + TEQ a1,#3 + LDR a1,[v1,#&15c] + BL rr + MOV a2,a1,LSL #12 + SUB sp,sp,#4 + BNE |L008b68.J76.loop_y| + STR a2,[sp,#0] + LDR a1,[v1,#&15c] + BL rr + LDR a2,[sp,#0] + ORR a2,a2,a1,LSL #16 + STR a2,[sp,#0] + LDR a1,[v1,#&1d8] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1 + ORR a2,a1,#&800000 + B |L008b98.J112.loop_y| +|L008b68.J76.loop_y| + STR a2,[sp,#0] + LDR a1,[v1,#&15c] + BL rr + LDR a2,[sp,#0] + ORR a2,a2,a1,LSL #16 + STR a2,[sp,#0] + LDR a1,[v1,#&1d8] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1 + ORR a2,a1,#&800000 + ORR a2,a2,#&80 +|L008b98.J112.loop_y| + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&15c] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&15c] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&3c00000 + ORR a2,a2,#3 + B |L008c08.J113.loop_y| +|L008bcc.J74.loop_y| + LDR a1,[v1,#&15c] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&15c] + BL rr + LDR a2,[sp,#0] + ORR a2,a2,a1,LSL #16 + STR a2,[sp,#0] + LDR a1,[v1,#&1d8] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1 + ORR a2,a1,#&800000 + ORR a2,a2,#&100 +|L008c08.J113.loop_y| + MOV a1,v1 + BL do_ins +|L008c10.J72.loop_y| + LDR a1,[sp,#0] + CMP a1,#0 + BNE |L008c78.J82.loop_y| + LDR a1,[v1,#&1d8] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1d4] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + ORR a1,a1,v6 + ORR a2,a1,#&2800000 + MOV a1,v1 + BL do_ins + LDR a1,[sp,#4] + ORR a2,a1,#&9000000 + ORR a2,a2,#&2d0000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1d8] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&8900000 + MOV a1,v1 + BL do_ins +|L008c78.J82.loop_y| + MOV a2,v1 + MOV a1,v2 + BL loop_x + BEQ |L008c9c.J83.loop_y| + LDR a1,[v1,#&1d4] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a1,a1,v5 + B |L008cbc.J114.loop_y| +|L008c9c.J83.loop_y| + LDR a1,[sp,#4] + ORR a2,a1,#&8000000 + ORR a2,a2,#&bd0000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1d4] + BL rr + ORR a1,v5,a1,LSL #16 +|L008cbc.J114.loop_y| + ORR a2,a1,#&8900000 + MOV a1,v1 + BL do_ins + MOV a2,v1 + MOV a1,v2 + BL simple_y_scale + ADD v3,v1,#&198 + TEQ a1,#0 + BEQ |L008e40.J86.loop_y| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BEQ |L008d60.J88.loop_y| + LDR a1,[v2,#&110] + TEQ a1,#0 + LDR a1,[v1,#&15c] + BL rr + MOV a2,a1,LSL #12 + SUB sp,sp,#4 + BEQ |L008d2c.J90.loop_y| + STR a2,[sp,#0] + LDR a1,[v1,#&15c] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&2800000 + ORR a2,a2,#1 + B |L008d58.J115.loop_y| +|L008d2c.J90.loop_y| + STR a2,[sp,#0] + LDR a1,[v1,#&15c] + BL rr + LDR a2,[sp,#0] + ORR a2,a2,a1,LSL #16 + STR a2,[sp,#0] + LDR a1,[v1,#&1b8] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1 + ORR a2,a1,#&400000 +|L008d58.J115.loop_y| + MOV a1,v1 + BL do_ins +|L008d60.J88.loop_y| + LDR a4,[v2,#0] + STMDB sp!,{a4} + MOV a4,v3 + MOV a1,v1 + MOV a3,#0 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v1 + MOV a1,v2 + MOV a3,#1 + BL odither_inc + MOV a2,v1 + MOV a1,v2 + MOV a3,#0 + BL odither_inc + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L008dbc.J94.loop_y| + LDR a1,[v2,#&f4]! + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L008dec.J93.loop_y| +|L008dbc.J94.loop_y| + LDR a1,[v1,#&168] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&168] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&1bc] + BL rr + ORR a1,v2,a1 + ORR a2,a1,#&400000 + MOV a1,v1 + BL do_ins +|L008dec.J93.loop_y| + LDR a1,[v1,#&1d4] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a2,a1,#&8800000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1b0] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1b0] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + MOV a1,v1 + MOV a2,#&ca000000 + LDR a3,[sp,#8] + BL do_branch + B |L0090d8.J97.loop_y| +|L008e40.J86.loop_y| + LDR a1,[v1,#&1b0] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1b0] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + ADD a3,v1,#&60 + MOV v5,a3 + MOV a1,v1 + MOV a2,#&da000000 + BL do_branch + LDR a4,[v2,#0] + STMDB sp!,{a4} + MOV a4,v3 + MOV a1,v1 + MOV a3,#0 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v1 + MOV a1,v2 + MOV a3,#1 + BL odither_inc + MOV a2,v1 + MOV a1,v2 + MOV a3,#0 + BL odither_inc + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L008f78.J98.loop_y| + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&38 + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&1500000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&15c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&c0000000 + ORR a2,a2,#&32800000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&15c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2400000 + ORR a2,a2,#8 + MOV a1,v1 + BL do_ins +|L008f78.J98.loop_y| + MOV a1,v1 + LDR a2,[sp,#&c] + BL define_label + LDR a4,[v2,#&10] + STMDB sp!,{a4} + ADD a4,v1,#&1b4 + MOV v3,a4 + MOV a1,v1 + MOV a3,#1 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a1,v1 + MOV a2,#&5a000000 + LDR a3,[sp,#8] + BL do_branch + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BEQ |L009038.J100.loop_y| + LDR a1,[v2,#&110] + TEQ a1,#0 + LDR a1,[v1,#&15c] + BL rr + MOV a2,a1,LSL #12 + SUB sp,sp,#4 + BEQ |L009004.J102.loop_y| + STR a2,[sp,#0] + LDR a1,[v1,#&15c] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&2800000 + ORR a2,a2,#1 + B |L009030.J116.loop_y| +|L009004.J102.loop_y| + STR a2,[sp,#0] + LDR a1,[v1,#&15c] + BL rr + LDR a2,[sp,#0] + ORR a2,a2,a1,LSL #16 + STR a2,[sp,#0] + LDR a1,[v1,#&1b8] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1 + ORR a2,a1,#&400000 +|L009030.J116.loop_y| + MOV a1,v1 + BL do_ins +|L009038.J100.loop_y| + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L009054.J106.loop_y| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L009094.J105.loop_y| +|L009054.J106.loop_y| + LDR a1,[v1,#&168] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&168] + BL rr + LDR a2,[sp,#0] + ORR a2,a2,a1,LSL #16 + STR a2,[sp,#0] + LDR a1,[v1,#&1bc] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1 + ORR a2,a1,#&400000 + MOV a1,v1 + BL do_ins +|L009094.J105.loop_y| + ADD v2,v2,#&c + LDMIB v2!,{a1,a2} + ADD a4,a1,a2 + STMDB sp!,{a4} + MOV a4,v3 + MOV a1,v1 + MOV a3,#0 + MOV a2,#1 + BL arbitrary_add + ADD sp,sp,#4 + MOV a1,v1 + MOV a2,#&a000000 + LDR a3,[sp,#&c] + BL do_branch + MOV a2,v5 + MOV a1,v1 + BL define_label +|L0090d8.J97.loop_y| + LDR a1,[v1,#&1d4] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1d4] + BL rr + ORR a1,v2,a1,LSL #16 + ADD a2,v4,v6 + ORR a1,a1,a2 + ORR a2,a1,#&2800000 + MOV a1,v1 + BL do_ins + MOV a1,v1 + MVN a2,#&2a000 + ADD a2,a2,#&8c00000 + BL do_ins + LDR a1,[v1,#&1d8] + BL rr + MOV v2,a1 + LDR a1,[v1,#&1dc] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDMDB fp,{v1-v6,fp,sp,pc}^ + +find_or_compile_code + MOV ip,sp + STMDB sp!,{v1-v5,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + MOV v3,a3 + LDR a1,[a1,#&74] + LDR a2,[a2,#&210] + ADD a3,a1,a2,LSL #3 + LDR a2,[v2,#&1e8] + ADD v4,a3,a2,LSL #6 + LDR a2,[v2,#&1ec] + TEQ a2,#0 + ORRNE v4,v4,#&200 + LDR a2,[v2,#&1f0] + TEQ a2,#0 + ORRNE v4,v4,#&400 + LDR a2,[v1,#&f8] + TEQ a2,#0 + ORRNE v4,v4,#&800 + LDR a2,[v1,#&b4] + TEQ a2,#0 + ORRNE v4,v4,#&1000 + LDR a2,[v1,#&104] + LDR a3,[v1,#&100] + TEQ a2,a3 + ORRNE v4,v4,#&2000 + LDR a2,[v1,#&78] + TEQ a1,a2 + ORRNE v4,v4,#&4000 + LDR a1,[v1,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + ORREQ v4,v4,#&8000 + LDR a2,[v1,#&110] + CMP a2,#0 + BEQ |L0091e4.J20.find_or_compile_code| + ORR v4,v4,#&10000 + BEQ |L0091e4.J20.find_or_compile_code| + LDR a1,[v3,#&1c] + TEQ a1,#1 + ORREQ v4,v4,#&20000 +|L0091e4.J20.find_or_compile_code| + LDR a1,[v1,#&10c] + TEQ a1,#0 + BEQ |L00920c.J23.find_or_compile_code| + ORR v4,v4,#&40000 + LDR a3,[v2,#&228] + TEQ a3,#0 + ORRNE v4,v4,#&80000 + LDR a1,[a1,#&10] + TEQ a1,#3 + ORREQ v4,v4,#&100000 +|L00920c.J23.find_or_compile_code| + TEQ a2,#0 + LDRNE a1,[v1,#&138] + ANDNE a1,a1,#1 + TEQNE a1,#0 + ORRNE v4,v4,#&200000 + ADD a1,v2,#&22c + ADD a2,v2,#&2ec + ADD a2,a2,#&2000 + CMP a2,a1 + BLS |L009290.J33.find_or_compile_code| +|L009234.J32.find_or_compile_code| + LDR a3,[a1,#0] + TEQ a3,v4 + LDREQ a3,[a1,#4] + LDREQ a4,[v1,#&44] + TEQEQ a3,a4 + LDREQ a3,[a1,#8] + LDREQ a4,[v1,#&40] + TEQEQ a3,a4 + LDREQ a4,[a1,#&c] + LDREQ a3,[v1,#&14] + TEQEQ a4,a3 + LDREQ a3,[a1,#&10] + LDREQ a4,[v1,#&10] + TEQEQ a3,a4 + LDREQ a4,[a1,#&14] + LDREQ a3,[v1,#0] + TEQEQ a4,a3 + ADDEQ a1,a1,#&18 + LDMEQDB fp,{v1-v5,fp,sp,pc}^ + ADD a1,a1,#&18 + ADD a1,a1,#&400 + CMP a2,a1 + BHI |L009234.J32.find_or_compile_code| +|L009290.J33.find_or_compile_code| + LDR a1,[v2,#8] + ADD ip,a1,a1,LSL #1 + ADD a1,ip,a1,LSL #7 + ADD a1,v2,a1,LSL #3 + ADD v5,a1,#&22c + MVN a1,#0 + STR a1,[v5,#0] + LDR a1,[v1,#&44] + STR a1,[v5,#4] + LDR a1,[v1,#&40] + STR a1,[v5,#8] + LDR a1,[v1,#&14] + STR a1,[v5,#&c] + LDR a1,[v1,#&10] + STR a1,[v5,#&10] + LDR a1,[v1,#0] + MOV a2,v2 + STR a1,[v5,#&14] + MOV a1,v1 + BL compile_buffer_init + MOV a3,v3 + MOV a2,v2 + MOV a1,v1 + BL loop_y + MOV a1,v2 + BL compile_buffer_done + STR v4,[v5,#0] + LDR a1,[v2,#&c]! + LDMDB fp,{v1-v5,fp,sp,pc}^ + + IMPORT create_dynamic_area +putscaled_compiler + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + MOV v3,a4 + SUB sp,sp,#4 + ADD a1,a2,#&2f0 + ADD a1,a1,#&2000 + CMP a1,a3 + MOVHI a2,#4 + MOVHI a1,#&5a + ADDHI a1,a1,#&f00 + BLHI exit_c + MOV a1,v2 + BL check_workspace + AND a1,v3,#7 + STR a1,[v2,#&1e8] + TST v3,#8 + MOV a3,#0 + MOVEQ a1,a3 + MOVNE a1,#1 + STR a1,[v2,#&1ec] + MOV a3,#0 + LDR a2,[v1,#&80] + TEQ a3,a2,ASR #27 + MOVEQ a2,#0 + MOVNE a2,#1 + AND a1,a2,a1 + STR a1,[v2,#&1f0] + LDR a1,[v1,#&110] + TEQ a1,#0 + BEQ |L009780.J12.putscaled_compiler| + LDR v4,[v1,#&120] + LDR a1,[v4,#&20] + ADD a1,v4,a1 + MOV a2,#0 + STR a2,[sp,#-8]! + LDR a2,[a1,#0] + CMN a2,#1 + LDREQ v5,[a1,#4] + LDREQ a1,[a1,#8] + BEQ |L0093c8.J123.putscaled_compiler| + LDR a1,[v4,#&20] + ADD a2,v4,a1 + ADD v5,a2,#4 + LDR a2,[v4,#0] + SUB a1,a2,a1 + SUB a1,a1,#4 +|L0093c8.J123.putscaled_compiler| + MOV a4,#0 + STR a1,[sp,#4] + MOV a3,sp + MOV a2,#0 + STMDB sp!,{a2-a4} + MOV a1,v5 + MOV a3,#0 + BL find_image_dims + ADD sp,sp,#&c + TEQ a1,#0 + MOVNE a2,#2 + MOVNE a1,#&87 + ADDNE a1,a1,#&f00 + BLNE exit_c + LDR a1,[v1,#&124] + STR a1,[sp,#8] + TEQ a1,#0 + SUB sp,sp,#4 + BNE |L009490.J19.putscaled_compiler| + LDR a1,[sp,#4] + BL create_dynamic_area + MOVS v3,a1 + MOVEQ a2,#1 + MOVEQ a1,#&95 + ADDEQ a1,a1,#&f00 + BLEQ exit_c + MOV a4,sp + STMDB sp!,{a4} + ADD a4,sp,#&10 + MOV a3,v3 + MOV a2,#&c0000001 + MOV a1,#&5c + BL |_swix| + ADD sp,sp,#4 + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&9b + ADDNE a1,a1,#&f00 + BLNE exit_c + LDR a1,[sp,#&c] + MVN a2,#0 + ADD v1,v1,#&124 + STMIA v1,{a1,v3} + SUB v1,v1,#&124 + LDR a1,[sp,#&c] + STR a2,[a1,#0] + LDR a1,[sp,#&c] + LDR a2,[sp,#0] + STR a2,[a1,#&10]! + B |L009550.J32.putscaled_compiler| +|L009490.J19.putscaled_compiler| + MOV a4,sp + MOV a2,#&40000001 + MOV a1,#&5c + LDR a3,[v1,#&128] + BL |_swix| + MOV a3,a1 + LDR a1,[sp,#0] + CMP a1,#0 + BLE |L0094d4.J26.putscaled_compiler| + LDR a2,[sp,#&c] + LDR a4,[a2,#&10] + TEQ a1,a4 + BEQ |L0094d4.J26.putscaled_compiler| + MVN a4,#0 + STR a4,[a2,#0] + LDR a2,[sp,#&c] + STR a1,[a2,#&10]! +|L0094d4.J26.putscaled_compiler| + TEQ a3,#0 + MOVNE a2,#4 + MOVNE a1,#&b9 + ADDNE a1,a1,#&f00 + BLNE exit_c + LDR a1,[sp,#4] + LDR a2,[sp,#0] + CMP a2,a1 + BGE |L009550.J32.putscaled_compiler| + SUB sp,sp,#4 + MOV a4,sp + STMDB sp!,{a4} + SUB a4,a1,a2 + MOV a2,#&40000003 + MOV a1,#&2a + LDR a3,[v1,#&128] + BL |_swix| + ADD sp,sp,#4 + TEQ a1,#0 + MOVNE a2,#1 + MOVNE a1,#&c1 + ADDNE a1,a1,#&f00 + BLNE exit_c + MVN a2,#0 + LDR a1,[sp,#&10] + STR a2,[a1,#0] + LDR a2,[sp],#4 + LDR a1,[sp,#0] + ADD a1,a1,a2 + LDR a2,[sp,#&c] + STR a1,[a2,#&10]! +|L009550.J32.putscaled_compiler| + ADD sp,sp,#4 + LDR a1,[v1,#&74] + TEQ a1,#5 + MOVNE a2,#4 + MOVNE a1,#&3dc + ADDNE a1,a1,#&c00 + BLNE exit_c + LDR a1,[v2,#&1ec] + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&dd + ADDNE a1,a1,#&f00 + BLNE exit_c + MOV a2,#0 + LDR a1,[v1,#&80] + TEQ a2,a1,ASR #24 + MOVEQ a1,#0 + STREQ a1,[v1,#&b4] + STREQ a1,[v1,#&f8] + SUB sp,sp,#4 + LDR a1,[v1,#&40] + LDR a2,[v1,#&2c] + MUL a2,a1,a2 + LDR a3,[v1,#&44] + SUB a1,a3,a1 + BL |__rt_sdiv| + LDR a2,[v1,#&114] + ADD a1,a1,a2 + ADD v6,a1,#2 + MOV v3,#0 + STR v3,[sp,#0] + LDR a1,[v1,#&104] + CMP a1,#4 + BGT |L0095ec.J42.putscaled_compiler| + MOV v3,#1 + LDR a2,[v1,#&134] + TST a2,#2 + MOVEQ a2,#0 + STREQ a2,[v1,#&b4] +|L0095ec.J42.putscaled_compiler| + CMP v6,#0 + LDRLT a2,[v4,#&10]! + SUBLT v6,a2,#1 + ADD a3,v1,#&40 + LDMIA a3,{a2,a3} + SUB a3,a3,a2 + ADD a3,a3,a3,LSL #1 + CMP a2,a3,LSL #1 + BLT |L009628.J48.putscaled_compiler| + ADD a3,v1,#&10 + LDMIA a3,{a2,a3} + SUB a3,a3,a2 + ADD a3,a3,a3,LSL #1 + CMP a2,a3,LSL #1 + ORRGE v3,v3,#2 +|L009628.J48.putscaled_compiler| + LDR a2,[v1,#&134] + TST a2,#2 + BNE |L009704.J51.putscaled_compiler| + LDR a2,[v1,#&138] + TST a2,#1 + BEQ |L009704.J51.putscaled_compiler| + SUB sp,sp,#4 + TEQ a1,#8 + BNE |L0096f8.J54.putscaled_compiler| + MOV a4,sp + MOV a3,#0 + MOV a2,#&400 + MOV a1,#0 + STMDB sp!,{a1-a4} + MVN a4,#0 + MVN a3,#0 + MOV a2,#&1000000f + ADD a2,a2,#&10 + LDR a1,[pc, #L0096c4-.-8] + BL |_swix| + ADD sp,sp,#&10 + MOV a4,#0 + MOV a3,#&400 + ADD a2,v1,#&13c + STMDB sp!,{a2-a4} + MVN a4,#0 + MVN a3,#0 + MOV a2,#&1f + LDR a1,[pc, #L0096c4-.-8] + BL |_swix| + ADD sp,sp,#&c + LDR a1,[v1,#&138] + TST a1,#2 + BEQ |L0096c8.J56.putscaled_compiler| + ORR v3,v3,#8 + MVN a1,#0 + LDR a2,[sp,#&10] + STR a1,[a2,#0] + B |L009700.J61.putscaled_compiler| +L0096c4 + DCD &0004075c +|L0096c8.J56.putscaled_compiler| + ADD a4,sp,#4 + STMDB sp!,{a4} + MOV a4,#0 + MVN a3,#0 + MOV a2,#&20000003 + MOV a1,#&35 + BL |_swix| + ADD sp,sp,#4 + LDR a1,[sp,#4] + TST a1,#&80 + ORREQ v3,v3,#&20 + B |L009700.J61.putscaled_compiler| +|L0096f8.J54.putscaled_compiler| + TEQ a1,#&10 + ORREQ v3,v3,#&10 +|L009700.J61.putscaled_compiler| + ADD sp,sp,#4 +|L009704.J51.putscaled_compiler| + MOV a4,v3 + MVN a3,#0 + MVN a2,#0 + MOV a1,v6 + STMDB sp!,{a1-a4} + LDR a4,[v1,#&114] + MOV a2,v5 + LDR a1,[sp,#&1c] + LDR a3,[sp,#&18] + BL jpeg_scan_file + ADD sp,sp,#&10 + TEQ a1,#0 + MOVNE a2,#2 + MOVNE a1,#&3a + ADDNE a1,a1,#&1000 + BLNE exit_c + LDR a1,[sp,#&c] + LDR a1,[a1,#4] + TST a1,#&28 + BEQ |L00976c.J66.putscaled_compiler| + MOV a1,#3 + STR a1,[v1,#&78] + STR a1,[v1,#&74] + MOV a1,#0 + STR a1,[v1,#&b4] + B |L00977c.J68.putscaled_compiler| +|L00976c.J66.putscaled_compiler| + TST a1,#&10 + MOVNE a1,#4 + STRNE a1,[v1,#&78] + STRNE a1,[v1,#&74] +|L00977c.J68.putscaled_compiler| + ADD sp,sp,#&c +|L009780.J12.putscaled_compiler| + MOV v3,#0 + STR v3,[v2,#&1f4] + LDR v4,[v1,#&10c] + TEQ v4,#0 + BEQ |L00982c.J71.putscaled_compiler| + LDR a1,[v4,#4] + TEQ a1,#0 + BNE |L0097bc.J74.putscaled_compiler| + LDR a1,[v4,#8] + CMN a1,#&100 + BNE |L0097bc.J74.putscaled_compiler| + LDR a1,[v4,#&c] + TEQ a1,#0 + MOVEQ a1,#1 + BEQ |L0097c0.J73.putscaled_compiler| +|L0097bc.J74.putscaled_compiler| + MOV a1,v3 +|L0097c0.J73.putscaled_compiler| + STR a1,[v2,#&228] + LDR a1,[v1,#&104] + TEQ a1,#&20 + MOVNE a2,#4 + MOVNE a1,#&98 + ADDNE a1,a1,#&1000 + BLNE exit_c + LDR a1,[v1,#&74] + CMP a1,#4 + MOVLT a2,#4 + MOVLT a1,#&99 + ADDLT a1,a1,#&1000 + BLLT exit_c + LDR a1,[v1,#&b4] + TEQ a1,#0 + LDREQ a1,[v1,#&f8] + TEQEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&9a + ADDNE a1,a1,#&1000 + BLNE exit_c + LDR a1,[v4,#0] + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&9b + ADDNE a1,a1,#&1000 + BLNE exit_c +|L00982c.J71.putscaled_compiler| + MOV a1,#0 + LDR a2,[v1,#&104] + CMP a2,#1 + BLE |L00984c.J89.putscaled_compiler| +|L00983c.J88.putscaled_compiler| + MOV a2,a2,ASR #1 + ADD a1,a1,#1 + CMP a2,#1 + BGT |L00983c.J88.putscaled_compiler| +|L00984c.J89.putscaled_compiler| + STR a1,[v2,#&210] + STR a1,[v2,#&214] + LDR a2,[v1,#&104] + LDR a3,[v1,#&100] + TEQ a2,a3 + ADDNE a1,a1,#1 + STRNE a1,[v2,#&214] + LDR a1,[v1,#&f8] + TEQ a1,#0 + STRNE v3,[v1,#&b4] + LDR a1,[v1,#&44] + CMP a1,#0 + MOVLE a2,#4 + MOVLE a1,#&ac + ADDLE a1,a1,#&1000 + BLLE exit_c + LDR a1,[v1,#&40] + CMP a1,#0 + MOVLE a2,#4 + MOVLE a1,#&ad + ADDLE a1,a1,#&1000 + BLLE exit_c + LDR a1,[v1,#&10] + CMP a1,#0 + MOVLE a2,#4 + MOVLE a1,#&ae + ADDLE a1,a1,#&1000 + BLLE exit_c + LDR a1,[v1,#&10] + CMP a1,#0 + MOVLE a2,#4 + MOVLE a1,#&af + ADDLE a1,a1,#&1000 + BLLE exit_c + B |L0098fc.J105.putscaled_compiler| +|L0098d8.J104.putscaled_compiler| + MOV a4,a4,ASR #1 + MOV a2,a2,ASR #1 + ADD v1,v1,#&40 + STMIA v1,{a2,a4} + SUB v1,v1,#&40 + MOV a2,a3,ASR #1 + MOV a1,a1,ASR #1 + STR a1,[v1,#&68] + STR a2,[v1,#&30] +|L0098fc.J105.putscaled_compiler| + LDR a4,[v1,#&44] + TST a4,#1 + LDREQ a2,[v1,#&40] + ANDEQ a1,a2,#1 + TEQEQ a1,#0 + LDREQ a3,[v1,#&30] + ANDEQ a1,a3,#1 + TEQEQ a1,#0 + LDREQ a1,[v1,#&68] + ANDEQ ip,a1,#1 + TEQEQ ip,#0 + BEQ |L0098d8.J104.putscaled_compiler| + B |L00994c.J112.putscaled_compiler| +|L009930.J111.putscaled_compiler| + MOV a3,a3,ASR #1 + MOV a2,a2,ASR #1 + MOV a1,a1,ASR #1 + STR a1,[v1,#&1c] + ADD v1,v1,#&10 + STMIA v1,{a2,a3} + SUB v1,v1,#&10 +|L00994c.J112.putscaled_compiler| + LDR a3,[v1,#&14] + TST a3,#1 + LDREQ a2,[v1,#&10] + ANDEQ a1,a2,#1 + TEQEQ a1,#0 + LDREQ a1,[v1,#&1c] + ANDEQ a4,a1,#1 + TEQEQ a4,#0 + BEQ |L009930.J111.putscaled_compiler| + LDR a1,[v1,#&104] + LDR v3,[v1,#&100] + LDR v4,[v1,#&78] + STR a1,[v1,#&100] + LDR a1,[v1,#&74] + STR a1,[v1,#&78] + MOV a2,v2 + MOV a1,v1 + LDR a3,[sp,#0] + BL find_or_compile_code + STR v4,[v1,#&78]! + STR v3,[v1,#&88] + LDMDB fp,{v1-v6,fp,sp,pc}^ + + AREA |C$$data|,DATA + +|x$dataseg| + + END diff --git a/s/rojpeg b/s/rojpeg new file mode 100644 index 0000000000000000000000000000000000000000..1c71444373cf87faea500a3d79582c86c6aeaedf --- /dev/null +++ b/s/rojpeg @@ -0,0 +1,3078 @@ +; Copyright 1996 Acorn Computers Ltd +; +; Licensed under the Apache License, Version 2.0 (the "License"); +; you may not use this file except in compliance with the License. +; You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. +; +; generated by Norcroft RISC OS ARM C vsn 5.05 (Acorn Computers Ltd) [Dec 23 1994] + + AREA |C$$code|, CODE, READONLY +|x$codeseg| + + EXPORT memcpy +memcpy + MOV a4,a1 + MOV ip,a3 + SUB a3,a3,#1 + CMP ip,#0 + MOVLSS pc,lr +|L000014.J4.memcpy| + LDRB ip,[a2],#1 + STRB ip,[a4],#1 + MOV ip,a3 + SUB a3,a3,#1 + CMP ip,#0 + BHI |L000014.J4.memcpy| + MOVS pc,lr + + EXPORT strcpy +strcpy + MOV a3,a1 + LDRB a4,[a2,#0] + CMP a4,#&1f + MOVLES pc,lr +|L000040.J4.strcpy| + LDRB a4,[a2],#1 + STRB a4,[a3],#1 + LDRB a4,[a2,#0] + CMP a4,#&1f + BGT |L000040.J4.strcpy| + MOVS pc,lr + + EXPORT memset +memset + MOV a4,a1 + MOV ip,a3 + SUB a3,a3,#1 + CMP ip,#0 + MOVLSS pc,lr + AND a2,a2,#&ff +|L000070.J4.memset| + STRB a2,[a4],#1 + MOV ip,a3 + SUB a3,a3,#1 + CMP ip,#0 + BHI |L000070.J4.memset| + MOVS pc,lr + + IMPORT exit + EXPORT panic_exit +panic_exit + B exit + +get_2bytes + MOV a4,#&ff + LDR a2,[a1,#&38] + LDR a3,[a1,#&34] + CMP a3,a2 + LDRCCB a2,[a3],#1 + STRCC a3,[a1,#&34] + MOVCS a2,a4 + MOV a3,a2 + ADD ip,a1,#&34 + LDMIA ip,{a2,ip} + CMP a2,ip + LDRCCB a4,[a2],#1 + STRCC a2,[a1,#&34]! + ADD a1,a4,a3,LSL #8 + MOVS pc,lr + +skip_variable + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + SUB a1,a1,#2 + CMP a1,#0 + LDMLEDB fp,{v1,fp,sp,pc}^ + LDR a2,[v1,#&38] +|L0000ec.J4.skip_variable| + LDR a3,[v1,#&34] + CMP a3,a2 + ADDCC a3,a3,#1 + STRCC a3,[v1,#&34] + SUB a1,a1,#1 + CMP a1,#0 + BGT |L0000ec.J4.skip_variable| + LDMDB fp,{v1,fp,sp,pc}^ + + IMPORT newline +get_dht + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + SUB sp,sp,#&114 + BL get_2bytes + SUB v4,a1,#2 + CMP v4,#0 + BLE |L000258.J37.get_dht| + MOV v6,#0 + MOV v5,#&ff +|L000138.J4.get_dht| + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a2,v5 + MOV v2,a2 + STRB v6,[sp,#&100] + MOV v3,#0 + MOV a1,#1 +|L000160.J10.get_dht| + ADD a3,v1,#&34 + LDMIA a3,{a2,a3} + CMP a2,a3 + MOVCS a2,v5 + BCS |L000180.J11.get_dht| + LDRB a3,[a2],#1 + STR a2,[v1,#&34] + MOV a2,a3 +|L000180.J11.get_dht| + ADD a3,sp,#&100 + STRB a2,[a3,a1] + ADD a2,sp,#&100 + LDRB a2,[a2,a1] + ADD v3,a2,v3 + ADD a1,a1,#1 + CMP a1,#&10 + BLE |L000160.J10.get_dht| + CMP v3,#&100 + BLGT newline + MOVGT a1,#&b9 + ADDGT a1,a1,#&4e00 + BLGT exit + MOV a1,#0 + CMP v3,#0 + BLE |L0001f0.J18.get_dht| +|L0001c0.J17.get_dht| + ADD a3,v1,#&34 + LDMIA a3,{a2,a3} + CMP a2,a3 + MOVCS a2,v5 + BCS |L0001e0.J20.get_dht| + LDRB a3,[a2],#1 + STR a2,[v1,#&34] + MOV a2,a3 +|L0001e0.J20.get_dht| + STRB a2,[sp,a1] + ADD a1,a1,#1 + CMP a1,v3 + BLT |L0001c0.J17.get_dht| +|L0001f0.J18.get_dht| + ADD a1,v3,#&11 + SUB v4,v4,a1 + TST v2,#&10 + SUBNE v2,v2,#&10 + ADD a1,v1,v2,LSL #2 + ADDEQ v3,a1,#&64 + ADDNE v3,a1,#&74 + CMP v2,#0 + BLT |L00021c.J28.get_dht| + CMP v2,#4 + BLT |L00022c.J27.get_dht| +|L00021c.J28.get_dht| + BL newline + MOV a1,#&2c8 + ADD a1,a1,#&4c00 + BL exit +|L00022c.J27.get_dht| + ADD a2,sp,#&100 + MOV a3,#&11 + LDR a1,[v3,#0] + BL memcpy + LDR a1,[v3,#0] + ADD a1,a1,#&11 + MOV a2,sp + MOV a3,#&100 + BL memcpy + CMP v4,#0 + BGT |L000138.J4.get_dht| +|L000258.J37.get_dht| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +get_dac + MOV ip,sp + STMDB sp!,{v1-v5,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + SUB v4,a1,#2 + CMP v4,#0 + LDMLEDB fp,{v1-v5,fp,sp,pc}^ + MOV v5,#&ff +|L000280.J4.get_dac| + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + LDRCCB a3,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a3,v5 + MOV v2,a3 + LDR a1,[v1,#&34] + CMP a1,a2 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a2,v5 + MOV v3,a2 + CMP v2,#0 + BLT |L0002c4.J14.get_dac| + CMP v2,#&20 + BLT |L0002d4.J13.get_dac| +|L0002c4.J14.get_dac| + BL newline + MOV a1,#&2e8 + ADD a1,a1,#&4c00 + BL exit +|L0002d4.J13.get_dac| + CMP v2,#&10 + MOVGE a1,v3 + ADDGE a2,v1,v2 + STRGEB a1,[a2,#&94] + BGE |L000314.J19.get_dac| + AND a1,v3,#&f + ADD a2,v1,v2 + STRB a1,[a2,#&84] + MOV a3,v3,ASR #4 + AND a3,a3,#&ff + STRB a3,[a2,#&94] + CMP a1,a3 + BLGT newline + MOVGT a1,#&ef0 + ADDGT a1,a1,#&4000 + BLGT exit +|L000314.J19.get_dac| + SUB v4,v4,#2 + CMP v4,#0 + BGT |L000280.J4.get_dac| + LDMDB fp,{v1-v5,fp,sp,pc}^ + +get_dqt + MOV ip,sp + STMDB sp!,{v1-v5,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + SUB v2,a1,#2 + CMP v2,#0 + LDMLEDB fp,{v1-v5,fp,sp,pc}^ + MOV v4,#&ff +|L000348.J4.get_dqt| + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + MOVCS a1,v4 + BCS |L000368.J7.get_dqt| + LDRB a2,[a1],#1 + STR a1,[v1,#&34] + MOV a1,a2 +|L000368.J7.get_dqt| + MOV v3,a1,ASR #4 + AND v5,a1,#&f + CMP v5,#4 + BLGE newline + MOVGE a1,#&30c + ADDGE a1,a1,#&4c00 + BLGE exit + ADD a1,v1,v5,LSL #2 + LDR a4,[a1,#&54]! + MOV a1,#0 +|L000390.J12.get_dqt| + ADD ip,v1,#&34 + LDMIA ip,{a3,ip} + CMP a3,ip + LDRCCB a2,[a3],#1 + STRCC a3,[v1,#&34] + MOVCS a2,v4 + MOV a2,a2,LSL #16 + MOV a2,a2,LSR #16 + TEQ v3,#0 + BEQ |L0003d8.J16.get_dqt| + LDR a3,[v1,#&34] + CMP a3,ip + LDRCCB ip,[a3],#1 + STRCC a3,[v1,#&34] + MOVCS ip,v4 + ADD a2,ip,a2,LSL #8 + MOV a2,a2,LSL #16 + MOV a2,a2,LSR #16 +|L0003d8.J16.get_dqt| + STR a2,[a4,a1,LSL #2] + ADD a1,a1,#1 + CMP a1,#&40 + BLT |L000390.J12.get_dqt| + MOV a1,#0 +|L0003ec.J22.get_dqt| + ADD a1,a1,#8 + CMP a1,#&40 + BLT |L0003ec.J22.get_dqt| + SUB v2,v2,#&41 + TEQ v3,#0 + SUBNE v2,v2,#&40 + CMP v2,#0 + BGT |L000348.J4.get_dqt| + LDMDB fp,{v1-v5,fp,sp,pc}^ + +get_dri + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + TEQ a1,#4 + BLNE newline + MOVNE a1,#&2d + ADDNE a1,a1,#&4f00 + BLNE exit + MOV a1,v1 + BL get_2bytes + MOV a1,a1,LSL #16 + MOV a1,a1,LSR #16 + STR a1,[v1,#&bc]! + LDMDB fp,{v1,fp,sp,pc}^ + +get_app0 + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + SUB sp,sp,#&10 + BL get_2bytes + SUB v2,a1,#2 + CMP v2,#&e + BLT |L000524.J25.get_app0| + MOV a1,#0 + MOV a2,#&ff +|L00047c.J6.get_app0| + LDR a3,[v1,#&38] + LDR a4,[v1,#&34] + CMP a4,a3 + LDRCCB a3,[a4],#1 + STRCC a4,[v1,#&34] + MOVCS a3,a2 + STRB a3,[sp,a1] + ADD a1,a1,#1 + CMP a1,#&e + BLT |L00047c.J6.get_app0| + SUB v2,v2,#&e + LDRB a1,[sp,#0] + TEQ a1,#&4a + LDREQB a1,[sp,#1] + TEQEQ a1,#&46 + LDREQB a1,[sp,#2] + TEQEQ a1,#&49 + LDREQB a1,[sp,#3] + TEQEQ a1,#&46 + LDREQB a1,[sp,#4] + TEQEQ a1,#0 + BNE |L000524.J25.get_app0| + LDRB a1,[sp,#5] + TEQ a1,#1 + BLNE newline + MOVNE a1,#&4d + ADDNE a1,a1,#&4f00 + BLNE exit + LDRB a1,[sp,#7] + STR a1,[v1,#&40] + LDRB a1,[sp,#9] + LDRB a2,[sp,#8] + ADD a1,a1,a2,LSL #8 + STR a1,[v1,#&44] + LDRB a2,[sp,#&b] + LDRB a1,[sp,#&a] + ADD a1,a2,a1,LSL #8 + STR a1,[v1,#&48] + LDR a1,[v1,#&1c] + TEQ a1,#0 + MOVEQ a1,#3 + STREQ a1,[v1,#&1c] +|L000524.J25.get_app0| + MOV a1,v2 + SUB v2,v2,#1 + CMP a1,#0 + BLE |L000558.J37.get_app0| + LDR a2,[v1,#&38] +|L000538.J26.get_app0| + LDR a1,[v1,#&34] + CMP a1,a2 + ADDCC a1,a1,#1 + STRCC a1,[v1,#&34] + MOV a1,v2 + SUB v2,v2,#1 + CMP a1,#0 + BGT |L000538.J26.get_app0| +|L000558.J37.get_app0| + LDMDB fp,{v1,v2,fp,sp,pc}^ + +get_sof + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + MOV v3,a1 + MOV v2,#&ff + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a2,v2 + STR a2,[v1,#&3c] + MOV a1,v1 + BL get_2bytes + STR a1,[v1,#&18] + MOV a1,v1 + BL get_2bytes + STR a1,[v1,#&14] + MOV a2,a1 + ADD a3,v1,#&34 + LDMIA a3,{a1,a3} + CMP a1,a3 + MOVCS a1,v2 + BCS |L0005d0.J7.get_sof| + LDRB a3,[a1],#1 + STR a1,[v1,#&34] + MOV a1,a3 +|L0005d0.J7.get_sof| + STR a1,[v1,#&4c] + LDR a3,[v1,#&18] + CMP a3,#0 + CMPGT a2,#0 + CMPGT a1,#0 + BLLE newline + MOVLE a1,#&82 + ADDLE a1,a1,#&4f00 + BLLE exit + LDR a1,[v1,#&3c] + TEQ a1,#8 + BLNE newline + MOVNE a1,#&86 + ADDNE a1,a1,#&4f00 + BLNE exit + LDR a1,[v1,#&4c] + ADD a1,a1,a1,LSL #1 + ADD a1,a1,#8 + TEQ a1,v3 + BLNE newline + MOVNE a1,#&92 + ADDNE a1,a1,#&4f00 + BLNE exit + LDR a1,[v1,#&4c] + CMP a1,#3 + BLGT newline + MOVGT a1,#&96 + ADDGT a1,a1,#&4f00 + BLGT exit + MOV a1,#0 + LDR a2,[v1,#&4c] + CMP a2,#0 + LDMLEDB fp,{v1-v3,fp,sp,pc}^ + MOV a2,#&f +|L000658.J21.get_sof| + RSB a4,a1,a1,LSL #3 + LDR a3,[v1,#&50] + ADD a3,a3,a4,LSL #3 + STR a1,[a3,#4] + ADD ip,v1,#&34 + LDMIA ip,{a4,ip} + CMP a4,ip + LDRCCB ip,[a4],#1 + STRCC a4,[v1,#&34] + MOVCS ip,v2 + STR ip,[a3,#0] + ADD ip,v1,#&34 + LDMIA ip,{a4,ip} + CMP a4,ip + MOVCS a4,v2 + BCS |L0006a8.J27.get_sof| + MOV ip,a4 + LDRB a4,[a4,#0] + ADD ip,ip,#1 + STR ip,[v1,#&34] +|L0006a8.J27.get_sof| + AND ip,a2,a4,ASR #4 + AND a4,a4,#&f + STR a4,[a3,#&c] + STR ip,[a3,#8] + ADD ip,v1,#&34 + LDMIA ip,{a4,ip} + CMP a4,ip + LDRCCB ip,[a4],#1 + STRCC a4,[v1,#&34] + MOVCS ip,v2 + ADD a1,a1,#1 + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR ip,[a3,#&10]! + LDR a3,[v1,#&4c] + CMP a1,a3 + BLT |L000658.J21.get_sof| + LDMDB fp,{v1-v3,fp,sp,pc}^ + +get_sos + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + MOV v4,#&ff + ADD a3,v1,#&34 + LDMIA a3,{a2,a3} + CMP a2,a3 + LDRCCB a3,[a2],#1 + STRCC a2,[v1,#&34] + MOVCS a3,v4 + MOV v3,a3 + SUB v2,a1,#3 + MOV a1,#3 + STR a3,[v1,#&c8] + ADD a1,a1,a3,LSL #1 + TEQ a1,v2 + BNE |L00074c.J8.get_sos| + CMP v3,#1 + BLT |L00074c.J8.get_sos| + CMP v3,#4 + BLE |L00075c.J7.get_sos| +|L00074c.J8.get_sos| + BL newline + MOV a1,#&3bc + ADD a1,a1,#&4c00 + BL exit +|L00075c.J7.get_sos| + MOV v5,#0 + CMP v3,#0 + BLE |L000818.J13.get_sos| +|L000768.J12.get_sos| + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + LDRCCB a3,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a3,#&ff + LDR a1,[v1,#&34] + CMP a1,a2 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a2,#&ff + MOV v6,a2 + SUB v2,v2,#2 + MOV v4,#0 + LDR a1,[v1,#&4c] + CMP a1,#0 + BLE |L0007d0.J22.get_sos| + LDR a2,[v1,#&50] +|L0007b0.J21.get_sos| + RSB a4,v4,v4,LSL #3 + ADD a4,a2,a4,LSL #3 + LDR a4,[a4,#0] + TEQ a4,a3 + BEQ |L0007d0.J22.get_sos| + ADD v4,v4,#1 + CMP v4,a1 + BLT |L0007b0.J21.get_sos| +|L0007d0.J22.get_sos| + CMP v4,a1 + BLGE newline + MOVGE a1,#&ca + ADDGE a1,a1,#&4f00 + BLGE exit + RSB a1,v4,v4,LSL #3 + LDR a2,[v1,#&50] + ADD a1,a2,a1,LSL #3 + ADD a2,v1,v5,LSL #2 + STR a1,[a2,#&cc]! + MOV a2,#&f + AND a2,a2,v6,ASR #4 + STR a2,[a1,#&14] + AND a2,v6,#&f + ADD v5,v5,#1 + CMP v5,v3 + STR a2,[a1,#&18]! + BLT |L000768.J12.get_sos| +|L000818.J13.get_sos| + CMP v2,#0 + LDMLEDB fp,{v1-v6,fp,sp,pc}^ + LDR a1,[v1,#&38] +|L000824.J30.get_sos| + LDR a2,[v1,#&34] + CMP a2,a1 + ADDCC a2,a2,#1 + STRCC a2,[v1,#&34] + SUB v2,v2,#1 + CMP v2,#0 + BGT |L000824.J30.get_sos| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +get_soi + STMDB sp!,{lr} + MOV a2,#0 + MOV ip,#0 + MOV a4,#1 + MOV lr,#5 +|L000858.J4.get_soi| + ADD a3,a1,a2 + STRB ip,[a3,#&84] + STRB a4,[a3,#&94] + STRB lr,[a3,#&a4] + ADD a2,a2,#1 + CMP a2,#&10 + BLT |L000858.J4.get_soi| + STR ip,[a1,#&bc] + STR a4,[a1,#&44] + STR ip,[a1,#&40] + STR a4,[a1,#&48]! + STR ip,[a1,#&70]! + LDMIA sp!,{pc}^ + +next_marker + MOV a3,#&ff + LDR a2,[a1,#&38] +|L000894.J5.next_marker| + LDR ip,[a1,#&34] + CMP ip,a2 + LDRCCB a4,[ip],#1 + STRCC ip,[a1,#&34] + MOVCS a4,a3 + TEQ a4,#&ff + BNE |L000894.J5.next_marker| +|L0008b0.J10.next_marker| + LDR ip,[a1,#&34] + CMP ip,a2 + LDRCCB a4,[ip],#1 + STRCC ip,[a1,#&34] + MOVCS a4,a3 + TEQ a4,#&ff + BEQ |L0008b0.J10.next_marker| + TEQ a4,#0 + BEQ |L000894.J5.next_marker| + MOV a1,a4 + MOVS pc,lr + +process_tables + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 +|L0008ec.J4.process_tables| + MOV a1,v1 + BL next_marker + MOV a2,a1 + CMP a1,#&ce + LDMEQDB fp,{v1,fp,sp,pc}^ + BGT |L000984.J39.process_tables| + CMP a1,#&c6 + LDMEQDB fp,{v1,fp,sp,pc}^ + BGT |L000958.J42.process_tables| + CMP a1,#&c2 + LDMEQDB fp,{v1,fp,sp,pc}^ + BGT |L000934.J45.process_tables| + TEQ a1,#1 + BEQ |L0008ec.J4.process_tables| + TEQ a1,#&c0 + TEQNE a1,#&c1 + LDMEQDB fp,{v1,fp,sp,pc}^ + B |L000a08.J7.process_tables| +|L000934.J45.process_tables| + TEQ a1,#&c3 + LDMEQDB fp,{v1,fp,sp,pc}^ + TEQ a1,#&c4 + MOVEQ a1,v1 + BLEQ get_dht + BEQ |L0008ec.J4.process_tables| + TEQ a1,#&c5 + LDMEQDB fp,{v1,fp,sp,pc}^ + B |L000a08.J7.process_tables| +|L000958.J42.process_tables| + SUB a3,a1,#&c7 + CMP a3,#6 + ADDLS pc,pc,a3,LSL #2 + B |L000a08.J7.process_tables| + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + B |L0009e4.J25.process_tables| + LDMDB fp,{v1,fp,sp,pc}^ +|L000984.J39.process_tables| + SUB a3,a1,#&cf + CMP a3,#&11 + ADDLS pc,pc,a3,LSL #2 + B |L000a08.J7.process_tables| + LDMDB fp,{v1,fp,sp,pc}^ + B |L0008ec.J4.process_tables| + B |L0008ec.J4.process_tables| + B |L0008ec.J4.process_tables| + B |L0008ec.J4.process_tables| + B |L0008ec.J4.process_tables| + B |L0008ec.J4.process_tables| + B |L0008ec.J4.process_tables| + B |L0008ec.J4.process_tables| + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + B |L0009f0.J10.process_tables| + B |L000a08.J7.process_tables| + B |L0009fc.J9.process_tables| + B |L000a08.J7.process_tables| + B |L000a08.J7.process_tables| + MOV a1,v1 + BL get_app0 + B |L0008ec.J4.process_tables| +|L0009e4.J25.process_tables| + MOV a1,v1 + BL get_dac + B |L0008ec.J4.process_tables| +|L0009f0.J10.process_tables| + MOV a1,v1 + BL get_dqt + B |L0008ec.J4.process_tables| +|L0009fc.J9.process_tables| + MOV a1,v1 + BL get_dri + B |L0008ec.J4.process_tables| +|L000a08.J7.process_tables| + MOV a1,v1 + BL skip_variable + B |L0008ec.J4.process_tables| + +read_file_header + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + LDR a3,[a1,#&34] + LDR a1,[a1,#&38] + MOV a2,#&ff + CMP a3,a1 + LDRCCB a1,[a3],#1 + STRCC a3,[v1,#&34] + MOVCS a1,a2 + TEQ a1,#&ff + BNE |L000a64.J5.read_file_header| + ADD a3,v1,#&34 + LDMIA a3,{a1,a3} + CMP a1,a3 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + TEQ a2,#&d8 + BEQ |L000a74.J4.read_file_header| +|L000a64.J5.read_file_header| + BL newline + MOV a1,#&67 + ADD a1,a1,#&5000 + BL exit +|L000a74.J4.read_file_header| + MOV a1,v1 + BL get_soi + MOV a1,v1 + BL process_tables + MOV v3,#0 + MOV v2,#1 + TEQ a1,#&c0 + TEQNE a1,#&c1 + BEQ |L000ab4.J17.read_file_header| + TEQ a1,#&c9 + BNE |L000ac8.J15.read_file_header| + MOV a2,a1 + MOV a1,v1 + BL get_sof + STR v2,[v1,#&b4] + B |L000ad8.J14.read_file_header| +|L000ab4.J17.read_file_header| + MOV a2,a1 + MOV a1,v1 + BL get_sof + STR v3,[v1,#&b4] + B |L000ad8.J14.read_file_header| +|L000ac8.J15.read_file_header| + BL newline + MOV a1,#&7b + ADD a1,a1,#&5000 + BL exit +|L000ad8.J14.read_file_header| + LDR a1,[v1,#&4c] + TEQ a1,#1 + STREQ v2,[v1,#&1c]! + LDMEQDB fp,{v1-v3,fp,sp,pc}^ + TEQ a1,#3 + BEQ |L000b04.J25.read_file_header| + TEQ a1,#4 + STRNE v3,[v1,#&1c]! + LDMNEDB fp,{v1-v3,fp,sp,pc}^ + MOV a1,#5 + B |L000b64.J44.read_file_header| +|L000b04.J25.read_file_header| + LDR a1,[v1,#&1c] + TEQ a1,#0 + LDMNEDB fp,{v1-v3,fp,sp,pc}^ + LDR a2,[v1,#&50] + LDR a1,[a2,#0] + MOV a4,a1,LSL #16 + MOV a4,a4,ASR #16 + LDR a1,[a2,#&38] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + LDR a2,[a2,#&70] + MOV a2,a2,LSL #16 + MOV a2,a2,ASR #16 + MOV a3,#3 + CMP a4,#1 + BNE |L000b50.J32.read_file_header| + TEQ a1,#2 + BEQ |L000b6c.J37.read_file_header| + B |L000b54.J38.read_file_header| +|L000b50.J32.read_file_header| + BNE |L000b6c.J37.read_file_header| +|L000b54.J38.read_file_header| + TEQ a1,#4 + TEQEQ a2,#5 + BNE |L000b6c.J37.read_file_header| + MOV a1,#4 +|L000b64.J44.read_file_header| + STR a1,[v1,#&1c]! + LDMDB fp,{v1-v3,fp,sp,pc}^ +|L000b6c.J37.read_file_header| + STR a3,[v1,#&1c]! + LDMDB fp,{v1-v3,fp,sp,pc}^ + +read_scan_header + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL process_tables + TEQ a1,#&d9 + BEQ |L000bb4.J4.read_scan_header| + TEQ a1,#&da + MOVEQ a1,v1 + BLEQ get_sos + MOVEQ a1,#1 + LDMEQDB fp,{v1,fp,sp,pc}^ + BL newline + MOV a1,#&be + ADD a1,a1,#&5000 + BL exit +|L000bb4.J4.read_scan_header| + MOV a1,#0 + LDMDB fp,{v1,fp,sp,pc}^ + + ;MPORT huff_DECODE_buildshortcut + IMPORT assert +fix_huff_tbl + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + SUB sp,sp,#&308 + MOV a2,#0 + MOV a3,#1 +|L000bdc.J4.fix_huff_tbl| + MOV a1,#1 + ADD lr,v1,a3 + LDRB a4,[lr,#0] + CMP a4,#1 + BLT |L000c14.J6.fix_huff_tbl| + AND a4,a3,#&ff +|L000bf4.J5.fix_huff_tbl| + MOV v3,a2 + ADD a2,a2,#1 + ADD ip,sp,#&204 + STRB a4,[ip,v3] + ADD a1,a1,#1 + LDRB v3,[lr,#0] + CMP v3,a1 + BGE |L000bf4.J5.fix_huff_tbl| +|L000c14.J6.fix_huff_tbl| + ADD a3,a3,#1 + CMP a3,#&10 + BLE |L000bdc.J4.fix_huff_tbl| + MOV a1,#0 + ADD a3,sp,#&204 + STRB a1,[a3,a2] + MOV a3,#0 + LDRB a4,[sp,#&204] + MOV a2,#0 + LDRB ip,[sp,#&204] + TEQ ip,#0 + BEQ |L000ca8.J11.fix_huff_tbl| +|L000c44.J10.fix_huff_tbl| + ADD lr,sp,#&204 + LDRB lr,[lr,a2] + TEQ lr,a4 + BNE |L000c88.J14.fix_huff_tbl| +|L000c54.J13.fix_huff_tbl| + MOV lr,a2 + ADD a2,a2,#1 + ADD ip,sp,lr,LSL #1 + STRB a3,[ip,#0] + MOV lr,a3,ASR #8 + STRB lr,[ip,#1] + ADD a3,a3,#1 + MOV a3,a3,LSL #16 + MOV a3,a3,LSR #16 + ADD lr,sp,#&204 + LDRB lr,[lr,a2] + TEQ lr,a4 + BEQ |L000c54.J13.fix_huff_tbl| +|L000c88.J14.fix_huff_tbl| + MOV a3,a3,LSL #1 + MOV a3,a3,LSL #16 + MOV a3,a3,LSR #16 + ADD a4,a4,#1 + ADD lr,sp,#&204 + LDRB ip,[lr,a2] + TEQ ip,#0 + BNE |L000c44.J10.fix_huff_tbl| +|L000ca8.J11.fix_huff_tbl| + MOV a2,#0 + MOV a3,#1 + MVN v6,#0 +|L000cb4.J18.fix_huff_tbl| + ADD v3,v1,a3 + LDRB a4,[v3,#0] + TEQ a4,#0 + BEQ |L000d08.J19.fix_huff_tbl| + ADD lr,v1,a3,LSL #2 + STR a2,[lr,#&15c] + ADD a4,lr,#&15c + LDR v4,[sp,a2,LSL #1] + MOV v4,v4,LSL #16 + MOV v4,v4,LSR #16 + LDR ip,[a4,#0] + SUB v4,ip,v4 + STR v4,[a4,#0] + LDRB a4,[v3,#0] + ADD a2,a4,a2 + ADD a4,sp,a2,LSL #1 + LDR a4,[a4,#-2] + MOV a4,a4,LSL #16 + MOV a4,a4,LSR #16 + STR a4,[lr,#&114]! + B |L000d10.J21.fix_huff_tbl| +|L000d08.J19.fix_huff_tbl| + ADD a4,v1,a3,LSL #2 + STR v6,[a4,#&114]! +|L000d10.J21.fix_huff_tbl| + ADD a3,a3,#1 + CMP a3,#&10 + BLE |L000cb4.J18.fix_huff_tbl| + MVN a2,#&ff00000 + ADD a2,a2,#&10000000 + MOV v3,#0 + MOV v5,#&20 + STR a2,[v1,#&158] +|L000d30.J23.fix_huff_tbl| + MOV a1,v3,LSL #24 + MOV a2,v1 + ADD v2,v2,#&104 + STMIA v2,{a1,v5} + SUB v2,v2,#&104 + MOV a1,v2 + BL huff_DECODE_buildshortcut + MOV v4,a1 + LDR a1,[v2,#&108] + CMP a1,#&18 + ADDLT a1,v1,v3,LSL #2 + STRLT v6,[a1,#&1a0]! + BLT |L000d8c.J26.fix_huff_tbl| + CMP v4,#0 + MOVLT a1,#0 + MOVGE a1,#1 + MOV a2,#4 + BL assert + LDR a1,[v2,#&108] + SUB a1,v5,a1 + ORR a1,v4,a1,LSL #24 + ADD a2,v1,v3,LSL #2 + STR a1,[a2,#&1a0]! +|L000d8c.J26.fix_huff_tbl| + ADD v3,v3,#1 + CMP v3,#&100 + BLT |L000d30.J23.fix_huff_tbl| + MOV a1,#0 + STR a1,[v2,#&108] + STR a1,[v2,#&104]! + LDMDB fp,{v1-v6,fp,sp,pc}^ + +get_bits + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + LDR a1,[a1,#&108] + CMP a2,a1 + BLE |L000e40.J5.get_bits| + MOV v3,#&ff +|L000dcc.J4.get_bits| + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + MOVCS a1,v3 + BCS |L000dec.J7.get_bits| + LDRB a3,[a1],#1 + STR a1,[v1,#&34] + MOV a1,a3 +|L000dec.J7.get_bits| + LDR a3,[v1,#&104] + ORR a3,a1,a3,LSL #8 + STR a3,[v1,#&104] + LDR a3,[v1,#&108] + ADD a3,a3,#8 + TEQ a1,#&ff + STR a3,[v1,#&108] + BNE |L000e34.J10.get_bits| + LDR a1,[v1,#&34] + CMP a1,a2 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a2,v3 + TEQ a2,#0 + BLNE newline + MOVNE a1,#&394 + ADDNE a1,a1,#&2400 + BLNE exit +|L000e34.J10.get_bits| + LDR a1,[v1,#&108] + CMP v2,a1 + BGT |L000dcc.J4.get_bits| +|L000e40.J5.get_bits| + LDR a1,[v1,#&108] + SUB a1,a1,v2 + STR a1,[v1,#&108] + LDR a2,[v1,#&104]! + MOV a1,a2,ASR a1 + MOV a2,#1 + MOV a2,a2,LSL v2 + SUB a2,a2,#1 + AND a1,a1,a2 + LDMDB fp,{v1-v3,fp,sp,pc}^ + +huff_DECODE_buildshortcut + MOV ip,sp + STMDB sp!,{v1-v4,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + LDR a2,[a1,#&108] + TEQ a2,#0 + BEQ |L000ea0.J5.huff_DECODE_buildshortcut| + SUB a2,a2,#1 + STR a2,[v1,#&108] + LDR a1,[v1,#&104] + MOV a1,a1,ASR a2 + AND a1,a1,#1 + B |L000ea8.J4.huff_DECODE_buildshortcut| +|L000ea0.J5.huff_DECODE_buildshortcut| + MOV a2,#1 + BL get_bits +|L000ea8.J4.huff_DECODE_buildshortcut| + MOV v4,a1 + MOV v3,#1 + B |L000eec.J8.huff_DECODE_buildshortcut| +|L000eb4.J7.huff_DECODE_buildshortcut| + LDR a1,[v1,#&108] + TEQ a1,#0 + BEQ |L000ed8.J10.huff_DECODE_buildshortcut| + SUB a1,a1,#1 + STR a1,[v1,#&108] + LDR a2,[v1,#&104] + MOV a1,a2,ASR a1 + AND a1,a1,#1 + B |L000ee4.J9.huff_DECODE_buildshortcut| +|L000ed8.J10.huff_DECODE_buildshortcut| + MOV a1,v1 + MOV a2,#1 + BL get_bits +|L000ee4.J9.huff_DECODE_buildshortcut| + ADD v4,a1,v4,LSL #1 + ADD v3,v3,#1 +|L000eec.J8.huff_DECODE_buildshortcut| + ADD a1,v2,v3,LSL #2 + LDR a1,[a1,#&114] + CMP a1,v4 + BGE |L000f04.J12.huff_DECODE_buildshortcut| + CMP v3,#8 + BLE |L000eb4.J7.huff_DECODE_buildshortcut| +|L000f04.J12.huff_DECODE_buildshortcut| + CMP v3,#8 + MVNGT a1,#0 + LDMGTDB fp,{v1-v4,fp,sp,pc}^ + ADD a1,v2,v3,LSL #2 + LDR a1,[a1,#&15c] + ADD a1,a1,v4 + ADD a1,v2,a1 + LDRB a1,[a1,#&11] + LDMDB fp,{v1-v4,fp,sp,pc}^ + +huff_decoder_init + MOV a2,#0 + STR a2,[a1,#&108]! + MOVS pc,lr + +mono_convert_block + STMDB sp!,{v1,lr} + MOV ip,#0 +|L000f3c.J4.mono_convert_block| + MOV a4,#0 +|L000f40.J5.mono_convert_block| + ADD lr,ip,a4,LSL #3 + LDR lr,[a1,lr,LSL #2] + ADD lr,lr,#&40000 + MOV lr,lr,ASR #19 + ADDS lr,lr,#&80 + MOVMI lr,#0 + BMI |L000f64.J8.mono_convert_block| + CMP lr,#&ff + MOVGT lr,#&ff +|L000f64.J8.mono_convert_block| + ORR v1,lr,lr,LSL #8 + ORR lr,v1,lr,LSL #16 + STR lr,[a2,a4,LSL #2] + ADD a4,a4,#1 + CMP a4,#8 + BLT |L000f40.J5.mono_convert_block| + ADD a2,a2,a3,LSL #2 + ADD ip,ip,#1 + CMP ip,#8 + BLT |L000f3c.J4.mono_convert_block| + LDMIA sp!,{v1,pc}^ + +mono_convert_pixel + ADDS a1,a2,#&80 + MOVMI a1,#0 + BMI |L000fa4.J6.mono_convert_pixel| + CMP a1,#&ff + MOVGT a1,#&ff +|L000fa4.J6.mono_convert_pixel| + ORR a2,a1,a1,LSL #8 + ORR a1,a2,a1,LSL #16 + MOVS pc,lr + +colour_convert_block + MOV ip,sp + STMDB sp!,{a1-a3,v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + SUB sp,sp,#&14 + MOV v5,a1 + ADD a1,a1,#&100 + STR a1,[sp,#&10] + ADD a1,a1,#&100 + STR a1,[sp,#&c] + ADD a1,a1,#&100 + STR a1,[sp,#8] + ADD a1,a1,#&100 + STR a1,[sp,#4] + ADD a1,a1,#&100 + MOV a3,#0 + STR a1,[sp,#0] +|L000ff0.J4.colour_convert_block| + MOV a1,#0 + AND v3,a3,#7 + MOV v2,a3,ASR #1 +|L000ffc.J5.colour_convert_block| + AND a4,a1,#7 + ADD ip,v3,a4,LSL #3 + CMP a3,#8 + BGE |L00101c.J7.colour_convert_block| + CMP a1,#8 + LDRGE a4,[sp,#&10] + MOVLT a4,v5 + B |L001028.J6.colour_convert_block| +|L00101c.J7.colour_convert_block| + CMP a1,#8 + LDRGE a4,[sp,#8] + LDRLT a4,[sp,#&c] +|L001028.J6.colour_convert_block| + LDR a4,[a4,ip,LSL #2] + MOV ip,a1,ASR #1 + ADD ip,v2,ip,LSL #3 + LDR lr,[sp,#4] + LDR lr,[lr,ip,LSL #2] + LDR v1,[sp,#0] + LDR ip,[v1,ip,LSL #2] + ADD a4,a4,#&40000 + MOV a4,a4,ASR #19 + ADD a4,a4,#&80 + ADD lr,lr,#&40000 + MOV lr,lr,ASR #19 + ADD ip,ip,#&40000 + MOV v1,ip,ASR #19 + ADD v4,v1,v1,LSL #5 + RSB v4,v4,v4,LSL #3 + ADD v4,v4,v1,LSL #7 + ADD ip,lr,lr,LSL #1 + ADD ip,ip,lr,LSL #3 + MOV ip,ip,LSL #3 + RSB v6,ip,#0 + ADD ip,v1,v1,LSL #1 + RSB ip,ip,v1,LSL #6 + ADD ip,ip,ip,LSL #1 + SUB v1,v6,ip + ADD ip,lr,lr,LSL #5 + RSB ip,ip,lr,LSL #8 + ADD ip,ip,lr,LSL #2 + MOV ip,ip,LSL #1 + ADD lr,v4,#&80 + ADDS lr,a4,lr,ASR #8 + MOVMI lr,#0 + BMI |L0010b4.J15.colour_convert_block| + CMP lr,#&ff + MOVGT lr,#&ff +|L0010b4.J15.colour_convert_block| + ADD v1,v1,#&80 + ADDS v1,a4,v1,ASR #8 + MOVMI v1,#0 + BMI |L0010cc.J19.colour_convert_block| + CMP v1,#&ff + MOVGT v1,#&ff +|L0010cc.J19.colour_convert_block| + ADD ip,ip,#&80 + ADDS a4,a4,ip,ASR #8 + MOVMI a4,#0 + BMI |L0010e4.J23.colour_convert_block| + CMP a4,#&ff + MOVGT a4,#&ff +|L0010e4.J23.colour_convert_block| + ORR ip,lr,v1,LSL #8 + ORR a4,ip,a4,LSL #16 + STR a4,[a2,a1,LSL #2] + ADD a1,a1,#1 + CMP a1,#&10 + BLT |L000ffc.J5.colour_convert_block| + LDR a1,[fp,#-&28] + ADD a2,a2,a1,LSL #2 + ADD a3,a3,#1 + CMP a3,#&10 + BLT |L000ff0.J4.colour_convert_block| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +colour_convert_unusual_block + MOV ip,sp + STMDB sp!,{a1-a4} + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#&14 + SUB sp,sp,#&20 + LDR v3,[fp,#&14] + STR a1,[sp,#&14] + ADD a1,a1,#&100 + STR a1,[sp,#&10] + ADD a1,a1,#&100 + STR a1,[sp,#&c] + ADD a1,a1,#&100 + STR a1,[sp,#8] + ADD a1,a1,#&100 + STR a1,[sp,#4] + ADD a1,a1,#&100 + MOV a3,#0 + CMP a3,v3,LSL #3 + STR a1,[sp,#0] + BGE |L0012a4.J35.colour_convert_unusual_block| + SUB a1,a4,#1 + STR a1,[sp,#&1c] +|L00116c.J4.colour_convert_unusual_block| + MOV a1,#0 + CMP a1,a4,LSL #3 + BGE |L001290.J8.colour_convert_unusual_block| + AND v4,a3,#7 + SUB lr,v3,#1 + MOV ip,a3,ASR lr + STR ip,[sp,#&18] +|L001188.J7.colour_convert_unusual_block| + AND ip,a1,#7 + ADD lr,v4,ip,LSL #3 + CMP a3,#8 + BGE |L0011a8.J11.colour_convert_unusual_block| + CMP a1,#8 + LDRGE ip,[sp,#&10] + LDRLT ip,[sp,#&14] + B |L0011b4.J10.colour_convert_unusual_block| +|L0011a8.J11.colour_convert_unusual_block| + CMP a1,#8 + LDRGE ip,[sp,#8] + LDRLT ip,[sp,#&c] +|L0011b4.J10.colour_convert_unusual_block| + LDR lr,[ip,lr,LSL #2] + LDR v1,[sp,#&1c] + MOV v1,a1,ASR v1 + LDR ip,[sp,#&18] + ADD ip,ip,v1,LSL #3 + LDR v1,[sp,#4] + LDR v1,[v1,ip,LSL #2] + LDR v2,[sp,#0] + LDR ip,[v2,ip,LSL #2] + ADD lr,lr,#&40000 + MOV lr,lr,ASR #19 + ADD lr,lr,#&80 + ADD v1,v1,#&40000 + MOV v1,v1,ASR #19 + ADD ip,ip,#&40000 + MOV v2,ip,ASR #19 + ADD v5,v2,v2,LSL #5 + RSB v5,v5,v5,LSL #3 + ADD v5,v5,v2,LSL #7 + ADD ip,v1,v1,LSL #1 + ADD ip,ip,v1,LSL #3 + MOV ip,ip,LSL #3 + RSB v6,ip,#0 + ADD ip,v2,v2,LSL #1 + RSB ip,ip,v2,LSL #6 + ADD ip,ip,ip,LSL #1 + SUB v2,v6,ip + ADD ip,v1,v1,LSL #5 + RSB ip,ip,v1,LSL #8 + ADD ip,ip,v1,LSL #2 + MOV ip,ip,LSL #1 + ADD v1,v5,#&80 + ADDS v1,lr,v1,ASR #8 + MOVMI v1,#0 + BMI |L001248.J19.colour_convert_unusual_block| + CMP v1,#&ff + MOVGT v1,#&ff +|L001248.J19.colour_convert_unusual_block| + ADD v2,v2,#&80 + ADDS v2,lr,v2,ASR #8 + MOVMI v2,#0 + BMI |L001260.J23.colour_convert_unusual_block| + CMP v2,#&ff + MOVGT v2,#&ff +|L001260.J23.colour_convert_unusual_block| + ADD ip,ip,#&80 + ADDS ip,lr,ip,ASR #8 + MOVMI ip,#0 + BMI |L001278.J27.colour_convert_unusual_block| + CMP ip,#&ff + MOVGT ip,#&ff +|L001278.J27.colour_convert_unusual_block| + ORR lr,v1,v2,LSL #8 + ORR ip,lr,ip,LSL #16 + STR ip,[a2,a1,LSL #2] + ADD a1,a1,#1 + CMP a1,a4,LSL #3 + BLT |L001188.J7.colour_convert_unusual_block| +|L001290.J8.colour_convert_unusual_block| + LDR a1,[fp,#&c] + ADD a2,a2,a1,LSL #2 + ADD a3,a3,#1 + CMP a3,v3,LSL #3 + BLT |L00116c.J4.colour_convert_unusual_block| +|L0012a4.J35.colour_convert_unusual_block| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +colour_convert_pixels + STMDB sp!,{v1-v3,lr} + ADD a2,a2,#4 + MOV a2,a2,ASR #3 + ADD a3,a3,#4 + MOV a3,a3,ASR #3 + ADD a4,a3,a3,LSL #5 + RSB a4,a4,a4,LSL #3 + ADD a4,a4,a3,LSL #7 + ADD ip,a2,a2,LSL #1 + ADD ip,ip,a2,LSL #3 + MOV ip,ip,LSL #3 + RSB lr,ip,#0 + ADD ip,a3,a3,LSL #1 + RSB a3,ip,a3,LSL #6 + ADD a3,a3,a3,LSL #1 + SUB a3,lr,a3 + ADD ip,a2,a2,LSL #5 + RSB ip,ip,a2,LSL #8 + ADD a2,ip,a2,LSL #2 + MOV a2,a2,LSL #1 + ADD a4,a4,#&80 + MOV v2,a4,ASR #8 + ADD a3,a3,#&80 + MOV v1,a3,ASR #8 + ADD a2,a2,#&80 + MOV lr,a2,ASR #8 + MOV a4,#0 + MOV v3,#&80 +|L001318.J4.colour_convert_pixels| + LDR a2,[a1,a4,LSL #2] + ADD a2,a2,#4 + ADD ip,v3,a2,ASR #3 + ADDS a3,v2,ip + MOVMI a3,#0 + BMI |L001338.J7.colour_convert_pixels| + CMP a3,#&ff + MOVGT a3,#&ff +|L001338.J7.colour_convert_pixels| + ADDS a2,v1,ip + MOVMI a2,#0 + BMI |L00134c.J11.colour_convert_pixels| + CMP a2,#&ff + MOVGT a2,#&ff +|L00134c.J11.colour_convert_pixels| + ADDS ip,lr,ip + MOVMI ip,#0 + BMI |L001360.J15.colour_convert_pixels| + CMP ip,#&ff + MOVGT ip,#&ff +|L001360.J15.colour_convert_pixels| + ORR a2,a3,a2,LSL #8 + ORR a2,a2,ip,LSL #16 + STR a2,[a1,a4,LSL #2] + ADD a4,a4,#1 + CMP a4,#4 + BLT |L001318.J4.colour_convert_pixels| + LDMIA sp!,{v1-v3,pc}^ + + EXPORT assembler_panic +assembler_panic + MOVS pc,lr + +init_workspace + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV a3,a2 + MOV a2,#0 + LDR v2,[a1,#&20] + LDR v3,[a1,#&10] + BL memset + STR v2,[v1,#&20] + STR v3,[v1,#&10] + ADD a1,v1,#&1c + ADD a1,a1,#&800 + STR a1,[v1,#&50] + MOV a1,#0 +|L0013bc.J4.init_workspace| + ADD a2,v1,a1,LSL #8 + ADD a2,a2,#&fc + ADD a2,a2,#&800 + ADD a3,v1,a1,LSL #2 + ADD a1,a1,#1 + CMP a1,#4 + STR a2,[a3,#&54]! + BLT |L0013bc.J4.init_workspace| + MOV a1,#0 +|L0013e0.J6.init_workspace| + RSB a2,a1,a1,LSL #4 + ADD a2,a2,a2,LSL #1 + ADD a3,v1,a2,LSL #5 + SUB a4,a3,#&304 + ADD a4,a4,#&1000 + ADD a2,v1,a1,LSL #2 + ADD a3,a3,#&37c + ADD a3,a3,#&2000 + ADD a1,a1,#1 + CMP a1,#4 + STR a4,[a2,#&64]! + STR a3,[a2,#&10] + BLT |L0013e0.J6.init_workspace| + LDMDB fp,{v1-v3,fp,sp,pc}^ + +save_huff_stream + MOV ip,sp + STMDB sp!,{v1-v4,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + LDR a1,[a1,#&108] + MOV v4,#1 + MOV v3,#0 + CMP a1,#&20 + MOVGE a1,v3 + MOVLT a1,v4 + MOV a2,#2 + BL assert + LDR a1,[v1,#&108] + CMP a1,#0 + MOVLT a1,v3 + MOVGE a1,v4 + MOV a2,#2 + BL assert + ADD a2,v1,#&30 + LDMIA a2,{a1,a2} + CMP a1,a2 + MOVCS a1,v3 + MOVCC a1,v4 + MOV a2,#2 + BL assert + LDR a1,[v1,#&38] + LDR a2,[v1,#&34] + CMP a2,a1 + MOVCS a1,v3 + MOVCC a1,v4 + MOV a2,#2 + BL assert + ADD a2,v1,#&30 + LDMIA a2,{a1,a2} + SUB a2,a2,a1 + LDR a1,[v1,#&108] + ADD a1,a1,a2,LSL #5 + STR a1,[v2,#0] + LDR a1,[v1,#&104] + STR a1,[v2,#4] + LDR a1,[v1,#&e4] + STRB a1,[v2,#8] + MOV a1,a1,ASR #8 + STRB a1,[v2,#9] + LDR a1,[v1,#&e8] + STRB a1,[v2,#&a] + MOV a1,a1,ASR #8 + STRB a1,[v2,#&b] + LDR a1,[v1,#&ec] + STRB a1,[v2,#&c] + MOV a1,a1,ASR #8 + STRB a1,[v2,#&d] + LDR a1,[v1,#&c0] + STRB a1,[v2,#&10] + MOV a1,a1,ASR #8 + STRB a1,[v2,#&11] + LDR a1,[v1,#&c4]! + STRB a1,[v2,#&12] + MOV a1,a1,ASR #8 + STRB a1,[v2,#&13] + LDMDB fp,{v1-v4,fp,sp,pc}^ + +restore_huff_stream + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + LDR a1,[a2,#4] + STR a1,[v1,#&104] + LDR a1,[a2,#0] + CMP a1,#0 + ADDLT a1,a1,#&1f + LDR a3,[v1,#&30] + ADD a1,a3,a1,ASR #5 + STR a1,[v1,#&34] + LDR a1,[a2,#0] + AND a1,a1,#&1f + STR a1,[v1,#&108] + LDR a1,[a2,#8] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR a1,[v1,#&e4] + LDR a1,[a2,#&a] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR a1,[v1,#&e8] + LDR a1,[a2,#&c] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR a1,[v1,#&ec] + LDR a1,[a2,#&10] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR a1,[v1,#&c0] + LDR a1,[a2,#&12] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR a1,[v1,#&c4] + MOV v3,#1 + MOV v2,#0 + ADD a2,v1,#&30 + LDMIA a2,{a1,a2} + CMP a1,a2 + MOVCS a1,v2 + MOVCC a1,v3 + MOV a2,#4 + BL assert + ADD v1,v1,#&30 + LDMIB v1!,{a1,a2} + CMP a1,a2 + MOVCS a1,v2 + MOVCC a1,v3 + MOV a2,#4 + LDMDB fp,{v1-v3,fp,sp,lr} + B assert + +process_restart + MOV ip,sp + STMDB sp!,{v1-v4,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + LDR a1,[a1,#&34] + LDRB v4,[a1],#1 + STR a1,[v1,#&34] + MOV v3,#1 + MOV v2,#0 + LDR a1,[v1,#&108] + CMP a1,#7 + MOVGT a1,v2 + MOVLE a1,v3 + MOV a2,#2 + BL assert + TEQ v4,#&ff + MOVNE a1,v2 + MOVEQ a1,v3 + MOV a2,#2 + BL assert + LDR a1,[v1,#&34] + LDRB a1,[a1,#0] + TEQ a1,#&ff + BNE |L001658.J11.process_restart| +|L001640.J10.process_restart| + LDR a1,[v1,#&34] + ADD a1,a1,#1 + STR a1,[v1,#&34] + LDRB a1,[a1,#0] + TEQ a1,#&ff + BEQ |L001640.J10.process_restart| +|L001658.J11.process_restart| + LDR a1,[v1,#&34] + LDRB v4,[a1],#1 + STR a1,[v1,#&34] + AND a1,v4,#&f8 + TEQ a1,#&d0 + MOVNE a1,v2 + MOVEQ a1,v3 + MOV a2,#2 + BL assert + AND a1,v4,#7 + LDR a2,[v1,#&c4] + TEQ a1,a2 + MOVNE a1,v2 + MOVEQ a1,v3 + MOV a2,#2 + BL assert + MOV a2,v2 + STR a2,[v1,#&108] + STR a2,[v1,#&104] + LDR a1,[v1,#&bc] + STR a1,[v1,#&c0] + LDR a1,[v1,#&c4] + ADD a1,a1,#1 + AND a1,a1,#7 + STR a1,[v1,#&c4] + MOV a1,#0 + LDR a3,[v1,#&c8] + CMP a3,#0 + LDMLEDB fp,{v1-v4,fp,sp,pc}^ +|L0016cc.J20.process_restart| + ADD a3,v1,a1,LSL #2 + ADD a1,a1,#1 + STR a2,[a3,#&e4]! + LDR a3,[v1,#&c8] + CMP a1,a3 + BLT |L0016cc.J20.process_restart| + LDMDB fp,{v1-v4,fp,sp,pc}^ + + IMPORT asm_huff_skip_blocks +do_huff_skip_blocks + MOV ip,sp + STMDB sp!,{a1-a4} + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#&14 + MOV v1,a1 + MOV v2,a2 + MOV v3,a3 + LDR v4,[fp,#&1c] + LDR v5,[fp,#&18] + LDR v6,[fp,#&14] + LDR a2,[a1,#&bc] + TEQ a2,#0 + BEQ |L00178c.J4.do_huff_skip_blocks| + CMP v4,#0 + LDMLEDB fp,{v1-v6,fp,sp,pc}^ + B |L001730.J10.do_huff_skip_blocks| +|L001728.J6.do_huff_skip_blocks| + TEQ a1,#0 + BEQ |L00174c.J9.do_huff_skip_blocks| +|L001730.J10.do_huff_skip_blocks| + LDR a1,[v1,#&c0] + TEQ a1,#0 + MOVEQ a1,v1 + BLEQ process_restart + LDR a1,[v1,#&c0] + SUB a1,a1,#1 + STR a1,[v1,#&c0] +|L00174c.J9.do_huff_skip_blocks| + MOV a4,#1 + MOV a3,v5 + MOV a2,v6 + STMDB sp!,{a2-a4} + MOV a3,v3 + MOV a2,v2 + MOV a1,v1 + LDR a4,[fp,#&10] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + SUB v4,v4,#1 + ADD v2,v2,#&100 + CMP v4,#0 + LDR a1,[fp,#&20] + BGT |L001728.J6.do_huff_skip_blocks| + LDMDB fp,{v1-v6,fp,sp,pc}^ +|L00178c.J4.do_huff_skip_blocks| + MOV a4,v4 + MOV a3,v5 + MOV a2,v6 + STMDB sp!,{a2-a4} + MOV a3,v3 + MOV a2,v2 + LDR a4,[fp,#&10] + BL asm_huff_skip_blocks + LDMDB fp,{v1-v6,fp,sp,pc}^ + + IMPORT asm_huff_decode_blocks +do_huff_decode_blocks + MOV ip,sp + STMDB sp!,{a1-a4} + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#&14 + MOV v1,a1 + MOV v2,a2 + MOV v3,a3 + LDR v4,[fp,#&1c] + LDR v5,[fp,#&18] + LDR v6,[fp,#&14] + LDR a2,[a1,#&bc] + TEQ a2,#0 + BEQ |L001854.J4.do_huff_decode_blocks| + CMP v4,#0 + LDMLEDB fp,{v1-v6,fp,sp,pc}^ + B |L0017f8.J10.do_huff_decode_blocks| +|L0017f0.J6.do_huff_decode_blocks| + TEQ a1,#0 + BEQ |L001814.J9.do_huff_decode_blocks| +|L0017f8.J10.do_huff_decode_blocks| + LDR a1,[v1,#&c0] + TEQ a1,#0 + MOVEQ a1,v1 + BLEQ process_restart + LDR a1,[v1,#&c0] + SUB a1,a1,#1 + STR a1,[v1,#&c0] +|L001814.J9.do_huff_decode_blocks| + MOV a4,#1 + MOV a3,v5 + MOV a2,v6 + STMDB sp!,{a2-a4} + MOV a3,v3 + MOV a2,v2 + MOV a1,v1 + LDR a4,[fp,#&10] + BL asm_huff_decode_blocks + ADD sp,sp,#&c + SUB v4,v4,#1 + ADD v2,v2,#&100 + CMP v4,#0 + LDR a1,[fp,#&20] + BGT |L0017f0.J6.do_huff_decode_blocks| + LDMDB fp,{v1-v6,fp,sp,pc}^ +|L001854.J4.do_huff_decode_blocks| + MOV a4,v4 + MOV a3,v5 + MOV a2,v6 + STMDB sp!,{a2-a4} + MOV a3,v3 + MOV a2,v2 + LDR a4,[fp,#&10] + BL asm_huff_decode_blocks + LDMDB fp,{v1-v6,fp,sp,pc}^ + + ;MPORT jpeg_scan_file +do_jpeg_scan_file + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV lr,a3 + MOV ip,a4 + MOV v1,a1 + STR a2,[a1,#&10] + MVN a1,#0 + MOV a4,#0 + MVN a3,#0 + MVN a2,#0 + STR a1,[v1,#0] + MVN a1,#&80000000 + STMDB sp!,{a1-a4} + MOV a3,ip + MOV a2,lr + MOV a1,v1 + BL jpeg_scan_file + LDMDB fp,{v1,fp,sp,pc}^ + +do_jpeg_scan_file_16 + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV lr,a3 + MOV ip,a4 + MOV v1,a1 + STR a2,[a1,#&10] + MVN a1,#0 + MOV a4,#&10 + MVN a3,#0 + MVN a2,#0 + STR a1,[v1,#0] + MVN a1,#&80000000 + STMDB sp!,{a1-a4} + MOV a3,ip + MOV a2,lr + MOV a1,v1 + MOV a4,#0 + BL jpeg_scan_file + LDMDB fp,{v1,fp,sp,pc}^ + + IMPORT |__rt_sdiv| +jpeg_scan_file + MOV ip,sp + STMDB sp!,{a1-a4} + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#&14 + MOV v1,a1 + MOV v5,a2 + MOV v4,a3 + MOV v3,a4 + SUB sp,sp,#&20 + LDR v2,[fp,#&20] + TST v2,#2 + LDR v6,[fp,#&14] + BICNE v2,v2,#&38 + CMP v3,#0 + MOVLT v3,#0 + TST v2,#&28 + BEQ |L001968.J8.jpeg_scan_file| + SUBS v3,v3,#&10 + MOVMI v3,#0 + BIC v3,v3,#&f + ADD v6,v6,#&10 +|L001968.J8.jpeg_scan_file| + LDR a2,[v1,#0] + CMP a2,#0 + BNE |L001a78.J12.jpeg_scan_file| + LDR a2,[v1,#&30] + TEQ a2,v5 + BNE |L001a80.J42.jpeg_scan_file| + LDR a3,[v1,#&38] + SUB a2,a3,a2 + TEQ a2,v4 + BNE |L001a80.J42.jpeg_scan_file| + LDR a2,[fp,#&18] + CMN a2,#1 + LDRNE a2,[v1,#&14] + LDRNE a3,[fp,#&18] + TEQNE a2,a3 + BNE |L001a80.J42.jpeg_scan_file| + LDR a2,[fp,#&1c] + CMN a2,#1 + LDRNE a2,[v1,#&18] + LDRNE a3,[fp,#&1c] + TEQNE a2,a3 + BNE |L001a80.J42.jpeg_scan_file| + MOVS a2,v4 + ADDMI a2,a2,#7 + MOV a2,a2,ASR #3 + LDR a2,[v5,a2,LSL #2] + LDR a3,[v1,#&10c] + TEQ a2,a3 + BNE |L001a80.J42.jpeg_scan_file| + MOV a3,v4 + CMP v4,#0 + ADDLT a3,a3,#3 + MOV a3,a3,ASR #2 + MOV a2,v4 + ADDLT a2,a2,#&f + SUB a2,a3,a2,ASR #4 + LDR a3,[v5,a2,LSL #2] + LDR a2,[v1,#&110] + TEQ a3,a2 + BNE |L001a80.J42.jpeg_scan_file| + MOV a2,v4 + CMP v4,#0 + ADDLT a2,a2,#3 + MOV a2,a2,ASR #2 + MOV a3,v4 + ADDLT a3,a3,#&1f + SUB a2,a2,a3,ASR #5 + LDR a3,[v5,a2,LSL #2] + LDR a2,[v1,#&114] + TEQ a3,a2 + LDREQ a2,[v1,#&100] + TEQEQ a2,v2 + BNE |L001a80.J42.jpeg_scan_file| + LDR a1,[v1,#&14] + CMP v6,a1 + MOVGT v6,a1 + LDR a1,[v1,#&f8] + CMP v3,a1 + BLT |L001a60.J39.jpeg_scan_file| + LDR a1,[v1,#&fc] + CMP v6,a1 + BLE |L001a68.J38.jpeg_scan_file| +|L001a60.J39.jpeg_scan_file| + MVN a1,#0 + STR a1,[v1,#&f4] +|L001a68.J38.jpeg_scan_file| + MOV a1,#0 + ADD v1,v1,#&f4 + STMIB v1!,{v3,v6} + B |L0020bc.J135.jpeg_scan_file| +|L001a78.J12.jpeg_scan_file| + MOVLT a2,#0 + STRLT a2,[v1,#&20] +|L001a80.J42.jpeg_scan_file| + LDR a2,[v1,#&10] + BL init_workspace + LDR a1,[v1,#&10] + TEQ a1,#0 + STREQ a1,[v1,#&28] + LDREQ a1,[pc, #L001bc4-.-8] + BEQ |L001ab8.J134.jpeg_scan_file| + ADD a2,v1,#&1fc + ADD a2,a2,#&3800 + ADD a1,a1,#&204 + SUB a1,a1,#&3c00 + MOV a1,a1,LSR #2 + BIC a1,a1,#&f + STR a2,[v1,#&28] +|L001ab8.J134.jpeg_scan_file| + STR a1,[v1,#&2c] + MOV a1,v4 + CMP v4,#0 + ADDLT a1,a1,#7 + MOV a1,a1,ASR #3 + LDR a1,[v5,a1,LSL #2] + MOV a2,v4 + STR a1,[v1,#&10c] + ADDLT a2,a2,#3 + MOV a2,a2,ASR #2 + MOV a1,v4 + ADDLT a1,a1,#&f + SUB a1,a2,a1,ASR #4 + LDR a1,[v5,a1,LSL #2] + MOV a2,v4 + STR a1,[v1,#&110] + ADDLT a2,a2,#3 + MOV a2,a2,ASR #2 + MOV a1,v4 + ADDLT a1,a1,#&1f + SUB a1,a2,a1,ASR #5 + LDR a1,[v5,a1,LSL #2] + STR a1,[v1,#&114] + STR v5,[v1,#&30] + STR v5,[v1,#&34] + ADD a1,v5,v4 + STR a1,[v1,#&38] + MOV a1,v1 + BL read_file_header + MOV a1,v1 + BL read_scan_header + MOV v4,#0 +|L001b38.J57.jpeg_scan_file| + ADD v5,v1,v4,LSL #2 + MOV a1,v1 + LDR a2,[v5,#&64] + BL fix_huff_tbl + MOV a1,v1 + LDR a2,[v5,#&74]! + BL fix_huff_tbl + ADD v4,v4,#1 + CMP v4,#4 + BLT |L001b38.J57.jpeg_scan_file| + MOV a1,v1 + BL huff_decoder_init + MVN a1,#0 + STR a1,[v1,#&f4] + LDR a1,[v1,#&bc] + STR a1,[v1,#&c0] + MOV a1,#0 + STR a1,[v1,#&c4] + LDR v4,[v1,#&14] + CMP v6,v4 + MOVGT v6,v4 + CMP v3,v6 + MOVGT v3,v6 + STR v2,[v1,#&100] + ADD v1,v1,#&f8 + STMIA v1,{v3,v6} + SUB v1,v1,#&f8 + LDR a1,[v1,#&3c] + TEQ a1,#8 + BEQ |L001bc8.J63.jpeg_scan_file| + MOV a2,#1 + STR a1,[v1,#4] + STR a2,[v1,#0] + MOV a1,#1 + B |L0020bc.J135.jpeg_scan_file| +L001bc4 + DCD &05f5e100 +|L001bc8.J63.jpeg_scan_file| + LDR a1,[v1,#&c8] + LDR v3,[v1,#&4c] + TEQ v3,a1 + MOVNE a1,#3 + STRNE a1,[v1,#0] + BNE |L0020bc.J135.jpeg_scan_file| + LDR a1,[fp,#&18] + TEQ v4,a1 + LDRNE a1,[fp,#&18] + CMNNE a1,#1 + BEQ |L001c00.J67.jpeg_scan_file| + MOV a1,#7 + STMIA v1,{a1,v4} + B |L0020bc.J135.jpeg_scan_file| +|L001c00.J67.jpeg_scan_file| + LDR a2,[v1,#&18] + STR a2,[sp,#&1c] + LDR a1,[fp,#&1c] + TEQ a2,a1 + LDRNE a1,[fp,#&1c] + CMNNE a1,#1 + BEQ |L001c34.J70.jpeg_scan_file| + MOV a1,#6 + STR a1,[v1,#0] + LDR a1,[sp,#&1c] + STR a1,[v1,#4]! + MOV a1,#6 + B |L0020bc.J135.jpeg_scan_file| +|L001c34.J70.jpeg_scan_file| + LDR v6,[v1,#&50] + LDR a1,[v6,#&c] + MOV v5,a1,LSL #3 + LDR a1,[sp,#&1c] + ADD a1,a1,v5 + SUB a2,a1,#1 + MOV a1,v5 + BL |__rt_sdiv| + ADD a1,a1,a1,LSL #2 + MOV a1,a1,LSL #2 + LDR a2,[v1,#&28] + MOV a1,a1,LSR #2 + STR a2,[v1,#&818] + ADD a2,a2,a1,LSL #2 + STR a2,[v1,#&28] + LDR a2,[v1,#&2c] + SUB a2,a2,a1 + MOV a1,v5 + STR a2,[v1,#&2c] + BL |__rt_sdiv| + MOV a2,a1 + CMP a1,v4 + BGE |L001ca8.J73.jpeg_scan_file| + MOV a1,#&a + STMIA v1,{a1,v4} + MOV a1,a2 + STR a1,[v1,#8]! + MOV a1,#&a + B |L0020bc.J135.jpeg_scan_file| +|L001ca8.J73.jpeg_scan_file| + MOV a2,#8 + MOV a1,#5 + ADD v5,v1,#&e4 + TEQ v3,#1 + BNE |L001db8.J75.jpeg_scan_file| + LDR a3,[v1,#&1c] + TEQ a3,#1 + MOVNE a1,#8 + STMNEIA v1,{a2,a3} + BNE |L0020bc.J135.jpeg_scan_file| + LDR a2,[v6,#8] + TEQ a2,#1 + LDREQ a2,[v6,#&c] + TEQEQ a2,#1 + BEQ |L001d00.J79.jpeg_scan_file| + STR a1,[v1,#0] + LDR a1,[v6,#8] + STR a1,[v1,#4] + LDR a1,[v6,#&c]! + STR a1,[v1,#8]! + MOV a1,#5 + B |L0020bc.J135.jpeg_scan_file| +|L001d00.J79.jpeg_scan_file| + SUB sp,sp,#8 + MOV v4,#0 + LDR a1,[v1,#&cc] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR v6,[a2,#&64]! + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#4] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + MOV v3,#0 + STR a1,[sp,#0] + LDR a1,[sp,#&24] + CMP a1,#0 + BLE |L001dac.J84.jpeg_scan_file| + ADD a1,v1,#&118 + STR a1,[sp,#&20] +|L001d50.J83.jpeg_scan_file| + ADD a1,v3,v3,LSL #2 + LDR a2,[v1,#&818] + ADD a2,a2,a1,LSL #2 + MOV a1,v1 + BL save_huff_stream + ADD v3,v3,#1 + MOV a4,#1 + LDR a1,[v1,#&14] + ADD a1,a1,#7 + MOV a3,a1,ASR #3 + MOV a2,v5 + LDR a1,[sp,#0] + STMDB sp!,{a1-a4} + MOV a3,v6 + MOV a1,v1 + LDR a2,[sp,#&30] + LDR a4,[sp,#&14] + BL do_huff_skip_blocks + ADD sp,sp,#&10 + ADD v4,v4,#8 + LDR a1,[v1,#&18] + CMP v4,a1 + BLT |L001d50.J83.jpeg_scan_file| +|L001dac.J84.jpeg_scan_file| + ADD sp,sp,#8 + BIC v2,v2,#&30 + B |L00203c.J87.jpeg_scan_file| +|L001db8.J75.jpeg_scan_file| + TEQ v3,#3 + BNE |L0020b4.J88.jpeg_scan_file| + LDR a3,[v6,#&c] + STR a3,[sp,#-4]! + LDR a4,[v6,#8] + MOV v3,a4 + CMP a4,#2 + CMPLE a3,#2 + BLE |L001df0.J90.jpeg_scan_file| + STR a1,[v1,#0] + LDR a1,[v6,#8] + STR a1,[v1,#4] + LDR a1,[v6,#&c]! + B |L001e3c.J137.jpeg_scan_file| +|L001df0.J90.jpeg_scan_file| + LDR a3,[v6,#&40] + TEQ a3,#1 + LDREQ a3,[v6,#&44] + TEQEQ a3,#1 + BEQ |L001e18.J94.jpeg_scan_file| + STR a1,[v1,#0] + LDR a1,[v6,#&40] + STR a1,[v1,#4] + LDR a1,[v6,#&44]! + B |L001e3c.J137.jpeg_scan_file| +|L001e18.J94.jpeg_scan_file| + LDR a3,[v6,#&78] + TEQ a3,#1 + LDREQ a3,[v6,#&7c] + TEQEQ a3,#1 + BEQ |L001e48.J98.jpeg_scan_file| + STR a1,[v1,#0] + LDR a1,[v6,#&78] + STR a1,[v1,#4] + LDR a1,[v6,#&7c]! +|L001e3c.J137.jpeg_scan_file| + STR a1,[v1,#8]! + MOV a1,#5 + B |L001e60.J138.jpeg_scan_file| +|L001e48.J98.jpeg_scan_file| + LDR a1,[v1,#&1c] + TEQ a1,#3 + BEQ |L001e64.J102.jpeg_scan_file| + STR a1,[v1,#4] + STR a2,[v1,#0] + MOV a1,#8 +|L001e60.J138.jpeg_scan_file| + LDMDB fp,{v1-v6,fp,sp,pc}^ +|L001e64.J102.jpeg_scan_file| + TEQ v3,#2 + LDREQ a1,[sp,#0] + TEQEQ a1,#2 + BICNE v2,v2,#&30 + SUB sp,sp,#&28 + MOV a1,#0 + MOV v4,#0 + STR a1,[sp,#&24] + LDR a1,[v1,#&cc] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#&20] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#&1c] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#&18] + LDR a1,[v1,#&d0] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#&14] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#&10] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#&c] + LDR a1,[v1,#&d4] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#8] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#4] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#0] + LDR a1,[sp,#&48] + CMP a1,#0 + BLE |L002038.J109.jpeg_scan_file| + LDR a2,[sp,#&28] + MUL a1,a2,v3 + ADD a2,v1,#&218 + STR a2,[sp,#&3c] + ADD a2,v1,#&e8 + STR a2,[sp,#&38] + ADD a2,v1,#&218 + ADD a2,a2,#&400 + STR a2,[sp,#&34] + ADD a2,v1,#&ec + STR a1,[sp,#&40] + ADD a1,v1,#&318 + ADD a1,a1,#&400 + STR a1,[sp,#&2c] + STR a2,[sp,#&30] +|L001f68.J108.jpeg_scan_file| + ADD a1,v4,v4,LSL #2 + LDR a2,[v1,#&818] + ADD a2,a2,a1,LSL #2 + MOV a1,v1 + BL save_huff_stream + ADD v4,v4,#1 + MOV v6,#0 + LDR a1,[v1,#&14] + CMP a1,#0 + BLE |L00201c.J112.jpeg_scan_file| +|L001f90.J111.jpeg_scan_file| + MOV a4,#0 + MOV a2,v5 + LDR a1,[sp,#&18] + LDR a3,[sp,#&40] + STMDB sp!,{a1-a4} + MOV a1,v1 + LDR a2,[sp,#&4c] + LDR a3,[sp,#&30] + LDR a4,[sp,#&2c] + BL do_huff_skip_blocks + ADD sp,sp,#&10 + MOV a4,#1 + LDR a2,[sp,#&c] + LDR a3,[sp,#&38] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&40] + LDR a3,[sp,#&20] + LDR a4,[sp,#&1c] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + MOV a4,#1 + LDR a2,[sp,#0] + LDR a3,[sp,#&30] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&38] + LDR a3,[sp,#&14] + LDR a4,[sp,#&10] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + ADD v6,v6,v3,LSL #3 + LDR a1,[v1,#&14] + CMP v6,a1 + BLT |L001f90.J111.jpeg_scan_file| +|L00201c.J112.jpeg_scan_file| + ADD a2,sp,#&24 + LDMIA a2,{a1,a2} + ADD a2,a1,a2,LSL #3 + STR a2,[sp,#&24] + LDR a1,[v1,#&18] + CMP a2,a1 + BLT |L001f68.J108.jpeg_scan_file| +|L002038.J109.jpeg_scan_file| + ADD sp,sp,#&2c +|L00203c.J87.jpeg_scan_file| + TST v2,#4 + BEQ |L002078.J117.jpeg_scan_file| + LDR a1,[v1,#&50] + LDR a1,[a1,#8] + MOV a1,a1,LSL #3 + LDR a2,[v1,#&2c] + BL |__rt_sdiv| + LDR a2,[v1,#&14] + CMP a1,a2,LSL #1 + LDRLT a1,[v1,#&100] + BICLT a1,a1,#4 + STRLT a1,[v1,#&100] + LDRGE a1,[v1,#4] + ORRGE a1,a1,#4 + STRGE a1,[v1,#4] +|L002078.J117.jpeg_scan_file| + TST v2,#8 + LDRNE a1,[v1,#4] + ORRNE a1,a1,#8 + STRNE a1,[v1,#4] + TST v2,#&10 + LDRNE a1,[v1,#4] + ORRNE a1,a1,#&10 + STRNE a1,[v1,#4] + TST v2,#&20 + LDRNE a1,[v1,#4] + ORRNE a1,a1,#&20 + STRNE a1,[v1,#4] + STR v2,[v1,#&100] + LDR a1,[v1,#0] + B |L0020bc.J135.jpeg_scan_file| +|L0020b4.J88.jpeg_scan_file| + MOV a1,#9 + STMIA v1,{a1,v3} +|L0020bc.J135.jpeg_scan_file| + LDMDB fp,{v1-v6,fp,sp,pc}^ + + IMPORT asm_j_rev_dct + IMPORT asm_mono_convert_block + IMPORT asm_colour_convert_block_16 + IMPORT asm_colour_convert_block + IMPORT asm_colour_convert_block_8 + IMPORT asm_get_table32k + IMPORT asm_diffuse_to_8bpp +jpeg_find_line + MOV ip,sp + STMDB sp!,{a1-a3,v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + LDR a1,[a1,#&50] + LDR a1,[a1,#&c] + ADD a1,a1,#2 + STR a1,[sp,#-&34]! + LDR a1,[v1,#&2c] + LDR a2,[sp,#0] + MOV v4,a1,ASR a2 + LDR a1,[v1,#&18] + LDR a2,[fp,#-&2c] + SUB a1,a1,a2 + SUBS a1,a1,#1 + MOV v2,#0 + STR a1,[fp,#-&2c] + MOVMI a1,v2 + MOVPL a1,#1 + MOV a2,#4 + BL assert + LDR a2,[fp,#-&2c] + LDR a1,[v1,#&18] + CMP a2,a1 + MOVGE a1,v2 + MOVLT a1,#1 + MOV a2,#4 + BL assert + LDR a2,[fp,#-&2c] + LDR a1,[sp,#0] + MOV a2,a2,ASR a1 + STR a2,[sp,#4] + LDR a1,[v1,#&f4] + TEQ a2,a1 + BEQ |L00297c.J10.jpeg_find_line| + SUB sp,sp,#4 + LDR a1,[v1,#&28] + TEQ a1,#0 + MOVEQ a1,v2 + MOVNE a1,#1 + MOV a2,#4 + BL assert + MVN a1,#0 + STR a1,[v1,#&f4] + LDR a1,[sp,#8] + ADD a2,a1,a1,LSL #2 + LDR a1,[v1,#&818] + ADD a2,a1,a2,LSL #2 + MOV a1,v1 + BL restore_huff_stream + LDR a1,[v1,#&4c] + ADD a3,v1,#&e4 + ADD v6,v1,#&118 + ADD a2,v1,#&218 + TEQ a1,#1 + STR a2,[sp,#&30] + STR a3,[sp,#&34] + BNE |L00233c.J15.jpeg_find_line| + SUB sp,sp,#8 + MOV v3,#0 + LDR a1,[v1,#&cc] + LDR v2,[v1,#&28] + LDR a2,[a1,#&10] + ADD a2,v1,a2,LSL #2 + LDR v5,[a2,#&54]! + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#4] + LDR a1,[a1,#&18] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&74] + STR a1,[sp,#0] + LDR a1,[v1,#&f8] + CMP a1,#8 + BLT |L002234.J17.jpeg_find_line| + SUB a1,a1,#8 + MOV a1,a1,ASR #3 + MOV a4,#1 + STR a1,[sp,#-4]! + MOV a3,a1 + MOV a1,v5 + LDR a2,[sp,#&40] + STMDB sp!,{a1-a4} + MOV a2,v6 + MOV a1,v1 + LDR a3,[sp,#&18] + LDR a4,[sp,#&14] + BL do_huff_skip_blocks + LDR a1,[sp,#&10]! + ADD v3,v3,a1,LSL #3 + ADD v2,v2,a1,LSL #5 + ADD sp,sp,#4 +|L002234.J17.jpeg_find_line| + LDR a1,[v1,#&100] + TST a1,#2 + LDR a1,[v1,#&fc] + BEQ |L0022c8.J19.jpeg_find_line| + CMP v3,a1 + BGE |L0022c0.J22.jpeg_find_line| +|L00224c.J21.jpeg_find_line| + MOV a4,#1 + MOV a3,#1 + MOV a1,v5 + LDR a2,[sp,#&3c] + STMDB sp!,{a1-a4} + MOV a1,v1 + LDR a2,[sp,#&48] + LDR a3,[sp,#&14] + LDR a4,[sp,#&10] + BL do_huff_skip_blocks + ADD sp,sp,#&10 + LDR a2,[v1,#&e4] + LDR a1,[v5,#0] + MUL a2,a1,a2 + MOV a1,v1 + BL mono_convert_pixel + STR a1,[v2,#0] + STR a1,[v2,#4] + STR a1,[v2,#8] + STR a1,[v2,#&c] + STR a1,[v2,#&10] + STR a1,[v2,#&14] + STR a1,[v2,#&18] + ADD v3,v3,#8 + STR a1,[v2,#&1c]! + ADD v2,v2,#4 + LDR a1,[v1,#&fc] + CMP v3,a1 + BLT |L00224c.J21.jpeg_find_line| +|L0022c0.J22.jpeg_find_line| + MOV a1,#1 + B |L002334.J130.jpeg_find_line| +|L0022c8.J19.jpeg_find_line| + CMP v3,a1 + BGE |L002330.J27.jpeg_find_line| +|L0022d0.J26.jpeg_find_line| + MOV a4,#1 + MOV a3,#1 + MOV a1,v5 + LDR a2,[sp,#&3c] + STMDB sp!,{a1-a4} + MOV a1,v1 + LDR a2,[sp,#&48] + LDR a3,[sp,#&14] + LDR a4,[sp,#&10] + BL do_huff_decode_blocks + ADD sp,sp,#&10 + MOV a1,v1 + MOV a3,#1 + LDR a2,[sp,#&38] + BL asm_j_rev_dct + MOV a1,v6 + MOV a3,v4 + MOV a2,v2 + BL asm_mono_convert_block + ADD v3,v3,#8 + ADD v2,v2,#&20 + LDR a1,[v1,#&fc] + CMP v3,a1 + BLT |L0022d0.J26.jpeg_find_line| +|L002330.J27.jpeg_find_line| + MOV a1,#8 +|L002334.J130.jpeg_find_line| + STR a1,[sp,#8]! + B |L0028a8.J30.jpeg_find_line| +|L00233c.J15.jpeg_find_line| + SUB sp,sp,#&28 + MOV v5,#0 + LDR a1,[v1,#&cc] + LDR v2,[v1,#&28] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#&24] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#&20] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#&1c] + LDR a1,[v1,#&d0] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#&18] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#&14] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#&10] + LDR a1,[v1,#&d4] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#&c] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#8] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#4] + LDR a1,[v1,#&50] + LDR a2,[a1,#&c] + STR a2,[sp,#0] + LDR v3,[a1,#8]! + ADD a2,v5,v3,LSL #3 + LDR a1,[v1,#&f8] + ADD a4,v1,#&e8 + ADD a3,v1,#&ec + CMP a2,a1 + STR a3,[sp,#&50] + STR a4,[sp,#&54] + BGT |L0024cc.J32.jpeg_find_line| + LDR a2,[sp,#0] + MUL a1,a2,v3 + STR a1,[sp,#&4c] +|L002420.J31.jpeg_find_line| + MOV a4,#0 + LDR a1,[sp,#&1c] + LDR a2,[sp,#&5c] + LDR a3,[sp,#&4c] + STMDB sp!,{a1-a4} + MOV a2,v6 + MOV a1,v1 + LDR a3,[sp,#&34] + LDR a4,[sp,#&30] + BL do_huff_skip_blocks + ADD sp,sp,#&10 + MOV a4,#1 + LDR a2,[sp,#&10] + LDR a3,[sp,#&54] + STMDB sp!,{a2-a4} + MOV a2,v6 + MOV a1,v1 + LDR a3,[sp,#&24] + LDR a4,[sp,#&20] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + MOV a4,#1 + LDR a2,[sp,#4] + LDR a3,[sp,#&50] + STMDB sp!,{a2-a4} + MOV a2,v6 + MOV a1,v1 + LDR a3,[sp,#&18] + LDR a4,[sp,#&14] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + ADD v5,v5,v3,LSL #3 + LDR a1,[v1,#&100] + TST a1,#&10 + ADDNE v2,v2,v3,LSL #4 + BNE |L0024bc.J36.jpeg_find_line| + TST a1,#&20 + ADDEQ v2,v2,v3,LSL #5 + ADDNE v2,v2,v3,LSL #3 +|L0024bc.J36.jpeg_find_line| + ADD a1,v5,v3,LSL #3 + LDR a2,[v1,#&f8] + CMP a1,a2 + BLE |L002420.J31.jpeg_find_line| +|L0024cc.J32.jpeg_find_line| + LDR a1,[v1,#&100] + TST a1,#2 + ADD a1,v1,#&318 + ADD a1,a1,#&400 + STR a1,[sp,#&48] + MOV a1,#2 + ADD a3,v1,#&218 + ADD a3,a3,#&400 + STR a3,[sp,#&44] + LDR a2,[v1,#&fc] + BEQ |L0026a8.J41.jpeg_find_line| + CMP v5,a2 + BGE |L0026a0.J44.jpeg_find_line| + LDR a2,[sp,#0] + MUL a1,a2,v3 + STR a1,[sp,#&40] +|L00250c.J43.jpeg_find_line| + SUB sp,sp,#&10 + MOV a4,#0 + MOV a3,#1 + LDR a1,[sp,#&2c] + LDR a2,[sp,#&6c] + STMDB sp!,{a1-a4} + MOV a1,v1 + LDR a2,[sp,#&78] + LDR a3,[sp,#&44] + LDR a4,[sp,#&40] + BL do_huff_skip_blocks + ADD sp,sp,#&10 + LDR a1,[v1,#&e4] + LDR a2,[sp,#&2c] + LDR a2,[a2,#0] + MUL a1,a2,a1 + MOV v6,#1 + STR a1,[sp,#0] + LDR a1,[sp,#&50] + CMP a1,#1 + BLE |L0025b0.J47.jpeg_find_line| +|L002560.J46.jpeg_find_line| + MOV a4,#1 + LDR a2,[sp,#&2c] + LDR a3,[sp,#&6c] + STMDB sp!,{a2-a4} + ADD a1,v1,v6,LSL #8 + ADD a2,a1,#&218 + MOV a1,v1 + LDR a3,[sp,#&40] + LDR a4,[sp,#&3c] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + LDR a2,[v1,#&e4] + LDR a1,[sp,#&2c] + LDR a1,[a1,#0] + MUL a2,a1,a2 + STR a2,[sp,v6,LSL #2] + ADD v6,v6,#1 + LDR a1,[sp,#&50] + CMP a1,v6 + BGT |L002560.J46.jpeg_find_line| +|L0025b0.J47.jpeg_find_line| + MOV a4,#1 + LDR a2,[sp,#&20] + LDR a3,[sp,#&64] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&60] + LDR a3,[sp,#&34] + LDR a4,[sp,#&30] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + MOV a4,#1 + LDR a2,[sp,#&14] + LDR a3,[sp,#&60] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&64] + LDR a3,[sp,#&28] + LDR a4,[sp,#&24] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + LDR a2,[v1,#&e8] + LDR a1,[sp,#&20] + LDR a1,[a1,#0] + MUL a2,a1,a2 + LDR a3,[v1,#&ec] + LDR a1,[sp,#&14] + LDR a1,[a1,#0] + MUL a3,a1,a3 + MOV a1,sp + BL colour_convert_pixels + MOV v6,#0 + MOV a3,#2 + MOV a4,#1 +|L002634.J50.jpeg_find_line| + LDR a1,[sp,#0] + STR a1,[v2,v6,LSL #2] + TEQ v3,#2 + ADDEQ a2,v2,v6,LSL #2 + LDREQ a1,[sp,#4] + STREQ a1,[a2,#&20]! + LDR a1,[sp,#&10] + TEQ a1,#2 + BNE |L00267c.J53.jpeg_find_line| + CMP v3,#2 + MOVNE a1,a4 + MOVEQ a1,a3 + LDR a2,[sp,a1,LSL #2] + ADD a1,v4,v6 + STR a2,[v2,a1,LSL #2] + ADDEQ a1,v2,a1,LSL #2 + LDREQ a2,[sp,#&c] + STREQ a2,[a1,#&20]! +|L00267c.J53.jpeg_find_line| + ADD v6,v6,#1 + CMP v6,#8 + BLT |L002634.J50.jpeg_find_line| + ADD v5,v5,v3,LSL #3 + ADD v2,v2,v3,LSL #5 + ADD sp,sp,#&10 + LDR a1,[v1,#&fc] + CMP v5,a1 + BLT |L00250c.J43.jpeg_find_line| +|L0026a0.J44.jpeg_find_line| + LDR a1,[sp,#0] + B |L0028a4.J131.jpeg_find_line| +|L0026a8.J41.jpeg_find_line| + CMP v5,a2 + BGE |L00289c.J64.jpeg_find_line| + ADD a1,v1,#&18 + ADD a1,a1,#&400 + STR a1,[sp,#&3c] + LDR a2,[sp,#0] + MUL a1,a2,v3 + STR a1,[sp,#&38] +|L0026c8.J63.jpeg_find_line| + MOV a4,#0 + LDR a1,[sp,#&1c] + LDR a2,[sp,#&5c] + LDR a3,[sp,#&38] + STMDB sp!,{a1-a4} + MOV a1,v1 + LDR a2,[sp,#&68] + LDR a3,[sp,#&34] + LDR a4,[sp,#&30] + BL do_huff_decode_blocks + ADD sp,sp,#&10 + MOV a4,#1 + LDR a2,[sp,#&10] + LDR a3,[sp,#&54] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&50] + LDR a3,[sp,#&24] + LDR a4,[sp,#&20] + BL asm_huff_decode_blocks + ADD sp,sp,#&c + MOV a4,#1 + LDR a2,[sp,#4] + LDR a3,[sp,#&50] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&54] + LDR a3,[sp,#&18] + LDR a4,[sp,#&14] + BL asm_huff_decode_blocks + ADD sp,sp,#&c + LDR a1,[v1,#&100] + TST a1,#1 + BEQ |L0027d8.J66.jpeg_find_line| + MOV a1,v1 + LDR a2,[sp,#&58] + LDR a3,[sp,#&38] + BL asm_j_rev_dct + MOV a1,v6 + MOV a3,v4 + MOV a2,v2 + BL asm_mono_convert_block + TEQ v3,#2 + BNE |L002788.J68.jpeg_find_line| + ADD a2,v2,#&20 + MOV a3,v4 + LDR a1,[sp,#&58] + BL asm_mono_convert_block +|L002788.J68.jpeg_find_line| + LDR a1,[sp,#0] + TEQ a1,#2 + BNE |L002870.J77.jpeg_find_line| + ADD a2,v2,v4,LSL #5 + TEQ v3,#1 + STR a2,[sp,#&34] + MOVNE a1,#2 + MOVEQ a1,#1 + ADD a1,v1,a1,LSL #8 + ADD a1,a1,#&118 + MOV a3,v4 + BL asm_mono_convert_block + TEQ v3,#2 + BNE |L002870.J77.jpeg_find_line| + LDR a1,[sp,#&34] + ADD a2,a1,#&20 + MOV a3,v4 + LDR a1,[sp,#&3c] + BL asm_mono_convert_block + B |L002870.J77.jpeg_find_line| +|L0027d8.J66.jpeg_find_line| + LDR a1,[sp,#&38] + TEQ a1,#4 + BNE |L002830.J78.jpeg_find_line| + MOV a1,v1 + MOV a3,#6 + LDR a2,[sp,#&58] + BL asm_j_rev_dct + LDR a1,[v1,#&100] + TST a1,#&10 + BEQ |L002814.J80.jpeg_find_line| + MOV a1,v6 + MOV a3,v4 + MOV a2,v2 + BL asm_colour_convert_block_16 + B |L002870.J77.jpeg_find_line| +|L002814.J80.jpeg_find_line| + TST a1,#&20 + MOV a1,v6 + MOV a3,v4 + MOV a2,v2 + BLEQ asm_colour_convert_block + BLNE asm_colour_convert_block_8 + B |L002870.J77.jpeg_find_line| +|L002830.J78.jpeg_find_line| + MOV a1,v1 + LDR a2,[sp,#&58] + LDR a3,[sp,#&38] + BL asm_j_rev_dct + MOV a1,v1 + MOV a3,#2 + LDR a2,[sp,#&44] + BL asm_j_rev_dct + LDR a4,[sp,#0] + STMDB sp!,{a4} + MOV a1,v6 + MOV a4,v3 + MOV a3,v4 + MOV a2,v2 + BL colour_convert_unusual_block + ADD sp,sp,#4 +|L002870.J77.jpeg_find_line| + ADD v5,v5,v3,LSL #3 + LDR a1,[v1,#&100] + TST a1,#&10 + ADDNE v2,v2,v3,LSL #4 + BNE |L002890.J89.jpeg_find_line| + TST a1,#&20 + ADDEQ v2,v2,v3,LSL #5 + ADDNE v2,v2,v3,LSL #3 +|L002890.J89.jpeg_find_line| + LDR a1,[v1,#&fc] + CMP v5,a1 + BLT |L0026c8.J63.jpeg_find_line| +|L00289c.J64.jpeg_find_line| + LDR a1,[sp,#0] + MOV a1,a1,LSL #3 +|L0028a4.J131.jpeg_find_line| + STR a1,[sp,#&28]! +|L0028a8.J30.jpeg_find_line| + LDR a1,[v1,#&100] + TST a1,#8 + BEQ |L002970.J94.jpeg_find_line| + LDR a1,[v1,#&20] + TEQ a1,#0 + BNE |L0028e0.J96.jpeg_find_line| + LDR a1,[v1,#&24] + TEQ a1,#0 + BNE |L0028e0.J96.jpeg_find_line| + BL asm_get_table32k + STR a1,[v1,#&20] + TEQ a1,#0 + MOVEQ a1,#1 + STREQ a1,[v1,#&24] +|L0028e0.J96.jpeg_find_line| + LDR a1,[v1,#&f8] + LDR a4,[v1,#&28] + ADD v3,a4,a1,LSL #2 + LDR a3,[v1,#&fc] + SUB a3,a3,a1 + ADD v6,a4,a1 + ADD a3,a3,#&f + BIC v2,a3,#&f + LDR a3,[v1,#&14] + SUB a2,a3,a1 + CMP a2,v2 + MOVLT v2,a2 + LDR a2,[v1,#&100] + TST a2,#4 + ADDNE v3,v3,a1,LSL #2 + MOVNE v2,v2,LSL #1 + CMP v2,#0 + BLE |L002970.J94.jpeg_find_line| +|L002928.J105.jpeg_find_line| + CMP v2,#&20 + MOVLT v5,v2 + MOVGE v5,#&10 + MOV a3,v4 + LDR a4,[fp,#-&28] + LDR a2,[sp,#0] + STMDB sp!,{a2-a4} + MOV a3,v6 + MOV a2,v5 + MOV a1,v3 + LDR a4,[v1,#&20] + BL asm_diffuse_to_8bpp + ADD sp,sp,#&c + ADD v3,v3,v5,LSL #2 + ADD v6,v6,v5 + SUB v2,v2,v5 + CMP v2,#0 + BGT |L002928.J105.jpeg_find_line| +|L002970.J94.jpeg_find_line| + LDR a1,[sp,#8] + ADD sp,sp,#4 + STR a1,[v1,#&f4] +|L00297c.J10.jpeg_find_line| + LDR a1,[v1,#&28]! + LDR a2,[v1,#&d8]! + TST a2,#2 + LDR a2,[sp,#0] + BEQ |L0029ac.J112.jpeg_find_line| + TEQ a2,#4 + BNE |L0029c8.J132.jpeg_find_line| + LDR a2,[fp,#-&2c] + AND a2,a2,#&f + CMP a2,#8 + ADDGE a1,a1,v4,LSL #2 + B |L0029c8.J132.jpeg_find_line| +|L0029ac.J112.jpeg_find_line| + MOV a3,#1 + MOV a2,a3,LSL a2 + SUB a2,a2,#1 + LDR a3,[fp,#-&2c] + AND a2,a2,a3 + MUL a2,v4,a2 + ADD a1,a1,a2,LSL #2 +|L0029c8.J132.jpeg_find_line| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +looks_like_jpeg + LDR a2,[a1,#0] + ADD ip,a2,#&1f000000 + ADD ip,ip,#&2700 + CMN ip,#1 + BNE |L002a10.J5.looks_like_jpeg| + LDRB a2,[a1,#6] + TEQ a2,#&4a + LDREQB a2,[a1,#7] + TEQEQ a2,#&46 + LDREQB a2,[a1,#8] + TEQEQ a2,#&49 + LDREQB a2,[a1,#9] + TEQEQ a2,#&46 + LDREQB a1,[a1,#&a] + TEQEQ a1,#0 + MOVEQ a1,#1 + MOVEQS pc,lr +|L002a10.J5.looks_like_jpeg| + MOV a1,#0 + MOVS pc,lr + +find_image_dims + MOV ip,sp + STMDB sp!,{v1-v4,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + MOV v4,#0 + LDR v3,[fp,#4] + AND a2,v3,#3 + BL looks_like_jpeg + TEQ a1,#0 + ADDNE v1,v1,#2 + BNE |L002a60.J9.find_image_dims| + B |L002ae8.J15.find_image_dims| +|L002a4c.J8.find_image_dims| + LDRB a2,[v1,#3] + LDRB a1,[v1,#2] + ADD a1,a2,a1,LSL #8 + ADD a1,a1,v1 + ADD v1,a1,#2 +|L002a60.J9.find_image_dims| + LDRB a1,[v1,#0] + TEQ a1,#&ff + LDRB a1,[v1,#1] + BNE |L002a84.J10.find_image_dims| + TEQ a1,#&c0 + TEQNE a1,#&c1 + TEQNE a1,#&c9 + BNE |L002a4c.J8.find_image_dims| + B |L002a94.J16.find_image_dims| +|L002a84.J10.find_image_dims| + TEQ a1,#&c0 + TEQNE a1,#&c1 + TEQNE a1,#&c9 + BNE |L002ae8.J15.find_image_dims| +|L002a94.J16.find_image_dims| + LDRB a1,[v1,#6] + LDRB a2,[v1,#5] + ADD a1,a1,a2,LSL #8 + LDRB a2,[v1,#8] + LDRB ip,[v1,#7] + ADD a2,a2,ip,LSL #8 + LDRB ip,[v1,#9] + ORR lr,ip,v4 + CMP v3,#1 + BLE |L002b0c.J21.find_image_dims| + CMP lr,#1 + MOVNE ip,#&10 + MOVEQ ip,#8 + ADD v1,a2,#&f + MUL ip,v1,ip + MOV v4,ip,LSL #2 + BNE |L002af0.J27.find_image_dims| + ADDS v1,a1,#7 + ADDMI v1,v1,#7 + MOV v1,v1,ASR #3 + B |L002af4.J26.find_image_dims| +|L002ae8.J15.find_image_dims| + MOV a1,#1 + LDMDB fp,{v1-v4,fp,sp,pc}^ +|L002af0.J27.find_image_dims| + MOV v1,a1 +|L002af4.J26.find_image_dims| + ADD ip,v1,v1,LSL #2 + ADD ip,v4,ip,LSL #2 + ADD ip,ip,#&ff + ADD ip,ip,#&3d00 + BIC ip,ip,#3 + STR ip,[v3,#0] +|L002b0c.J21.find_image_dims| + TEQ a3,#0 + STRNE a1,[a3,#0] + TEQ v2,#0 + STRNE a2,[v2,#0] + TEQ a4,#0 + STRNE lr,[a4,#0] + MOV a1,#0 + LDMDB fp,{v1-v4,fp,sp,pc}^ + + AREA |C$$data|,DATA + +|x$dataseg| + + END diff --git a/s/stdpalette b/s/stdpalette new file mode 100644 index 0000000000000000000000000000000000000000..89015e2f50715994b3ef0f427c052ad0056abb68 --- /dev/null +++ b/s/stdpalette @@ -0,0 +1,276 @@ +; Copyright 1996 Acorn Computers Ltd +; +; Licensed under the Apache License, Version 2.0 (the "License"); +; you may not use this file except in compliance with the License. +; You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. +; +; s.genpalette, generated by c.genpalette +; The table consists of 256 16bit entries, containing the true RGB values +; of the 256 pixel values of the standard 8bpp palette. +; The 8bpp pixels are bggrbrtt, the words are 0BGR + DCB 0,0,0,0 + DCB 17,17,17,0 + DCB 34,34,34,0 + DCB 51,51,51,0 + DCB 68,0,0,0 + DCB 85,17,17,0 + DCB 102,34,34,0 + DCB 119,51,51,0 + DCB 0,0,68,0 + DCB 17,17,85,0 + DCB 34,34,102,0 + DCB 51,51,119,0 + DCB 68,0,68,0 + DCB 85,17,85,0 + DCB 102,34,102,0 + DCB 119,51,119,0 + DCB 136,0,0,0 + DCB 153,17,17,0 + DCB 170,34,34,0 + DCB 187,51,51,0 + DCB 204,0,0,0 + DCB 221,17,17,0 + DCB 238,34,34,0 + DCB 255,51,51,0 + DCB 136,0,68,0 + DCB 153,17,85,0 + DCB 170,34,102,0 + DCB 187,51,119,0 + DCB 204,0,68,0 + DCB 221,17,85,0 + DCB 238,34,102,0 + DCB 255,51,119,0 + DCB 0,68,0,0 + DCB 17,85,17,0 + DCB 34,102,34,0 + DCB 51,119,51,0 + DCB 68,68,0,0 + DCB 85,85,17,0 + DCB 102,102,34,0 + DCB 119,119,51,0 + DCB 0,68,68,0 + DCB 17,85,85,0 + DCB 34,102,102,0 + DCB 51,119,119,0 + DCB 68,68,68,0 + DCB 85,85,85,0 + DCB 102,102,102,0 + DCB 119,119,119,0 + DCB 136,68,0,0 + DCB 153,85,17,0 + DCB 170,102,34,0 + DCB 187,119,51,0 + DCB 204,68,0,0 + DCB 221,85,17,0 + DCB 238,102,34,0 + DCB 255,119,51,0 + DCB 136,68,68,0 + DCB 153,85,85,0 + DCB 170,102,102,0 + DCB 187,119,119,0 + DCB 204,68,68,0 + DCB 221,85,85,0 + DCB 238,102,102,0 + DCB 255,119,119,0 + DCB 0,136,0,0 + DCB 17,153,17,0 + DCB 34,170,34,0 + DCB 51,187,51,0 + DCB 68,136,0,0 + DCB 85,153,17,0 + DCB 102,170,34,0 + DCB 119,187,51,0 + DCB 0,136,68,0 + DCB 17,153,85,0 + DCB 34,170,102,0 + DCB 51,187,119,0 + DCB 68,136,68,0 + DCB 85,153,85,0 + DCB 102,170,102,0 + DCB 119,187,119,0 + DCB 136,136,0,0 + DCB 153,153,17,0 + DCB 170,170,34,0 + DCB 187,187,51,0 + DCB 204,136,0,0 + DCB 221,153,17,0 + DCB 238,170,34,0 + DCB 255,187,51,0 + DCB 136,136,68,0 + DCB 153,153,85,0 + DCB 170,170,102,0 + DCB 187,187,119,0 + DCB 204,136,68,0 + DCB 221,153,85,0 + DCB 238,170,102,0 + DCB 255,187,119,0 + DCB 0,204,0,0 + DCB 17,221,17,0 + DCB 34,238,34,0 + DCB 51,255,51,0 + DCB 68,204,0,0 + DCB 85,221,17,0 + DCB 102,238,34,0 + DCB 119,255,51,0 + DCB 0,204,68,0 + DCB 17,221,85,0 + DCB 34,238,102,0 + DCB 51,255,119,0 + DCB 68,204,68,0 + DCB 85,221,85,0 + DCB 102,238,102,0 + DCB 119,255,119,0 + DCB 136,204,0,0 + DCB 153,221,17,0 + DCB 170,238,34,0 + DCB 187,255,51,0 + DCB 204,204,0,0 + DCB 221,221,17,0 + DCB 238,238,34,0 + DCB 255,255,51,0 + DCB 136,204,68,0 + DCB 153,221,85,0 + DCB 170,238,102,0 + DCB 187,255,119,0 + DCB 204,204,68,0 + DCB 221,221,85,0 + DCB 238,238,102,0 + DCB 255,255,119,0 + DCB 0,0,136,0 + DCB 17,17,153,0 + DCB 34,34,170,0 + DCB 51,51,187,0 + DCB 68,0,136,0 + DCB 85,17,153,0 + DCB 102,34,170,0 + DCB 119,51,187,0 + DCB 0,0,204,0 + DCB 17,17,221,0 + DCB 34,34,238,0 + DCB 51,51,255,0 + DCB 68,0,204,0 + DCB 85,17,221,0 + DCB 102,34,238,0 + DCB 119,51,255,0 + DCB 136,0,136,0 + DCB 153,17,153,0 + DCB 170,34,170,0 + DCB 187,51,187,0 + DCB 204,0,136,0 + DCB 221,17,153,0 + DCB 238,34,170,0 + DCB 255,51,187,0 + DCB 136,0,204,0 + DCB 153,17,221,0 + DCB 170,34,238,0 + DCB 187,51,255,0 + DCB 204,0,204,0 + DCB 221,17,221,0 + DCB 238,34,238,0 + DCB 255,51,255,0 + DCB 0,68,136,0 + DCB 17,85,153,0 + DCB 34,102,170,0 + DCB 51,119,187,0 + DCB 68,68,136,0 + DCB 85,85,153,0 + DCB 102,102,170,0 + DCB 119,119,187,0 + DCB 0,68,204,0 + DCB 17,85,221,0 + DCB 34,102,238,0 + DCB 51,119,255,0 + DCB 68,68,204,0 + DCB 85,85,221,0 + DCB 102,102,238,0 + DCB 119,119,255,0 + DCB 136,68,136,0 + DCB 153,85,153,0 + DCB 170,102,170,0 + DCB 187,119,187,0 + DCB 204,68,136,0 + DCB 221,85,153,0 + DCB 238,102,170,0 + DCB 255,119,187,0 + DCB 136,68,204,0 + DCB 153,85,221,0 + DCB 170,102,238,0 + DCB 187,119,255,0 + DCB 204,68,204,0 + DCB 221,85,221,0 + DCB 238,102,238,0 + DCB 255,119,255,0 + DCB 0,136,136,0 + DCB 17,153,153,0 + DCB 34,170,170,0 + DCB 51,187,187,0 + DCB 68,136,136,0 + DCB 85,153,153,0 + DCB 102,170,170,0 + DCB 119,187,187,0 + DCB 0,136,204,0 + DCB 17,153,221,0 + DCB 34,170,238,0 + DCB 51,187,255,0 + DCB 68,136,204,0 + DCB 85,153,221,0 + DCB 102,170,238,0 + DCB 119,187,255,0 + DCB 136,136,136,0 + DCB 153,153,153,0 + DCB 170,170,170,0 + DCB 187,187,187,0 + DCB 204,136,136,0 + DCB 221,153,153,0 + DCB 238,170,170,0 + DCB 255,187,187,0 + DCB 136,136,204,0 + DCB 153,153,221,0 + DCB 170,170,238,0 + DCB 187,187,255,0 + DCB 204,136,204,0 + DCB 221,153,221,0 + DCB 238,170,238,0 + DCB 255,187,255,0 + DCB 0,204,136,0 + DCB 17,221,153,0 + DCB 34,238,170,0 + DCB 51,255,187,0 + DCB 68,204,136,0 + DCB 85,221,153,0 + DCB 102,238,170,0 + DCB 119,255,187,0 + DCB 0,204,204,0 + DCB 17,221,221,0 + DCB 34,238,238,0 + DCB 51,255,255,0 + DCB 68,204,204,0 + DCB 85,221,221,0 + DCB 102,238,238,0 + DCB 119,255,255,0 + DCB 136,204,136,0 + DCB 153,221,153,0 + DCB 170,238,170,0 + DCB 187,255,187,0 + DCB 204,204,136,0 + DCB 221,221,153,0 + DCB 238,238,170,0 + DCB 255,255,187,0 + DCB 136,204,204,0 + DCB 153,221,221,0 + DCB 170,238,238,0 + DCB 187,255,255,0 + DCB 204,204,204,0 + DCB 221,221,221,0 + DCB 238,238,238,0 + DCB 255,255,255,0 + ALIGN + END diff --git a/s/temp b/s/temp new file mode 100644 index 0000000000000000000000000000000000000000..7ac51e425a098b0bc8ea85b1ecb8346cd41583db --- /dev/null +++ b/s/temp @@ -0,0 +1,10535 @@ +; Copyright 1996 Acorn Computers Ltd +; +; Licensed under the Apache License, Version 2.0 (the "License"); +; you may not use this file except in compliance with the License. +; You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. +; +; generated by Norcroft RISC OS ARM C vsn 5.05 (Acorn Computers Ltd) [Dec 23 1994] + + AREA |C$$code|, CODE, READONLY +|x$codeseg| + + EXPORT memcpy +memcpy + MOV a4,a1 + MOV ip,a3 + SUB a3,a3,#1 + CMP ip,#0 + MOVLSS pc,lr +|L000014.J4.memcpy| + LDRB ip,[a2],#1 + STRB ip,[a4],#1 + MOV ip,a3 + SUB a3,a3,#1 + CMP ip,#0 + BHI |L000014.J4.memcpy| + MOVS pc,lr + + EXPORT strcpy +strcpy + MOV a3,a1 + LDRB a4,[a2,#0] + CMP a4,#&1f + MOVLES pc,lr +|L000040.J4.strcpy| + LDRB a4,[a2],#1 + STRB a4,[a3],#1 + LDRB a4,[a2,#0] + CMP a4,#&1f + BGT |L000040.J4.strcpy| + MOVS pc,lr + + EXPORT memset +memset + MOV a4,a1 + MOV ip,a3 + SUB a3,a3,#1 + CMP ip,#0 + MOVLSS pc,lr + AND a2,a2,#&ff +|L000070.J4.memset| + STRB a2,[a4],#1 + MOV ip,a3 + SUB a3,a3,#1 + CMP ip,#0 + BHI |L000070.J4.memset| + MOVS pc,lr + + IMPORT exit + EXPORT panic_exit +panic_exit + B exit + +get_2bytes + MOV a4,#&ff + LDR a2,[a1,#&38] + LDR a3,[a1,#&34] + CMP a3,a2 + LDRCCB a2,[a3],#1 + STRCC a3,[a1,#&34] + MOVCS a2,a4 + MOV a3,a2 + ADD ip,a1,#&34 + LDMIA ip,{a2,ip} + CMP a2,ip + LDRCCB a4,[a2],#1 + STRCC a2,[a1,#&34]! + ADD a1,a4,a3,LSL #8 + MOVS pc,lr + +skip_variable + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + SUB a1,a1,#2 + CMP a1,#0 + LDMLEDB fp,{v1,fp,sp,pc}^ + LDR a2,[v1,#&38] +|L0000ec.J4.skip_variable| + LDR a3,[v1,#&34] + CMP a3,a2 + ADDCC a3,a3,#1 + STRCC a3,[v1,#&34] + SUB a1,a1,#1 + CMP a1,#0 + BGT |L0000ec.J4.skip_variable| + LDMDB fp,{v1,fp,sp,pc}^ + +get_dht + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + SUB sp,sp,#&114 + BL get_2bytes + SUB v4,a1,#2 + CMP v4,#0 + BLE |L000250.J37.get_dht| + MOV v6,#0 + MOV v5,#&ff +|L000138.J4.get_dht| + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a2,v5 + MOV v2,a2 + STRB v6,[sp,#&100] + MOV v3,#0 + MOV a1,#1 +|L000160.J10.get_dht| + ADD a3,v1,#&34 + LDMIA a3,{a2,a3} + CMP a2,a3 + MOVCS a2,v5 + BCS |L000180.J11.get_dht| + LDRB a3,[a2],#1 + STR a2,[v1,#&34] + MOV a2,a3 +|L000180.J11.get_dht| + ADD a3,sp,#&100 + STRB a2,[a3,a1] + ADD a2,sp,#&100 + LDRB a2,[a2,a1] + ADD v3,a2,v3 + ADD a1,a1,#1 + CMP a1,#&10 + BLE |L000160.J10.get_dht| + CMP v3,#&100 + MOVGT a1,#&b9 + ADDGT a1,a1,#&4e00 + BLGT exit + MOV a1,#0 + CMP v3,#0 + BLE |L0001ec.J18.get_dht| +|L0001bc.J17.get_dht| + ADD a3,v1,#&34 + LDMIA a3,{a2,a3} + CMP a2,a3 + MOVCS a2,v5 + BCS |L0001dc.J20.get_dht| + LDRB a3,[a2],#1 + STR a2,[v1,#&34] + MOV a2,a3 +|L0001dc.J20.get_dht| + STRB a2,[sp,a1] + ADD a1,a1,#1 + CMP a1,v3 + BLT |L0001bc.J17.get_dht| +|L0001ec.J18.get_dht| + ADD a1,v3,#&11 + SUB v4,v4,a1 + TST v2,#&10 + SUBNE v2,v2,#&10 + ADD a1,v1,v2,LSL #2 + ADDEQ v3,a1,#&64 + ADDNE v3,a1,#&74 + CMP v2,#0 + BLT |L000218.J28.get_dht| + CMP v2,#4 + BLT |L000224.J27.get_dht| +|L000218.J28.get_dht| + MOV a1,#&2c8 + ADD a1,a1,#&4c00 + BL exit +|L000224.J27.get_dht| + ADD a2,sp,#&100 + MOV a3,#&11 + LDR a1,[v3,#0] + BL memcpy + LDR a1,[v3,#0] + ADD a1,a1,#&11 + MOV a2,sp + MOV a3,#&100 + BL memcpy + CMP v4,#0 + BGT |L000138.J4.get_dht| +|L000250.J37.get_dht| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +get_dac + MOV ip,sp + STMDB sp!,{v1-v5,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + SUB v4,a1,#2 + CMP v4,#0 + LDMLEDB fp,{v1-v5,fp,sp,pc}^ + MOV v5,#&ff +|L000278.J4.get_dac| + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + LDRCCB a3,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a3,v5 + MOV v2,a3 + LDR a1,[v1,#&34] + CMP a1,a2 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a2,v5 + MOV v3,a2 + CMP v2,#0 + BLT |L0002bc.J14.get_dac| + CMP v2,#&20 + BLT |L0002c8.J13.get_dac| +|L0002bc.J14.get_dac| + MOV a1,#&2e8 + ADD a1,a1,#&4c00 + BL exit +|L0002c8.J13.get_dac| + CMP v2,#&10 + MOVGE a1,v3 + ADDGE a2,v1,v2 + STRGEB a1,[a2,#&94] + BGE |L000304.J19.get_dac| + AND a1,v3,#&f + ADD a2,v1,v2 + STRB a1,[a2,#&84] + MOV a3,v3,ASR #4 + AND a3,a3,#&ff + STRB a3,[a2,#&94] + CMP a1,a3 + MOVGT a1,#&ef0 + ADDGT a1,a1,#&4000 + BLGT exit +|L000304.J19.get_dac| + SUB v4,v4,#2 + CMP v4,#0 + BGT |L000278.J4.get_dac| + LDMDB fp,{v1-v5,fp,sp,pc}^ + +get_dqt + MOV ip,sp + STMDB sp!,{v1-v5,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + SUB v2,a1,#2 + CMP v2,#0 + LDMLEDB fp,{v1-v5,fp,sp,pc}^ + MOV v4,#&ff +|L000338.J4.get_dqt| + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + MOVCS a1,v4 + BCS |L000358.J7.get_dqt| + LDRB a2,[a1],#1 + STR a1,[v1,#&34] + MOV a1,a2 +|L000358.J7.get_dqt| + MOV v3,a1,ASR #4 + AND v5,a1,#&f + CMP v5,#4 + MOVGE a1,#&30c + ADDGE a1,a1,#&4c00 + BLGE exit + ADD a1,v1,v5,LSL #2 + LDR a4,[a1,#&54]! + MOV a1,#0 +|L00037c.J12.get_dqt| + ADD ip,v1,#&34 + LDMIA ip,{a3,ip} + CMP a3,ip + LDRCCB a2,[a3],#1 + STRCC a3,[v1,#&34] + MOVCS a2,v4 + MOV a2,a2,LSL #16 + MOV a2,a2,LSR #16 + TEQ v3,#0 + BEQ |L0003c4.J16.get_dqt| + LDR a3,[v1,#&34] + CMP a3,ip + LDRCCB ip,[a3],#1 + STRCC a3,[v1,#&34] + MOVCS ip,v4 + ADD a2,ip,a2,LSL #8 + MOV a2,a2,LSL #16 + MOV a2,a2,LSR #16 +|L0003c4.J16.get_dqt| + STR a2,[a4,a1,LSL #2] + ADD a1,a1,#1 + CMP a1,#&40 + BLT |L00037c.J12.get_dqt| + MOV a1,#0 +|L0003d8.J22.get_dqt| + ADD a1,a1,#8 + CMP a1,#&40 + BLT |L0003d8.J22.get_dqt| + SUB v2,v2,#&41 + TEQ v3,#0 + SUBNE v2,v2,#&40 + CMP v2,#0 + BGT |L000338.J4.get_dqt| + LDMDB fp,{v1-v5,fp,sp,pc}^ + +get_dri + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + TEQ a1,#4 + MOVNE a1,#&2d + ADDNE a1,a1,#&4f00 + BLNE exit + MOV a1,v1 + BL get_2bytes + MOV a1,a1,LSL #16 + MOV a1,a1,LSR #16 + STR a1,[v1,#&bc]! + LDMDB fp,{v1,fp,sp,pc}^ + +get_app0 + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + SUB sp,sp,#&10 + BL get_2bytes + SUB v2,a1,#2 + CMP v2,#&e + BLT |L000508.J25.get_app0| + MOV a1,#0 + MOV a2,#&ff +|L000464.J6.get_app0| + LDR a3,[v1,#&38] + LDR a4,[v1,#&34] + CMP a4,a3 + LDRCCB a3,[a4],#1 + STRCC a4,[v1,#&34] + MOVCS a3,a2 + STRB a3,[sp,a1] + ADD a1,a1,#1 + CMP a1,#&e + BLT |L000464.J6.get_app0| + SUB v2,v2,#&e + LDRB a1,[sp,#0] + TEQ a1,#&4a + LDREQB a1,[sp,#1] + TEQEQ a1,#&46 + LDREQB a1,[sp,#2] + TEQEQ a1,#&49 + LDREQB a1,[sp,#3] + TEQEQ a1,#&46 + LDREQB a1,[sp,#4] + TEQEQ a1,#0 + BNE |L000508.J25.get_app0| + LDRB a1,[sp,#5] + TEQ a1,#1 + MOVNE a1,#&4d + ADDNE a1,a1,#&4f00 + BLNE exit + LDRB a1,[sp,#7] + STR a1,[v1,#&40] + LDRB a1,[sp,#9] + LDRB a2,[sp,#8] + ADD a1,a1,a2,LSL #8 + STR a1,[v1,#&44] + LDRB a2,[sp,#&b] + LDRB a1,[sp,#&a] + ADD a1,a2,a1,LSL #8 + STR a1,[v1,#&48] + LDR a1,[v1,#&1c] + TEQ a1,#0 + MOVEQ a1,#3 + STREQ a1,[v1,#&1c] +|L000508.J25.get_app0| + MOV a1,v2 + SUB v2,v2,#1 + CMP a1,#0 + BLE |L00053c.J37.get_app0| + LDR a2,[v1,#&38] +|L00051c.J26.get_app0| + LDR a1,[v1,#&34] + CMP a1,a2 + ADDCC a1,a1,#1 + STRCC a1,[v1,#&34] + MOV a1,v2 + SUB v2,v2,#1 + CMP a1,#0 + BGT |L00051c.J26.get_app0| +|L00053c.J37.get_app0| + LDMDB fp,{v1,v2,fp,sp,pc}^ + +get_sof + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + MOV v3,a1 + MOV v2,#&ff + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a2,v2 + STR a2,[v1,#&3c] + MOV a1,v1 + BL get_2bytes + STR a1,[v1,#&18] + MOV a1,v1 + BL get_2bytes + STR a1,[v1,#&14] + MOV a2,a1 + ADD a3,v1,#&34 + LDMIA a3,{a1,a3} + CMP a1,a3 + MOVCS a1,v2 + BCS |L0005b4.J7.get_sof| + LDRB a3,[a1],#1 + STR a1,[v1,#&34] + MOV a1,a3 +|L0005b4.J7.get_sof| + STR a1,[v1,#&4c] + LDR a3,[v1,#&18] + CMP a3,#0 + CMPGT a2,#0 + CMPGT a1,#0 + MOVLE a1,#&82 + ADDLE a1,a1,#&4f00 + BLLE exit + LDR a1,[v1,#&3c] + TEQ a1,#8 + MOVNE a1,#&86 + ADDNE a1,a1,#&4f00 + BLNE exit + LDR a1,[v1,#&4c] + ADD a1,a1,a1,LSL #1 + ADD a1,a1,#8 + TEQ a1,v3 + MOVNE a1,#&92 + ADDNE a1,a1,#&4f00 + BLNE exit + LDR a1,[v1,#&4c] + CMP a1,#3 + MOVGT a1,#&96 + ADDGT a1,a1,#&4f00 + BLGT exit + MOV a1,#0 + LDR a2,[v1,#&4c] + CMP a2,#0 + LDMLEDB fp,{v1-v3,fp,sp,pc}^ + MOV a2,#&f +|L00062c.J21.get_sof| + RSB a4,a1,a1,LSL #3 + LDR a3,[v1,#&50] + ADD a3,a3,a4,LSL #3 + STR a1,[a3,#4] + ADD ip,v1,#&34 + LDMIA ip,{a4,ip} + CMP a4,ip + LDRCCB ip,[a4],#1 + STRCC a4,[v1,#&34] + MOVCS ip,v2 + STR ip,[a3,#0] + ADD ip,v1,#&34 + LDMIA ip,{a4,ip} + CMP a4,ip + MOVCS a4,v2 + BCS |L00067c.J27.get_sof| + MOV ip,a4 + LDRB a4,[a4,#0] + ADD ip,ip,#1 + STR ip,[v1,#&34] +|L00067c.J27.get_sof| + AND ip,a2,a4,ASR #4 + AND a4,a4,#&f + STR a4,[a3,#&c] + STR ip,[a3,#8] + ADD ip,v1,#&34 + LDMIA ip,{a4,ip} + CMP a4,ip + LDRCCB ip,[a4],#1 + STRCC a4,[v1,#&34] + MOVCS ip,v2 + ADD a1,a1,#1 + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR ip,[a3,#&10]! + LDR a3,[v1,#&4c] + CMP a1,a3 + BLT |L00062c.J21.get_sof| + LDMDB fp,{v1-v3,fp,sp,pc}^ + +get_sos + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL get_2bytes + MOV v4,#&ff + ADD a3,v1,#&34 + LDMIA a3,{a2,a3} + CMP a2,a3 + LDRCCB a3,[a2],#1 + STRCC a2,[v1,#&34] + MOVCS a3,v4 + MOV v3,a3 + SUB v2,a1,#3 + MOV a1,#3 + STR a3,[v1,#&c8] + ADD a1,a1,a3,LSL #1 + TEQ a1,v2 + BNE |L000720.J8.get_sos| + CMP v3,#1 + BLT |L000720.J8.get_sos| + CMP v3,#4 + BLE |L00072c.J7.get_sos| +|L000720.J8.get_sos| + MOV a1,#&3bc + ADD a1,a1,#&4c00 + BL exit +|L00072c.J7.get_sos| + MOV v5,#0 + CMP v3,#0 + BLE |L0007e4.J13.get_sos| +|L000738.J12.get_sos| + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + LDRCCB a3,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a3,#&ff + LDR a1,[v1,#&34] + CMP a1,a2 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a2,#&ff + MOV v6,a2 + SUB v2,v2,#2 + MOV v4,#0 + LDR a1,[v1,#&4c] + CMP a1,#0 + BLE |L0007a0.J22.get_sos| + LDR a2,[v1,#&50] +|L000780.J21.get_sos| + RSB a4,v4,v4,LSL #3 + ADD a4,a2,a4,LSL #3 + LDR a4,[a4,#0] + TEQ a4,a3 + BEQ |L0007a0.J22.get_sos| + ADD v4,v4,#1 + CMP v4,a1 + BLT |L000780.J21.get_sos| +|L0007a0.J22.get_sos| + CMP v4,a1 + MOVGE a1,#&ca + ADDGE a1,a1,#&4f00 + BLGE exit + RSB a1,v4,v4,LSL #3 + LDR a2,[v1,#&50] + ADD a1,a2,a1,LSL #3 + ADD a2,v1,v5,LSL #2 + STR a1,[a2,#&cc]! + MOV a2,#&f + AND a2,a2,v6,ASR #4 + STR a2,[a1,#&14] + AND a2,v6,#&f + ADD v5,v5,#1 + CMP v5,v3 + STR a2,[a1,#&18]! + BLT |L000738.J12.get_sos| +|L0007e4.J13.get_sos| + CMP v2,#0 + LDMLEDB fp,{v1-v6,fp,sp,pc}^ + LDR a1,[v1,#&38] +|L0007f0.J30.get_sos| + LDR a2,[v1,#&34] + CMP a2,a1 + ADDCC a2,a2,#1 + STRCC a2,[v1,#&34] + SUB v2,v2,#1 + CMP v2,#0 + BGT |L0007f0.J30.get_sos| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +get_soi + STMDB sp!,{lr} + MOV a2,#0 + MOV ip,#0 + MOV a4,#1 + MOV lr,#5 +|L000824.J4.get_soi| + ADD a3,a1,a2 + STRB ip,[a3,#&84] + STRB a4,[a3,#&94] + STRB lr,[a3,#&a4] + ADD a2,a2,#1 + CMP a2,#&10 + BLT |L000824.J4.get_soi| + STR ip,[a1,#&bc] + STR a4,[a1,#&44] + STR ip,[a1,#&40] + STR a4,[a1,#&48]! + STR ip,[a1,#&70]! + LDMIA sp!,{pc}^ + +next_marker + MOV a3,#&ff + LDR a2,[a1,#&38] +|L000860.J5.next_marker| + LDR ip,[a1,#&34] + CMP ip,a2 + LDRCCB a4,[ip],#1 + STRCC ip,[a1,#&34] + MOVCS a4,a3 + TEQ a4,#&ff + BNE |L000860.J5.next_marker| +|L00087c.J10.next_marker| + LDR ip,[a1,#&34] + CMP ip,a2 + LDRCCB a4,[ip],#1 + STRCC ip,[a1,#&34] + MOVCS a4,a3 + TEQ a4,#&ff + BEQ |L00087c.J10.next_marker| + TEQ a4,#0 + BEQ |L000860.J5.next_marker| + MOV a1,a4 + MOVS pc,lr + +process_tables + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 +|L0008b8.J4.process_tables| + MOV a1,v1 + BL next_marker + MOV a2,a1 + CMP a1,#&ce + LDMEQDB fp,{v1,fp,sp,pc}^ + BGT |L000950.J39.process_tables| + CMP a1,#&c6 + LDMEQDB fp,{v1,fp,sp,pc}^ + BGT |L000924.J42.process_tables| + CMP a1,#&c2 + LDMEQDB fp,{v1,fp,sp,pc}^ + BGT |L000900.J45.process_tables| + TEQ a1,#1 + BEQ |L0008b8.J4.process_tables| + TEQ a1,#&c0 + TEQNE a1,#&c1 + LDMEQDB fp,{v1,fp,sp,pc}^ + B |L0009d4.J7.process_tables| +|L000900.J45.process_tables| + TEQ a1,#&c3 + LDMEQDB fp,{v1,fp,sp,pc}^ + TEQ a1,#&c4 + MOVEQ a1,v1 + BLEQ get_dht + BEQ |L0008b8.J4.process_tables| + TEQ a1,#&c5 + LDMEQDB fp,{v1,fp,sp,pc}^ + B |L0009d4.J7.process_tables| +|L000924.J42.process_tables| + SUB a3,a1,#&c7 + CMP a3,#6 + ADDLS pc,pc,a3,LSL #2 + B |L0009d4.J7.process_tables| + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + B |L0009b0.J25.process_tables| + LDMDB fp,{v1,fp,sp,pc}^ +|L000950.J39.process_tables| + SUB a3,a1,#&cf + CMP a3,#&11 + ADDLS pc,pc,a3,LSL #2 + B |L0009d4.J7.process_tables| + LDMDB fp,{v1,fp,sp,pc}^ + B |L0008b8.J4.process_tables| + B |L0008b8.J4.process_tables| + B |L0008b8.J4.process_tables| + B |L0008b8.J4.process_tables| + B |L0008b8.J4.process_tables| + B |L0008b8.J4.process_tables| + B |L0008b8.J4.process_tables| + B |L0008b8.J4.process_tables| + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + LDMDB fp,{v1,fp,sp,pc}^ + B |L0009bc.J10.process_tables| + B |L0009d4.J7.process_tables| + B |L0009c8.J9.process_tables| + B |L0009d4.J7.process_tables| + B |L0009d4.J7.process_tables| + MOV a1,v1 + BL get_app0 + B |L0008b8.J4.process_tables| +|L0009b0.J25.process_tables| + MOV a1,v1 + BL get_dac + B |L0008b8.J4.process_tables| +|L0009bc.J10.process_tables| + MOV a1,v1 + BL get_dqt + B |L0008b8.J4.process_tables| +|L0009c8.J9.process_tables| + MOV a1,v1 + BL get_dri + B |L0008b8.J4.process_tables| +|L0009d4.J7.process_tables| + MOV a1,v1 + BL skip_variable + B |L0008b8.J4.process_tables| + +read_file_header + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + LDR a3,[a1,#&34] + LDR a1,[a1,#&38] + MOV a2,#&ff + CMP a3,a1 + LDRCCB a1,[a3],#1 + STRCC a3,[v1,#&34] + MOVCS a1,a2 + TEQ a1,#&ff + BNE |L000a30.J5.read_file_header| + ADD a3,v1,#&34 + LDMIA a3,{a1,a3} + CMP a1,a3 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + TEQ a2,#&d8 + BEQ |L000a3c.J4.read_file_header| +|L000a30.J5.read_file_header| + MOV a1,#&67 + ADD a1,a1,#&5000 + BL exit +|L000a3c.J4.read_file_header| + MOV a1,v1 + BL get_soi + MOV a1,v1 + BL process_tables + MOV v3,#0 + MOV v2,#1 + TEQ a1,#&c0 + TEQNE a1,#&c1 + BEQ |L000a7c.J17.read_file_header| + TEQ a1,#&c9 + BNE |L000a90.J15.read_file_header| + MOV a2,a1 + MOV a1,v1 + BL get_sof + STR v2,[v1,#&b4] + B |L000a9c.J14.read_file_header| +|L000a7c.J17.read_file_header| + MOV a2,a1 + MOV a1,v1 + BL get_sof + STR v3,[v1,#&b4] + B |L000a9c.J14.read_file_header| +|L000a90.J15.read_file_header| + MOV a1,#&7b + ADD a1,a1,#&5000 + BL exit +|L000a9c.J14.read_file_header| + LDR a1,[v1,#&4c] + TEQ a1,#1 + STREQ v2,[v1,#&1c]! + LDMEQDB fp,{v1-v3,fp,sp,pc}^ + TEQ a1,#3 + BEQ |L000ac8.J25.read_file_header| + TEQ a1,#4 + STRNE v3,[v1,#&1c]! + LDMNEDB fp,{v1-v3,fp,sp,pc}^ + MOV a1,#5 + B |L000b28.J44.read_file_header| +|L000ac8.J25.read_file_header| + LDR a1,[v1,#&1c] + TEQ a1,#0 + LDMNEDB fp,{v1-v3,fp,sp,pc}^ + LDR a2,[v1,#&50] + LDR a1,[a2,#0] + MOV a4,a1,LSL #16 + MOV a4,a4,ASR #16 + LDR a1,[a2,#&38] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + LDR a2,[a2,#&70] + MOV a2,a2,LSL #16 + MOV a2,a2,ASR #16 + MOV a3,#3 + CMP a4,#1 + BNE |L000b14.J32.read_file_header| + TEQ a1,#2 + BEQ |L000b30.J37.read_file_header| + B |L000b18.J38.read_file_header| +|L000b14.J32.read_file_header| + BNE |L000b30.J37.read_file_header| +|L000b18.J38.read_file_header| + TEQ a1,#4 + TEQEQ a2,#5 + BNE |L000b30.J37.read_file_header| + MOV a1,#4 +|L000b28.J44.read_file_header| + STR a1,[v1,#&1c]! + LDMDB fp,{v1-v3,fp,sp,pc}^ +|L000b30.J37.read_file_header| + STR a3,[v1,#&1c]! + LDMDB fp,{v1-v3,fp,sp,pc}^ + +read_scan_header + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + BL process_tables + TEQ a1,#&d9 + BEQ |L000b74.J4.read_scan_header| + TEQ a1,#&da + MOVEQ a1,v1 + BLEQ get_sos + MOVEQ a1,#1 + LDMEQDB fp,{v1,fp,sp,pc}^ + MOV a1,#&be + ADD a1,a1,#&5000 + BL exit +|L000b74.J4.read_scan_header| + MOV a1,#0 + LDMDB fp,{v1,fp,sp,pc}^ + + ;MPORT huff_DECODE_buildshortcut + IMPORT exit_c +fix_huff_tbl + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + SUB sp,sp,#&308 + MOV a2,#0 + MOV a3,#1 +|L000b9c.J4.fix_huff_tbl| + MOV a1,#1 + ADD lr,v1,a3 + LDRB a4,[lr,#0] + CMP a4,#1 + BLT |L000bd4.J6.fix_huff_tbl| + AND a4,a3,#&ff +|L000bb4.J5.fix_huff_tbl| + MOV v3,a2 + ADD a2,a2,#1 + ADD ip,sp,#&204 + STRB a4,[ip,v3] + ADD a1,a1,#1 + LDRB v3,[lr,#0] + CMP v3,a1 + BGE |L000bb4.J5.fix_huff_tbl| +|L000bd4.J6.fix_huff_tbl| + ADD a3,a3,#1 + CMP a3,#&10 + BLE |L000b9c.J4.fix_huff_tbl| + MOV v6,#0 + ADD a1,sp,#&204 + STRB v6,[a1,a2] + MOV a1,#0 + LDRB a3,[sp,#&204] + MOV a2,#0 + LDRB a4,[sp,#&204] + TEQ a4,#0 + BEQ |L000c68.J11.fix_huff_tbl| +|L000c04.J10.fix_huff_tbl| + ADD a4,sp,#&204 + LDRB a4,[a4,a2] + TEQ a4,a3 + BNE |L000c48.J14.fix_huff_tbl| +|L000c14.J13.fix_huff_tbl| + MOV a4,a2 + ADD a2,a2,#1 + ADD a4,sp,a4,LSL #1 + STRB a1,[a4,#0] + MOV ip,a1,ASR #8 + STRB ip,[a4,#1] + ADD a1,a1,#1 + MOV a1,a1,LSL #16 + MOV a1,a1,LSR #16 + ADD a4,sp,#&204 + LDRB a4,[a4,a2] + TEQ a4,a3 + BEQ |L000c14.J13.fix_huff_tbl| +|L000c48.J14.fix_huff_tbl| + MOV a1,a1,LSL #1 + MOV a1,a1,LSL #16 + MOV a1,a1,LSR #16 + ADD a3,a3,#1 + ADD a4,sp,#&204 + LDRB a4,[a4,a2] + TEQ a4,#0 + BNE |L000c04.J10.fix_huff_tbl| +|L000c68.J11.fix_huff_tbl| + MOV a2,#0 + MOV a3,#1 + MVN a1,#0 +|L000c74.J18.fix_huff_tbl| + ADD v3,v1,a3 + LDRB a4,[v3,#0] + TEQ a4,#0 + BEQ |L000cc8.J19.fix_huff_tbl| + ADD lr,v1,a3,LSL #2 + STR a2,[lr,#&15c] + ADD a4,lr,#&15c + LDR v4,[sp,a2,LSL #1] + MOV v4,v4,LSL #16 + MOV v4,v4,LSR #16 + LDR ip,[a4,#0] + SUB v4,ip,v4 + STR v4,[a4,#0] + LDRB a4,[v3,#0] + ADD a2,a4,a2 + ADD a4,sp,a2,LSL #1 + LDR a4,[a4,#-2] + MOV a4,a4,LSL #16 + MOV a4,a4,LSR #16 + STR a4,[lr,#&114]! + B |L000cd0.J21.fix_huff_tbl| +|L000cc8.J19.fix_huff_tbl| + ADD a4,v1,a3,LSL #2 + STR a1,[a4,#&114]! +|L000cd0.J21.fix_huff_tbl| + ADD a3,a3,#1 + CMP a3,#&10 + BLE |L000c74.J18.fix_huff_tbl| + MVN a2,#&ff00000 + ADD a2,a2,#&10000000 + MOV v3,#0 + MOV v5,#&20 + STR a2,[v1,#&158] +|L000cf0.J23.fix_huff_tbl| + MOV a1,v3,LSL #24 + MOV a2,v1 + ADD v2,v2,#&104 + STMIA v2,{a1,v5} + SUB v2,v2,#&104 + MOV a1,v2 + BL huff_DECODE_buildshortcut + MOV v4,a1 + LDR a1,[v2,#&108] + CMP a1,#&18 + MVNLT a1,#0 + BLT |L000d3c.J39.fix_huff_tbl| + CMP v4,#0 + MOVLT a2,#4 + MOVLT a1,#&69 + BLLT exit_c + LDR a1,[v2,#&108] + SUB a1,v5,a1 + ORR a1,v4,a1,LSL #24 +|L000d3c.J39.fix_huff_tbl| + ADD a2,v1,v3,LSL #2 + ADD v3,v3,#1 + CMP v3,#&100 + STR a1,[a2,#&1a0]! + BLT |L000cf0.J23.fix_huff_tbl| + STR v6,[v2,#&108] + STR v6,[v2,#&104]! + LDMDB fp,{v1-v6,fp,sp,pc}^ + +get_bits + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + LDR a1,[a1,#&108] + CMP a2,a1 + BLE |L000df0.J5.get_bits| + MOV v3,#&ff +|L000d80.J4.get_bits| + ADD a2,v1,#&34 + LDMIA a2,{a1,a2} + CMP a1,a2 + MOVCS a1,v3 + BCS |L000da0.J7.get_bits| + LDRB a3,[a1],#1 + STR a1,[v1,#&34] + MOV a1,a3 +|L000da0.J7.get_bits| + LDR a3,[v1,#&104] + ORR a3,a1,a3,LSL #8 + STR a3,[v1,#&104] + LDR a3,[v1,#&108] + ADD a3,a3,#8 + TEQ a1,#&ff + STR a3,[v1,#&108] + BNE |L000de4.J10.get_bits| + LDR a1,[v1,#&34] + CMP a1,a2 + LDRCCB a2,[a1],#1 + STRCC a1,[v1,#&34] + MOVCS a2,v3 + TEQ a2,#0 + MOVNE a1,#&394 + ADDNE a1,a1,#&2400 + BLNE exit +|L000de4.J10.get_bits| + LDR a1,[v1,#&108] + CMP v2,a1 + BGT |L000d80.J4.get_bits| +|L000df0.J5.get_bits| + LDR a1,[v1,#&108] + SUB a1,a1,v2 + STR a1,[v1,#&108] + LDR a2,[v1,#&104]! + MOV a1,a2,ASR a1 + MOV a2,#1 + MOV a2,a2,LSL v2 + SUB a2,a2,#1 + AND a1,a1,a2 + LDMDB fp,{v1-v3,fp,sp,pc}^ + +huff_DECODE_buildshortcut + MOV ip,sp + STMDB sp!,{v1-v4,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + LDR a2,[a1,#&108] + TEQ a2,#0 + BEQ |L000e50.J5.huff_DECODE_buildshortcut| + SUB a2,a2,#1 + STR a2,[v1,#&108] + LDR a1,[v1,#&104] + MOV a1,a1,ASR a2 + AND a1,a1,#1 + B |L000e58.J4.huff_DECODE_buildshortcut| +|L000e50.J5.huff_DECODE_buildshortcut| + MOV a2,#1 + BL get_bits +|L000e58.J4.huff_DECODE_buildshortcut| + MOV v4,a1 + MOV v3,#1 + B |L000e9c.J8.huff_DECODE_buildshortcut| +|L000e64.J7.huff_DECODE_buildshortcut| + LDR a1,[v1,#&108] + TEQ a1,#0 + BEQ |L000e88.J10.huff_DECODE_buildshortcut| + SUB a1,a1,#1 + STR a1,[v1,#&108] + LDR a2,[v1,#&104] + MOV a1,a2,ASR a1 + AND a1,a1,#1 + B |L000e94.J9.huff_DECODE_buildshortcut| +|L000e88.J10.huff_DECODE_buildshortcut| + MOV a1,v1 + MOV a2,#1 + BL get_bits +|L000e94.J9.huff_DECODE_buildshortcut| + ADD v4,a1,v4,LSL #1 + ADD v3,v3,#1 +|L000e9c.J8.huff_DECODE_buildshortcut| + ADD a1,v2,v3,LSL #2 + LDR a1,[a1,#&114] + CMP a1,v4 + BGE |L000eb4.J12.huff_DECODE_buildshortcut| + CMP v3,#8 + BLE |L000e64.J7.huff_DECODE_buildshortcut| +|L000eb4.J12.huff_DECODE_buildshortcut| + CMP v3,#8 + MVNGT a1,#0 + LDMGTDB fp,{v1-v4,fp,sp,pc}^ + ADD a1,v2,v3,LSL #2 + LDR a1,[a1,#&15c] + ADD a1,a1,v4 + ADD a1,v2,a1 + LDRB a1,[a1,#&11] + LDMDB fp,{v1-v4,fp,sp,pc}^ + +huff_decoder_init + MOV a2,#0 + STR a2,[a1,#&108]! + MOVS pc,lr + +mono_convert_block + STMDB sp!,{v1,lr} + MOV ip,#0 +|L000eec.J4.mono_convert_block| + MOV a4,#0 +|L000ef0.J5.mono_convert_block| + ADD lr,ip,a4,LSL #3 + LDR lr,[a1,lr,LSL #2] + ADD lr,lr,#&40000 + MOV lr,lr,ASR #19 + ADDS lr,lr,#&80 + MOVMI lr,#0 + BMI |L000f14.J8.mono_convert_block| + CMP lr,#&ff + MOVGT lr,#&ff +|L000f14.J8.mono_convert_block| + ORR v1,lr,lr,LSL #8 + ORR lr,v1,lr,LSL #16 + STR lr,[a2,a4,LSL #2] + ADD a4,a4,#1 + CMP a4,#8 + BLT |L000ef0.J5.mono_convert_block| + ADD a2,a2,a3,LSL #2 + ADD ip,ip,#1 + CMP ip,#8 + BLT |L000eec.J4.mono_convert_block| + LDMIA sp!,{v1,pc}^ + +mono_convert_pixel + ADDS a1,a2,#&80 + MOVMI a1,#0 + BMI |L000f54.J6.mono_convert_pixel| + CMP a1,#&ff + MOVGT a1,#&ff +|L000f54.J6.mono_convert_pixel| + ORR a2,a1,a1,LSL #8 + ORR a1,a2,a1,LSL #16 + MOVS pc,lr + +colour_convert_block + MOV ip,sp + STMDB sp!,{a1-a3,v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + SUB sp,sp,#&14 + MOV v5,a1 + ADD a1,a1,#&100 + STR a1,[sp,#&10] + ADD a1,a1,#&100 + STR a1,[sp,#&c] + ADD a1,a1,#&100 + STR a1,[sp,#8] + ADD a1,a1,#&100 + STR a1,[sp,#4] + ADD a1,a1,#&100 + MOV a3,#0 + STR a1,[sp,#0] +|L000fa0.J4.colour_convert_block| + MOV a1,#0 + AND v3,a3,#7 + MOV v2,a3,ASR #1 +|L000fac.J5.colour_convert_block| + AND a4,a1,#7 + ADD ip,v3,a4,LSL #3 + CMP a3,#8 + BGE |L000fcc.J7.colour_convert_block| + CMP a1,#8 + LDRGE a4,[sp,#&10] + MOVLT a4,v5 + B |L000fd8.J6.colour_convert_block| +|L000fcc.J7.colour_convert_block| + CMP a1,#8 + LDRGE a4,[sp,#8] + LDRLT a4,[sp,#&c] +|L000fd8.J6.colour_convert_block| + LDR a4,[a4,ip,LSL #2] + MOV ip,a1,ASR #1 + ADD ip,v2,ip,LSL #3 + LDR lr,[sp,#4] + LDR lr,[lr,ip,LSL #2] + LDR v1,[sp,#0] + LDR ip,[v1,ip,LSL #2] + ADD a4,a4,#&40000 + MOV a4,a4,ASR #19 + ADD a4,a4,#&80 + ADD lr,lr,#&40000 + MOV lr,lr,ASR #19 + ADD ip,ip,#&40000 + MOV v1,ip,ASR #19 + ADD v4,v1,v1,LSL #5 + RSB v4,v4,v4,LSL #3 + ADD v4,v4,v1,LSL #7 + ADD ip,lr,lr,LSL #1 + ADD ip,ip,lr,LSL #3 + MOV ip,ip,LSL #3 + RSB v6,ip,#0 + ADD ip,v1,v1,LSL #1 + RSB ip,ip,v1,LSL #6 + ADD ip,ip,ip,LSL #1 + SUB v1,v6,ip + ADD ip,lr,lr,LSL #5 + RSB ip,ip,lr,LSL #8 + ADD ip,ip,lr,LSL #2 + MOV ip,ip,LSL #1 + ADD lr,v4,#&80 + ADDS lr,a4,lr,ASR #8 + MOVMI lr,#0 + BMI |L001064.J15.colour_convert_block| + CMP lr,#&ff + MOVGT lr,#&ff +|L001064.J15.colour_convert_block| + ADD v1,v1,#&80 + ADDS v1,a4,v1,ASR #8 + MOVMI v1,#0 + BMI |L00107c.J19.colour_convert_block| + CMP v1,#&ff + MOVGT v1,#&ff +|L00107c.J19.colour_convert_block| + ADD ip,ip,#&80 + ADDS a4,a4,ip,ASR #8 + MOVMI a4,#0 + BMI |L001094.J23.colour_convert_block| + CMP a4,#&ff + MOVGT a4,#&ff +|L001094.J23.colour_convert_block| + ORR ip,lr,v1,LSL #8 + ORR a4,ip,a4,LSL #16 + STR a4,[a2,a1,LSL #2] + ADD a1,a1,#1 + CMP a1,#&10 + BLT |L000fac.J5.colour_convert_block| + LDR a1,[fp,#-&28] + ADD a2,a2,a1,LSL #2 + ADD a3,a3,#1 + CMP a3,#&10 + BLT |L000fa0.J4.colour_convert_block| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +colour_convert_unusual_block + MOV ip,sp + STMDB sp!,{a1-a4} + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#&14 + SUB sp,sp,#&20 + LDR v3,[fp,#&14] + STR a1,[sp,#&14] + ADD a1,a1,#&100 + STR a1,[sp,#&10] + ADD a1,a1,#&100 + STR a1,[sp,#&c] + ADD a1,a1,#&100 + STR a1,[sp,#8] + ADD a1,a1,#&100 + STR a1,[sp,#4] + ADD a1,a1,#&100 + MOV a3,#0 + CMP a3,v3,LSL #3 + STR a1,[sp,#0] + BGE |L001254.J35.colour_convert_unusual_block| + SUB a1,a4,#1 + STR a1,[sp,#&1c] +|L00111c.J4.colour_convert_unusual_block| + MOV a1,#0 + CMP a1,a4,LSL #3 + BGE |L001240.J8.colour_convert_unusual_block| + AND v4,a3,#7 + SUB lr,v3,#1 + MOV ip,a3,ASR lr + STR ip,[sp,#&18] +|L001138.J7.colour_convert_unusual_block| + AND ip,a1,#7 + ADD lr,v4,ip,LSL #3 + CMP a3,#8 + BGE |L001158.J11.colour_convert_unusual_block| + CMP a1,#8 + LDRGE ip,[sp,#&10] + LDRLT ip,[sp,#&14] + B |L001164.J10.colour_convert_unusual_block| +|L001158.J11.colour_convert_unusual_block| + CMP a1,#8 + LDRGE ip,[sp,#8] + LDRLT ip,[sp,#&c] +|L001164.J10.colour_convert_unusual_block| + LDR lr,[ip,lr,LSL #2] + LDR v1,[sp,#&1c] + MOV v1,a1,ASR v1 + LDR ip,[sp,#&18] + ADD ip,ip,v1,LSL #3 + LDR v1,[sp,#4] + LDR v1,[v1,ip,LSL #2] + LDR v2,[sp,#0] + LDR ip,[v2,ip,LSL #2] + ADD lr,lr,#&40000 + MOV lr,lr,ASR #19 + ADD lr,lr,#&80 + ADD v1,v1,#&40000 + MOV v1,v1,ASR #19 + ADD ip,ip,#&40000 + MOV v2,ip,ASR #19 + ADD v5,v2,v2,LSL #5 + RSB v5,v5,v5,LSL #3 + ADD v5,v5,v2,LSL #7 + ADD ip,v1,v1,LSL #1 + ADD ip,ip,v1,LSL #3 + MOV ip,ip,LSL #3 + RSB v6,ip,#0 + ADD ip,v2,v2,LSL #1 + RSB ip,ip,v2,LSL #6 + ADD ip,ip,ip,LSL #1 + SUB v2,v6,ip + ADD ip,v1,v1,LSL #5 + RSB ip,ip,v1,LSL #8 + ADD ip,ip,v1,LSL #2 + MOV ip,ip,LSL #1 + ADD v1,v5,#&80 + ADDS v1,lr,v1,ASR #8 + MOVMI v1,#0 + BMI |L0011f8.J19.colour_convert_unusual_block| + CMP v1,#&ff + MOVGT v1,#&ff +|L0011f8.J19.colour_convert_unusual_block| + ADD v2,v2,#&80 + ADDS v2,lr,v2,ASR #8 + MOVMI v2,#0 + BMI |L001210.J23.colour_convert_unusual_block| + CMP v2,#&ff + MOVGT v2,#&ff +|L001210.J23.colour_convert_unusual_block| + ADD ip,ip,#&80 + ADDS ip,lr,ip,ASR #8 + MOVMI ip,#0 + BMI |L001228.J27.colour_convert_unusual_block| + CMP ip,#&ff + MOVGT ip,#&ff +|L001228.J27.colour_convert_unusual_block| + ORR lr,v1,v2,LSL #8 + ORR ip,lr,ip,LSL #16 + STR ip,[a2,a1,LSL #2] + ADD a1,a1,#1 + CMP a1,a4,LSL #3 + BLT |L001138.J7.colour_convert_unusual_block| +|L001240.J8.colour_convert_unusual_block| + LDR a1,[fp,#&c] + ADD a2,a2,a1,LSL #2 + ADD a3,a3,#1 + CMP a3,v3,LSL #3 + BLT |L00111c.J4.colour_convert_unusual_block| +|L001254.J35.colour_convert_unusual_block| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +colour_convert_pixels + STMDB sp!,{v1-v3,lr} + ADD a2,a2,#4 + MOV a2,a2,ASR #3 + ADD a3,a3,#4 + MOV a3,a3,ASR #3 + ADD a4,a3,a3,LSL #5 + RSB a4,a4,a4,LSL #3 + ADD a4,a4,a3,LSL #7 + ADD ip,a2,a2,LSL #1 + ADD ip,ip,a2,LSL #3 + MOV ip,ip,LSL #3 + RSB lr,ip,#0 + ADD ip,a3,a3,LSL #1 + RSB a3,ip,a3,LSL #6 + ADD a3,a3,a3,LSL #1 + SUB a3,lr,a3 + ADD ip,a2,a2,LSL #5 + RSB ip,ip,a2,LSL #8 + ADD a2,ip,a2,LSL #2 + MOV a2,a2,LSL #1 + ADD a4,a4,#&80 + MOV v2,a4,ASR #8 + ADD a3,a3,#&80 + MOV v1,a3,ASR #8 + ADD a2,a2,#&80 + MOV lr,a2,ASR #8 + MOV a4,#0 + MOV v3,#&80 +|L0012c8.J4.colour_convert_pixels| + LDR a2,[a1,a4,LSL #2] + ADD a2,a2,#4 + ADD ip,v3,a2,ASR #3 + ADDS a3,v2,ip + MOVMI a3,#0 + BMI |L0012e8.J7.colour_convert_pixels| + CMP a3,#&ff + MOVGT a3,#&ff +|L0012e8.J7.colour_convert_pixels| + ADDS a2,v1,ip + MOVMI a2,#0 + BMI |L0012fc.J11.colour_convert_pixels| + CMP a2,#&ff + MOVGT a2,#&ff +|L0012fc.J11.colour_convert_pixels| + ADDS ip,lr,ip + MOVMI ip,#0 + BMI |L001310.J15.colour_convert_pixels| + CMP ip,#&ff + MOVGT ip,#&ff +|L001310.J15.colour_convert_pixels| + ORR a2,a3,a2,LSL #8 + ORR a2,a2,ip,LSL #16 + STR a2,[a1,a4,LSL #2] + ADD a4,a4,#1 + CMP a4,#4 + BLT |L0012c8.J4.colour_convert_pixels| + LDMIA sp!,{v1-v3,pc}^ + + EXPORT assembler_panic +assembler_panic + MOVS pc,lr + +init_workspace + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV a3,a2 + MOV a2,#0 + LDR v2,[a1,#&20] + LDR v3,[a1,#&10] + BL memset + STR v2,[v1,#&20] + STR v3,[v1,#&10] + ADD a1,v1,#&1c + ADD a1,a1,#&800 + STR a1,[v1,#&50] + MOV a1,#0 +|L00136c.J4.init_workspace| + ADD a2,v1,a1,LSL #8 + ADD a2,a2,#&fc + ADD a2,a2,#&800 + ADD a3,v1,a1,LSL #2 + ADD a1,a1,#1 + CMP a1,#4 + STR a2,[a3,#&54]! + BLT |L00136c.J4.init_workspace| + MOV a1,#0 +|L001390.J6.init_workspace| + RSB a2,a1,a1,LSL #4 + ADD a2,a2,a2,LSL #1 + ADD a3,v1,a2,LSL #5 + SUB a4,a3,#&304 + ADD a4,a4,#&1000 + ADD a2,v1,a1,LSL #2 + ADD a3,a3,#&37c + ADD a3,a3,#&2000 + ADD a1,a1,#1 + CMP a1,#4 + STR a4,[a2,#&64]! + STR a3,[a2,#&10] + BLT |L001390.J6.init_workspace| + LDMDB fp,{v1-v3,fp,sp,pc}^ + +save_huff_stream + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + LDR a1,[a1,#&108] + CMP a1,#&20 + MOVGE a2,#2 + MOVGE a1,#&d8 + BLGE exit_c + LDR a1,[v1,#&108] + CMP a1,#0 + MOVLT a2,#2 + MOVLT a1,#&d9 + BLLT exit_c + LDR a1,[v1,#&34] + LDR a2,[v1,#&30] + CMP a2,a1 + MOVCS a2,#2 + MOVCS a1,#&da + BLCS exit_c + LDR a1,[v1,#&38] + LDR a2,[v1,#&34] + CMP a2,a1 + MOVCS a2,#2 + MOVCS a1,#&db + BLCS exit_c + ADD a2,v1,#&30 + LDMIA a2,{a1,a2} + SUB a1,a2,a1 + LDR a2,[v1,#&108] + ADD a1,a2,a1,LSL #5 + STR a1,[v2,#0] + LDR a1,[v1,#&104] + STR a1,[v2,#4] + LDR a1,[v1,#&e4] + STRB a1,[v2,#8] + MOV a1,a1,ASR #8 + STRB a1,[v2,#9] + LDR a1,[v1,#&e8] + STRB a1,[v2,#&a] + MOV a1,a1,ASR #8 + STRB a1,[v2,#&b] + LDR a1,[v1,#&ec] + STRB a1,[v2,#&c] + MOV a1,a1,ASR #8 + STRB a1,[v2,#&d] + LDR a1,[v1,#&c0] + STRB a1,[v2,#&10] + MOV a1,a1,ASR #8 + STRB a1,[v2,#&11] + LDR a1,[v1,#&c4]! + STRB a1,[v2,#&12] + MOV a1,a1,ASR #8 + STRB a1,[v2,#&13] + LDMDB fp,{v1,v2,fp,sp,pc}^ + +restore_huff_stream + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + LDR a1,[a2,#4] + STR a1,[v1,#&104] + LDR a1,[a2,#0] + CMP a1,#0 + ADDLT a1,a1,#&1f + LDR a3,[v1,#&30] + ADD a1,a3,a1,ASR #5 + STR a1,[v1,#&34] + LDR a1,[a2,#0] + AND a1,a1,#&1f + STR a1,[v1,#&108] + LDR a1,[a2,#8] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR a1,[v1,#&e4] + LDR a1,[a2,#&a] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR a1,[v1,#&e8] + LDR a1,[a2,#&c] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR a1,[v1,#&ec] + LDR a1,[a2,#&10] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR a1,[v1,#&c0] + LDR a1,[a2,#&12] + MOV a1,a1,LSL #16 + MOV a1,a1,ASR #16 + STR a1,[v1,#&c4] + ADD a2,v1,#&30 + LDMIA a2,{a1,a2} + CMP a1,a2 + MOVCS a2,#4 + MOVCS a1,#&fa + BLCS exit_c + ADD v1,v1,#&30 + LDMIB v1!,{a1,a2} + CMP a1,a2 + MOVCS a2,#4 + MOVCS a1,#&fb + LDMCSDB fp,{v1,fp,sp,lr} + BCS exit_c + LDMDB fp,{v1,fp,sp,pc}^ + +process_restart + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + LDR a1,[a1,#&34] + LDRB v2,[a1],#1 + STR a1,[v1,#&34] + LDR a1,[v1,#&108] + CMP a1,#7 + MOVGT a2,#2 + MOVGT a1,#&12 + ADDGT a1,a1,#&100 + BLGT exit_c + TEQ v2,#&ff + MOVNE a2,#2 + MOVNE a1,#&13 + ADDNE a1,a1,#&100 + BLNE exit_c + LDR a1,[v1,#&34] + LDRB a1,[a1,#0] + TEQ a1,#&ff + BNE |L0015dc.J9.process_restart| +|L0015c4.J8.process_restart| + LDR a1,[v1,#&34] + ADD a1,a1,#1 + STR a1,[v1,#&34] + LDRB a1,[a1,#0] + TEQ a1,#&ff + BEQ |L0015c4.J8.process_restart| +|L0015dc.J9.process_restart| + LDR a1,[v1,#&34] + LDRB v2,[a1],#1 + STR a1,[v1,#&34] + AND a1,v2,#&f8 + TEQ a1,#&d0 + MOVNE a2,#2 + MOVNE a1,#&16 + ADDNE a1,a1,#&100 + BLNE exit_c + AND a2,v2,#7 + LDR a1,[v1,#&c4] + TEQ a2,a1 + MOVNE a2,#2 + MOVNE a1,#&17 + ADDNE a1,a1,#&100 + BLNE exit_c + MOV a2,#0 + STR a2,[v1,#&108] + STR a2,[v1,#&104] + LDR a1,[v1,#&bc] + STR a1,[v1,#&c0] + LDR a1,[v1,#&c4] + ADD a1,a1,#1 + AND a1,a1,#7 + STR a1,[v1,#&c4] + MOV a1,#0 + LDR a3,[v1,#&c8] + CMP a3,#0 + LDMLEDB fp,{v1,v2,fp,sp,pc}^ +|L001650.J16.process_restart| + ADD a3,v1,a1,LSL #2 + ADD a1,a1,#1 + STR a2,[a3,#&e4]! + LDR a3,[v1,#&c8] + CMP a1,a3 + BLT |L001650.J16.process_restart| + LDMDB fp,{v1,v2,fp,sp,pc}^ + + IMPORT asm_huff_skip_blocks +do_huff_skip_blocks + MOV ip,sp + STMDB sp!,{a1-a4} + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#&14 + MOV v1,a1 + MOV v2,a2 + MOV v3,a3 + LDR v4,[fp,#&1c] + LDR v5,[fp,#&18] + LDR v6,[fp,#&14] + LDR a2,[a1,#&bc] + TEQ a2,#0 + BEQ |L001710.J4.do_huff_skip_blocks| + CMP v4,#0 + LDMLEDB fp,{v1-v6,fp,sp,pc}^ + B |L0016b4.J10.do_huff_skip_blocks| +|L0016ac.J6.do_huff_skip_blocks| + TEQ a1,#0 + BEQ |L0016d0.J9.do_huff_skip_blocks| +|L0016b4.J10.do_huff_skip_blocks| + LDR a1,[v1,#&c0] + TEQ a1,#0 + MOVEQ a1,v1 + BLEQ process_restart + LDR a1,[v1,#&c0] + SUB a1,a1,#1 + STR a1,[v1,#&c0] +|L0016d0.J9.do_huff_skip_blocks| + MOV a4,#1 + MOV a3,v5 + MOV a2,v6 + STMDB sp!,{a2-a4} + MOV a3,v3 + MOV a2,v2 + MOV a1,v1 + LDR a4,[fp,#&10] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + SUB v4,v4,#1 + ADD v2,v2,#&100 + CMP v4,#0 + LDR a1,[fp,#&20] + BGT |L0016ac.J6.do_huff_skip_blocks| + LDMDB fp,{v1-v6,fp,sp,pc}^ +|L001710.J4.do_huff_skip_blocks| + MOV a4,v4 + MOV a3,v5 + MOV a2,v6 + STMDB sp!,{a2-a4} + MOV a3,v3 + MOV a2,v2 + LDR a4,[fp,#&10] + BL asm_huff_skip_blocks + LDMDB fp,{v1-v6,fp,sp,pc}^ + + IMPORT asm_huff_decode_blocks +do_huff_decode_blocks + MOV ip,sp + STMDB sp!,{a1-a4} + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#&14 + MOV v1,a1 + MOV v2,a2 + MOV v3,a3 + LDR v4,[fp,#&1c] + LDR v5,[fp,#&18] + LDR v6,[fp,#&14] + LDR a2,[a1,#&bc] + TEQ a2,#0 + BEQ |L0017d8.J4.do_huff_decode_blocks| + CMP v4,#0 + LDMLEDB fp,{v1-v6,fp,sp,pc}^ + B |L00177c.J10.do_huff_decode_blocks| +|L001774.J6.do_huff_decode_blocks| + TEQ a1,#0 + BEQ |L001798.J9.do_huff_decode_blocks| +|L00177c.J10.do_huff_decode_blocks| + LDR a1,[v1,#&c0] + TEQ a1,#0 + MOVEQ a1,v1 + BLEQ process_restart + LDR a1,[v1,#&c0] + SUB a1,a1,#1 + STR a1,[v1,#&c0] +|L001798.J9.do_huff_decode_blocks| + MOV a4,#1 + MOV a3,v5 + MOV a2,v6 + STMDB sp!,{a2-a4} + MOV a3,v3 + MOV a2,v2 + MOV a1,v1 + LDR a4,[fp,#&10] + BL asm_huff_decode_blocks + ADD sp,sp,#&c + SUB v4,v4,#1 + ADD v2,v2,#&100 + CMP v4,#0 + LDR a1,[fp,#&20] + BGT |L001774.J6.do_huff_decode_blocks| + LDMDB fp,{v1-v6,fp,sp,pc}^ +|L0017d8.J4.do_huff_decode_blocks| + MOV a4,v4 + MOV a3,v5 + MOV a2,v6 + STMDB sp!,{a2-a4} + MOV a3,v3 + MOV a2,v2 + LDR a4,[fp,#&10] + BL asm_huff_decode_blocks + LDMDB fp,{v1-v6,fp,sp,pc}^ + + ;MPORT jpeg_scan_file +do_jpeg_scan_file + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV lr,a3 + MOV ip,a4 + MOV v1,a1 + STR a2,[a1,#&10] + MVN a1,#0 + MOV a4,#0 + MVN a3,#0 + MVN a2,#0 + STR a1,[v1,#0] + MVN a1,#&80000000 + STMDB sp!,{a1-a4} + MOV a3,ip + MOV a2,lr + MOV a1,v1 + BL jpeg_scan_file + LDMDB fp,{v1,fp,sp,pc}^ + +do_jpeg_scan_file_16 + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV lr,a3 + MOV ip,a4 + MOV v1,a1 + STR a2,[a1,#&10] + MVN a1,#0 + MOV a4,#&10 + MVN a3,#0 + MVN a2,#0 + STR a1,[v1,#0] + MVN a1,#&80000000 + STMDB sp!,{a1-a4} + MOV a3,ip + MOV a2,lr + MOV a1,v1 + MOV a4,#0 + BL jpeg_scan_file + LDMDB fp,{v1,fp,sp,pc}^ + + IMPORT |__rt_sdiv| +jpeg_scan_file + MOV ip,sp + STMDB sp!,{a1-a4} + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#&14 + MOV v1,a1 + MOV v5,a2 + MOV v4,a3 + MOV v3,a4 + SUB sp,sp,#&20 + LDR v2,[fp,#&20] + TST v2,#2 + LDR v6,[fp,#&14] + BICNE v2,v2,#&38 + CMP v3,#0 + MOVLT v3,#0 + TST v2,#&28 + BEQ |L0018ec.J8.jpeg_scan_file| + SUBS v3,v3,#&10 + MOVMI v3,#0 + BIC v3,v3,#&f + ADD v6,v6,#&10 +|L0018ec.J8.jpeg_scan_file| + LDR a2,[v1,#0] + CMP a2,#0 + BNE |L0019fc.J12.jpeg_scan_file| + LDR a2,[v1,#&30] + TEQ a2,v5 + BNE |L001a04.J42.jpeg_scan_file| + LDR a3,[v1,#&38] + SUB a2,a3,a2 + TEQ a2,v4 + BNE |L001a04.J42.jpeg_scan_file| + LDR a2,[fp,#&18] + CMN a2,#1 + LDRNE a2,[v1,#&14] + LDRNE a3,[fp,#&18] + TEQNE a2,a3 + BNE |L001a04.J42.jpeg_scan_file| + LDR a2,[fp,#&1c] + CMN a2,#1 + LDRNE a2,[v1,#&18] + LDRNE a3,[fp,#&1c] + TEQNE a2,a3 + BNE |L001a04.J42.jpeg_scan_file| + MOVS a2,v4 + ADDMI a2,a2,#7 + MOV a2,a2,ASR #3 + LDR a2,[v5,a2,LSL #2] + LDR a3,[v1,#&10c] + TEQ a2,a3 + BNE |L001a04.J42.jpeg_scan_file| + MOV a3,v4 + CMP v4,#0 + ADDLT a3,a3,#3 + MOV a3,a3,ASR #2 + MOV a2,v4 + ADDLT a2,a2,#&f + SUB a2,a3,a2,ASR #4 + LDR a3,[v5,a2,LSL #2] + LDR a2,[v1,#&110] + TEQ a3,a2 + BNE |L001a04.J42.jpeg_scan_file| + MOV a2,v4 + CMP v4,#0 + ADDLT a2,a2,#3 + MOV a2,a2,ASR #2 + MOV a3,v4 + ADDLT a3,a3,#&1f + SUB a2,a2,a3,ASR #5 + LDR a3,[v5,a2,LSL #2] + LDR a2,[v1,#&114] + TEQ a3,a2 + LDREQ a2,[v1,#&100] + TEQEQ a2,v2 + BNE |L001a04.J42.jpeg_scan_file| + LDR a1,[v1,#&14] + CMP v6,a1 + MOVGT v6,a1 + LDR a1,[v1,#&f8] + CMP v3,a1 + BLT |L0019e4.J39.jpeg_scan_file| + LDR a1,[v1,#&fc] + CMP v6,a1 + BLE |L0019ec.J38.jpeg_scan_file| +|L0019e4.J39.jpeg_scan_file| + MVN a1,#0 + STR a1,[v1,#&f4] +|L0019ec.J38.jpeg_scan_file| + MOV a1,#0 + ADD v1,v1,#&f4 + STMIB v1!,{v3,v6} + B |L002040.J135.jpeg_scan_file| +|L0019fc.J12.jpeg_scan_file| + MOVLT a2,#0 + STRLT a2,[v1,#&20] +|L001a04.J42.jpeg_scan_file| + LDR a2,[v1,#&10] + BL init_workspace + LDR a1,[v1,#&10] + TEQ a1,#0 + STREQ a1,[v1,#&28] + LDREQ a1,[pc, #L001b48-.-8] + BEQ |L001a3c.J134.jpeg_scan_file| + ADD a2,v1,#&1fc + ADD a2,a2,#&3800 + ADD a1,a1,#&204 + SUB a1,a1,#&3c00 + MOV a1,a1,LSR #2 + BIC a1,a1,#&f + STR a2,[v1,#&28] +|L001a3c.J134.jpeg_scan_file| + STR a1,[v1,#&2c] + MOV a1,v4 + CMP v4,#0 + ADDLT a1,a1,#7 + MOV a1,a1,ASR #3 + LDR a1,[v5,a1,LSL #2] + MOV a2,v4 + STR a1,[v1,#&10c] + ADDLT a2,a2,#3 + MOV a2,a2,ASR #2 + MOV a1,v4 + ADDLT a1,a1,#&f + SUB a1,a2,a1,ASR #4 + LDR a1,[v5,a1,LSL #2] + MOV a2,v4 + STR a1,[v1,#&110] + ADDLT a2,a2,#3 + MOV a2,a2,ASR #2 + MOV a1,v4 + ADDLT a1,a1,#&1f + SUB a1,a2,a1,ASR #5 + LDR a1,[v5,a1,LSL #2] + STR a1,[v1,#&114] + STR v5,[v1,#&30] + STR v5,[v1,#&34] + ADD a1,v5,v4 + STR a1,[v1,#&38] + MOV a1,v1 + BL read_file_header + MOV a1,v1 + BL read_scan_header + MOV v4,#0 +|L001abc.J57.jpeg_scan_file| + ADD v5,v1,v4,LSL #2 + MOV a1,v1 + LDR a2,[v5,#&64] + BL fix_huff_tbl + MOV a1,v1 + LDR a2,[v5,#&74]! + BL fix_huff_tbl + ADD v4,v4,#1 + CMP v4,#4 + BLT |L001abc.J57.jpeg_scan_file| + MOV a1,v1 + BL huff_decoder_init + MVN a1,#0 + STR a1,[v1,#&f4] + LDR a1,[v1,#&bc] + STR a1,[v1,#&c0] + MOV a1,#0 + STR a1,[v1,#&c4] + LDR v4,[v1,#&14] + CMP v6,v4 + MOVGT v6,v4 + CMP v3,v6 + MOVGT v3,v6 + STR v2,[v1,#&100] + ADD v1,v1,#&f8 + STMIA v1,{v3,v6} + SUB v1,v1,#&f8 + LDR a1,[v1,#&3c] + TEQ a1,#8 + BEQ |L001b4c.J63.jpeg_scan_file| + MOV a2,#1 + STR a1,[v1,#4] + STR a2,[v1,#0] + MOV a1,#1 + B |L002040.J135.jpeg_scan_file| +L001b48 + DCD &05f5e100 +|L001b4c.J63.jpeg_scan_file| + LDR a1,[v1,#&c8] + LDR v3,[v1,#&4c] + TEQ v3,a1 + MOVNE a1,#3 + STRNE a1,[v1,#0] + BNE |L002040.J135.jpeg_scan_file| + LDR a1,[fp,#&18] + TEQ v4,a1 + LDRNE a1,[fp,#&18] + CMNNE a1,#1 + BEQ |L001b84.J67.jpeg_scan_file| + MOV a1,#7 + STMIA v1,{a1,v4} + B |L002040.J135.jpeg_scan_file| +|L001b84.J67.jpeg_scan_file| + LDR a2,[v1,#&18] + STR a2,[sp,#&1c] + LDR a1,[fp,#&1c] + TEQ a2,a1 + LDRNE a1,[fp,#&1c] + CMNNE a1,#1 + BEQ |L001bb8.J70.jpeg_scan_file| + MOV a1,#6 + STR a1,[v1,#0] + LDR a1,[sp,#&1c] + STR a1,[v1,#4]! + MOV a1,#6 + B |L002040.J135.jpeg_scan_file| +|L001bb8.J70.jpeg_scan_file| + LDR v6,[v1,#&50] + LDR a1,[v6,#&c] + MOV v5,a1,LSL #3 + LDR a1,[sp,#&1c] + ADD a1,a1,v5 + SUB a2,a1,#1 + MOV a1,v5 + BL |__rt_sdiv| + ADD a1,a1,a1,LSL #2 + MOV a1,a1,LSL #2 + LDR a2,[v1,#&28] + MOV a1,a1,LSR #2 + STR a2,[v1,#&818] + ADD a2,a2,a1,LSL #2 + STR a2,[v1,#&28] + LDR a2,[v1,#&2c] + SUB a2,a2,a1 + MOV a1,v5 + STR a2,[v1,#&2c] + BL |__rt_sdiv| + MOV a2,a1 + CMP a1,v4 + BGE |L001c2c.J73.jpeg_scan_file| + MOV a1,#&a + STMIA v1,{a1,v4} + MOV a1,a2 + STR a1,[v1,#8]! + MOV a1,#&a + B |L002040.J135.jpeg_scan_file| +|L001c2c.J73.jpeg_scan_file| + MOV a2,#8 + MOV a1,#5 + ADD v5,v1,#&e4 + TEQ v3,#1 + BNE |L001d3c.J75.jpeg_scan_file| + LDR a3,[v1,#&1c] + TEQ a3,#1 + MOVNE a1,#8 + STMNEIA v1,{a2,a3} + BNE |L002040.J135.jpeg_scan_file| + LDR a2,[v6,#8] + TEQ a2,#1 + LDREQ a2,[v6,#&c] + TEQEQ a2,#1 + BEQ |L001c84.J79.jpeg_scan_file| + STR a1,[v1,#0] + LDR a1,[v6,#8] + STR a1,[v1,#4] + LDR a1,[v6,#&c]! + STR a1,[v1,#8]! + MOV a1,#5 + B |L002040.J135.jpeg_scan_file| +|L001c84.J79.jpeg_scan_file| + SUB sp,sp,#8 + MOV v4,#0 + LDR a1,[v1,#&cc] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR v6,[a2,#&64]! + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#4] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + MOV v3,#0 + STR a1,[sp,#0] + LDR a1,[sp,#&24] + CMP a1,#0 + BLE |L001d30.J84.jpeg_scan_file| + ADD a1,v1,#&118 + STR a1,[sp,#&20] +|L001cd4.J83.jpeg_scan_file| + ADD a1,v3,v3,LSL #2 + LDR a2,[v1,#&818] + ADD a2,a2,a1,LSL #2 + MOV a1,v1 + BL save_huff_stream + ADD v3,v3,#1 + MOV a4,#1 + LDR a1,[v1,#&14] + ADD a1,a1,#7 + MOV a3,a1,ASR #3 + MOV a2,v5 + LDR a1,[sp,#0] + STMDB sp!,{a1-a4} + MOV a3,v6 + MOV a1,v1 + LDR a2,[sp,#&30] + LDR a4,[sp,#&14] + BL do_huff_skip_blocks + ADD sp,sp,#&10 + ADD v4,v4,#8 + LDR a1,[v1,#&18] + CMP v4,a1 + BLT |L001cd4.J83.jpeg_scan_file| +|L001d30.J84.jpeg_scan_file| + ADD sp,sp,#8 + BIC v2,v2,#&30 + B |L001fc0.J87.jpeg_scan_file| +|L001d3c.J75.jpeg_scan_file| + TEQ v3,#3 + BNE |L002038.J88.jpeg_scan_file| + LDR a3,[v6,#&c] + STR a3,[sp,#-4]! + LDR a4,[v6,#8] + MOV v3,a4 + CMP a4,#2 + CMPLE a3,#2 + BLE |L001d74.J90.jpeg_scan_file| + STR a1,[v1,#0] + LDR a1,[v6,#8] + STR a1,[v1,#4] + LDR a1,[v6,#&c]! + B |L001dc0.J137.jpeg_scan_file| +|L001d74.J90.jpeg_scan_file| + LDR a3,[v6,#&40] + TEQ a3,#1 + LDREQ a3,[v6,#&44] + TEQEQ a3,#1 + BEQ |L001d9c.J94.jpeg_scan_file| + STR a1,[v1,#0] + LDR a1,[v6,#&40] + STR a1,[v1,#4] + LDR a1,[v6,#&44]! + B |L001dc0.J137.jpeg_scan_file| +|L001d9c.J94.jpeg_scan_file| + LDR a3,[v6,#&78] + TEQ a3,#1 + LDREQ a3,[v6,#&7c] + TEQEQ a3,#1 + BEQ |L001dcc.J98.jpeg_scan_file| + STR a1,[v1,#0] + LDR a1,[v6,#&78] + STR a1,[v1,#4] + LDR a1,[v6,#&7c]! +|L001dc0.J137.jpeg_scan_file| + STR a1,[v1,#8]! + MOV a1,#5 + B |L001de4.J138.jpeg_scan_file| +|L001dcc.J98.jpeg_scan_file| + LDR a1,[v1,#&1c] + TEQ a1,#3 + BEQ |L001de8.J102.jpeg_scan_file| + STR a1,[v1,#4] + STR a2,[v1,#0] + MOV a1,#8 +|L001de4.J138.jpeg_scan_file| + LDMDB fp,{v1-v6,fp,sp,pc}^ +|L001de8.J102.jpeg_scan_file| + TEQ v3,#2 + LDREQ a1,[sp,#0] + TEQEQ a1,#2 + BICNE v2,v2,#&30 + SUB sp,sp,#&28 + MOV a1,#0 + MOV v4,#0 + STR a1,[sp,#&24] + LDR a1,[v1,#&cc] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#&20] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#&1c] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#&18] + LDR a1,[v1,#&d0] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#&14] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#&10] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#&c] + LDR a1,[v1,#&d4] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#8] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#4] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#0] + LDR a1,[sp,#&48] + CMP a1,#0 + BLE |L001fbc.J109.jpeg_scan_file| + LDR a2,[sp,#&28] + MUL a1,a2,v3 + ADD a2,v1,#&218 + STR a2,[sp,#&3c] + ADD a2,v1,#&e8 + STR a2,[sp,#&38] + ADD a2,v1,#&218 + ADD a2,a2,#&400 + STR a2,[sp,#&34] + ADD a2,v1,#&ec + STR a1,[sp,#&40] + ADD a1,v1,#&318 + ADD a1,a1,#&400 + STR a1,[sp,#&2c] + STR a2,[sp,#&30] +|L001eec.J108.jpeg_scan_file| + ADD a1,v4,v4,LSL #2 + LDR a2,[v1,#&818] + ADD a2,a2,a1,LSL #2 + MOV a1,v1 + BL save_huff_stream + ADD v4,v4,#1 + MOV v6,#0 + LDR a1,[v1,#&14] + CMP a1,#0 + BLE |L001fa0.J112.jpeg_scan_file| +|L001f14.J111.jpeg_scan_file| + MOV a4,#0 + MOV a2,v5 + LDR a1,[sp,#&18] + LDR a3,[sp,#&40] + STMDB sp!,{a1-a4} + MOV a1,v1 + LDR a2,[sp,#&4c] + LDR a3,[sp,#&30] + LDR a4,[sp,#&2c] + BL do_huff_skip_blocks + ADD sp,sp,#&10 + MOV a4,#1 + LDR a2,[sp,#&c] + LDR a3,[sp,#&38] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&40] + LDR a3,[sp,#&20] + LDR a4,[sp,#&1c] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + MOV a4,#1 + LDR a2,[sp,#0] + LDR a3,[sp,#&30] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&38] + LDR a3,[sp,#&14] + LDR a4,[sp,#&10] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + ADD v6,v6,v3,LSL #3 + LDR a1,[v1,#&14] + CMP v6,a1 + BLT |L001f14.J111.jpeg_scan_file| +|L001fa0.J112.jpeg_scan_file| + ADD a2,sp,#&24 + LDMIA a2,{a1,a2} + ADD a2,a1,a2,LSL #3 + STR a2,[sp,#&24] + LDR a1,[v1,#&18] + CMP a2,a1 + BLT |L001eec.J108.jpeg_scan_file| +|L001fbc.J109.jpeg_scan_file| + ADD sp,sp,#&2c +|L001fc0.J87.jpeg_scan_file| + TST v2,#4 + BEQ |L001ffc.J117.jpeg_scan_file| + LDR a1,[v1,#&50] + LDR a1,[a1,#8] + MOV a1,a1,LSL #3 + LDR a2,[v1,#&2c] + BL |__rt_sdiv| + LDR a2,[v1,#&14] + CMP a1,a2,LSL #1 + LDRLT a1,[v1,#&100] + BICLT a1,a1,#4 + STRLT a1,[v1,#&100] + LDRGE a1,[v1,#4] + ORRGE a1,a1,#4 + STRGE a1,[v1,#4] +|L001ffc.J117.jpeg_scan_file| + TST v2,#8 + LDRNE a1,[v1,#4] + ORRNE a1,a1,#8 + STRNE a1,[v1,#4] + TST v2,#&10 + LDRNE a1,[v1,#4] + ORRNE a1,a1,#&10 + STRNE a1,[v1,#4] + TST v2,#&20 + LDRNE a1,[v1,#4] + ORRNE a1,a1,#&20 + STRNE a1,[v1,#4] + STR v2,[v1,#&100] + LDR a1,[v1,#0] + B |L002040.J135.jpeg_scan_file| +|L002038.J88.jpeg_scan_file| + MOV a1,#9 + STMIA v1,{a1,v3} +|L002040.J135.jpeg_scan_file| + LDMDB fp,{v1-v6,fp,sp,pc}^ + + IMPORT asm_j_rev_dct + IMPORT asm_mono_convert_block + IMPORT asm_colour_convert_block_16 + IMPORT asm_colour_convert_block + IMPORT asm_colour_convert_block_8 + IMPORT asm_get_table32k + IMPORT asm_diffuse_to_8bpp +jpeg_find_line + MOV ip,sp + STMDB sp!,{a1-a3,v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + LDR a1,[a1,#&50] + LDR a1,[a1,#&c] + ADD a1,a1,#2 + STR a1,[sp,#-&34]! + LDR a1,[v1,#&2c] + LDR a2,[sp,#0] + MOV v4,a1,ASR a2 + LDR a1,[v1,#&18] + LDR a2,[fp,#-&2c] + SUB a1,a1,a2 + SUBS a1,a1,#1 + STR a1,[fp,#-&2c] + MOVMI a2,#4 + MOVMI a1,#&8e + ADDMI a1,a1,#&200 + BLMI exit_c + LDR a2,[fp,#-&2c] + LDR a1,[v1,#&18] + CMP a2,a1 + MOVGE a2,#4 + MOVGE a1,#&8f + ADDGE a1,a1,#&200 + BLGE exit_c + LDR a2,[fp,#-&2c] + LDR a1,[sp,#0] + MOV a2,a2,ASR a1 + STR a2,[sp,#4] + LDR a1,[v1,#&f4] + TEQ a2,a1 + BEQ |L002900.J8.jpeg_find_line| + SUB sp,sp,#4 + LDR a1,[v1,#&28] + TEQ a1,#0 + MOVEQ a2,#4 + MOVEQ a1,#&a2 + ADDEQ a1,a1,#&200 + BLEQ exit_c + MVN a1,#0 + STR a1,[v1,#&f4] + LDR a1,[sp,#8] + ADD a2,a1,a1,LSL #2 + LDR a1,[v1,#&818] + ADD a2,a1,a2,LSL #2 + MOV a1,v1 + BL restore_huff_stream + LDR a1,[v1,#&4c] + ADD a3,v1,#&e4 + ADD v6,v1,#&118 + ADD a2,v1,#&218 + TEQ a1,#1 + STR a2,[sp,#&30] + STR a3,[sp,#&34] + BNE |L0022bc.J12.jpeg_find_line| + SUB sp,sp,#8 + MOV v3,#0 + LDR a1,[v1,#&cc] + LDR v2,[v1,#&28] + LDR a2,[a1,#&10] + ADD a2,v1,a2,LSL #2 + LDR v5,[a2,#&54]! + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#4] + LDR a1,[a1,#&18] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&74] + STR a1,[sp,#0] + LDR a1,[v1,#&f8] + CMP a1,#8 + BLT |L0021b4.J14.jpeg_find_line| + SUB a1,a1,#8 + MOV a1,a1,ASR #3 + MOV a4,#1 + STR a1,[sp,#-4]! + MOV a3,a1 + MOV a1,v5 + LDR a2,[sp,#&40] + STMDB sp!,{a1-a4} + MOV a2,v6 + MOV a1,v1 + LDR a3,[sp,#&18] + LDR a4,[sp,#&14] + BL do_huff_skip_blocks + LDR a1,[sp,#&10]! + ADD v3,v3,a1,LSL #3 + ADD v2,v2,a1,LSL #5 + ADD sp,sp,#4 +|L0021b4.J14.jpeg_find_line| + LDR a1,[v1,#&100] + TST a1,#2 + LDR a1,[v1,#&fc] + BEQ |L002248.J16.jpeg_find_line| + CMP v3,a1 + BGE |L002240.J19.jpeg_find_line| +|L0021cc.J18.jpeg_find_line| + MOV a4,#1 + MOV a3,#1 + MOV a1,v5 + LDR a2,[sp,#&3c] + STMDB sp!,{a1-a4} + MOV a1,v1 + LDR a2,[sp,#&48] + LDR a3,[sp,#&14] + LDR a4,[sp,#&10] + BL do_huff_skip_blocks + ADD sp,sp,#&10 + LDR a2,[v1,#&e4] + LDR a1,[v5,#0] + MUL a2,a1,a2 + MOV a1,v1 + BL mono_convert_pixel + STR a1,[v2,#0] + STR a1,[v2,#4] + STR a1,[v2,#8] + STR a1,[v2,#&c] + STR a1,[v2,#&10] + STR a1,[v2,#&14] + STR a1,[v2,#&18] + ADD v3,v3,#8 + STR a1,[v2,#&1c]! + ADD v2,v2,#4 + LDR a1,[v1,#&fc] + CMP v3,a1 + BLT |L0021cc.J18.jpeg_find_line| +|L002240.J19.jpeg_find_line| + MOV a1,#1 + B |L0022b4.J127.jpeg_find_line| +|L002248.J16.jpeg_find_line| + CMP v3,a1 + BGE |L0022b0.J24.jpeg_find_line| +|L002250.J23.jpeg_find_line| + MOV a4,#1 + MOV a3,#1 + MOV a1,v5 + LDR a2,[sp,#&3c] + STMDB sp!,{a1-a4} + MOV a1,v1 + LDR a2,[sp,#&48] + LDR a3,[sp,#&14] + LDR a4,[sp,#&10] + BL do_huff_decode_blocks + ADD sp,sp,#&10 + MOV a1,v1 + MOV a3,#1 + LDR a2,[sp,#&38] + BL asm_j_rev_dct + MOV a1,v6 + MOV a3,v4 + MOV a2,v2 + BL asm_mono_convert_block + ADD v3,v3,#8 + ADD v2,v2,#&20 + LDR a1,[v1,#&fc] + CMP v3,a1 + BLT |L002250.J23.jpeg_find_line| +|L0022b0.J24.jpeg_find_line| + MOV a1,#8 +|L0022b4.J127.jpeg_find_line| + STR a1,[sp,#8]! + B |L002828.J27.jpeg_find_line| +|L0022bc.J12.jpeg_find_line| + SUB sp,sp,#&28 + MOV v5,#0 + LDR a1,[v1,#&cc] + LDR v2,[v1,#&28] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#&24] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#&20] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#&1c] + LDR a1,[v1,#&d0] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#&18] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#&14] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#&10] + LDR a1,[v1,#&d4] + LDR a2,[a1,#&14] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&64] + STR a2,[sp,#&c] + LDR a2,[a1,#&18] + ADD a2,v1,a2,LSL #2 + LDR a2,[a2,#&74] + STR a2,[sp,#8] + LDR a1,[a1,#&10] + ADD a1,v1,a1,LSL #2 + LDR a1,[a1,#&54] + STR a1,[sp,#4] + LDR a1,[v1,#&50] + LDR a2,[a1,#&c] + STR a2,[sp,#0] + LDR v3,[a1,#8]! + ADD a1,v5,v3,LSL #3 + LDR a2,[v1,#&f8] + ADD a4,v1,#&e8 + ADD a3,v1,#&ec + CMP a1,a2 + STR a3,[sp,#&50] + STR a4,[sp,#&54] + BGT |L00244c.J29.jpeg_find_line| + LDR a2,[sp,#0] + MUL a1,a2,v3 + STR a1,[sp,#&4c] +|L0023a0.J28.jpeg_find_line| + MOV a4,#0 + LDR a1,[sp,#&1c] + LDR a2,[sp,#&5c] + LDR a3,[sp,#&4c] + STMDB sp!,{a1-a4} + MOV a2,v6 + MOV a1,v1 + LDR a3,[sp,#&34] + LDR a4,[sp,#&30] + BL do_huff_skip_blocks + ADD sp,sp,#&10 + MOV a4,#1 + LDR a2,[sp,#&10] + LDR a3,[sp,#&54] + STMDB sp!,{a2-a4} + MOV a2,v6 + MOV a1,v1 + LDR a3,[sp,#&24] + LDR a4,[sp,#&20] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + MOV a4,#1 + LDR a2,[sp,#4] + LDR a3,[sp,#&50] + STMDB sp!,{a2-a4} + MOV a2,v6 + MOV a1,v1 + LDR a3,[sp,#&18] + LDR a4,[sp,#&14] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + ADD v5,v5,v3,LSL #3 + LDR a1,[v1,#&100] + TST a1,#&10 + ADDNE v2,v2,v3,LSL #4 + BNE |L00243c.J33.jpeg_find_line| + TST a1,#&20 + ADDEQ v2,v2,v3,LSL #5 + ADDNE v2,v2,v3,LSL #3 +|L00243c.J33.jpeg_find_line| + ADD a2,v5,v3,LSL #3 + LDR a1,[v1,#&f8] + CMP a2,a1 + BLE |L0023a0.J28.jpeg_find_line| +|L00244c.J29.jpeg_find_line| + LDR a1,[v1,#&100] + TST a1,#2 + ADD a1,v1,#&318 + ADD a1,a1,#&400 + STR a1,[sp,#&48] + MOV a1,#2 + ADD a3,v1,#&218 + ADD a3,a3,#&400 + STR a3,[sp,#&44] + LDR a2,[v1,#&fc] + BEQ |L002628.J38.jpeg_find_line| + CMP v5,a2 + BGE |L002620.J41.jpeg_find_line| + LDR a2,[sp,#0] + MUL a1,a2,v3 + STR a1,[sp,#&40] +|L00248c.J40.jpeg_find_line| + SUB sp,sp,#&10 + MOV a4,#0 + MOV a3,#1 + LDR a1,[sp,#&2c] + LDR a2,[sp,#&6c] + STMDB sp!,{a1-a4} + MOV a1,v1 + LDR a2,[sp,#&78] + LDR a3,[sp,#&44] + LDR a4,[sp,#&40] + BL do_huff_skip_blocks + ADD sp,sp,#&10 + LDR a2,[v1,#&e4] + LDR a1,[sp,#&2c] + LDR a1,[a1,#0] + MUL a2,a1,a2 + MOV v6,#1 + STR a2,[sp,#0] + LDR a1,[sp,#&50] + CMP a1,#1 + BLE |L002530.J44.jpeg_find_line| +|L0024e0.J43.jpeg_find_line| + MOV a4,#1 + LDR a2,[sp,#&2c] + LDR a3,[sp,#&6c] + STMDB sp!,{a2-a4} + ADD a1,v1,v6,LSL #8 + ADD a2,a1,#&218 + MOV a1,v1 + LDR a3,[sp,#&40] + LDR a4,[sp,#&3c] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + LDR a2,[v1,#&e4] + LDR a1,[sp,#&2c] + LDR a1,[a1,#0] + MUL a2,a1,a2 + STR a2,[sp,v6,LSL #2] + ADD v6,v6,#1 + LDR a1,[sp,#&50] + CMP a1,v6 + BGT |L0024e0.J43.jpeg_find_line| +|L002530.J44.jpeg_find_line| + MOV a4,#1 + LDR a2,[sp,#&20] + LDR a3,[sp,#&64] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&60] + LDR a3,[sp,#&34] + LDR a4,[sp,#&30] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + MOV a4,#1 + LDR a2,[sp,#&14] + LDR a3,[sp,#&60] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&64] + LDR a3,[sp,#&28] + LDR a4,[sp,#&24] + BL asm_huff_skip_blocks + ADD sp,sp,#&c + LDR a2,[v1,#&e8] + LDR a1,[sp,#&20] + LDR a1,[a1,#0] + MUL a2,a1,a2 + LDR a3,[v1,#&ec] + LDR a1,[sp,#&14] + LDR a1,[a1,#0] + MUL a3,a1,a3 + MOV a1,sp + BL colour_convert_pixels + MOV v6,#0 + MOV a3,#2 + MOV a4,#1 +|L0025b4.J47.jpeg_find_line| + LDR a1,[sp,#0] + STR a1,[v2,v6,LSL #2] + TEQ v3,#2 + ADDEQ a2,v2,v6,LSL #2 + LDREQ a1,[sp,#4] + STREQ a1,[a2,#&20]! + LDR a1,[sp,#&10] + TEQ a1,#2 + BNE |L0025fc.J50.jpeg_find_line| + CMP v3,#2 + MOVNE a1,a4 + MOVEQ a1,a3 + LDR a2,[sp,a1,LSL #2] + ADD a1,v4,v6 + STR a2,[v2,a1,LSL #2] + ADDEQ a1,v2,a1,LSL #2 + LDREQ a2,[sp,#&c] + STREQ a2,[a1,#&20]! +|L0025fc.J50.jpeg_find_line| + ADD v6,v6,#1 + CMP v6,#8 + BLT |L0025b4.J47.jpeg_find_line| + ADD v5,v5,v3,LSL #3 + ADD v2,v2,v3,LSL #5 + ADD sp,sp,#&10 + LDR a1,[v1,#&fc] + CMP v5,a1 + BLT |L00248c.J40.jpeg_find_line| +|L002620.J41.jpeg_find_line| + LDR a1,[sp,#0] + B |L002824.J128.jpeg_find_line| +|L002628.J38.jpeg_find_line| + CMP v5,a2 + BGE |L00281c.J61.jpeg_find_line| + ADD a1,v1,#&18 + ADD a1,a1,#&400 + STR a1,[sp,#&3c] + LDR a2,[sp,#0] + MUL a1,a2,v3 + STR a1,[sp,#&38] +|L002648.J60.jpeg_find_line| + MOV a4,#0 + LDR a1,[sp,#&1c] + LDR a2,[sp,#&5c] + LDR a3,[sp,#&38] + STMDB sp!,{a1-a4} + MOV a1,v1 + LDR a2,[sp,#&68] + LDR a3,[sp,#&34] + LDR a4,[sp,#&30] + BL do_huff_decode_blocks + ADD sp,sp,#&10 + MOV a4,#1 + LDR a2,[sp,#&10] + LDR a3,[sp,#&54] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&50] + LDR a3,[sp,#&24] + LDR a4,[sp,#&20] + BL asm_huff_decode_blocks + ADD sp,sp,#&c + MOV a4,#1 + LDR a2,[sp,#4] + LDR a3,[sp,#&50] + STMDB sp!,{a2-a4} + MOV a1,v1 + LDR a2,[sp,#&54] + LDR a3,[sp,#&18] + LDR a4,[sp,#&14] + BL asm_huff_decode_blocks + ADD sp,sp,#&c + LDR a1,[v1,#&100] + TST a1,#1 + BEQ |L002758.J63.jpeg_find_line| + MOV a1,v1 + LDR a2,[sp,#&58] + LDR a3,[sp,#&38] + BL asm_j_rev_dct + MOV a1,v6 + MOV a3,v4 + MOV a2,v2 + BL asm_mono_convert_block + TEQ v3,#2 + BNE |L002708.J65.jpeg_find_line| + ADD a2,v2,#&20 + MOV a3,v4 + LDR a1,[sp,#&58] + BL asm_mono_convert_block +|L002708.J65.jpeg_find_line| + LDR a1,[sp,#0] + TEQ a1,#2 + BNE |L0027f0.J74.jpeg_find_line| + ADD a2,v2,v4,LSL #5 + TEQ v3,#1 + STR a2,[sp,#&34] + MOVNE a1,#2 + MOVEQ a1,#1 + ADD a1,v1,a1,LSL #8 + ADD a1,a1,#&118 + MOV a3,v4 + BL asm_mono_convert_block + TEQ v3,#2 + BNE |L0027f0.J74.jpeg_find_line| + LDR a1,[sp,#&34] + ADD a2,a1,#&20 + MOV a3,v4 + LDR a1,[sp,#&3c] + BL asm_mono_convert_block + B |L0027f0.J74.jpeg_find_line| +|L002758.J63.jpeg_find_line| + LDR a1,[sp,#&38] + TEQ a1,#4 + BNE |L0027b0.J75.jpeg_find_line| + MOV a1,v1 + MOV a3,#6 + LDR a2,[sp,#&58] + BL asm_j_rev_dct + LDR a1,[v1,#&100] + TST a1,#&10 + BEQ |L002794.J77.jpeg_find_line| + MOV a1,v6 + MOV a3,v4 + MOV a2,v2 + BL asm_colour_convert_block_16 + B |L0027f0.J74.jpeg_find_line| +|L002794.J77.jpeg_find_line| + TST a1,#&20 + MOV a1,v6 + MOV a3,v4 + MOV a2,v2 + BLEQ asm_colour_convert_block + BLNE asm_colour_convert_block_8 + B |L0027f0.J74.jpeg_find_line| +|L0027b0.J75.jpeg_find_line| + MOV a1,v1 + LDR a2,[sp,#&58] + LDR a3,[sp,#&38] + BL asm_j_rev_dct + MOV a1,v1 + MOV a3,#2 + LDR a2,[sp,#&44] + BL asm_j_rev_dct + LDR a4,[sp,#0] + STMDB sp!,{a4} + MOV a1,v6 + MOV a4,v3 + MOV a3,v4 + MOV a2,v2 + BL colour_convert_unusual_block + ADD sp,sp,#4 +|L0027f0.J74.jpeg_find_line| + ADD v5,v5,v3,LSL #3 + LDR a1,[v1,#&100] + TST a1,#&10 + ADDNE v2,v2,v3,LSL #4 + BNE |L002810.J86.jpeg_find_line| + TST a1,#&20 + ADDEQ v2,v2,v3,LSL #5 + ADDNE v2,v2,v3,LSL #3 +|L002810.J86.jpeg_find_line| + LDR a1,[v1,#&fc] + CMP v5,a1 + BLT |L002648.J60.jpeg_find_line| +|L00281c.J61.jpeg_find_line| + LDR a1,[sp,#0] + MOV a1,a1,LSL #3 +|L002824.J128.jpeg_find_line| + STR a1,[sp,#&28]! +|L002828.J27.jpeg_find_line| + LDR a1,[v1,#&100] + TST a1,#8 + BEQ |L0028f4.J91.jpeg_find_line| + LDR a1,[v1,#&20] + TEQ a1,#0 + BNE |L002860.J93.jpeg_find_line| + LDR a1,[v1,#&24] + TEQ a1,#0 + BNE |L002860.J93.jpeg_find_line| + BL asm_get_table32k + STR a1,[v1,#&20] + TEQ a1,#0 + MOVEQ a1,#1 + STREQ a1,[v1,#&24] +|L002860.J93.jpeg_find_line| + LDR a1,[v1,#&f8] + MOV a2,a1 + LDR a4,[v1,#&28] + ADD v3,a4,a1,LSL #2 + LDR a3,[v1,#&fc] + SUB a3,a3,a1 + ADD v6,a4,a1 + ADD a3,a3,#&f + BIC v2,a3,#&f + LDR a3,[v1,#&14] + SUB a1,a3,a1 + CMP a1,v2 + MOVLT v2,a1 + LDR a1,[v1,#&100] + TST a1,#4 + ADDNE v3,v3,a2,LSL #2 + MOVNE v2,v2,LSL #1 + CMP v2,#0 + BLE |L0028f4.J91.jpeg_find_line| +|L0028ac.J102.jpeg_find_line| + CMP v2,#&20 + MOVLT v5,v2 + MOVGE v5,#&10 + MOV a3,v4 + LDR a4,[fp,#-&28] + LDR a2,[sp,#0] + STMDB sp!,{a2-a4} + MOV a3,v6 + MOV a2,v5 + MOV a1,v3 + LDR a4,[v1,#&20] + BL asm_diffuse_to_8bpp + ADD sp,sp,#&c + ADD v3,v3,v5,LSL #2 + ADD v6,v6,v5 + SUB v2,v2,v5 + CMP v2,#0 + BGT |L0028ac.J102.jpeg_find_line| +|L0028f4.J91.jpeg_find_line| + LDR a1,[sp,#8] + ADD sp,sp,#4 + STR a1,[v1,#&f4] +|L002900.J8.jpeg_find_line| + LDR a1,[v1,#&28]! + LDR a2,[v1,#&d8]! + TST a2,#2 + LDR a2,[sp,#0] + BEQ |L002930.J109.jpeg_find_line| + TEQ a2,#4 + BNE |L00294c.J129.jpeg_find_line| + LDR a2,[fp,#-&2c] + AND a2,a2,#&f + CMP a2,#8 + ADDGE a1,a1,v4,LSL #2 + B |L00294c.J129.jpeg_find_line| +|L002930.J109.jpeg_find_line| + MOV a3,#1 + MOV a2,a3,LSL a2 + SUB a2,a2,#1 + LDR a3,[fp,#-&2c] + AND a2,a2,a3 + MUL a2,v4,a2 + ADD a1,a1,a2,LSL #2 +|L00294c.J129.jpeg_find_line| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +looks_like_jpeg + LDR a2,[a1,#0] + ADD ip,a2,#&1f000000 + ADD ip,ip,#&2700 + CMN ip,#1 + BNE |L002994.J5.looks_like_jpeg| + LDRB a2,[a1,#6] + TEQ a2,#&4a + LDREQB a2,[a1,#7] + TEQEQ a2,#&46 + LDREQB a2,[a1,#8] + TEQEQ a2,#&49 + LDREQB a2,[a1,#9] + TEQEQ a2,#&46 + LDREQB a1,[a1,#&a] + TEQEQ a1,#0 + MOVEQ a1,#1 + MOVEQS pc,lr +|L002994.J5.looks_like_jpeg| + MOV a1,#0 + MOVS pc,lr + + IMPORT _swix +find_image_dims + MOV ip,sp + STMDB sp!,{a1-a4} + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#&14 + MOV v4,a1 + SUB sp,sp,#&14 + SUB sp,sp,#&400 + MOV a1,#0 + LDR v1,[fp,#&1c] + LDR v3,[fp,#&18] + MOV v2,#0 + STR a1,[sp,#&40c] + AND a1,v3,#3 + TEQ a1,#1 + BNE |L002a60.J6.find_image_dims| + MOV v2,#1 + ADD a4,sp,#8 + STMDB sp!,{a4} + MOV a4,v4 + MOV a3,#&4f + MOV a2,#&80000003 + MOV a1,#&d + BL _swix + ADD sp,sp,#4 + MOVS a2,a1 + BEQ |L002a0c.J8.find_image_dims| +|L002a04.J9.find_image_dims| + STR a2,[v1,#0] + B |L002dec.J95.find_image_dims| +|L002a0c.J8.find_image_dims| + ADD v4,sp,#&c + ADD a4,sp,#4 + MOV a3,#&400 + MOV a2,v4 + STMDB sp!,{a2-a4} + MOV a3,#4 + MOV a2,#&2000000f + MOV a1,#&c + LDR a4,[sp,#&14] + BL _swix + ADD sp,sp,#&c + MOVS v5,a1 + BEQ |L002a60.J6.find_image_dims| + MOV a3,#0 + MOV a2,#3 + MOV a1,#&d + LDR a4,[sp,#8] + BL _swix + STR v5,[v1,#0] + MOV a1,v5 + B |L002dec.J95.find_image_dims| +|L002a60.J6.find_image_dims| + MOV a1,v4 + BL looks_like_jpeg + TEQ a1,#0 + BNE |L002a9c.J12.find_image_dims| + TEQ v2,#0 + BEQ |L002a94.J14.find_image_dims| + MOV a3,#0 + MOV a2,#3 + MOV a1,#&d + LDR a4,[sp,#8] + BL _swix + MOVS a2,a1 + BNE |L002a04.J9.find_image_dims| +|L002a94.J14.find_image_dims| + MOV a1,#1 + B |L002dec.J95.find_image_dims| +|L002a9c.J12.find_image_dims| + LDRB a1,[v4,#&d] + TEQ a1,#1 + BNE |L002acc.J18.find_image_dims| + LDRB a1,[v4,#&e] + MOV a1,a1,LSL #24 + LDRB a2,[v4,#&f] + ADD a1,a1,a2,LSL #16 + LDRB a2,[v4,#&10] + ADD a1,a1,a2,LSL #8 + LDRB a2,[v4,#&11] + ADD a1,a1,a2 + B |L002b40.J92.find_image_dims| +|L002acc.J18.find_image_dims| + TEQ a1,#2 + BNE |L002b48.J21.find_image_dims| + LDRB a1,[v4,#&e] + RSB a2,a1,a1,LSL #7 + MOV a2,a2,LSL #1 + MOV a1,#&64 + BL |__rt_sdiv| + MOV v5,a1 + LDRB a1,[v4,#&f] + RSB a2,a1,a1,LSL #7 + MOV a2,a2,LSL #1 + MOV a1,#&64 + BL |__rt_sdiv| + ADD a1,a1,#&18 + MOV v5,v5,LSL a1 + LDRB a1,[v4,#&10] + RSB a2,a1,a1,LSL #7 + MOV a2,a2,LSL #1 + MOV a1,#&64 + BL |__rt_sdiv| + ADD a1,a1,#&10 + MOV v5,v5,LSL a1 + LDRB a1,[v4,#&11] + RSB a2,a1,a1,LSL #7 + MOV a2,a2,LSL #1 + MOV a1,#&64 + BL |__rt_sdiv| + ADD a1,a1,#8 + MOV a1,v5,LSL a1 +|L002b40.J92.find_image_dims| + STR a1,[sp,#0] + B |L002b8c.J20.find_image_dims| +|L002b48.J21.find_image_dims| + LDRB a1,[v4,#&f] + LDRB a2,[v4,#&e] + ADDS a1,a1,a2,LSL #8 + MOVEQ a1,#1 + LDRB a2,[v4,#&11] + LDRB a3,[v4,#&10] + ADD a2,a2,a3,LSL #8 + BL |__rt_sdiv| + TEQ a1,#0 + RSBNE a1,a1,a1,LSL #4 + ADDNE a1,a1,a1,LSL #1 + MOVNE a1,a1,LSL #1 + MOVEQ a1,#&5a + ORR a1,a1,#&5a0000 + STR a1,[sp,#0] + MOV a1,#&100 + STR a1,[sp,#&40c] +|L002b8c.J20.find_image_dims| + ADD v4,v4,#2 +|L002b90.J88.find_image_dims| + LDR a1,[sp,#4] + B |L002c60.J30.find_image_dims| +|L002b98.J29.find_image_dims| + LDRB a2,[v4,#3] + LDRB a3,[v4,#2] + ADD a2,a2,a3,LSL #8 + ADD a2,a2,v4 + ADD v4,a2,#2 + TEQ v2,#0 + BEQ |L002c60.J30.find_image_dims| + CMP v4,a1 + BLT |L002c60.J30.find_image_dims| + SUB v5,v4,a1 + ADD v4,sp,#&c + ADD a4,sp,#4 + MOV a3,#&400 + MOV a2,v4 + STMDB sp!,{a2-a4} + MOV a3,#4 + MOV a2,#&2000000f + MOV a1,#&c + LDR a4,[sp,#&14] + BL _swix + ADD sp,sp,#&c + MOVS v6,a1 + BEQ |L002c14.J35.find_image_dims| +|L002bf4.J36.find_image_dims| + MOV a3,#0 + MOV a2,#3 + MOV a1,#&d + LDR a4,[sp,#8] + BL _swix + STR v6,[v1,#0] + MOV a1,v6 + B |L002dec.J95.find_image_dims| +|L002c14.J35.find_image_dims| + CMP v5,#&400 + BLE |L002c58.J38.find_image_dims| +|L002c1c.J37.find_image_dims| + ADD a4,sp,#4 + MOV a3,#&400 + MOV a2,v4 + STMDB sp!,{a2-a4} + MOV a3,#4 + MOV a2,#&2000000f + MOV a1,#&c + LDR a4,[sp,#&14] + BL _swix + ADD sp,sp,#&c + MOVS v6,a1 + BNE |L002bf4.J36.find_image_dims| + SUB v5,v5,#&400 + CMP v5,#&400 + BGT |L002c1c.J37.find_image_dims| +|L002c58.J38.find_image_dims| + ADD v4,v4,v5 + B |L002b90.J88.find_image_dims| +|L002c60.J30.find_image_dims| + LDRB a2,[v4,#0] + TEQ a2,#&ff + BNE |L002c84.J43.find_image_dims| + LDRB a2,[v4,#1] + TEQ a2,#&c0 + TEQNE a2,#&c1 + TEQNE a2,#&c9 + BNE |L002b98.J29.find_image_dims| + B |L002c98.J49.find_image_dims| +|L002c84.J43.find_image_dims| + LDRB a1,[v4,#1] + TEQ a1,#&c0 + TEQNE a1,#&c1 + TEQNE a1,#&c9 + BNE |L002a94.J14.find_image_dims| +|L002c98.J49.find_image_dims| + LDRB a1,[v4,#6] + LDRB a2,[v4,#5] + ADD v5,a1,a2,LSL #8 + LDRB a1,[v4,#8] + LDRB a2,[v4,#7] + ADD a1,a1,a2,LSL #8 + STR a1,[sp,#&410] + LDRB a1,[v4,#9] + LDR a2,[sp,#&40c] + ORR v6,a1,a2 + CMP v3,#3 + BLE |L002d78.J54.find_image_dims| + SUB sp,sp,#8 + BIC v3,v3,#3 + LDR a1,[v3,#0] + CMP v6,#1 + STR a1,[sp,#4] + MOVNE a1,#&10 + MOVEQ a1,#8 + LDR a2,[sp,#&418] + ADD a2,a2,#&f + MUL a1,a2,a1 + MOV a2,a1,LSL #2 + BNE |L002d08.J60.find_image_dims| + ADDS a1,v5,#7 + ADDMI a1,a1,#7 + MOV a1,a1,ASR #3 + B |L002d0c.J59.find_image_dims| +|L002d08.J60.find_image_dims| + MOV a1,v5 +|L002d0c.J59.find_image_dims| + ADD a1,a1,a1,LSL #2 + ADD a1,a2,a1,LSL #2 + ADD a1,a1,#&ff + ADD a1,a1,#&3d00 + BIC v4,a1,#3 + MOV a3,sp + MOV a2,#&80000000 + MOV a1,#&51 + BL _swix + LDR a1,[sp,#4] + TEQ a1,#0 + LDREQ a1,[sp,#0] + ADDEQ a2,v4,a1 + BEQ |L002d64.J93.find_image_dims| + LDR a1,[sp,#4] + LDR a1,[a1,#&10] + CMP a1,v4 + MOVGE a1,#0 + BGE |L002d70.J66.find_image_dims| + SUB a2,v4,a1 + LDR a1,[sp,#0] + ADD a2,a2,a1 +|L002d64.J93.find_image_dims| + SUB a2,a2,#1 + SUB a1,a1,#1 + BIC a1,a2,a1 +|L002d70.J66.find_image_dims| + ADD sp,sp,#8 + STR a1,[v3,#0] +|L002d78.J54.find_image_dims| + LDR a1,[fp,#&c] + TEQ a1,#0 + LDRNE a1,[fp,#&c] + STRNE v5,[a1,#0] + LDR a1,[fp,#8] + TEQ a1,#0 + LDRNE a1,[sp,#&410] + LDRNE a2,[fp,#8] + STRNE a1,[a2,#0] + LDR a1,[fp,#&10] + TEQ a1,#0 + MOVNE a1,v6 + LDRNE a2,[fp,#&10] + STRNE a1,[a2,#0] + LDR a1,[fp,#&14] + CMP a1,#0 + LDRNE a1,[sp,#0] + LDRNE a2,[fp,#&14] + STRNE a1,[a2,#0] + TEQ v2,#0 + BEQ |L002de8.J80.find_image_dims| + MOV a3,#0 + MOV a2,#3 + MOV a1,#&d + LDR a4,[sp,#8] + BL _swix + MOVS a2,a1 + BNE |L002a04.J9.find_image_dims| +|L002de8.J80.find_image_dims| + MOV a1,#0 +|L002dec.J95.find_image_dims| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +check_sprite_area + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + SUB sp,sp,#&10 + LDMIA a1,{a2,a3} + STR a3,[sp,#8] + ADD a4,a1,#8 + LDMIA a4,{a3,a4} + CMP a3,a4 + CMPLE a4,a2 + MOVGT a1,#1 + BGT |L002fc0.J55.check_sprite_area| + ADD v1,a1,a3 + MOV a3,#0 + STR a3,[sp,#4] + LDR a3,[sp,#8] + CMP a3,#0 + BLE |L002fbc.J9.check_sprite_area| + ADD v5,a1,a2 +|L002e3c.J8.check_sprite_area| + ADD a2,v1,#&18 + LDMIA a2,{a1,a2} + LDR a4,[v1,#&14] + LDR v3,[v1,#0] + LDR v6,[v1,#&10] + STR a2,[sp,#-4]! + LDR a3,[v1,#&28] + LDR v2,[v1,#&24] + LDR v4,[v1,#&20] + ADD a2,v3,v1 + CMP a2,v5 + CMPLE a1,#&1f + LDRLE a2,[sp,#0] + CMPLE a2,#&1f + ADDLE a2,v4,v1 + CMPLE a2,v5 + ADDLE a2,v2,v1 + CMPLE a2,v5 + BGT |L002fa0.J50.check_sprite_area| + MOV a2,#0 + CMP a2,a3,ASR #24 + BGE |L002e9c.J21.check_sprite_area| + TEQ a1,#0 + BNE |L002fa0.J50.check_sprite_area| +|L002e9c.J21.check_sprite_area| + TEQ v4,v2 + BEQ |L002f54.J25.check_sprite_area| + ADD a1,v6,#1 + ADD a4,a4,#1 + STR a4,[sp,#&10] + MUL a1,a4,a1 + ADD a4,v4,a1,LSL #2 + CMP a4,v2 + BGT |L002fa0.J50.check_sprite_area| + TEQ a2,a3,ASR #24 + BNE |L002ee8.J29.check_sprite_area| + ADD a1,v2,a1,LSL #2 + CMP a1,v3 + BGT |L002fa0.J50.check_sprite_area| + SUB a1,v3,v2 + SUB a2,v2,v4 + TEQ a1,a2 + BNE |L002fa0.J50.check_sprite_area| + B |L002f6c.J43.check_sprite_area| +|L002ee8.J29.check_sprite_area| + CMP a3,#&ff + BLE |L002ef8.J36.check_sprite_area| + TST a3,#1 + BEQ |L002fa0.J50.check_sprite_area| +|L002ef8.J36.check_sprite_area| + ADD a4,sp,#4 + STMDB sp!,{a4} + MOV a4,#9 + MOV a2,#&20000003 + MOV a1,#&35 + BL _swix + ADD sp,sp,#4 + TEQ a1,#0 + BNE |L002fa0.J50.check_sprite_area| + LDR a1,[sp,#4] + RSB a2,a1,#5 + MOV a2,v6,LSL a2 + LDR a3,[sp,#0] + ADD a3,a3,#1 + ADD a1,a2,a3,ASR a1 + ADD a1,a1,#&1f + BIC a1,a1,#&1f + MOV a1,a1,LSR #3 + LDR a2,[sp,#&10] + MLA a1,a2,a1,v2 + TEQ a1,v3 + BNE |L002fa0.J50.check_sprite_area| + B |L002f6c.J43.check_sprite_area| +|L002f54.J25.check_sprite_area| + ADD a1,v6,#1 + ADD a2,a4,#1 + MUL a1,a2,a1 + ADD a1,v4,a1,LSL #2 + CMP a1,v3 + BGT |L002fa0.J50.check_sprite_area| +|L002f6c.J43.check_sprite_area| + ORR a1,v3,v4 + ORR a1,a1,v2 + TST a1,#3 + BNE |L002fa0.J50.check_sprite_area| + ADD v1,v1,v3 + LDR a1,[sp,#8] + ADD a1,a1,#1 + LDR a2,[sp,#&c] + CMP a1,a2 + BGE |L002fa8.J48.check_sprite_area| + ADD a2,v1,#&2c + CMP a2,v5 + BLE |L002fa8.J48.check_sprite_area| +|L002fa0.J50.check_sprite_area| + MOV a1,#1 + LDMDB fp,{v1-v6,fp,sp,pc}^ +|L002fa8.J48.check_sprite_area| + ADD sp,sp,#4 + STR a1,[sp,#4] + LDR a2,[sp,#8] + CMP a1,a2 + BLT |L002e3c.J8.check_sprite_area| +|L002fbc.J9.check_sprite_area| + MOV a1,#0 +|L002fc0.J55.check_sprite_area| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +rr + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + CMN a1,#1 + MOVEQ a2,#4 + MOVEQ a1,#&bd + ADDEQ a1,a1,#&200 + BLEQ exit_c + MOV a1,v1 + LDMDB fp,{v1,fp,sp,pc}^ + +check_workspace + MOV ip,sp + STMDB sp!,{v1,fp,ip,lr,pc} + SUB fp,ip,#4 + MOVS v1,a1 + MOVEQ a2,#1 + MOVEQ a1,#&2fc + BLEQ exit_c + LDR a3,[v1,#0] + LDR a2,[pc, #L003074-.-8] + ADD a1,v1,#&2000 + TEQ a3,a2 + BEQ |L003054.J6.check_workspace| + STR a2,[v1,#0] + MOV a3,#0 + STR a2,[a1,#&2ec] + STR a3,[v1,#8] + ADD a3,v1,#&22c + ADD a4,v1,#&2ec + ADD a4,a4,#&2000 + MVN ip,#0 + CMP a4,a3 + BLS |L003054.J6.check_workspace| +|L003048.J8.check_workspace| + STR ip,[a3],#&418 + CMP a4,a3 + BHI |L003048.J8.check_workspace| +|L003054.J6.check_workspace| + LDR a1,[a1,#&2ec] + TEQ a1,a2 + MOVNE a2,#4 + MOVNE a1,#&67 + ADDNE a1,a1,#&300 + LDMNEDB fp,{v1,fp,sp,lr} + BNE exit_c + LDMDB fp,{v1,fp,sp,pc}^ +L003074 + DCD &075bcd15 + +compile_word + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + LDR a1,[a1,#&10] + LDR a2,[v1,#&14] + CMP a1,a2 + MOVCS a2,#1 + MOVCS a1,#&2e + ADDCS a1,a1,#&400 + BLCS exit_c + LDR a1,[v1,#&10] + STR v2,[a1],#4 + STR a1,[v1,#&10]! + LDMDB fp,{v1,v2,fp,sp,pc}^ + +do_ins + AND a3,a2,#&f0000000 + TEQ a3,#&f0000000 + BICEQ a2,a2,#&f0000000 + BEQ |L0030d0.J6.do_ins| + TEQ a3,#0 + ORREQ a2,a2,#&e0000000 +|L0030d0.J6.do_ins| + B compile_word + +define_label + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a2,#0] + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&5f + ADDNE a1,a1,#&400 + BLNE exit_c + LDR a2,[v2,#&10]! + STR a2,[v1,#0] + LDR a1,[v1,#4] + TEQ a1,#0 + LDMEQDB fp,{v1,v2,fp,sp,pc}^ + ADD a3,a1,#8 + SUBS a2,a2,a3 + ADDMI a2,a2,#3 + MOV a2,a2,ASR #2 + BIC a2,a2,#&ff000000 + LDR a3,[a1,#0] + ORR a2,a2,a3 + STR a2,[a1,#0] + MOV a1,#0 + STR a1,[v1,#4]! + LDMDB fp,{v1,v2,fp,sp,pc}^ + +do_branch + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v3,a2 + MOV v1,a3 + LDR a1,[a3,#0] + TEQ a1,#0 + LDR a1,[a3,#4] + BNE |L003194.J4.do_branch| + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&7e + ADDNE a1,a1,#&400 + BLNE exit_c + LDR a1,[v2,#&10] + MOV a2,v3 + STR a1,[v1,#4]! + MOV a1,v2 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L003194.J4.do_branch| + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&84 + ADDNE a1,a1,#&400 + BLNE exit_c + LDR a1,[v2,#&10] + ADD a1,a1,#8 + LDR a2,[v1,#0] + SUBS a1,a2,a1 + ADDMI a1,a1,#3 + MOV a1,a1,ASR #2 + BIC a1,a1,#&ff000000 + ORR a2,a1,v3 + MOV a1,v2 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +do_set_regname + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v3,a2 + MOV v1,a3 + CMN a3,#1 + BNE |L003240.J4.do_set_regname| + LDR a1,[v2,#&1e0] + MOVS v1,a1 + ADD a1,a1,#1 + STR a1,[v2,#&1e0] + BMI |L003210.J7.do_set_regname| + CMP v1,#&c + BLE |L003220.J6.do_set_regname| +|L003210.J7.do_set_regname| + MOV a2,#4 + MOV a1,#&97 + ADD a1,a1,#&400 + BL exit_c +|L003220.J6.do_set_regname| + TEQ v1,#&c + BNE |L003240.J4.do_set_regname| + LDR a1,[v2,#&1e4]! + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&98 + ADDNE a1,a1,#&400 + BLNE exit_c +|L003240.J4.do_set_regname| + STR v1,[v3,#0] + LDMDB fp,{v1-v3,fp,sp,pc}^ + +compile_buffer_init + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a2 + LDR a1,[a2,#8] + ADD ip,a1,a1,LSL #1 + ADD a1,ip,a1,LSL #7 + ADD a1,a2,a1,LSL #3 + ADD a1,a1,#&244 + STR a1,[a2,#&c] + STR a1,[a2,#&10] + LDR a1,[a2,#&c] + ADD a1,a1,#&400 + STR a1,[a2,#&14] + ADD a1,a2,#&18 + ADD a2,v1,#&150 + MOV v3,#0 + CMP a2,a1 + BCC |L0032a8.J5.compile_buffer_init| +|L003294.J4.compile_buffer_init| + STR v3,[a1,#0] + STR v3,[a1,#4]! + ADD a1,a1,#4 + CMP a2,a1 + BCS |L003294.J4.compile_buffer_init| +|L0032a8.J5.compile_buffer_init| + ADD a1,v1,#&158 + ADD v2,v1,#&1dc + MVN a2,#0 + CMP v2,a1 + BCC |L0032c8.J9.compile_buffer_init| +|L0032bc.J8.compile_buffer_init| + STR a2,[a1],#4 + CMP v2,a1 + BCS |L0032bc.J8.compile_buffer_init| +|L0032c8.J9.compile_buffer_init| + STR v3,[v1,#&1e0] + ADD a2,v1,#&1c4 + MOV a1,v1 + MOV a3,#1 + BL do_set_regname + ADD a2,v1,#&1c8 + MOV a1,v1 + MOV a3,#2 + BL do_set_regname + ADD a2,v1,#&1cc + MOV a1,v1 + MOV a3,#3 + BL do_set_regname + ADD a2,v1,#&1d0 + MOV a1,v1 + MOV a3,#&c + BL do_set_regname + ADD a2,v1,#&1d4 + MOV a1,v1 + MOV a3,#&d + BL do_set_regname + ADD a2,v1,#&1d8 + MOV a1,v1 + MOV a3,#&e + BL do_set_regname + MOV a2,v2 + MOV a1,v1 + MOV a3,#&f + BL do_set_regname + STR v3,[v1,#&1e4]! + LDMDB fp,{v1-v3,fp,sp,pc}^ + +compile_buffer_done + LDR a2,[a1,#8] + ADD a2,a2,#1 + STR a2,[a1,#8] + CMP a2,#8 + MOVGE a2,#0 + STRGE a2,[a1,#8]! + MOVS pc,lr + +simple_x_scale + ADD ip,a1,#&40 + LDMIA ip,{a3,ip} + MOV a4,a3 + SUB ip,ip,a3 + TEQ ip,a3 + BNE |L0033ac.J5.simple_x_scale| + LDR a3,[a1,#&30] + CMP a4,a3 + BGT |L0033ac.J5.simple_x_scale| + LDR a1,[a1,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BEQ |L0033ac.J5.simple_x_scale| + LDR a1,[a2,#&1e8] + TEQ a1,#0 + LDREQ a1,[a2,#&1f4]! + TEQEQ a1,#0 + MOVEQ a1,#1 + MOVEQS pc,lr +|L0033ac.J5.simple_x_scale| + MOV a1,#0 + MOVS pc,lr + +x_block_move + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + BL simple_x_scale + TEQ a1,#0 + BEQ |L00341c.J5.x_block_move| + MOV a1,#1 + LDR a2,[v1,#&78] + MOV a2,a1,LSL a2 + LDR a1,[v1,#&100] + TEQ a2,a1 + LDREQ a1,[v2,#&1e8] + TEQEQ a1,#0 + LDREQ a1,[v2,#&1ec]! + TEQEQ a1,#0 + LDREQ a1,[v1,#&b4] + TEQEQ a1,#0 + LDREQ a1,[v1,#&f8] + TEQEQ a1,#0 + BNE |L00341c.J5.x_block_move| + LDR a1,[v1,#&10c]! + TEQ a1,#0 + MOVEQ a1,#1 + LDMEQDB fp,{v1,v2,fp,sp,pc}^ +|L00341c.J5.x_block_move| + MOV a1,#0 + LDMDB fp,{v1,v2,fp,sp,pc}^ + +simple_y_scale + ADD a2,a1,#&10 + LDMIA a2,{a1,a2} + TEQ a2,a1 + MOVNE a1,#0 + MOVEQ a1,#1 + MOVS pc,lr + +ptrs_rn + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + ADD a2,a2,#&158 + MOV a1,v1 + MOV a3,#&e + BL do_set_regname + ADD a2,v1,#&15c + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + ADD a2,v1,#&198 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L00349c.J5.ptrs_rn| + LDR a1,[v2,#&f4]! + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L0034ac.J4.ptrs_rn| +|L00349c.J5.ptrs_rn| + ADD a2,v1,#&168 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L0034ac.J4.ptrs_rn| + LDR a1,[v1,#&1f4] + TEQ a1,#0 + LDMEQDB fp,{v1,v2,fp,sp,pc}^ + ADD a2,v1,#&184 + MOV a1,v1 + MVN a3,#0 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_set_regname + +xloop_rn + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + MOV v3,#0 + BL x_block_move + ADD a2,v1,#&160 + ADD v6,v1,#&1a0 + ADD v5,v1,#&1a8 + TEQ a1,#0 + BEQ |L0035b8.J4.xloop_rn| + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + MOV a2,v6 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + MOV a2,v5 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + ADD a2,v1,#&188 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + LDR a1,[v1,#&15c] + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&f5 + ADDNE a1,a1,#&500 + BLNE exit_c + LDR a1,[v1,#&198] + TEQ a1,#1 + MOVNE a2,#4 + MOVNE a1,#&f6 + ADDNE a1,a1,#&500 + BLNE exit_c + LDR a1,[v1,#&160] + TEQ a1,#2 + MOVNE a2,#4 + MOVNE a1,#&f7 + ADDNE a1,a1,#&500 + BLNE exit_c + LDR a1,[v1,#&1a0] + TEQ a1,#3 + MOVNE a2,#4 + MOVNE a1,#&1f8 + ADDNE a1,a1,#&400 + BLNE exit_c + LDR a1,[v1,#&1a8]! + TEQ a1,#4 + MOVNE a2,#4 + MOVNE a1,#&f9 + ADDNE a1,a1,#&500 + LDMNEDB fp,{v1-v6,fp,sp,lr} + BNE exit_c + LDMDB fp,{v1-v6,fp,sp,pc}^ +|L0035b8.J4.xloop_rn| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + ADD v4,v1,#&164 + TEQ a1,#&32 + BNE |L0035e0.J17.xloop_rn| +|L0035cc.J18.xloop_rn| + MOV a2,v4 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + B |L0035f8.J19.xloop_rn| +|L0035e0.J17.xloop_rn| + LDR a1,[v2,#&74] + TEQ a1,#5 + MOVNE a1,v1 + MVNNE a3,#0 + BLNE do_set_regname + BNE |L0035cc.J18.xloop_rn| +|L0035f8.J19.xloop_rn| + LDR a1,[v1,#&1ec] + TEQ a1,#0 + BEQ |L003644.J30.xloop_rn| + ADD a2,v1,#&16c + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L003634.J25.xloop_rn| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + ADDNE a2,v1,#&174 + BNE |L003638.J67.xloop_rn| +|L003634.J25.xloop_rn| + ADD a2,v1,#&170 +|L003638.J67.xloop_rn| + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L003644.J30.xloop_rn| + LDR a1,[v1,#&1e8] + TEQ a1,#0 + BEQ |L00365c.J29.xloop_rn| + LDR a1,[v2,#&104] + TEQ a1,#&20 + MOVEQ v3,#1 +|L00365c.J29.xloop_rn| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L003690.J33.xloop_rn| + ADD a2,v1,#&18c + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + ADD a2,v1,#&190 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + B |L003734.J35.xloop_rn| +|L003690.J33.xloop_rn| + LDR a1,[v2,#&b4] + TEQ a1,#0 + LDREQ a1,[v2,#&f8] + TEQEQ a1,#0 + BNE |L0036b0.J37.xloop_rn| + LDR a1,[v2,#&10c] + TEQ a1,#0 + BEQ |L0036c0.J36.xloop_rn| +|L0036b0.J37.xloop_rn| + ADD a2,v1,#&1a4 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L0036c0.J36.xloop_rn| + LDR a2,[v2,#&f8] + TEQ a2,#0 + LDR a1,[v2,#&74] + LDRNE a2,[v2,#&104] + TEQNE a2,#&10 + BNE |L0036e0.J45.xloop_rn| + TEQ a1,#5 + BNE |L0036f0.J44.xloop_rn| +|L0036e0.J45.xloop_rn| + LDR a1,[v2,#&104] + TEQ a1,#&20 + MOVNE v3,#2 + B |L003714.J47.xloop_rn| +|L0036f0.J44.xloop_rn| + TEQ a1,#4 + LDREQ a1,[v2,#&104] + TEQEQ a1,#&20 + BNE |L003714.J47.xloop_rn| + MOV v3,#2 + ADD a2,v1,#&180 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L003714.J47.xloop_rn| + TEQ v3,#0 + LDREQ a1,[v2,#&40] + LDREQ a2,[v2,#&68] + BLEQ |__rt_sdiv| + TEQEQ a2,#0 + BNE |L003734.J35.xloop_rn| + CMP a1,#4 + MOVGT v3,#1 +|L003734.J35.xloop_rn| + LDR a1,[v2,#&104] + TEQ a1,#&20 + BEQ |L003760.J54.xloop_rn| + ADD a2,v1,#&19c + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + MOV a2,v6 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L003760.J54.xloop_rn| + LDR a1,[v2,#&74] + CMP a1,#3 + BGT |L003790.J56.xloop_rn| + MOV a2,v1 + MOV a1,v2 + BL simple_x_scale + TEQ a1,#0 + BEQ |L003790.J56.xloop_rn| + ADD a2,v1,#&1c0 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L003790.J56.xloop_rn| + MOV a2,v5 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + MOV a2,v1 + MOV a1,v2 + BL simple_x_scale + TEQ a1,#0 + BNE |L0037c4.J16.xloop_rn| + ADD a2,v1,#&1ac + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L0037c4.J16.xloop_rn| + CMP v3,#1 + BLT |L0037dc.J61.xloop_rn| + ADD a2,v1,#&178 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L0037dc.J61.xloop_rn| + CMP v3,#2 + LDMLTDB fp,{v1-v6,fp,sp,pc}^ + ADD a2,v1,#&17c + MOV a1,v1 + MVN a3,#0 + LDMDB fp,{v1-v6,fp,sp,lr} + B do_set_regname + +yloop_rn_count + MOV a3,#2 + LDR a4,[a1,#&14] + LDR ip,[a1,#&10] + TEQ a4,ip + MOVNE a3,#3 + LDR a2,[a2,#&1f0] + TEQ a2,#0 + BNE |L003828.J7.yloop_rn_count| + LDR a2,[a1,#&f4] + AND a2,a2,#&ff + TEQ a2,#&32 + BNE |L00382c.J6.yloop_rn_count| +|L003828.J7.yloop_rn_count| + ADD a3,a3,#1 +|L00382c.J6.yloop_rn_count| + LDR a1,[a1,#&110] + TEQ a1,#0 + ADDNE a3,a3,#1 + MOV a1,a3 + MOVS pc,lr + +yloop_rn + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + ADD a2,a2,#&1b0 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + MOV a2,v1 + MOV a1,v2 + BL simple_y_scale + TEQ a1,#0 + BNE |L003888.J4.yloop_rn| + ADD a2,v1,#&1b4 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L003888.J4.yloop_rn| + ADD a2,v1,#&1b8 + MOV a1,v1 + MVN a3,#0 + BL do_set_regname + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L0038b4.J7.yloop_rn| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L0038c4.J6.yloop_rn| +|L0038b4.J7.yloop_rn| + ADD a2,v1,#&1bc + MOV a1,v1 + MVN a3,#0 + BL do_set_regname +|L0038c4.J6.yloop_rn| + LDR a1,[v2,#&110]! + TEQ a1,#0 + LDMEQDB fp,{v1,v2,fp,sp,pc}^ + ADD a2,v1,#&194 + MOV a1,v1 + MVN a3,#0 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_set_regname + +get_in_shift + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&110] + TEQ a1,#0 + LDRNE a1,[v2,#&74] + TEQNE a1,#5 + LDR a1,[v1,#&160] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + BEQ |L003a24.J4.get_in_shift| + ADD a3,v2,#&114 + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&74]! + TEQ a1,#4 + LDR a1,[v1,#&160] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&160] + BL rr + ORR a1,v2,a1,LSL #16 + BNE |L0039c0.J7.get_in_shift| + ORR a2,a1,#&2100000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&160] + BL rr + MOV a2,#&1a00000 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&f2000000 + ORR a2,a2,#2 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&160] + BL rr + MOV v2,a1 + LDR a1,[v1,#&160] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&200 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L0039c0.J7.get_in_shift| + ORR a2,a1,#&2100000 + ORR a2,a2,#3 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&160] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&160] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&160] + BL rr + MOV v2,a1 + LDR a1,[v1,#&160] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&180 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L003a24.J4.get_in_shift| + ADD a1,v2,#&20 + SUB a1,a1,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&160] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&160] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#&20 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +fetch_pixel_init + MOV ip,sp + STMDB sp!,{v1-v5,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&f4] + AND a1,a1,#&ff + ADD a3,v2,#8 + SUB a2,a3,v2 + ORR v4,a2,#&1800000 + TEQ a1,#&32 + BNE |L003ac8.J4.fetch_pixel_init| + LDR a1,[v1,#&15c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a3,a1,#&4100000 + ADD a2,v2,#&38 + SUB a1,a2,v2 + ORR a1,a1,#&1800000 + ADD a2,a3,a1 + B |L003b08.J49.fetch_pixel_init| +|L003ac8.J4.fetch_pixel_init| + LDR a1,[v2,#&110] + TEQ a1,#0 + LDR a1,[v1,#&15c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORREQ a1,a1,#&4100000 + ADDEQ a2,a1,v4 + BEQ |L003b08.J49.fetch_pixel_init| + ORR a2,a1,#&4100000 + ADD a3,v2,#&118 + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 +|L003b08.J49.fetch_pixel_init| + MOV a1,v1 + BL do_ins + MOV a2,v1 + MOV a1,v2 + BL x_block_move + TEQ a1,#0 + BEQ |L003b68.J10.fetch_pixel_init| + MOV a2,v1 + MOV a1,v2 + BL get_in_shift + LDR a1,[v1,#&188] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a1,v2,#&108 + SUB a1,a1,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + LDMDB fp,{v1-v5,fp,sp,lr} + B do_ins +|L003b68.J10.fetch_pixel_init| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L003c34.J13.fetch_pixel_init| + LDR a1,[v1,#&18c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&34 + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&18c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#&18 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&15c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&800000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&190] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a3,a1,#&4100000 + ADD a2,v2,#&130 + SUB a1,a2,v2 + ORR a1,a1,#&1800000 + ADD a2,a3,a1 + B |L003c6c.J50.fetch_pixel_init| +|L003c34.J13.fetch_pixel_init| + LDR a1,[v2,#&74] + TEQ a1,#5 + BEQ |L003c74.J15.fetch_pixel_init| + MOV a2,v1 + MOV a1,v2 + BL get_in_shift + LDR a1,[v1,#&160] + BL rr + MOV v3,a1 + LDR a1,[v1,#&160] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&d80 +|L003c6c.J50.fetch_pixel_init| + MOV a1,v1 + BL do_ins +|L003c74.J15.fetch_pixel_init| + LDR a1,[v1,#&1ec] + TEQ a1,#0 + BEQ |L003e04.J18.fetch_pixel_init| + ADD a3,v2,#&48 + SUB a2,a3,v2 + ORR v3,a2,#&1800000 + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L003ca8.J21.fetch_pixel_init| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L003ddc.J20.fetch_pixel_init| +|L003ca8.J21.fetch_pixel_init| + LDR a1,[v1,#&170] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a3,a1,#&4100000 + ADD a2,v2,#&88 + SUB a1,a2,v2 + ORR a1,a1,#&1800000 + ADD a2,a3,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1f0] + TEQ a1,#0 + LDR a1,[v1,#&168] + BL rr + BEQ |L003d18.J24.fetch_pixel_init| + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&8c + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + B |L003d88.J51.fetch_pixel_init| +|L003d18.J24.fetch_pixel_init| + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,v4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,v3 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&168] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&168] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&800000 +|L003d88.J51.fetch_pixel_init| + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&170] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&170] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&170] + BL rr + MOV v3,a1 + LDR a1,[v1,#&170] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&d80 + B |L003dfc.J52.fetch_pixel_init| +|L003ddc.J20.fetch_pixel_init| + LDR a1,[v1,#&174] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,v3 +|L003dfc.J52.fetch_pixel_init| + MOV a1,v1 + BL do_ins +|L003e04.J18.fetch_pixel_init| + LDR a1,[v2,#&10c] + TEQ a1,#0 + BEQ |L003e40.J28.fetch_pixel_init| + LDR a1,[v1,#&1a4] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&10c + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + B |L003ef4.J53.fetch_pixel_init| +|L003e40.J28.fetch_pixel_init| + LDR a1,[v2,#&f8] + TEQ a1,#0 + BEQ |L003e7c.J31.fetch_pixel_init| + LDR a1,[v1,#&1a4] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a3,a1,#&4100000 + ADD a2,v2,#&f8 + SUB a1,a2,v2 + ORR a1,a1,#&1800000 + ADD a2,a3,a1 + B |L003ef4.J53.fetch_pixel_init| +|L003e7c.J31.fetch_pixel_init| + LDR a1,[v2,#&b4] + TEQ a1,#0 + BEQ |L003efc.J30.fetch_pixel_init| + LDR a1,[v1,#&1a4] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&b4 + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&104] + CMP a1,#8 + BGT |L003efc.J30.fetch_pixel_init| + LDR a1,[v2,#&74] + CMP a1,#4 + BLT |L003efc.J30.fetch_pixel_init| + LDR a1,[v1,#&1a4] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a4] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&5900000 + ORR a2,a2,#4 +|L003ef4.J53.fetch_pixel_init| + MOV a1,v1 + BL do_ins +|L003efc.J30.fetch_pixel_init| + LDR a1,[v2,#&74] + CMP a1,#3 + BGT |L003f38.J39.fetch_pixel_init| + MOV a2,v1 + MOV a1,v2 + BL simple_x_scale + TEQ a1,#0 + BEQ |L003f38.J39.fetch_pixel_init| + LDR a1,[v1,#&1c0] + BL rr + LDR a2,[v1,#&200] + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&3a00000 + MOV a1,v1 + BL do_ins +|L003f38.J39.fetch_pixel_init| + LDR a1,[v1,#&180] + CMN a1,#1 + BEQ |L003fc4.J42.fetch_pixel_init| + BL rr + MOV a2,#&3a00000 + ADD a2,a2,#&e0 + ORR a2,a2,a1,LSL #12 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&180] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&180] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&180] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&400 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&180] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&180] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&180] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&400 + MOV a1,v1 + BL do_ins +|L003fc4.J42.fetch_pixel_init| + LDR a1,[v1,#&1f4] + TEQ a1,#0 + LDMEQDB fp,{v1-v5,fp,sp,pc}^ + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a3,a1,#&4100000 + ADD a2,v2,#&4c + SUB a1,a2,v2 + ORR a1,a1,#&1800000 + ADD a2,a3,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&184] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&50 + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&184] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&184] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&184] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&200000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&184] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&184] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&80 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,#&c10 + ADD v3,v3,#&3a00000 + ORR a2,v3,a1,LSL #12 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a2,a1,#&5900000 + ORR a2,a2,#&1fc + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV a2,#&3100000 + ADD a2,a2,#1 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&184] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&184] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a2,a1,#&10000000 + ORR a2,a2,#&2200000 + ORR a2,a2,#3 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + ORR a2,v3,a1,LSL #12 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&5900000 + ORR a2,a2,#&1f8 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + LDR a2,[v2,#&104]! + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&3100000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&184] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&184] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&10000000 + ORR a2,a2,#&2200000 + ORR a2,a2,#2 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&184] + BL rr + LDR a2,[v1,#&1f4] + ADD a2,a2,#&17 + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&184] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + LDMDB fp,{v1-v5,fp,sp,lr} + B do_ins + +save_pixel_init + MOV ip,sp + STMDB sp!,{v1-v4,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a2,#&198] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&c + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins + MOV a2,v1 + MOV a1,v2 + BL x_block_move + ADD a3,v2,#&4c + SUB a2,a3,v2 + ORR v3,a2,#&1800000 + TEQ a1,#0 + BEQ |L004340.J4.save_pixel_init| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,v3 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #16 + LDR a2,[v1,#&220] + SUB a2,a2,#1 + ORR a1,a1,a2 + ORR a2,a1,#&2000000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + LDR a2,[v1,#&214] + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#&20 + MOV a1,v1 + LDMDB fp,{v1-v4,fp,sp,lr} + B do_ins +|L004340.J4.save_pixel_init| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BEQ |L00435c.J8.save_pixel_init| + LDR a1,[v2,#&104] + TEQ a1,#&20 + BEQ |L004384.J7.save_pixel_init| +|L00435c.J8.save_pixel_init| + LDR a1,[v1,#&158] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,v3 + MOV a1,v1 + BL do_ins +|L004384.J7.save_pixel_init| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L004434.J11.save_pixel_init| + LDR a1,[v1,#&18c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a2,v3,a1,LSL #16 + LDR a1,[v1,#&220] + ORR a1,a2,a1 + ORR a2,a1,#&2000000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&224] + CMP a1,#2 + BLE |L0043fc.J13.save_pixel_init| + LDR a1,[v1,#&18c] + BL rr + LDR a2,[v1,#&224] + SUB a2,a2,#2 + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&18c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins +|L0043fc.J13.save_pixel_init| + LDR a1,[v1,#&224] + CMP a1,#2 + BGE |L004434.J11.save_pixel_init| + LDR a1,[v1,#&18c] + BL rr + LDR a2,[v1,#&224] + RSB a2,a2,#2 + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&18c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins +|L004434.J11.save_pixel_init| + LDR a1,[v2,#&104]! + TEQ a1,#&20 + LDMEQDB fp,{v1-v4,fp,sp,pc}^ + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #16 + LDR a2,[v1,#&220] + SUB a2,a2,#1 + ORR a1,a1,a2 + ORR a2,a1,#&2000000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + LDR a2,[v1,#&214] + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&d80 + MOV a1,v1 + LDMDB fp,{v1-v4,fp,sp,lr} + B do_ins + +xloop_init + MOV ip,sp + STMDB sp!,{v1-v4,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a2,#&1a8] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a3,a1,#&4100000 + ADD a2,v2,#&2c + SUB a1,a2,v2 + ORR a1,a1,#&1800000 + ADD a2,a3,a1 + MOV a1,v1 + BL do_ins + MOV a2,v1 + MOV a1,v2 + BL simple_x_scale + TEQ a1,#0 + BNE |L004598.J4.xloop_init| + ADD a3,v2,#&30 + SUB a2,a3,v2 + ORR v3,a2,#&1800000 + LDR a1,[v1,#&1f4] + TEQ a1,#0 + BEQ |L004570.J6.xloop_init| + LDR a1,[v2,#&74] + TEQ a1,#4 + LDREQ a1,[v1,#&158] + BEQ |L004574.J14.xloop_init| +|L004570.J6.xloop_init| + LDR a1,[v1,#&1ac] +|L004574.J14.xloop_init| + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,v3 + MOV a1,v1 + BL do_ins +|L004598.J4.xloop_init| + MOV a2,v1 + MOV a1,v2 + BL x_block_move + TEQ a1,#0 + LDMEQDB fp,{v1-v4,fp,sp,pc}^ + LDR a1,[v1,#&1a8] + BL rr + LDR a2,[v1,#&214] + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&1a8] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + LDMDB fp,{v1-v4,fp,sp,lr} + B do_ins + +yloop_init + MOV ip,sp + STMDB sp!,{v1-v4,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&110] + TEQ a1,#0 + BEQ |L00462c.J4.yloop_init| + LDR a1,[v1,#&194] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&11c + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins +|L00462c.J4.yloop_init| + LDR a1,[v1,#&1b0] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a3,a1,#&4100000 + ADD a2,v2,#&18 + SUB a1,a2,v2 + ORR a1,a1,#&1800000 + ADD a2,a3,a1 + MOV a1,v1 + BL do_ins + MOV a2,v1 + MOV a1,v2 + BL simple_y_scale + TEQ a1,#0 + BNE |L0046a8.J6.yloop_init| + LDR a1,[v1,#&1b4] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a3,a1,#&4100000 + ADD a2,v2,#&1c + SUB a1,a2,v2 + ORR a1,a1,#&1800000 + ADD a2,a3,a1 + MOV a1,v1 + BL do_ins +|L0046a8.J6.yloop_init| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + ADD a3,v2,#4 + SUB a2,a3,v2 + ORR v3,a2,#&1800000 + TEQ a1,#&32 + BEQ |L004704.J8.yloop_init| + LDR a1,[v2,#&110] + TEQ a1,#0 + LDR a1,[v1,#&1b8] + BL rr + MOVNE a2,#&3a00000 + ADDNE a2,a2,#1 + ORRNE a2,a2,a1,LSL #12 + BNE |L0046fc.J20.yloop_init| + MOV v4,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,v3 +|L0046fc.J20.yloop_init| + MOV a1,v1 + BL do_ins +|L004704.J8.yloop_init| + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BEQ |L004748.J13.yloop_init| + LDR a1,[v1,#&1bc] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a1,v2,#&90 + SUB a1,a1,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + LDMDB fp,{v1-v4,fp,sp,lr} + B do_ins +|L004748.J13.yloop_init| + LDR a1,[v2,#&f4]! + AND a1,a1,#&ff + TEQ a1,#&32 + LDMNEDB fp,{v1-v4,fp,sp,pc}^ + LDR a1,[v1,#&1bc] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,v3 + MOV a1,v1 + LDMDB fp,{v1-v4,fp,sp,lr} + B do_ins + +fetch_pixel_unmasked + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a2 + LDR a2,[a1,#&f4] + AND a2,a2,#&ff + TEQ a2,#&32 + BNE |L00489c.J4.fetch_pixel_unmasked| + LDR a1,[a1,#&104] + TEQ a1,#&20 + BNE |L0047e4.J6.fetch_pixel_unmasked| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&18c] + BL rr + ORR a1,v2,a1 + ORR a2,a1,#&7900000 + MOV a1,v1 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_ins +|L0047e4.J6.fetch_pixel_unmasked| + TEQ a1,#&10 + BNE |L004840.J9.fetch_pixel_unmasked| + LDR a1,[v1,#&164] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&800 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&820 + MOV a1,v1 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_ins +|L004840.J9.fetch_pixel_unmasked| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&164] + BL rr + ORR a1,v2,a1,LSL #16 + LDR a2,[v1,#&218] + ORR a1,a1,a2 + ORR a2,a1,#&2000000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&190] + BL rr + ORR a2,v2,a1 + MOV a1,v1 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_ins +|L00489c.J4.fetch_pixel_unmasked| + LDR a1,[a1,#&74] + TEQ a1,#5 + BNE |L0048d0.J13.fetch_pixel_unmasked| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4900000 + MOV a1,v1 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_ins +|L0048d0.J13.fetch_pixel_unmasked| + TEQ a1,#4 + BNE |L00492c.J16.fetch_pixel_unmasked| + LDR a1,[v1,#&164] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&800 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&820 + MOV a1,v1 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_ins +|L00492c.J16.fetch_pixel_unmasked| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&164] + BL rr + ORR a2,v2,a1,LSL #16 + LDR a1,[v1,#&200] + ORR a1,a2,a1 + ORR a2,a1,#&2000000 + MOV a1,v1 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_ins + +fetch_pixel + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + MOV v3,a3 + LDR a1,[a2,#&1ec] + TEQ a1,#0 + BEQ |L0049ac.J4.fetch_pixel| + LDR a1,[v1,#&16c] + BL rr + MOV a2,#&3100000 + ADD a2,a2,#1 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + MOV a3,v3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch +|L0049ac.J4.fetch_pixel| + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_unmasked + LDR a1,[v1,#&1ec]! + LDMDB fp,{v1-v3,fp,sp,pc}^ + +fetch_pixel2 + MOV ip,sp + STMDB sp!,{v1-v4,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + MOV v3,a3 + LDR a1,[a1,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + MOVEQ a2,#4 + MOVEQ a1,#&37 + ADDEQ a1,a1,#&800 + BLEQ exit_c + LDR a1,[v1,#&1ec] + TEQ a1,#0 + BEQ |L004af0.J6.fetch_pixel2| + LDR a1,[v1,#&1f0] + TEQ a1,#0 + LDR a1,[v1,#&16c] + BL rr + LDR a2,[v1,#&204] + BEQ |L004aac.J8.fetch_pixel2| + ORR v4,a1,a2,LSL #7 + LDR a1,[v1,#&16c] + BL rr + ORR a1,v4,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&170] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&170] + BL rr + ORR a2,v4,a1,LSL #16 + LDR a1,[v1,#&204] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&16c] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&168] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a2,a1,#&f0000000 + ORR a2,a2,#&5b00000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&16c] + BL rr + MOV a2,#&3100000 + ADD a2,a2,#1 + ORR a2,a2,a1,LSL #16 + B |L004ad8.J22.fetch_pixel2| +|L004aac.J8.fetch_pixel2| + TEQ a2,#1 + MOVEQ a2,#&2000000 + ADDEQ a2,a2,#2 + BEQ |L004ad0.J11.fetch_pixel2| + LDR a2,[v1,#&208] + RSB a2,a2,#&20 + MOV a3,#&2000000 + ADD a3,a3,#1 + ORR a2,a3,a2,LSL #7 +|L004ad0.J11.fetch_pixel2| + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&1100000 +|L004ad8.J22.fetch_pixel2| + MOV a1,v1 + BL do_ins + MOV a3,v3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch +|L004af0.J6.fetch_pixel2| + LDR a1,[v2,#&74]! + TEQ a1,#5 + BNE |L004b20.J14.fetch_pixel2| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&5900000 + ORR a2,a2,#4 + B |L004b7c.J23.fetch_pixel2| +|L004b20.J14.fetch_pixel2| + TEQ a1,#4 + BNE |L004b4c.J17.fetch_pixel2| + LDR a1,[v1,#&164] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&820 + B |L004b7c.J23.fetch_pixel2| +|L004b4c.J17.fetch_pixel2| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1c0] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&164] + BL rr + LDR a2,[v1,#&1fc] + ORR a1,a1,a2,LSL #7 + ORR a1,v2,a1 + ORR a2,a1,#&20 +|L004b7c.J23.fetch_pixel2| + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ec]! + LDMDB fp,{v1-v4,fp,sp,pc}^ + +do_add_ordered_dither_gun + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a2 + RSB a1,a3,#&20 + SUB v2,a1,a4 + LDR a1,[a2,#&158] + BL rr + ORR v3,a1,v2,LSL #7 + LDR a1,[v1,#&184] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&1700000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&184] + BL rr + ORR a1,a1,v2,LSL #7 + ORR a1,v3,a1 + ORR a2,a1,#&30800000 + ORR a2,a2,#&20 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +add_ordered_dither + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v3,a1 + MOV v2,a2 + MOV v1,a3 + LDR a4,[a2,#&1f4] + TEQ a4,#0 + LDMEQDB fp,{v1-v3,fp,sp,pc}^ + MOV a4,v1,LSL #1 + BL do_add_ordered_dither_gun + MOV a4,v1 + MOV a3,v1 + MOV a2,v2 + MOV a1,v3 + BL do_add_ordered_dither_gun + MOV a3,v1 + MOV a2,v2 + MOV a1,v3 + MOV a4,#0 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_add_ordered_dither_gun + +translate_pixel + MOV ip,sp + STMDB sp!,{v1-v5,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a3,[a1,#&f4] + AND a3,a3,#&ff + MOV v5,#&1f + TEQ a3,#&32 + LDR v3,[a1,#&74] + BNE |L004d24.J4.translate_pixel| + LDR a1,[v1,#&1e8] + AND a1,a1,#7 + TEQ a1,#2 + LDMNEDB fp,{v1-v5,fp,sp,pc}^ + LDR a1,[v1,#&158] + BL rr + LDR a2,[v2,#&104] + SUB a2,v5,a2 + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&3800000 + ORR a2,a2,#&100 + ORR a2,a2,#2 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + LDR a2,[v2,#&104]! + SUB a2,v5,a2 + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&40 + MOV a1,v1 + LDMDB fp,{v1-v5,fp,sp,lr} + B do_ins +|L004d24.J4.translate_pixel| + LDR a3,[v1,#&1f4] + TEQ a3,#0 + BEQ |L004d40.J8.translate_pixel| + TEQ v3,#5 + MOVNE a3,#5 + MOVEQ a3,#8 + BL add_ordered_dither +|L004d40.J8.translate_pixel| + LDR a1,[v2,#&f8] + TEQ a1,#0 + BEQ |L004dd8.J13.translate_pixel| + CMP v3,#3 + MOVGT a2,#4 + MOVGT a1,#&9d + ADDGT a1,a1,#&800 + BLGT exit_c + LDR a1,[v2,#&104] + TEQ a1,#&10 + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a4] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1 + ORREQ a2,a1,#&7900000 + ORREQ a2,a2,#&100 + BEQ |L004f1c.J58.translate_pixel| + ORR a2,a1,#&7900000 + ORR a2,a2,#&180 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&420 + MOV a1,v1 + BL do_ins + MOV v3,#5 + B |L004de0.J21.translate_pixel| +|L004dd8.J13.translate_pixel| + TEQ v3,#5 + BNE |L004f2c.J20.translate_pixel| +|L004de0.J21.translate_pixel| + LDR a1,[v2,#&104] + TEQ a1,#&20 + BEQ |L0050d8.J23.translate_pixel| + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#&800 + ORR a2,a2,#&f8 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1 + LDR a1,[v1,#&17c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&380 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#&c00 + ORR a2,a2,#&f8 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&17c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&17c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&500 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#&f8 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&17c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&680 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&820 +|L004f1c.J58.translate_pixel| + MOV a1,v1 + BL do_ins + MOV v3,#4 + B |L004f34.J24.translate_pixel| +|L004f2c.J20.translate_pixel| + TEQ v3,#4 + BNE |L0050d8.J23.translate_pixel| +|L004f34.J24.translate_pixel| + LDR a1,[v2,#&104] + TEQ a1,#&20 + BNE |L0050d8.J23.translate_pixel| + LDR a1,[v1,#&158] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&800 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&d20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1 + LDR a1,[v1,#&17c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&980 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#&600 + ORR a2,a2,#&3e + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&17c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&17c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&520 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&580 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&17c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&17c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&c20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&180] + BL rr + ORR a2,v3,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&17c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&2a0 + MOV a1,v1 + BL do_ins + MOV v3,#5 +|L0050d8.J23.translate_pixel| + LDR a1,[v2,#&b4] + TEQ a1,#0 + BEQ |L005180.J26.translate_pixel| + LDR a1,[v1,#&210] + CMP a1,#3 + BGT |L005130.J28.translate_pixel| + CMP v3,#4 + MOVGT a2,#4 + MOVGT a1,#&f6 + ADDGT a1,a1,#&800 + BLGT exit_c + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a4] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&7d00000 + B |L005170.J59.translate_pixel| +|L005130.J28.translate_pixel| + CMP v3,#3 + MOVGT a2,#4 + MOVGT a1,#&fc + ADDGT a1,a1,#&800 + BLGT exit_c + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a4] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&7900000 + ORR a2,a2,#&100 +|L005170.J59.translate_pixel| + MOV a1,v1 + BL do_ins + LDR v3,[v1,#&210] + B |L005624.J35.translate_pixel| +|L005180.J26.translate_pixel| + TEQ v3,#4 + BNE |L005624.J35.translate_pixel| + LDR a1,[v1,#&210] + CMP a1,#4 + BGE |L005624.J35.translate_pixel| + MOV v4,#&3100000 + ADD v4,v4,#&10 + TEQ a1,#0 + BNE |L0051f8.J39.translate_pixel| + LDR a1,[v1,#&158] + BL rr + ORR a2,v4,a1,LSL #16 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV a2,#&3a00000 + ADD a2,a2,#1 + ORR a2,a2,a1,LSL #12 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV a2,#&3a00000 + ADD a2,a2,#&10000000 + ORR a2,a2,a1,LSL #12 + MOV a1,v1 + BL do_ins + MOV v3,#0 + B |L00527c.J41.translate_pixel| +|L0051f8.J39.translate_pixel| + TEQ a1,#1 + BNE |L00527c.J41.translate_pixel| + LDR a1,[v1,#&158] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&1a0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#3 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#3 + MOV a1,v1 + BL do_ins + MOV v3,#1 +|L00527c.J41.translate_pixel| + LDR a1,[v1,#&210] + TEQ a1,#2 + BNE |L005308.J44.translate_pixel| + LDR a1,[v1,#&158] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&120 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#7 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#7 + MOV a1,v1 + BL do_ins + MOV v3,#2 + B |L005624.J35.translate_pixel| +|L005308.J44.translate_pixel| + TEQ a1,#3 + BNE |L005624.J35.translate_pixel| + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#&c00 + ORR a2,a2,#&1c + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1 + LDR a1,[v1,#&17c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&520 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#&e0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&17c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&17c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&800000 + ORR a2,a2,#&2a0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2000000 + ORR a2,a2,#7 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&17c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&17c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&800000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&17c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&17c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&17c] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&800000 + ORR a2,a2,#&100 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV a2,#&3a00000 + ORR a2,a2,a1,LSL #12 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV a2,#&c40 + ADD a2,a2,#&3100000 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&13800000 + ORR a2,a2,#&80 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV a2,#&c20 + ADD a2,a2,#&3100000 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&13800000 + ORR a2,a2,#8 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + LDR a2,[pc, #L005728-.-8] + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&13800000 + ORR a2,a2,#&40 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + LDR a2,[pc, #L00572c-.-8] + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&13800000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + ORR a2,v4,a1,LSL #16 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&13800000 + ORR a2,a2,#&10 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV a2,#&3100000 + ADD a2,a2,#8 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&13800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&17c] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&2a0 + MOV a1,v1 + BL do_ins + MOV v3,#3 +|L005624.J35.translate_pixel| + LDR a1,[v1,#&210] + TEQ v3,a1 + MOVNE a2,#4 + MOVNE a1,#&56 + ADDNE a1,a1,#&900 + BLNE exit_c + LDR a1,[v1,#&1e8] + AND a1,a1,#7 + TEQ a1,#2 + BNE |L0056dc.J51.translate_pixel| + TEQ v3,#5 + BEQ |L0056dc.J51.translate_pixel| + LDR a1,[v1,#&158] + BL rr + LDR a2,[v2,#&104] + SUB a2,v5,a2 + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&3800000 + ORR a2,a2,#&100 + ORR a2,a2,#2 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + LDR a2,[v2,#&104] + SUB a2,v5,a2 + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&40 + MOV a1,v1 + BL do_ins +|L0056dc.J51.translate_pixel| + LDR a1,[v2,#&104] + LDR a2,[v2,#&100] + TEQ a1,a2 + LDMEQDB fp,{v1-v5,fp,sp,pc}^ + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + LDR a2,[v2,#&104]! + ORR a1,a1,a2,LSL #7 + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + MOV a1,v1 + LDMDB fp,{v1-v5,fp,sp,lr} + B do_ins +L005728 + DCD &03100c02 +L00572c + DCD &03100c01 + +save_pixel + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&104] + TEQ a1,#&20 + LDR a1,[a2,#&1e8] + BNE |L00591c.J4.save_pixel| + TEQ a1,#0 + BEQ |L0058f4.J6.save_pixel| + LDR a1,[v1,#&178] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4900000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1e8] + SUB a1,a1,#1 + CMP a1,#6 + ADDLS pc,pc,a1,LSL #2 + B |L005898.J8.save_pixel| + B |L0057d0.J14.save_pixel| + B |L005820.J13.save_pixel| + B |L005848.J12.save_pixel| + B |L005874.J11.save_pixel| + B |L005898.J8.save_pixel| + B |L0057fc.J10.save_pixel| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1e00000 + MOV a1,v1 + BL do_ins +|L0057d0.J14.save_pixel| + LDR a1,[v1,#&178] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v2,a1 + ORR a2,a1,#&1800000 + B |L005890.J54.save_pixel| +|L0057fc.J10.save_pixel| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1e00000 + MOV a1,v1 + BL do_ins +|L005820.J13.save_pixel| + LDR a1,[v1,#&178] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a2,v2,a1 + B |L005890.J54.save_pixel| +|L005848.J12.save_pixel| + LDR a1,[v1,#&178] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v2,a1 + ORR a2,a1,#&200000 + B |L005890.J54.save_pixel| +|L005874.J11.save_pixel| + LDR a1,[v1,#&178] + BL rr + MOV v2,a1 + LDR a1,[v1,#&178] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1e00000 +|L005890.J54.save_pixel| + MOV a1,v1 + BL do_ins +|L005898.J8.save_pixel| + LDR a1,[v1,#&178] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4800000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1e8] + TEQ a1,#7 + TEQNE a1,#6 + LDMNEDB fp,{v1-v3,fp,sp,pc}^ + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1e00000 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L0058f4.J6.save_pixel| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4800000 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L00591c.J4.save_pixel| + TEQ a1,#6 + TEQNE a1,#7 + BNE |L005994.J21.save_pixel| + LDR a1,[v2,#&100] + TEQ a1,#&10 + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + LDRNE a2,[v1,#&21c] + ORRNE a1,a1,a2 + ORRNE a2,a1,#&2200000 + BNE |L00598c.J55.save_pixel| + ORR a2,a1,#&2200000 + ORR a2,a2,#&ff + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2200000 + ORR a2,a2,#&c00 + ORR a2,a2,#&ff +|L00598c.J55.save_pixel| + MOV a1,v1 + BL do_ins +|L005994.J21.save_pixel| + LDR a1,[v1,#&1e8] + CMP a1,#7 + ADDLS pc,pc,a1,LSL #2 + B |L005b38.J28.save_pixel| + B |L0059c4.J36.save_pixel| + B |L005a44.J35.save_pixel| + B |L005a70.J34.save_pixel| + B |L005a98.J33.save_pixel| + B |L005ac4.J32.save_pixel| + B |L005b38.J28.save_pixel| + B |L005a70.J34.save_pixel| + B |L005a44.J35.save_pixel| +|L0059c4.J36.save_pixel| + LDR a1,[v1,#&1ec] + TEQ a1,#0 + BEQ |L005a44.J35.save_pixel| + LDR a1,[v2,#&100] + TEQ a1,#&10 + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + BNE |L005a2c.J39.save_pixel| + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&3c00000 + ORR a2,a2,#&ff + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&3c00000 + ORR a2,a2,#&c00 + ORR a2,a2,#&ff + B |L005a3c.J56.save_pixel| +|L005a2c.J39.save_pixel| + ORR a2,v3,a1,LSL #16 + LDR a1,[v1,#&21c] + ORR a1,a2,a1 + ORR a2,a1,#&3c00000 +|L005a3c.J56.save_pixel| + MOV a1,v1 + BL do_ins +|L005a44.J35.save_pixel| + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + B |L005b30.J57.save_pixel| +|L005a70.J34.save_pixel| + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a2,v3,a1 + B |L005b30.J57.save_pixel| +|L005a98.J33.save_pixel| + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&200000 + B |L005b30.J57.save_pixel| +|L005ac4.J32.save_pixel| + LDR a1,[v2,#&100] + TEQ a1,#&10 + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + BNE |L005b20.J42.save_pixel| + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2200000 + ORR a2,a2,#&ff + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2200000 + ORR a2,a2,#&c00 + ORR a2,a2,#&ff + B |L005b30.J57.save_pixel| +|L005b20.J42.save_pixel| + ORR a2,v3,a1,LSL #16 + LDR a1,[v1,#&21c] + ORR a1,a2,a1 + ORR a2,a1,#&2200000 +|L005b30.J57.save_pixel| + MOV a1,v1 + BL do_ins +|L005b38.J28.save_pixel| + LDR a1,[v1,#&1e8] + TEQ a1,#6 + TEQNE a1,#7 + LDMNEDB fp,{v1-v3,fp,sp,pc}^ + LDR a1,[v2,#&100]! + TEQ a1,#&10 + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #16 + BNE |L005bac.J49.save_pixel| + ORR a2,a1,#&2200000 + ORR a2,a2,#&ff + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2200000 + ORR a2,a2,#&c00 + ORR a2,a2,#&ff + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L005bac.J49.save_pixel| + LDR a2,[v1,#&21c] + ORR a1,a1,a2 + ORR a2,a1,#&2200000 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +save_pixel_opt + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a2 + LDR a1,[a1,#&100] + TEQ a1,#&10 + LDR a1,[a2,#&19c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + BNE |L005c30.J4.save_pixel_opt| + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&3c00000 + ORR a2,a2,#&ff + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&3c00000 + ORR a2,a2,#&c00 + ORR a2,a2,#&ff + B |L005c40.J9.save_pixel_opt| +|L005c30.J4.save_pixel_opt| + ORR a2,v2,a1,LSL #16 + LDR a1,[v1,#&21c] + ORR a1,a2,a1 + ORR a2,a1,#&3c00000 +|L005c40.J9.save_pixel_opt| + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1 + ORR a2,a1,#&1800000 + MOV a1,v1 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_ins + +save_pixel2 + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a2,#&1e8] + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&eb + ADDNE a1,a1,#&900 + BLNE exit_c + LDR a1,[v2,#&104] + TEQ a1,#&20 + BNE |L005ce0.J6.save_pixel2| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&5800000 + ORR a2,a2,#4 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L005ce0.J6.save_pixel2| + LDR a1,[v1,#&1ec] + TEQ a1,#0 + BEQ |L005d84.J9.save_pixel2| + LDR a1,[v2,#&100] + TEQ a1,#&10 + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + BNE |L005d4c.J11.save_pixel2| + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&3c00000 + ORR a2,a2,#&800 + ORR a2,a2,#&ff + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&3c00000 + ORR a2,a2,#&400 + ORR a2,a2,#&ff + B |L005d7c.J19.save_pixel2| +|L005d4c.J11.save_pixel2| + ORR a2,v3,a1,LSL #16 + LDR a1,[v2,#&100] + TEQ a1,#1 + MOVEQ a1,#&2000000 + ADDEQ a1,a1,#2 + BEQ |L005d74.J14.save_pixel2| + RSB a3,a1,#&20 + LDR a1,[v1,#&21c] + ORR a1,a1,a3,LSL #7 + ORR a1,a1,#&2000000 +|L005d74.J14.save_pixel2| + ORR a1,a2,a1 + ORR a2,a1,#&1c00000 +|L005d7c.J19.save_pixel2| + MOV a1,v1 + BL do_ins +|L005d84.J9.save_pixel2| + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + LDR a2,[v2,#&100]! + ORR a1,a1,a2,LSL #7 + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +fetch_pixel_inc + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BEQ |L005ee4.J4.fetch_pixel_inc| + LDR a1,[v2,#&74] + TEQ a1,#5 + BNE |L005e14.J6.fetch_pixel_inc| + LDR a1,[v1,#&15c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2800000 + ORR a2,a2,#4 + B |L005edc.J25.fetch_pixel_inc| +|L005e14.J6.fetch_pixel_inc| + LDR a1,[v1,#&164] + BL rr + LDR a2,[v1,#&1fc] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&164] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1f0] + TEQ a1,#0 + MOVNE a1,#0 + MOVEQ a1,#1 + LDR a2,[v1,#&1ec] + TST a1,a2 + BEQ |L005e88.J9.fetch_pixel_inc| + LDR a1,[v1,#&16c] + BL rr + LDR a2,[v1,#&1fc] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&16c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins +|L005e88.J9.fetch_pixel_inc| + LDR a1,[v1,#&160] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&160] + BL rr + ORR a2,v3,a1,LSL #16 + LDR a1,[v1,#&1fc] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&164] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&f0000000 + ORR a2,a2,#&5b00000 + ORR a2,a2,#4 +|L005edc.J25.fetch_pixel_inc| + MOV a1,v1 + BL do_ins +|L005ee4.J4.fetch_pixel_inc| + LDR a1,[v1,#&1ec] + TEQ a1,#0 + LDMEQDB fp,{v1-v3,fp,sp,pc}^ + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L005f0c.J17.fetch_pixel_inc| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L005f98.J16.fetch_pixel_inc| +|L005f0c.J17.fetch_pixel_inc| + LDR a1,[v1,#&16c] + BL rr + LDR a2,[v1,#&204] + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&16c] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&170] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&170] + BL rr + ORR a1,v2,a1,LSL #16 + LDR a2,[v1,#&204] + ORR a1,a1,a2,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&16c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&168] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&f0000000 + ORR a2,a2,#&5b00000 + ORR a2,a2,#4 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L005f98.J16.fetch_pixel_inc| + LDR a1,[v2,#&74]! + TEQ a1,#5 + MOVEQ a2,#4 + MOVEQ a1,#&31 + ADDEQ a1,a1,#&a00 + BLEQ exit_c + LDR a1,[v1,#&16c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v2,a1,LSL #16 + ORR v2,a1,#&4100000 + LDR a1,[v1,#&174] + BL rr + ORR a1,a1,#&3800000 + ORR a1,v2,a1 + ORR a2,a1,#&f0000000 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +fetch_pixel_inc2 + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&74] + TEQ a1,#5 + BNE |L006030.J4.fetch_pixel_inc2| + LDR a1,[v1,#&15c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2800000 + ORR a2,a2,#8 + B |L006128.J24.fetch_pixel_inc2| +|L006030.J4.fetch_pixel_inc2| + LDR a1,[v2,#&78] + TEQ a1,#4 + LDR a1,[v1,#&164] + BL rr + BNE |L006060.J7.fetch_pixel_inc2| + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&5b00000 + ORR a2,a2,#4 + B |L006128.J24.fetch_pixel_inc2| +|L006060.J7.fetch_pixel_inc2| + LDR a2,[v1,#&1fc] + MOV a2,a2,LSL #1 + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&164] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1f0] + TEQ a1,#0 + MOVNE a2,#0 + MOVEQ a2,#1 + LDR a1,[v1,#&1ec] + TST a2,a1 + BEQ |L0060d4.J10.fetch_pixel_inc2| + LDR a1,[v1,#&16c] + BL rr + LDR a2,[v1,#&1fc] + MOV a2,a2,LSL #1 + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&16c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins +|L0060d4.J10.fetch_pixel_inc2| + LDR a1,[v1,#&160] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&160] + BL rr + ORR a1,v3,a1,LSL #16 + LDR a2,[v1,#&1fc] + ORR a1,a1,a2 + ORR a2,a1,#&2500000 + ORR a2,a2,#&200 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&164] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&f0000000 + ORR a2,a2,#&5b00000 + ORR a2,a2,#4 +|L006128.J24.fetch_pixel_inc2| + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ec] + TEQ a1,#0 + LDMEQDB fp,{v1-v3,fp,sp,pc}^ + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BEQ |L0061d4.J17.fetch_pixel_inc2| + LDR a1,[v1,#&16c] + BL rr + LDR a2,[v1,#&204] + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&16c] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&170] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&170] + BL rr + ORR a2,v2,a1,LSL #16 + LDR a1,[v1,#&204] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&16c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&168] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&f0000000 + ORR a2,a2,#&5b00000 + ORR a2,a2,#4 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L0061d4.J17.fetch_pixel_inc2| + LDR a1,[v2,#&74]! + TEQ a1,#5 + MOVEQ a2,#4 + MOVEQ a1,#&6a + ADDEQ a1,a1,#&a00 + BLEQ exit_c + LDR a1,[v1,#&16c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v2,a1,LSL #16 + ORR v2,a1,#&4100000 + LDR a1,[v1,#&174] + BL rr + ORR a1,a1,#&3800000 + ORR a1,v2,a1 + ORR a2,a1,#&f0000000 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +odither_inc + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a2 + MOV v2,a3 + LDR a1,[a2,#&1f4] + TEQ a1,#0 + LDMEQDB fp,{v1-v3,fp,sp,pc}^ + LDR a1,[v1,#&184] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&184] + BL rr + ORR a2,v3,a1,LSL #16 + LDR a1,[v1,#&1f4] + SUB a3,a1,v2 + MOV a1,#1 + ORR a1,a2,a1,LSL a3 + ORR a2,a1,#&2200000 + ORR a2,a2,#&400 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +skip_current_output_words + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a2 + LDR a1,[a1,#&104] + MOV v2,#&3a00000 + TEQ a1,#&20 + BNE |L0062f0.J4.skip_current_output_words| + LDR a1,[v1,#&198] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&800000 + ORR a2,a2,#&100 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + ORR a2,v2,a1,LSL #12 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L0062f0.J4.skip_current_output_words| + LDR a1,[v1,#&1ac] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&400000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + LDR a2,[v1,#&214] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1 + LDR a1,[v1,#&178] + BL rr + ORR v3,v3,a1,LSL #8 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&70 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + ORR a2,v2,a1,LSL #12 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + LDR a2,[v1,#&224] + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&178] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1b00000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&198] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v2,a1 + ORR a2,a1,#&10800000 + ORR a2,a2,#&100 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4900000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + LDR a2,[v1,#&224] + ORR a1,a1,a2,LSL #7 + ORR a1,v2,a1 + ORR a2,a1,#&400000 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +skip_some_pixels + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a2 + LDR a1,[a2,#&1ac] + BL rr + LDR a2,[v1,#&214] + ORR v2,a1,a2,LSL #7 + LDR a1,[v1,#&178] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1 + LDR a1,[v1,#&178] + BL rr + ORR v2,v2,a1,LSL #8 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&70 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v2,a1 + ORR a2,a1,#&400000 + ORR a2,a2,#&d80 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV a2,#&3a00000 + ORR a2,a2,a1,LSL #12 + MOV a1,v1 + LDMDB fp,{v1,v2,fp,sp,lr} + B do_ins + +save_pixel_inc + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&104] + TEQ a1,#&20 + BNE |L006590.J4.save_pixel_inc| + LDR a1,[v1,#&198] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L0066dc.J8.save_pixel_inc| + B |L0066ac.J16.save_pixel_inc| +|L006590.J4.save_pixel_inc| + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L0065f8.J9.save_pixel_inc| + LDR a1,[v1,#&164] + BL rr + LDR a2,[v2,#&100] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&164] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins +|L0065f8.J9.save_pixel_inc| + LDR a1,[v1,#&1a0] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a2,v3,a1,LSL #16 + LDR a1,[v2,#&100] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&c0000000 + ORR a2,a2,#&34800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1e8] + TEQ a1,#0 + LDREQ a1,[v1,#&1ec] + TEQEQ a1,#0 + LDR a1,[v1,#&19c] + BL rr + MOVEQ a2,#&1a00000 + ORREQ a1,a2,a1,LSL #12 + ORREQ a2,a1,#&f2000000 + BEQ |L006694.J19.save_pixel_inc| + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&f0000000 + ORR a2,a2,#&4900000 +|L006694.J19.save_pixel_inc| + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L0066dc.J8.save_pixel_inc| +|L0066ac.J16.save_pixel_inc| + LDR a1,[v1,#&164] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&18c] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&7900000 + MOV a1,v1 + BL do_ins +|L0066dc.J8.save_pixel_inc| + MOV a2,v1 + MOV a1,v2 + MOV a3,#0 + LDMDB fp,{v1-v3,fp,sp,lr} + B odither_inc + +save_pixel_inc2 + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&104] + TEQ a1,#&20 + BNE |L006734.J4.save_pixel_inc2| + LDR a1,[v1,#&198] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2800000 + ORR a2,a2,#8 + B |L006858.J18.save_pixel_inc2| +|L006734.J4.save_pixel_inc2| + LDR a1,[v2,#&100] + TEQ a1,#&10 + LDR a1,[v1,#&19c] + BL rr + BNE |L00679c.J7.save_pixel_inc2| + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ec] + TEQ a1,#0 + LDR a1,[v1,#&19c] + BL rr + MOVEQ a2,#&3a00000 + ORREQ a2,a2,a1,LSL #12 + BEQ |L006858.J18.save_pixel_inc2| + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4900000 + B |L006858.J18.save_pixel_inc2| +|L00679c.J7.save_pixel_inc2| + LDR a2,[v2,#&100] + MOV a2,a2,LSL #1 + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v3,a1,LSL #16 + LDR a2,[v2,#&100] + ORR a1,a1,a2 + ORR a2,a1,#&2500000 + ORR a2,a2,#&200 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&c0000000 + ORR a2,a2,#&34800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ec] + TEQ a1,#0 + LDR a1,[v1,#&19c] + BL rr + MOVEQ a2,#&1a00000 + ORREQ a1,a2,a1,LSL #12 + ORREQ a2,a1,#&f2000000 + BEQ |L006858.J18.save_pixel_inc2| + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&f0000000 + ORR a2,a2,#&4900000 +|L006858.J18.save_pixel_inc2| + MOV a1,v1 + BL do_ins + MOV a2,v1 + MOV a1,v2 + MOV a3,#0 + LDMDB fp,{v1-v3,fp,sp,lr} + B odither_inc + +plot_current_output_words + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + MOV v5,a3 + LDR a1,[a1,#&104] + ADD v4,a2,#&110 + ADD v3,a2,#&108 + TEQ a1,#&20 + BNE |L006ab0.J4.plot_current_output_words| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + CMP v5,#&15 + BGE |L006968.J6.plot_current_output_words| + MOV v6,#1 + CMP v5,#1 + LDMLEDB fp,{v1-v6,fp,sp,pc}^ +|L006904.J8.plot_current_output_words| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&14800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&10000000 + ORR a2,a2,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + ADD v6,v6,#1 + CMP v6,v5 + BLT |L006904.J8.plot_current_output_words| + LDMDB fp,{v1-v6,fp,sp,pc}^ +|L006968.J6.plot_current_output_words| + LDR a1,[v1,#&1ac] + BL rr + MOV v2,#&3500000 + ADD v2,v2,#&a + ORR a2,v2,a1,LSL #16 + MOV a1,v1 + BL do_ins + MOV a3,v4 + MOV a1,v1 + MOV a2,#&da000000 + BL do_branch + MOV a2,v3 + MOV a1,v1 + BL define_label + MOV v6,#0 +|L0069a4.J13.plot_current_output_words| + LDR a1,[v1,#&158] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a2,a1,#&4800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + ADD v6,v6,#1 + CMP v6,#&a + BLT |L0069a4.J13.plot_current_output_words| + LDR a1,[v1,#&1ac] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a2,a1,#&2400000 + ORR a2,a2,#&a + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + ORR a2,v2,a1,LSL #16 + MOV a1,v1 + BL do_ins + MOV a3,v3 + MOV a1,v1 + MOV a2,#&ca000000 + BL do_branch + MOV a2,v4 + MOV a1,v1 + BL define_label + LDR a1,[v1,#&1ac] + BL rr + MOV a2,#&3500000 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + MOV v6,#0 +|L006a4c.J15.plot_current_output_words| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&14800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&10000000 + ORR a2,a2,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + ADD v6,v6,#1 + CMP v6,#&a + BLT |L006a4c.J15.plot_current_output_words| + LDMDB fp,{v1-v6,fp,sp,pc}^ +|L006ab0.J4.plot_current_output_words| + LDR a1,[v1,#&1ac] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR v5,v5,a1,LSL #16 + LDR a1,[v1,#&178] + BL rr + ORR a1,v5,a1 + ORR a2,a1,#&400000 + MOV a1,v1 + BL do_ins + ADD a2,v1,#&100 + MOV v6,a2 + MOV a1,v1 + BL define_label + MOV a2,v1 + MOV a1,v2 + BL save_pixel_opt + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR v5,a1,a2,LSL #7 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v5,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a2,v5,a1,LSL #16 + LDR a1,[v2,#&100] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + MOV a3,v3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL save_pixel_opt + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR v5,a1,a2,LSL #7 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v5,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v5,a1,LSL #16 + LDR a2,[v2,#&100] + ORR a1,a1,a2,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + MOV a3,v4 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL save_pixel_opt + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR v5,a1,a2,LSL #7 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v5,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a2,v5,a1,LSL #16 + LDR a1,[v2,#&100] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + ADD a3,v1,#&118 + MOV v5,a3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL save_pixel_opt + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR a2,a1,a2,LSL #7 + STR a2,[sp,#-4]! + LDR a1,[v1,#&19c] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1a0] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + LDR a2,[v2,#&100] + ORR a1,a1,a2,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + MOV a3,v6 + MOV a1,v1 + MOV a2,#&1a000000 + BL do_branch + MOV a2,v3 + MOV a1,v1 + BL define_label + MOV a2,v4 + MOV a1,v1 + BL define_label + MOV a2,v5 + MOV a1,v1 + BL define_label + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + LDR a2,[v1,#&224] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&178] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1b00000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + ADD a3,v1,#&128 + MOV v3,a3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + LDR v6,[v2,#&104] + CMP v6,#&20 + BGE |L006dbc.J19.plot_current_output_words| +|L006d7c.J18.plot_current_output_words| + LDR a1,[v1,#&158] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR v4,v4,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + ORR a1,a1,v6,LSL #7 + ORR a1,v4,a1 + ORR a2,a1,#&1800000 + MOV a1,v1 + BL do_ins + MOV v6,v6,LSL #1 + CMP v6,#&20 + BLT |L006d7c.J18.plot_current_output_words| +|L006dbc.J19.plot_current_output_words| + ADD a2,v1,#&120 + MOV v4,a2 + MOV a1,v1 + BL define_label + LDR a1,[v1,#&158] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a2,a1,#&4800000 + ORR a2,a2,#4 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a2,v5,a1,LSL #16 + LDR a1,[v1,#&220] + ORR a1,a2,a1 + ORR a2,a1,#&2400000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&178] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + MOV a3,v4 + MOV a1,v1 + MOV a2,#&1a000000 + BL do_branch + LDR a1,[v2,#&100]! + TEQ a1,#&10 + LDR a1,[v1,#&158] + BL rr + BNE |L006eb0.J22.plot_current_output_words| + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&800 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&820 + B |L006ecc.J32.plot_current_output_words| +|L006eb0.J22.plot_current_output_words| + MOV v2,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a2,v2,a1,LSL #16 + LDR a1,[v1,#&21c] + ORR a1,a2,a1 + ORR a2,a1,#&2000000 +|L006ecc.J32.plot_current_output_words| + MOV a1,v1 + BL do_ins + MOV a2,v3 + MOV a1,v1 + BL define_label + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4900000 + MOV a1,v1 + LDMDB fp,{v1-v6,fp,sp,lr} + B do_ins + +plot_some_pixels + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + ADD a2,a2,#&130 + MOV v6,a2 + MOV a1,v1 + BL define_label + MOV a2,v1 + MOV a1,v2 + BL save_pixel_opt + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a2,v3,a1,LSL #16 + LDR a1,[v2,#&100] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + ADD a3,v1,#&138 + MOV v5,a3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL save_pixel_opt + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v3,a1,LSL #16 + LDR a2,[v2,#&100] + ORR a1,a1,a2,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + ADD a3,v1,#&140 + MOV v4,a3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL save_pixel_opt + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v3,a1,LSL #16 + LDR a2,[v2,#&100] + ORR a1,a1,a2,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + ADD a3,v1,#&148 + MOV v3,a3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL save_pixel_opt + LDR a1,[v1,#&19c] + BL rr + LDR a2,[v2,#&100] + ORR a2,a1,a2,LSL #7 + STR a2,[sp,#-4]! + LDR a1,[v1,#&19c] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&60 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1a0] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + LDR a2,[v2,#&100]! + ORR a1,a1,a2,LSL #1 + ORR a2,a1,#&2500000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ac] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + MOV a3,v6 + MOV a1,v1 + MOV a2,#&1a000000 + BL do_branch + MOV a2,v5 + MOV a1,v1 + BL define_label + MOV a2,v4 + MOV a1,v1 + BL define_label + MOV a2,v3 + MOV a1,v1 + LDMDB fp,{v1-v6,fp,sp,lr} + B define_label + +arbitrary_add + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a4 + MOV ip,#1 + MOV a4,#0 + LDR v3,[fp,#4] + CMP v3,#0 + BGE |L007228.J4.arbitrary_add| + RSB v3,v3,#0 + TEQ a2,#0 + MOVNE a2,a4 + MOVEQ a2,ip +|L007228.J4.arbitrary_add| + TEQ v3,#0 + BNE |L00724c.J9.arbitrary_add| + TEQ a3,#0 + LDMEQDB fp,{v1-v6,fp,sp,pc}^ + MOV a2,#&3500000 + LDR a3,[v1,#0] + ORR a2,a2,a3,LSL #16 + LDMDB fp,{v1-v6,fp,sp,lr} + B do_ins +|L00724c.J9.arbitrary_add| + TEQ a2,#0 + MOVEQ v6,#&400000 + MOVNE v6,#&800000 + TEQ a3,#0 + MOVEQ v5,a4 + MOVNE v5,#&100000 + MOV v4,#0 +|L007268.J20.arbitrary_add| + CMP v3,#&ff + BLE |L007288.J23.arbitrary_add| + TST v3,#3 + BNE |L007288.J23.arbitrary_add| +|L007278.J25.arbitrary_add| + MOV v3,v3,ASR #2 + ADD v4,v4,#2 + TST v3,#3 + BEQ |L007278.J25.arbitrary_add| +|L007288.J23.arbitrary_add| + AND a2,v3,#&ff + BICS v3,v3,#&ff + MOVNE a1,#0 + MOVEQ a1,#1 + TEQ a1,#0 + MOVNE a1,v5 + ORR a3,a1,v6 + LDR a1,[v1,#0] + ORR a3,a3,a1,LSL #12 + ORR a1,a3,a1,LSL #16 + ORR a1,a1,a2 + RSB a2,v4,#&20 + AND a2,a2,#&1e + ORR a1,a1,a2,LSL #7 + ORR a2,a1,#&2000000 + MOV a1,v2 + BL do_ins + TEQ v3,#0 + BNE |L007268.J20.arbitrary_add| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +init_word_registers + MOV ip,sp + STMDB sp!,{v1-v3,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + LDR a1,[a1,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + LDRNE a1,[v2,#&74] + TEQNE a1,#5 + BEQ |L0073b0.J4.init_word_registers| + LDR a1,[v1,#&164] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,#&800000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&160] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&da0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&164] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR v3,v3,a1,LSL #8 + LDR a1,[v1,#&164] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&70 + MOV a1,v1 + BL do_ins +|L0073b0.J4.init_word_registers| + LDR a1,[v1,#&1ec] + TEQ a1,#0 + BEQ |L0074b0.J8.init_word_registers| + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L0073d8.J11.init_word_registers| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L00744c.J10.init_word_registers| +|L0073d8.J11.init_word_registers| + LDR a1,[v1,#&16c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&168] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,#&800000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&170] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&da0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#&20 + B |L007474.J25.init_word_registers| +|L00744c.J10.init_word_registers| + LDR a1,[v1,#&16c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR v3,v3,a1,LSL #16 + LDR a1,[v1,#&174] + BL rr + ORR a1,v3,a1 + ORR a2,a1,#&7900000 +|L007474.J25.init_word_registers| + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&16c] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR v3,v3,a1,LSL #8 + LDR a1,[v1,#&16c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&70 + MOV a1,v1 + BL do_ins +|L0074b0.J8.init_word_registers| + LDR a1,[v2,#&104] + TEQ a1,#&20 + LDMEQDB fp,{v1-v3,fp,sp,pc}^ + LDR a1,[v1,#&1e8] + TEQ a1,#0 + LDREQ a1,[v1,#&1ec] + TEQEQ a1,#0 + BNE |L00757c.J17.init_word_registers| + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1b00000 + ORR a2,a2,#&da0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a1,a1,#&800000 + ORR a2,a1,#&10000000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR v2,v2,a1,LSL #8 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&10000000 + ORR a2,a2,#&1a00000 + ORR a2,a2,#&10 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV a2,#&1a00000 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&f2000000 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins +|L00757c.J17.init_word_registers| + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a1,a1,#&4100000 + ADD a2,a1,#&800000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&da0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&158] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v3,a1 + LDR a1,[v1,#&158] + BL rr + ORR v3,v3,a1,LSL #8 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&70 + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&f4]! + AND a1,a1,#&ff + TEQ a1,#&32 + LDMNEDB fp,{v1-v3,fp,sp,pc}^ + LDR a1,[v1,#&164] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&18c] + BL rr + ORR a1,v2,a1 + ORR a2,a1,#&7900000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&164] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR v2,v2,a1,LSL #8 + LDR a1,[v1,#&164] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&70 + MOV a1,v1 + LDMDB fp,{v1-v3,fp,sp,lr} + B do_ins + +align16 + MOV ip,sp + STMDB sp!,{v1,v2,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a2 + LDR a1,[a2,#&10] + TST a1,#1 + LDMEQDB fp,{v1,v2,fp,sp,pc}^ +|L0076bc.J4.align16| + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&10] + TST a1,#1 + BNE |L0076bc.J4.align16| + LDMDB fp,{v1,v2,fp,sp,pc}^ + +loop_x + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + SUB sp,sp,#&24 + BL x_block_move + TEQ a1,#0 + BEQ |L007758.J4.loop_x| + LDR a1,[v1,#&1dc] + BL rr + MOV v2,a1 + LDR a1,[v1,#&1d8] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&188] + BL rr + MOV v2,a1 + LDR a1,[v1,#&1dc] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + B |L008670.J80.loop_x| +|L007758.J4.loop_x| + MOV a2,v1 + MOV a1,v2 + BL init_word_registers + MOV a2,v1 + MOV a1,v2 + BL simple_x_scale + ADD v5,v1,#&30 + TEQ a1,#0 + BEQ |L007cb8.J7.loop_x| + LDR a1,[v2,#&104] + TEQ a1,#&20 + BEQ |L00785c.J9.loop_x| + LDR a1,[v1,#&1a0] + BL rr + MOV a2,a1,LSL #16 + LDR a1,[v2,#&100] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&3100000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + ADD a3,v1,#&70 + MOV v3,a3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + ADD a3,v1,#&78 + MOV v6,a3 + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel + MOV v4,a1 + MOV a2,v1 + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel + TEQ v4,#0 + MOVNE a2,v6 + MOVNE a1,v1 + BLNE define_label + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc + MOV a2,v1 + MOV a1,v2 + BL save_pixel_inc + LDR a1,[v1,#&1a8] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&1a8] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + MOV a3,v5 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v3 + MOV a1,v1 + BL define_label +|L00785c.J9.loop_x| + ADD v3,v1,#&a0 + LDR a1,[v2,#&74] + TEQ a1,#5 + BEQ |L0078a0.J13.loop_x| + LDR a1,[v1,#&160] + BL rr + MOV a2,a1,LSL #16 + LDR a1,[v1,#&1fc] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&3100000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins + MOV a3,v3 + MOV a1,v1 + MOV a2,#&1a000000 + BL do_branch +|L0078a0.J13.loop_x| + ADD a3,v1,#&88 + MOV v6,a3 + MOV a1,v1 + MOV a2,#&a000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL align16 + ADD a2,v1,#&80 + MOV a1,v1 + STR a2,[sp,#&20] + BL define_label + ADD a3,v1,#&90 + MOV a2,v1 + MOV a1,v2 + STR a3,[sp,#&1c] + BL fetch_pixel + MOV v4,a1 + MOV a2,v1 + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel + TEQ v4,#0 + MOVNE a1,v1 + LDRNE a2,[sp,#&1c] + BLNE define_label + MOV a2,v1 + MOV a1,v2 + MOV a3,#0 + BL odither_inc + ADD a3,v1,#&98 + MOV a2,v1 + MOV a1,v2 + STR a3,[sp,#&18] + BL fetch_pixel2 + MOV v4,a1 + MOV a2,v1 + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel2 + TEQ v4,#0 + MOVNE a1,v1 + LDRNE a2,[sp,#&18] + BLNE define_label + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc2 + MOV a2,v1 + MOV a1,v2 + BL save_pixel_inc2 + MOV a2,v6 + MOV a1,v1 + BL define_label + LDR a1,[v1,#&1a8] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&1a8] + BL rr + ORR a1,v4,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#2 + MOV a1,v1 + BL do_ins + MOV a1,v1 + MOV a2,#&aa000000 + LDR a3,[sp,#&20] + BL do_branch + LDR a1,[v2,#&74] + TEQ a1,#5 + BEQ |L007c14.J32.loop_x| + ADD a3,v1,#&c8 + MOV v4,a3 + MOV a1,v1 + MOV a2,#&a000000 + BL do_branch + MOV a2,v3 + MOV a1,v1 + BL define_label + LDR a1,[v2,#&74] + TEQ a1,#5 + BNE |L007a18.J21.loop_x| + LDR a1,[v1,#&15c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2400000 + ORR a2,a2,#4 + B |L007a68.J76.loop_x| +|L007a18.J21.loop_x| + LDR a1,[v1,#&164] + BL rr + LDR a2,[v1,#&1f8] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&164] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&160] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&160] + BL rr + ORR a1,v3,a1,LSL #16 + LDR a2,[v1,#&1f8] + ORR a1,a1,a2,LSL #1 + ORR a2,a1,#&2800000 + ORR a2,a2,#&300 +|L007a68.J76.loop_x| + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1ec] + TEQ a1,#0 + BEQ |L007ae0.J24.loop_x| + LDR a1,[v1,#&16c] + BL rr + LDR a2,[v1,#&204] + ORR v3,a1,a2,LSL #7 + LDR a1,[v1,#&16c] + BL rr + ORR a1,v3,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BEQ |L007ae0.J24.loop_x| + LDR a1,[v1,#&170] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&170] + BL rr + ORR a2,v3,a1,LSL #16 + LDR a1,[v1,#&204] + ORR a1,a2,a1,LSL #1 + ORR a2,a1,#&2800000 + ORR a2,a2,#&300 + MOV a1,v1 + BL do_ins +|L007ae0.J24.loop_x| + ADD a3,v1,#&b0 + MOV v3,a3 + MOV a1,v1 + MOV a2,#&a000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL align16 + ADD a2,v1,#&a8 + MOV a1,v1 + STR a2,[sp,#&14] + BL define_label + ADD a3,v1,#&b8 + MOV a2,v1 + MOV a1,v2 + STR a3,[sp,#&10] + BL fetch_pixel2 + MOV v6,a1 + MOV a2,v1 + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel + TEQ v6,#0 + MOVNE a1,v1 + LDRNE a2,[sp,#&10] + BLNE define_label + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc2 + MOV a2,v1 + MOV a1,v2 + MOV a3,#0 + BL odither_inc + ADD a3,v1,#&c0 + MOV a2,v1 + MOV a1,v2 + STR a3,[sp,#&c] + BL fetch_pixel + MOV v6,a1 + MOV a2,v1 + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel2 + TEQ v6,#0 + MOVNE a1,v1 + LDRNE a2,[sp,#&c] + BLNE define_label + MOV a2,v1 + MOV a1,v2 + BL save_pixel_inc2 + MOV a2,v3 + MOV a1,v1 + BL define_label + LDR a1,[v1,#&1a8] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a8] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#2 + MOV a1,v1 + BL do_ins + MOV a1,v1 + MOV a2,#&aa000000 + LDR a3,[sp,#&14] + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc + MOV a2,v4 + MOV a1,v1 + BL define_label +|L007c14.J32.loop_x| + LDR a1,[v1,#&1a8] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a8] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2900000 + ORR a2,a2,#2 + MOV a1,v1 + BL do_ins + ADD a3,v1,#&d8 + MOV v4,a3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + ADD a3,v1,#&d0 + MOV v3,a3 + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel + MOV v6,a1 + MOV a2,v1 + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel + TEQ v6,#0 + MOVNE a2,v3 + MOVNE a1,v1 + BLNE define_label + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc + MOV a2,v1 + MOV a1,v2 + BL save_pixel_inc + MOV a2,v4 + MOV a1,v1 + BL define_label + B |L0084e0.J35.loop_x| +|L007cb8.J7.loop_x| + LDR a1,[v1,#&1f4] + ADD a3,v1,#&38 + ADD v3,v1,#&28 + ADD v6,v1,#&40 + ADD v4,v1,#&1ac + TEQ a1,#0 + STR a3,[sp,#8] + BEQ |L007e28.J36.loop_x| + ADD a2,v2,#&40 + LDMIA a2,{a1,a2} + SUB a3,a2,a1 + CMP a3,a1 + BLE |L007e28.J36.loop_x| + MOV a4,a2 + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#0 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v3 + MOV a1,v1 + BL define_label + LDR a4,[v2,#&44] + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#0 + MOV a2,#1 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v1 + MOV a1,v2 + LDR a3,[sp,#8] + BL fetch_pixel + STR a1,[sp,#0] + LDR a4,[v2,#&40] + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#1 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v6 + MOV a1,v1 + BL define_label + MOV a2,v1 + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel_inc + LDR a1,[v1,#&1a8] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1a8] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + MOV a3,v5 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_unmasked + LDR a4,[v2,#&40] + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#1 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a3,v6 + MOV a1,v1 + MOV a2,#&5a000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc + B |L0080c4.J50.loop_x| +|L007e28.J36.loop_x| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BEQ |L008110.J40.loop_x| + LDR a1,[v2,#&40] + LDR a2,[v2,#&68] + BL |__rt_sdiv| + TEQ a2,#0 + BNE |L008110.J40.loop_x| + CMP a1,#4 + BLE |L008110.J40.loop_x| + LDR a2,[v1,#&1e8] + TEQ a2,#0 + BNE |L008110.J40.loop_x| + MOV v6,a1 + MOV a4,a1 + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#0 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v3 + MOV a1,v1 + BL define_label + LDR a1,[v1,#&1a8] + BL rr + MOV a2,#&3300000 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + ADD a2,v1,#&e0 + MOV a1,v1 + BL define_label + MOV a3,v5 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a4,v6 + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#0 + MOV a2,#1 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v1 + MOV a1,v2 + LDR a3,[sp,#8] + BL fetch_pixel + MOV a2,v1 + STR a1,[sp,#0] + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc + LDR a1,[v1,#&1a8] + BL rr + MOV a2,a1 + STR a2,[sp,#-4]! + LDR a1,[v1,#&178] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a8] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1a8] + BL rr + LDR a2,[sp,#0] + ORR a2,a2,a1,LSL #16 + STR a2,[sp,#0] + LDR a1,[v1,#&1ac] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1 + ORR a2,a1,#&500000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a8] + BL rr + MOV a2,#&3a00000 + ADD a2,a2,#&40000000 + ORR a2,a2,a1,LSL #12 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV a2,a1 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1ac] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&40000000 + ORR a2,a2,#&1a00000 + MOV a1,v1 + BL do_ins + ADD a2,v1,#&f0 + LDR a1,[v2,#&104] + TEQ a1,#&20 + STR a2,[sp,#4] + BEQ |L0080a8.J45.loop_x| + LDR a1,[v1,#&1a0] + BL rr + MOV a2,a1 + STR a2,[sp,#-4]! + LDR a1,[v1,#&178] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&1b00000 + ORR a2,a2,#&da0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV a2,#&1a00000 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&f2000000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&100] + TEQ a1,#1 + BEQ |L00806c.J47.loop_x| + LDR a1,[v1,#&178] + BL rr + LDR a2,[v1,#&214] + ORR a2,a1,a2,LSL #7 + STR a2,[sp,#-4]! + LDR a1,[v1,#&178] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins +|L00806c.J47.loop_x| + LDR a1,[v1,#&178] + BL rr + MOV a2,a1 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1ac] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&1500000 + MOV a1,v1 + BL do_ins + MOV a1,v1 + MOV a2,#&ba000000 + LDR a3,[sp,#4] + BL do_branch +|L0080a8.J45.loop_x| + MOV a3,v6 + MOV a2,v1 + MOV a1,v2 + BL plot_current_output_words + LDR a1,[v2,#&104] + TEQ a1,#&20 + BNE |L0080cc.J49.loop_x| +|L0080c4.J50.loop_x| + MOV a3,v3 + B |L008220.J77.loop_x| +|L0080cc.J49.loop_x| + LDR a1,[v1,#&1ac] + BL rr + MOV a2,#&3300000 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + MOV a3,v3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a1,v1 + LDR a2,[sp,#4] + BL define_label + MOV a2,v1 + MOV a1,v2 + BL plot_some_pixels + B |L0080c4.J50.loop_x| +|L008110.J40.loop_x| + LDR a4,[v2,#&44] + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#0 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v3 + MOV a1,v1 + BL define_label + LDR a4,[v2,#&44] + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#0 + MOV a2,#1 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v1 + MOV a1,v2 + LDR a3,[sp,#8] + BL fetch_pixel + MOV a2,v1 + STR a1,[sp,#0] + MOV a1,v2 + BL translate_pixel + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc + MOV a2,v6 + MOV a1,v1 + BL define_label + LDR a4,[v2,#&40] + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#1 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a3,v3 + MOV a1,v1 + MOV a2,#&4a000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL save_pixel + MOV a2,v1 + MOV a1,v2 + BL save_pixel_inc + LDR a1,[v1,#&1a8] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1a8] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + MOV a3,v6 + MOV a1,v1 + MOV a2,#&1a000000 + BL do_branch + MOV a3,v5 +|L008220.J77.loop_x| + MOV a1,v1 + MOV a2,#&a000000 + BL do_branch + LDR a1,[sp,#0] + TEQ a1,#0 + BEQ |L0084e0.J35.loop_x| + MOV a1,v1 + LDR a2,[sp,#8] + BL define_label + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BEQ |L008450.J55.loop_x| + LDR a1,[v2,#&40] + LDR a2,[v2,#&68] + BL |__rt_sdiv| + TEQ a2,#0 + BNE |L008450.J55.loop_x| + CMP a1,#4 + BLE |L008450.J55.loop_x| + LDR a1,[v1,#&1e8] + TEQ a1,#0 + BNE |L008450.J55.loop_x| + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc + LDR a1,[v1,#&1a8] + BL rr + MOV v4,a1 + LDR a1,[v1,#&178] + BL rr + ORR a1,v4,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a8] + BL rr + MOV v4,a1,LSL #12 + LDR a1,[v1,#&1a8] + BL rr + ORR v4,v4,a1,LSL #16 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v4,a1 + ORR a2,a1,#&500000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a8] + BL rr + MOV a2,#&3a00000 + ADD a2,a2,#&40000000 + ORR a2,a2,a1,LSL #12 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV v4,a1 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v4,a1,LSL #12 + ORR a2,a1,#&40000000 + ORR a2,a2,#&1a00000 + MOV a1,v1 + BL do_ins + ADD v4,v1,#&e8 + LDR a1,[v2,#&104] + TEQ a1,#&20 + BEQ |L0083e4.J60.loop_x| + LDR a1,[v1,#&1a0] + BL rr + MOV v6,a1 + LDR a1,[v1,#&178] + BL rr + ORR a1,v6,a1,LSL #12 + ORR a2,a1,#&1b00000 + ORR a2,a2,#&da0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&178] + BL rr + MOV a2,#&1a00000 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&f2000000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&100] + TEQ a1,#1 + BEQ |L0083b0.J62.loop_x| + LDR a1,[v1,#&178] + BL rr + LDR a2,[v1,#&214] + ORR v6,a1,a2,LSL #7 + LDR a1,[v1,#&178] + BL rr + ORR a1,v6,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins +|L0083b0.J62.loop_x| + LDR a1,[v1,#&178] + BL rr + MOV v6,a1 + LDR a1,[v1,#&1ac] + BL rr + ORR a1,v6,a1,LSL #16 + ORR a2,a1,#&1500000 + MOV a1,v1 + BL do_ins + MOV a3,v4 + MOV a1,v1 + MOV a2,#&ba000000 + BL do_branch +|L0083e4.J60.loop_x| + MOV a2,v1 + MOV a1,v2 + BL skip_current_output_words + LDR a1,[v2,#&104] + TEQ a1,#&20 + BNE |L00840c.J64.loop_x| +|L0083fc.J65.loop_x| + MOV a3,v3 + MOV a1,v1 + MOV a2,#&a000000 + B |L0084dc.J78.loop_x| +|L00840c.J64.loop_x| + LDR a1,[v1,#&1ac] + BL rr + MOV a2,#&3300000 + ORR a2,a2,a1,LSL #16 + MOV a1,v1 + BL do_ins + MOV a3,v3 + MOV a1,v1 + MOV a2,#&fa000000 + BL do_branch + MOV a2,v4 + MOV a1,v1 + BL define_label + MOV a2,v1 + MOV a1,v2 + BL skip_some_pixels + B |L0083fc.J65.loop_x| +|L008450.J55.loop_x| + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_inc + ADD a2,v1,#&48 + MOV v6,a2 + MOV a1,v1 + BL define_label + LDR a4,[v2,#&40] + STMDB sp!,{a4} + MOV a4,v4 + MOV a1,v1 + MOV a3,#1 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a3,v3 + MOV a1,v1 + MOV a2,#&4a000000 + BL do_branch + MOV a2,v1 + MOV a1,v2 + BL save_pixel_inc + LDR a1,[v1,#&1a8] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1a8] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + MOV a3,v6 + MOV a1,v1 + MOV a2,#&1a000000 +|L0084dc.J78.loop_x| + BL do_branch +|L0084e0.J35.loop_x| + MOV a2,v5 + MOV a1,v1 + BL define_label + LDR a1,[v2,#&104]! + TEQ a1,#&20 + BEQ |L008678.J81.loop_x| + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1b00000 + ORR a2,a2,#&da0 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV a2,#&1a00000 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&f2000000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1e8] + TEQ a1,#0 + LDREQ a1,[v1,#&1ec] + TEQEQ a1,#0 + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1 + LDR a1,[v1,#&1a0] + BL rr + ORR v2,v2,a1,LSL #8 + LDR a1,[v1,#&19c] + BL rr + ORR a1,v2,a1,LSL #12 + ORRNE a2,a1,#&1a00000 + ORRNE a2,a2,#&70 + BNE |L00864c.J79.loop_x| + ORR a2,a1,#&1a00000 + ORR a2,a2,#&30 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4900000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1a0] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2600000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&1a0] + BL rr + ORR v2,v2,a1,LSL #8 + LDR a1,[v1,#&158] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + ORR a2,a2,#&30 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&19c] + BL rr + ORR v3,v2,a1,LSL #16 + LDR a1,[v1,#&158] + BL rr + MOV v2,a1 + LDR a1,[v1,#&1a0] + BL rr + ORR a1,v2,a1,LSL #8 + ORR a1,v3,a1 + ORR a2,a1,#&1800000 + ORR a2,a2,#&10 +|L00864c.J79.loop_x| + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&19c] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&198] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&4800000 +|L008670.J80.loop_x| + MOV a1,v1 + BL do_ins +|L008678.J81.loop_x| + LDMDB fp,{v1-v6,fp,sp,pc}^ + +loop_y + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v2,a1 + MOV v1,a2 + SUB sp,sp,#&10 + LDR a1,[a1,#&74] + MOV v3,#1 + MOV a1,v3,LSL a1 + STR a1,[a2,#&1f8] + LDR a1,[v2,#&78] + MOV a1,v3,LSL a1 + STR a1,[a2,#&1fc] + LDR a1,[a2,#&1f8] + MOV a1,v3,LSL a1 + SUB a1,a1,#1 + STR a1,[v1,#&200] + LDR a2,[v1,#&1ec] + TEQ a2,#0 + LDR a1,[v1,#&1f8] + BEQ |L0086fc.J17.loop_y| + LDR a2,[v1,#&1f0] + TEQ a2,#0 + STRNE v3,[v1,#&204] + STRNE v3,[v1,#&208] + STRNE v3,[v1,#&20c] + BNE |L0086fc.J17.loop_y| + STR a1,[v1,#&204] + LDR a1,[v1,#&1fc] + STR a1,[v1,#&208] + LDR a1,[v1,#&200] + STR a1,[v1,#&20c] +|L0086fc.J17.loop_y| + LDR a2,[v1,#&214] + RSB a1,a2,#5 + STR a1,[v1,#&224] + MOV a1,v3,LSL a1 + STR a1,[v1,#&220] + LDR a1,[v2,#&104] + MOV a1,v3,LSL a1 + SUB a1,a1,#1 + STR a1,[v1,#&218] + LDR a1,[v2,#&100] + MOV a1,v3,LSL a1 + SUB a1,a1,#1 + STR a1,[v1,#&21c] + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BEQ |L0087a4.J20.loop_y| + LDR a2,[v1,#&1f8] + CMP a2,#&10 + BLT |L0087a4.J20.loop_y| + LDR a1,[v2,#&104] + CMP a1,a2 + BGE |L0087a4.J20.loop_y| + LDR a2,[v2,#&138] + TST a2,#1 + BEQ |L0087a4.J20.loop_y| + TEQ a1,#&10 + MOVEQ a1,#2 + BEQ |L0087a0.J111.loop_y| + LDR a1,[v1,#&210] + TEQ a1,#3 + RSBNE a1,a1,#6 + BNE |L0087a0.J111.loop_y| + LDR a1,[v2,#&110] + TEQ a1,#0 + BEQ |L00879c.J30.loop_y| + LDR a1,[a3,#&1c]! + TEQ a1,#1 + MOVEQ a1,#3 + BEQ |L0087a0.J111.loop_y| +|L00879c.J30.loop_y| + MOV a1,#4 +|L0087a0.J111.loop_y| + STR a1,[v1,#&1f4] +|L0087a4.J20.loop_y| + MOV a1,v1 + MVN a2,#&2a000 + ADD a2,a2,#&9300000 + BL do_ins + LDR a1,[v2,#&110] + TEQ a1,#0 + STRNE v3,[v1,#&1e4] + MOV a2,v1 + MOV a1,v2 + BL ptrs_rn + LDR a1,[v1,#&1e0] + MOV a1,v3,LSL a1 + SUB v5,a1,#1 + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L0087f4.J39.loop_y| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L0087fc.J38.loop_y| +|L0087f4.J39.loop_y| + MOV v6,#&c + B |L008800.J37.loop_y| +|L0087fc.J38.loop_y| + MOV v6,#8 +|L008800.J37.loop_y| + LDR a1,[v1,#&1f4] + TEQ a1,#0 + ADDNE v6,v6,#4 + MOV a2,v1 + MOV a1,v2 + BL xloop_rn + MOV a2,#1 + LDR a1,[v1,#&1e0] + MOV a2,a2,LSL a1 + SUB a3,a2,#1 + BIC v3,a3,v5 + RSB v4,v6,a1,LSL #2 + LDR a1,[v1,#&164] + CMN a1,#1 + BEQ |L00884c.J44.loop_y| + MOV a2,#1 + MVN a1,a2,LSL a1 + AND v3,a1,v3 + SUB v4,v4,#4 +|L00884c.J44.loop_y| + LDR a1,[v1,#&19c] + CMN a1,#1 + BEQ |L008868.J46.loop_y| + MOV a2,#1 + MVN a1,a2,LSL a1 + AND v3,a1,v3 + SUB v4,v4,#4 +|L008868.J46.loop_y| + LDR a1,[v1,#&16c] + CMN a1,#1 + BEQ |L008884.J48.loop_y| + MOV a2,#1 + MVN a1,a2,LSL a1 + AND v3,a1,v3 + SUB v4,v4,#4 +|L008884.J48.loop_y| + LDR a1,[v1,#&178] + CMN a1,#1 + BEQ |L0088a0.J50.loop_y| + MOV a2,#1 + MVN a1,a2,LSL a1 + AND v3,a1,v3 + SUB v4,v4,#4 +|L0088a0.J50.loop_y| + LDR a1,[v1,#&17c] + CMN a1,#1 + BEQ |L0088bc.J52.loop_y| + MOV a2,#1 + MVN a1,a2,LSL a1 + AND v3,a1,v3 + SUB v4,v4,#4 +|L0088bc.J52.loop_y| + MOV a2,v1 + MOV a1,v2 + BL yloop_rn_count + LDR a2,[v1,#&1e0] + ADD a2,a1,a2 + LDR a1,[v1,#&1e4] + ADD a1,a2,a1 + CMP a1,#&d + MOVGT a1,#0 + MOVLE a1,#1 + STR a1,[sp,#0] + CMP a1,#0 + MOVEQ a1,#4 + STREQ a1,[v1,#&1e0] + MOV a2,v1 + MOV a1,v2 + BL yloop_rn + BNE |L00891c.J59.loop_y| + MOV a2,#1 + LDR a1,[v1,#&1e0] + MOV a1,a2,LSL a1 + SUB a1,a1,#1 + BIC a1,a1,#&f + STR a1,[sp,#4] +|L00891c.J59.loop_y| + MOV a2,v1 + MOV a1,v2 + BL fetch_pixel_init + MOV a2,v1 + MOV a1,v2 + BL save_pixel_init + MOV a2,v1 + MOV a1,v2 + BL xloop_init + LDR a1,[v1,#&1f4] + TEQ a1,#0 + BEQ |L0089a8.J61.loop_y| + LDR a1,[v2,#&74] + TEQ a1,#4 + BNE |L0089a8.J61.loop_y| + MOV a2,#1 + LDR a1,[v1,#&1ac] + MVN a1,a2,LSL a1 + AND a1,a1,v3 + MOV a3,#1 + LDR a2,[v1,#&158] + ORR v3,a1,a3,LSL a2 + ORR a1,v3,v5 + ORR a2,a1,#&9000000 + ORR a2,a2,#&2d0000 + MOV a1,v1 + BL do_ins + MOV a2,#1 + LDR a1,[v1,#&1ac] + ORR a1,v3,a2,LSL a1 + MOV a3,#1 + LDR a2,[v1,#&158] + MVN a2,a3,LSL a2 + AND v3,a2,a1 + B |L0089bc.J64.loop_y| +|L0089a8.J61.loop_y| + ORR a1,v3,v5 + ORR a2,a1,#&9000000 + ORR a2,a2,#&2d0000 + MOV a1,v1 + BL do_ins +|L0089bc.J64.loop_y| + MOV a2,v1 + MOV a1,v2 + BL yloop_init + LDR a1,[v1,#&1f4] + TEQ a1,#0 + BEQ |L008a0c.J65.loop_y| + LDR a1,[v2,#&74] + TEQ a1,#4 + BNE |L008a0c.J65.loop_y| + LDR a1,[v1,#&158] + BL rr + MOV a2,a1 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1ac] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins +|L008a0c.J65.loop_y| + MOV a2,v1 + MOV a1,v2 + BL simple_y_scale + ADD a2,v1,#&58 + TEQ a1,#0 + STR a2,[sp,#&c] + BNE |L008a38.J68.loop_y| + MOV a1,v1 + MOV a2,#&a000000 + LDR a3,[sp,#&c] + BL do_branch +|L008a38.J68.loop_y| + ADD a2,v1,#&50 + MOV a1,v1 + STR a2,[sp,#8] + BL define_label + MOV a2,v1 + MOV a1,v2 + BL simple_y_scale + TEQ a1,#0 + BNE |L008a74.J70.loop_y| + LDR a1,[v1,#&1d4] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a2,a1,#&8800000 + MOV a1,v1 + BL do_ins +|L008a74.J70.loop_y| + LDR a1,[v2,#&110] + TEQ a1,#0 + BEQ |L008c10.J72.loop_y| + LDR a1,[v1,#&1dc] + BL rr + MOV a2,a1 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1d8] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&194] + BL rr + MOV a2,a1 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1dc] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1d8] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1d0] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&114 + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v2,#&74] + CMP a1,#5 + BGE |L008bcc.J74.loop_y| + TEQ a1,#3 + LDR a1,[v1,#&15c] + BL rr + MOV a2,a1,LSL #12 + SUB sp,sp,#4 + BNE |L008b68.J76.loop_y| + STR a2,[sp,#0] + LDR a1,[v1,#&15c] + BL rr + LDR a2,[sp,#0] + ORR a2,a2,a1,LSL #16 + STR a2,[sp,#0] + LDR a1,[v1,#&1d8] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1 + ORR a2,a1,#&800000 + B |L008b98.J112.loop_y| +|L008b68.J76.loop_y| + STR a2,[sp,#0] + LDR a1,[v1,#&15c] + BL rr + LDR a2,[sp,#0] + ORR a2,a2,a1,LSL #16 + STR a2,[sp,#0] + LDR a1,[v1,#&1d8] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1 + ORR a2,a1,#&800000 + ORR a2,a2,#&80 +|L008b98.J112.loop_y| + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&15c] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&15c] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&3c00000 + ORR a2,a2,#3 + B |L008c08.J113.loop_y| +|L008bcc.J74.loop_y| + LDR a1,[v1,#&15c] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&15c] + BL rr + LDR a2,[sp,#0] + ORR a2,a2,a1,LSL #16 + STR a2,[sp,#0] + LDR a1,[v1,#&1d8] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1 + ORR a2,a1,#&800000 + ORR a2,a2,#&100 +|L008c08.J113.loop_y| + MOV a1,v1 + BL do_ins +|L008c10.J72.loop_y| + LDR a1,[sp,#0] + CMP a1,#0 + BNE |L008c78.J82.loop_y| + LDR a1,[v1,#&1d8] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&1d4] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + ORR a1,a1,v6 + ORR a2,a1,#&2800000 + MOV a1,v1 + BL do_ins + LDR a1,[sp,#4] + ORR a2,a1,#&9000000 + ORR a2,a2,#&2d0000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1d8] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&8900000 + MOV a1,v1 + BL do_ins +|L008c78.J82.loop_y| + MOV a2,v1 + MOV a1,v2 + BL loop_x + BEQ |L008c9c.J83.loop_y| + LDR a1,[v1,#&1d4] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a1,a1,v5 + B |L008cbc.J114.loop_y| +|L008c9c.J83.loop_y| + LDR a1,[sp,#4] + ORR a2,a1,#&8000000 + ORR a2,a2,#&bd0000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1d4] + BL rr + ORR a1,v5,a1,LSL #16 +|L008cbc.J114.loop_y| + ORR a2,a1,#&8900000 + MOV a1,v1 + BL do_ins + MOV a2,v1 + MOV a1,v2 + BL simple_y_scale + ADD v3,v1,#&198 + TEQ a1,#0 + BEQ |L008e40.J86.loop_y| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BEQ |L008d60.J88.loop_y| + LDR a1,[v2,#&110] + TEQ a1,#0 + LDR a1,[v1,#&15c] + BL rr + MOV a2,a1,LSL #12 + SUB sp,sp,#4 + BEQ |L008d2c.J90.loop_y| + STR a2,[sp,#0] + LDR a1,[v1,#&15c] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&2800000 + ORR a2,a2,#1 + B |L008d58.J115.loop_y| +|L008d2c.J90.loop_y| + STR a2,[sp,#0] + LDR a1,[v1,#&15c] + BL rr + LDR a2,[sp,#0] + ORR a2,a2,a1,LSL #16 + STR a2,[sp,#0] + LDR a1,[v1,#&1b8] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1 + ORR a2,a1,#&400000 +|L008d58.J115.loop_y| + MOV a1,v1 + BL do_ins +|L008d60.J88.loop_y| + LDR a4,[v2,#0] + STMDB sp!,{a4} + MOV a4,v3 + MOV a1,v1 + MOV a3,#0 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v1 + MOV a1,v2 + MOV a3,#1 + BL odither_inc + MOV a2,v1 + MOV a1,v2 + MOV a3,#0 + BL odither_inc + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L008dbc.J94.loop_y| + LDR a1,[v2,#&f4]! + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L008dec.J93.loop_y| +|L008dbc.J94.loop_y| + LDR a1,[v1,#&168] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&168] + BL rr + ORR v2,v2,a1,LSL #16 + LDR a1,[v1,#&1bc] + BL rr + ORR a1,v2,a1 + ORR a2,a1,#&400000 + MOV a1,v1 + BL do_ins +|L008dec.J93.loop_y| + LDR a1,[v1,#&1d4] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a2,a1,#&8800000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&1b0] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1b0] + BL rr + ORR a1,v2,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + MOV a1,v1 + MOV a2,#&ca000000 + LDR a3,[sp,#8] + BL do_branch + B |L0090d8.J97.loop_y| +|L008e40.J86.loop_y| + LDR a1,[v1,#&1b0] + BL rr + MOV v5,a1,LSL #12 + LDR a1,[v1,#&1b0] + BL rr + ORR a1,v5,a1,LSL #16 + ORR a2,a1,#&2500000 + ORR a2,a2,#1 + MOV a1,v1 + BL do_ins + ADD a3,v1,#&60 + MOV v5,a3 + MOV a1,v1 + MOV a2,#&da000000 + BL do_branch + LDR a4,[v2,#0] + STMDB sp!,{a4} + MOV a4,v3 + MOV a1,v1 + MOV a3,#0 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a2,v1 + MOV a1,v2 + MOV a3,#1 + BL odither_inc + MOV a2,v1 + MOV a1,v2 + MOV a3,#0 + BL odither_inc + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L008f78.J98.loop_y| + LDR a1,[v1,#&158] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&1d0] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&4100000 + ADD a3,v2,#&38 + SUB a1,a3,v2 + ORR a1,a1,#&1800000 + ADD a2,a2,a1 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&158] + BL rr + MOV v3,a1 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&1500000 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&15c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&c0000000 + ORR a2,a2,#&32800000 + ORR a2,a2,#&20 + MOV a1,v1 + BL do_ins + LDR a1,[v1,#&15c] + BL rr + MOV v3,a1,LSL #12 + LDR a1,[v1,#&15c] + BL rr + ORR a1,v3,a1,LSL #16 + ORR a2,a1,#&2400000 + ORR a2,a2,#8 + MOV a1,v1 + BL do_ins +|L008f78.J98.loop_y| + MOV a1,v1 + LDR a2,[sp,#&c] + BL define_label + LDR a4,[v2,#&10] + STMDB sp!,{a4} + ADD a4,v1,#&1b4 + MOV v3,a4 + MOV a1,v1 + MOV a3,#1 + MOV a2,#0 + BL arbitrary_add + ADD sp,sp,#4 + MOV a1,v1 + MOV a2,#&5a000000 + LDR a3,[sp,#8] + BL do_branch + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BEQ |L009038.J100.loop_y| + LDR a1,[v2,#&110] + TEQ a1,#0 + LDR a1,[v1,#&15c] + BL rr + MOV a2,a1,LSL #12 + SUB sp,sp,#4 + BEQ |L009004.J102.loop_y| + STR a2,[sp,#0] + LDR a1,[v1,#&15c] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1,LSL #16 + ORR a2,a1,#&2800000 + ORR a2,a2,#1 + B |L009030.J116.loop_y| +|L009004.J102.loop_y| + STR a2,[sp,#0] + LDR a1,[v1,#&15c] + BL rr + LDR a2,[sp,#0] + ORR a2,a2,a1,LSL #16 + STR a2,[sp,#0] + LDR a1,[v1,#&1b8] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1 + ORR a2,a1,#&400000 +|L009030.J116.loop_y| + MOV a1,v1 + BL do_ins +|L009038.J100.loop_y| + LDR a1,[v1,#&1f0] + TEQ a1,#0 + BNE |L009054.J106.loop_y| + LDR a1,[v2,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + BNE |L009094.J105.loop_y| +|L009054.J106.loop_y| + LDR a1,[v1,#&168] + BL rr + MOV a2,a1,LSL #12 + STR a2,[sp,#-4]! + LDR a1,[v1,#&168] + BL rr + LDR a2,[sp,#0] + ORR a2,a2,a1,LSL #16 + STR a2,[sp,#0] + LDR a1,[v1,#&1bc] + BL rr + LDR a2,[sp],#4 + ORR a1,a2,a1 + ORR a2,a1,#&400000 + MOV a1,v1 + BL do_ins +|L009094.J105.loop_y| + ADD v2,v2,#&c + LDMIB v2!,{a1,a2} + ADD a4,a1,a2 + STMDB sp!,{a4} + MOV a4,v3 + MOV a1,v1 + MOV a3,#0 + MOV a2,#1 + BL arbitrary_add + ADD sp,sp,#4 + MOV a1,v1 + MOV a2,#&a000000 + LDR a3,[sp,#&c] + BL do_branch + MOV a2,v5 + MOV a1,v1 + BL define_label +|L0090d8.J97.loop_y| + LDR a1,[v1,#&1d4] + BL rr + MOV v2,a1,LSL #12 + LDR a1,[v1,#&1d4] + BL rr + ORR a1,v2,a1,LSL #16 + ADD a2,v4,v6 + ORR a1,a1,a2 + ORR a2,a1,#&2800000 + MOV a1,v1 + BL do_ins + MOV a1,v1 + MVN a2,#&2a000 + ADD a2,a2,#&8c00000 + BL do_ins + LDR a1,[v1,#&1d8] + BL rr + MOV v2,a1 + LDR a1,[v1,#&1dc] + BL rr + ORR a1,v2,a1,LSL #12 + ORR a2,a1,#&1a00000 + MOV a1,v1 + BL do_ins + LDMDB fp,{v1-v6,fp,sp,pc}^ + +find_or_compile_code + MOV ip,sp + STMDB sp!,{v1-v5,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + MOV v3,a3 + LDR a1,[a1,#&74] + LDR a2,[a2,#&210] + ADD a3,a1,a2,LSL #3 + LDR a2,[v2,#&1e8] + ADD v4,a3,a2,LSL #6 + LDR a2,[v2,#&1ec] + TEQ a2,#0 + ORRNE v4,v4,#&200 + LDR a2,[v2,#&1f0] + TEQ a2,#0 + ORRNE v4,v4,#&400 + LDR a2,[v1,#&f8] + TEQ a2,#0 + ORRNE v4,v4,#&800 + LDR a2,[v1,#&b4] + TEQ a2,#0 + ORRNE v4,v4,#&1000 + LDR a2,[v1,#&104] + LDR a3,[v1,#&100] + TEQ a2,a3 + ORRNE v4,v4,#&2000 + LDR a2,[v1,#&78] + TEQ a1,a2 + ORRNE v4,v4,#&4000 + LDR a1,[v1,#&f4] + AND a1,a1,#&ff + TEQ a1,#&32 + ORREQ v4,v4,#&8000 + LDR a2,[v1,#&110] + CMP a2,#0 + BEQ |L0091e4.J20.find_or_compile_code| + ORR v4,v4,#&10000 + BEQ |L0091e4.J20.find_or_compile_code| + LDR a1,[v3,#&1c] + TEQ a1,#1 + ORREQ v4,v4,#&20000 +|L0091e4.J20.find_or_compile_code| + LDR a1,[v1,#&10c] + TEQ a1,#0 + BEQ |L00920c.J23.find_or_compile_code| + ORR v4,v4,#&40000 + LDR a3,[v2,#&228] + TEQ a3,#0 + ORRNE v4,v4,#&80000 + LDR a1,[a1,#&10] + TEQ a1,#3 + ORREQ v4,v4,#&100000 +|L00920c.J23.find_or_compile_code| + TEQ a2,#0 + LDRNE a1,[v1,#&138] + ANDNE a1,a1,#1 + TEQNE a1,#0 + ORRNE v4,v4,#&200000 + ADD a1,v2,#&22c + ADD a2,v2,#&2ec + ADD a2,a2,#&2000 + CMP a2,a1 + BLS |L009290.J33.find_or_compile_code| +|L009234.J32.find_or_compile_code| + LDR a3,[a1,#0] + TEQ a3,v4 + LDREQ a3,[a1,#4] + LDREQ a4,[v1,#&44] + TEQEQ a3,a4 + LDREQ a3,[a1,#8] + LDREQ a4,[v1,#&40] + TEQEQ a3,a4 + LDREQ a4,[a1,#&c] + LDREQ a3,[v1,#&14] + TEQEQ a4,a3 + LDREQ a3,[a1,#&10] + LDREQ a4,[v1,#&10] + TEQEQ a3,a4 + LDREQ a4,[a1,#&14] + LDREQ a3,[v1,#0] + TEQEQ a4,a3 + ADDEQ a1,a1,#&18 + LDMEQDB fp,{v1-v5,fp,sp,pc}^ + ADD a1,a1,#&18 + ADD a1,a1,#&400 + CMP a2,a1 + BHI |L009234.J32.find_or_compile_code| +|L009290.J33.find_or_compile_code| + LDR a1,[v2,#8] + ADD ip,a1,a1,LSL #1 + ADD a1,ip,a1,LSL #7 + ADD a1,v2,a1,LSL #3 + ADD v5,a1,#&22c + MVN a1,#0 + STR a1,[v5,#0] + LDR a1,[v1,#&44] + STR a1,[v5,#4] + LDR a1,[v1,#&40] + STR a1,[v5,#8] + LDR a1,[v1,#&14] + STR a1,[v5,#&c] + LDR a1,[v1,#&10] + STR a1,[v5,#&10] + LDR a1,[v1,#0] + MOV a2,v2 + STR a1,[v5,#&14] + MOV a1,v1 + BL compile_buffer_init + MOV a3,v3 + MOV a2,v2 + MOV a1,v1 + BL loop_y + MOV a1,v2 + BL compile_buffer_done + STR v4,[v5,#0] + LDR a1,[v2,#&c]! + LDMDB fp,{v1-v5,fp,sp,pc}^ + + IMPORT create_dynamic_area +putscaled_compiler + MOV ip,sp + STMDB sp!,{v1-v6,fp,ip,lr,pc} + SUB fp,ip,#4 + MOV v1,a1 + MOV v2,a2 + MOV v3,a4 + SUB sp,sp,#4 + ADD a1,a2,#&2f0 + ADD a1,a1,#&2000 + CMP a1,a3 + MOVHI a2,#4 + MOVHI a1,#&5a + ADDHI a1,a1,#&f00 + BLHI exit_c + MOV a1,v2 + BL check_workspace + AND a1,v3,#7 + STR a1,[v2,#&1e8] + TST v3,#8 + MOV a3,#0 + MOVEQ a1,a3 + MOVNE a1,#1 + STR a1,[v2,#&1ec] + MOV a3,#0 + LDR a2,[v1,#&80] + TEQ a3,a2,ASR #27 + MOVEQ a2,#0 + MOVNE a2,#1 + AND a1,a2,a1 + STR a1,[v2,#&1f0] + LDR a1,[v1,#&110] + TEQ a1,#0 + BEQ |L009780.J12.putscaled_compiler| + LDR v4,[v1,#&120] + LDR a1,[v4,#&20] + ADD a1,v4,a1 + MOV a2,#0 + STR a2,[sp,#-8]! + LDR a2,[a1,#0] + CMN a2,#1 + LDREQ v5,[a1,#4] + LDREQ a1,[a1,#8] + BEQ |L0093c8.J123.putscaled_compiler| + LDR a1,[v4,#&20] + ADD a2,v4,a1 + ADD v5,a2,#4 + LDR a2,[v4,#0] + SUB a1,a2,a1 + SUB a1,a1,#4 +|L0093c8.J123.putscaled_compiler| + MOV a4,#0 + STR a1,[sp,#4] + MOV a3,sp + MOV a2,#0 + STMDB sp!,{a2-a4} + MOV a1,v5 + MOV a3,#0 + BL find_image_dims + ADD sp,sp,#&c + TEQ a1,#0 + MOVNE a2,#2 + MOVNE a1,#&87 + ADDNE a1,a1,#&f00 + BLNE exit_c + LDR a1,[v1,#&124] + STR a1,[sp,#8] + TEQ a1,#0 + SUB sp,sp,#4 + BNE |L009490.J19.putscaled_compiler| + LDR a1,[sp,#4] + BL create_dynamic_area + MOVS v3,a1 + MOVEQ a2,#1 + MOVEQ a1,#&95 + ADDEQ a1,a1,#&f00 + BLEQ exit_c + MOV a4,sp + STMDB sp!,{a4} + ADD a4,sp,#&10 + MOV a3,v3 + MOV a2,#&c0000001 + MOV a1,#&5c + BL _swix + ADD sp,sp,#4 + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&9b + ADDNE a1,a1,#&f00 + BLNE exit_c + LDR a1,[sp,#&c] + MVN a2,#0 + ADD v1,v1,#&124 + STMIA v1,{a1,v3} + SUB v1,v1,#&124 + LDR a1,[sp,#&c] + STR a2,[a1,#0] + LDR a1,[sp,#&c] + LDR a2,[sp,#0] + STR a2,[a1,#&10]! + B |L009550.J32.putscaled_compiler| +|L009490.J19.putscaled_compiler| + MOV a4,sp + MOV a2,#&40000001 + MOV a1,#&5c + LDR a3,[v1,#&128] + BL _swix + MOV a3,a1 + LDR a1,[sp,#0] + CMP a1,#0 + BLE |L0094d4.J26.putscaled_compiler| + LDR a2,[sp,#&c] + LDR a4,[a2,#&10] + TEQ a1,a4 + BEQ |L0094d4.J26.putscaled_compiler| + MVN a4,#0 + STR a4,[a2,#0] + LDR a2,[sp,#&c] + STR a1,[a2,#&10]! +|L0094d4.J26.putscaled_compiler| + TEQ a3,#0 + MOVNE a2,#4 + MOVNE a1,#&b9 + ADDNE a1,a1,#&f00 + BLNE exit_c + LDR a1,[sp,#4] + LDR a2,[sp,#0] + CMP a2,a1 + BGE |L009550.J32.putscaled_compiler| + SUB sp,sp,#4 + MOV a4,sp + STMDB sp!,{a4} + SUB a4,a1,a2 + MOV a2,#&40000003 + MOV a1,#&2a + LDR a3,[v1,#&128] + BL _swix + ADD sp,sp,#4 + TEQ a1,#0 + MOVNE a2,#1 + MOVNE a1,#&c1 + ADDNE a1,a1,#&f00 + BLNE exit_c + MVN a2,#0 + LDR a1,[sp,#&10] + STR a2,[a1,#0] + LDR a2,[sp],#4 + LDR a1,[sp,#0] + ADD a1,a1,a2 + LDR a2,[sp,#&c] + STR a1,[a2,#&10]! +|L009550.J32.putscaled_compiler| + ADD sp,sp,#4 + LDR a1,[v1,#&74] + TEQ a1,#5 + MOVNE a2,#4 + MOVNE a1,#&3dc + ADDNE a1,a1,#&c00 + BLNE exit_c + LDR a1,[v2,#&1ec] + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&dd + ADDNE a1,a1,#&f00 + BLNE exit_c + MOV a2,#0 + LDR a1,[v1,#&80] + TEQ a2,a1,ASR #24 + MOVEQ a1,#0 + STREQ a1,[v1,#&b4] + STREQ a1,[v1,#&f8] + SUB sp,sp,#4 + LDR a1,[v1,#&40] + LDR a2,[v1,#&2c] + MUL a2,a1,a2 + LDR a3,[v1,#&44] + SUB a1,a3,a1 + BL |__rt_sdiv| + LDR a2,[v1,#&114] + ADD a1,a1,a2 + ADD v6,a1,#2 + MOV v3,#0 + STR v3,[sp,#0] + LDR a1,[v1,#&104] + CMP a1,#4 + BGT |L0095ec.J42.putscaled_compiler| + MOV v3,#1 + LDR a2,[v1,#&134] + TST a2,#2 + MOVEQ a2,#0 + STREQ a2,[v1,#&b4] +|L0095ec.J42.putscaled_compiler| + CMP v6,#0 + LDRLT a2,[v4,#&10]! + SUBLT v6,a2,#1 + ADD a3,v1,#&40 + LDMIA a3,{a2,a3} + SUB a3,a3,a2 + ADD a3,a3,a3,LSL #1 + CMP a2,a3,LSL #1 + BLT |L009628.J48.putscaled_compiler| + ADD a3,v1,#&10 + LDMIA a3,{a2,a3} + SUB a3,a3,a2 + ADD a3,a3,a3,LSL #1 + CMP a2,a3,LSL #1 + ORRGE v3,v3,#2 +|L009628.J48.putscaled_compiler| + LDR a2,[v1,#&134] + TST a2,#2 + BNE |L009704.J51.putscaled_compiler| + LDR a2,[v1,#&138] + TST a2,#1 + BEQ |L009704.J51.putscaled_compiler| + SUB sp,sp,#4 + TEQ a1,#8 + BNE |L0096f8.J54.putscaled_compiler| + MOV a4,sp + MOV a3,#0 + MOV a2,#&400 + MOV a1,#0 + STMDB sp!,{a1-a4} + MVN a4,#0 + MVN a3,#0 + MOV a2,#&1000000f + ADD a2,a2,#&10 + LDR a1,[pc, #L0096c4-.-8] + BL _swix + ADD sp,sp,#&10 + MOV a4,#0 + MOV a3,#&400 + ADD a2,v1,#&13c + STMDB sp!,{a2-a4} + MVN a4,#0 + MVN a3,#0 + MOV a2,#&1f + LDR a1,[pc, #L0096c4-.-8] + BL _swix + ADD sp,sp,#&c + LDR a1,[v1,#&138] + TST a1,#2 + BEQ |L0096c8.J56.putscaled_compiler| + ORR v3,v3,#8 + MVN a1,#0 + LDR a2,[sp,#&10] + STR a1,[a2,#0] + B |L009700.J61.putscaled_compiler| +L0096c4 + DCD &0004075c +|L0096c8.J56.putscaled_compiler| + ADD a4,sp,#4 + STMDB sp!,{a4} + MOV a4,#0 + MVN a3,#0 + MOV a2,#&20000003 + MOV a1,#&35 + BL _swix + ADD sp,sp,#4 + LDR a1,[sp,#4] + TST a1,#&80 + ORREQ v3,v3,#&20 + B |L009700.J61.putscaled_compiler| +|L0096f8.J54.putscaled_compiler| + TEQ a1,#&10 + ORREQ v3,v3,#&10 +|L009700.J61.putscaled_compiler| + ADD sp,sp,#4 +|L009704.J51.putscaled_compiler| + MOV a4,v3 + MVN a3,#0 + MVN a2,#0 + MOV a1,v6 + STMDB sp!,{a1-a4} + LDR a4,[v1,#&114] + MOV a2,v5 + LDR a1,[sp,#&1c] + LDR a3,[sp,#&18] + BL jpeg_scan_file + ADD sp,sp,#&10 + TEQ a1,#0 + MOVNE a2,#2 + MOVNE a1,#&3a + ADDNE a1,a1,#&1000 + BLNE exit_c + LDR a1,[sp,#&c] + LDR a1,[a1,#4] + TST a1,#&28 + BEQ |L00976c.J66.putscaled_compiler| + MOV a1,#3 + STR a1,[v1,#&78] + STR a1,[v1,#&74] + MOV a1,#0 + STR a1,[v1,#&b4] + B |L00977c.J68.putscaled_compiler| +|L00976c.J66.putscaled_compiler| + TST a1,#&10 + MOVNE a1,#4 + STRNE a1,[v1,#&78] + STRNE a1,[v1,#&74] +|L00977c.J68.putscaled_compiler| + ADD sp,sp,#&c +|L009780.J12.putscaled_compiler| + MOV v3,#0 + STR v3,[v2,#&1f4] + LDR v4,[v1,#&10c] + TEQ v4,#0 + BEQ |L00982c.J71.putscaled_compiler| + LDR a1,[v4,#4] + TEQ a1,#0 + BNE |L0097bc.J74.putscaled_compiler| + LDR a1,[v4,#8] + CMN a1,#&100 + BNE |L0097bc.J74.putscaled_compiler| + LDR a1,[v4,#&c] + TEQ a1,#0 + MOVEQ a1,#1 + BEQ |L0097c0.J73.putscaled_compiler| +|L0097bc.J74.putscaled_compiler| + MOV a1,v3 +|L0097c0.J73.putscaled_compiler| + STR a1,[v2,#&228] + LDR a1,[v1,#&104] + TEQ a1,#&20 + MOVNE a2,#4 + MOVNE a1,#&98 + ADDNE a1,a1,#&1000 + BLNE exit_c + LDR a1,[v1,#&74] + CMP a1,#4 + MOVLT a2,#4 + MOVLT a1,#&99 + ADDLT a1,a1,#&1000 + BLLT exit_c + LDR a1,[v1,#&b4] + TEQ a1,#0 + LDREQ a1,[v1,#&f8] + TEQEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&9a + ADDNE a1,a1,#&1000 + BLNE exit_c + LDR a1,[v4,#0] + TEQ a1,#0 + MOVNE a2,#4 + MOVNE a1,#&9b + ADDNE a1,a1,#&1000 + BLNE exit_c +|L00982c.J71.putscaled_compiler| + MOV a1,#0 + LDR a2,[v1,#&104] + CMP a2,#1 + BLE |L00984c.J89.putscaled_compiler| +|L00983c.J88.putscaled_compiler| + MOV a2,a2,ASR #1 + ADD a1,a1,#1 + CMP a2,#1 + BGT |L00983c.J88.putscaled_compiler| +|L00984c.J89.putscaled_compiler| + STR a1,[v2,#&210] + STR a1,[v2,#&214] + LDR a2,[v1,#&104] + LDR a3,[v1,#&100] + TEQ a2,a3 + ADDNE a1,a1,#1 + STRNE a1,[v2,#&214] + LDR a1,[v1,#&f8] + TEQ a1,#0 + STRNE v3,[v1,#&b4] + LDR a1,[v1,#&44] + CMP a1,#0 + MOVLE a2,#4 + MOVLE a1,#&ac + ADDLE a1,a1,#&1000 + BLLE exit_c + LDR a1,[v1,#&40] + CMP a1,#0 + MOVLE a2,#4 + MOVLE a1,#&ad + ADDLE a1,a1,#&1000 + BLLE exit_c + LDR a1,[v1,#&10] + CMP a1,#0 + MOVLE a2,#4 + MOVLE a1,#&ae + ADDLE a1,a1,#&1000 + BLLE exit_c + LDR a1,[v1,#&10] + CMP a1,#0 + MOVLE a2,#4 + MOVLE a1,#&af + ADDLE a1,a1,#&1000 + BLLE exit_c + B |L0098fc.J105.putscaled_compiler| +|L0098d8.J104.putscaled_compiler| + MOV a4,a4,ASR #1 + MOV a2,a2,ASR #1 + ADD v1,v1,#&40 + STMIA v1,{a2,a4} + SUB v1,v1,#&40 + MOV a2,a3,ASR #1 + MOV a1,a1,ASR #1 + STR a1,[v1,#&68] + STR a2,[v1,#&30] +|L0098fc.J105.putscaled_compiler| + LDR a4,[v1,#&44] + TST a4,#1 + LDREQ a2,[v1,#&40] + ANDEQ a1,a2,#1 + TEQEQ a1,#0 + LDREQ a3,[v1,#&30] + ANDEQ a1,a3,#1 + TEQEQ a1,#0 + LDREQ a1,[v1,#&68] + ANDEQ ip,a1,#1 + TEQEQ ip,#0 + BEQ |L0098d8.J104.putscaled_compiler| + B |L00994c.J112.putscaled_compiler| +|L009930.J111.putscaled_compiler| + MOV a3,a3,ASR #1 + MOV a2,a2,ASR #1 + MOV a1,a1,ASR #1 + STR a1,[v1,#&1c] + ADD v1,v1,#&10 + STMIA v1,{a2,a3} + SUB v1,v1,#&10 +|L00994c.J112.putscaled_compiler| + LDR a3,[v1,#&14] + TST a3,#1 + LDREQ a2,[v1,#&10] + ANDEQ a1,a2,#1 + TEQEQ a1,#0 + LDREQ a1,[v1,#&1c] + ANDEQ a4,a1,#1 + TEQEQ a4,#0 + BEQ |L009930.J111.putscaled_compiler| + LDR a1,[v1,#&104] + LDR v3,[v1,#&100] + LDR v4,[v1,#&78] + STR a1,[v1,#&100] + LDR a1,[v1,#&74] + STR a1,[v1,#&78] + MOV a2,v2 + MOV a1,v1 + LDR a3,[sp,#0] + BL find_or_compile_code + STR v4,[v1,#&78]! + STR v3,[v1,#&88] + LDMDB fp,{v1-v6,fp,sp,pc}^ + + AREA |C$$data|,DATA + +|x$dataseg| + + END diff --git a/s/yuvtabs b/s/yuvtabs new file mode 100644 index 0000000000000000000000000000000000000000..5aeaeb5215dbd407021ff4413ed1257bf6cedd02 --- /dev/null +++ b/s/yuvtabs @@ -0,0 +1,633 @@ +; Copyright 1996 Acorn Computers Ltd +; +; Licensed under the Apache License, Version 2.0 (the "License"); +; you may not use this file except in compliance with the License. +; You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. +; +; YUV<->pixel tables, generated Mar 17 1995 +pixel_to_yuv_table ; word i is the closest yuv value to VIDC1 8bpp pixel i + DCB 128, 128, 0, 0, 128, 128, 17, 0, 128, 128, 34, 0, 128, 128, 50, 0 + DCB 162, 116, 20, 0, 162, 116, 37, 0, 162, 116, 54, 0, 162, 116, 71, 0 + DCB 122, 162, 7, 0, 122, 162, 24, 0, 122, 162, 41, 0, 122, 162, 58, 0 + DCB 156, 150, 28, 0, 156, 150, 45, 0, 156, 150, 62, 0, 156, 150, 79, 0 + DCB 196, 105, 40, 0, 196, 105, 57, 0, 196, 105, 74, 0, 196, 105, 91, 0 + DCB 230, 93, 60, 0, 230, 93, 77, 0, 230, 93, 94, 0, 230, 93, 111, 0 + DCB 190, 139, 48, 0, 190, 139, 65, 0, 190, 139, 82, 0, 190, 139, 99, 0 + DCB 224, 127, 68, 0, 224, 127, 85, 0, 224, 127, 102, 0, 224, 127, 119, 0 + DCB 99, 105, 39, 0, 99, 105, 56, 0, 99, 105, 73, 0, 99, 105, 90, 0 + DCB 133, 94, 60, 0, 133, 94, 77, 0, 133, 94, 94, 0, 133, 94, 111, 0 + DCB 94, 139, 47, 0, 94, 139, 64, 0, 94, 139, 81, 0, 94, 139, 98, 0 + DCB 128, 128, 68, 0, 128, 128, 85, 0, 128, 128, 101, 0, 128, 128, 119, 0 + DCB 167, 82, 80, 0, 167, 82, 97, 0, 167, 82, 114, 0, 167, 82, 131, 0 + DCB 201, 71, 100, 0, 201, 71, 117, 0, 201, 71, 134, 0, 201, 71, 151, 0 + DCB 162, 116, 88, 0, 162, 116, 105, 0, 162, 116, 122, 0, 162, 116, 139, 0 + DCB 196, 105, 108, 0, 196, 105, 125, 0, 196, 105, 142, 0, 196, 105, 159, 0 + DCB 71, 82, 79, 0, 71, 82, 96, 0, 71, 82, 113, 0, 71, 82, 130, 0 + DCB 105, 71, 100, 0, 105, 71, 117, 0, 105, 71, 134, 0, 105, 71, 151, 0 + DCB 65, 116, 87, 0, 65, 116, 104, 0, 65, 116, 121, 0, 65, 116, 138, 0 + DCB 99, 105, 107, 0, 99, 105, 124, 0, 99, 105, 141, 0, 99, 105, 158, 0 + DCB 139, 60, 120, 0, 139, 60, 137, 0, 139, 60, 154, 0, 139, 60, 171, 0 + DCB 173, 48, 140, 0, 173, 48, 157, 0, 173, 48, 174, 0, 173, 48, 191, 0 + DCB 133, 94, 128, 0, 133, 94, 145, 0, 133, 94, 162, 0, 133, 94, 179, 0 + DCB 167, 82, 148, 0, 167, 82, 165, 0, 167, 82, 182, 0, 167, 82, 199, 0 + DCB 42, 60, 119, 0, 42, 60, 136, 0, 42, 60, 153, 0, 42, 60, 170, 0 + DCB 76, 48, 140, 0, 76, 48, 157, 0, 76, 48, 174, 0, 76, 48, 191, 0 + DCB 37, 94, 127, 0, 37, 94, 144, 0, 37, 94, 161, 0, 37, 94, 178, 0 + DCB 71, 82, 147, 0, 71, 82, 164, 0, 71, 82, 181, 0, 71, 82, 198, 0 + DCB 110, 37, 160, 0, 110, 37, 177, 0, 110, 37, 194, 0, 110, 37, 211, 0 + DCB 144, 26, 180, 0, 144, 26, 197, 0, 144, 26, 214, 0, 144, 26, 231, 0 + DCB 105, 71, 168, 0, 105, 71, 185, 0, 105, 71, 202, 0, 105, 71, 219, 0 + DCB 139, 60, 188, 0, 139, 60, 205, 0, 139, 60, 222, 0, 139, 60, 239, 0 + DCB 116, 196, 15, 0, 116, 196, 32, 0, 116, 196, 49, 0, 116, 196, 66, 0 + DCB 150, 184, 35, 0, 150, 184, 52, 0, 150, 184, 69, 0, 150, 184, 86, 0 + DCB 111, 230, 23, 0, 111, 230, 40, 0, 111, 230, 57, 0, 111, 230, 74, 0 + DCB 145, 218, 43, 0, 145, 218, 60, 0, 145, 218, 77, 0, 145, 218, 94, 0 + DCB 184, 173, 56, 0, 184, 173, 73, 0, 184, 173, 90, 0, 184, 173, 107, 0 + DCB 218, 161, 76, 0, 218, 161, 93, 0, 218, 161, 110, 0, 218, 161, 127, 0 + DCB 179, 207, 63, 0, 179, 207, 80, 0, 179, 207, 97, 0, 179, 207, 114, 0 + DCB 213, 195, 84, 0, 213, 195, 101, 0, 213, 195, 118, 0, 213, 195, 135, 0 + DCB 88, 173, 55, 0, 88, 173, 72, 0, 88, 173, 89, 0, 88, 173, 106, 0 + DCB 122, 162, 75, 0, 122, 162, 92, 0, 122, 162, 109, 0, 122, 162, 126, 0 + DCB 82, 207, 63, 0, 82, 207, 80, 0, 82, 207, 97, 0, 82, 207, 114, 0 + DCB 116, 196, 83, 0, 116, 196, 100, 0, 116, 196, 117, 0, 116, 196, 134, 0 + DCB 156, 150, 96, 0, 156, 150, 113, 0, 156, 150, 130, 0, 156, 150, 147, 0 + DCB 190, 139, 116, 0, 190, 139, 133, 0, 190, 139, 150, 0, 190, 139, 167, 0 + DCB 150, 184, 103, 0, 150, 184, 120, 0, 150, 184, 137, 0, 150, 184, 154, 0 + DCB 184, 173, 124, 0, 184, 173, 141, 0, 184, 173, 158, 0, 184, 173, 175, 0 + DCB 60, 150, 95, 0, 60, 150, 112, 0, 60, 150, 129, 0, 60, 150, 146, 0 + DCB 94, 139, 115, 0, 94, 139, 132, 0, 94, 139, 149, 0, 94, 139, 166, 0 + DCB 54, 184, 103, 0, 54, 184, 120, 0, 54, 184, 137, 0, 54, 184, 154, 0 + DCB 88, 173, 123, 0, 88, 173, 140, 0, 88, 173, 157, 0, 88, 173, 174, 0 + DCB 128, 128, 136, 0, 128, 128, 153, 0, 128, 128, 170, 0, 128, 128, 187, 0 + DCB 162, 116, 156, 0, 162, 116, 173, 0, 162, 116, 190, 0, 162, 116, 207, 0 + DCB 122, 162, 143, 0, 122, 162, 160, 0, 122, 162, 177, 0, 122, 162, 194, 0 + DCB 156, 150, 164, 0, 156, 150, 181, 0, 156, 150, 198, 0, 156, 150, 215, 0 + DCB 31, 128, 135, 0, 31, 128, 152, 0, 31, 128, 169, 0, 31, 128, 186, 0 + DCB 65, 116, 155, 0, 65, 116, 172, 0, 65, 116, 189, 0, 65, 116, 206, 0 + DCB 26, 162, 143, 0, 26, 162, 160, 0, 26, 162, 177, 0, 26, 162, 194, 0 + DCB 60, 150, 163, 0, 60, 150, 180, 0, 60, 150, 197, 0, 60, 150, 214, 0 + DCB 99, 105, 175, 0, 99, 105, 192, 0, 99, 105, 209, 0, 99, 105, 226, 0 + DCB 133, 94, 196, 0, 133, 94, 213, 0, 133, 94, 230, 0, 133, 94, 247, 0 + DCB 94, 139, 183, 0, 94, 139, 200, 0, 94, 139, 217, 0, 94, 139, 234, 0 + DCB 128, 128, 203, 0, 128, 128, 221, 0, 128, 128, 238, 0, 128, 128, 255, 0 + +yuv_to_pixel_table +yuvtab_ybits * 5 +yuvtab_ubits * 4 +yuvtab_vbits * 4 +; A byte table indexed by yuv value, returns the closest 8bpp pixel + ; y=0 + DCB 64, 64, 64, 33, 32, 32, 32, 32, 1, 1, 4, 4, 16, 16, 16, 20 + DCB 64, 64, 64, 32, 32, 32, 32, 32, 1, 1, 4, 4, 16, 16, 16, 20 + DCB 64, 64, 33, 32, 32, 32, 32, 32, 1, 1, 4, 4, 16, 16, 16, 20 + DCB 64, 64, 32, 32, 32, 32, 32, 1, 1, 1, 4, 4, 16, 16, 16, 20 + DCB 64, 33, 32, 32, 32, 32, 32, 1, 0, 1, 4, 4, 16, 16, 16, 20 + DCB 64, 33, 32, 32, 32, 32, 1, 0, 0, 1, 4, 4, 16, 16, 16, 20 + DCB 33, 32, 32, 32, 32, 32, 1, 0, 0, 1, 4, 4, 16, 16, 16, 20 + DCB 33, 32, 32, 32, 32, 1, 0, 0, 0, 1, 4, 4, 16, 16, 16, 20 + DCB 33, 32, 32, 32, 1, 1, 1, 0, 0, 1, 4, 5, 5, 16, 17, 20 + DCB 40, 40, 40, 40, 2, 1, 8, 8, 8, 2, 12, 12, 6, 24, 24, 28 + DCB 40, 40, 40, 40, 9, 8, 8, 8, 8, 9, 12, 12, 13, 24, 24, 28 + DCB 41, 160, 10, 9, 9, 9, 9, 9, 9, 9, 132, 13, 13, 144, 25, 26 + DCB 160, 160, 160, 129, 128, 128, 128, 128, 128, 129, 132, 132, 144, 144, 144, 148 + DCB 160, 160, 129, 129, 129, 129, 129, 129, 129, 129, 132, 133, 133, 144, 145, 145 + DCB 168, 168, 136, 136, 136, 136, 136, 136, 136, 140, 140, 140, 152, 152, 152, 156 + DCB 168, 137, 137, 137, 136, 136, 136, 136, 137, 137, 140, 141, 141, 152, 153, 153 + ; y=8 + DCB 64, 64, 64, 64, 33, 32, 32, 32, 32, 2, 4, 5, 16, 16, 17, 20 + DCB 64, 64, 64, 33, 32, 32, 32, 32, 1, 1, 4, 5, 16, 16, 17, 20 + DCB 64, 64, 64, 33, 32, 32, 32, 32, 1, 1, 4, 4, 16, 16, 17, 20 + DCB 64, 64, 33, 32, 32, 32, 32, 32, 1, 4, 4, 4, 16, 16, 17, 20 + DCB 64, 64, 33, 32, 32, 32, 32, 1, 1, 4, 4, 4, 16, 16, 17, 20 + DCB 64, 33, 32, 32, 32, 32, 32, 1, 1, 4, 4, 4, 16, 16, 17, 20 + DCB 64, 33, 32, 32, 32, 32, 1, 0, 1, 4, 4, 4, 16, 16, 17, 20 + DCB 33, 32, 32, 32, 32, 32, 1, 0, 0, 4, 4, 4, 16, 16, 17, 20 + DCB 33, 33, 33, 32, 32, 1, 1, 1, 1, 1, 4, 5, 16, 16, 17, 20 + DCB 40, 40, 40, 40, 40, 8, 8, 8, 8, 12, 12, 12, 24, 24, 24, 28 + DCB 41, 40, 40, 40, 9, 9, 9, 8, 9, 12, 12, 13, 24, 24, 25, 28 + DCB 160, 160, 160, 160, 9, 128, 128, 128, 128, 132, 132, 13, 144, 144, 25, 148 + DCB 160, 160, 160, 129, 129, 128, 128, 128, 128, 132, 132, 133, 144, 144, 145, 148 + DCB 161, 168, 130, 129, 129, 129, 129, 129, 129, 130, 133, 133, 134, 145, 145, 156 + DCB 168, 168, 168, 136, 136, 136, 136, 136, 136, 140, 140, 140, 152, 152, 152, 156 + DCB 168, 137, 137, 137, 137, 137, 137, 137, 137, 137, 141, 141, 141, 153, 153, 156 + ; y=16 + DCB 64, 64, 64, 64, 33, 32, 32, 32, 32, 36, 5, 5, 16, 16, 17, 20 + DCB 64, 64, 64, 64, 33, 32, 32, 32, 32, 36, 5, 5, 16, 16, 17, 20 + DCB 64, 64, 64, 33, 32, 32, 32, 32, 1, 4, 4, 5, 16, 16, 17, 20 + DCB 64, 64, 64, 33, 32, 32, 32, 32, 1, 4, 4, 5, 16, 16, 17, 20 + DCB 64, 64, 33, 32, 32, 32, 32, 32, 1, 4, 4, 5, 16, 16, 17, 20 + DCB 64, 64, 33, 32, 32, 32, 32, 1, 1, 4, 4, 5, 16, 16, 17, 20 + DCB 64, 33, 32, 32, 32, 32, 32, 1, 1, 4, 4, 5, 16, 16, 17, 20 + DCB 64, 33, 32, 32, 32, 32, 32, 1, 1, 4, 4, 5, 16, 16, 17, 20 + DCB 33, 33, 33, 33, 32, 1, 1, 1, 1, 4, 5, 5, 16, 17, 17, 20 + DCB 40, 40, 40, 40, 40, 40, 8, 8, 8, 12, 12, 12, 24, 24, 25, 28 + DCB 41, 41, 40, 40, 9, 9, 9, 9, 9, 12, 13, 13, 24, 25, 25, 28 + DCB 160, 160, 160, 160, 160, 128, 128, 128, 128, 132, 132, 132, 144, 144, 144, 148 + DCB 161, 160, 160, 160, 129, 129, 128, 128, 129, 132, 132, 133, 144, 144, 145, 148 + DCB 168, 168, 168, 130, 129, 136, 136, 136, 129, 140, 140, 133, 152, 152, 146, 156 + DCB 168, 168, 168, 137, 137, 136, 136, 136, 137, 140, 140, 141, 152, 152, 153, 156 + DCB 169, 138, 137, 137, 137, 137, 137, 137, 137, 138, 141, 141, 142, 153, 153, 157 + ; y=24 + DCB 64, 64, 64, 64, 64, 33, 32, 32, 36, 36, 5, 5, 16, 16, 20, 20 + DCB 64, 64, 64, 64, 64, 32, 32, 32, 36, 36, 5, 5, 16, 16, 20, 20 + DCB 64, 64, 64, 64, 33, 32, 32, 32, 2, 36, 5, 5, 16, 16, 20, 20 + DCB 64, 64, 64, 64, 32, 32, 32, 32, 2, 4, 5, 5, 16, 16, 20, 20 + DCB 64, 64, 64, 33, 32, 32, 32, 32, 1, 4, 5, 16, 16, 16, 20, 20 + DCB 64, 64, 64, 32, 32, 32, 32, 32, 1, 4, 4, 16, 16, 16, 20, 20 + DCB 64, 64, 33, 32, 32, 32, 32, 1, 1, 4, 4, 16, 16, 16, 20, 20 + DCB 64, 33, 33, 32, 32, 32, 32, 1, 1, 4, 4, 5, 16, 17, 20, 20 + DCB 34, 33, 33, 33, 40, 40, 2, 1, 2, 12, 5, 5, 24, 17, 18, 28 + DCB 72, 41, 40, 40, 40, 40, 9, 9, 9, 12, 12, 24, 24, 24, 28, 28 + DCB 41, 41, 41, 41, 40, 9, 9, 9, 9, 12, 13, 13, 24, 25, 25, 29 + DCB 160, 160, 160, 160, 160, 129, 128, 128, 132, 132, 132, 144, 144, 144, 148, 148 + DCB 161, 161, 160, 160, 129, 129, 129, 129, 129, 132, 133, 133, 144, 145, 145, 148 + DCB 168, 168, 168, 168, 136, 136, 136, 136, 140, 140, 140, 152, 152, 152, 156, 156 + DCB 168, 168, 168, 137, 137, 137, 136, 136, 137, 140, 141, 141, 152, 153, 156, 156 + DCB 169, 169, 138, 138, 137, 137, 137, 137, 138, 141, 141, 142, 153, 153, 154, 157 + ; y=32 + DCB 65, 64, 64, 64, 64, 64, 33, 33, 36, 36, 36, 6, 16, 17, 20, 20 + DCB 65, 64, 64, 64, 64, 33, 32, 33, 36, 36, 5, 16, 16, 17, 20, 20 + DCB 64, 64, 64, 64, 64, 33, 32, 32, 36, 36, 5, 16, 16, 17, 20, 20 + DCB 64, 64, 64, 64, 33, 32, 32, 32, 36, 36, 5, 16, 16, 17, 20, 20 + DCB 64, 64, 64, 64, 33, 32, 32, 32, 36, 5, 5, 16, 16, 17, 20, 20 + DCB 64, 64, 64, 33, 32, 32, 32, 32, 36, 5, 5, 16, 16, 17, 20, 20 + DCB 64, 64, 64, 33, 32, 32, 32, 32, 2, 4, 5, 16, 16, 17, 20, 20 + DCB 64, 64, 33, 33, 33, 32, 32, 2, 2, 5, 5, 16, 16, 17, 20, 20 + DCB 72, 72, 40, 40, 40, 40, 40, 2, 2, 12, 12, 24, 24, 24, 28, 28 + DCB 72, 41, 41, 40, 40, 40, 40, 9, 9, 12, 13, 24, 24, 25, 28, 28 + DCB 42, 41, 41, 160, 160, 160, 9, 10, 10, 132, 13, 144, 144, 25, 148, 29 + DCB 161, 160, 160, 160, 160, 160, 129, 129, 132, 132, 132, 144, 144, 145, 148, 148 + DCB 161, 161, 161, 160, 160, 129, 129, 129, 129, 133, 133, 134, 145, 145, 148, 149 + DCB 168, 168, 168, 168, 168, 136, 136, 136, 140, 140, 140, 152, 152, 152, 156, 156 + DCB 169, 169, 168, 168, 137, 137, 137, 137, 137, 140, 141, 152, 153, 153, 156, 157 + DCB 169, 169, 138, 138, 138, 137, 137, 137, 138, 141, 141, 142, 153, 154, 154, 157 + ; y=40 + DCB 96, 65, 64, 64, 64, 64, 33, 33, 36, 36, 36, 48, 17, 17, 20, 20 + DCB 65, 64, 64, 64, 64, 64, 33, 33, 36, 36, 36, 48, 17, 17, 20, 20 + DCB 65, 64, 64, 64, 64, 33, 33, 33, 36, 36, 5, 16, 17, 17, 20, 20 + DCB 64, 64, 64, 64, 64, 33, 32, 33, 36, 36, 5, 16, 16, 17, 20, 20 + DCB 64, 64, 64, 64, 33, 32, 32, 33, 36, 36, 5, 16, 16, 17, 20, 20 + DCB 64, 64, 64, 64, 33, 32, 32, 32, 36, 5, 5, 16, 16, 17, 20, 20 + DCB 64, 64, 64, 33, 32, 32, 32, 32, 36, 5, 5, 16, 16, 17, 20, 20 + DCB 64, 64, 33, 33, 33, 33, 32, 2, 2, 5, 5, 16, 17, 17, 20, 21 + DCB 72, 72, 72, 40, 40, 40, 40, 2, 3, 12, 6, 24, 24, 28, 28, 28 + DCB 72, 72, 41, 41, 40, 40, 40, 10, 10, 13, 13, 24, 25, 25, 28, 29 + DCB 192, 42, 160, 160, 160, 160, 160, 10, 10, 132, 14, 144, 144, 26, 148, 148 + DCB 192, 161, 161, 160, 160, 160, 129, 129, 132, 132, 133, 144, 144, 145, 148, 148 + DCB 162, 161, 161, 168, 168, 130, 129, 130, 130, 133, 133, 152, 145, 145, 156, 149 + DCB 169, 168, 168, 168, 168, 168, 137, 137, 140, 140, 141, 152, 152, 153, 156, 156 + DCB 169, 169, 169, 168, 137, 137, 137, 137, 140, 141, 141, 152, 153, 153, 156, 157 + DCB 169, 169, 169, 138, 138, 138, 137, 138, 138, 141, 142, 142, 153, 154, 154, 157 + ; y=48 + DCB 96, 65, 64, 64, 64, 64, 64, 33, 36, 36, 48, 48, 17, 17, 20, 20 + DCB 96, 65, 64, 64, 64, 64, 33, 33, 36, 36, 48, 48, 17, 17, 20, 20 + DCB 65, 64, 64, 64, 64, 64, 33, 33, 36, 36, 48, 48, 17, 20, 20, 20 + DCB 65, 64, 64, 64, 64, 64, 33, 33, 36, 36, 6, 17, 17, 20, 20, 20 + DCB 64, 64, 64, 64, 64, 33, 33, 33, 36, 36, 6, 16, 17, 20, 20, 20 + DCB 64, 64, 64, 64, 64, 33, 33, 33, 36, 36, 5, 16, 17, 20, 20, 20 + DCB 64, 64, 64, 64, 33, 32, 32, 33, 36, 5, 5, 16, 16, 20, 20, 20 + DCB 65, 65, 64, 33, 33, 33, 33, 2, 3, 6, 6, 17, 17, 17, 21, 21 + DCB 72, 72, 72, 41, 40, 40, 40, 3, 3, 13, 13, 24, 24, 28, 28, 28 + DCB 72, 72, 41, 41, 41, 41, 41, 10, 10, 13, 13, 24, 25, 25, 28, 29 + DCB 192, 192, 160, 160, 160, 160, 160, 11, 11, 132, 144, 144, 144, 148, 148, 148 + DCB 192, 161, 161, 161, 160, 160, 160, 130, 133, 133, 133, 144, 145, 148, 148, 149 + DCB 200, 162, 168, 168, 168, 168, 130, 130, 140, 140, 152, 152, 152, 156, 156, 156 + DCB 200, 169, 168, 168, 168, 168, 137, 137, 140, 140, 141, 152, 153, 156, 156, 157 + DCB 169, 169, 169, 169, 138, 138, 138, 138, 141, 141, 142, 153, 153, 154, 157, 157 + DCB 170, 169, 169, 169, 138, 138, 138, 138, 141, 141, 142, 153, 153, 154, 157, 157 + ; y=56 + DCB 96, 96, 65, 64, 64, 64, 64, 34, 37, 37, 48, 48, 48, 18, 21, 21 + DCB 96, 96, 65, 64, 64, 64, 64, 34, 36, 37, 48, 48, 17, 20, 20, 21 + DCB 96, 65, 64, 64, 64, 64, 33, 33, 36, 37, 48, 48, 17, 20, 20, 21 + DCB 96, 65, 64, 64, 64, 64, 33, 36, 36, 36, 48, 48, 17, 20, 20, 21 + DCB 65, 64, 64, 64, 64, 64, 33, 36, 36, 36, 48, 17, 17, 20, 20, 21 + DCB 65, 64, 64, 64, 64, 33, 33, 36, 36, 36, 48, 17, 17, 20, 20, 21 + DCB 65, 64, 64, 64, 33, 33, 33, 36, 36, 6, 6, 17, 17, 20, 20, 21 + DCB 65, 72, 72, 72, 33, 33, 33, 3, 3, 6, 6, 17, 17, 28, 28, 21 + DCB 72, 72, 72, 72, 41, 40, 41, 3, 44, 13, 24, 24, 25, 28, 28, 29 + DCB 73, 72, 42, 41, 41, 41, 41, 11, 11, 14, 14, 25, 25, 28, 29, 29 + DCB 192, 192, 192, 160, 160, 160, 160, 11, 11, 133, 144, 144, 144, 148, 148, 149 + DCB 192, 192, 161, 161, 161, 160, 130, 130, 133, 133, 134, 145, 145, 148, 149, 149 + DCB 200, 200, 168, 168, 168, 168, 130, 131, 140, 140, 152, 152, 152, 156, 156, 156 + DCB 200, 169, 169, 169, 168, 168, 138, 138, 141, 141, 152, 152, 153, 156, 156, 157 + DCB 170, 170, 169, 169, 169, 138, 138, 138, 141, 141, 142, 153, 153, 154, 157, 158 + DCB 170, 169, 169, 169, 138, 138, 138, 138, 141, 141, 142, 153, 154, 154, 157, 158 + ; y=64 + DCB 96, 96, 96, 65, 64, 64, 64, 68, 37, 37, 48, 48, 52, 52, 21, 21 + DCB 96, 96, 65, 64, 64, 64, 64, 68, 37, 37, 48, 48, 18, 52, 21, 21 + DCB 96, 96, 65, 64, 64, 64, 64, 68, 37, 37, 48, 48, 18, 20, 21, 21 + DCB 96, 65, 64, 64, 64, 64, 33, 36, 37, 37, 48, 48, 17, 20, 21, 21 + DCB 96, 65, 64, 64, 64, 64, 33, 36, 36, 37, 48, 48, 17, 20, 20, 21 + DCB 65, 64, 64, 64, 64, 64, 33, 36, 36, 37, 48, 17, 17, 20, 20, 21 + DCB 65, 65, 64, 64, 64, 33, 33, 36, 37, 6, 6, 17, 17, 20, 21, 21 + DCB 72, 72, 72, 72, 72, 34, 34, 3, 44, 7, 7, 18, 18, 28, 28, 22 + DCB 73, 72, 72, 72, 41, 41, 41, 44, 44, 14, 14, 25, 25, 28, 29, 29 + DCB 192, 192, 192, 192, 41, 41, 42, 11, 11, 14, 14, 25, 26, 148, 29, 30 + DCB 192, 192, 192, 161, 161, 160, 161, 164, 164, 133, 144, 144, 145, 148, 148, 149 + DCB 193, 192, 162, 161, 161, 161, 161, 131, 134, 134, 134, 145, 145, 149, 149, 149 + DCB 200, 200, 200, 168, 168, 168, 131, 131, 141, 141, 152, 152, 156, 156, 156, 157 + DCB 200, 169, 169, 169, 169, 169, 138, 138, 141, 141, 152, 153, 153, 156, 157, 157 + DCB 170, 170, 170, 169, 169, 138, 138, 139, 142, 142, 142, 153, 154, 157, 157, 158 + DCB 170, 170, 169, 169, 169, 138, 138, 139, 141, 142, 142, 153, 154, 157, 157, 158 + ; y=72 + DCB 96, 96, 96, 96, 64, 64, 68, 68, 68, 37, 48, 49, 52, 52, 21, 21 + DCB 96, 96, 96, 65, 64, 64, 68, 68, 37, 37, 48, 48, 52, 52, 21, 21 + DCB 96, 96, 96, 64, 64, 64, 68, 68, 37, 37, 48, 48, 52, 52, 21, 21 + DCB 96, 96, 65, 64, 64, 64, 68, 68, 37, 37, 48, 48, 52, 21, 21, 21 + DCB 96, 96, 64, 64, 64, 64, 34, 37, 37, 48, 48, 48, 18, 21, 21, 21 + DCB 96, 65, 64, 64, 64, 64, 33, 36, 37, 48, 48, 48, 18, 20, 21, 21 + DCB 65, 65, 65, 65, 64, 34, 34, 37, 37, 7, 7, 18, 18, 21, 21, 21 + DCB 72, 72, 72, 72, 72, 34, 34, 44, 44, 7, 7, 18, 18, 28, 28, 22 + DCB 73, 73, 72, 72, 72, 41, 42, 44, 45, 14, 25, 25, 26, 28, 29, 29 + DCB 192, 192, 192, 192, 192, 42, 42, 164, 164, 15, 15, 26, 26, 148, 148, 30 + DCB 193, 192, 192, 192, 161, 161, 161, 164, 164, 134, 145, 145, 148, 148, 149, 149 + DCB 200, 200, 200, 162, 161, 161, 131, 131, 134, 134, 135, 145, 156, 156, 149, 150 + DCB 200, 200, 200, 169, 169, 169, 131, 172, 141, 141, 152, 153, 156, 156, 157, 157 + DCB 201, 200, 169, 169, 169, 169, 139, 139, 142, 142, 153, 153, 154, 157, 157, 158 + DCB 170, 170, 170, 169, 169, 169, 139, 139, 142, 142, 153, 153, 154, 157, 157, 158 + DCB 170, 170, 170, 169, 169, 138, 139, 139, 142, 142, 153, 153, 154, 157, 157, 158 + ; y=80 + DCB 96, 96, 96, 96, 65, 65, 68, 68, 68, 80, 49, 49, 52, 52, 22, 22 + DCB 96, 96, 96, 96, 65, 65, 68, 68, 68, 38, 49, 49, 52, 52, 21, 22 + DCB 96, 96, 96, 65, 64, 65, 68, 68, 37, 48, 48, 49, 52, 52, 21, 21 + DCB 96, 96, 96, 65, 64, 64, 68, 68, 37, 48, 48, 49, 52, 52, 21, 21 + DCB 96, 96, 65, 64, 64, 64, 68, 68, 37, 48, 48, 48, 52, 21, 21, 21 + DCB 96, 96, 65, 64, 64, 64, 68, 37, 37, 48, 48, 48, 52, 21, 21, 21 + DCB 66, 65, 65, 65, 65, 34, 34, 37, 38, 7, 7, 18, 18, 21, 22, 22 + DCB 104, 73, 72, 72, 72, 72, 35, 44, 45, 56, 56, 19, 19, 28, 29, 29 + DCB 73, 73, 73, 73, 72, 42, 42, 45, 45, 15, 15, 26, 26, 29, 29, 30 + DCB 192, 192, 192, 192, 192, 42, 42, 164, 164, 15, 15, 26, 148, 148, 148, 30 + DCB 193, 193, 192, 192, 161, 161, 162, 165, 165, 134, 145, 145, 148, 149, 149, 149 + DCB 200, 200, 200, 200, 200, 162, 162, 172, 135, 135, 135, 146, 156, 156, 156, 150 + DCB 200, 200, 200, 200, 169, 169, 172, 172, 142, 142, 153, 153, 156, 156, 157, 157 + DCB 201, 201, 170, 170, 169, 169, 139, 139, 142, 142, 153, 154, 154, 157, 157, 158 + DCB 201, 170, 170, 170, 169, 170, 139, 139, 142, 142, 153, 154, 154, 157, 158, 158 + DCB 201, 170, 170, 169, 169, 139, 139, 139, 142, 142, 153, 154, 154, 157, 158, 158 + ; y=88 + DCB 96, 96, 96, 96, 96, 65, 68, 68, 68, 80, 49, 49, 52, 52, 22, 22 + DCB 96, 96, 96, 96, 65, 65, 68, 68, 68, 80, 49, 49, 52, 52, 22, 22 + DCB 96, 96, 96, 96, 65, 65, 68, 68, 38, 80, 49, 49, 52, 52, 22, 22 + DCB 96, 96, 96, 65, 65, 65, 68, 68, 37, 48, 49, 49, 52, 52, 22, 21 + DCB 96, 96, 96, 65, 64, 65, 68, 68, 37, 48, 48, 49, 52, 52, 21, 21 + DCB 96, 96, 65, 65, 65, 65, 68, 37, 38, 48, 49, 49, 52, 21, 22, 22 + DCB 104, 66, 65, 72, 72, 35, 35, 38, 38, 56, 56, 19, 19, 22, 22, 22 + DCB 104, 73, 73, 72, 72, 35, 35, 45, 45, 56, 56, 19, 19, 29, 29, 29 + DCB 74, 73, 73, 73, 73, 42, 42, 45, 46, 15, 26, 26, 27, 29, 30, 30 + DCB 193, 192, 192, 192, 192, 43, 43, 165, 165, 176, 176, 27, 148, 149, 149, 149 + DCB 193, 193, 193, 192, 162, 162, 162, 165, 165, 135, 146, 146, 149, 149, 149, 150 + DCB 200, 200, 200, 200, 200, 162, 172, 172, 135, 135, 135, 146, 156, 156, 157, 150 + DCB 201, 201, 200, 200, 169, 169, 172, 173, 142, 142, 153, 154, 156, 157, 157, 157 + DCB 201, 201, 170, 170, 170, 170, 139, 139, 143, 143, 154, 154, 154, 157, 158, 158 + DCB 201, 201, 170, 170, 170, 170, 139, 139, 143, 143, 154, 154, 157, 157, 158, 158 + DCB 201, 170, 170, 170, 170, 170, 139, 139, 142, 143, 154, 154, 157, 157, 158, 158 + ; y=96 + DCB 97, 96, 96, 96, 96, 65, 68, 69, 80, 80, 80, 50, 52, 53, 53, 22 + DCB 96, 96, 96, 96, 96, 65, 68, 68, 80, 80, 49, 49, 52, 53, 22, 22 + DCB 96, 96, 96, 96, 65, 65, 68, 68, 80, 80, 49, 52, 52, 52, 22, 22 + DCB 96, 96, 96, 96, 65, 65, 68, 68, 80, 80, 49, 52, 52, 52, 22, 22 + DCB 96, 96, 96, 96, 65, 65, 68, 68, 80, 49, 49, 52, 52, 52, 22, 22 + DCB 96, 96, 65, 65, 65, 65, 68, 38, 38, 49, 49, 49, 52, 22, 22, 22 + DCB 104, 104, 104, 72, 72, 35, 35, 38, 39, 56, 56, 19, 19, 22, 23, 22 + DCB 104, 104, 73, 73, 73, 73, 76, 45, 46, 57, 57, 60, 60, 29, 30, 30 + DCB 224, 74, 73, 192, 192, 43, 43, 46, 46, 176, 176, 27, 27, 30, 30, 30 + DCB 224, 193, 193, 192, 192, 43, 43, 165, 165, 176, 176, 27, 149, 149, 149, 149 + DCB 193, 193, 193, 193, 162, 162, 163, 166, 166, 135, 146, 146, 149, 150, 150, 150 + DCB 201, 200, 200, 200, 200, 163, 163, 173, 184, 184, 184, 147, 156, 157, 157, 157 + DCB 201, 201, 201, 200, 170, 170, 173, 173, 143, 143, 154, 154, 157, 157, 158, 158 + DCB 201, 201, 201, 170, 170, 170, 139, 173, 143, 143, 154, 154, 157, 157, 158, 158 + DCB 201, 201, 201, 170, 170, 170, 139, 143, 143, 143, 154, 154, 157, 157, 158, 158 + DCB 201, 201, 170, 170, 170, 170, 139, 143, 143, 143, 154, 154, 157, 157, 158, 158 + ; y=104 + DCB 97, 97, 96, 96, 96, 100, 69, 69, 80, 80, 80, 84, 53, 53, 53, 53 + DCB 97, 96, 96, 96, 96, 66, 69, 69, 80, 80, 80, 84, 53, 53, 53, 22 + DCB 97, 96, 96, 96, 96, 66, 68, 69, 80, 80, 49, 52, 53, 53, 53, 22 + DCB 96, 96, 96, 96, 65, 65, 68, 69, 80, 80, 49, 52, 52, 53, 22, 22 + DCB 96, 96, 96, 96, 65, 68, 68, 68, 80, 80, 49, 52, 52, 53, 22, 22 + DCB 97, 97, 96, 65, 66, 66, 69, 38, 39, 49, 50, 50, 53, 22, 22, 22 + DCB 104, 104, 104, 73, 73, 76, 76, 39, 39, 57, 57, 60, 60, 23, 23, 23 + DCB 104, 104, 73, 73, 73, 76, 76, 46, 46, 57, 57, 60, 60, 30, 30, 30 + DCB 224, 224, 224, 192, 192, 43, 43, 46, 47, 176, 27, 27, 180, 30, 31, 30 + DCB 224, 193, 193, 193, 193, 196, 196, 166, 166, 177, 177, 180, 149, 150, 150, 149 + DCB 232, 194, 200, 200, 200, 163, 163, 166, 166, 184, 147, 147, 150, 150, 150, 150 + DCB 232, 201, 200, 200, 200, 163, 173, 173, 184, 184, 184, 147, 157, 157, 157, 157 + DCB 201, 201, 201, 201, 170, 170, 173, 174, 143, 143, 154, 155, 157, 158, 158, 158 + DCB 202, 201, 201, 201, 170, 171, 171, 174, 143, 143, 154, 155, 158, 158, 158, 158 + DCB 201, 201, 201, 170, 170, 171, 171, 174, 143, 143, 154, 155, 157, 158, 158, 158 + DCB 201, 201, 201, 170, 170, 170, 139, 143, 143, 143, 154, 154, 157, 158, 158, 158 + ; y=112 + DCB 97, 97, 96, 96, 97, 100, 100, 69, 80, 80, 84, 84, 53, 53, 53, 53 + DCB 97, 97, 96, 96, 96, 100, 69, 69, 80, 80, 84, 84, 53, 53, 53, 53 + DCB 97, 96, 96, 96, 96, 100, 69, 69, 80, 80, 84, 84, 53, 53, 53, 22 + DCB 97, 96, 96, 96, 96, 100, 69, 69, 80, 80, 50, 52, 53, 53, 53, 22 + DCB 97, 96, 96, 96, 66, 66, 69, 69, 80, 80, 50, 53, 53, 53, 22, 22 + DCB 97, 97, 104, 66, 66, 66, 69, 39, 39, 50, 50, 50, 53, 23, 23, 23 + DCB 104, 104, 104, 104, 73, 76, 76, 39, 39, 57, 57, 60, 60, 23, 23, 23 + DCB 105, 104, 104, 73, 74, 74, 77, 46, 47, 58, 58, 61, 61, 30, 30, 30 + DCB 224, 224, 224, 193, 193, 196, 196, 47, 47, 177, 177, 180, 180, 31, 31, 31 + DCB 224, 224, 193, 193, 193, 196, 196, 166, 166, 177, 177, 180, 150, 150, 150, 150 + DCB 232, 232, 200, 200, 163, 163, 204, 166, 167, 184, 147, 147, 150, 151, 150, 150 + DCB 232, 201, 201, 201, 201, 204, 173, 174, 184, 185, 185, 188, 157, 158, 158, 157 + DCB 202, 202, 201, 201, 171, 171, 174, 174, 174, 185, 155, 155, 158, 158, 158, 158 + DCB 202, 202, 201, 201, 171, 171, 174, 174, 143, 143, 155, 155, 158, 158, 158, 158 + DCB 202, 201, 201, 201, 171, 171, 174, 174, 143, 143, 155, 155, 158, 158, 158, 158 + DCB 202, 201, 201, 170, 170, 171, 174, 174, 143, 143, 155, 155, 158, 158, 158, 158 + ; y=120 + DCB 97, 97, 97, 97, 97, 100, 100, 70, 80, 81, 84, 84, 53, 54, 53, 53 + DCB 97, 97, 96, 97, 100, 100, 100, 69, 80, 81, 84, 84, 53, 53, 53, 53 + DCB 97, 97, 96, 96, 100, 100, 69, 69, 80, 80, 84, 84, 53, 53, 53, 53 + DCB 97, 96, 96, 96, 100, 100, 69, 69, 80, 80, 84, 84, 53, 53, 53, 22 + DCB 97, 97, 96, 96, 66, 69, 69, 69, 80, 81, 50, 53, 53, 53, 23, 22 + DCB 104, 104, 104, 104, 67, 67, 70, 39, 39, 50, 51, 51, 54, 23, 23, 23 + DCB 105, 104, 104, 104, 74, 77, 77, 88, 88, 57, 58, 61, 61, 23, 23, 23 + DCB 105, 224, 224, 74, 74, 74, 77, 47, 47, 58, 58, 61, 61, 31, 31, 30 + DCB 224, 224, 224, 193, 193, 196, 196, 47, 208, 177, 180, 180, 180, 31, 31, 31 + DCB 225, 224, 193, 194, 194, 197, 197, 166, 167, 178, 178, 181, 150, 150, 150, 150 + DCB 232, 232, 232, 201, 201, 204, 204, 167, 167, 185, 188, 188, 151, 151, 151, 151 + DCB 232, 232, 201, 201, 201, 204, 174, 174, 185, 185, 185, 188, 158, 158, 158, 158 + DCB 202, 202, 202, 202, 171, 171, 174, 175, 175, 186, 155, 155, 158, 159, 158, 158 + DCB 202, 202, 201, 201, 171, 171, 174, 174, 143, 186, 155, 155, 158, 158, 158, 158 + DCB 202, 202, 201, 201, 171, 171, 174, 174, 143, 155, 155, 155, 158, 158, 158, 158 + DCB 202, 201, 201, 171, 171, 171, 174, 174, 143, 155, 155, 155, 158, 158, 158, 158 + ; y=128 + DCB 97, 97, 97, 97, 100, 100, 100, 112, 81, 81, 84, 84, 84, 54, 54, 53 + DCB 97, 97, 97, 97, 100, 100, 100, 112, 81, 81, 84, 84, 54, 54, 53, 53 + DCB 97, 97, 97, 97, 100, 100, 100, 70, 81, 81, 84, 84, 53, 54, 53, 53 + DCB 97, 97, 96, 97, 100, 100, 69, 80, 80, 81, 84, 84, 53, 53, 53, 53 + DCB 97, 97, 97, 97, 67, 100, 70, 70, 81, 81, 51, 54, 54, 54, 54, 23 + DCB 104, 104, 104, 104, 67, 67, 70, 88, 88, 51, 51, 51, 54, 23, 23, 23 + DCB 105, 105, 104, 105, 74, 77, 77, 88, 88, 58, 58, 61, 61, 61, 23, 30 + DCB 224, 224, 224, 74, 75, 75, 78, 47, 208, 59, 59, 62, 62, 31, 31, 31 + DCB 225, 224, 224, 194, 194, 197, 197, 208, 208, 178, 178, 181, 181, 31, 31, 150 + DCB 225, 232, 232, 194, 194, 197, 197, 167, 167, 178, 178, 181, 151, 151, 151, 150 + DCB 232, 232, 232, 201, 204, 204, 205, 167, 216, 185, 188, 188, 151, 151, 151, 151 + DCB 233, 232, 201, 202, 202, 205, 174, 175, 185, 186, 186, 189, 158, 159, 158, 158 + DCB 233, 202, 202, 202, 171, 171, 175, 175, 175, 186, 155, 155, 159, 159, 159, 158 + DCB 202, 202, 202, 202, 171, 171, 175, 175, 186, 186, 155, 155, 159, 159, 158, 158 + DCB 202, 202, 201, 202, 171, 171, 174, 175, 186, 186, 155, 155, 158, 159, 158, 158 + DCB 202, 202, 201, 202, 171, 171, 174, 175, 185, 155, 155, 155, 158, 158, 158, 158 + ; y=136 + DCB 97, 97, 97, 97, 100, 100, 101, 112, 112, 81, 84, 84, 85, 54, 54, 53 + DCB 97, 97, 97, 97, 100, 100, 112, 112, 81, 81, 84, 84, 54, 54, 54, 53 + DCB 97, 97, 97, 97, 100, 100, 112, 112, 81, 81, 84, 84, 54, 54, 53, 53 + DCB 97, 97, 97, 97, 100, 100, 70, 112, 81, 81, 84, 84, 54, 54, 53, 53 + DCB 98, 97, 97, 97, 67, 70, 70, 70, 81, 82, 51, 54, 54, 54, 54, 23 + DCB 105, 104, 104, 105, 108, 108, 71, 88, 88, 51, 92, 92, 55, 55, 23, 23 + DCB 105, 105, 105, 105, 75, 78, 78, 89, 89, 58, 59, 62, 62, 62, 31, 31 + DCB 224, 224, 224, 75, 75, 75, 78, 208, 208, 59, 59, 62, 62, 31, 31, 31 + DCB 225, 225, 225, 194, 194, 197, 197, 208, 209, 178, 181, 181, 181, 181, 150, 150 + DCB 232, 232, 232, 195, 195, 198, 198, 167, 216, 179, 179, 182, 151, 151, 151, 151 + DCB 232, 232, 232, 202, 202, 205, 205, 216, 216, 186, 189, 189, 189, 151, 151, 158 + DCB 233, 233, 202, 202, 202, 205, 175, 175, 186, 186, 186, 189, 159, 159, 159, 158 + DCB 233, 202, 202, 202, 202, 205, 175, 175, 186, 186, 155, 189, 159, 159, 159, 158 + DCB 233, 202, 202, 202, 171, 171, 175, 175, 186, 186, 155, 159, 159, 159, 159, 158 + DCB 202, 202, 202, 202, 171, 171, 175, 175, 186, 186, 155, 159, 159, 159, 158, 158 + DCB 202, 202, 202, 202, 171, 171, 175, 175, 186, 155, 155, 158, 159, 159, 158, 158 + ; y=144 + DCB 97, 97, 97, 98, 100, 101, 112, 112, 112, 82, 85, 85, 85, 54, 54, 54 + DCB 97, 97, 97, 98, 100, 101, 112, 112, 81, 82, 84, 85, 85, 54, 54, 54 + DCB 97, 97, 97, 97, 100, 101, 112, 112, 81, 84, 84, 85, 54, 54, 54, 53 + DCB 97, 97, 97, 97, 100, 101, 112, 112, 81, 82, 84, 85, 54, 54, 54, 54 + DCB 98, 98, 98, 98, 108, 101, 71, 71, 82, 82, 92, 54, 55, 54, 54, 23 + DCB 105, 105, 105, 105, 108, 108, 71, 89, 89, 92, 92, 92, 55, 55, 61, 23 + DCB 106, 105, 105, 106, 75, 78, 78, 89, 89, 59, 59, 62, 62, 62, 62, 31 + DCB 225, 224, 225, 75, 228, 228, 79, 208, 209, 59, 212, 63, 63, 31, 31, 31 + DCB 225, 225, 225, 195, 195, 198, 198, 209, 209, 179, 179, 182, 182, 182, 151, 151 + DCB 232, 232, 232, 195, 195, 198, 198, 216, 216, 179, 179, 182, 182, 151, 151, 151 + DCB 233, 233, 233, 202, 205, 205, 206, 216, 217, 186, 189, 189, 190, 159, 158, 158 + DCB 233, 233, 202, 203, 203, 206, 175, 175, 186, 187, 187, 190, 159, 159, 159, 159 + DCB 233, 233, 202, 203, 203, 206, 175, 175, 186, 187, 187, 190, 159, 159, 159, 159 + DCB 233, 202, 202, 202, 203, 206, 175, 175, 186, 187, 189, 159, 159, 159, 159, 158 + DCB 233, 202, 202, 202, 171, 205, 175, 175, 186, 186, 155, 159, 159, 159, 159, 158 + DCB 202, 202, 202, 202, 171, 175, 175, 175, 186, 186, 155, 159, 159, 159, 158, 158 + ; y=152 + DCB 97, 97, 97, 98, 101, 101, 112, 112, 112, 116, 85, 85, 85, 85, 54, 54 + DCB 97, 97, 97, 98, 101, 101, 112, 112, 112, 116, 85, 85, 85, 54, 54, 54 + DCB 97, 97, 97, 98, 101, 101, 112, 112, 82, 84, 85, 85, 85, 54, 54, 54 + DCB 97, 97, 98, 98, 101, 101, 112, 112, 82, 82, 85, 85, 55, 54, 54, 54 + DCB 98, 98, 98, 98, 108, 71, 71, 71, 82, 82, 92, 55, 55, 55, 55, 54 + DCB 105, 105, 105, 106, 108, 109, 120, 89, 89, 92, 92, 93, 55, 62, 62, 61 + DCB 106, 106, 106, 106, 228, 78, 79, 90, 90, 59, 212, 63, 63, 62, 62, 31 + DCB 225, 225, 225, 228, 228, 228, 79, 209, 209, 212, 212, 63, 63, 63, 31, 31 + DCB 225, 225, 225, 195, 195, 198, 198, 209, 209, 179, 182, 182, 182, 182, 151, 151 + DCB 233, 232, 233, 195, 236, 199, 199, 216, 217, 220, 220, 183, 183, 151, 151, 151 + DCB 233, 233, 233, 203, 203, 206, 206, 217, 217, 187, 190, 190, 190, 190, 159, 158 + DCB 233, 233, 203, 203, 203, 206, 206, 175, 187, 187, 190, 190, 159, 159, 159, 159 + DCB 233, 233, 203, 203, 203, 206, 175, 175, 187, 187, 190, 190, 159, 159, 159, 159 + DCB 233, 233, 203, 203, 203, 206, 175, 175, 187, 187, 190, 190, 159, 159, 159, 159 + DCB 233, 233, 202, 203, 203, 206, 175, 175, 186, 187, 190, 159, 159, 159, 159, 159 + DCB 233, 202, 202, 203, 205, 206, 175, 175, 186, 187, 189, 159, 159, 159, 159, 158 + ; y=160 + DCB 97, 97, 98, 98, 101, 101, 112, 113, 116, 116, 85, 85, 85, 85, 85, 54 + DCB 97, 97, 98, 98, 101, 101, 112, 112, 116, 116, 85, 85, 85, 85, 54, 54 + DCB 97, 97, 98, 98, 101, 101, 112, 112, 116, 116, 85, 85, 85, 85, 54, 54 + DCB 98, 98, 98, 98, 101, 102, 113, 113, 82, 83, 85, 86, 55, 55, 54, 54 + DCB 98, 98, 99, 99, 109, 102, 120, 120, 83, 83, 93, 55, 55, 55, 55, 55 + DCB 105, 106, 106, 106, 109, 109, 120, 90, 90, 93, 93, 93, 63, 62, 62, 62 + DCB 106, 106, 106, 107, 228, 79, 79, 90, 90, 212, 212, 63, 63, 63, 63, 62 + DCB 225, 225, 226, 228, 229, 229, 240, 209, 210, 212, 213, 63, 182, 182, 182, 181 + DCB 226, 226, 226, 236, 236, 199, 199, 210, 210, 220, 220, 183, 183, 182, 182, 151 + DCB 233, 233, 233, 236, 236, 199, 199, 217, 217, 220, 220, 183, 183, 190, 151, 151 + DCB 233, 233, 234, 203, 206, 206, 207, 217, 218, 187, 190, 190, 190, 190, 159, 159 + DCB 234, 234, 203, 203, 203, 206, 207, 218, 187, 187, 190, 191, 190, 159, 159, 159 + DCB 234, 233, 203, 203, 203, 206, 207, 217, 187, 187, 190, 190, 190, 159, 159, 159 + DCB 233, 233, 203, 203, 206, 206, 175, 217, 187, 187, 190, 190, 159, 159, 159, 159 + DCB 233, 233, 203, 203, 206, 206, 175, 175, 187, 187, 190, 190, 159, 159, 159, 159 + DCB 233, 233, 203, 203, 206, 206, 175, 175, 187, 187, 190, 159, 159, 159, 159, 159 + ; y=168 + DCB 97, 97, 98, 101, 101, 102, 113, 113, 116, 116, 116, 86, 86, 85, 85, 54 + DCB 97, 97, 98, 101, 101, 102, 112, 113, 116, 116, 85, 86, 85, 85, 85, 54 + DCB 97, 97, 98, 101, 101, 102, 112, 113, 116, 116, 85, 86, 85, 85, 54, 54 + DCB 98, 98, 99, 99, 102, 102, 113, 113, 83, 83, 86, 86, 55, 55, 55, 54 + DCB 105, 99, 99, 99, 109, 120, 120, 120, 83, 83, 93, 55, 55, 55, 55, 55 + DCB 106, 106, 106, 107, 109, 110, 121, 90, 90, 93, 93, 94, 63, 63, 62, 62 + DCB 106, 106, 107, 107, 229, 79, 240, 91, 91, 212, 213, 63, 63, 63, 63, 63 + DCB 225, 226, 226, 229, 229, 229, 240, 210, 210, 213, 213, 183, 182, 182, 182, 182 + DCB 226, 226, 226, 236, 236, 199, 199, 210, 210, 220, 183, 183, 183, 183, 182, 151 + DCB 233, 233, 234, 236, 237, 248, 248, 217, 218, 221, 221, 183, 190, 190, 190, 189 + DCB 234, 234, 234, 203, 237, 207, 207, 218, 218, 187, 191, 191, 191, 190, 159, 159 + DCB 234, 234, 234, 203, 207, 207, 207, 218, 187, 187, 191, 191, 191, 190, 159, 159 + DCB 234, 234, 203, 203, 206, 207, 207, 218, 187, 187, 190, 191, 190, 159, 159, 159 + DCB 234, 234, 203, 203, 206, 207, 207, 218, 187, 187, 190, 191, 190, 159, 159, 159 + DCB 233, 234, 203, 203, 206, 206, 175, 187, 187, 187, 190, 190, 159, 159, 159, 159 + DCB 233, 233, 203, 203, 206, 206, 175, 187, 187, 187, 190, 190, 159, 159, 159, 159 + ; y=176 + DCB 97, 97, 98, 101, 102, 102, 113, 113, 116, 116, 117, 86, 86, 85, 85, 85 + DCB 97, 97, 98, 101, 102, 102, 113, 113, 116, 116, 116, 86, 86, 85, 85, 85 + DCB 97, 98, 98, 101, 102, 102, 113, 113, 116, 116, 86, 86, 86, 85, 85, 54 + DCB 98, 98, 99, 99, 102, 103, 113, 114, 83, 83, 86, 86, 86, 55, 55, 55 + DCB 105, 106, 99, 99, 109, 103, 121, 121, 124, 124, 93, 94, 55, 55, 55, 55 + DCB 106, 106, 107, 107, 110, 110, 121, 91, 91, 94, 94, 94, 63, 63, 63, 62 + DCB 225, 107, 107, 107, 229, 240, 240, 91, 91, 213, 213, 63, 63, 63, 63, 63 + DCB 226, 226, 226, 229, 230, 230, 241, 210, 210, 213, 214, 183, 183, 183, 182, 182 + DCB 226, 227, 227, 236, 237, 248, 248, 211, 211, 221, 221, 183, 183, 183, 183, 183 + DCB 233, 234, 234, 237, 237, 248, 248, 218, 218, 221, 221, 191, 190, 190, 190, 190 + DCB 234, 234, 235, 237, 207, 207, 207, 218, 219, 221, 191, 191, 191, 191, 190, 159 + DCB 234, 234, 234, 203, 207, 207, 207, 218, 218, 221, 191, 191, 191, 191, 159, 159 + DCB 234, 234, 234, 203, 207, 207, 207, 218, 187, 187, 191, 191, 191, 190, 159, 159 + DCB 234, 234, 203, 203, 207, 207, 218, 218, 187, 187, 191, 191, 191, 159, 159, 159 + DCB 234, 234, 203, 203, 207, 207, 218, 218, 187, 187, 191, 191, 190, 159, 159, 159 + DCB 233, 234, 203, 203, 206, 207, 218, 187, 187, 187, 190, 191, 190, 159, 159, 159 + ; y=184 + DCB 97, 98, 98, 101, 102, 113, 113, 113, 116, 117, 117, 86, 86, 86, 85, 85 + DCB 97, 98, 98, 101, 102, 113, 113, 113, 116, 116, 117, 86, 86, 85, 85, 85 + DCB 98, 98, 99, 102, 102, 103, 113, 114, 117, 117, 86, 86, 86, 86, 86, 55 + DCB 98, 99, 99, 99, 103, 103, 114, 114, 124, 124, 87, 87, 87, 55, 55, 55 + DCB 105, 106, 99, 110, 110, 121, 121, 121, 124, 124, 94, 94, 94, 93, 55, 62 + DCB 106, 107, 107, 110, 110, 111, 122, 91, 91, 94, 94, 94, 94, 63, 63, 63 + DCB 225, 107, 107, 229, 230, 240, 241, 244, 244, 213, 214, 213, 63, 63, 63, 63 + DCB 226, 226, 227, 230, 230, 230, 241, 211, 211, 214, 214, 214, 183, 183, 183, 182 + DCB 233, 227, 227, 237, 237, 248, 248, 211, 211, 221, 221, 183, 183, 183, 183, 183 + DCB 234, 234, 235, 237, 238, 249, 249, 218, 219, 221, 222, 191, 191, 190, 190, 190 + DCB 234, 235, 235, 238, 238, 207, 207, 219, 219, 222, 191, 191, 191, 191, 191, 190 + DCB 234, 234, 235, 238, 207, 207, 218, 219, 219, 222, 191, 191, 191, 191, 190, 159 + DCB 234, 234, 235, 238, 207, 207, 218, 218, 219, 222, 191, 191, 191, 191, 190, 159 + DCB 234, 234, 235, 237, 207, 207, 218, 218, 187, 191, 191, 191, 191, 190, 159, 159 + DCB 234, 234, 203, 203, 207, 207, 218, 218, 187, 191, 191, 191, 191, 190, 159, 159 + DCB 234, 234, 203, 203, 207, 207, 218, 218, 187, 191, 191, 191, 190, 159, 159, 159 + ; y=192 + DCB 97, 98, 101, 101, 102, 113, 113, 114, 117, 117, 117, 117, 86, 86, 86, 85 + DCB 97, 98, 101, 101, 102, 113, 113, 114, 117, 117, 117, 86, 86, 86, 85, 85 + DCB 98, 98, 99, 102, 102, 103, 114, 114, 117, 117, 87, 87, 86, 86, 86, 55 + DCB 99, 99, 99, 103, 103, 103, 114, 115, 124, 124, 87, 87, 87, 87, 55, 55 + DCB 106, 106, 107, 110, 110, 121, 122, 122, 125, 125, 94, 94, 94, 94, 63, 63 + DCB 106, 107, 107, 110, 111, 111, 122, 244, 244, 95, 95, 95, 94, 63, 63, 63 + DCB 226, 226, 107, 230, 230, 241, 241, 244, 244, 214, 214, 214, 214, 213, 63, 182 + DCB 226, 227, 227, 230, 231, 231, 242, 211, 211, 214, 215, 214, 183, 183, 183, 183 + DCB 234, 227, 227, 237, 238, 249, 249, 252, 252, 222, 222, 221, 183, 183, 183, 183 + DCB 234, 235, 235, 238, 238, 249, 249, 219, 219, 222, 222, 222, 191, 191, 191, 190 + DCB 234, 235, 235, 238, 238, 207, 219, 219, 219, 222, 222, 191, 191, 191, 191, 190 + DCB 234, 235, 235, 238, 238, 207, 219, 219, 219, 222, 191, 191, 191, 191, 191, 190 + DCB 234, 235, 235, 238, 207, 207, 219, 219, 219, 222, 191, 191, 191, 191, 190, 159 + DCB 234, 235, 235, 238, 207, 207, 218, 219, 219, 222, 191, 191, 191, 191, 190, 159 + DCB 234, 235, 235, 238, 207, 207, 218, 219, 221, 191, 191, 191, 191, 190, 159, 159 + DCB 234, 234, 203, 238, 207, 207, 218, 218, 187, 191, 191, 191, 191, 190, 159, 159 + ; y=200 + DCB 98, 98, 101, 102, 102, 113, 114, 114, 117, 117, 117, 117, 86, 86, 86, 85 + DCB 98, 98, 101, 102, 102, 113, 114, 114, 117, 117, 117, 117, 86, 86, 86, 86 + DCB 98, 99, 99, 102, 103, 103, 114, 115, 118, 118, 87, 87, 87, 86, 86, 86 + DCB 99, 99, 99, 103, 103, 103, 115, 115, 125, 125, 87, 87, 87, 87, 93, 55 + DCB 106, 107, 107, 110, 111, 122, 122, 122, 125, 125, 95, 95, 94, 94, 94, 63 + DCB 107, 107, 107, 111, 111, 111, 123, 244, 244, 95, 95, 95, 95, 95, 63, 63 + DCB 226, 226, 230, 230, 230, 241, 242, 245, 245, 214, 214, 214, 214, 214, 183, 183 + DCB 227, 227, 227, 231, 231, 231, 242, 252, 252, 215, 215, 215, 214, 183, 183, 183 + DCB 234, 234, 237, 238, 238, 249, 249, 252, 252, 222, 222, 222, 222, 183, 190, 190 + DCB 234, 235, 235, 238, 239, 250, 250, 219, 219, 222, 223, 222, 191, 191, 191, 191 + DCB 235, 235, 235, 238, 239, 250, 219, 219, 219, 222, 222, 191, 191, 191, 191, 191 + DCB 235, 235, 235, 238, 239, 249, 219, 219, 222, 222, 222, 191, 191, 191, 191, 191 + DCB 235, 235, 235, 238, 238, 207, 219, 219, 222, 222, 191, 191, 191, 191, 191, 190 + DCB 235, 235, 235, 238, 207, 207, 219, 219, 222, 222, 191, 191, 191, 191, 191, 190 + DCB 235, 235, 235, 238, 207, 207, 219, 219, 222, 222, 191, 191, 191, 191, 190, 159 + DCB 234, 235, 238, 238, 207, 207, 219, 219, 222, 191, 191, 191, 191, 191, 190, 159 + ; y=208 + DCB 98, 98, 101, 102, 113, 113, 114, 117, 117, 118, 117, 117, 117, 86, 86, 86 + DCB 98, 98, 102, 102, 103, 114, 114, 115, 118, 118, 118, 117, 87, 86, 86, 86 + DCB 99, 99, 102, 103, 103, 114, 115, 115, 118, 118, 87, 87, 87, 87, 87, 86 + DCB 106, 99, 109, 103, 103, 122, 115, 115, 125, 125, 87, 87, 87, 87, 94, 93 + DCB 106, 107, 110, 111, 111, 122, 123, 123, 126, 126, 95, 95, 95, 94, 94, 63 + DCB 107, 107, 107, 111, 111, 241, 123, 245, 245, 95, 95, 95, 95, 95, 63, 63 + DCB 226, 227, 230, 230, 231, 242, 242, 245, 245, 215, 215, 214, 214, 214, 214, 183 + DCB 227, 227, 227, 231, 231, 242, 243, 252, 252, 215, 215, 215, 215, 183, 183, 183 + DCB 234, 235, 238, 238, 239, 250, 250, 253, 253, 222, 222, 222, 222, 222, 191, 190 + DCB 235, 235, 235, 239, 239, 250, 250, 219, 223, 223, 223, 223, 222, 191, 191, 191 + DCB 235, 235, 235, 239, 239, 250, 250, 219, 223, 223, 223, 222, 191, 191, 191, 191 + DCB 235, 235, 235, 239, 239, 250, 219, 219, 222, 223, 223, 222, 191, 191, 191, 191 + DCB 235, 235, 238, 238, 239, 250, 219, 219, 222, 223, 222, 191, 191, 191, 191, 191 + DCB 235, 235, 238, 238, 239, 249, 219, 219, 222, 222, 222, 191, 191, 191, 191, 190 + DCB 235, 235, 238, 238, 207, 249, 219, 219, 222, 222, 191, 191, 191, 191, 191, 190 + DCB 235, 235, 238, 238, 207, 207, 219, 219, 222, 222, 191, 191, 191, 191, 190, 159 + ; y=216 + DCB 98, 101, 101, 102, 113, 113, 114, 117, 118, 118, 118, 117, 117, 117, 86, 86 + DCB 98, 99, 102, 102, 103, 114, 114, 115, 118, 118, 118, 118, 87, 87, 86, 86 + DCB 99, 99, 103, 103, 103, 115, 115, 115, 119, 119, 118, 87, 87, 87, 87, 87 + DCB 106, 99, 110, 110, 121, 122, 122, 125, 126, 126, 126, 125, 94, 94, 94, 94 + DCB 107, 107, 110, 111, 111, 122, 123, 123, 126, 126, 95, 95, 95, 95, 94, 94 + DCB 107, 107, 230, 111, 111, 242, 123, 245, 245, 245, 95, 95, 95, 214, 214, 213 + DCB 227, 227, 230, 231, 231, 242, 243, 246, 246, 215, 215, 215, 215, 214, 214, 183 + DCB 227, 227, 231, 231, 231, 243, 243, 253, 253, 215, 215, 215, 215, 215, 183, 183 + DCB 234, 235, 238, 239, 239, 250, 250, 253, 253, 223, 223, 222, 222, 222, 191, 191 + DCB 235, 235, 238, 239, 239, 250, 250, 253, 223, 223, 223, 223, 222, 191, 191, 191 + DCB 235, 235, 238, 239, 239, 250, 250, 219, 223, 223, 223, 223, 222, 191, 191, 191 + DCB 235, 235, 238, 239, 239, 250, 250, 219, 223, 223, 223, 222, 191, 191, 191, 191 + DCB 235, 235, 238, 239, 239, 250, 219, 219, 223, 223, 223, 222, 191, 191, 191, 191 + DCB 235, 235, 238, 239, 239, 250, 219, 219, 223, 223, 222, 191, 191, 191, 191, 191 + DCB 235, 235, 238, 239, 239, 250, 219, 219, 222, 223, 222, 191, 191, 191, 191, 190 + DCB 235, 235, 238, 238, 249, 219, 219, 219, 222, 222, 191, 191, 191, 191, 191, 190 + ; y=224 + DCB 98, 101, 102, 102, 113, 114, 114, 117, 118, 118, 118, 118, 117, 117, 86, 86 + DCB 99, 99, 102, 103, 114, 114, 115, 118, 118, 119, 118, 118, 118, 87, 87, 86 + DCB 99, 99, 103, 103, 103, 115, 115, 115, 119, 119, 119, 87, 87, 87, 87, 87 + DCB 107, 110, 110, 111, 122, 122, 123, 126, 126, 126, 126, 126, 95, 95, 94, 94 + DCB 107, 107, 111, 111, 111, 123, 123, 123, 127, 127, 126, 95, 95, 95, 95, 95 + DCB 226, 229, 230, 230, 242, 242, 242, 246, 246, 246, 246, 215, 214, 214, 214, 214 + DCB 227, 227, 231, 231, 231, 243, 243, 246, 246, 246, 215, 215, 215, 215, 214, 183 + DCB 227, 237, 238, 231, 249, 250, 243, 253, 253, 253, 215, 215, 215, 222, 222, 221 + DCB 235, 235, 238, 239, 239, 250, 251, 254, 254, 223, 223, 223, 223, 222, 222, 191 + DCB 235, 235, 239, 239, 239, 251, 251, 254, 254, 223, 223, 223, 223, 222, 191, 191 + DCB 235, 235, 239, 239, 239, 251, 251, 254, 223, 223, 223, 223, 223, 191, 191, 191 + DCB 235, 235, 239, 239, 239, 250, 251, 254, 223, 223, 223, 223, 222, 191, 191, 191 + DCB 235, 235, 239, 239, 239, 250, 251, 253, 223, 223, 223, 223, 191, 191, 191, 191 + DCB 235, 235, 239, 239, 250, 250, 219, 219, 223, 223, 223, 222, 191, 191, 191, 191 + DCB 235, 235, 239, 239, 250, 250, 219, 219, 223, 223, 223, 222, 191, 191, 191, 191 + DCB 235, 235, 239, 239, 250, 250, 219, 219, 223, 223, 222, 191, 191, 191, 191, 191 + ; y=232 + DCB 98, 102, 102, 102, 114, 114, 117, 118, 118, 118, 118, 118, 118, 117, 117, 86 + DCB 99, 102, 103, 103, 114, 115, 115, 118, 119, 119, 119, 118, 118, 87, 87, 87 + DCB 99, 109, 103, 103, 121, 115, 115, 119, 119, 119, 119, 119, 87, 87, 87, 87 + DCB 107, 110, 110, 111, 122, 122, 123, 126, 127, 127, 126, 126, 95, 95, 95, 94 + DCB 107, 107, 111, 111, 123, 123, 123, 127, 127, 127, 127, 95, 95, 95, 95, 95 + DCB 227, 230, 230, 231, 242, 242, 243, 246, 246, 246, 246, 246, 215, 215, 214, 214 + DCB 227, 227, 231, 231, 242, 243, 243, 247, 247, 247, 215, 215, 215, 215, 215, 215 + DCB 235, 238, 238, 239, 250, 250, 251, 254, 254, 254, 254, 223, 222, 222, 222, 222 + DCB 235, 238, 239, 239, 250, 251, 251, 254, 254, 254, 223, 223, 223, 223, 222, 191 + DCB 235, 238, 239, 239, 250, 251, 251, 254, 254, 223, 223, 223, 223, 223, 222, 191 + DCB 235, 238, 239, 239, 250, 251, 251, 254, 254, 223, 223, 223, 223, 222, 191, 191 + DCB 235, 238, 239, 239, 250, 251, 251, 254, 223, 223, 223, 223, 223, 222, 191, 191 + DCB 235, 238, 239, 239, 250, 251, 251, 254, 223, 223, 223, 223, 222, 191, 191, 191 + DCB 235, 238, 239, 239, 250, 250, 251, 254, 223, 223, 223, 223, 222, 191, 191, 191 + DCB 235, 238, 239, 239, 250, 250, 219, 223, 223, 223, 223, 222, 191, 191, 191, 191 + DCB 235, 238, 239, 239, 250, 250, 219, 223, 223, 223, 223, 222, 191, 191, 191, 191 + ; y=240 + DCB 99, 102, 102, 103, 114, 114, 118, 118, 118, 118, 118, 118, 118, 118, 118, 87 + DCB 99, 102, 103, 103, 114, 115, 115, 119, 119, 119, 119, 119, 118, 118, 87, 87 + DCB 99, 110, 103, 103, 122, 115, 125, 126, 119, 119, 119, 126, 126, 125, 87, 87 + DCB 107, 110, 111, 111, 122, 123, 123, 126, 127, 127, 127, 126, 126, 95, 95, 95 + DCB 107, 111, 111, 111, 123, 123, 123, 127, 127, 127, 127, 127, 95, 95, 95, 95 + DCB 227, 230, 231, 231, 242, 243, 243, 246, 247, 246, 246, 246, 215, 215, 215, 214 + DCB 227, 231, 231, 231, 243, 243, 243, 247, 247, 247, 247, 215, 215, 215, 215, 215 + DCB 235, 238, 238, 239, 250, 251, 251, 254, 254, 254, 254, 223, 223, 222, 222, 222 + DCB 235, 238, 239, 239, 251, 251, 251, 254, 255, 254, 223, 223, 223, 223, 223, 222 + DCB 235, 238, 239, 239, 251, 251, 251, 254, 255, 254, 223, 223, 223, 223, 222, 191 + DCB 235, 238, 239, 239, 251, 251, 251, 254, 254, 223, 223, 223, 223, 223, 222, 191 + DCB 235, 238, 239, 239, 251, 251, 251, 254, 254, 223, 223, 223, 223, 222, 191, 191 + DCB 235, 238, 239, 239, 251, 251, 251, 254, 223, 223, 223, 223, 223, 222, 191, 191 + DCB 235, 238, 239, 239, 251, 251, 251, 254, 223, 223, 223, 223, 222, 191, 191, 191 + DCB 235, 238, 239, 239, 250, 251, 254, 254, 223, 223, 223, 223, 222, 191, 191, 191 + DCB 235, 238, 239, 239, 250, 251, 253, 223, 223, 223, 223, 222, 191, 191, 191, 191 + ; y=248 + DCB 102, 102, 103, 114, 114, 115, 118, 118, 119, 119, 119, 119, 118, 118, 118, 87 + DCB 99, 103, 103, 103, 115, 115, 115, 119, 119, 119, 119, 119, 119, 119, 87, 87 + DCB 110, 110, 110, 122, 122, 123, 126, 126, 126, 126, 126, 126, 126, 126, 125, 95 + DCB 107, 111, 111, 111, 123, 123, 126, 127, 127, 127, 127, 127, 126, 95, 95, 95 + DCB 229, 230, 111, 241, 242, 123, 246, 246, 127, 127, 246, 246, 246, 95, 95, 95 + DCB 227, 230, 231, 231, 242, 243, 246, 247, 247, 247, 247, 246, 215, 215, 215, 215 + DCB 227, 231, 231, 231, 243, 243, 253, 247, 247, 247, 247, 253, 215, 215, 215, 215 + DCB 235, 238, 239, 250, 250, 251, 254, 254, 255, 254, 254, 254, 223, 223, 223, 222 + DCB 235, 239, 239, 239, 251, 251, 251, 255, 255, 255, 254, 223, 223, 223, 223, 222 + DCB 235, 239, 239, 239, 251, 251, 251, 255, 255, 254, 223, 223, 223, 223, 223, 222 + DCB 235, 239, 239, 239, 251, 251, 251, 255, 255, 254, 223, 223, 223, 223, 222, 191 + DCB 235, 239, 239, 239, 251, 251, 254, 254, 254, 223, 223, 223, 223, 223, 222, 191 + DCB 235, 239, 239, 239, 251, 251, 254, 254, 254, 223, 223, 223, 223, 223, 191, 191 + DCB 235, 239, 239, 239, 251, 251, 254, 254, 223, 223, 223, 223, 223, 222, 191, 191 + DCB 235, 239, 239, 239, 251, 251, 254, 254, 223, 223, 223, 223, 223, 191, 191, 191 + DCB 235, 239, 239, 239, 251, 251, 254, 254, 223, 223, 223, 223, 222, 191, 191, 191 + + + END diff --git a/utils/genpalette,ff8 b/utils/genpalette,ff8 new file mode 100644 index 0000000000000000000000000000000000000000..b0077decccee2f4339a6a94319844e56a156187c Binary files /dev/null and b/utils/genpalette,ff8 differ diff --git a/utils/genyuvtabs,ff8 b/utils/genyuvtabs,ff8 new file mode 100644 index 0000000000000000000000000000000000000000..be3e7072de6d94a30f62efe330fad60d309b6c99 Binary files /dev/null and b/utils/genyuvtabs,ff8 differ diff --git a/utils/makejhdr,ff8 b/utils/makejhdr,ff8 new file mode 100644 index 0000000000000000000000000000000000000000..0986e24702eb412a764e719de7e42065ee5ecfc2 Binary files /dev/null and b/utils/makejhdr,ff8 differ