; 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