This source file includes following definitions.
- log_capt_seq
- log_capt_seq2
- log_capt_seq_override
- captseq_raw_addr_init_my
- clear_current_raw_addr
- capt_seq_task
- sub_fc1dcaa8_my
- sub_fc1dc8d2_my
- sub_fc39ff7c_my
- log_remote_hook
- log_rh
- exp_drv_task
- sub_fc28edc8_my
- sub_fc16d658_my
1 #include "lolevel.h"
2 #include "platform.h"
3 #include "core.h"
4 #include "conf.h"
5 #define NR_AUTO (0)
6 static long *nrflag = (long*)0x1e858;
7 extern int active_raw_buffer;
8
9 extern void _LogCameraEvent(int id,const char *fmt,...);
10
11 extern char *hook_raw_image_addr(void);
12
13 void log_capt_seq(int m)
14 {
15 _LogCameraEvent(0x60,"cs m:%d arb:%d rb:0x%08x i:%04d",
16 m,
17 active_raw_buffer,
18 hook_raw_image_addr(),
19 get_exposure_counter());
20 }
21
22 void log_capt_seq2(int m)
23 {
24 _LogCameraEvent(0x60,"cs end m:%d arb:%d rb:0x%08x i:%04d",
25 m,
26 active_raw_buffer,
27 hook_raw_image_addr(),
28 get_exposure_counter());
29 }
30 void log_capt_seq_override(void)
31 {
32 _LogCameraEvent(0x60,"cs override arb:%d rb:0x%08x i:%04d",
33 active_raw_buffer,
34 hook_raw_image_addr(),
35 get_exposure_counter());
36 }
37
38
39 #include "../../../generic/capt_seq.c"
40 extern int _captseq_raw_addr_init(int raw_index, char **ptr) ;
41 char *current_raw_addr;
42
43 void captseq_raw_addr_init_my(int raw_index,char **ptr) {
44 _captseq_raw_addr_init(raw_index,ptr);
45 current_raw_addr=*(ptr + 0x5c/4);
46 #ifdef CAPTSEQ_DEBUG_LOG
47 _LogCameraEvent(0x60,"rawinit i:0x%x p:0x%x v:0x%x",raw_index,ptr,current_raw_addr);
48 #endif
49 }
50
51 void clear_current_raw_addr(void) {
52 current_raw_addr=NULL;
53 }
54
55
56 void __attribute__((naked,noinline)) capt_seq_task() {
57 asm volatile (
58
59 " push {r3, r4, r5, r6, r7, lr}\n"
60 " ldr r4, =0x0003c478\n"
61 " movs r6, #0\n"
62 " ldr r5, =0x0000ba2c\n"
63 "loc_fc152766:\n"
64 " movs r2, #0\n"
65 " mov r1, sp\n"
66 " ldr r0, [r5, #8]\n"
67 " blx sub_fc2cf34c\n"
68 " lsls r0, r0, #0x1f\n"
69 " beq loc_fc152788\n"
70 " movw r2, #0x448\n"
71 " ldr r1, =0xfc152410\n"
72 " movs r0, #0\n"
73 " blx sub_fc2cf40c\n"
74 " blx sub_fc2cf35c\n"
75 " pop {r3, r4, r5, r6, r7, pc}\n"
76 "loc_fc152788:\n"
77 " ldr r0, [sp]\n"
78 " ldr r0, [r0]\n"
79 " cmp r0, #1\n"
80 " beq loc_fc1527a0\n"
81 " cmp r0, #0x29\n"
82 " beq loc_fc1527a0\n"
83 " cmp r0, #0x1d\n"
84 " beq loc_fc1527a0\n"
85 " cmp r0, #0x21\n"
86 " beq loc_fc1527a0\n"
87 " bl sub_fc1dd978\n"
88 "loc_fc1527a0:\n"
89 " ldr r0, [sp]\n"
90 " ldr r1, [r0]\n"
91 " cmp r1, #0x2b\n"
92 " bhs loc_fc152888\n"
93 " tbb [pc, r1]\n"
94 "branchtable_fc1527ac:\n"
95 " .byte((loc_fc1527d8 - branchtable_fc1527ac) / 2)\n"
96 " .byte((loc_fc1527f0 - branchtable_fc1527ac) / 2)\n"
97 " .byte((loc_fc1527f8 - branchtable_fc1527ac) / 2)\n"
98 " .byte((loc_fc152806 - branchtable_fc1527ac) / 2)\n"
99 " .byte((loc_fc152800 - branchtable_fc1527ac) / 2)\n"
100 " .byte((loc_fc152812 - branchtable_fc1527ac) / 2)\n"
101 " .byte((loc_fc152818 - branchtable_fc1527ac) / 2)\n"
102 " .byte((loc_fc15281e - branchtable_fc1527ac) / 2)\n"
103 " .byte((loc_fc152826 - branchtable_fc1527ac) / 2)\n"
104 " .byte((loc_fc152866 - branchtable_fc1527ac) / 2)\n"
105 " .byte((loc_fc152830 - branchtable_fc1527ac) / 2)\n"
106 " .byte((loc_fc152838 - branchtable_fc1527ac) / 2)\n"
107 " .byte((loc_fc15284c - branchtable_fc1527ac) / 2)\n"
108 " .byte((loc_fc152854 - branchtable_fc1527ac) / 2)\n"
109 " .byte((loc_fc15285a - branchtable_fc1527ac) / 2)\n"
110 " .byte((loc_fc152860 - branchtable_fc1527ac) / 2)\n"
111 " .byte((loc_fc152870 - branchtable_fc1527ac) / 2)\n"
112 " .byte((loc_fc152876 - branchtable_fc1527ac) / 2)\n"
113 " .byte((loc_fc15287c - branchtable_fc1527ac) / 2)\n"
114 " .byte((loc_fc152882 - branchtable_fc1527ac) / 2)\n"
115 " .byte((loc_fc15288a - branchtable_fc1527ac) / 2)\n"
116 " .byte((loc_fc15288e - branchtable_fc1527ac) / 2)\n"
117 " .byte((loc_fc152894 - branchtable_fc1527ac) / 2)\n"
118 " .byte((loc_fc15289a - branchtable_fc1527ac) / 2)\n"
119 " .byte((loc_fc1528a0 - branchtable_fc1527ac) / 2)\n"
120 " .byte((loc_fc1528a6 - branchtable_fc1527ac) / 2)\n"
121 " .byte((loc_fc1528ac - branchtable_fc1527ac) / 2)\n"
122 " .byte((loc_fc1528b4 - branchtable_fc1527ac) / 2)\n"
123 " .byte((loc_fc1528ba - branchtable_fc1527ac) / 2)\n"
124 " .byte((loc_fc1528be - branchtable_fc1527ac) / 2)\n"
125 " .byte((loc_fc1528c6 - branchtable_fc1527ac) / 2)\n"
126 " .byte((loc_fc1528cc - branchtable_fc1527ac) / 2)\n"
127 " .byte((loc_fc1528f6 - branchtable_fc1527ac) / 2)\n"
128 " .byte((loc_fc1528fc - branchtable_fc1527ac) / 2)\n"
129 " .byte((loc_fc152902 - branchtable_fc1527ac) / 2)\n"
130 " .byte((loc_fc152908 - branchtable_fc1527ac) / 2)\n"
131 " .byte((loc_fc15290e - branchtable_fc1527ac) / 2)\n"
132 " .byte((loc_fc152914 - branchtable_fc1527ac) / 2)\n"
133 " .byte((loc_fc15291c - branchtable_fc1527ac) / 2)\n"
134 " .byte((loc_fc152922 - branchtable_fc1527ac) / 2)\n"
135 " .byte((loc_fc152946 - branchtable_fc1527ac) / 2)\n"
136 " .byte((loc_fc15294c - branchtable_fc1527ac) / 2)\n"
137 " .byte((loc_fc152966 - branchtable_fc1527ac) / 2)\n"
138 ".align 1\n"
139 "loc_fc1527d8:\n"
140 " ldr r0, [r0, #0xc]\n"
141 " uxtb r0, r0\n"
142 " bl sub_fc152cfa\n"
143 #ifdef CAPTSEQ_DEBUG_LOG
144 "bl log_capt_seq_override\n"
145 #endif
146 " BL clear_current_raw_addr\n"
147 " BL shooting_expo_param_override\n"
148 " bl sub_fc150454\n"
149 " ldr r0, [r4, #0x28]\n"
150 " cmp r0, #0\n"
151 " beq loc_fc1527ee\n"
152
153 " bl sub_fc1dcaa8_my\n"
154 "loc_fc1527ee:\n"
155 " b loc_fc152966\n"
156 "loc_fc1527f0:\n"
157 " ldr r0, [r0, #0x10]\n"
158
159 " bl sub_fc1dc8d2_my\n"
160 " b loc_fc152966\n"
161 "loc_fc1527f8:\n"
162 " movs r0, #1\n"
163 " bl sub_fc152ff4\n"
164 " b loc_fc152966\n"
165 "loc_fc152800:\n"
166 " bl sub_fc152a72\n"
167 " b loc_fc15280e\n"
168 "loc_fc152806:\n"
169 " ldr r0, [r0, #0xc]\n"
170 " uxtb r0, r0\n"
171 " bl sub_fc152ce2\n"
172 "loc_fc15280e:\n"
173 " str r6, [r4, #0x28]\n"
174 " b loc_fc152966\n"
175 "loc_fc152812:\n"
176 " bl sub_fc152ce8\n"
177 " b loc_fc152966\n"
178 "loc_fc152818:\n"
179 " bl sub_fc152ef0\n"
180 " b loc_fc15282a\n"
181 "loc_fc15281e:\n"
182 " ldr r0, [r0, #0x10]\n"
183 " bl sub_fc1dcb50\n"
184 " b loc_fc152966\n"
185 "loc_fc152826:\n"
186 " bl sub_fc152f7a\n"
187 "loc_fc15282a:\n"
188 " bl sub_fc150454\n"
189 " b loc_fc152966\n"
190 "loc_fc152830:\n"
191 " ldr r0, [r4, #0x54]\n"
192 " bl sub_fc153580\n"
193 " b loc_fc152966\n"
194 "loc_fc152838:\n"
195 " bl sub_fc15380c\n"
196 " b loc_fc152966\n"
197 ".ltorg\n"
198
199 "loc_fc15284c:\n"
200 " ldr r0, [r0, #0xc]\n"
201 " bl sub_fc153858\n"
202 " b loc_fc152966\n"
203 "loc_fc152854:\n"
204 " bl sub_fc1539d2\n"
205 " b loc_fc152966\n"
206 "loc_fc15285a:\n"
207 " bl sub_fc153da0\n"
208 " b loc_fc152966\n"
209 "loc_fc152860:\n"
210 " bl sub_fc153e36\n"
211 " b loc_fc152966\n"
212 "loc_fc152866:\n"
213 " ldr r0, [r0, #0xc]\n"
214 " uxtb r0, r0\n"
215 " bl sub_fc152ce2\n"
216 " b loc_fc152966\n"
217 "loc_fc152870:\n"
218 " bl sub_fc1db418\n"
219 " b loc_fc152966\n"
220 "loc_fc152876:\n"
221 " bl sub_fc1db600\n"
222 " b loc_fc152966\n"
223 "loc_fc15287c:\n"
224 " bl sub_fc1db69c\n"
225 " b loc_fc152966\n"
226 "loc_fc152882:\n"
227 " bl sub_fc1db718\n"
228 " b loc_fc152966\n"
229 "loc_fc152888:\n"
230 " b loc_fc152958\n"
231 "loc_fc15288a:\n"
232 " movs r0, #0\n"
233 " b loc_fc1528ae\n"
234 "loc_fc15288e:\n"
235 " bl sub_fc1dbb04\n"
236 " b loc_fc152966\n"
237 "loc_fc152894:\n"
238 " bl sub_fc1dbb64\n"
239 " b loc_fc152966\n"
240 "loc_fc15289a:\n"
241 " bl sub_fc1dbb68\n"
242 " b loc_fc152966\n"
243 "loc_fc1528a0:\n"
244 " bl sub_fc1dbb78\n"
245 " b loc_fc152966\n"
246 "loc_fc1528a6:\n"
247 " bl sub_fc1dbbf0\n"
248 " b loc_fc152966\n"
249 "loc_fc1528ac:\n"
250 " movs r0, #1\n"
251 "loc_fc1528ae:\n"
252 " bl sub_fc1db9e4\n"
253 " b loc_fc152966\n"
254 "loc_fc1528b4:\n"
255 " bl sub_fc153102\n"
256 " b loc_fc152966\n"
257 "loc_fc1528ba:\n"
258 " movs r0, #0\n"
259 " b loc_fc1528c0\n"
260 "loc_fc1528be:\n"
261 " ldr r0, [r0, #0xc]\n"
262 "loc_fc1528c0:\n"
263 " bl sub_fc153164\n"
264 " b loc_fc152966\n"
265 "loc_fc1528c6:\n"
266 " bl sub_fc1db8d8\n"
267 " b loc_fc152966\n"
268 "loc_fc1528cc:\n"
269 " ldr r1, =0x0003c4da\n"
270 " movs r2, #2\n"
271 " movs r0, #0x72\n"
272 " bl _GetPropertyCase\n"
273 " lsls r0, r0, #0x1f\n"
274 " beq loc_fc1528e8\n"
275 " movw r2, #0x508\n"
276 " ldr r1, =0xfc152410\n"
277 " movs r0, #0\n"
278 " blx sub_fc2cf40c\n"
279 "loc_fc1528e8:\n"
280 " ldrh.w r0, [r4, #0x62]\n"
281 " cmp r0, #1\n"
282 " bne loc_fc152966\n"
283 " bl sub_fc1db8d2\n"
284 " b loc_fc152966\n"
285 "loc_fc1528f6:\n"
286 " bl sub_fc1db956\n"
287 " b loc_fc152966\n"
288 "loc_fc1528fc:\n"
289 " bl sub_fc1dd354\n"
290 " b loc_fc152966\n"
291 "loc_fc152902:\n"
292 " bl sub_fc150d7a\n"
293 " b loc_fc152966\n"
294 "loc_fc152908:\n"
295 " bl sub_fc2aa48e\n"
296 " b loc_fc152966\n"
297 "loc_fc15290e:\n"
298 " bl sub_fc2aa568\n"
299 " b loc_fc152966\n"
300 "loc_fc152914:\n"
301 " ldr r0, [r0, #0xc]\n"
302 " bl sub_fc1dbcc4\n"
303 " b loc_fc152966\n"
304 "loc_fc15291c:\n"
305 " bl sub_fc1dbd2c\n"
306 " b loc_fc152966\n"
307 "loc_fc152922:\n"
308 " bl sub_fc15893e\n"
309 " ldrh.w r0, [r4, #0x1a4]\n"
310 " cmp r0, #4\n"
311 " beq loc_fc152938\n"
312 " ldrh r0, [r4]\n"
313 " sub.w r1, r0, #0x4200\n"
314 " subs r1, #0x36\n"
315 " bne loc_fc152966\n"
316 "loc_fc152938:\n"
317 " bl sub_fc2aa568\n"
318 " bl sub_fc2aaa7e\n"
319 " bl sub_fc2aa8c6\n"
320 " b loc_fc152966\n"
321 "loc_fc152946:\n"
322 " movs r2, #0\n"
323 " movs r1, #0x11\n"
324 " b loc_fc152950\n"
325 "loc_fc15294c:\n"
326 " movs r2, #0\n"
327 " movs r1, #0x10\n"
328 "loc_fc152950:\n"
329 " movs r0, #0\n"
330 " bl sub_fc150f62\n"
331 " b loc_fc152966\n"
332 "loc_fc152958:\n"
333 " movw r2, #0x572\n"
334 " ldr r1, =0xfc152410\n"
335 " movs r0, #0\n"
336 " blx sub_fc2cf40c\n"
337 "loc_fc152966:\n"
338
339 "ldr r0, [sp]\n"
340 "ldr r0, [r0]\n"
341 "bl log_capt_seq2\n"
342 " BL capt_seq_hook_set_nr\n"
343 " ldr r0, [sp]\n"
344 " ldr r1, [r0, #4]\n"
345 " ldr r0, [r5, #4]\n"
346 " blx sub_fc2cf32c\n"
347 " ldr r7, [sp]\n"
348 " ldr r0, [r7, #8]\n"
349 " cbnz r0, loc_fc152984\n"
350 " movw r2, #0x128\n"
351 " ldr r1, =0xfc152410\n"
352 " movs r0, #0\n"
353 " blx sub_fc2cf40c\n"
354 "loc_fc152984:\n"
355 " str r6, [r7, #8]\n"
356 " b loc_fc152766\n"
357
358
359
360
361
362 ".ltorg\n"
363 );
364 }
365
366 void __attribute__((naked,noinline)) sub_fc1dcaa8_my() {
367 asm volatile (
368 " push {r3, r4, r5, r6, r7, lr}\n"
369 " bl sub_fc151ece\n"
370 " mov r4, r0\n"
371 " movs r0, #0xc\n"
372 " bl sub_fc2d7934\n"
373 " ldr r6, =0x00014348\n"
374 " lsls r0, r0, #0x1f\n"
375 " mov.w r5, #1\n"
376 " bne loc_fc1dcb42\n"
377 " movs r2, #2\n"
378 " mov r1, sp\n"
379 " movw r0, #0x10d\n"
380 " bl _GetPropertyCase\n"
381 " lsls r0, r0, #0x1f\n"
382 " beq loc_fc1dcadc\n"
383 " movs r0, #0\n"
384 " movw r2, #0x16d\n"
385 " ldr r1, =0xfc1dcc28\n"
386 " blx sub_fc2cf40c\n"
387 "loc_fc1dcadc:\n"
388 " ldrsh.w r0, [sp]\n"
389 " bl sub_fc1377fe\n"
390 " bl sub_fc1376d6\n"
391 " cmp r0, #1\n"
392 " bls loc_fc1dcb46\n"
393 " movs r0, #0\n"
394 " bl sub_fc13778e\n"
395 " bl sub_fc152cee\n"
396 " bl sub_fc154bcc\n"
397 " mov r1, r4\n"
398
399 "bl captseq_raw_addr_init_my\n"
400 " movs r2, #4\n"
401 " movw r0, #0x113\n"
402 " add.w r1, r4, #0x58\n"
403 " bl _SetPropertyCase\n"
404 " movs r2, #4\n"
405 " movs r0, #0x2d\n"
406 " add.w r1, r4, #0x5c\n"
407 " bl _SetPropertyCase\n"
408 " movs r2, #4\n"
409 " movs r0, #0x41\n"
410 " add.w r1, r4, #8\n"
411 " bl _SetPropertyCase\n"
412 " bl sub_fc1dd17e\n"
413 " mvn r1, #0x1000\n"
414 " blx sub_fc2cf3dc\n"
415 " mov r0, r4\n"
416 " bl sub_fc1dc678\n"
417 " mov r0, r4\n"
418
419 " bl sub_fc39ff7c_my\n"
420 " lsls r0, r0, #0x1f\n"
421 " beq loc_fc1dcb44\n"
422 "loc_fc1dcb42:\n"
423 " str r5, [r6]\n"
424 "loc_fc1dcb44:\n"
425 " pop {r3, r4, r5, r6, r7, pc}\n"
426 "loc_fc1dcb46:\n"
427 " bl sub_fc150d70\n"
428 " bl sub_fc2d796c\n"
429 " pop {r3, r4, r5, r6, r7, pc}\n"
430 ".ltorg\n"
431 );
432 }
433
434 void __attribute__((naked,noinline)) sub_fc1dc8d2_my() {
435 asm volatile (
436 " push {r2, r3, r4, r5, r6, lr}\n"
437 " ldr r6, =0x0003c478\n"
438 " mov r4, r0\n"
439 " movs r5, #0\n"
440 " ldr r0, [r6, #0x28]\n"
441 " cbz r0, loc_fc1dc8fa\n"
442 " ldr r0, =0x00014348\n"
443 " ldr r0, [r0]\n"
444 " cbz r0, loc_fc1dc8e6\n"
445 " movs r5, #0x1d\n"
446 "loc_fc1dc8e6:\n"
447 " mov r2, r4\n"
448 " movs r1, #2\n"
449 " mov r0, r5\n"
450 " bl sub_fc150f62\n"
451 " mov r1, r5\n"
452 " mov r0, r4\n"
453 " bl sub_fc1dd7d6\n"
454 " b loc_fc1dcaa2\n"
455 "loc_fc1dc8fa:\n"
456 " bl sub_fc154bcc\n"
457 " mov r1, r4\n"
458
459 "bl captseq_raw_addr_init_my\n"
460 " movs r2, #4\n"
461 " movw r0, #0x113\n"
462 " add.w r1, r4, #0x58\n"
463 " bl _SetPropertyCase\n"
464 " movs r2, #4\n"
465 " movs r0, #0x2d\n"
466 " add.w r1, r4, #0x5c\n"
467 " bl _SetPropertyCase\n"
468 " ldr.w r0, [r6, #0x10c]\n"
469 " cbnz r0, loc_fc1dc934\n"
470 " ldrh.w r0, [r6, #0x1a2]\n"
471 " cmp r0, #3\n"
472 " beq loc_fc1dc93a\n"
473 " ldr r0, [r4, #8]\n"
474 " cmp r0, #1\n"
475 " bhi loc_fc1dc94a\n"
476 " b loc_fc1dc93a\n"
477 "loc_fc1dc934:\n"
478 " ldr r0, [r4, #0xc]\n"
479 " cmp r0, #1\n"
480 " bne loc_fc1dc94a\n"
481 "loc_fc1dc93a:\n"
482 " movs r0, #0xc\n"
483 " bl sub_fc2d7934\n"
484 " lsls r0, r0, #0x1f\n"
485 " beq loc_fc1dc94a\n"
486 " bl sub_fc150d70\n"
487 " movs r5, #1\n"
488 "loc_fc1dc94a:\n"
489 " lsls r0, r5, #0x1f\n"
490 " bne loc_fc1dca4c\n"
491 " ldr.w r0, [r6, #0xec]\n"
492 " cbz r0, loc_fc1dc96e\n"
493 " ldrh.w r0, [r6, #0x1a2]\n"
494 " cmp r0, #3\n"
495 " beq loc_fc1dc962\n"
496 " ldr r0, [r4, #8]\n"
497 " cmp r0, #1\n"
498 " bhi loc_fc1dc9ae\n"
499 "loc_fc1dc962:\n"
500 " ldr.w r0, [r6, #0x10c]\n"
501 " cbz r0, loc_fc1dc96e\n"
502 " ldr r0, [r4, #0xc]\n"
503 " cmp r0, #1\n"
504 " bhi loc_fc1dc9ae\n"
505 "loc_fc1dc96e:\n"
506 " movs r2, #2\n"
507 " movw r0, #0x10d\n"
508 " add r1, sp, #4\n"
509 " bl _GetPropertyCase\n"
510 " lsls r0, r0, #0x1f\n"
511 " beq loc_fc1dc988\n"
512 " movs r2, #0xc9\n"
513 " movs r0, #0\n"
514 " ldr r1, =0xfc1dcc28\n"
515 " blx sub_fc2cf40c\n"
516 "loc_fc1dc988:\n"
517 " ldrsh.w r0, [sp, #4]\n"
518 " bl sub_fc1377fe\n"
519 " bl sub_fc1376d6\n"
520 " cmp r0, #1\n"
521 " bls loc_fc1dc9a0\n"
522 " movs r0, #0\n"
523 " bl sub_fc13778e\n"
524 " b loc_fc1dc9ae\n"
525 "loc_fc1dc9a0:\n"
526 " bl sub_fc150d70\n"
527 " bl sub_fc2d796c\n"
528 " movs r5, #1\n"
529 " lsls r0, r5, #0x1f\n"
530 " bne loc_fc1dca90\n"
531 "loc_fc1dc9ae:\n"
532 " mov r0, r4\n"
533 " bl sub_fc1dd39e\n"
534 " mov r5, r0\n"
535 " lsls r0, r0, #0x1f\n"
536 " bne loc_fc1dca90\n"
537 " bl sub_fc1dd17e\n"
538 " mvn r1, #0x1000\n"
539 " blx sub_fc2cf3dc\n"
540 " mov r0, r4\n"
541 " bl sub_fc39fc5a\n"
542 " mov r5, r0\n"
543 " lsls r0, r0, #0x1f\n"
544 " bne loc_fc1dca90\n"
545 " bl sub_fc152cee\n"
546 " mov r0, r4\n"
547 " bl sub_fc1dc678\n"
548 " ldr.w r0, [r6, #0x130]\n"
549 " cbnz r0, loc_fc1dc9f0\n"
550 " ldrh.w r0, [r6, #0x1a2]\n"
551 " cmp r0, #3\n"
552 " beq loc_fc1dc9f0\n"
553 " ldr r0, [r4, #8]\n"
554 " cmp r0, #1\n"
555 " bhi loc_fc1dc9f6\n"
556 "loc_fc1dc9f0:\n"
557 " movs r0, #2\n"
558 " bl sub_fc15980a\n"
559 "loc_fc1dc9f6:\n"
560 " ldr.w r0, [r6, #0xa8]\n"
561 " cmp r0, #0\n"
562 " beq loc_fc1dca6c\n"
563 " ldrh.w r0, [r6, #0x1a2]\n"
564 " movw r5, #0x1000\n"
565 " cmp r0, #3\n"
566 " beq loc_fc1dca26\n"
567 " ldr r0, [r4, #8]\n"
568 " cmp r0, #1\n"
569 " bls loc_fc1dca26\n"
570 " bl sub_fc1dd17e\n"
571 " movw r3, #0x112\n"
572 " movw r2, #0x3a98\n"
573 " mov r1, r5\n"
574 " str r3, [sp]\n"
575 " ldr r3, =0xfc1dcc28\n"
576 " bl sub_fc2d7ae8\n"
577 "loc_fc1dca26:\n"
578 " movs r2, #4\n"
579 " movw r0, #0x185\n"
580 " add r1, sp, #4\n"
581 " bl _GetPropertyCase\n"
582 " lsls r0, r0, #0x1f\n"
583 " beq loc_fc1dca42\n"
584 " movs r0, #0\n"
585 " movw r2, #0x116\n"
586 " ldr r1, =0xfc1dcc28\n"
587 " blx sub_fc2cf40c\n"
588 "loc_fc1dca42:\n"
589 " ldr r0, [sp, #4]\n"
590 " cbnz r0, loc_fc1dca56\n"
591 " bl sub_fc1dd17e\n"
592 " b loc_fc1dca4e\n"
593 "loc_fc1dca4c:\n"
594 " b loc_fc1dca90\n"
595 "loc_fc1dca4e:\n"
596 " mov r1, r5\n"
597 " blx sub_fc2cf32c\n"
598 " b loc_fc1dca6c\n"
599 "loc_fc1dca56:\n"
600 " bl sub_fc1dd17e\n"
601 " mov r1, r5\n"
602 " blx sub_fc2cf3dc\n"
603 " ldr r2, =0xfc1dc8c1\n"
604 " mov r3, r5\n"
605 " ldr r0, [sp, #4]\n"
606 " mov r1, r2\n"
607 " bl sub_fc322d74\n"
608 "loc_fc1dca6c:\n"
609 " ldr.w r0, [r6, #0xb0]\n"
610 " cbz r0, loc_fc1dca7a\n"
611 " mov r0, r4\n"
612 " bl sub_fc3a0744\n"
613 " b loc_fc1dcaa2\n"
614 "loc_fc1dca7a:\n"
615 " ldr.w r0, [r6, #0xb4]\n"
616 " cmp r0, #0\n"
617 " mov r0, r4\n"
618 " beq loc_fc1dca8a\n"
619 " bl sub_fc3a03b2\n"
620 " b loc_fc1dcaa2\n"
621 "loc_fc1dca8a:\n"
622
623 " bl sub_fc39ff7c_my\n"
624 " b loc_fc1dcaa2\n"
625 "loc_fc1dca90:\n"
626 " movs r1, #2\n"
627 " mov r2, r4\n"
628 " mov r0, r5\n"
629 " bl sub_fc150f62\n"
630 " mov r1, r5\n"
631 " mov r0, r4\n"
632 " bl sub_fc1dd90c\n"
633 "loc_fc1dcaa2:\n"
634 " movs r0, #0\n"
635 " str r0, [r6, #0x28]\n"
636 " pop {r2, r3, r4, r5, r6, pc}\n"
637 );
638 }
639
640 void __attribute__((naked,noinline)) sub_fc39ff7c_my() {
641 asm volatile (
642 " push.w {r2, r3, r4, r5, r6, r7, r8, sb, sl, lr}\n"
643 " ldr r7, =0x0003c478\n"
644 " mov r4, r0\n"
645 " ldr.w r0, [r7, #0x16c]\n"
646 " cbz r0, loc_fc39ff98\n"
647 " ldrh.w r0, [r7, #0x1a2]\n"
648 " cmp r0, #3\n"
649 " beq loc_fc39ff98\n"
650 " ldr r0, [r4, #8]\n"
651 " cmp r0, #1\n"
652 " bhi loc_fc39ffa2\n"
653 "loc_fc39ff98:\n"
654 " mov r0, r4\n"
655 " bl sub_fc1dc60e\n"
656 " bl sub_fc1dd03a\n"
657 "loc_fc39ffa2:\n"
658 " ldr.w r0, [r7, #0xa4]\n"
659 " cbnz r0, loc_fc39ffbe\n"
660 " ldrh.w r0, [r7, #0x1a2]\n"
661 " cmp r0, #3\n"
662 " beq loc_fc39ffb6\n"
663 " ldr r0, [r4, #8]\n"
664 " cmp r0, #1\n"
665 " bhi loc_fc39ffbe\n"
666 "loc_fc39ffb6:\n"
667 " bl sub_fc153152\n"
668 " bl sub_fc1dcc5a\n"
669 "loc_fc39ffbe:\n"
670 " movs r2, #4\n"
671 " movw r0, #0x134\n"
672 " add r1, sp, #4\n"
673 " bl _GetPropertyCase\n"
674 " lsls r0, r0, #0x1f\n"
675 " beq loc_fc39ffda\n"
676 " movs r0, #0\n"
677 " movw r2, #0x193\n"
678 " ldr r1, =0xfc3a032c\n"
679 " blx sub_fc2cf40c\n"
680 "loc_fc39ffda:\n"
681 " ldr r0, [sp, #4]\n"
682 " ubfx r0, r0, #8, #8\n"
683 " cmp r0, #6\n"
684 " bne loc_fc39ffea\n"
685 " ldr r0, =0xfc39ff1f\n"
686 " movs r1, #0\n"
687 " b loc_fc39ffee\n"
688 "loc_fc39ffea:\n"
689 " ldr r0, =0xfc1dc2d3\n"
690 " mov r1, r4\n"
691 "loc_fc39ffee:\n"
692 " bl sub_fc16fe1c\n"
693 " ldr.w r0, [r7, #0x18c]\n"
694 " cbz r0, loc_fc39fffc\n"
695 " bl sub_fc1dc546\n"
696 "loc_fc39fffc:\n"
697 " movs r0, #0\n"
698 " bl sub_fc15655e\n"
699
700 " mov r0, r4\n"
701 " bl sub_fc1dc724\n"
702 " ldr r1, =0x000265c4\n"
703 " movs r2, #4\n"
704 " movs r0, #0x8d\n"
705 " bl _GetPropertyCase\n"
706 " lsls r0, r0, #0x1f\n"
707 " beq loc_fc3a0022\n"
708 " movs r0, #0\n"
709 " movw r2, #0x1ae\n"
710 " ldr r1, =0xfc3a032c\n"
711 " blx sub_fc2cf40c\n"
712 "loc_fc3a0022:\n"
713 " bl sub_fc156618\n"
714 " bl sub_fc1dc7c0\n"
715 " movs r1, #0\n"
716 " mov r0, r4\n"
717 " bl sub_fc39ff20\n"
718 " mov r6, r0\n"
719 " BL wait_until_remote_button_is_released\n"
720 "bl log_remote_hook\n"
721 " ldr r0, [sp, #4]\n"
722 " ubfx r0, r0, #8, #8\n"
723 " cmp r0, #6\n"
724 " bne loc_fc3a0042\n"
725 " ldr r2, =0xfc1dc515\n"
726 " b loc_fc3a0044\n"
727 "loc_fc3a0042:\n"
728 " ldr r2, =0xfc1dc52b\n"
729 "loc_fc3a0044:\n"
730 " ldrh r0, [r4, #0x18]\n"
731 " ldr r5, =0x000265c4\n"
732 " cbz r0, loc_fc3a0052\n"
733 " cmp r0, #1\n"
734 " beq loc_fc3a0068\n"
735 " cmp r0, #4\n"
736 " bne loc_fc3a00ce\n"
737 "loc_fc3a0052:\n"
738 " str r6, [sp]\n"
739 " mov r3, r2\n"
740 " ldr r1, [r4, #0x5c]\n"
741 " mov r0, r4\n"
742 " ldr r2, [r5]\n"
743 " bl sub_fc1dc126\n"
744 " mov r5, r0\n"
745 " bl sub_fc28bb0a\n"
746 " b loc_fc3a00dc\n"
747 "loc_fc3a0068:\n"
748 " str r6, [sp]\n"
749 " mov r3, r2\n"
750 " ldr r1, [r4, #0x5c]\n"
751 " mov r8, r5\n"
752 " ldr r2, [r5]\n"
753 " mov r0, r4\n"
754 " bl sub_fc1dc186\n"
755 " movs r2, #1\n"
756 " mov r5, r0\n"
757 " movs r1, #0\n"
758 " movs r0, #0x45\n"
759 " bl sub_fc277200\n"
760
761 " lsls r0, r5, #0x1f\n"
762 " bne loc_fc3a00dc\n"
763 " ldr.w r0, [r7, #0x100]\n"
764 " cbz r0, loc_fc3a009e\n"
765 " ldr r1, [r4, #8]\n"
766 " ldr r2, =0x00212cc4\n"
767 " ldr r0, [r4, #0x5c]\n"
768 " add.w r1, r2, r1, lsl #2\n"
769 " str r0, [r1, #-0x4]\n"
770 " b loc_fc3a00c8\n"
771 "loc_fc3a009e:\n"
772 " ldr r0, =0xfc39ff1f\n"
773 " movs r1, #0\n"
774 " bl sub_fc16fe1c\n"
775 " movs r1, #1\n"
776 " mov r0, r4\n"
777 " bl sub_fc39ff20\n"
778 " mov r6, r0\n"
779 " ldr.w r0, [r8]\n"
780 " mov r5, r8\n"
781 " bl sub_fc1dc5b0\n"
782 " ldr r1, [r4, #0x5c]\n"
783 " mov r3, r6\n"
784 " ldr r2, [r5]\n"
785 " mov r0, r4\n"
786 " bl sub_fc1dc1f4\n"
787 " mov r5, r0\n"
788 "loc_fc3a00c8:\n"
789 " bl sub_fc1dc0d0\n"
790 " b loc_fc3a00dc\n"
791 "loc_fc3a00ce:\n"
792 " movs r0, #0\n"
793 " movw r2, #0x1e1\n"
794 " ldr r1, =0xfc3a032c\n"
795 " blx sub_fc2cf40c\n"
796 " movs r5, #0x1d\n"
797 "loc_fc3a00dc:\n"
798 " bl sub_fc1dc7c4\n"
799 " ldr.w r8, =0xfc39ff1f\n"
800 " lsls r0, r5, #0x1f\n"
801 " bne loc_fc3a0138\n"
802 " ldr.w r0, [r7, #0x108]\n"
803 " cbnz r0, loc_fc3a0104\n"
804 " mov r0, r4\n"
805 " bl sub_fc1dddba\n"
806 " lsls r0, r0, #0x1f\n"
807 " beq loc_fc3a0104\n"
808 " movs r0, #0\n"
809 " movw r2, #0x207\n"
810 " ldr r1, =0xfc3a032c\n"
811 " blx sub_fc2cf40c\n"
812 "loc_fc3a0104:\n"
813 "bl log_rh\n"
814 "BL capt_seq_hook_raw_here\n"
815 "BL clear_current_raw_addr\n"
816 " mov r0, r4\n"
817 " bl sub_fc1dc7b0\n"
818 " mov r0, r4\n"
819 " bl sub_fc1dc784\n"
820 " cmp r6, r8\n"
821 " beq loc_fc3a0138\n"
822 " bl sub_fc1dd17e\n"
823 " movs r1, #4\n"
824 " movw sb, #0x214\n"
825 " ldr r3, =0xfc3a032c\n"
826 " movw r2, #0x3a98\n"
827 " str.w sb, [sp]\n"
828 " bl sub_fc2d7ae8\n"
829 " cbz r0, loc_fc3a0138\n"
830 " movs r0, #0\n"
831 " mov r2, sb\n"
832 " ldr r1, =0xfc3a032c\n"
833 " blx sub_fc2cf40c\n"
834 "loc_fc3a0138:\n"
835 " ldr.w r0, [r7, #0x18c]\n"
836 " cbz r0, loc_fc3a0148\n"
837 " movs r2, #1\n"
838 " movs r1, #0\n"
839 " movs r0, #0x46\n"
840 " bl sub_fc277200\n"
841 "loc_fc3a0148:\n"
842 " movs r1, #2\n"
843 " mov r2, r4\n"
844 " mov r0, r5\n"
845 " bl sub_fc150f62\n"
846 " ldr r0, [r7, #0x28]\n"
847 " cmp r0, #0\n"
848 " mov r0, r8\n"
849 " beq loc_fc3a016e\n"
850 " cmp r6, r0\n"
851 " beq loc_fc3a0162\n"
852 " movs r1, #1\n"
853 " b loc_fc3a0164\n"
854 "loc_fc3a0162:\n"
855 " movs r1, #0\n"
856 "loc_fc3a0164:\n"
857 " mov r2, r5\n"
858 " mov r0, r4\n"
859 " bl sub_fc1dd794\n"
860 " b loc_fc3a0180\n"
861 "loc_fc3a016e:\n"
862 " cmp r6, r0\n"
863 " beq loc_fc3a0176\n"
864 " movs r1, #1\n"
865 " b loc_fc3a0178\n"
866 "loc_fc3a0176:\n"
867 " movs r1, #0\n"
868 "loc_fc3a0178:\n"
869 " mov r2, r5\n"
870 " mov r0, r4\n"
871 " bl sub_fc1dd74e\n"
872 "loc_fc3a0180:\n"
873 " mov r0, r5\n"
874 " pop.w {r2, r3, r4, r5, r6, r7, r8, sb, sl, pc}\n"
875 ".ltorg\n"
876 );
877 }
878
879 void log_remote_hook(void) {
880 _LogCameraEvent(0x60,"remote hook");
881 }
882 void log_rh(void) {
883 _LogCameraEvent(0x60,"raw hook");
884 }
885
886
887
888
889
890 void __attribute__((naked,noinline)) exp_drv_task() {
891 asm volatile (
892
893 " push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}\n"
894 " sub sp, #0x2c\n"
895 " ldr.w sb, =0x0000d1b0\n"
896 " ldr.w sl, =0xfffff400\n"
897 " movs r0, #0\n"
898 " ldr r6, =0x0005e458\n"
899 " add.w r8, sp, #0x1c\n"
900 " movw fp, #0xbb8\n"
901 " str r0, [sp, #0xc]\n"
902 "loc_fc291cea:\n"
903 " ldr.w r0, [sb, #0x20]\n"
904 " movs r2, #0\n"
905 " add r1, sp, #0x28\n"
906 " mov r4, sb\n"
907 " blx sub_fc2cf34c\n"
908 " ldr r0, [sp, #0xc]\n"
909 " cmp r0, #1\n"
910 " bne loc_fc291d22\n"
911 " ldr r0, [sp, #0x28]\n"
912 " ldr r0, [r0]\n"
913 " cmp r0, #0x14\n"
914 "loc_fc291d04:\n"
915 " beq loc_fc291e04\n"
916 " cmp r0, #0x15\n"
917 " beq loc_fc291d04\n"
918 " cmp r0, #0x16\n"
919 " beq loc_fc291d04\n"
920 " cmp r0, #0x17\n"
921 " beq loc_fc291d04\n"
922 " cmp r0, #0x18\n"
923 " beq loc_fc291e14\n"
924 " cmp r0, #0x2e\n"
925 " beq loc_fc291dbe\n"
926 " movs r0, #0\n"
927 " add r1, sp, #0xc\n"
928 " bl sub_fc291c8a\n"
929 "loc_fc291d22:\n"
930 " ldr r0, [sp, #0x28]\n"
931 " ldr r1, [r0]\n"
932 " cmp r1, #0x34\n"
933 " bne loc_fc291d40\n"
934 " bl sub_fc292b82\n"
935 " ldr.w r0, [sb, #0x1c]\n"
936 " movs r1, #1\n"
937 " blx sub_fc2cf32c\n"
938 " blx sub_fc2cf35c\n"
939 " add sp, #0x2c\n"
940
941 " ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}\n"
942
943
944
945 "loc_fc291d40:\n"
946 " cmp r1, #0x33\n"
947 " bne loc_fc291d52\n"
948 " add.w r0, r0, #0xac\n"
949 " ldrd r2, r1, [r0]\n"
950 " mov r0, r1\n"
951 " blx r2\n"
952 " b loc_fc292162\n"
953 "loc_fc291d52:\n"
954 " cmp r1, #0x2c\n"
955 " bne loc_fc291d88\n"
956 " ldr r0, [r4, #0x1c]\n"
957 " movs r1, #0x80\n"
958 " blx sub_fc2cf3dc\n"
959 " ldr r0, =0xfc28db35\n"
960 " movs r1, #0x80\n"
961 " bl sub_fc14d27a\n"
962 " ldr r0, [r4, #0x1c]\n"
963 " movs r1, #0x80\n"
964 " mov r2, fp\n"
965 " blx sub_fc2cf1bc\n"
966 " lsls r0, r0, #0x1f\n"
967 " beq loc_fc291d7a\n"
968 " movw r2, #0x17d8\n"
969 " b loc_fc291e0a\n"
970 "loc_fc291d7a:\n"
971 " ldr r1, [sp, #0x28]\n"
972 " add.w r1, r1, #0xac\n"
973 " ldrd r1, r0, [r1]\n"
974 " blx r1\n"
975 " b loc_fc292162\n"
976 "loc_fc291d88:\n"
977 " cmp r1, #0x2d\n"
978 " bne loc_fc291dba\n"
979 " add r1, sp, #0xc\n"
980 " bl sub_fc291c8a\n"
981 " movw r5, #0x100\n"
982 " ldr r0, [r4, #0x1c]\n"
983 " mov r1, r5\n"
984 " blx sub_fc2cf3dc\n"
985 " ldr r0, =0xfc28db3f\n"
986 " mov r1, r5\n"
987 " bl sub_fc14dbfa\n"
988 " ldr r0, [r4, #0x1c]\n"
989 " mov r2, fp\n"
990 " mov r1, r5\n"
991 " blx sub_fc2cf1bc\n"
992 " lsls r0, r0, #0x1f\n"
993 " beq loc_fc291d7a\n"
994 " movw r2, #0x17e2\n"
995 " b loc_fc291e0a\n"
996 "loc_fc291dba:\n"
997 " cmp r1, #0x2e\n"
998 " bne loc_fc291dc8\n"
999 "loc_fc291dbe:\n"
1000 " ldr r0, [sp, #0x28]\n"
1001 " add r1, sp, #0xc\n"
1002 " bl sub_fc291c8a\n"
1003 " b loc_fc291d7a\n"
1004 "loc_fc291dc8:\n"
1005 " cmp r1, #0x31\n"
1006 " bne loc_fc291dda\n"
1007 " bl sub_fc16d89c\n"
1008 " bl sub_fc16e228\n"
1009 " bl sub_fc16df0a\n"
1010 " b loc_fc291d7a\n"
1011 "loc_fc291dda:\n"
1012 " cmp r1, #0x32\n"
1013 " bne loc_fc291e14\n"
1014 " ldr r0, [r4, #0x1c]\n"
1015 " movs r1, #4\n"
1016 " blx sub_fc2cf3dc\n"
1017 " ldr r1, =0xfc28db53\n"
1018 " movs r2, #4\n"
1019 " mov r0, sl\n"
1020 " bl sub_fc292bd4\n"
1021 " bl sub_fc16d5fe\n"
1022 " ldr r0, [r4, #0x1c]\n"
1023 " movs r1, #4\n"
1024 " mov r2, fp\n"
1025 " blx sub_fc2cf3d4\n"
1026 " lsls r0, r0, #0x1f\n"
1027 " beq loc_fc291d7a\n"
1028 " b loc_fc291e06\n"
1029 "loc_fc291e04:\n"
1030 " b loc_fc291e14\n"
1031 "loc_fc291e06:\n"
1032 " movw r2, #0x181a\n"
1033 "loc_fc291e0a:\n"
1034 " ldr r1, =0xfc28e360\n"
1035 " movs r0, #0\n"
1036 " blx sub_fc2cf40c\n"
1037 " b loc_fc291d7a\n"
1038 "loc_fc291e14:\n"
1039 " ldr r0, [sp, #0x28]\n"
1040 " movs r5, #1\n"
1041 " ldr r1, [r0]\n"
1042 " cmp r1, #0x12\n"
1043 " beq loc_fc291e22\n"
1044 " cmp r1, #0x13\n"
1045 " bne loc_fc291e60\n"
1046 "loc_fc291e22:\n"
1047 " ldr.w r1, [r0, #0x94]\n"
1048 " mov r4, r8\n"
1049 " add.w r1, r1, r1, lsl #1\n"
1050 " add.w r1, r0, r1, lsl #2\n"
1051 " subs r1, #8\n"
1052 " ldm r1!, {r2, r3, r7}\n"
1053 " stm r4!, {r2, r3, r7}\n"
1054 " bl sub_fc290578\n"
1055 " ldr r0, [sp, #0x28]\n"
1056 " add.w r0, r0, #0x94\n"
1057 " ldrd r3, r2, [r0, #0x18]\n"
1058 " ldr r1, [r0]\n"
1059 " sub.w r0, r0, #0x90\n"
1060 " blx r3\n"
1061 " ldr r0, [sp, #0x28]\n"
1062 " bl sub_fc292dea\n"
1063 " ldr r0, [sp, #0x28]\n"
1064 " add.w r0, r0, #0x94\n"
1065 " ldr r1, [r0]\n"
1066 " ldrd r3, r2, [r0, #0x20]\n"
1067 " b loc_fc292088\n"
1068 "loc_fc291e60:\n"
1069 " cmp r1, #0x14\n"
1070 " beq loc_fc291e74\n"
1071 " cmp r1, #0x15\n"
1072 " beq loc_fc291e74\n"
1073 " cmp r1, #0x16\n"
1074 " beq loc_fc291e74\n"
1075 " cmp r1, #0x17\n"
1076 " beq loc_fc291e74\n"
1077 " cmp r1, #0x18\n"
1078 " bne loc_fc291ee6\n"
1079 "loc_fc291e74:\n"
1080 " add r3, sp, #0xc\n"
1081 " mov r2, sp\n"
1082 " add r1, sp, #0x1c\n"
1083 " bl sub_fc29074c\n"
1084 " cmp r0, #1\n"
1085 " mov r4, r0\n"
1086 " beq loc_fc291e88\n"
1087 " cmp r4, #5\n"
1088 " bne loc_fc291e9e\n"
1089 "loc_fc291e88:\n"
1090 " ldr r0, [sp, #0x28]\n"
1091 " mov r2, r4\n"
1092 " add.w r0, r0, #0x94\n"
1093 " ldrd r7, r3, [r0, #0x18]\n"
1094 " ldr r1, [r0]\n"
1095 " sub.w r0, r0, #0x90\n"
1096 " blx r7\n"
1097 " b loc_fc291ec4\n"
1098 "loc_fc291e9e:\n"
1099 " cmp r4, #2\n"
1100 " beq loc_fc291ea6\n"
1101 " cmp r4, #6\n"
1102 " bne loc_fc291ed0\n"
1103 "loc_fc291ea6:\n"
1104 " ldr r0, [sp, #0x28]\n"
1105 " mov r2, r4\n"
1106 " add.w r0, r0, #0x94\n"
1107 " ldrd r7, r3, [r0, #0x18]\n"
1108 " ldr r1, [r0]\n"
1109 " sub.w r0, r0, #0x90\n"
1110 " blx r7\n"
1111 " ldr r0, [sp, #0x28]\n"
1112 " add r1, sp, #0x1c\n"
1113 " mov r2, sp\n"
1114 " bl sub_fc291a18\n"
1115 "loc_fc291ec4:\n"
1116 " ldr r2, [sp, #0xc]\n"
1117 " mov r1, r4\n"
1118 " ldr r0, [sp, #0x28]\n"
1119 " bl sub_fc291c3a\n"
1120 " b loc_fc29208e\n"
1121 "loc_fc291ed0:\n"
1122 " ldr r0, [sp, #0x28]\n"
1123 " mov r2, r4\n"
1124 " add.w r0, r0, #0x94\n"
1125 " ldrd r7, r3, [r0, #0x18]\n"
1126 " ldr r1, [r0]\n"
1127 " sub.w r0, r0, #0x90\n"
1128 " blx r7\n"
1129 " b loc_fc29208e\n"
1130 "loc_fc291ee6:\n"
1131 " cmp r1, #0x28\n"
1132 " beq loc_fc291eee\n"
1133 " cmp r1, #0x29\n"
1134 " bne loc_fc291f20\n"
1135 "loc_fc291eee:\n"
1136 " ldr.w r1, [r0, #0x94]\n"
1137 " mov r4, r8\n"
1138 " add.w r1, r1, r1, lsl #1\n"
1139 " add.w r1, r0, r1, lsl #2\n"
1140 " subs r1, #8\n"
1141 " ldm r1!, {r2, r3, r7}\n"
1142 " stm r4!, {r2, r3, r7}\n"
1143 " bl sub_fc28f6ac\n"
1144 " ldr r0, [sp, #0x28]\n"
1145 " add.w r0, r0, #0x94\n"
1146 " ldrd r3, r2, [r0, #0x18]\n"
1147 " ldr r1, [r0]\n"
1148 " sub.w r0, r0, #0x90\n"
1149 " blx r3\n"
1150 " ldr r0, [sp, #0x28]\n"
1151 " bl sub_fc28fa9c\n"
1152 " b loc_fc29208e\n"
1153 "loc_fc291f20:\n"
1154 " adds r1, r0, #4\n"
1155 " mov r4, r8\n"
1156 " ldm r1!, {r2, r3, r7}\n"
1157 " stm r4!, {r2, r3, r7}\n"
1158 " ldr r1, [r0]\n"
1159 " cmp r1, #0x2c\n"
1160 " bhs loc_fc291f62\n"
1161 " tbb [pc, r1]\n"
1162 "branchtable_fc291f32:\n"
1163 " .byte((loc_fc291f5e - branchtable_fc291f32) / 2)\n"
1164 " .byte((loc_fc291f5e - branchtable_fc291f32) / 2)\n"
1165 " .byte((loc_fc291f64 - branchtable_fc291f32) / 2)\n"
1166 " .byte((loc_fc291f6a - branchtable_fc291f32) / 2)\n"
1167 " .byte((loc_fc291f6a - branchtable_fc291f32) / 2)\n"
1168 " .byte((loc_fc291f6a - branchtable_fc291f32) / 2)\n"
1169 " .byte((loc_fc291f5e - branchtable_fc291f32) / 2)\n"
1170 " .byte((loc_fc291f64 - branchtable_fc291f32) / 2)\n"
1171 " .byte((loc_fc291f6a - branchtable_fc291f32) / 2)\n"
1172 " .byte((loc_fc291f6a - branchtable_fc291f32) / 2)\n"
1173 " .byte((loc_fc291f7c - branchtable_fc291f32) / 2)\n"
1174 " .byte((loc_fc291f7c - branchtable_fc291f32) / 2)\n"
1175 " .byte((loc_fc29206c - branchtable_fc291f32) / 2)\n"
1176 " .byte((loc_fc292072 - branchtable_fc291f32) / 2)\n"
1177 " .byte((loc_fc292072 - branchtable_fc291f32) / 2)\n"
1178 " .byte((loc_fc292072 - branchtable_fc291f32) / 2)\n"
1179 " .byte((loc_fc292072 - branchtable_fc291f32) / 2)\n"
1180 " .byte((loc_fc292078 - branchtable_fc291f32) / 2)\n"
1181 " .byte((loc_fc29207c - branchtable_fc291f32) / 2)\n"
1182 " .byte((loc_fc29207c - branchtable_fc291f32) / 2)\n"
1183 " .byte((loc_fc29207c - branchtable_fc291f32) / 2)\n"
1184 " .byte((loc_fc29207c - branchtable_fc291f32) / 2)\n"
1185 " .byte((loc_fc29207c - branchtable_fc291f32) / 2)\n"
1186 " .byte((loc_fc29207c - branchtable_fc291f32) / 2)\n"
1187 " .byte((loc_fc29207c - branchtable_fc291f32) / 2)\n"
1188 " .byte((loc_fc291f70 - branchtable_fc291f32) / 2)\n"
1189 " .byte((loc_fc291f76 - branchtable_fc291f32) / 2)\n"
1190 " .byte((loc_fc291f76 - branchtable_fc291f32) / 2)\n"
1191 " .byte((loc_fc291f76 - branchtable_fc291f32) / 2)\n"
1192 " .byte((loc_fc291fac - branchtable_fc291f32) / 2)\n"
1193 " .byte((loc_fc291fac - branchtable_fc291f32) / 2)\n"
1194 " .byte((loc_fc291fac - branchtable_fc291f32) / 2)\n"
1195 " .byte((loc_fc291fb2 - branchtable_fc291f32) / 2)\n"
1196 " .byte((loc_fc291fdc - branchtable_fc291f32) / 2)\n"
1197 " .byte((loc_fc29207c - branchtable_fc291f32) / 2)\n"
1198 " .byte((loc_fc29207c - branchtable_fc291f32) / 2)\n"
1199 " .byte((loc_fc292006 - branchtable_fc291f32) / 2)\n"
1200 " .byte((loc_fc292030 - branchtable_fc291f32) / 2)\n"
1201 " .byte((loc_fc29205a - branchtable_fc291f32) / 2)\n"
1202 " .byte((loc_fc29205a - branchtable_fc291f32) / 2)\n"
1203 " .byte((loc_fc29207c - branchtable_fc291f32) / 2)\n"
1204 " .byte((loc_fc29207c - branchtable_fc291f32) / 2)\n"
1205 " .byte((loc_fc292060 - branchtable_fc291f32) / 2)\n"
1206 " .byte((loc_fc292066 - branchtable_fc291f32) / 2)\n"
1207 ".align 1\n"
1208 "loc_fc291f5e:\n"
1209 " bl sub_fc28e0b0\n"
1210 "loc_fc291f62:\n"
1211 " b loc_fc29207c\n"
1212 "loc_fc291f64:\n"
1213 " bl sub_fc28e314\n"
1214 " b loc_fc29207c\n"
1215 "loc_fc291f6a:\n"
1216 " bl sub_fc28e53e\n"
1217 " b loc_fc29207c\n"
1218 "loc_fc291f70:\n"
1219 " bl sub_fc28e7e2\n"
1220 " b loc_fc29207c\n"
1221 "loc_fc291f76:\n"
1222 " bl sub_fc28e996\n"
1223 " b loc_fc29207c\n"
1224 "loc_fc291f7c:\n"
1225
1226 " bl sub_fc28edc8_my\n"
1227 " movs r5, #0\n"
1228 " b loc_fc29207c\n"
1229 ".ltorg\n"
1230
1231
1232 "loc_fc291fac:\n"
1233 " bl sub_fc28eec2\n"
1234 " b loc_fc29207c\n"
1235 "loc_fc291fb2:\n"
1236 " ldrh r1, [r0, #4]\n"
1237 " strh.w r1, [sp, #0x1c]\n"
1238 " ldrh r1, [r6, #2]\n"
1239 " strh.w r1, [sp, #0x1e]\n"
1240 " ldrh r1, [r6, #4]\n"
1241 " strh.w r1, [sp, #0x20]\n"
1242 " ldrh r1, [r6, #6]\n"
1243 " strh.w r1, [sp, #0x22]\n"
1244 " ldrh r1, [r0, #0xc]\n"
1245 " strh.w r1, [sp, #0x24]\n"
1246 " ldrh r1, [r6, #0xa]\n"
1247 " strh.w r1, [sp, #0x26]\n"
1248 " bl sub_fc28f3f2\n"
1249 " b loc_fc29207c\n"
1250 "loc_fc291fdc:\n"
1251 " ldrh r1, [r0, #4]\n"
1252 " strh.w r1, [sp, #0x1c]\n"
1253 " ldrh r1, [r6, #2]\n"
1254 " strh.w r1, [sp, #0x1e]\n"
1255 " ldrh r1, [r6, #4]\n"
1256 " strh.w r1, [sp, #0x20]\n"
1257 " ldrh r1, [r6, #6]\n"
1258 " strh.w r1, [sp, #0x22]\n"
1259 " ldrh r1, [r6, #8]\n"
1260 " strh.w r1, [sp, #0x24]\n"
1261 " ldrh r1, [r6, #0xa]\n"
1262 " strh.w r1, [sp, #0x26]\n"
1263 " bl sub_fc292c40\n"
1264 " b loc_fc29207c\n"
1265 "loc_fc292006:\n"
1266 " ldrh r1, [r6]\n"
1267 " strh.w r1, [sp, #0x1c]\n"
1268 " ldrh r1, [r0, #6]\n"
1269 "loc_fc29200e:\n"
1270 " strh.w r1, [sp, #0x1e]\n"
1271 " ldrh r1, [r6, #4]\n"
1272 " strh.w r1, [sp, #0x20]\n"
1273 " ldrh r1, [r6, #6]\n"
1274 " strh.w r1, [sp, #0x22]\n"
1275 " ldrh r1, [r6, #8]\n"
1276 " strh.w r1, [sp, #0x24]\n"
1277 " ldrh r1, [r6, #0xa]\n"
1278 " strh.w r1, [sp, #0x26]\n"
1279 "loc_fc29202a:\n"
1280 " bl sub_fc292cc6\n"
1281 " b loc_fc29207c\n"
1282 "loc_fc292030:\n"
1283 " ldrh r1, [r6]\n"
1284 " strh.w r1, [sp, #0x1c]\n"
1285 " ldrh r1, [r6, #2]\n"
1286 " strh.w r1, [sp, #0x1e]\n"
1287 " ldrh r1, [r6, #4]\n"
1288 " strh.w r1, [sp, #0x20]\n"
1289 " ldrh r1, [r6, #6]\n"
1290 " strh.w r1, [sp, #0x22]\n"
1291 " ldrh r1, [r0, #0xc]\n"
1292 " strh.w r1, [sp, #0x24]\n"
1293 " ldrh r1, [r6, #0xa]\n"
1294 " strh.w r1, [sp, #0x26]\n"
1295 " bl sub_fc292d7c\n"
1296 " b loc_fc29207c\n"
1297 "loc_fc29205a:\n"
1298 " bl sub_fc28f4d2\n"
1299 " b loc_fc29207c\n"
1300 "loc_fc292060:\n"
1301 " bl sub_fc28fb64\n"
1302 " b loc_fc29207c\n"
1303 "loc_fc292066:\n"
1304 " bl sub_fc28ff46\n"
1305 " b loc_fc29207c\n"
1306 "loc_fc29206c:\n"
1307 " bl sub_fc29014c\n"
1308 " b loc_fc29207c\n"
1309 "loc_fc292072:\n"
1310 " bl sub_fc2902a2\n"
1311 " b loc_fc29207c\n"
1312 "loc_fc292078:\n"
1313 " bl sub_fc2903be\n"
1314 "loc_fc29207c:\n"
1315 " ldr r0, [sp, #0x28]\n"
1316 " add.w r0, r0, #0x94\n"
1317 " ldrd r3, r2, [r0, #0x18]\n"
1318 " ldr r1, [r0]\n"
1319 "loc_fc292088:\n"
1320 " sub.w r0, r0, #0x90\n"
1321 " blx r3\n"
1322 "loc_fc29208e:\n"
1323 " ldr r0, [sp, #0x28]\n"
1324 " ldr r0, [r0]\n"
1325 " cmp r0, #0x10\n"
1326 " beq loc_fc2920b2\n"
1327 " bgt loc_fc2920a6\n"
1328 " cmp r0, #1\n"
1329 " beq loc_fc2920b2\n"
1330 " cmp r0, #4\n"
1331 " beq loc_fc2920b2\n"
1332 " cmp r0, #0xe\n"
1333 " bne loc_fc2920e0\n"
1334 " b loc_fc2920b2\n"
1335 "loc_fc2920a6:\n"
1336 " cmp r0, #0x13\n"
1337 " beq loc_fc2920b2\n"
1338 " cmp r0, #0x18\n"
1339 " beq loc_fc2920b2\n"
1340 " cmp r0, #0x1b\n"
1341 " bne loc_fc2920e0\n"
1342 "loc_fc2920b2:\n"
1343 " ldrsh.w r1, [r6]\n"
1344 " mov r2, sl\n"
1345 " cmp r1, sl\n"
1346 " beq loc_fc2920c4\n"
1347 " ldrsh.w r0, [r6, #8]\n"
1348 " cmp r0, r2\n"
1349 " bne loc_fc2920d8\n"
1350 "loc_fc2920c4:\n"
1351 " add r0, sp, #0x10\n"
1352 " bl sub_fc2dd206\n"
1353 " ldrh.w r0, [sp, #0x10]\n"
1354 " strh.w r0, [sp, #0x1c]\n"
1355 " ldrh.w r0, [sp, #0x18]\n"
1356 " b loc_fc2920dc\n"
1357 "loc_fc2920d8:\n"
1358 " strh.w r1, [sp, #0x1c]\n"
1359 "loc_fc2920dc:\n"
1360 " strh.w r0, [sp, #0x24]\n"
1361 "loc_fc2920e0:\n"
1362 " cmp r5, #1\n"
1363 " ldr r0, [sp, #0x28]\n"
1364 " bne loc_fc292118\n"
1365 " movs r2, #0xc\n"
1366 " ldr.w r1, [r0, #0x94]\n"
1367 " add.w r1, r1, r1, lsl #1\n"
1368 " add.w r4, r0, r1, lsl #2\n"
1369 " ldr r0, =0x0005e458\n"
1370 " subs r4, #8\n"
1371 " add r1, sp, #0x1c\n"
1372 " blx sub_fc2cf42c\n"
1373 " ldr r0, =0x0005e458\n"
1374 " movs r2, #0xc\n"
1375 " add r1, sp, #0x1c\n"
1376 " adds r0, #0xc\n"
1377 " blx sub_fc2cf42c\n"
1378 " ldr r0, =0x0005e458\n"
1379 " movs r2, #0xc\n"
1380 " mov r1, r4\n"
1381 " adds r0, #0x18\n"
1382 " blx sub_fc2cf42c\n"
1383 " b loc_fc292162\n"
1384 "loc_fc292118:\n"
1385 " ldr r0, [r0]\n"
1386 " mov.w r3, #1\n"
1387 " cmp r0, #0xb\n"
1388 " bne loc_fc292142\n"
1389 " movs r2, #0\n"
1390 " mov r1, r3\n"
1391 " strd r2, r3, [sp]\n"
1392 " movs r0, #0\n"
1393 " mov r2, r3\n"
1394 " bl sub_fc28df02\n"
1395 " movs r3, #1\n"
1396 " movs r2, #0\n"
1397 " mov r1, r3\n"
1398 " movs r0, #0\n"
1399 " strd r2, r3, [sp]\n"
1400 " mov r2, r3\n"
1401 " b loc_fc29215e\n"
1402 "loc_fc292142:\n"
1403 " movs r2, #1\n"
1404 " strd r2, r3, [sp]\n"
1405 " mov r3, r2\n"
1406 " mov r1, r2\n"
1407 " mov r0, r2\n"
1408 " bl sub_fc28df02\n"
1409 " movs r3, #1\n"
1410 " str r3, [sp]\n"
1411 " mov r2, r3\n"
1412 " mov r1, r3\n"
1413 " mov r0, r3\n"
1414 " str r3, [sp, #4]\n"
1415 "loc_fc29215e:\n"
1416 " bl sub_fc28e036\n"
1417 "loc_fc292162:\n"
1418 " ldr r0, [sp, #0x28]\n"
1419 " bl sub_fc292b82\n"
1420 " b loc_fc291cea\n"
1421 ".ltorg\n"
1422 );
1423 }
1424
1425 void __attribute__((naked,noinline)) sub_fc28edc8_my() {
1426 asm volatile (
1427 " push.w {r4, r5, r6, r7, r8, lr}\n"
1428 " ldr r7, =0x0000d1b0\n"
1429 " movs r1, #0x3e\n"
1430 " mov r4, r0\n"
1431 " ldr r0, [r7, #0x1c]\n"
1432 " blx sub_fc2cf3dc\n"
1433 " movs r2, #0\n"
1434 " ldrsh.w r0, [r4, #4]\n"
1435 " movs r3, #1\n"
1436 " mov r1, r2\n"
1437 " bl sub_fc28db94\n"
1438 " mov r6, r0\n"
1439 " ldrsh.w r0, [r4, #6]\n"
1440 " bl sub_fc28dd32\n"
1441 " ldrsh.w r0, [r4, #8]\n"
1442 " bl sub_fc28dd76\n"
1443 " ldrsh.w r0, [r4, #0xa]\n"
1444 " bl sub_fc28ddba\n"
1445 " ldrsh.w r0, [r4, #0xc]\n"
1446 " movs r1, #0\n"
1447 " bl sub_fc28ddfe\n"
1448 " mov r5, r0\n"
1449 " ldr r0, [r4]\n"
1450 " ldr.w r8, =0x0005e470\n"
1451 " cmp r0, #0xb\n"
1452 " bne loc_fc28ee1c\n"
1453 " movs r6, #0\n"
1454 " mov r5, r6\n"
1455 " b loc_fc28ee34\n"
1456 "loc_fc28ee1c:\n"
1457 " cmp r6, #1\n"
1458 " bne loc_fc28ee34\n"
1459 " ldrsh.w r0, [r4, #4]\n"
1460 " movs r2, #2\n"
1461 " ldr r1, =0xfc28db2b\n"
1462 " bl sub_fc14d46a\n"
1463 " strh r0, [r4, #4]\n"
1464 " movs r0, #0\n"
1465 " str r0, [r7, #0x28]\n"
1466 " b loc_fc28ee3a\n"
1467 "loc_fc28ee34:\n"
1468 " ldrh.w r0, [r8]\n"
1469 " strh r0, [r4, #4]\n"
1470 "loc_fc28ee3a:\n"
1471 " cmp r5, #1\n"
1472 " bne loc_fc28ee4c\n"
1473 " ldrsh.w r0, [r4, #0xc]\n"
1474 " movs r2, #0x20\n"
1475 " ldr r1, =0xfc28db7f\n"
1476 " bl sub_fc292c16\n"
1477 " b loc_fc28ee50\n"
1478 "loc_fc28ee4c:\n"
1479 " ldrh.w r0, [r8, #8]\n"
1480 "loc_fc28ee50:\n"
1481 " strh r0, [r4, #0xc]\n"
1482 " ldrsh.w r0, [r4, #6]\n"
1483
1484 " bl sub_fc16d658_my\n"
1485 "ldr pc, =0xfc28ee5b\n"
1486 ".ltorg\n"
1487
1488
1489
1490
1491
1492
1493 );
1494 }
1495
1496 void __attribute__((naked,noinline)) sub_fc16d658_my() {
1497 asm volatile (
1498 " push {r4, r5, r6, lr}\n"
1499 " ldr r5, =0x0000cd4c\n"
1500 " mov r4, r0\n"
1501 " ldr r0, [r5, #4]\n"
1502 " cmp r0, #1\n"
1503 " beq loc_fc16d670\n"
1504 " movs r0, #0\n"
1505 " movw r2, #0x16b\n"
1506 " ldr r1, =0xfc16d6b8\n"
1507 " blx sub_fc2cf40c\n"
1508 "loc_fc16d670:\n"
1509 " ldr r0, =0xfffff400\n"
1510 " cmp r4, r0\n"
1511 " bne loc_fc16d67a\n"
1512 " ldrsh.w r4, [r5, #2]\n"
1513 "loc_fc16d67a:\n"
1514 " strh r4, [r5, #2]\n"
1515 " cmp r4, r0\n"
1516 " bne loc_fc16d68c\n"
1517 " movs r0, #0\n"
1518 " movw r2, #0x171\n"
1519 " ldr r1, =0xfc16d6b8\n"
1520 " blx sub_fc2cf40c\n"
1521 "loc_fc16d68c:\n"
1522 " mov r0, r4\n"
1523 " bl apex2us\n"
1524
1525
1526
1527 " bl sub_fc199bb8\n"
1528 " lsls r0, r0, #0x1f\n"
1529 " beq loc_fc16d6b2\n"
1530 " pop.w {r4, r5, r6, lr}\n"
1531 " movs r0, #0\n"
1532 " movw r2, #0x176\n"
1533 " ldr r1, =0xfc16d6b8\n"
1534
1535 "ldr pc, =0xfc2ce955\n"
1536 "loc_fc16d6b2:\n"
1537 " pop {r4, r5, r6, pc}\n"
1538 ".ltorg\n"
1539 );
1540 }
1541