This source file includes following definitions.
- change_video_tables
- movie_record_task
- sub_FFD1B97C_my
- sub_FFE150B0_my
1 #include "conf.h"
2
3 int *video_quality = &conf.video_quality;
4 int *video_mode = &conf.video_mode;
5
6 long def_table[24]={0x2000, 0x38D, 0x788, 0x5800, 0x9C5, 0x14B8, 0x10000, 0x1C6A, 0x3C45, 0x8000, 0xE35, 0x1E23,
7 0x1CCD, -0x2E1, -0x579, 0x4F33, -0x7EB, -0xF0C, 0xE666, -0x170A, -0x2BC6, 0x7333, -0xB85, -0x15E3};
8
9 long table[24];
10
11 void change_video_tables(int a, int b){
12 int i;
13 for (i=0;i<24;i++) table[i]=(def_table[i]*a)/b;
14 }
15
16 long CompressionRateTable[]={0x60, 0x5D, 0x5A, 0x57, 0x54, 0x51, 0x4D, 0x48, 0x42, 0x3B, 0x32, 0x29, 0x22, 0x1D, 0x17, 0x14, 0x10, 0xE, 0xB, 9, 7, 6, 5, 4, 3, 2, 1};
17
18
19 void __attribute__((naked,noinline)) movie_record_task(){
20 asm volatile(
21 " STMFD SP!, {R2-R8,LR} \n"
22 " LDR R8, =0x346 \n"
23 " LDR R7, =0x2710 \n"
24 " LDR R4, =0x5748 \n"
25 " MOV R6, #0 \n"
26 " MOV R5, #1 \n"
27 "loc_FFD1BE78:\n"
28 " LDR R0, [R4, #0x18] \n"
29 " MOV R2, #0 \n"
30 " ADD R1, SP, #4 \n"
31 " BL sub_FFC2936C \n"
32 " LDR R0, [R4, #0x20] \n"
33 " CMP R0, #0 \n"
34 " BNE loc_FFD1BF48 \n"
35 " LDR R0, [SP, #4] \n"
36 " LDR R1, [R0] \n"
37 " SUB R1, R1, #2 \n"
38 " CMP R1, #9 \n"
39 " ADDLS PC, PC, R1, LSL #2 \n"
40 " B loc_FFD1BF48 \n"
41 " B loc_FFD1BEFC \n"
42 " B loc_FFD1BF1C \n"
43 " B loc_FFD1BF2C \n"
44 " B loc_FFD1BF34 \n"
45 " B loc_FFD1BF04 \n"
46 " B loc_FFD1BF3C \n"
47 " B loc_FFD1BF0C \n"
48 " B loc_FFD1BF48 \n"
49 " B loc_FFD1BF44 \n"
50 " B loc_FFD1BED4 \n"
51 "loc_FFD1BED4:\n"
52 " LDR R0, =0xFFD1BB7C \n"
53 " STR R6, [R4, #0x34] \n"
54 " STR R0, [R4, #0xA8] \n"
55 " LDR R0, =0xFFD1B59C \n"
56 " LDR R2, =0xFFD1B4B8 \n"
57 " LDR R1, =0x72318 \n"
58 " STR R6, [R4, #0x24] \n"
59 " BL sub_FFCBDCC4 \n"
60 " STR R5, [R4, #0x38] \n"
61 " B loc_FFD1BF48 \n"
62 "loc_FFD1BEFC:\n"
63 "BL unlock_optical_zoom\n"
64 " BL sub_FFD1BC74 \n"
65 " B loc_FFD1BF48 \n"
66 "loc_FFD1BF04:\n"
67
68 " BL sub_FFD1B97C_my \n"
69 " B loc_FFD1BF48 \n"
70 "loc_FFD1BF0C:\n"
71 " LDR R1, [R0, #0x10] \n"
72 " LDR R0, [R0, #4] \n"
73 " BL sub_FFE16D64 \n"
74 " B loc_FFD1BF48 \n"
75 "loc_FFD1BF1C:\n"
76 " LDR R0, [R4, #0x38] \n"
77 " CMP R0, #5 \n"
78 " STRNE R5, [R4, #0x28] \n"
79 " B loc_FFD1BF48 \n"
80 "loc_FFD1BF2C:\n"
81 " BL sub_FFD1B758 \n"
82 " B loc_FFD1BF48 \n"
83 "loc_FFD1BF34:\n"
84 " BL sub_FFD1B5E8 \n"
85 " B loc_FFD1BF48 \n"
86 "loc_FFD1BF3C:\n"
87 " BL sub_FFD1B444 \n"
88 " B loc_FFD1BF48 \n"
89 "loc_FFD1BF44:\n"
90 " BL sub_FFD1C0B0 \n"
91 "loc_FFD1BF48:\n"
92 " LDR R1, [SP, #4] \n"
93 " LDR R3, =0xFFD1B2D4 \n"
94 " STR R6, [R1] \n"
95 " STR R8, [SP] \n"
96 " LDR R0, [R4, #0x1C] \n"
97 " MOV R2, R7 \n"
98 " BL sub_FFC29CC0 \n"
99 " B loc_FFD1BE78 \n"
100 );
101 }
102
103 void __attribute__((naked,noinline)) sub_FFD1B97C_my(){
104 asm volatile(
105 " STMFD SP!, {R4-R8,LR} \n"
106 " SUB SP, SP, #0x40 \n"
107 " MOV R6, #0 \n"
108 " LDR R5, =0x5748 \n"
109 " MOV R4, R0 \n"
110 " STR R6, [SP, #0x30] \n"
111 " STR R6, [SP, #0x28] \n"
112 " LDR R0, [R5, #0x38] \n"
113 " MOV R8, #4 \n"
114 " CMP R0, #3 \n"
115 " STREQ R8, [R5, #0x38] \n"
116 " LDR R0, [R5, #0xA8] \n"
117 " BLX R0 \n"
118 " LDR R0, [R5, #0x38] \n"
119 " CMP R0, #4 \n"
120 " BNE loc_FFD1BA54 \n"
121 " ADD R3, SP, #0x28 \n"
122 " ADD R2, SP, #0x2C \n"
123 " ADD R1, SP, #0x30 \n"
124 " ADD R0, SP, #0x34 \n"
125 " BL sub_FFE16EF8 \n"
126 " CMP R0, #0 \n"
127 " MOV R7, #1 \n"
128 " BNE loc_FFD1B9F8 \n"
129 " LDR R1, [R5, #0x28] \n"
130 " CMP R1, #1 \n"
131 " BNE loc_FFD1BA5C \n"
132 " LDR R1, [R5, #0x60] \n"
133 " LDR R2, [R5, #0x3C] \n"
134 " CMP R1, R2 \n"
135 " BCC loc_FFD1BA5C \n"
136 "loc_FFD1B9F8:\n"
137 " CMP R0, #0x80000001 \n"
138 " STREQ R8, [R5, #0x64] \n"
139 " BEQ loc_FFD1BA30 \n"
140 " CMP R0, #0x80000003 \n"
141 " STREQ R7, [R5, #0x64] \n"
142 " BEQ loc_FFD1BA30 \n"
143 " CMP R0, #0x80000005 \n"
144 " MOVEQ R0, #2 \n"
145 " BEQ loc_FFD1BA2C \n"
146 " CMP R0, #0x80000007 \n"
147 " STRNE R6, [R5, #0x64] \n"
148 " BNE loc_FFD1BA30 \n"
149 " MOV R0, #3 \n"
150 "loc_FFD1BA2C:\n"
151 " STR R0, [R5, #0x64] \n"
152 "loc_FFD1BA30:\n"
153 " LDR R0, =0x72348 \n"
154 " LDR R0, [R0, #8] \n"
155 " CMP R0, #0 \n"
156 " BEQ loc_FFD1BA48 \n"
157 " BL sub_FFC48DE4 \n"
158 " B loc_FFD1BA4C \n"
159 "loc_FFD1BA48:\n"
160 " BL sub_FFD1B444 \n"
161 "loc_FFD1BA4C:\n"
162 " MOV R0, #5 \n"
163 " STR R0, [R5, #0x38] \n"
164 "loc_FFD1BA54:\n"
165 " ADD SP, SP, #0x40 \n"
166 " LDMFD SP!, {R4-R8,PC} \n"
167 "loc_FFD1BA5C:\n"
168 " LDR LR, [SP, #0x30] \n"
169 " CMP LR, #0 \n"
170 " BEQ loc_FFD1BB24 \n"
171 " STR R7, [R5, #0x2C] \n"
172 " LDR R0, [R5, #0x7C] \n"
173 " LDR R1, [R4, #0x14] \n"
174 " LDR R2, [R4, #0x18] \n"
175 " LDR R12, [R4, #0xC] \n"
176 " ADD R3, SP, #0x38 \n"
177 " ADD R8, SP, #0x14 \n"
178 " STMIA R8, {R0-R3} \n"
179 " LDR R3, [R5, #0x68] \n"
180 " ADD R2, SP, #0x3C \n"
181 " ADD R8, SP, #8 \n"
182 " LDRD R0, [SP, #0x28] \n"
183 " STMIA R8, {R0,R2,R3} \n"
184 " STR R1, [SP, #4] \n"
185 " STR LR, [SP] \n"
186 " LDMIB R4, {R0,R1} \n"
187 " LDR R3, [SP, #0x34] \n"
188 " MOV R2, R12 \n"
189 " BL sub_FFDEA46C \n"
190 " LDR R0, [R5, #0x10] \n"
191 " LDR R1, [R5, #0x58] \n"
192 " BL sub_FFC29788 \n"
193 " CMP R0, #9 \n"
194 " BNE loc_FFD1BAD8 \n"
195 " BL sub_FFE174E4 \n"
196 " MOV R0, #0x90000 \n"
197 " STR R7, [R5, #0x38] \n"
198 " B loc_FFD1BAF0 \n"
199 "loc_FFD1BAD8:\n"
200 " LDR R0, [SP, #0x38] \n"
201 " CMP R0, #0 \n"
202 " BEQ loc_FFD1BAF8 \n"
203 " BL sub_FFE174E4 \n"
204 " MOV R0, #0xA0000 \n"
205 " STR R7, [R5, #0x38] \n"
206 "loc_FFD1BAF0:\n"
207 " BL sub_FFC747A4 \n"
208 " B loc_FFD1BA54 \n"
209 "loc_FFD1BAF8:\n"
210 " BL sub_FFDEA530 \n"
211 " LDR R0, [SP, #0x34] \n"
212 " LDR R1, [SP, #0x3C] \n"
213 " BL sub_FFE1728C \n"
214 " LDR R0, [R5, #0x5C] \n"
215 " LDR R1, =0x57C4 \n"
216 " ADD R0, R0, #1 \n"
217 " STR R0, [R5, #0x5C] \n"
218 " LDR R0, [SP, #0x3C] \n"
219 " MOV R2, #0 \n"
220
221 " BL sub_FFE150B0_my \n"
222
223 "loc_FFD1BB24:\n"
224 " LDR R0, [R5, #0x60] \n"
225 " ADD R0, R0, #1 \n"
226 " STR R0, [R5, #0x60] \n"
227 " LDR R1, [R5, #0x4C] \n"
228 " MUL R0, R1, R0 \n"
229 " LDR R1, [R5, #0x48] \n"
230 " BL sub_FFEA4864 \n"
231 " MOV R4, R0 \n"
232 " BL sub_FFE1751C \n"
233 " LDR R1, [R5, #0x80] \n"
234 " CMP R1, R4 \n"
235 " BNE loc_FFD1BB60 \n"
236 " LDR R0, [R5, #0x30] \n"
237 " CMP R0, #1 \n"
238 " BNE loc_FFD1BB74 \n"
239 "loc_FFD1BB60:\n"
240 " LDR R1, [R5, #0x8C] \n"
241 " MOV R0, R4 \n"
242 " BLX R1 \n"
243 " STR R4, [R5, #0x80] \n"
244 " STR R6, [R5, #0x30] \n"
245 "loc_FFD1BB74:\n"
246 " STR R6, [R5, #0x2C] \n"
247 " B loc_FFD1BA54 \n"
248
249 );
250 };
251
252 void __attribute__((naked,noinline)) sub_FFE150B0_my(){
253 asm volatile(
254 " STMFD SP!, {R4-R8,LR} \n"
255 " LDR R4, =0x9000 \n"
256 " LDR LR, [R4] \n"
257 " LDR R2, [R4, #8] \n"
258 " CMP LR, #0 \n"
259 " LDRNE R3, [R4, #0xC] \n"
260 " MOV R5, R2 \n"
261 " CMPNE R3, #1 \n"
262 " MOVEQ R2, #0 \n"
263 " STREQ R0, [R4] \n"
264 " STREQ R2, [R4, #0xC] \n"
265 " BEQ loc_FFE1517C \n"
266 " LDR R3, [R4, #4] \n"
267 " LDR R7, =0xFFEED72C \n"
268 " ADD R12, R3, R3, LSL #1 \n"
269 " LDR R3, [R7, R12, LSL #2] \n"
270 " ADD R6, R7, #0x30 \n"
271 " LDR R8, [R6, R12, LSL #2] \n"
272 " SUB R3, LR, R3 \n"
273 " CMP R3, #0 \n"
274 " SUB LR, LR, R8 \n"
275 " BLE loc_FFE15138 \n"
276 " ADD R12, R7, R12, LSL #2 \n"
277 " LDR LR, [R12, #4] \n"
278 " CMP LR, R3 \n"
279 " ADDGE R2, R2, #1 \n"
280 " BGE loc_FFE1512C \n"
281 " LDR R12, [R12, #8] \n"
282 " CMP R12, R3 \n"
283 " ADDLT R2, R2, #3 \n"
284 " ADDGE R2, R2, #2 \n"
285 "loc_FFE1512C:\n"
286
287
288 "CMP R2, #0x1A\n"
289 "MOVGE R2, #0x19\n"
290 " B loc_FFE1516C \n"
291 "loc_FFE15138:\n"
292 " CMP LR, #0 \n"
293 " BGE loc_FFE1516C \n"
294 " ADD R3, R6, R12, LSL #2 \n"
295 " LDR R12, [R3, #4] \n"
296 " CMP R12, LR \n"
297 " SUBLE R2, R2, #1 \n"
298 " BLE loc_FFE15164 \n"
299 " LDR R3, [R3, #8] \n"
300 " CMP R3, LR \n"
301 " SUBGT R2, R2, #3 \n"
302 " SUBLE R2, R2, #2 \n"
303 "loc_FFE15164:\n"
304 " CMP R2, #0 \n"
305 " MOVLT R2, #0 \n"
306 "loc_FFE1516C:\n"
307 " CMP R2, R5 \n"
308 " STRNE R2, [R4, #8] \n"
309 " MOVNE R2, #1 \n"
310 " STRNE R2, [R4, #0xC] \n"
311 "loc_FFE1517C:\n"
312 " LDR R2, =CompressionRateTable \n"
313 " LDR R3, [R4, #8] \n"
314 " LDR R2, [R2, R3, LSL #2] \n"
315
316 "LDR R3, =video_mode\n"
317 "LDR R3, [R3]\n"
318 "LDR R3, [R3]\n"
319 "CMP R3, #1\n"
320 "LDREQ R3, =video_quality\n"
321 "LDREQ R3, [R3]\n"
322 "LDREQ R2, [R3]\n"
323
324 " STR R2, [R1] \n"
325 " STR R0, [R4] \n"
326 " LDMFD SP!, {R4-R8,PC} \n"
327 );
328 }