1d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ ------------------------------------------------------------------
2d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ Copyright (C) 1998-2009 PacketVideo
3d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@
4d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ Licensed under the Apache License, Version 2.0 (the "License");
5d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ you may not use this file except in compliance with the License.
6d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ You may obtain a copy of the License at
7d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@
8d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@      http://www.apache.org/licenses/LICENSE-2.0
9d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@
10d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ Unless required by applicable law or agreed to in writing, software
11d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ distributed under the License is distributed on an "AS IS" BASIS,
12d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ express or implied.
14d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ See the License for the specific language governing permissions
15d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ and limitations under the License.
16d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ -------------------------------------------------------------------
17d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
18d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@
19d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@
20d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@   Filename: pvmp3_dct_18_gcc.s
21d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@
22d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@------------------------------------------------------------------------------
23d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ REVISION HISTORY
24d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@
25d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@
26d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ Who:                                   Date: MM/DD/YYYY
27d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ Description:
28d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@
29d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@------------------------------------------------------------------------------
30d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
31d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber.arm
32d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
33d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber.align 4
34d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
35d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber.text
36d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
37d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber.extern  pvmp3_dct_9
38d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
39d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@------------------------------------------------------------------------------
40d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
41d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber.global pvmp3_mdct_18
42d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
43d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberpvmp3_mdct_18:
44d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        stmfd    sp!,{r4-r11,lr}
45d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r7,r2
469a2c14b2c96625d5be73e1a7627f5d2a3091c4a2Ard Biesheuvel        adr      r2,constdata$1
47d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r6,r1
48d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r3,r2,#0x24
49d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r12,r3,#0x44
50d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r1,r0,#0x44
51d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r5,r0
52d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
53d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    for ( i=9@ i!=0@ i--)
54d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    {
55d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
56d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r4,#9
57d9618f23226f46c752e56f712bc4b505117d8b4bAndreas HuberLoop_1:
58d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
59d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@       tmp  = *(pt_vec)
60d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@		tmp1 = *(pt_vec_o)
61d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
62d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      lr,[r0]		@@ tmp  == lr
63d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r8,[r3],#4		@@ tmp1 == r8
64d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
65d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@        tmp  = fxp_mul32_Q32( tmp<<1,  *(pt_cos++  ))
66d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@        tmp1 = fxp_mul32_Q27( tmp1, *(pt_cos_x--))
67d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
68d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      lr,lr,lsl #1
69d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r10,lr,r8,lr
70d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r8,[r12],#-4
71d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r9,[r1]
72d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        subs     r4,r4,#1
73d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r9,r10,r8,r9
74d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r8,r9,lsr #27
75d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r8,r8,r10,lsl #5
76d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
77d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@        *(pt_vec++)   =   tmp + tmp1
78d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@        *(pt_vec_o--) = fxp_mul32_Q28( (tmp - tmp1), *(pt_cos_split++))
79d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
80d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r9,lr,r8
81d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        sub      r8,lr,r8
82d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      lr,[r2],#4
83d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r9,[r0],#4
84d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r8,r9,lr,r8
85d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      lr,r8,lsr #28
86d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      lr,lr,r9,lsl #4
87d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      lr,[r1],#-4
88d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        bne      Loop_1
89d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
90d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@		}
91d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
92d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r0,r5			@@ r0 = vec
93d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        bl       pvmp3_dct_9
94d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r0,r5,#0x24	@@ r0 = &vec[9]
95d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        bl       pvmp3_dct_9
96d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
97d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r5,#0x20]
98d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r2,[r5,#0x40]
99d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r0,[r5,#0x40]
100d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r5,#0x1c]
101d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r3,[r5,#0x38]
102d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r0,[r5,#0x38]
103d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r5,#0x18]
104d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r5,#0x30]
105d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r1,[r5,#0x30]
106d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r5,#0x14]
107d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r5,#0x28]
108d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r12,[r5,#0x28]
109d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r5,#0x10]
110d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r12,[r5,#0x20]
111d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r5,#0xc]
112d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r12,[r5,#0x18]
113d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r5,#8]
114d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r12,[r5,#0x10]
115d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r5,#4]
116d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r12,[r5,#8]
117d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r5,#0x24]
118d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        sub      r12,r12,r1
119d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r12,[r5,#4]
120d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r5,#0x2c]
121d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        sub      r1,r12,r1
122d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r1,[r5,#0xc]
123d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        sub      r1,r12,r0
124d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r1,[r5,#0x14]
125d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r5,#0x34]
126d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        sub      r0,r1,r0
127d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r0,[r5,#0x1c]
128d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        sub      r0,r1,r3
129d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r0,[r5,#0x24]
130d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r5,#0x3c]
131d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        sub      r3,r1,r3
132d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        sub      r1,r1,r2
133d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r1,[r5,#0x34]
134d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r3,[r5,#0x2c]
135d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r5,#0x44]
136d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        sub      r1,r1,r2
137d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r1,[r5,#0x3c]
138d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r5,#0]
139d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
140d9618f23226f46c752e56f712bc4b505117d8b4bAndreas HuberLoop_2:
141d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r1,r5,r4,lsl #2
142d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r2,[r1,#0x28]
143d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r3,[r6,r4,lsl #2]
144d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r0,r0,r2
145d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r0,[r1,#0x28]
146d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      lr,[r7,r4,lsl #2]
147d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r1,#4]
148d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r0,r3,lr,r0
149d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r0,r2
150d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r2,r12,r1
151d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        rsb      r2,r2,#0
152d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r3,[r5,r4,lsl #2]
153d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r2,[r6,r4,lsl #2]
154d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r4,r4,#1
155d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        cmp      r4,#6
156d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r12,r1
157d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
158d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        blt      Loop_2
159d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
160d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r5,#0x40]
161d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r2,[r6,#0x18]
162d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r3,r0,r1
163d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r3,[r5,#0x40]
164d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      lr,[r7,r4,lsl #2]
165d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r3,r3,lsl #1
166d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r5,#0x1c]
167d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r3,r2,lr,r3
168d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r3,r12,r0
169d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r2,[r5,#0x18]
170d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r2,[r6,#0x1c]
171d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        rsb      r3,r3,#0
172d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r3,[r6,#0x18]
173d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r3,[r5,#0x20]
174d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r0,r3,r0
175d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        rsb      r0,r0,#0
176d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r0,[r6,#0x1c]
177d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r3,[r5,#0x44]
178d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r6,#0x20]
179d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r3,r3,r1
180d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r1,r2
181d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r10,[r7,#0x1c]
182d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r2,r3,lsl #1
183d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r12,r1,r10,r2
184d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r1,[r5,#0x1c]
185d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r5,#0x20]
186d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r3,[r5,#0x24]
187d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r1,r1,r3
188d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        rsb      r1,r1,#0
189d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r1,[r6,#0x20]
190d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r5,#0x44]
191d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r3,[r7,#0x20]
192d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r1,r1,lsl #1
193d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r12,r0,r3,r1
194d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      lr,[r7,#0x24]
195d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r3,[r6,#0x24]
196d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r0,[r5,#0x20]
197d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r1,r3,lr,r1
198d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r6,#0x40]
199d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r6,#0x44]
200d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r3,[r5,#0x24]
201d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r5,#0x28]
202d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r3,[r7,#0x44]
203d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r1,r1,lsl #1
204d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r1,r12,r3,r1
205d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r5,#0x40]
206d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r12,[r5,#0x44]
207d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        rsb      r8,r1,#0
208d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r8,[r5,#0x28]
209d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r5,#0x2c]
210d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r3,[r7,#0x40]
211d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r1,r1,lsl #1
212d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r1,r0,r3,r1
213d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r0,[r5,#0x40]
214d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r5,#0x3c]
215d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r6,#0x38]
216d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r3,[r6,#0x3c]
217d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        rsb      r9,r0,#0
218d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r9,[r5,#0x2c]
219d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r5,#0x30]
220d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r7,#0x3c]
221d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r0,r0,lsl #1
222d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r0,r3,r12,r0
223d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r3,[r5,#0x3c]
224d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r5,#0x38]
225d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        rsb      r0,r0,#0
226d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r0,[r5,#0x30]
227d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r3,[r5,#0x34]
228d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r7,#0x38]
229d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r3,r3,lsl #1
230d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r3,r1,r12,r3
231d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r0,r0,lsl #1
232d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r1,[r5,#0x38]
233d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r4,[r7,#0x34]
234d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r6,#0x34]
235d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r3,[r6,#0x30]
236d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r0,r1,r4,r0
237d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r6,#0x2c]
238d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      lr,[r6,#0x28]
239d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r1,[r5,#0x34]
240d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r7,#0x30]
241d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r0,r9,lsl #1
242d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r0,r3,r1,r0
243d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r0,r8,lsl #1
244d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r7,#0x2c]
245d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r3,[r5,#0x30]
246d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r0,r12,r1,r0
247d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r7,#0x28]
248d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r12,[r5,#0x2c]
249d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r2,lr,r0,r2
250d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      lr,[r5,#0x28]
251d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r6,#4]
252d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r7,#0x48]
253d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r2,r1,lsl #1
254d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r1,[r6,#0x20]
255d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r6,#0]
256d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r1,r1,lsl #1
257d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r4,lr,r12,r1
258d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r3,[r6,#0x1c]
259d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      lr,[r6,#0]
260d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r7,#0x4c]
261d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r3,r3,lsl #1
262d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r4,lr,r12,r3
263d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r0,r0,lsl #1
264d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r7,#0x64]
265d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      lr,[r6,#4]
266d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r4,lr,r12,r2
267d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r7,#0x68]
268d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      lr,[r6,#0x1c]
269d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r4,lr,r12,r0
270d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r7,#0x6c]
271d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      lr,[r6,#0x20]
272d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    lr,r0,r12,r0
273d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r7,#0x70]
274d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r0,[r6,#0x24]
275d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r0,r2,r12,r2
276d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r7,#0x88]
277d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r2,[r6,#0x28]
278d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r3,r2,r0,r3
279d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r7,#0x8c]
280d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r2,[r6,#0x40]
281d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r2,r1,r0,r1
282d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r1,[r6,#0x44]
283d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r6,#0x18]
284d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      lr,[r7,#0x50]
285d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r1,r0,lsl #1
286d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r6,#0x14]
287d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r5,r4,lr,r1
288d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r3,r0,lsl #1
289d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r6,#0x10]
290d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r12,r0,lsl #1
291d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r6,#0xc]
292d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r2,r0,lsl #1
293d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r6,#8]
294d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r4,[r6,#8]
295d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      lr,[r7,#0x54]
296d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r0,r0,lsl #1
297d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r5,r4,lr,r3
298d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      lr,[r7,#0x58]
299d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r4,[r6,#0xc]
300d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r5,r4,lr,r12
301d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      lr,[r7,#0x5c]
302d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r4,[r6,#0x10]
303d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r5,r4,lr,r2
304d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      lr,[r7,#0x60]
305d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r4,[r6,#0x14]
306d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r5,r4,lr,r0
307d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      lr,[r7,#0x74]
308d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r4,[r6,#0x18]
309d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r4,r0,lr,r0
310d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      lr,[r7,#0x78]
311d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r0,[r6,#0x2c]
312d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r0,r2,lr,r2
313d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r7,#0x7c]
314d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r2,[r6,#0x30]
315d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r12,r2,r0,r12
316d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r7,#0x80]
317d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r2,[r6,#0x34]
318d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r3,r2,r0,r3
319d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r0,[r7,#0x84]
320d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r2,[r6,#0x38]
321d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r2,r1,r0,r1
322d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r1,[r6,#0x3c]
323d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldmfd    sp!,{r4-r11,pc}
324d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
325d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@------------------------------------------------------------------------------
326d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
327d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberconstdata$1:
328d9618f23226f46c752e56f712bc4b505117d8b4bAndreas HubercosTerms_dct18:
329d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x0807d2b0
330d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x08483ee0
331d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x08d3b7d0
332d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x09c42570
333d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x0b504f30
334d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x0df29440
335d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x12edfb20
336d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x1ee8dd40
337d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x5bca2a00
338d9618f23226f46c752e56f712bc4b505117d8b4bAndreas HubercosTerms_1_ov_cos_phi:
339d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x400f9c00
340d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x408d6080
341d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x418dcb80
342d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x431b1a00
343d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x4545ea00
344d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x48270680
345d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x4be25480
346d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x50ab9480
347d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x56ce4d80
348d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x05ebb630
349d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x06921a98
350d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x0771d3a8
351d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x08a9a830
352d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x0a73d750
353d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x0d4d5260
354d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x127b1ca0
355d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x1ea52b40
356d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x5bb3cc80
357d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
358