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_fc1dcab8_my
- sub_fc1dc8e2_my
- sub_fc39ff8c_my
- log_remote_hook
- log_rh
- exp_drv_task
- sub_fc28edd8_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
8
9
10 extern int active_raw_buffer;
11
12 extern void _LogCameraEvent(int id,const char *fmt,...);
13
14 extern char *hook_raw_image_addr(void);
15
16 void log_capt_seq(int m)
17 {
18 _LogCameraEvent(0x60,"cs m:%d arb:%d rb:0x%08x i:%04d",
19 m,
20 active_raw_buffer,
21 hook_raw_image_addr(),
22 get_exposure_counter());
23 }
24
25 void log_capt_seq2(int m)
26 {
27 _LogCameraEvent(0x60,"cs end m:%d arb:%d rb:0x%08x i:%04d",
28 m,
29 active_raw_buffer,
30 hook_raw_image_addr(),
31 get_exposure_counter());
32 }
33 void log_capt_seq_override(void)
34 {
35 _LogCameraEvent(0x60,"cs override arb:%d rb:0x%08x i:%04d",
36 active_raw_buffer,
37 hook_raw_image_addr(),
38 get_exposure_counter());
39 }
40
41
42 #include "../../../generic/capt_seq.c"
43 extern int _captseq_raw_addr_init(int raw_index, char **ptr) ;
44 char *current_raw_addr;
45
46 void captseq_raw_addr_init_my(int raw_index,char **ptr) {
47 _captseq_raw_addr_init(raw_index,ptr);
48 current_raw_addr=*(ptr + 0x5c/4);
49 #ifdef CAPTSEQ_DEBUG_LOG
50 _LogCameraEvent(0x60,"rawinit i:0x%x p:0x%x v:0x%x",raw_index,ptr,current_raw_addr);
51 #endif
52 }
53
54 void clear_current_raw_addr(void) {
55 current_raw_addr=NULL;
56 }
57
58
59 void __attribute__((naked,noinline)) capt_seq_task() {
60 asm volatile (
61 " push {r3, r4, r5, r6, r7, lr}\n"
62 " ldr r4, =0x0003c478\n"
63 " movs r6, #0\n"
64 " ldr r5, =0x0000ba2c\n"
65 "loc_fc152766:\n"
66 " movs r2, #0\n"
67 " mov r1, sp\n"
68 " ldr r0, [r5, #8]\n"
69 " blx sub_fc2cf35c\n"
70 " lsls r0, r0, #0x1f\n"
71 " beq loc_fc152788\n"
72 " movw r2, #0x448\n"
73 " ldr r1, =0xfc152410\n"
74 " movs r0, #0\n"
75 " blx sub_fc2cf41c\n"
76 " blx sub_fc2cf36c\n"
77 " pop {r3, r4, r5, r6, r7, pc}\n"
78 "loc_fc152788:\n"
79 " ldr r0, [sp]\n"
80 " ldr r0, [r0]\n"
81 " cmp r0, #1\n"
82 " beq loc_fc1527a0\n"
83 " cmp r0, #0x29\n"
84 " beq loc_fc1527a0\n"
85 " cmp r0, #0x1d\n"
86 " beq loc_fc1527a0\n"
87 " cmp r0, #0x21\n"
88 " beq loc_fc1527a0\n"
89 " bl sub_fc1dd988\n"
90 "loc_fc1527a0:\n"
91 " ldr r0, [sp]\n"
92 " ldr r1, [r0]\n"
93 " cmp r1, #0x2b\n"
94 " bhs loc_fc152888\n"
95 " tbb [pc, r1]\n"
96 "branchtable_fc1527ac:\n"
97 " .byte((loc_fc1527d8 - branchtable_fc1527ac) / 2)\n"
98 " .byte((loc_fc1527f0 - branchtable_fc1527ac) / 2)\n"
99 " .byte((loc_fc1527f8 - branchtable_fc1527ac) / 2)\n"
100 " .byte((loc_fc152806 - branchtable_fc1527ac) / 2)\n"
101 " .byte((loc_fc152800 - branchtable_fc1527ac) / 2)\n"
102 " .byte((loc_fc152812 - branchtable_fc1527ac) / 2)\n"
103 " .byte((loc_fc152818 - branchtable_fc1527ac) / 2)\n"
104 " .byte((loc_fc15281e - branchtable_fc1527ac) / 2)\n"
105 " .byte((loc_fc152826 - branchtable_fc1527ac) / 2)\n"
106 " .byte((loc_fc152866 - branchtable_fc1527ac) / 2)\n"
107 " .byte((loc_fc152830 - branchtable_fc1527ac) / 2)\n"
108 " .byte((loc_fc152838 - branchtable_fc1527ac) / 2)\n"
109 " .byte((loc_fc15284c - branchtable_fc1527ac) / 2)\n"
110 " .byte((loc_fc152854 - branchtable_fc1527ac) / 2)\n"
111 " .byte((loc_fc15285a - branchtable_fc1527ac) / 2)\n"
112 " .byte((loc_fc152860 - branchtable_fc1527ac) / 2)\n"
113 " .byte((loc_fc152870 - branchtable_fc1527ac) / 2)\n"
114 " .byte((loc_fc152876 - branchtable_fc1527ac) / 2)\n"
115 " .byte((loc_fc15287c - branchtable_fc1527ac) / 2)\n"
116 " .byte((loc_fc152882 - branchtable_fc1527ac) / 2)\n"
117 " .byte((loc_fc15288a - branchtable_fc1527ac) / 2)\n"
118 " .byte((loc_fc15288e - branchtable_fc1527ac) / 2)\n"
119 " .byte((loc_fc152894 - branchtable_fc1527ac) / 2)\n"
120 " .byte((loc_fc15289a - branchtable_fc1527ac) / 2)\n"
121 " .byte((loc_fc1528a0 - branchtable_fc1527ac) / 2)\n"
122 " .byte((loc_fc1528a6 - branchtable_fc1527ac) / 2)\n"
123 " .byte((loc_fc1528ac - branchtable_fc1527ac) / 2)\n"
124 " .byte((loc_fc1528b4 - branchtable_fc1527ac) / 2)\n"
125 " .byte((loc_fc1528ba - branchtable_fc1527ac) / 2)\n"
126 " .byte((loc_fc1528be - branchtable_fc1527ac) / 2)\n"
127 " .byte((loc_fc1528c6 - branchtable_fc1527ac) / 2)\n"
128 " .byte((loc_fc1528cc - branchtable_fc1527ac) / 2)\n"
129 " .byte((loc_fc1528f6 - branchtable_fc1527ac) / 2)\n"
130 " .byte((loc_fc1528fc - branchtable_fc1527ac) / 2)\n"
131 " .byte((loc_fc152902 - branchtable_fc1527ac) / 2)\n"
132 " .byte((loc_fc152908 - branchtable_fc1527ac) / 2)\n"
133 " .byte((loc_fc15290e - branchtable_fc1527ac) / 2)\n"
134 " .byte((loc_fc152914 - branchtable_fc1527ac) / 2)\n"
135 " .byte((loc_fc15291c - branchtable_fc1527ac) / 2)\n"
136 " .byte((loc_fc152922 - branchtable_fc1527ac) / 2)\n"
137 " .byte((loc_fc152946 - branchtable_fc1527ac) / 2)\n"
138 " .byte((loc_fc15294c - branchtable_fc1527ac) / 2)\n"
139 " .byte((loc_fc152966 - branchtable_fc1527ac) / 2)\n"
140 ".align 1\n"
141 "loc_fc1527d8:\n"
142 " ldr r0, [r0, #0xc]\n"
143 " uxtb r0, r0\n"
144 " bl sub_fc152cfa\n"
145 #ifdef CAPTSEQ_DEBUG_LOG
146 "bl log_capt_seq_override\n"
147 #endif
148 " BL clear_current_raw_addr\n"
149 " BL shooting_expo_param_override\n"
150 " bl sub_fc150454\n"
151 " ldr r0, [r4, #0x28]\n"
152 " cmp r0, #0\n"
153 " beq loc_fc1527ee\n"
154
155 " bl sub_fc1dcab8_my\n"
156 "loc_fc1527ee:\n"
157 " b loc_fc152966\n"
158 "loc_fc1527f0:\n"
159 " ldr r0, [r0, #0x10]\n"
160
161 " bl sub_fc1dc8e2_my\n"
162 " b loc_fc152966\n"
163 "loc_fc1527f8:\n"
164 " movs r0, #1\n"
165 " bl sub_fc152ff4\n"
166 " b loc_fc152966\n"
167 "loc_fc152800:\n"
168 " bl sub_fc152a72\n"
169 " b loc_fc15280e\n"
170 "loc_fc152806:\n"
171 " ldr r0, [r0, #0xc]\n"
172 " uxtb r0, r0\n"
173 " bl sub_fc152ce2\n"
174 "loc_fc15280e:\n"
175 " str r6, [r4, #0x28]\n"
176 " b loc_fc152966\n"
177 "loc_fc152812:\n"
178 " bl sub_fc152ce8\n"
179 " b loc_fc152966\n"
180 "loc_fc152818:\n"
181 " bl sub_fc152ef0\n"
182 " b loc_fc15282a\n"
183 "loc_fc15281e:\n"
184 " ldr r0, [r0, #0x10]\n"
185 " bl sub_fc1dcb60\n"
186 " b loc_fc152966\n"
187 "loc_fc152826:\n"
188 " bl sub_fc152f7a\n"
189 "loc_fc15282a:\n"
190 " bl sub_fc150454\n"
191 " b loc_fc152966\n"
192 "loc_fc152830:\n"
193 " ldr r0, [r4, #0x54]\n"
194 " bl sub_fc153580\n"
195 " b loc_fc152966\n"
196 "loc_fc152838:\n"
197 " bl sub_fc15380c\n"
198 " b loc_fc152966\n"
199
200 ".ltorg\n"
201
202
203
204 "loc_fc15284c:\n"
205 " ldr r0, [r0, #0xc]\n"
206 " bl sub_fc153858\n"
207 " b loc_fc152966\n"
208 "loc_fc152854:\n"
209 " bl sub_fc1539d2\n"
210 " b loc_fc152966\n"
211 "loc_fc15285a:\n"
212 " bl sub_fc153da0\n"
213 " b loc_fc152966\n"
214 "loc_fc152860:\n"
215 " bl sub_fc153e36\n"
216 " b loc_fc152966\n"
217 "loc_fc152866:\n"
218 " ldr r0, [r0, #0xc]\n"
219 " uxtb r0, r0\n"
220 " bl sub_fc152ce2\n"
221 " b loc_fc152966\n"
222 "loc_fc152870:\n"
223 " bl sub_fc1db428\n"
224 " b loc_fc152966\n"
225 "loc_fc152876:\n"
226 " bl sub_fc1db610\n"
227 " b loc_fc152966\n"
228 "loc_fc15287c:\n"
229 " bl sub_fc1db6ac\n"
230 " b loc_fc152966\n"
231 "loc_fc152882:\n"
232 " bl sub_fc1db728\n"
233 " b loc_fc152966\n"
234 "loc_fc152888:\n"
235 " b loc_fc152958\n"
236 "loc_fc15288a:\n"
237 " movs r0, #0\n"
238 " b loc_fc1528ae\n"
239 "loc_fc15288e:\n"
240 " bl sub_fc1dbb14\n"
241 " b loc_fc152966\n"
242 "loc_fc152894:\n"
243 " bl sub_fc1dbb74\n"
244 " b loc_fc152966\n"
245 "loc_fc15289a:\n"
246 " bl sub_fc1dbb78\n"
247 " b loc_fc152966\n"
248 "loc_fc1528a0:\n"
249 " bl sub_fc1dbb88\n"
250 " b loc_fc152966\n"
251 "loc_fc1528a6:\n"
252 " bl sub_fc1dbc00\n"
253 " b loc_fc152966\n"
254 "loc_fc1528ac:\n"
255 " movs r0, #1\n"
256 "loc_fc1528ae:\n"
257 " bl sub_fc1db9f4\n"
258 " b loc_fc152966\n"
259 "loc_fc1528b4:\n"
260 " bl sub_fc153102\n"
261 " b loc_fc152966\n"
262 "loc_fc1528ba:\n"
263 " movs r0, #0\n"
264 " b loc_fc1528c0\n"
265 "loc_fc1528be:\n"
266 " ldr r0, [r0, #0xc]\n"
267 "loc_fc1528c0:\n"
268 " bl sub_fc153164\n"
269 " b loc_fc152966\n"
270 "loc_fc1528c6:\n"
271 " bl sub_fc1db8e8\n"
272 " b loc_fc152966\n"
273 "loc_fc1528cc:\n"
274 " ldr r1, =0x0003c4da\n"
275 " movs r2, #2\n"
276 " movs r0, #0x72\n"
277 " bl _GetPropertyCase\n"
278 " lsls r0, r0, #0x1f\n"
279 " beq loc_fc1528e8\n"
280 " movw r2, #0x508\n"
281 " ldr r1, =0xfc152410\n"
282 " movs r0, #0\n"
283 " blx sub_fc2cf41c\n"
284 "loc_fc1528e8:\n"
285 " ldrh.w r0, [r4, #0x62]\n"
286 " cmp r0, #1\n"
287 " bne loc_fc152966\n"
288 " bl sub_fc1db8e2\n"
289 " b loc_fc152966\n"
290 "loc_fc1528f6:\n"
291 " bl sub_fc1db966\n"
292 " b loc_fc152966\n"
293 "loc_fc1528fc:\n"
294 " bl sub_fc1dd364\n"
295 " b loc_fc152966\n"
296 "loc_fc152902:\n"
297 " bl sub_fc150d7a\n"
298 " b loc_fc152966\n"
299 "loc_fc152908:\n"
300 " bl sub_fc2aa49e\n"
301 " b loc_fc152966\n"
302 "loc_fc15290e:\n"
303 " bl sub_fc2aa578\n"
304 " b loc_fc152966\n"
305 "loc_fc152914:\n"
306 " ldr r0, [r0, #0xc]\n"
307 " bl sub_fc1dbcd4\n"
308 " b loc_fc152966\n"
309 "loc_fc15291c:\n"
310 " bl sub_fc1dbd3c\n"
311 " b loc_fc152966\n"
312 "loc_fc152922:\n"
313 " bl sub_fc15893e\n"
314 " ldrh.w r0, [r4, #0x1a4]\n"
315 " cmp r0, #4\n"
316 " beq loc_fc152938\n"
317 " ldrh r0, [r4]\n"
318 " sub.w r1, r0, #0x4200\n"
319 " subs r1, #0x36\n"
320 " bne loc_fc152966\n"
321 "loc_fc152938:\n"
322 " bl sub_fc2aa578\n"
323 " bl sub_fc2aaa8e\n"
324 " bl sub_fc2aa8d6\n"
325 " b loc_fc152966\n"
326 "loc_fc152946:\n"
327 " movs r2, #0\n"
328 " movs r1, #0x11\n"
329 " b loc_fc152950\n"
330 "loc_fc15294c:\n"
331 " movs r2, #0\n"
332 " movs r1, #0x10\n"
333 "loc_fc152950:\n"
334 " movs r0, #0\n"
335 " bl sub_fc150f62\n"
336 " b loc_fc152966\n"
337 "loc_fc152958:\n"
338 " movw r2, #0x572\n"
339 " ldr r1, =0xfc152410\n"
340 " movs r0, #0\n"
341 " blx sub_fc2cf41c\n"
342 "loc_fc152966:\n"
343
344 "ldr r0, [sp]\n"
345 "ldr r0, [r0]\n"
346 "bl log_capt_seq2\n"
347 " BL capt_seq_hook_set_nr\n"
348 " ldr r0, [sp]\n"
349 " ldr r1, [r0, #4]\n"
350 " ldr r0, [r5, #4]\n"
351 " blx sub_fc2cf33c\n"
352 " ldr r7, [sp]\n"
353 " ldr r0, [r7, #8]\n"
354 " cbnz r0, loc_fc152984\n"
355 " movw r2, #0x128\n"
356 " ldr r1, =0xfc152410\n"
357 " movs r0, #0\n"
358 " blx sub_fc2cf41c\n"
359 "loc_fc152984:\n"
360 " str r6, [r7, #8]\n"
361 " b loc_fc152766\n"
362
363 ".ltorg\n"
364 );
365 }
366
367 void __attribute__((naked,noinline)) sub_fc1dcab8_my() {
368 asm volatile (
369 " push {r3, r4, r5, r6, r7, lr}\n"
370 " bl sub_fc151ece\n"
371 " mov r4, r0\n"
372 " movs r0, #0xc\n"
373 " bl sub_fc2d7944\n"
374 " ldr r6, =0x00014348\n"
375 " lsls r0, r0, #0x1f\n"
376 " mov.w r5, #1\n"
377 " bne loc_fc1dcb52\n"
378 " movs r2, #2\n"
379 " mov r1, sp\n"
380 " movw r0, #0x10d\n"
381 " bl _GetPropertyCase\n"
382 " lsls r0, r0, #0x1f\n"
383 " beq loc_fc1dcaec\n"
384 " movs r0, #0\n"
385 " movw r2, #0x16d\n"
386 " ldr r1, =0xfc1dcc38\n"
387 " blx sub_fc2cf41c\n"
388 "loc_fc1dcaec:\n"
389 " ldrsh.w r0, [sp]\n"
390 " bl sub_fc1377fe\n"
391 " bl sub_fc1376d6\n"
392 " cmp r0, #1\n"
393 " bls loc_fc1dcb56\n"
394 " movs r0, #0\n"
395 " bl sub_fc13778e\n"
396 " bl sub_fc152cee\n"
397 " bl sub_fc154bcc\n"
398 " mov r1, r4\n"
399
400 "bl captseq_raw_addr_init_my\n"
401 " movs r2, #4\n"
402 " movw r0, #0x113\n"
403 " add.w r1, r4, #0x58\n"
404 " bl _SetPropertyCase\n"
405 " movs r2, #4\n"
406 " movs r0, #0x2d\n"
407 " add.w r1, r4, #0x5c\n"
408 " bl _SetPropertyCase\n"
409 " movs r2, #4\n"
410 " movs r0, #0x41\n"
411 " add.w r1, r4, #8\n"
412 " bl _SetPropertyCase\n"
413 " bl sub_fc1dd18e\n"
414 " mvn r1, #0x1000\n"
415 " blx sub_fc2cf3ec\n"
416 " mov r0, r4\n"
417 " bl sub_fc1dc688\n"
418 " mov r0, r4\n"
419
420 " bl sub_fc39ff8c_my\n"
421 " lsls r0, r0, #0x1f\n"
422 " beq loc_fc1dcb54\n"
423 "loc_fc1dcb52:\n"
424 " str r5, [r6]\n"
425 "loc_fc1dcb54:\n"
426
427 " pop {r3, r4, r5, r6, r7, pc}\n"
428 "loc_fc1dcb56:\n"
429 " bl sub_fc150d70\n"
430 " bl sub_fc2d797c\n"
431 " pop {r3, r4, r5, r6, r7, pc}\n"
432 ".ltorg\n"
433 );
434 }
435
436
437 void __attribute__((naked,noinline)) sub_fc1dc8e2_my() {
438 asm volatile (
439 " push {r2, r3, r4, r5, r6, lr}\n"
440 " ldr r6, =0x0003c478\n"
441 " mov r4, r0\n"
442 " movs r5, #0\n"
443 " ldr r0, [r6, #0x28]\n"
444 " cbz r0, loc_fc1dc90a\n"
445 " ldr r0, =0x00014348\n"
446 " ldr r0, [r0]\n"
447 " cbz r0, loc_fc1dc8f6\n"
448 " movs r5, #0x1d\n"
449 "loc_fc1dc8f6:\n"
450 " mov r2, r4\n"
451 " movs r1, #2\n"
452 " mov r0, r5\n"
453 " bl sub_fc150f62\n"
454 " mov r1, r5\n"
455 " mov r0, r4\n"
456 " bl sub_fc1dd7e6\n"
457 " b loc_fc1dcab2\n"
458 "loc_fc1dc90a:\n"
459 " bl sub_fc154bcc\n"
460 " mov r1, r4\n"
461
462 "bl captseq_raw_addr_init_my\n"
463 " movs r2, #4\n"
464 " movw r0, #0x113\n"
465 " add.w r1, r4, #0x58\n"
466 " bl _SetPropertyCase\n"
467 " movs r2, #4\n"
468 " movs r0, #0x2d\n"
469 " add.w r1, r4, #0x5c\n"
470 " bl _SetPropertyCase\n"
471 " ldr.w r0, [r6, #0x10c]\n"
472 " cbnz r0, loc_fc1dc944\n"
473 " ldrh.w r0, [r6, #0x1a2]\n"
474 " cmp r0, #3\n"
475 " beq loc_fc1dc94a\n"
476 " ldr r0, [r4, #8]\n"
477 " cmp r0, #1\n"
478 " bhi loc_fc1dc95a\n"
479 " b loc_fc1dc94a\n"
480 "loc_fc1dc944:\n"
481 " ldr r0, [r4, #0xc]\n"
482 " cmp r0, #1\n"
483 " bne loc_fc1dc95a\n"
484 "loc_fc1dc94a:\n"
485 " movs r0, #0xc\n"
486 " bl sub_fc2d7944\n"
487 " lsls r0, r0, #0x1f\n"
488 " beq loc_fc1dc95a\n"
489 " bl sub_fc150d70\n"
490 " movs r5, #1\n"
491 "loc_fc1dc95a:\n"
492 " lsls r0, r5, #0x1f\n"
493 " bne loc_fc1dca5c\n"
494 " ldr.w r0, [r6, #0xec]\n"
495 " cbz r0, loc_fc1dc97e\n"
496 " ldrh.w r0, [r6, #0x1a2]\n"
497 " cmp r0, #3\n"
498 " beq loc_fc1dc972\n"
499 " ldr r0, [r4, #8]\n"
500 " cmp r0, #1\n"
501 " bhi loc_fc1dc9be\n"
502 "loc_fc1dc972:\n"
503 " ldr.w r0, [r6, #0x10c]\n"
504 " cbz r0, loc_fc1dc97e\n"
505 " ldr r0, [r4, #0xc]\n"
506 " cmp r0, #1\n"
507 " bhi loc_fc1dc9be\n"
508 "loc_fc1dc97e:\n"
509 " movs r2, #2\n"
510 " movw r0, #0x10d\n"
511 " add r1, sp, #4\n"
512 " bl _GetPropertyCase\n"
513 " lsls r0, r0, #0x1f\n"
514 " beq loc_fc1dc998\n"
515 " movs r2, #0xc9\n"
516 " movs r0, #0\n"
517 " ldr r1, =0xfc1dcc38\n"
518 " blx sub_fc2cf41c\n"
519 "loc_fc1dc998:\n"
520 " ldrsh.w r0, [sp, #4]\n"
521 " bl sub_fc1377fe\n"
522 " bl sub_fc1376d6\n"
523 " cmp r0, #1\n"
524 " bls loc_fc1dc9b0\n"
525 " movs r0, #0\n"
526 " bl sub_fc13778e\n"
527 " b loc_fc1dc9be\n"
528 "loc_fc1dc9b0:\n"
529 " bl sub_fc150d70\n"
530 " bl sub_fc2d797c\n"
531 " movs r5, #1\n"
532 " lsls r0, r5, #0x1f\n"
533 " bne loc_fc1dcaa0\n"
534 "loc_fc1dc9be:\n"
535 " mov r0, r4\n"
536 " bl sub_fc1dd3ae\n"
537 " mov r5, r0\n"
538 " lsls r0, r0, #0x1f\n"
539 " bne loc_fc1dcaa0\n"
540 " bl sub_fc1dd18e\n"
541 " mvn r1, #0x1000\n"
542 " blx sub_fc2cf3ec\n"
543 " mov r0, r4\n"
544 " bl sub_fc39fc6a\n"
545 " mov r5, r0\n"
546 " lsls r0, r0, #0x1f\n"
547 " bne loc_fc1dcaa0\n"
548 " bl sub_fc152cee\n"
549 " mov r0, r4\n"
550 " bl sub_fc1dc688\n"
551 " ldr.w r0, [r6, #0x130]\n"
552 " cbnz r0, loc_fc1dca00\n"
553 " ldrh.w r0, [r6, #0x1a2]\n"
554 " cmp r0, #3\n"
555 " beq loc_fc1dca00\n"
556 " ldr r0, [r4, #8]\n"
557 " cmp r0, #1\n"
558 " bhi loc_fc1dca06\n"
559 "loc_fc1dca00:\n"
560 " movs r0, #2\n"
561 " bl sub_fc15980a\n"
562 "loc_fc1dca06:\n"
563 " ldr.w r0, [r6, #0xa8]\n"
564 " cmp r0, #0\n"
565 " beq loc_fc1dca7c\n"
566 " ldrh.w r0, [r6, #0x1a2]\n"
567 " movw r5, #0x1000\n"
568 " cmp r0, #3\n"
569 " beq loc_fc1dca36\n"
570 " ldr r0, [r4, #8]\n"
571 " cmp r0, #1\n"
572 " bls loc_fc1dca36\n"
573 " bl sub_fc1dd18e\n"
574 " movw r3, #0x112\n"
575 " movw r2, #0x3a98\n"
576 " mov r1, r5\n"
577 " str r3, [sp]\n"
578 " ldr r3, =0xfc1dcc38\n"
579 " bl sub_fc2d7af8\n"
580 "loc_fc1dca36:\n"
581 " movs r2, #4\n"
582 " movw r0, #0x185\n"
583 " add r1, sp, #4\n"
584 " bl _GetPropertyCase\n"
585 " lsls r0, r0, #0x1f\n"
586 " beq loc_fc1dca52\n"
587 " movs r0, #0\n"
588 " movw r2, #0x116\n"
589 " ldr r1, =0xfc1dcc38\n"
590 " blx sub_fc2cf41c\n"
591 "loc_fc1dca52:\n"
592 " ldr r0, [sp, #4]\n"
593 " cbnz r0, loc_fc1dca66\n"
594 " bl sub_fc1dd18e\n"
595 " b loc_fc1dca5e\n"
596 "loc_fc1dca5c:\n"
597 " b loc_fc1dcaa0\n"
598 "loc_fc1dca5e:\n"
599 " mov r1, r5\n"
600 " blx sub_fc2cf33c\n"
601 " b loc_fc1dca7c\n"
602 "loc_fc1dca66:\n"
603 " bl sub_fc1dd18e\n"
604 " mov r1, r5\n"
605 " blx sub_fc2cf3ec\n"
606 " ldr r2, =0xfc1dc8d1\n"
607 " mov r3, r5\n"
608 " ldr r0, [sp, #4]\n"
609 " mov r1, r2\n"
610 " bl sub_fc322d84\n"
611 "loc_fc1dca7c:\n"
612 " ldr.w r0, [r6, #0xb0]\n"
613 " cbz r0, loc_fc1dca8a\n"
614 " mov r0, r4\n"
615 " bl sub_fc3a0754\n"
616 " b loc_fc1dcab2\n"
617 "loc_fc1dca8a:\n"
618 " ldr.w r0, [r6, #0xb4]\n"
619 " cmp r0, #0\n"
620 " mov r0, r4\n"
621 " beq loc_fc1dca9a\n"
622 " bl sub_fc3a03c2\n"
623 " b loc_fc1dcab2\n"
624 "loc_fc1dca9a:\n"
625
626 " bl sub_fc39ff8c_my\n"
627 " b loc_fc1dcab2\n"
628 "loc_fc1dcaa0:\n"
629 " movs r1, #2\n"
630 " mov r2, r4\n"
631 " mov r0, r5\n"
632 " bl sub_fc150f62\n"
633 " mov r1, r5\n"
634 " mov r0, r4\n"
635 " bl sub_fc1dd91c\n"
636 "loc_fc1dcab2:\n"
637 " movs r0, #0\n"
638 " str r0, [r6, #0x28]\n"
639 " pop {r2, r3, r4, r5, r6, pc}\n"
640 );
641 }
642
643 void __attribute__((naked,noinline)) sub_fc39ff8c_my() {
644 asm volatile (
645 " push.w {r2, r3, r4, r5, r6, r7, r8, sb, sl, lr}\n"
646 " ldr r7, =0x0003c478\n"
647 " mov r4, r0\n"
648 " ldr.w r0, [r7, #0x16c]\n"
649 " cbz r0, loc_fc39ffa8\n"
650 " ldrh.w r0, [r7, #0x1a2]\n"
651 " cmp r0, #3\n"
652 " beq loc_fc39ffa8\n"
653 " ldr r0, [r4, #8]\n"
654 " cmp r0, #1\n"
655 " bhi loc_fc39ffb2\n"
656 "loc_fc39ffa8:\n"
657 " mov r0, r4\n"
658 " bl sub_fc1dc61e\n"
659 " bl sub_fc1dd04a\n"
660 "loc_fc39ffb2:\n"
661 " ldr.w r0, [r7, #0xa4]\n"
662 " cbnz r0, loc_fc39ffce\n"
663 " ldrh.w r0, [r7, #0x1a2]\n"
664 " cmp r0, #3\n"
665 " beq loc_fc39ffc6\n"
666 " ldr r0, [r4, #8]\n"
667 " cmp r0, #1\n"
668 " bhi loc_fc39ffce\n"
669 "loc_fc39ffc6:\n"
670 " bl sub_fc153152\n"
671 " bl sub_fc1dcc6a\n"
672 "loc_fc39ffce:\n"
673 " movs r2, #4\n"
674 " movw r0, #0x134\n"
675 " add r1, sp, #4\n"
676 " bl _GetPropertyCase\n"
677 " lsls r0, r0, #0x1f\n"
678 " beq loc_fc39ffea\n"
679 " movs r0, #0\n"
680 " movw r2, #0x193\n"
681 " ldr r1, =0xfc3a033c\n"
682 " blx sub_fc2cf41c\n"
683 "loc_fc39ffea:\n"
684 " ldr r0, [sp, #4]\n"
685 " ubfx r0, r0, #8, #8\n"
686 " cmp r0, #6\n"
687 " bne loc_fc39fffa\n"
688 " ldr r0, =0xfc39ff2f\n"
689 " movs r1, #0\n"
690 " b loc_fc39fffe\n"
691 "loc_fc39fffa:\n"
692 " ldr r0, =0xfc1dc2e3\n"
693 " mov r1, r4\n"
694 "loc_fc39fffe:\n"
695 " bl sub_fc16fe1c\n"
696 " ldr.w r0, [r7, #0x18c]\n"
697 " cbz r0, loc_fc3a000c\n"
698 " bl sub_fc1dc556\n"
699 "loc_fc3a000c:\n"
700 " movs r0, #0\n"
701 " bl sub_fc15655e\n"
702 " mov r0, r4\n"
703 " bl sub_fc1dc734\n"
704 " ldr r1, =0x000265c4\n"
705 " movs r2, #4\n"
706 " movs r0, #0x8d\n"
707 " bl _GetPropertyCase\n"
708 " lsls r0, r0, #0x1f\n"
709 " beq loc_fc3a0032\n"
710 " movs r0, #0\n"
711 " movw r2, #0x1ae\n"
712 " ldr r1, =0xfc3a033c\n"
713 " blx sub_fc2cf41c\n"
714 "loc_fc3a0032:\n"
715 " bl sub_fc156618\n"
716 " bl sub_fc1dc7d0\n"
717 " movs r1, #0\n"
718 " mov r0, r4\n"
719 " bl sub_fc39ff30\n"
720 " mov r6, r0\n"
721 " BL wait_until_remote_button_is_released\n"
722 "bl log_remote_hook\n"
723 " ldr r0, [sp, #4]\n"
724 " ubfx r0, r0, #8, #8\n"
725 " cmp r0, #6\n"
726 " bne loc_fc3a0052\n"
727 " ldr r2, =0xfc1dc525\n"
728 " b loc_fc3a0054\n"
729 "loc_fc3a0052:\n"
730 " ldr r2, =0xfc1dc53b\n"
731 "loc_fc3a0054:\n"
732 " ldrh r0, [r4, #0x18]\n"
733 " ldr r5, =0x000265c4\n"
734 " cbz r0, loc_fc3a0062\n"
735 " cmp r0, #1\n"
736 " beq loc_fc3a0078\n"
737 " cmp r0, #4\n"
738 " bne loc_fc3a00de\n"
739 "loc_fc3a0062:\n"
740 " str r6, [sp]\n"
741 " mov r3, r2\n"
742 " ldr r1, [r4, #0x5c]\n"
743 " mov r0, r4\n"
744 " ldr r2, [r5]\n"
745 " bl sub_fc1dc136\n"
746 " mov r5, r0\n"
747 " bl sub_fc28bb1a\n"
748 " b loc_fc3a00ec\n"
749 "loc_fc3a0078:\n"
750 " str r6, [sp]\n"
751 " mov r3, r2\n"
752 " ldr r1, [r4, #0x5c]\n"
753 " mov r8, r5\n"
754 " ldr r2, [r5]\n"
755 " mov r0, r4\n"
756 " bl sub_fc1dc196\n"
757 " movs r2, #1\n"
758 " mov r5, r0\n"
759 " movs r1, #0\n"
760 " movs r0, #0x45\n"
761 " bl sub_fc277210\n"
762 " lsls r0, r5, #0x1f\n"
763 " bne loc_fc3a00ec\n"
764 " ldr.w r0, [r7, #0x100]\n"
765 " cbz r0, loc_fc3a00ae\n"
766 " ldr r1, [r4, #8]\n"
767 " ldr r2, =0x00212cc4\n"
768 " ldr r0, [r4, #0x5c]\n"
769 " add.w r1, r2, r1, lsl #2\n"
770 " str r0, [r1, #-0x4]\n"
771 " b loc_fc3a00d8\n"
772 "loc_fc3a00ae:\n"
773 " ldr r0, =0xfc39ff2f\n"
774 " movs r1, #0\n"
775 " bl sub_fc16fe1c\n"
776 " movs r1, #1\n"
777 " mov r0, r4\n"
778 " bl sub_fc39ff30\n"
779 " mov r6, r0\n"
780 " ldr.w r0, [r8]\n"
781 " mov r5, r8\n"
782 " bl sub_fc1dc5c0\n"
783 " ldr r1, [r4, #0x5c]\n"
784 " mov r3, r6\n"
785 " ldr r2, [r5]\n"
786 " mov r0, r4\n"
787 " bl sub_fc1dc204\n"
788 " mov r5, r0\n"
789 "loc_fc3a00d8:\n"
790 " bl sub_fc1dc0e0\n"
791 " b loc_fc3a00ec\n"
792 "loc_fc3a00de:\n"
793 " movs r0, #0\n"
794 " movw r2, #0x1e1\n"
795 " ldr r1, =0xfc3a033c\n"
796 " blx sub_fc2cf41c\n"
797 " movs r5, #0x1d\n"
798 "loc_fc3a00ec:\n"
799 " bl sub_fc1dc7d4\n"
800 " ldr.w r8, =0xfc39ff2f\n"
801 " lsls r0, r5, #0x1f\n"
802 " bne loc_fc3a0148\n"
803 " ldr.w r0, [r7, #0x108]\n"
804 " cbnz r0, loc_fc3a0114\n"
805 " mov r0, r4\n"
806 " bl sub_fc1dddca\n"
807 " lsls r0, r0, #0x1f\n"
808 " beq loc_fc3a0114\n"
809 " movs r0, #0\n"
810 " movw r2, #0x207\n"
811 " ldr r1, =0xfc3a033c\n"
812 " blx sub_fc2cf41c\n"
813 "loc_fc3a0114:\n"
814 "bl log_rh\n"
815 "BL capt_seq_hook_raw_here\n"
816 "BL clear_current_raw_addr\n"
817 " mov r0, r4\n"
818 " bl sub_fc1dc7c0\n"
819 " mov r0, r4\n"
820 " bl sub_fc1dc794\n"
821 " cmp r6, r8\n"
822 " beq loc_fc3a0148\n"
823 " bl sub_fc1dd18e\n"
824 " movs r1, #4\n"
825 " movw sb, #0x214\n"
826 " ldr r3, =0xfc3a033c\n"
827 " movw r2, #0x3a98\n"
828 " str.w sb, [sp]\n"
829 " bl sub_fc2d7af8\n"
830 " cbz r0, loc_fc3a0148\n"
831 " movs r0, #0\n"
832 " mov r2, sb\n"
833 " ldr r1, =0xfc3a033c\n"
834 " blx sub_fc2cf41c\n"
835 "loc_fc3a0148:\n"
836 " ldr.w r0, [r7, #0x18c]\n"
837 " cbz r0, loc_fc3a0158\n"
838 " movs r2, #1\n"
839 " movs r1, #0\n"
840 " movs r0, #0x46\n"
841 " bl sub_fc277210\n"
842 "loc_fc3a0158:\n"
843 " movs r1, #2\n"
844 " mov r2, r4\n"
845 " mov r0, r5\n"
846 " bl sub_fc150f62\n"
847 " ldr r0, [r7, #0x28]\n"
848 " cmp r0, #0\n"
849 " mov r0, r8\n"
850 " beq loc_fc3a017e\n"
851 " cmp r6, r0\n"
852 " beq loc_fc3a0172\n"
853 " movs r1, #1\n"
854 " b loc_fc3a0174\n"
855 "loc_fc3a0172:\n"
856 " movs r1, #0\n"
857 "loc_fc3a0174:\n"
858 " mov r2, r5\n"
859 " mov r0, r4\n"
860 " bl sub_fc1dd7a4\n"
861 " b loc_fc3a0190\n"
862 "loc_fc3a017e:\n"
863 " cmp r6, r0\n"
864 " beq loc_fc3a0186\n"
865 " movs r1, #1\n"
866 " b loc_fc3a0188\n"
867 "loc_fc3a0186:\n"
868 " movs r1, #0\n"
869 "loc_fc3a0188:\n"
870 " mov r2, r5\n"
871 " mov r0, r4\n"
872 " bl sub_fc1dd75e\n"
873 "loc_fc3a0190:\n"
874 " mov r0, r5\n"
875 " pop.w {r2, r3, r4, r5, r6, r7, r8, sb, sl, pc}\n"
876
877 ".ltorg\n"
878 );
879 }
880
881 void log_remote_hook(void) {
882 _LogCameraEvent(0x60,"remote hook");
883 }
884 void log_rh(void) {
885 _LogCameraEvent(0x60,"raw hook");
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_fc291cfa:\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_fc2cf35c\n"
908 " ldr r0, [sp, #0xc]\n"
909 " cmp r0, #1\n"
910 " bne loc_fc291d32\n"
911 " ldr r0, [sp, #0x28]\n"
912 " ldr r0, [r0]\n"
913 " cmp r0, #0x14\n"
914 "loc_fc291d14:\n"
915 " beq loc_fc291e14\n"
916 " cmp r0, #0x15\n"
917 " beq loc_fc291d14\n"
918 " cmp r0, #0x16\n"
919 " beq loc_fc291d14\n"
920 " cmp r0, #0x17\n"
921 " beq loc_fc291d14\n"
922 " cmp r0, #0x18\n"
923 " beq loc_fc291e24\n"
924 " cmp r0, #0x2e\n"
925 " beq loc_fc291dce\n"
926 " movs r0, #0\n"
927 " add r1, sp, #0xc\n"
928 " bl sub_fc291c9a\n"
929 "loc_fc291d32:\n"
930 " ldr r0, [sp, #0x28]\n"
931 " ldr r1, [r0]\n"
932 " cmp r1, #0x34\n"
933 " bne loc_fc291d50\n"
934 " bl sub_fc292b92\n"
935 " ldr.w r0, [sb, #0x1c]\n"
936 " movs r1, #1\n"
937 " blx sub_fc2cf33c\n"
938 " blx sub_fc2cf36c\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_fc291d50:\n"
946 " cmp r1, #0x33\n"
947 " bne loc_fc291d62\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_fc292172\n"
953 "loc_fc291d62:\n"
954 " cmp r1, #0x2c\n"
955 " bne loc_fc291d98\n"
956 " ldr r0, [r4, #0x1c]\n"
957 " movs r1, #0x80\n"
958 " blx sub_fc2cf3ec\n"
959 " ldr r0, =0xfc28db45\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_fc2cf1cc\n"
966 " lsls r0, r0, #0x1f\n"
967 " beq loc_fc291d8a\n"
968 " movw r2, #0x17d8\n"
969 " b loc_fc291e1a\n"
970 "loc_fc291d8a:\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_fc292172\n"
976 "loc_fc291d98:\n"
977 " cmp r1, #0x2d\n"
978 " bne loc_fc291dca\n"
979 " add r1, sp, #0xc\n"
980 " bl sub_fc291c9a\n"
981 " movw r5, #0x100\n"
982 " ldr r0, [r4, #0x1c]\n"
983 " mov r1, r5\n"
984 " blx sub_fc2cf3ec\n"
985 " ldr r0, =0xfc28db4f\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_fc2cf1cc\n"
992 " lsls r0, r0, #0x1f\n"
993 " beq loc_fc291d8a\n"
994 " movw r2, #0x17e2\n"
995 " b loc_fc291e1a\n"
996 "loc_fc291dca:\n"
997 " cmp r1, #0x2e\n"
998 " bne loc_fc291dd8\n"
999 "loc_fc291dce:\n"
1000 " ldr r0, [sp, #0x28]\n"
1001 " add r1, sp, #0xc\n"
1002 " bl sub_fc291c9a\n"
1003 " b loc_fc291d8a\n"
1004 "loc_fc291dd8:\n"
1005 " cmp r1, #0x31\n"
1006 " bne loc_fc291dea\n"
1007 " bl sub_fc16d89c\n"
1008 " bl sub_fc16e228\n"
1009 " bl sub_fc16df0a\n"
1010 " b loc_fc291d8a\n"
1011 "loc_fc291dea:\n"
1012 " cmp r1, #0x32\n"
1013 " bne loc_fc291e24\n"
1014 " ldr r0, [r4, #0x1c]\n"
1015 " movs r1, #4\n"
1016 " blx sub_fc2cf3ec\n"
1017 " ldr r1, =0xfc28db63\n"
1018 " movs r2, #4\n"
1019 " mov r0, sl\n"
1020 " bl sub_fc292be4\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_fc2cf3e4\n"
1026 " lsls r0, r0, #0x1f\n"
1027 " beq loc_fc291d8a\n"
1028 " b loc_fc291e16\n"
1029 "loc_fc291e14:\n"
1030 " b loc_fc291e24\n"
1031 "loc_fc291e16:\n"
1032 " movw r2, #0x181a\n"
1033 "loc_fc291e1a:\n"
1034 " ldr r1, =0xfc28e370\n"
1035 " movs r0, #0\n"
1036 " blx sub_fc2cf41c\n"
1037 " b loc_fc291d8a\n"
1038 "loc_fc291e24:\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_fc291e32\n"
1044 " cmp r1, #0x13\n"
1045 " bne loc_fc291e70\n"
1046 "loc_fc291e32:\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_fc290588\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_fc292dfa\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_fc292098\n"
1068 "loc_fc291e70:\n"
1069 " cmp r1, #0x14\n"
1070 " beq loc_fc291e84\n"
1071 " cmp r1, #0x15\n"
1072 " beq loc_fc291e84\n"
1073 " cmp r1, #0x16\n"
1074 " beq loc_fc291e84\n"
1075 " cmp r1, #0x17\n"
1076 " beq loc_fc291e84\n"
1077 " cmp r1, #0x18\n"
1078 " bne loc_fc291ef6\n"
1079 "loc_fc291e84:\n"
1080 " add r3, sp, #0xc\n"
1081 " mov r2, sp\n"
1082 " add r1, sp, #0x1c\n"
1083 " bl sub_fc29075c\n"
1084 " cmp r0, #1\n"
1085 " mov r4, r0\n"
1086 " beq loc_fc291e98\n"
1087 " cmp r4, #5\n"
1088 " bne loc_fc291eae\n"
1089 "loc_fc291e98:\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_fc291ed4\n"
1098 "loc_fc291eae:\n"
1099 " cmp r4, #2\n"
1100 " beq loc_fc291eb6\n"
1101 " cmp r4, #6\n"
1102 " bne loc_fc291ee0\n"
1103 "loc_fc291eb6:\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_fc291a28\n"
1115 "loc_fc291ed4:\n"
1116 " ldr r2, [sp, #0xc]\n"
1117 " mov r1, r4\n"
1118 " ldr r0, [sp, #0x28]\n"
1119 " bl sub_fc291c4a\n"
1120 " b loc_fc29209e\n"
1121 "loc_fc291ee0:\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_fc29209e\n"
1130 "loc_fc291ef6:\n"
1131 " cmp r1, #0x28\n"
1132 " beq loc_fc291efe\n"
1133 " cmp r1, #0x29\n"
1134 " bne loc_fc291f30\n"
1135 "loc_fc291efe:\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_fc28f6bc\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_fc28faac\n"
1152 " b loc_fc29209e\n"
1153 "loc_fc291f30:\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_fc291f72\n"
1161 " tbb [pc, r1]\n"
1162 "branchtable_fc291f42:\n"
1163 " .byte((loc_fc291f6e - branchtable_fc291f42) / 2)\n"
1164 " .byte((loc_fc291f6e - branchtable_fc291f42) / 2)\n"
1165 " .byte((loc_fc291f74 - branchtable_fc291f42) / 2)\n"
1166 " .byte((loc_fc291f7a - branchtable_fc291f42) / 2)\n"
1167 " .byte((loc_fc291f7a - branchtable_fc291f42) / 2)\n"
1168 " .byte((loc_fc291f7a - branchtable_fc291f42) / 2)\n"
1169 " .byte((loc_fc291f6e - branchtable_fc291f42) / 2)\n"
1170 " .byte((loc_fc291f74 - branchtable_fc291f42) / 2)\n"
1171 " .byte((loc_fc291f7a - branchtable_fc291f42) / 2)\n"
1172 " .byte((loc_fc291f7a - branchtable_fc291f42) / 2)\n"
1173 " .byte((loc_fc291f8c - branchtable_fc291f42) / 2)\n"
1174 " .byte((loc_fc291f8c - branchtable_fc291f42) / 2)\n"
1175 " .byte((loc_fc29207c - branchtable_fc291f42) / 2)\n"
1176 " .byte((loc_fc292082 - branchtable_fc291f42) / 2)\n"
1177 " .byte((loc_fc292082 - branchtable_fc291f42) / 2)\n"
1178 " .byte((loc_fc292082 - branchtable_fc291f42) / 2)\n"
1179 " .byte((loc_fc292082 - branchtable_fc291f42) / 2)\n"
1180 " .byte((loc_fc292088 - branchtable_fc291f42) / 2)\n"
1181 " .byte((loc_fc29208c - branchtable_fc291f42) / 2)\n"
1182 " .byte((loc_fc29208c - branchtable_fc291f42) / 2)\n"
1183 " .byte((loc_fc29208c - branchtable_fc291f42) / 2)\n"
1184 " .byte((loc_fc29208c - branchtable_fc291f42) / 2)\n"
1185 " .byte((loc_fc29208c - branchtable_fc291f42) / 2)\n"
1186 " .byte((loc_fc29208c - branchtable_fc291f42) / 2)\n"
1187 " .byte((loc_fc29208c - branchtable_fc291f42) / 2)\n"
1188 " .byte((loc_fc291f80 - branchtable_fc291f42) / 2)\n"
1189 " .byte((loc_fc291f86 - branchtable_fc291f42) / 2)\n"
1190 " .byte((loc_fc291f86 - branchtable_fc291f42) / 2)\n"
1191 " .byte((loc_fc291f86 - branchtable_fc291f42) / 2)\n"
1192 " .byte((loc_fc291fbc - branchtable_fc291f42) / 2)\n"
1193 " .byte((loc_fc291fbc - branchtable_fc291f42) / 2)\n"
1194 " .byte((loc_fc291fbc - branchtable_fc291f42) / 2)\n"
1195 " .byte((loc_fc291fc2 - branchtable_fc291f42) / 2)\n"
1196 " .byte((loc_fc291fec - branchtable_fc291f42) / 2)\n"
1197 " .byte((loc_fc29208c - branchtable_fc291f42) / 2)\n"
1198 " .byte((loc_fc29208c - branchtable_fc291f42) / 2)\n"
1199 " .byte((loc_fc292016 - branchtable_fc291f42) / 2)\n"
1200 " .byte((loc_fc292040 - branchtable_fc291f42) / 2)\n"
1201 " .byte((loc_fc29206a - branchtable_fc291f42) / 2)\n"
1202 " .byte((loc_fc29206a - branchtable_fc291f42) / 2)\n"
1203 " .byte((loc_fc29208c - branchtable_fc291f42) / 2)\n"
1204 " .byte((loc_fc29208c - branchtable_fc291f42) / 2)\n"
1205 " .byte((loc_fc292070 - branchtable_fc291f42) / 2)\n"
1206 " .byte((loc_fc292076 - branchtable_fc291f42) / 2)\n"
1207 ".align 1\n"
1208 "loc_fc291f6e:\n"
1209 " bl sub_fc28e0c0\n"
1210 "loc_fc291f72:\n"
1211 " b loc_fc29208c\n"
1212 "loc_fc291f74:\n"
1213 " bl sub_fc28e324\n"
1214 " b loc_fc29208c\n"
1215 "loc_fc291f7a:\n"
1216 " bl sub_fc28e54e\n"
1217 " b loc_fc29208c\n"
1218 "loc_fc291f80:\n"
1219 " bl sub_fc28e7f2\n"
1220 " b loc_fc29208c\n"
1221 "loc_fc291f86:\n"
1222 " bl sub_fc28e9a6\n"
1223 " b loc_fc29208c\n"
1224 "loc_fc291f8c:\n"
1225
1226 " bl sub_fc28edd8_my\n"
1227 " movs r5, #0\n"
1228 " b loc_fc29208c\n"
1229 ".ltorg\n"
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246 "loc_fc291fbc:\n"
1247 " bl sub_fc28eed2\n"
1248 " b loc_fc29208c\n"
1249 "loc_fc291fc2:\n"
1250 " ldrh r1, [r0, #4]\n"
1251 " strh.w r1, [sp, #0x1c]\n"
1252 " ldrh r1, [r6, #2]\n"
1253 " strh.w r1, [sp, #0x1e]\n"
1254 " ldrh r1, [r6, #4]\n"
1255 " strh.w r1, [sp, #0x20]\n"
1256 " ldrh r1, [r6, #6]\n"
1257 " strh.w r1, [sp, #0x22]\n"
1258 " ldrh r1, [r0, #0xc]\n"
1259 " strh.w r1, [sp, #0x24]\n"
1260 " ldrh r1, [r6, #0xa]\n"
1261 " strh.w r1, [sp, #0x26]\n"
1262 " bl sub_fc28f402\n"
1263 " b loc_fc29208c\n"
1264 "loc_fc291fec:\n"
1265 " ldrh r1, [r0, #4]\n"
1266 " strh.w r1, [sp, #0x1c]\n"
1267 " ldrh r1, [r6, #2]\n"
1268 " strh.w r1, [sp, #0x1e]\n"
1269 " ldrh r1, [r6, #4]\n"
1270 " strh.w r1, [sp, #0x20]\n"
1271 " ldrh r1, [r6, #6]\n"
1272 " strh.w r1, [sp, #0x22]\n"
1273 " ldrh r1, [r6, #8]\n"
1274 " strh.w r1, [sp, #0x24]\n"
1275 " ldrh r1, [r6, #0xa]\n"
1276 " strh.w r1, [sp, #0x26]\n"
1277 " bl sub_fc292c50\n"
1278 " b loc_fc29208c\n"
1279 "loc_fc292016:\n"
1280 " ldrh r1, [r6]\n"
1281 " strh.w r1, [sp, #0x1c]\n"
1282 " ldrh r1, [r0, #6]\n"
1283 " strh.w r1, [sp, #0x1e]\n"
1284 " ldrh r1, [r6, #4]\n"
1285 " strh.w r1, [sp, #0x20]\n"
1286 " ldrh r1, [r6, #6]\n"
1287 " strh.w r1, [sp, #0x22]\n"
1288 " ldrh r1, [r6, #8]\n"
1289 " strh.w r1, [sp, #0x24]\n"
1290 " ldrh r1, [r6, #0xa]\n"
1291 " strh.w r1, [sp, #0x26]\n"
1292 " bl sub_fc292cd6\n"
1293 "loc_fc29203e:\n"
1294 " b loc_fc29208c\n"
1295 "loc_fc292040:\n"
1296 " ldrh r1, [r6]\n"
1297 " strh.w r1, [sp, #0x1c]\n"
1298 " ldrh r1, [r6, #2]\n"
1299 " strh.w r1, [sp, #0x1e]\n"
1300 " ldrh r1, [r6, #4]\n"
1301 " strh.w r1, [sp, #0x20]\n"
1302 " ldrh r1, [r6, #6]\n"
1303 " strh.w r1, [sp, #0x22]\n"
1304 " ldrh r1, [r0, #0xc]\n"
1305 "loc_fc29205a:\n"
1306 " strh.w r1, [sp, #0x24]\n"
1307 " ldrh r1, [r6, #0xa]\n"
1308 " strh.w r1, [sp, #0x26]\n"
1309 " bl sub_fc292d8c\n"
1310 " b loc_fc29208c\n"
1311 "loc_fc29206a:\n"
1312 " bl sub_fc28f4e2\n"
1313 " b loc_fc29208c\n"
1314 "loc_fc292070:\n"
1315 " bl sub_fc28fb74\n"
1316 " b loc_fc29208c\n"
1317 "loc_fc292076:\n"
1318 " bl sub_fc28ff56\n"
1319 " b loc_fc29208c\n"
1320 "loc_fc29207c:\n"
1321 " bl sub_fc29015c\n"
1322 " b loc_fc29208c\n"
1323 "loc_fc292082:\n"
1324 " bl sub_fc2902b2\n"
1325 " b loc_fc29208c\n"
1326 "loc_fc292088:\n"
1327 " bl sub_fc2903ce\n"
1328 "loc_fc29208c:\n"
1329 " ldr r0, [sp, #0x28]\n"
1330 " add.w r0, r0, #0x94\n"
1331 " ldrd r3, r2, [r0, #0x18]\n"
1332 " ldr r1, [r0]\n"
1333 "loc_fc292098:\n"
1334 " sub.w r0, r0, #0x90\n"
1335 " blx r3\n"
1336 "loc_fc29209e:\n"
1337 " ldr r0, [sp, #0x28]\n"
1338 " ldr r0, [r0]\n"
1339 " cmp r0, #0x10\n"
1340 " beq loc_fc2920c2\n"
1341 " bgt loc_fc2920b6\n"
1342 " cmp r0, #1\n"
1343 " beq loc_fc2920c2\n"
1344 " cmp r0, #4\n"
1345 " beq loc_fc2920c2\n"
1346 " cmp r0, #0xe\n"
1347 " bne loc_fc2920f0\n"
1348 " b loc_fc2920c2\n"
1349 "loc_fc2920b6:\n"
1350 " cmp r0, #0x13\n"
1351 " beq loc_fc2920c2\n"
1352 " cmp r0, #0x18\n"
1353 " beq loc_fc2920c2\n"
1354 " cmp r0, #0x1b\n"
1355 " bne loc_fc2920f0\n"
1356 "loc_fc2920c2:\n"
1357 " ldrsh.w r1, [r6]\n"
1358 " mov r2, sl\n"
1359 " cmp r1, sl\n"
1360 " beq loc_fc2920d4\n"
1361 " ldrsh.w r0, [r6, #8]\n"
1362 " cmp r0, r2\n"
1363 " bne loc_fc2920e8\n"
1364 "loc_fc2920d4:\n"
1365 " add r0, sp, #0x10\n"
1366 " bl sub_fc2dd216\n"
1367 " ldrh.w r0, [sp, #0x10]\n"
1368 " strh.w r0, [sp, #0x1c]\n"
1369 " ldrh.w r0, [sp, #0x18]\n"
1370 " b loc_fc2920ec\n"
1371 "loc_fc2920e8:\n"
1372 " strh.w r1, [sp, #0x1c]\n"
1373 "loc_fc2920ec:\n"
1374 " strh.w r0, [sp, #0x24]\n"
1375 "loc_fc2920f0:\n"
1376 " cmp r5, #1\n"
1377 " ldr r0, [sp, #0x28]\n"
1378 " bne loc_fc292128\n"
1379 " movs r2, #0xc\n"
1380 " ldr.w r1, [r0, #0x94]\n"
1381 " add.w r1, r1, r1, lsl #1\n"
1382 " add.w r4, r0, r1, lsl #2\n"
1383 " ldr r0, =0x0005e458\n"
1384 " subs r4, #8\n"
1385 " add r1, sp, #0x1c\n"
1386 " blx sub_fc2cf43c\n"
1387 " ldr r0, =0x0005e458\n"
1388 " movs r2, #0xc\n"
1389 " add r1, sp, #0x1c\n"
1390 " adds r0, #0xc\n"
1391 " blx sub_fc2cf43c\n"
1392 " ldr r0, =0x0005e458\n"
1393 " movs r2, #0xc\n"
1394 " mov r1, r4\n"
1395 " adds r0, #0x18\n"
1396 " blx sub_fc2cf43c\n"
1397 " b loc_fc292172\n"
1398 "loc_fc292128:\n"
1399 " ldr r0, [r0]\n"
1400 " mov.w r3, #1\n"
1401 " cmp r0, #0xb\n"
1402 " bne loc_fc292152\n"
1403 " movs r2, #0\n"
1404 " mov r1, r3\n"
1405 " strd r2, r3, [sp]\n"
1406 " movs r0, #0\n"
1407 " mov r2, r3\n"
1408 " bl sub_fc28df12\n"
1409 " movs r3, #1\n"
1410 " movs r2, #0\n"
1411 " mov r1, r3\n"
1412 " movs r0, #0\n"
1413 " strd r2, r3, [sp]\n"
1414 " mov r2, r3\n"
1415 " b loc_fc29216e\n"
1416 "loc_fc292152:\n"
1417 " movs r2, #1\n"
1418 " strd r2, r3, [sp]\n"
1419 " mov r3, r2\n"
1420 " mov r1, r2\n"
1421 " mov r0, r2\n"
1422 " bl sub_fc28df12\n"
1423 " movs r3, #1\n"
1424 " str r3, [sp]\n"
1425 " mov r2, r3\n"
1426 " mov r1, r3\n"
1427 " mov r0, r3\n"
1428 " str r3, [sp, #4]\n"
1429 "loc_fc29216e:\n"
1430 " bl sub_fc28e046\n"
1431 "loc_fc292172:\n"
1432 " ldr r0, [sp, #0x28]\n"
1433 " bl sub_fc292b92\n"
1434 " b loc_fc291cfa\n"
1435 ".ltorg\n"
1436 );
1437 }
1438
1439 void __attribute__((naked,noinline)) sub_fc28edd8_my() {
1440 asm volatile (
1441 " push.w {r4, r5, r6, r7, r8, lr}\n"
1442 " ldr r7, =0x0000d1b0\n"
1443 " movs r1, #0x3e\n"
1444 " mov r4, r0\n"
1445 " ldr r0, [r7, #0x1c]\n"
1446 " blx sub_fc2cf3ec\n"
1447 " movs r2, #0\n"
1448 " ldrsh.w r0, [r4, #4]\n"
1449 " movs r3, #1\n"
1450 " mov r1, r2\n"
1451 " bl sub_fc28dba4\n"
1452 " mov r6, r0\n"
1453 " ldrsh.w r0, [r4, #6]\n"
1454 " bl sub_fc28dd42\n"
1455 " ldrsh.w r0, [r4, #8]\n"
1456 " bl sub_fc28dd86\n"
1457 " ldrsh.w r0, [r4, #0xa]\n"
1458 " bl sub_fc28ddca\n"
1459 " ldrsh.w r0, [r4, #0xc]\n"
1460 " movs r1, #0\n"
1461 " bl sub_fc28de0e\n"
1462 " mov r5, r0\n"
1463 " ldr r0, [r4]\n"
1464 " ldr.w r8, =0x0005e470\n"
1465 " cmp r0, #0xb\n"
1466 " bne loc_fc28ee2c\n"
1467 " movs r6, #0\n"
1468 " mov r5, r6\n"
1469 " b loc_fc28ee44\n"
1470 "loc_fc28ee2c:\n"
1471 " cmp r6, #1\n"
1472 " bne loc_fc28ee44\n"
1473 " ldrsh.w r0, [r4, #4]\n"
1474 " movs r2, #2\n"
1475 " ldr r1, =0xfc28db3b\n"
1476 " bl sub_fc14d46a\n"
1477 " strh r0, [r4, #4]\n"
1478 " movs r0, #0\n"
1479 " str r0, [r7, #0x28]\n"
1480 " b loc_fc28ee4a\n"
1481 "loc_fc28ee44:\n"
1482 " ldrh.w r0, [r8]\n"
1483 " strh r0, [r4, #4]\n"
1484 "loc_fc28ee4a:\n"
1485 " cmp r5, #1\n"
1486 " bne loc_fc28ee5c\n"
1487 " ldrsh.w r0, [r4, #0xc]\n"
1488 " movs r2, #0x20\n"
1489 " ldr r1, =0xfc28db8f\n"
1490 " bl sub_fc292c26\n"
1491 " b loc_fc28ee60\n"
1492 "loc_fc28ee5c:\n"
1493 " ldrh.w r0, [r8, #8]\n"
1494 "loc_fc28ee60:\n"
1495 " strh r0, [r4, #0xc]\n"
1496 " ldrsh.w r0, [r4, #6]\n"
1497
1498 " bl sub_fc16d658_my\n"
1499 "ldr pc,=0xfc28ee6b\n"
1500 ".ltorg\n"
1501
1502
1503
1504
1505
1506
1507 );
1508 }
1509
1510 void __attribute__((naked,noinline)) sub_fc16d658_my() {
1511 asm volatile (
1512 " push {r4, r5, r6, lr}\n"
1513 " ldr r5, =0x0000cd4c\n"
1514 " mov r4, r0\n"
1515 " ldr r0, [r5, #4]\n"
1516 " cmp r0, #1\n"
1517 " beq loc_fc16d670\n"
1518 " movs r0, #0\n"
1519 " movw r2, #0x16b\n"
1520 " ldr r1, =0xfc16d6b8\n"
1521 " blx sub_fc2cf41c\n"
1522 "loc_fc16d670:\n"
1523 " ldr r0, =0xfffff400\n"
1524 " cmp r4, r0\n"
1525 " bne loc_fc16d67a\n"
1526 " ldrsh.w r4, [r5, #2]\n"
1527 "loc_fc16d67a:\n"
1528 " strh r4, [r5, #2]\n"
1529 " cmp r4, r0\n"
1530 " bne loc_fc16d68c\n"
1531 " movs r0, #0\n"
1532 " movw r2, #0x171\n"
1533 " ldr r1, =0xfc16d6b8\n"
1534 " blx sub_fc2cf41c\n"
1535 "loc_fc16d68c:\n"
1536 " mov r0, r4\n"
1537 " bl apex2us\n"
1538
1539
1540
1541 " bl sub_fc199bb8\n"
1542 " lsls r0, r0, #0x1f\n"
1543 " beq loc_fc16d6b2\n"
1544 " pop.w {r4, r5, r6, lr}\n"
1545 " movs r0, #0\n"
1546 " movw r2, #0x176\n"
1547 " ldr r1, =0xfc16d6b8\n"
1548
1549 "ldr pc, =0xfc2ce965\n"
1550 "loc_fc16d6b2:\n"
1551 " pop {r4, r5, r6, pc}\n"
1552 ".ltorg\n"
1553 );
1554 }
1555
1556
1557
1558
1559