armVCM4P10_DecodeCoeffsToPair_s.S revision e17bb5cafdbc6089716d8e8c5afbb00f207a59bb
10c1bc742181ded4930842b46e9507372f0b1b963James Dong/*
20c1bc742181ded4930842b46e9507372f0b1b963James Dong * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved.
30c1bc742181ded4930842b46e9507372f0b1b963James Dong *
40c1bc742181ded4930842b46e9507372f0b1b963James Dong */
50c1bc742181ded4930842b46e9507372f0b1b963James Dong
60c1bc742181ded4930842b46e9507372f0b1b963James Dong    .eabi_attribute 24, 1
70c1bc742181ded4930842b46e9507372f0b1b963James Dong    .eabi_attribute 25, 1
80c1bc742181ded4930842b46e9507372f0b1b963James Dong
90c1bc742181ded4930842b46e9507372f0b1b963James Dong    .arm
100c1bc742181ded4930842b46e9507372f0b1b963James Dong    .fpu neon
110c1bc742181ded4930842b46e9507372f0b1b963James Dong    .text
120c1bc742181ded4930842b46e9507372f0b1b963James Dong
13e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .extern   armVCM4P10_CAVLCCoeffTokenTables
14e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .extern   armVCM4P10_SuffixToLevel
15e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .extern   armVCM4P10_CAVLCTotalZeros2x2Tables
16e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .extern   armVCM4P10_CAVLCTotalZeroTables
17e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .extern   armVCM4P10_CAVLCRunBeforeTables
18e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .extern   armVCM4P10_ZigZag_2x2
19e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .extern   armVCM4P10_ZigZag_4x4
20e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel
21e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .hidden   armVCM4P10_CAVLCCoeffTokenTables
22e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .hidden   armVCM4P10_SuffixToLevel
23e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .hidden   armVCM4P10_CAVLCTotalZeros2x2Tables
24e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .hidden   armVCM4P10_CAVLCTotalZeroTables
25e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .hidden   armVCM4P10_CAVLCRunBeforeTables
26e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .hidden   armVCM4P10_ZigZag_2x2
27e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .hidden   armVCM4P10_ZigZag_4x4
28e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel
290c1bc742181ded4930842b46e9507372f0b1b963James Dong    .global armVCM4P10_DecodeCoeffsToPair
300c1bc742181ded4930842b46e9507372f0b1b963James Dong    .func   armVCM4P10_DecodeCoeffsToPair
310c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_DecodeCoeffsToPair:
320c1bc742181ded4930842b46e9507372f0b1b963James Dong    PUSH     {r4-r12,lr}
330c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      sp,sp,#0x40
340c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r10,[r0,#0]
350c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r12,[r1,#0]
3622e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    LDR      r6, .LarmVCM4P10_CAVLCCoeffTokenTables
3722e06318d04074d1a7c90caa173857abdcfd153eArd BiesheuvelP0: ADD      r6, pc
380c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r4,[sp,#0x68]
390c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRB     r9,[r10,#2]
400c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRB     r8,[r10,#1]
410c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRB     r11,[r10],#3
420c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r12,r12,#8
430c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r6,[r6,r4,LSL #2]
440c1bc742181ded4930842b46e9507372f0b1b963James Dong    ORR      r9,r9,r8,LSL #8
450c1bc742181ded4930842b46e9507372f0b1b963James Dong    ORR      r11,r9,r11,LSL #16
460c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSLS     r8,r11,r12
470c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOVS     r7,#0x1e
480c1bc742181ded4930842b46e9507372f0b1b963James Dong    AND      r7,r7,r8,LSR #27
490c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r12,r12,#8
500c1bc742181ded4930842b46e9507372f0b1b963James DongL0x44:
510c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L1
520c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRB     r8,[r10],#1
530c1bc742181ded4930842b46e9507372f0b1b963James DongL1:
540c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRH     r7,[r6,r7]
550c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDCC    r12,r12,#8
560c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r12,r12,#4
570c1bc742181ded4930842b46e9507372f0b1b963James Dong    ORRCS    r11,r8,r11,LSL #8
580c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSRS     r8,r7,#1
590c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCS      L0x74
600c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSLS     r8,r11,r12
610c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r12,r12,#0xa
620c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r7,r7,r8,LSR #29
630c1bc742181ded4930842b46e9507372f0b1b963James Dong    BIC      r7,r7,#1
640c1bc742181ded4930842b46e9507372f0b1b963James Dong    B        L0x44
650c1bc742181ded4930842b46e9507372f0b1b963James DongL0x74:
660c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r12,r12,r7,LSR #13
670c1bc742181ded4930842b46e9507372f0b1b963James Dong    BIC      r7,r8,#0xf000
680c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSRS     r5,r7,#2
690c1bc742181ded4930842b46e9507372f0b1b963James Dong    STRB     r5,[r2,#0]
700c1bc742181ded4930842b46e9507372f0b1b963James Dong    BEQ      L0x344
710c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r7,#0x44
720c1bc742181ded4930842b46e9507372f0b1b963James Dong    BGE      L0x33c
730c1bc742181ded4930842b46e9507372f0b1b963James Dong    STR      r0,[sp,#0]
740c1bc742181ded4930842b46e9507372f0b1b963James Dong    STR      r1,[sp,#4]
750c1bc742181ded4930842b46e9507372f0b1b963James Dong    STR      r3,[sp,#8]
760c1bc742181ded4930842b46e9507372f0b1b963James Dong    ANDS     r1,r7,#3
770c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r2,sp,#0xc
780c1bc742181ded4930842b46e9507372f0b1b963James Dong    BEQ      L0xd8
790c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,r1
800c1bc742181ded4930842b46e9507372f0b1b963James DongL0xac:
810c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSLS     r7,r11,r12
820c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r12,r12,#7
830c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L2
840c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRB     r8,[r10],#1
850c1bc742181ded4930842b46e9507372f0b1b963James DongL2:
860c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDCC    r12,r12,#8
870c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSR      r7,r7,#31
880c1bc742181ded4930842b46e9507372f0b1b963James Dong    ORRCS    r11,r8,r11,LSL #8
890c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r0,r0,#1
900c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r8,#1
910c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r8,r8,r7,LSL #1
920c1bc742181ded4930842b46e9507372f0b1b963James Dong    STRH     r8,[r2],#2
930c1bc742181ded4930842b46e9507372f0b1b963James Dong    BGT      L0xac
940c1bc742181ded4930842b46e9507372f0b1b963James DongL0xd8:
950c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r0,r5,r1
960c1bc742181ded4930842b46e9507372f0b1b963James Dong    BEQ      L0x1b8
970c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r4,#1
980c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r5,#0xa
990c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOVLE    r4,#0
1000c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r1,#3
1010c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOVLT    r1,#4
1020c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOVGE    r1,#2
1030c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOVGE    r4,#0
1040c1bc742181ded4930842b46e9507372f0b1b963James DongL0xfc:
1050c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSLS     r7,r11,r12
1060c1bc742181ded4930842b46e9507372f0b1b963James Dong    CLZ      r7,r7
1070c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r12,r12,r7
1080c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r12,r12,#7
1090c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L3
1100c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRB     r8,[r10],#1
1110c1bc742181ded4930842b46e9507372f0b1b963James Dong    ORR      r11,r8,r11,LSL #8
1120c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r12,r12,#8
1130c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L3
1140c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRB     r8,[r10],#1
1150c1bc742181ded4930842b46e9507372f0b1b963James DongL3:
1160c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDCC    r12,r12,#8
1170c1bc742181ded4930842b46e9507372f0b1b963James Dong    ORRCS    r11,r8,r11,LSL #8
1180c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r7,#0x10
1190c1bc742181ded4930842b46e9507372f0b1b963James Dong    BGE      L0x33c
1200c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOVS     lr,r4
1210c1bc742181ded4930842b46e9507372f0b1b963James Dong    TEQEQ    r7,#0xe
1220c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOVEQ    lr,#4
1230c1bc742181ded4930842b46e9507372f0b1b963James Dong    TEQ      r7,#0xf
1240c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOVEQ    lr,#0xc
1250c1bc742181ded4930842b46e9507372f0b1b963James Dong    TEQEQ    r4,#0
1260c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDEQ    r7,r7,#0xf
1270c1bc742181ded4930842b46e9507372f0b1b963James Dong    TEQ      lr,#0
1280c1bc742181ded4930842b46e9507372f0b1b963James Dong    BEQ      L0x184
1290c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSL      r3,r11,r12
1300c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r12,r12,lr
1310c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r12,r12,#8
1320c1bc742181ded4930842b46e9507372f0b1b963James Dong    RSB      r9,lr,#0x20
1330c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L4
1340c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRB     r8,[r10],#1
1350c1bc742181ded4930842b46e9507372f0b1b963James Dong    ORR      r11,r8,r11,LSL #8
1360c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r12,r12,#8
1370c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L4
1380c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRB     r8,[r10],#1
1390c1bc742181ded4930842b46e9507372f0b1b963James DongL4:
1400c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDCC    r12,r12,#8
1410c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSR      r3,r3,r9
1420c1bc742181ded4930842b46e9507372f0b1b963James Dong    ORRCS    r11,r8,r11,LSL #8
1430c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSL      r7,r7,r4
1440c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r7,r3,r7
1450c1bc742181ded4930842b46e9507372f0b1b963James DongL0x184:
1460c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r7,r7,r1
1470c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r1,#2
1480c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSRS     r8,r7,#1
1490c1bc742181ded4930842b46e9507372f0b1b963James Dong    RSBCS    r8,r8,#0
1500c1bc742181ded4930842b46e9507372f0b1b963James Dong    STRH     r8,[r2],#2
15122e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    LDR      r9, .LarmVCM4P10_SuffixToLevel
15222e06318d04074d1a7c90caa173857abdcfd153eArd BiesheuvelP1: ADD      r9, pc
1530c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRSB    r8,[r9,r4]
1540c1bc742181ded4930842b46e9507372f0b1b963James Dong    TEQ      r4,#0
1550c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOVEQ    r4,#1
1560c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r7,r8
1570c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDCS    r4,r4,#1
1580c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r0,r0,#1
1590c1bc742181ded4930842b46e9507372f0b1b963James Dong    BGT      L0xfc
1600c1bc742181ded4930842b46e9507372f0b1b963James DongL0x1b8:
1610c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r8,[sp,#0x6c]
1620c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r5,#1
1630c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r1,r8,r5
1640c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r4,sp,#0x2c
1650c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      lr,r5
1660c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      lr,lr,#1
1670c1bc742181ded4930842b46e9507372f0b1b963James Dong    BEQ      L0x2b0
1680c1bc742181ded4930842b46e9507372f0b1b963James Dong    TEQ      r8,#4
16922e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    LDREQ    r6, .LarmVCM4P10_CAVLCTotalZeros2x2Tables
17022e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    LDRNE    r6, .LarmVCM4P10_CAVLCTotalZeroTables
17122e06318d04074d1a7c90caa173857abdcfd153eArd BiesheuvelP2: ADD      r6, pc
1720c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r6,[r6,r5,LSL #2]
1730c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSLS     r8,r11,r12
1740c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOVS     r7,#0x1e
1750c1bc742181ded4930842b46e9507372f0b1b963James Dong    AND      r7,r7,r8,LSR #27
1760c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r12,r12,#8
1770c1bc742181ded4930842b46e9507372f0b1b963James DongL0x1f4:
1780c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L5
1790c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRB     r8,[r10],#1
1800c1bc742181ded4930842b46e9507372f0b1b963James DongL5:
1810c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRH     r7,[r6,r7]
1820c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDCC    r12,r12,#8
1830c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r12,r12,#4
1840c1bc742181ded4930842b46e9507372f0b1b963James Dong    ORRCS    r11,r8,r11,LSL #8
1850c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSRS     r8,r7,#1
1860c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCS      L0x224
1870c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSLS     r8,r11,r12
1880c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r12,r12,#0xa
1890c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r7,r7,r8,LSR #29
1900c1bc742181ded4930842b46e9507372f0b1b963James Dong    BIC      r7,r7,#1
1910c1bc742181ded4930842b46e9507372f0b1b963James Dong    B        L0x1f4
1920c1bc742181ded4930842b46e9507372f0b1b963James DongL0x224:
1930c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r12,r12,r7,LSR #13
1940c1bc742181ded4930842b46e9507372f0b1b963James Dong    BIC      r7,r8,#0xf000
1950c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r7,#0x10
1960c1bc742181ded4930842b46e9507372f0b1b963James Dong    BGE      L0x33c
19722e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    LDR      r3, .LarmVCM4P10_CAVLCRunBeforeTables
19822e06318d04074d1a7c90caa173857abdcfd153eArd BiesheuvelP3: ADD      r3, pc
1990c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r4,sp,#0x2c
2000c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOVS     r1,r7
2010c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      lr,lr,r1
2020c1bc742181ded4930842b46e9507372f0b1b963James Dong    BEQ      L0x2b0
2030c1bc742181ded4930842b46e9507372f0b1b963James DongL0x248:
2040c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r0,r0,#1
2050c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r6,[r3,r1,LSL #2]
2060c1bc742181ded4930842b46e9507372f0b1b963James Dong    BLT      L0x2bc
2070c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSLS     r8,r11,r12
2080c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOVS     r7,#0xe
2090c1bc742181ded4930842b46e9507372f0b1b963James Dong    AND      r7,r7,r8,LSR #28
2100c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r12,r12,#8
2110c1bc742181ded4930842b46e9507372f0b1b963James DongL0x264:
2120c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L6
2130c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRB     r8,[r10],#1
2140c1bc742181ded4930842b46e9507372f0b1b963James DongL6:
2150c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRH     r7,[r6,r7]
2160c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDCC    r12,r12,#8
2170c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r12,r12,#3
2180c1bc742181ded4930842b46e9507372f0b1b963James Dong    ORRCS    r11,r8,r11,LSL #8
2190c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSRS     r8,r7,#1
2200c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCS      L0x294
2210c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSLS     r8,r11,r12
2220c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r12,r12,#9
2230c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r7,r7,r8,LSR #29
2240c1bc742181ded4930842b46e9507372f0b1b963James Dong    BIC      r7,r7,#1
2250c1bc742181ded4930842b46e9507372f0b1b963James Dong    B        L0x264
2260c1bc742181ded4930842b46e9507372f0b1b963James DongL0x294:
2270c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r12,r12,r7,LSR #13
2280c1bc742181ded4930842b46e9507372f0b1b963James Dong    BIC      r7,r8,#0xf000
2290c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r7,#0xf
2300c1bc742181ded4930842b46e9507372f0b1b963James Dong    BGE      L0x33c
2310c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r1,r1,r7
2320c1bc742181ded4930842b46e9507372f0b1b963James Dong    STRB     r7,[r4],#1
2330c1bc742181ded4930842b46e9507372f0b1b963James Dong    BGT      L0x248
2340c1bc742181ded4930842b46e9507372f0b1b963James DongL0x2b0:
2350c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r0,r0,#1
2360c1bc742181ded4930842b46e9507372f0b1b963James Dong    BLT      L7
2370c1bc742181ded4930842b46e9507372f0b1b963James Dong    STRB     r1,[r4],#1
2380c1bc742181ded4930842b46e9507372f0b1b963James DongL7:
2390c1bc742181ded4930842b46e9507372f0b1b963James Dong    BGT      L0x2b0
2400c1bc742181ded4930842b46e9507372f0b1b963James DongL0x2bc:
2410c1bc742181ded4930842b46e9507372f0b1b963James Dong    STRB     r1,[r4],#1
2420c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r8,[sp,#0x6c]
2430c1bc742181ded4930842b46e9507372f0b1b963James Dong    TEQ      r8,#0xf
2440c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDEQ    lr,lr,#1
2450c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r4,r4,r5
2460c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r2,r2,r5
2470c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r2,r2,r5
2480c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r3,[sp,#8]
2490c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r0,[r3,#0]
2500c1bc742181ded4930842b46e9507372f0b1b963James Dong    TEQ      r8,#4
25122e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    LDREQ    r6, .LarmVCM4P10_ZigZag_2x2
25222e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    LDRNE    r6, .LarmVCM4P10_ZigZag_4x4
25322e06318d04074d1a7c90caa173857abdcfd153eArd BiesheuvelP4: ADD      r6, pc
2540c1bc742181ded4930842b46e9507372f0b1b963James DongL0x2ec:
2550c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRB     r9,[r4],#1
2560c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRB     r8,[r6,lr]
2570c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      lr,lr,#1
2580c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      lr,lr,r9
2590c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRSH    r9,[r2],#2
2600c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r5,r5,#1
2610c1bc742181ded4930842b46e9507372f0b1b963James Dong    ORREQ    r8,r8,#0x20
2620c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r1,r9,#0x80
2630c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r1,#0x100
2640c1bc742181ded4930842b46e9507372f0b1b963James Dong    ORRCS    r8,r8,#0x10
2650c1bc742181ded4930842b46e9507372f0b1b963James Dong    TEQ      r5,#0
2660c1bc742181ded4930842b46e9507372f0b1b963James Dong    STRB     r8,[r0],#1
2670c1bc742181ded4930842b46e9507372f0b1b963James Dong    STRB     r9,[r0],#1
2680c1bc742181ded4930842b46e9507372f0b1b963James Dong    LSR      r9,r9,#8
2690c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L8
2700c1bc742181ded4930842b46e9507372f0b1b963James Dong    STRB     r9,[r0],#1
2710c1bc742181ded4930842b46e9507372f0b1b963James DongL8:
2720c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x2ec
2730c1bc742181ded4930842b46e9507372f0b1b963James Dong    STR      r0,[r3,#0]
2740c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r0,[sp,#0]
2750c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r1,[sp,#4]
2760c1bc742181ded4930842b46e9507372f0b1b963James Dong    B        L0x344
2770c1bc742181ded4930842b46e9507372f0b1b963James DongL0x33c:
2780c1bc742181ded4930842b46e9507372f0b1b963James Dong    MVN      r0,#1
2790c1bc742181ded4930842b46e9507372f0b1b963James Dong    B        L0x35c
2800c1bc742181ded4930842b46e9507372f0b1b963James DongL0x344:
2810c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r10,r10,r12,LSR #3
2820c1bc742181ded4930842b46e9507372f0b1b963James Dong    AND      r12,r12,#7
2830c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r10,r10,#4
2840c1bc742181ded4930842b46e9507372f0b1b963James Dong    STR      r12,[r1,#0]
2850c1bc742181ded4930842b46e9507372f0b1b963James Dong    STR      r10,[r0,#0]
2860c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,#0
2870c1bc742181ded4930842b46e9507372f0b1b963James DongL0x35c:
2880c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      sp,sp,#0x40
2890c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r12,pc}
2900c1bc742181ded4930842b46e9507372f0b1b963James Dong    .endfunc
2910c1bc742181ded4930842b46e9507372f0b1b963James Dong
29222e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel.LarmVCM4P10_CAVLCCoeffTokenTables:
29322e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    .word   armVCM4P10_CAVLCCoeffTokenTables-(P0+8)
29422e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel.LarmVCM4P10_SuffixToLevel:
29522e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    .word   armVCM4P10_SuffixToLevel-(P1+8)
29622e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel.LarmVCM4P10_CAVLCTotalZeros2x2Tables:
29722e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    .word   (armVCM4P10_CAVLCTotalZeros2x2Tables - 4)-(P2+8)
29822e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel.LarmVCM4P10_CAVLCTotalZeroTables:
29922e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    .word   (armVCM4P10_CAVLCTotalZeroTables - 4)-(P2+8)
30022e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel.LarmVCM4P10_CAVLCRunBeforeTables:
30122e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    .word   (armVCM4P10_CAVLCRunBeforeTables - 4)-(P3+8)
30222e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel.LarmVCM4P10_ZigZag_2x2:
30322e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    .word   armVCM4P10_ZigZag_2x2-(P4+8)
30422e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel.LarmVCM4P10_ZigZag_4x4:
30522e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    .word   armVCM4P10_ZigZag_4x4-(P4+8)
3060c1bc742181ded4930842b46e9507372f0b1b963James Dong
30722e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    .end
308