This source file includes following definitions.
- log_remote_hook
- log_raw_hook
- log_capt_seq1
- log_capt_seq2
- log_capt_seq3
- capt_seq_task
- sub_fc1d447a_my
- sub_fc1d4286_my
- sub_fc38eccf_my
- exp_drv_task
- sub_fc223dc3_my
- sub_fc2e0f56_my
1 #include "lolevel.h"
2 #include "platform.h"
3 #include "core.h"
4
5
6
7
8
9 #define NR_AUTO (0)
10 static long *nrflag = (long*)0x0001c028 ;
11
12 #ifdef CAPT_SEQ_DEBUG
13 extern void _LogCameraEvent(int id,const char *fmt,...);
14 extern int active_raw_buffer;
15 extern char *hook_raw_image_addr(void);
16
17 void log_remote_hook(void)
18 {
19 _LogCameraEvent(0x60,"Remote Hook:");
20 }
21
22 void log_raw_hook(void) {
23 #ifdef VARIABLE_RAW_BUFFER
24 _LogCameraEvent(0x60,"Raw Hook: arb:%d rb:0x%08x rbc:0x%08x",active_raw_buffer,hook_raw_image_addr(),current_raw_addr2);
25 #else
26 _LogCameraEvent(0x60,"Raw Hook: arb:%d rb:0x%08x",active_raw_buffer,hook_raw_image_addr());
27 #endif
28 }
29
30 void log_capt_seq1(int m)
31 {
32 _LogCameraEvent(0x60,"Capture Sequence Start: m:%d arb:%d rb:0x%08x i:%04d",
33 m,
34 active_raw_buffer,
35 hook_raw_image_addr(),
36 get_exposure_counter());
37 }
38 void log_capt_seq2(int m)
39 {
40 _LogCameraEvent(0x60,"Capture Sequence End: m:%d arb:%d rb:0x%08x i:%04d",
41 m,
42 active_raw_buffer,
43 hook_raw_image_addr(),
44 get_exposure_counter());
45 }
46 void log_capt_seq3(void)
47 {
48 _LogCameraEvent(0x60,"Capture Sequence Override: arb:%d rb:0x%08x i:%04d",
49 active_raw_buffer,
50 hook_raw_image_addr(),
51 get_exposure_counter());
52 }
53 #endif
54
55 #include "../../../generic/capt_seq.c"
56
57
58
59
60
61 void __attribute__((naked,noinline)) capt_seq_task() {
62 asm volatile (
63 " push {r3, r4, r5, r6, r7, lr}\n"
64 " ldr r4, =0x0003a2f4\n"
65 " movs r6, #0\n"
66 " ldr r5, =0x0000bd10\n"
67 "loc_fc0f24b2:\n"
68 " movs r2, #0\n"
69 " mov r1, sp\n"
70 " ldr r0, [r5, #4]\n"
71 " blx sub_fc2a1610\n"
72 " lsls r0, r0, #0x1f\n"
73 " beq loc_fc0f24d4\n"
74 " movw r2, #0x4d9\n"
75 " ldr r1, =0xfc0f20e8\n"
76 " movs r0, #0\n"
77 " blx sub_fc2a16b0\n"
78 " blx sub_fc2a1630\n"
79 " pop {r3, r4, r5, r6, r7, pc}\n"
80 "loc_fc0f24d4:\n"
81 " ldr r0, [sp]\n"
82 " ldr r0, [r0]\n"
83 " cmp r0, #1\n"
84 " beq loc_fc0f24ec\n"
85 " cmp r0, #0x22\n"
86 " beq loc_fc0f24ec\n"
87 " cmp r0, #0x2b\n"
88 " beq loc_fc0f24ec\n"
89 " cmp r0, #0x1e\n"
90 " beq loc_fc0f24ec\n"
91 " bl sub_fc1d5544\n"
92 "loc_fc0f24ec:\n"
93 #ifdef CAPT_SEQ_DEBUG
94
95 "ldr r0, [sp]\n"
96 "ldr r0, [r0]\n"
97 "bl log_capt_seq1\n"
98 #endif
99 " ldr r0, [sp]\n"
100 " ldr r1, [r0]\n"
101 " cmp r1, #0x2e\n"
102 " bhs loc_fc0f25d6\n"
103 " tbb [pc, r1]\n"
104 "branchtable_fc0f24f8:\n"
105 " .byte((loc_fc0f2526 - branchtable_fc0f24f8) / 2)\n"
106 " .byte((loc_fc0f2544 - branchtable_fc0f24f8) / 2)\n"
107 " .byte((loc_fc0f254c - branchtable_fc0f24f8) / 2)\n"
108 " .byte((loc_fc0f255a - branchtable_fc0f24f8) / 2)\n"
109 " .byte((loc_fc0f2554 - branchtable_fc0f24f8) / 2)\n"
110 " .byte((loc_fc0f2562 - branchtable_fc0f24f8) / 2)\n"
111 " .byte((loc_fc0f2568 - branchtable_fc0f24f8) / 2)\n"
112 " .byte((loc_fc0f256e - branchtable_fc0f24f8) / 2)\n"
113 " .byte((loc_fc0f2576 - branchtable_fc0f24f8) / 2)\n"
114 " .byte((loc_fc0f25a8 - branchtable_fc0f24f8) / 2)\n"
115 " .byte((loc_fc0f2580 - branchtable_fc0f24f8) / 2)\n"
116 " .byte((loc_fc0f2588 - branchtable_fc0f24f8) / 2)\n"
117 " .byte((loc_fc0f258e - branchtable_fc0f24f8) / 2)\n"
118 " .byte((loc_fc0f2596 - branchtable_fc0f24f8) / 2)\n"
119 " .byte((loc_fc0f259c - branchtable_fc0f24f8) / 2)\n"
120 " .byte((loc_fc0f25a2 - branchtable_fc0f24f8) / 2)\n"
121 " .byte((loc_fc0f25ae - branchtable_fc0f24f8) / 2)\n"
122 " .byte((loc_fc0f25b4 - branchtable_fc0f24f8) / 2)\n"
123 " .byte((loc_fc0f25ba - branchtable_fc0f24f8) / 2)\n"
124 " .byte((loc_fc0f25c0 - branchtable_fc0f24f8) / 2)\n"
125 " .byte((loc_fc0f25c6 - branchtable_fc0f24f8) / 2)\n"
126 " .byte((loc_fc0f25cc - branchtable_fc0f24f8) / 2)\n"
127 " .byte((loc_fc0f25d0 - branchtable_fc0f24f8) / 2)\n"
128 " .byte((loc_fc0f25d8 - branchtable_fc0f24f8) / 2)\n"
129 " .byte((loc_fc0f25de - branchtable_fc0f24f8) / 2)\n"
130 " .byte((loc_fc0f25e4 - branchtable_fc0f24f8) / 2)\n"
131 " .byte((loc_fc0f25ea - branchtable_fc0f24f8) / 2)\n"
132 " .byte((loc_fc0f25f0 - branchtable_fc0f24f8) / 2)\n"
133 " .byte((loc_fc0f25f8 - branchtable_fc0f24f8) / 2)\n"
134 " .byte((loc_fc0f25fe - branchtable_fc0f24f8) / 2)\n"
135 " .byte((loc_fc0f2602 - branchtable_fc0f24f8) / 2)\n"
136 " .byte((loc_fc0f260a - branchtable_fc0f24f8) / 2)\n"
137 " .byte((loc_fc0f2610 - branchtable_fc0f24f8) / 2)\n"
138 " .byte((loc_fc0f263a - branchtable_fc0f24f8) / 2)\n"
139 " .byte((loc_fc0f2640 - branchtable_fc0f24f8) / 2)\n"
140 " .byte((loc_fc0f2646 - branchtable_fc0f24f8) / 2)\n"
141 " .byte((loc_fc0f264c - branchtable_fc0f24f8) / 2)\n"
142 " .byte((loc_fc0f2652 - branchtable_fc0f24f8) / 2)\n"
143 " .byte((loc_fc0f2658 - branchtable_fc0f24f8) / 2)\n"
144 " .byte((loc_fc0f2660 - branchtable_fc0f24f8) / 2)\n"
145 " .byte((loc_fc0f2666 - branchtable_fc0f24f8) / 2)\n"
146 " .byte((loc_fc0f2670 - branchtable_fc0f24f8) / 2)\n"
147 " .byte((loc_fc0f26a8 - branchtable_fc0f24f8) / 2)\n"
148 " .byte((loc_fc0f26ae - branchtable_fc0f24f8) / 2)\n"
149 " .byte((loc_fc0f269c - branchtable_fc0f24f8) / 2)\n"
150 " .byte((loc_fc0f26c8 - branchtable_fc0f24f8) / 2)\n"
151 ".align 1\n"
152 "loc_fc0f2526:\n"
153 " bl sub_fc15321c\n"
154 #ifdef CAPT_SEQ_DEBUG
155 "bl log_capt_seq3\n"
156 #endif
157 " BL shooting_expo_param_override\n"
158 " bl sub_fc151b06\n"
159 " ldr r0, [r4, #0x28]\n"
160 " cmp r0, #0\n"
161 " beq loc_fc0f2538\n"
162 " bl sub_fc1d447a_my\n"
163 "loc_fc0f2538:\n"
164 " b loc_fc0f26c8\n"
165 ".ltorg\n"
166
167
168
169 "loc_fc0f2544:\n"
170 " ldr r0, [r0, #0x10]\n"
171 " bl sub_fc1d4286_my\n"
172 " b loc_fc0f26c8\n"
173
174 "loc_fc0f254c:\n"
175 " movs r0, #1\n"
176 " bl sub_fc1534ea\n"
177 " b loc_fc0f26c8\n"
178
179 "loc_fc0f2554:\n"
180 " bl sub_fc152fde\n"
181 " b loc_fc0f255e\n"
182 "loc_fc0f255a:\n"
183 " bl sub_fc153208\n"
184 "loc_fc0f255e:\n"
185 " str r6, [r4, #0x28]\n"
186 " b loc_fc0f26c8\n"
187
188 "loc_fc0f2562:\n"
189 " bl sub_fc15320c\n"
190 " b loc_fc0f26c8\n"
191 "loc_fc0f2568:\n"
192 " bl sub_fc1533c4\n"
193 " b loc_fc0f257a\n"
194 "loc_fc0f256e:\n"
195 " ldr r0, [r0, #0x10]\n"
196 " bl sub_fc1d44ee\n"
197 " b loc_fc0f26c8\n"
198 "loc_fc0f2576:\n"
199 " bl sub_fc153474\n"
200 "loc_fc0f257a:\n"
201 " bl sub_fc151b06\n"
202 " b loc_fc0f26c8\n"
203 "loc_fc0f2580:\n"
204 " ldr r0, [r4, #0x58]\n"
205 " bl sub_fc153a98\n"
206 " b loc_fc0f26c8\n"
207 "loc_fc0f2588:\n"
208 " bl sub_fc153d2e\n"
209 " b loc_fc0f26c8\n"
210 "loc_fc0f258e:\n"
211 " ldr r0, [r0, #0xc]\n"
212 " bl sub_fc153d7a\n"
213 " b loc_fc0f26c8\n"
214 "loc_fc0f2596:\n"
215 " bl sub_fc153f7e\n"
216 " b loc_fc0f26c8\n"
217 "loc_fc0f259c:\n"
218 " bl sub_fc15441a\n"
219 " b loc_fc0f26c8\n"
220 "loc_fc0f25a2:\n"
221 " bl sub_fc1544aa\n"
222 " b loc_fc0f26c8\n"
223 "loc_fc0f25a8:\n"
224 " bl sub_fc153208\n"
225 " b loc_fc0f26c8\n"
226 "loc_fc0f25ae:\n"
227 " bl sub_fc1d2ed4\n"
228 " b loc_fc0f26c8\n"
229 "loc_fc0f25b4:\n"
230 " bl sub_fc1d30a4\n"
231 " b loc_fc0f26c8\n"
232 "loc_fc0f25ba:\n"
233 " bl sub_fc1d311e\n"
234 " b loc_fc0f26c8\n"
235 "loc_fc0f25c0:\n"
236 " bl sub_fc1d31b0\n"
237 " b loc_fc0f26c8\n"
238 "loc_fc0f25c6:\n"
239 " bl sub_fc1d3264\n"
240 " b loc_fc0f26c8\n"
241 "loc_fc0f25cc:\n"
242 " movs r0, #0\n"
243 " b loc_fc0f25f2\n"
244 "loc_fc0f25d0:\n"
245 " bl sub_fc1d362a\n"
246 " b loc_fc0f26c8\n"
247 "loc_fc0f25d6:\n"
248 " b loc_fc0f26ba\n"
249 "loc_fc0f25d8:\n"
250 " bl sub_fc1d3688\n"
251 " b loc_fc0f26c8\n"
252 "loc_fc0f25de:\n"
253 " bl sub_fc1d368c\n"
254 " b loc_fc0f26c8\n"
255 "loc_fc0f25e4:\n"
256 " bl sub_fc1d369c\n"
257 " b loc_fc0f26c8\n"
258 "loc_fc0f25ea:\n"
259 " bl sub_fc1d3718\n"
260 " b loc_fc0f26c8\n"
261 "loc_fc0f25f0:\n"
262 " movs r0, #1\n"
263 "loc_fc0f25f2:\n"
264 " bl sub_fc1d351c\n"
265 " b loc_fc0f26c8\n"
266 "loc_fc0f25f8:\n"
267 " bl sub_fc153622\n"
268 " b loc_fc0f26c8\n"
269 "loc_fc0f25fe:\n"
270 " movs r0, #0\n"
271 " b loc_fc0f2604\n"
272 "loc_fc0f2602:\n"
273 " ldr r0, [r0, #0xc]\n"
274 "loc_fc0f2604:\n"
275 " bl sub_fc153680\n"
276 " b loc_fc0f26c8\n"
277 "loc_fc0f260a:\n"
278 " bl sub_fc1d341e\n"
279 " b loc_fc0f26c8\n"
280 "loc_fc0f2610:\n"
281 " ldr r1, =0x0003a356\n"
282 " movs r2, #2\n"
283 " movs r0, #0x6f\n"
284 " bl _GetPropertyCase\n"
285 " lsls r0, r0, #0x1f\n"
286 " beq loc_fc0f262c\n"
287 " movw r2, #0x5ed\n"
288 " ldr r1, =0xfc0f20e8\n"
289 " movs r0, #0\n"
290 " blx sub_fc2a16b0\n"
291 "loc_fc0f262c:\n"
292 " ldrh.w r0, [r4, #0x62]\n"
293 " cmp r0, #1\n"
294 " bne loc_fc0f26c8\n"
295 " bl sub_fc1d3418\n"
296 " b loc_fc0f26c8\n"
297 "loc_fc0f263a:\n"
298 " bl sub_fc1d34b4\n"
299 " b loc_fc0f26c8\n"
300 "loc_fc0f2640:\n"
301 " bl sub_fc1d4f1e\n"
302 " b loc_fc0f26c8\n"
303 "loc_fc0f2646:\n"
304 " bl sub_fc152510\n"
305 " b loc_fc0f26c8\n"
306 "loc_fc0f264c:\n"
307 " bl sub_fc1563f2\n"
308 " b loc_fc0f26c8\n"
309 "loc_fc0f2652:\n"
310 " bl sub_fc1564a6\n"
311 " b loc_fc0f26c8\n"
312 "loc_fc0f2658:\n"
313 " ldr r0, [r0, #0xc]\n"
314 " bl sub_fc1d37d8\n"
315 " b loc_fc0f26c8\n"
316 "loc_fc0f2660:\n"
317 " bl sub_fc1d383a\n"
318 " b loc_fc0f26c8\n"
319 "loc_fc0f2666:\n"
320 " bl sub_fc1565a2\n"
321 " bl sub_fc1564e8\n"
322 " b loc_fc0f26c8\n"
323 "loc_fc0f2670:\n"
324 " movs r0, #1\n"
325 " bl sub_fc1d4b60\n"
326 " movs r0, #1\n"
327 " bl sub_fc1d4c2a\n"
328 " ldrh.w r0, [r4, #0x1b0]\n"
329 " cmp r0, #4\n"
330 " beq loc_fc0f268e\n"
331 " ldrh r0, [r4]\n"
332 " sub.w r1, r0, #0x4200\n"
333 " subs r1, #0x30\n"
334 " bne loc_fc0f26c8\n"
335 "loc_fc0f268e:\n"
336 " bl sub_fc1564a6\n"
337 " bl sub_fc1569ac\n"
338 " bl sub_fc1567cc\n"
339 " b loc_fc0f26c8\n"
340 "loc_fc0f269c:\n"
341 " bl sub_fc15469e\n"
342 " movs r0, #1\n"
343 " bl sub_fc156110\n"
344 " b loc_fc0f26c8\n"
345 "loc_fc0f26a8:\n"
346 " movs r2, #0\n"
347 " movs r1, #0x10\n"
348 " b loc_fc0f26b2\n"
349 "loc_fc0f26ae:\n"
350 " movs r2, #0\n"
351 " movs r1, #0xf\n"
352 "loc_fc0f26b2:\n"
353 " movs r0, #0\n"
354 " bl sub_fc15272a\n"
355 " b loc_fc0f26c8\n"
356 "loc_fc0f26ba:\n"
357 " movw r2, #0x65f\n"
358 " ldr r1, =0xfc0f20e8\n"
359 " movs r0, #0\n"
360 " blx sub_fc2a16b0\n"
361 "loc_fc0f26c8:\n"
362
363 #ifdef CAPT_SEQ_DEBUG
364
365 " ldr r0, [sp]\n"
366 " ldr r0, [r0]\n"
367 " bl log_capt_seq2\n"
368 #endif
369 " bl capt_seq_hook_set_nr\n"
370 " ldr r0, [sp]\n"
371 " ldr r1, [r0, #4]\n"
372 " ldr r0, [r5]\n"
373 " blx sub_fc2a1530\n"
374 " ldr r7, [sp]\n"
375 " ldr r0, [r7, #8]\n"
376 " cbnz r0, loc_fc0f26e6\n"
377 " movw r2, #0x127\n"
378 " ldr r1, =0xfc0f20e8\n"
379 " movs r0, #0\n"
380 " blx sub_fc2a16b0\n"
381 "loc_fc0f26e6:\n"
382 " str r6, [r7, #8]\n"
383 " b loc_fc0f24b2\n"
384
385 ".ltorg\n"
386 );
387 }
388
389
390 void __attribute__((naked,noinline)) sub_fc1d447a_my() {
391 asm volatile (
392 " push {r4, r5, r6, lr}\n"
393 " bl sub_fc152e7e\n"
394 " mov r4, r0\n"
395 " movs r0, #0xc\n"
396 " bl sub_fc2ba334\n"
397 " ldr r6, =0x000136f0\n"
398 " lsls r0, r0, #0x1f\n"
399 " mov.w r5, #1\n"
400 " bne loc_fc1d44ea\n"
401 " bl sub_fc2ba36e\n"
402 " lsls r0, r0, #0x1f\n"
403 " bne loc_fc1d44ea\n"
404 " bl sub_fc153210\n"
405 " bl sub_fc1552ae\n"
406 " mov r1, r4\n"
407 " bl _captseq_raw_addr_init\n"
408 " movs r2, #4\n"
409 " movw r0, #0x10e\n"
410 " add.w r1, r4, #0x84\n"
411 " bl _SetPropertyCase\n"
412 " movs r2, #4\n"
413 " movs r0, #0x2c\n"
414 " add.w r1, r4, #0x88\n"
415 " bl _SetPropertyCase\n"
416 " movs r2, #4\n"
417 " movs r0, #0x3f\n"
418 " add.w r1, r4, #8\n"
419 " bl _SetPropertyCase\n"
420 " bl sub_fc1d4d1a\n"
421 " mvn r1, #0x1000\n"
422 " blx sub_fc2a15c8\n"
423 " mov r0, r4\n"
424 " bl sub_fc1d3fa4\n"
425 " mov r0, r4\n"
426 " bl sub_fc38eccf_my\n"
427 " lsls r0, r0, #0x1f\n"
428 " beq loc_fc1d44ec\n"
429 "loc_fc1d44ea:\n"
430 " str r5, [r6]\n"
431 "loc_fc1d44ec:\n"
432 " pop {r4, r5, r6, pc}\n"
433
434 ".ltorg\n"
435 );
436 }
437
438
439 void __attribute__((naked,noinline)) sub_fc1d4286_my() {
440 asm volatile (
441 " push {r2, r3, r4, r5, r6, lr}\n"
442 " ldr r6, =0x0003a2f4\n"
443 " mov r4, r0\n"
444 " movs r5, #0\n"
445 " ldr r0, [r6, #0x28]\n"
446 " cbz r0, loc_fc1d42ae\n"
447 " ldr r0, =0x000136f0\n"
448 " ldr r0, [r0]\n"
449 " cbz r0, loc_fc1d429a\n"
450 " movs r5, #0x1d\n"
451 "loc_fc1d429a:\n"
452 " mov r2, r4\n"
453 " movs r1, #1\n"
454 " mov r0, r5\n"
455 " bl sub_fc15272a\n"
456 " mov r1, r5\n"
457 " mov r0, r4\n"
458 " bl sub_fc1d53a4\n"
459 " b loc_fc1d4474\n"
460 "loc_fc1d42ae:\n"
461 " bl sub_fc1552ae\n"
462 " mov r1, r4\n"
463 " bl _captseq_raw_addr_init\n"
464 " movs r2, #4\n"
465 " movw r0, #0x10e\n"
466 " add.w r1, r4, #0x84\n"
467 " bl _SetPropertyCase\n"
468 " movs r2, #4\n"
469 " movs r0, #0x2c\n"
470 " add.w r1, r4, #0x88\n"
471 " bl _SetPropertyCase\n"
472 " ldr.w r0, [r6, #0x134]\n"
473 " cbz r0, loc_fc1d42fa\n"
474 " ldrh.w r0, [r6, #0x1ae]\n"
475 " cmp r0, #3\n"
476 " beq loc_fc1d42fa\n"
477 " ldr r0, [r4, #8]\n"
478 " cmp r0, #1\n"
479 " bls loc_fc1d42fa\n"
480 " ldr.w r0, [r6, #0xec]\n"
481 " cbnz r0, loc_fc1d4312\n"
482 " bl sub_fc0e425e\n"
483 " lsls r0, r0, #0x1f\n"
484 " beq loc_fc1d4312\n"
485 " bl sub_fc2ba3bc\n"
486 " b loc_fc1d4310\n"
487 "loc_fc1d42fa:\n"
488 " movs r0, #0xc\n"
489 " bl sub_fc2ba334\n"
490 " lsls r0, r0, #0x1f\n"
491 " bne loc_fc1d430c\n"
492 " bl sub_fc2ba36e\n"
493 " lsls r0, r0, #0x1f\n"
494 " beq loc_fc1d4312\n"
495 "loc_fc1d430c:\n"
496 " bl sub_fc152506\n"
497 "loc_fc1d4310:\n"
498 " movs r5, #1\n"
499 "loc_fc1d4312:\n"
500 " ldr.w r0, [r6, #0x1d8]\n"
501 " cbz r0, loc_fc1d432e\n"
502 " ldr r0, [r4, #8]\n"
503 " cmp r0, #1\n"
504 " beq loc_fc1d432e\n"
505 " movs r0, #1\n"
506 " bl sub_fc156110\n"
507 " lsls r0, r0, #0x1f\n"
508 " beq loc_fc1d432e\n"
509 " bl sub_fc152506\n"
510 " movs r5, #1\n"
511 "loc_fc1d432e:\n"
512 " lsls r0, r5, #0x1f\n"
513 "loc_fc1d4330:\n"
514 " bne loc_fc1d441a\n"
515 " mov r0, r4\n"
516 " bl sub_fc1d4f68\n"
517 " bl sub_fc1d4d1a\n"
518 " mvn r1, #0x1000\n"
519 " blx sub_fc2a15c8\n"
520 " mov r0, r4\n"
521 " bl sub_fc38e9e6\n"
522 " mov r5, r0\n"
523 " lsls r0, r0, #0x1f\n"
524 " bne loc_fc1d4330\n"
525 " bl sub_fc153210\n"
526 " mov r0, r4\n"
527 " bl sub_fc1d3fa4\n"
528 " ldr.w r0, [r6, #0x130]\n"
529 " cbnz r0, loc_fc1d436e\n"
530 " ldrh.w r0, [r6, #0x1ae]\n"
531 " cmp r0, #3\n"
532 " beq loc_fc1d436e\n"
533 " ldr r0, [r4, #8]\n"
534 " cmp r0, #1\n"
535 " bhi loc_fc1d4374\n"
536 "loc_fc1d436e:\n"
537 " movs r0, #2\n"
538 " bl sub_fc0f4ae2\n"
539 "loc_fc1d4374:\n"
540 " ldr.w r0, [r6, #0xa8]\n"
541 " cmp r0, #0\n"
542 " beq loc_fc1d43e2\n"
543 " ldrh.w r0, [r6, #0x1ae]\n"
544 " movw r5, #0x1000\n"
545 " cmp r0, #3\n"
546 " beq loc_fc1d43a2\n"
547 " ldr r0, [r4, #8]\n"
548 " cmp r0, #1\n"
549 " bls loc_fc1d43a2\n"
550 " bl sub_fc1d4d1a\n"
551 " movs r3, #0xf5\n"
552 " movw r2, #0x3a98\n"
553 " mov r1, r5\n"
554 " str r3, [sp]\n"
555 " ldr r3, =0xfc1d45c8\n"
556 " bl sub_fc2ba528\n"
557 "loc_fc1d43a2:\n"
558 " movs r2, #4\n"
559 " movw r0, #0x180\n"
560 " add r1, sp, #4\n"
561 " bl _GetPropertyCase\n"
562 " lsls r0, r0, #0x1f\n"
563 " beq loc_fc1d43bc\n"
564 " movs r2, #0xf9\n"
565 " movs r0, #0\n"
566 " ldr r1, =0xfc1d45c8\n"
567 " blx sub_fc2a16b0\n"
568 "loc_fc1d43bc:\n"
569 " ldr r0, [sp, #4]\n"
570 " cbnz r0, loc_fc1d43cc\n"
571 " bl sub_fc1d4d1a\n"
572 " mov r1, r5\n"
573 " blx sub_fc2a1530\n"
574 " b loc_fc1d43e2\n"
575 "loc_fc1d43cc:\n"
576 " bl sub_fc1d4d1a\n"
577 " mov r1, r5\n"
578 " blx sub_fc2a15c8\n"
579 " ldr r2, =0xfc1d4275\n"
580 " mov r3, r5\n"
581 " ldr r0, [sp, #4]\n"
582 " mov r1, r2\n"
583 " bl sub_fc2fbb00\n"
584 "loc_fc1d43e2:\n"
585 " ldr.w r0, [r6, #0x19c]\n"
586 " cbz r0, loc_fc1d43fe\n"
587 " ldrh.w r0, [r6, #0x1ae]\n"
588 " cmp r0, #3\n"
589 " beq loc_fc1d43fe\n"
590 " ldr r0, [r4, #8]\n"
591 " cmp r0, #1\n"
592 " bls loc_fc1d43fe\n"
593 " movw r0, #0x2710\n"
594 " bl sub_fc13e33a\n"
595 "loc_fc1d43fe:\n"
596 " ldr.w r0, [r6, #0xb0]\n"
597 " cbz r0, loc_fc1d440c\n"
598 " mov r0, r4\n"
599 " bl sub_fc38f41e\n"
600 " b loc_fc1d4452\n"
601 "loc_fc1d440c:\n"
602 " ldr.w r0, [r6, #0xb4]\n"
603 " cbz r0, loc_fc1d441c\n"
604 " mov r0, r4\n"
605 " bl sub_fc38f15e\n"
606 " b loc_fc1d4452\n"
607 "loc_fc1d441a:\n"
608 " b loc_fc1d4462\n"
609 "loc_fc1d441c:\n"
610 " ldr.w r0, [r6, #0xb8]\n"
611 " cbz r0, loc_fc1d442a\n"
612 " mov r0, r4\n"
613 " bl sub_fc38f722\n"
614 " b loc_fc1d4452\n"
615 "loc_fc1d442a:\n"
616 " ldr.w r0, [r6, #0xbc]\n"
617 " cbz r0, loc_fc1d443e\n"
618 " ldr r0, =0x0003a4ec\n"
619 " ldr r0, [r0]\n"
620 " cbz r0, loc_fc1d443e\n"
621 " mov r0, r4\n"
622 " bl sub_fc38f9ea\n"
623 " b loc_fc1d4452\n"
624 "loc_fc1d443e:\n"
625 " ldr.w r0, [r6, #0xc0]\n"
626 " cmp r0, #0\n"
627 " mov r0, r4\n"
628 " beq loc_fc1d444e\n"
629 " bl sub_fc38fcb4\n"
630 " b loc_fc1d4452\n"
631 "loc_fc1d444e:\n"
632 " bl sub_fc38eccf_my\n"
633 "loc_fc1d4452:\n"
634 " ldr.w r0, [r6, #0x1d8]\n"
635 " cbz r0, loc_fc1d4474\n"
636 " movs r1, #0\n"
637 " movs r0, #1\n"
638 " bl sub_fc15615a\n"
639 " b loc_fc1d4474\n"
640 "loc_fc1d4462:\n"
641 " movs r1, #1\n"
642 " mov r2, r4\n"
643 " mov r0, r5\n"
644 " bl sub_fc15272a\n"
645 " mov r1, r5\n"
646 " mov r0, r4\n"
647 " bl sub_fc1d54da\n"
648 "loc_fc1d4474:\n"
649 " movs r0, #0\n"
650 " str r0, [r6, #0x28]\n"
651 " pop {r2, r3, r4, r5, r6, pc}\n"
652
653 ".ltorg\n"
654 );
655 }
656
657
658 void __attribute__((naked,noinline)) sub_fc38eccf_my() {
659 asm volatile (
660 " push.w {r2, r3, r4, r5, r6, r7, r8, sb, sl, lr}\n"
661 " ldr r7, =0x0003a2f4\n"
662 " mov r4, r0\n"
663 " ldr.w r0, [r7, #0x174]\n"
664 " cbz r0, loc_fc38ecea\n"
665 " ldrh.w r0, [r7, #0x1ae]\n"
666 " cmp r0, #3\n"
667 " beq loc_fc38ecea\n"
668 " ldr r0, [r4, #8]\n"
669 " cmp r0, #1\n"
670 " bhi loc_fc38ecf4\n"
671 "loc_fc38ecea:\n"
672 " mov r0, r4\n"
673 " bl sub_fc1d3f44\n"
674 " bl sub_fc1d4990\n"
675 "loc_fc38ecf4:\n"
676 " ldr.w r0, [r7, #0xa4]\n"
677 " cbnz r0, loc_fc38ed10\n"
678 " ldrh.w r0, [r7, #0x1ae]\n"
679 " cmp r0, #3\n"
680 " beq loc_fc38ed08\n"
681 " ldr r0, [r4, #8]\n"
682 " cmp r0, #1\n"
683 " bhi loc_fc38ed10\n"
684 "loc_fc38ed08:\n"
685 " bl sub_fc15366e\n"
686 " bl sub_fc1d45fe\n"
687 "loc_fc38ed10:\n"
688 " movs r2, #4\n"
689 " movw r0, #0x12f\n"
690 " add r1, sp, #4\n"
691 " bl _GetPropertyCase\n"
692 " lsls r0, r0, #0x1f\n"
693 " beq loc_fc38ed2c\n"
694 " movs r0, #0\n"
695 " movw r2, #0x17b\n"
696 " ldr r1, =0xfc38f0a4\n"
697 " blx sub_fc2a16b0\n"
698 "loc_fc38ed2c:\n"
699 " ldr r0, [sp, #4]\n"
700 " ubfx r0, r0, #8, #8\n"
701 " cmp r0, #6\n"
702 " bne loc_fc38ed3c\n"
703 " ldr r0, =0xfc38eca7\n"
704 " movs r1, #0\n"
705 " b loc_fc38ed40\n"
706 "loc_fc38ed3c:\n"
707 " ldr r0, =0xfc1d3c5b\n"
708 " mov r1, r4\n"
709 "loc_fc38ed40:\n"
710 " bl sub_fc23b134\n"
711 " mov r0, r4\n"
712 " bl sub_fc1d4056\n"
713 " ldr r1, =0x00023e88\n"
714 " movs r2, #4\n"
715 " movs r0, #0x8a\n"
716 " bl _GetPropertyCase\n"
717 " lsls r0, r0, #0x1f\n"
718 " beq loc_fc38ed64\n"
719 " movs r0, #0\n"
720 " movw r2, #0x18a\n"
721 " ldr r1, =0xfc38f0a4\n"
722 " blx sub_fc2a16b0\n"
723 "loc_fc38ed64:\n"
724 " bl sub_fc1561d2\n"
725 " bl sub_fc1d4106\n"
726 " movs r1, #0\n"
727 " mov r0, r4\n"
728 " bl sub_fc38f08c\n"
729 " mov r6, r0\n"
730 " bl wait_until_remote_button_is_released\n"
731 #ifdef CAPT_SEQ_DEBUG
732 " bl log_remote_hook\n"
733 #endif
734 " ldr r0, [sp, #4]\n"
735 " mov.w sb, #0\n"
736 " ubfx r0, r0, #8, #8\n"
737 " cmp r0, #6\n"
738 " bne loc_fc38ed88\n"
739 " ldr r2, =0xfc1d3de3\n"
740 " b loc_fc38ed8a\n"
741 "loc_fc38ed88:\n"
742 " ldr r2, =0xfc1d3e59\n"
743 "loc_fc38ed8a:\n"
744 " ldrh r0, [r4, #0x18]\n"
745 " ldr r5, =0x00023e88\n"
746 " cbz r0, loc_fc38ed98\n"
747 " cmp r0, #1\n"
748 " beq loc_fc38edb0\n"
749 " cmp r0, #4\n"
750 " bne loc_fc38ee1c\n"
751 "loc_fc38ed98:\n"
752 " str r6, [sp]\n"
753 " mov r3, r2\n"
754 " ldr.w r1, [r4, #0x88]\n"
755 " mov r0, r4\n"
756 " ldr r2, [r5]\n"
757 " bl sub_fc1d3b06\n"
758 " mov r5, r0\n"
759 " bl sub_fc247414\n"
760 " b loc_fc38ee2a\n"
761 "loc_fc38edb0:\n"
762 " str r6, [sp]\n"
763 " mov r3, r2\n"
764 " ldr.w r1, [r4, #0x88]\n"
765 " mov r8, r5\n"
766 " ldr r2, [r5]\n"
767 " mov r0, r4\n"
768 " bl sub_fc1d3b52\n"
769 " movs r2, #1\n"
770 " mov r5, r0\n"
771 " movs r1, #0\n"
772 " movs r0, #0x45\n"
773 " bl sub_fc255758\n"
774 " lsls r0, r5, #0x1f\n"
775 " bne loc_fc38ee2a\n"
776 " ldr.w r0, [r7, #0x100]\n"
777 " cbz r0, loc_fc38edea\n"
778 " ldr r1, [r4, #8]\n"
779 " ldr r2, =0x0017b14c\n"
780 " ldr.w r0, [r4, #0x88]\n"
781 " add.w r1, r2, r1, lsl #2\n"
782 " str r0, [r1, #-0x4]\n"
783 " b loc_fc38ee16\n"
784 "loc_fc38edea:\n"
785 " ldr r0, =0xfc38eca7\n"
786 " movs r1, #0\n"
787 " bl sub_fc23b134\n"
788 " movs r1, #1\n"
789 " mov r0, r4\n"
790 " bl sub_fc38f08c\n"
791 " mov r6, r0\n"
792 " ldr.w r0, [r8]\n"
793 " mov r5, r8\n"
794 " bl sub_fc1d3ee6\n"
795 " ldr.w r1, [r4, #0x88]\n"
796 " mov r3, r6\n"
797 " ldr r2, [r5]\n"
798 " mov r0, r4\n"
799 " bl sub_fc1d3ba2\n"
800 " mov r5, r0\n"
801 "loc_fc38ee16:\n"
802 " bl sub_fc1d3ab0\n"
803 " b loc_fc38ee2a\n"
804 "loc_fc38ee1c:\n"
805 " movs r0, #0\n"
806 " movw r2, #0x1bc\n"
807 " ldr r1, =0xfc38f0a4\n"
808 " blx sub_fc2a16b0\n"
809 " movs r5, #0x1d\n"
810 "loc_fc38ee2a:\n"
811 " bl sub_fc1d410a\n"
812 " ldr.w r8, =0xfc38eca7\n"
813 " lsls r0, r5, #0x1f\n"
814 " bne loc_fc38eea6\n"
815 " ldr.w r0, [r7, #0x108]\n"
816 " cbnz r0, loc_fc38ee60\n"
817 " ldr.w r0, [r7, #0x19c]\n"
818 " cmp r0, #0\n"
819 " mov r0, r4\n"
820 " beq loc_fc38ee5c\n"
821 " bl sub_fc1d5a1e\n"
822 " lsls r0, r0, #0x1f\n"
823 " beq loc_fc38ee60\n"
824 " movs r0, #0\n"
825 " movw r2, #0x1d2\n"
826 " ldr r1, =0xfc38f0a4\n"
827 " blx sub_fc2a16b0\n"
828 " b loc_fc38ee60\n"
829 "loc_fc38ee5c:\n"
830 " bl sub_fc1d5720\n"
831 "loc_fc38ee60:\n"
832 #ifdef CAPT_SEQ_DEBUG
833 " bl log_raw_hook\n"
834 #endif
835 " bl capt_seq_hook_raw_here\n"
836 " mov r0, r4\n"
837 " bl sub_fc1d40f6\n"
838 " mov r0, r4\n"
839 " bl sub_fc1d40c6\n"
840 " cmp r6, r8\n"
841 " beq loc_fc38ee94\n"
842 " bl sub_fc1d4d1a\n"
843 " movs r1, #4\n"
844 " movw sl, #0x1e3\n"
845 " ldr r3, =0xfc38f0a4\n"
846 " movw r2, #0x3a98\n"
847 " str.w sl, [sp]\n"
848 " bl sub_fc2ba528\n"
849 " cbz r0, loc_fc38ee94\n"
850 " movs r0, #0\n"
851 " mov r2, sl\n"
852 " ldr r1, =0xfc38f0a4\n"
853 " blx sub_fc2a16b0\n"
854 "loc_fc38ee94:\n"
855 " ldr.w r0, [r7, #0x184]\n"
856 " cbz r0, loc_fc38ee9e\n"
857 " mov r0, sb\n"
858 " b loc_fc38eea2\n"
859 "loc_fc38ee9e:\n"
860 " bl sub_fc13f2e6\n"
861 "loc_fc38eea2:\n"
862 " str.w r0, [r4, #0x128]\n"
863 "loc_fc38eea6:\n"
864 " ldr.w r0, [r7, #0x19c]\n"
865 " cbz r0, loc_fc38eeb6\n"
866 " movs r2, #1\n"
867 " movs r1, #0\n"
868 " movs r0, #0x46\n"
869 " bl sub_fc255758\n"
870 "loc_fc38eeb6:\n"
871 " movs r1, #1\n"
872 " mov r2, r4\n"
873 " mov r0, r5\n"
874 " bl sub_fc15272a\n"
875 " ldr r0, [r7, #0x28]\n"
876 " cmp r0, #0\n"
877 " mov r0, r8\n"
878 " beq loc_fc38eedc\n"
879 " cmp r6, r0\n"
880 " beq loc_fc38eed0\n"
881 " movs r1, #1\n"
882 " b loc_fc38eed2\n"
883 "loc_fc38eed0:\n"
884 " movs r1, #0\n"
885 "loc_fc38eed2:\n"
886 " mov r2, r5\n"
887 " mov r0, r4\n"
888 " bl sub_fc1d5362\n"
889 " b loc_fc38eeee\n"
890 "loc_fc38eedc:\n"
891 " cmp r6, r0\n"
892 " beq loc_fc38eee4\n"
893 " movs r1, #1\n"
894 " b loc_fc38eee6\n"
895 "loc_fc38eee4:\n"
896 " movs r1, #0\n"
897 "loc_fc38eee6:\n"
898 " mov r2, r5\n"
899 " mov r0, r4\n"
900 " bl sub_fc1d531c\n"
901 "loc_fc38eeee:\n"
902 " mov r0, r5\n"
903 " pop.w {r2, r3, r4, r5, r6, r7, r8, sb, sl, pc}\n"
904
905 ".ltorg\n"
906 );
907 }
908
909
910
911
912
913
914 void __attribute__((naked,noinline)) exp_drv_task() {
915 asm volatile (
916 " push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}\n"
917 " sub sp, #0x2c\n"
918 " ldr.w sb, =0x0000d8d0\n"
919 " ldr.w sl, =0xfffff400\n"
920 " movs r0, #0\n"
921 " ldr r6, =0x0005c6fc\n"
922 " add.w r8, sp, #0x1c\n"
923 " movw fp, #0xbb8\n"
924 " str r0, [sp, #0xc]\n"
925 "loc_fc226bbe:\n"
926 " ldr.w r0, [sb, #0x20]\n"
927 " movs r2, #0\n"
928 " add r1, sp, #0x28\n"
929 " mov r4, sb\n"
930 " blx sub_fc2a1610\n"
931 " ldr r0, [sp, #0xc]\n"
932 " cmp r0, #1\n"
933 " bne loc_fc226bf2\n"
934 " ldr r0, [sp, #0x28]\n"
935 " ldr r0, [r0]\n"
936 " cmp r0, #0x14\n"
937 "loc_fc226bd8:\n"
938 " beq loc_fc226cd8\n"
939 " cmp r0, #0x15\n"
940 " beq loc_fc226bd8\n"
941 " cmp r0, #0x16\n"
942 " beq loc_fc226bd8\n"
943 " cmp r0, #0x17\n"
944 " beq loc_fc226ce4\n"
945 " cmp r0, #0x2a\n"
946 " beq loc_fc226c8e\n"
947 " movs r0, #0\n"
948 " add r1, sp, #0xc\n"
949 " bl sub_fc226b5e\n"
950 "loc_fc226bf2:\n"
951 " ldr r0, [sp, #0x28]\n"
952 " ldr r1, [r0]\n"
953 " cmp r1, #0x30\n"
954 " bne loc_fc226c10\n"
955 " bl sub_fc227944\n"
956 " ldr.w r0, [sb, #0x1c]\n"
957 " movs r1, #1\n"
958 " blx sub_fc2a1530\n"
959 " blx sub_fc2a1630\n"
960 " add sp, #0x2c\n"
961
962 " ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}\n"
963 "loc_fc226c10:\n"
964 " cmp r1, #0x2f\n"
965 " bne loc_fc226c22\n"
966 " add.w r0, r0, #0xa8\n"
967 " ldrd r2, r1, [r0]\n"
968 " mov r0, r1\n"
969 " blx r2\n"
970 " b loc_fc227030\n"
971 "loc_fc226c22:\n"
972 " cmp r1, #0x28\n"
973 " bne loc_fc226c58\n"
974 " ldr r0, [r4, #0x1c]\n"
975 " movs r1, #0x80\n"
976 " blx sub_fc2a15c8\n"
977 " ldr r0, =0xfc222bc9\n"
978 " movs r1, #0x80\n"
979 " bl sub_fc14db82\n"
980 " ldr r0, [r4, #0x1c]\n"
981 " movs r1, #0x80\n"
982 " mov r2, fp\n"
983 " blx sub_fc2a1528\n"
984 " lsls r0, r0, #0x1f\n"
985 " beq loc_fc226c4a\n"
986 " movw r2, #0x16ef\n"
987 " b loc_fc226cd6\n"
988 "loc_fc226c4a:\n"
989 " ldr r1, [sp, #0x28]\n"
990 " add.w r1, r1, #0xa8\n"
991 " ldrd r1, r0, [r1]\n"
992 " blx r1\n"
993 " b loc_fc227030\n"
994 "loc_fc226c58:\n"
995 " cmp r1, #0x29\n"
996 " bne loc_fc226c8a\n"
997 " add r1, sp, #0xc\n"
998 " bl sub_fc226b5e\n"
999 " movw r5, #0x100\n"
1000 " ldr r0, [r4, #0x1c]\n"
1001 " mov r1, r5\n"
1002 " blx sub_fc2a15c8\n"
1003 " ldr r0, =0xfc222bd3\n"
1004 " mov r1, r5\n"
1005 " bl sub_fc14e502\n"
1006 " ldr r0, [r4, #0x1c]\n"
1007 " mov r2, fp\n"
1008 " mov r1, r5\n"
1009 " blx sub_fc2a1528\n"
1010 " lsls r0, r0, #0x1f\n"
1011 " beq loc_fc226c4a\n"
1012 " movw r2, #0x16f9\n"
1013 " b loc_fc226cd6\n"
1014 "loc_fc226c8a:\n"
1015 " cmp r1, #0x2a\n"
1016 " bne loc_fc226c98\n"
1017 "loc_fc226c8e:\n"
1018 " ldr r0, [sp, #0x28]\n"
1019 " add r1, sp, #0xc\n"
1020 " bl sub_fc226b5e\n"
1021 " b loc_fc226c4a\n"
1022 "loc_fc226c98:\n"
1023 " cmp r1, #0x2d\n"
1024 " bne loc_fc226caa\n"
1025 " bl sub_fc2e118e\n"
1026 " bl sub_fc1742fc\n"
1027 " bl sub_fc173fe2\n"
1028 " b loc_fc226c4a\n"
1029 "loc_fc226caa:\n"
1030 " cmp r1, #0x2e\n"
1031 " bne loc_fc226ce4\n"
1032 " ldr r0, [r4, #0x1c]\n"
1033 " movs r1, #4\n"
1034 " blx sub_fc2a15c8\n"
1035 " ldr r1, =0xfc222be7\n"
1036 " movs r2, #4\n"
1037 " mov r0, sl\n"
1038 " bl sub_fc2e0d70\n"
1039 " bl sub_fc2e0efc\n"
1040 " ldr r0, [r4, #0x1c]\n"
1041 " movs r1, #4\n"
1042 " mov r2, fp\n"
1043 " blx sub_fc2a15c0\n"
1044 " lsls r0, r0, #0x1f\n"
1045 " beq loc_fc226c4a\n"
1046 " movw r2, #0x1731\n"
1047 "loc_fc226cd6:\n"
1048 " b loc_fc226cda\n"
1049 "loc_fc226cd8:\n"
1050 " b loc_fc226ce4\n"
1051 "loc_fc226cda:\n"
1052 " ldr r1, =0xfc222fcc\n"
1053 " movs r0, #0\n"
1054 " blx sub_fc2a16b0\n"
1055 " b loc_fc226c4a\n"
1056 "loc_fc226ce4:\n"
1057 " ldr r0, [sp, #0x28]\n"
1058 " movs r5, #1\n"
1059 " ldr r1, [r0]\n"
1060 " cmp r1, #0x12\n"
1061 " beq loc_fc226cf2\n"
1062 " cmp r1, #0x13\n"
1063 " bne loc_fc226d30\n"
1064 "loc_fc226cf2:\n"
1065 " ldr.w r1, [r0, #0x94]\n"
1066 " mov r4, r8\n"
1067 " add.w r1, r1, r1, lsl #1\n"
1068 " add.w r1, r0, r1, lsl #2\n"
1069 " subs r1, #8\n"
1070 " ldm r1!, {r2, r3, r7}\n"
1071 " stm r4!, {r2, r3, r7}\n"
1072 " bl sub_fc2254a0\n"
1073 " ldr r0, [sp, #0x28]\n"
1074 " add.w r0, r0, #0x94\n"
1075 " ldrd r3, r2, [r0, #0x14]\n"
1076 " ldr r1, [r0]\n"
1077 " sub.w r0, r0, #0x90\n"
1078 " blx r3\n"
1079 " ldr r0, [sp, #0x28]\n"
1080 " bl sub_fc227b2c\n"
1081 " ldr r0, [sp, #0x28]\n"
1082 " add.w r0, r0, #0x94\n"
1083 " ldr r1, [r0]\n"
1084 " ldrd r3, r2, [r0, #0x1c]\n"
1085 " b loc_fc226f52\n"
1086 "loc_fc226d30:\n"
1087 " cmp r1, #0x14\n"
1088 " beq loc_fc226d40\n"
1089 " cmp r1, #0x15\n"
1090 " beq loc_fc226d40\n"
1091 " cmp r1, #0x16\n"
1092 " beq loc_fc226d40\n"
1093 " cmp r1, #0x17\n"
1094 " bne loc_fc226db2\n"
1095 "loc_fc226d40:\n"
1096 " add r3, sp, #0xc\n"
1097 " mov r2, sp\n"
1098 " add r1, sp, #0x1c\n"
1099 " bl sub_fc22569a\n"
1100 " cmp r0, #1\n"
1101 " mov r4, r0\n"
1102 " beq loc_fc226d54\n"
1103 " cmp r4, #5\n"
1104 " bne loc_fc226d6a\n"
1105 "loc_fc226d54:\n"
1106 " ldr r0, [sp, #0x28]\n"
1107 " mov r2, r4\n"
1108 " add.w r0, r0, #0x94\n"
1109 " ldrd r7, r3, [r0, #0x14]\n"
1110 " ldr r1, [r0]\n"
1111 " sub.w r0, r0, #0x90\n"
1112 " blx r7\n"
1113 " b loc_fc226d90\n"
1114 "loc_fc226d6a:\n"
1115 " cmp r4, #2\n"
1116 " beq loc_fc226d72\n"
1117 " cmp r4, #6\n"
1118 " bne loc_fc226d9c\n"
1119 "loc_fc226d72:\n"
1120 " ldr r0, [sp, #0x28]\n"
1121 " mov r2, r4\n"
1122 " add.w r0, r0, #0x94\n"
1123 " ldrd r7, r3, [r0, #0x14]\n"
1124 " ldr r1, [r0]\n"
1125 " sub.w r0, r0, #0x90\n"
1126 " blx r7\n"
1127 " ldr r0, [sp, #0x28]\n"
1128 " add r1, sp, #0x1c\n"
1129 " mov r2, sp\n"
1130 " bl sub_fc226928\n"
1131 "loc_fc226d90:\n"
1132 " ldr r2, [sp, #0xc]\n"
1133 " mov r1, r4\n"
1134 " ldr r0, [sp, #0x28]\n"
1135 " bl sub_fc226b16\n"
1136 " b loc_fc226f58\n"
1137 "loc_fc226d9c:\n"
1138 " ldr r0, [sp, #0x28]\n"
1139 " mov r2, r4\n"
1140 " add.w r0, r0, #0x94\n"
1141 " ldrd r7, r3, [r0, #0x14]\n"
1142 " ldr r1, [r0]\n"
1143 " sub.w r0, r0, #0x90\n"
1144 " blx r7\n"
1145 " b loc_fc226f58\n"
1146 "loc_fc226db2:\n"
1147 " cmp r1, #0x24\n"
1148 " beq loc_fc226dba\n"
1149 " cmp r1, #0x25\n"
1150 " bne loc_fc226dec\n"
1151 "loc_fc226dba:\n"
1152 " ldr.w r1, [r0, #0x94]\n"
1153 " mov r4, r8\n"
1154 " add.w r1, r1, r1, lsl #1\n"
1155 " add.w r1, r0, r1, lsl #2\n"
1156 " subs r1, #8\n"
1157 " ldm r1!, {r2, r3, r7}\n"
1158 " stm r4!, {r2, r3, r7}\n"
1159 " bl sub_fc224606\n"
1160 " ldr r0, [sp, #0x28]\n"
1161 " add.w r0, r0, #0x94\n"
1162 " ldrd r3, r2, [r0, #0x14]\n"
1163 " ldr r1, [r0]\n"
1164 " sub.w r0, r0, #0x90\n"
1165 " blx r3\n"
1166 " ldr r0, [sp, #0x28]\n"
1167 " bl sub_fc2249e6\n"
1168 " b loc_fc226f58\n"
1169 "loc_fc226dec:\n"
1170 " adds r1, r0, #4\n"
1171 " mov r4, r8\n"
1172 " ldm r1!, {r2, r3, r7}\n"
1173 " stm r4!, {r2, r3, r7}\n"
1174 " ldr r1, [r0]\n"
1175 " cmp r1, #0x28\n"
1176 " bhs loc_fc226e2a\n"
1177 " tbb [pc, r1]\n"
1178 "branchtable_fc226dfe:\n"
1179 " .byte((loc_fc226e26 - branchtable_fc226dfe) / 2)\n"
1180 " .byte((loc_fc226e26 - branchtable_fc226dfe) / 2)\n"
1181 " .byte((loc_fc226e2c - branchtable_fc226dfe) / 2)\n"
1182 " .byte((loc_fc226e32 - branchtable_fc226dfe) / 2)\n"
1183 " .byte((loc_fc226e32 - branchtable_fc226dfe) / 2)\n"
1184 " .byte((loc_fc226e32 - branchtable_fc226dfe) / 2)\n"
1185 " .byte((loc_fc226e26 - branchtable_fc226dfe) / 2)\n"
1186 " .byte((loc_fc226e2c - branchtable_fc226dfe) / 2)\n"
1187 " .byte((loc_fc226e32 - branchtable_fc226dfe) / 2)\n"
1188 " .byte((loc_fc226e32 - branchtable_fc226dfe) / 2)\n"
1189 " .byte((loc_fc226e44 - branchtable_fc226dfe) / 2)\n"
1190 " .byte((loc_fc226e44 - branchtable_fc226dfe) / 2)\n"
1191 " .byte((loc_fc226f36 - branchtable_fc226dfe) / 2)\n"
1192 " .byte((loc_fc226f3c - branchtable_fc226dfe) / 2)\n"
1193 " .byte((loc_fc226f3c - branchtable_fc226dfe) / 2)\n"
1194 " .byte((loc_fc226f3c - branchtable_fc226dfe) / 2)\n"
1195 " .byte((loc_fc226f3c - branchtable_fc226dfe) / 2)\n"
1196 " .byte((loc_fc226f42 - branchtable_fc226dfe) / 2)\n"
1197 " .byte((loc_fc226f46 - branchtable_fc226dfe) / 2)\n"
1198 " .byte((loc_fc226f46 - branchtable_fc226dfe) / 2)\n"
1199 " .byte((loc_fc226f46 - branchtable_fc226dfe) / 2)\n"
1200 " .byte((loc_fc226f46 - branchtable_fc226dfe) / 2)\n"
1201 " .byte((loc_fc226f46 - branchtable_fc226dfe) / 2)\n"
1202 " .byte((loc_fc226f46 - branchtable_fc226dfe) / 2)\n"
1203 " .byte((loc_fc226e38 - branchtable_fc226dfe) / 2)\n"
1204 " .byte((loc_fc226e3e - branchtable_fc226dfe) / 2)\n"
1205 " .byte((loc_fc226e3e - branchtable_fc226dfe) / 2)\n"
1206 " .byte((loc_fc226e3e - branchtable_fc226dfe) / 2)\n"
1207 " .byte((loc_fc226e4c - branchtable_fc226dfe) / 2)\n"
1208 " .byte((loc_fc226e4c - branchtable_fc226dfe) / 2)\n"
1209 " .byte((loc_fc226e52 - branchtable_fc226dfe) / 2)\n"
1210 " .byte((loc_fc226e7c - branchtable_fc226dfe) / 2)\n"
1211
1212 " .byte((loc_fc226ed0 - branchtable_fc226dfe) / 2)\n"
1213
1214 " .byte((loc_fc226efa - branchtable_fc226dfe) / 2)\n"
1215 " .byte((loc_fc226f24 - branchtable_fc226dfe) / 2)\n"
1216 " .byte((loc_fc226f24 - branchtable_fc226dfe) / 2)\n"
1217 " .byte((loc_fc226f46 - branchtable_fc226dfe) / 2)\n"
1218 " .byte((loc_fc226f46 - branchtable_fc226dfe) / 2)\n"
1219 " .byte((loc_fc226f2a - branchtable_fc226dfe) / 2)\n"
1220 " .byte((loc_fc226f30 - branchtable_fc226dfe) / 2)\n"
1221 ".align 1\n"
1222 "loc_fc226e26:\n"
1223 " bl sub_fc2230a4\n"
1224 "loc_fc226e2a:\n"
1225 " b loc_fc226f46\n"
1226 "loc_fc226e2c:\n"
1227 " bl sub_fc223314\n"
1228 " b loc_fc226f46\n"
1229 "loc_fc226e32:\n"
1230 " bl sub_fc223530\n"
1231 " b loc_fc226f46\n"
1232 "loc_fc226e38:\n"
1233 " bl sub_fc2237b6\n"
1234 " b loc_fc226f46\n"
1235 "loc_fc226e3e:\n"
1236 " bl sub_fc223988\n"
1237 " b loc_fc226f46\n"
1238 "loc_fc226e44:\n"
1239 " bl sub_fc223dc3_my\n"
1240 " movs r5, #0\n"
1241 " b loc_fc226f46\n"
1242 "loc_fc226e4c:\n"
1243 " bl sub_fc223ebc\n"
1244 " b loc_fc226f46\n"
1245 "loc_fc226e52:\n"
1246 " ldrh r1, [r0, #4]\n"
1247 " strh.w r1, [sp, #0x1c]\n"
1248 " ldrh r1, [r6, #2]\n"
1249 " strh.w r1, [sp, #0x1e]\n"
1250 " ldrh r1, [r6, #4]\n"
1251 " strh.w r1, [sp, #0x20]\n"
1252 " ldrh r1, [r6, #6]\n"
1253 " strh.w r1, [sp, #0x22]\n"
1254 " ldrh r1, [r0, #0xc]\n"
1255 " strh.w r1, [sp, #0x24]\n"
1256 " ldrh r1, [r6, #0xa]\n"
1257 " strh.w r1, [sp, #0x26]\n"
1258 " bl sub_fc22434c\n"
1259 " b loc_fc226f46\n"
1260 "loc_fc226e7c:\n"
1261 " ldrh r1, [r0, #4]\n"
1262 " strh.w r1, [sp, #0x1c]\n"
1263 " ldrh r1, [r6, #2]\n"
1264 " strh.w r1, [sp, #0x1e]\n"
1265 " ldrh r1, [r6, #4]\n"
1266 " strh.w r1, [sp, #0x20]\n"
1267 " ldrh r1, [r6, #6]\n"
1268 " strh.w r1, [sp, #0x22]\n"
1269 " ldrh r1, [r6, #8]\n"
1270 " strh.w r1, [sp, #0x24]\n"
1271 " ldrh r1, [r6, #0xa]\n"
1272 " strh.w r1, [sp, #0x26]\n"
1273 " bl sub_fc2279c0\n"
1274 " b loc_fc226f46\n"
1275
1276
1277
1278 "loc_fc226ed0:\n"
1279 " ldrh r1, [r6]\n"
1280 " strh.w r1, [sp, #0x1c]\n"
1281 " ldrh r1, [r0, #6]\n"
1282 " strh.w r1, [sp, #0x1e]\n"
1283 " ldrh r1, [r6, #4]\n"
1284 " strh.w r1, [sp, #0x20]\n"
1285 " ldrh r1, [r6, #6]\n"
1286 " strh.w r1, [sp, #0x22]\n"
1287 " ldrh r1, [r6, #8]\n"
1288 " strh.w r1, [sp, #0x24]\n"
1289 " ldrh r1, [r6, #0xa]\n"
1290 " strh.w r1, [sp, #0x26]\n"
1291 " bl sub_fc227a46\n"
1292 " b loc_fc226f46\n"
1293 "loc_fc226efa:\n"
1294 " ldrh r1, [r6]\n"
1295 " strh.w r1, [sp, #0x1c]\n"
1296 " ldrh r1, [r6, #2]\n"
1297 " strh.w r1, [sp, #0x1e]\n"
1298 " ldrh r1, [r6, #4]\n"
1299 " strh.w r1, [sp, #0x20]\n"
1300 " ldrh r1, [r6, #6]\n"
1301 " strh.w r1, [sp, #0x22]\n"
1302 " ldrh r1, [r0, #0xc]\n"
1303 " strh.w r1, [sp, #0x24]\n"
1304 " ldrh r1, [r6, #0xa]\n"
1305 " strh.w r1, [sp, #0x26]\n"
1306 " bl sub_fc227abc\n"
1307 " b loc_fc226f46\n"
1308 "loc_fc226f24:\n"
1309 " bl sub_fc224406\n"
1310 " b loc_fc226f46\n"
1311 "loc_fc226f2a:\n"
1312 " bl sub_fc224aae\n"
1313 " b loc_fc226f46\n"
1314 "loc_fc226f30:\n"
1315 " bl sub_fc224e94\n"
1316 " b loc_fc226f46\n"
1317 "loc_fc226f36:\n"
1318 " bl sub_fc225076\n"
1319 " b loc_fc226f46\n"
1320 "loc_fc226f3c:\n"
1321 " bl sub_fc2251ee\n"
1322 " b loc_fc226f46\n"
1323 "loc_fc226f42:\n"
1324 " bl sub_fc22530a\n"
1325 "loc_fc226f46:\n"
1326 " ldr r0, [sp, #0x28]\n"
1327 " add.w r0, r0, #0x94\n"
1328 " ldrd r3, r2, [r0, #0x14]\n"
1329 " ldr r1, [r0]\n"
1330 "loc_fc226f52:\n"
1331 " sub.w r0, r0, #0x90\n"
1332 " blx r3\n"
1333 "loc_fc226f58:\n"
1334 " ldr r0, [sp, #0x28]\n"
1335 " ldr r0, [r0]\n"
1336 " cmp r0, #0x10\n"
1337 " beq loc_fc226f7c\n"
1338 " bgt loc_fc226f70\n"
1339 " cmp r0, #1\n"
1340 " beq loc_fc226f7c\n"
1341 " cmp r0, #4\n"
1342 " beq loc_fc226f7c\n"
1343 " cmp r0, #0xe\n"
1344 " bne loc_fc226fae\n"
1345 " b loc_fc226f7c\n"
1346 "loc_fc226f70:\n"
1347 " cmp r0, #0x13\n"
1348 " beq loc_fc226f7c\n"
1349 " cmp r0, #0x17\n"
1350 " beq loc_fc226f7c\n"
1351 " cmp r0, #0x1a\n"
1352 " bne loc_fc226fae\n"
1353 "loc_fc226f7c:\n"
1354 " ldrsh.w r0, [r6]\n"
1355 " mov r2, sl\n"
1356 " cmp r0, sl\n"
1357 " beq loc_fc226f8e\n"
1358 " ldrsh.w r1, [r6, #8]\n"
1359 " cmp r1, r2\n"
1360 " bne loc_fc226fa6\n"
1361 "loc_fc226f8e:\n"
1362 " add r0, sp, #0x10\n"
1363 " bl sub_fc2cffea\n"
1364 " ldrh.w r0, [sp, #0x10]\n"
1365 " strh.w r0, [sp, #0x1c]\n"
1366 " ldrh.w r0, [sp, #0x18]\n"
1367 " strh.w r0, [sp, #0x24]\n"
1368 " b loc_fc226fae\n"
1369 "loc_fc226fa6:\n"
1370 " strh.w r0, [sp, #0x1c]\n"
1371 " strh.w r1, [sp, #0x24]\n"
1372 "loc_fc226fae:\n"
1373 " cmp r5, #1\n"
1374 " ldr r0, [sp, #0x28]\n"
1375 " bne loc_fc226fe6\n"
1376 " movs r2, #0xc\n"
1377 " ldr.w r1, [r0, #0x94]\n"
1378 " add.w r1, r1, r1, lsl #1\n"
1379 " add.w r4, r0, r1, lsl #2\n"
1380 " ldr r0, =0x0005c6fc\n"
1381 " subs r4, #8\n"
1382 " add r1, sp, #0x1c\n"
1383 " blx sub_fc2a16c8\n"
1384 " ldr r0, =0x0005c6fc\n"
1385 " movs r2, #0xc\n"
1386 " add r1, sp, #0x1c\n"
1387 " adds r0, #0xc\n"
1388 " blx sub_fc2a16c8\n"
1389 " ldr r0, =0x0005c6fc\n"
1390 " movs r2, #0xc\n"
1391 " mov r1, r4\n"
1392 " adds r0, #0x18\n"
1393 " blx sub_fc2a16c8\n"
1394 " b loc_fc227030\n"
1395 "loc_fc226fe6:\n"
1396 " ldr r0, [r0]\n"
1397 " mov.w r3, #1\n"
1398 " cmp r0, #0xb\n"
1399 " bne loc_fc227010\n"
1400 " movs r2, #0\n"
1401 " mov r1, r3\n"
1402 " strd r2, r3, [sp]\n"
1403 " movs r0, #0\n"
1404 " mov r2, r3\n"
1405 " bl sub_fc222eea\n"
1406 " movs r3, #1\n"
1407 " movs r2, #0\n"
1408 " mov r1, r3\n"
1409 " movs r0, #0\n"
1410 " strd r2, r3, [sp]\n"
1411 " mov r2, r3\n"
1412 " b loc_fc22702c\n"
1413 "loc_fc227010:\n"
1414 " movs r2, #1\n"
1415 " strd r2, r3, [sp]\n"
1416 " mov r3, r2\n"
1417 " mov r1, r2\n"
1418 " mov r0, r2\n"
1419 " bl sub_fc222eea\n"
1420 " movs r3, #1\n"
1421 " str r3, [sp]\n"
1422 " mov r2, r3\n"
1423 " mov r1, r3\n"
1424 " mov r0, r3\n"
1425 " str r3, [sp, #4]\n"
1426 "loc_fc22702c:\n"
1427 " bl sub_fc223028\n"
1428 "loc_fc227030:\n"
1429 " ldr r0, [sp, #0x28]\n"
1430 " bl sub_fc227944\n"
1431 " b loc_fc226bbe\n"
1432
1433 ".ltorg\n"
1434 );
1435 }
1436
1437
1438 void __attribute__((naked,noinline)) sub_fc223dc3_my() {
1439 asm volatile (
1440 " push.w {r4, r5, r6, r7, r8, lr}\n"
1441 " ldr r7, =0x0000d8d0\n"
1442 " movs r1, #0x3e\n"
1443 " mov r4, r0\n"
1444 " ldr r0, [r7, #0x1c]\n"
1445 " blx sub_fc2a15c8\n"
1446 " movs r2, #0\n"
1447 " ldrsh.w r0, [r4, #4]\n"
1448 " movs r3, #1\n"
1449 " mov r1, r2\n"
1450 " bl sub_fc222c28\n"
1451 " mov r6, r0\n"
1452 " ldrsh.w r0, [r4, #6]\n"
1453 " bl sub_fc222d7a\n"
1454 " ldrsh.w r0, [r4, #8]\n"
1455 " bl sub_fc222dbe\n"
1456 " ldrsh.w r0, [r4, #0xa]\n"
1457 " bl sub_fc222e02\n"
1458 " ldrsh.w r0, [r4, #0xc]\n"
1459 " movs r1, #0\n"
1460 " bl sub_fc222e46\n"
1461 " mov r5, r0\n"
1462 " ldr r0, [r4]\n"
1463 " ldr.w r8, =0x0005c714\n"
1464 " cmp r0, #0xb\n"
1465 " bne loc_fc223e16\n"
1466 " movs r6, #0\n"
1467 " mov r5, r6\n"
1468 " b loc_fc223e2e\n"
1469 "loc_fc223e16:\n"
1470 " cmp r6, #1\n"
1471 " bne loc_fc223e2e\n"
1472 " ldrsh.w r0, [r4, #4]\n"
1473 " movs r2, #2\n"
1474 " ldr r1, =0xfc222bbf\n"
1475 " bl sub_fc14dd72\n"
1476 " strh r0, [r4, #4]\n"
1477 " movs r0, #0\n"
1478 " str r0, [r7, #0x28]\n"
1479 " b loc_fc223e34\n"
1480 "loc_fc223e2e:\n"
1481 " ldrh.w r0, [r8]\n"
1482 " strh r0, [r4, #4]\n"
1483 "loc_fc223e34:\n"
1484 " cmp r5, #1\n"
1485 " bne loc_fc223e46\n"
1486 " ldrsh.w r0, [r4, #0xc]\n"
1487 " movs r2, #0x20\n"
1488 " ldr r1, =0xfc222c13\n"
1489 " bl sub_fc227996\n"
1490 " b loc_fc223e4a\n"
1491 "loc_fc223e46:\n"
1492 " ldrh.w r0, [r8, #8]\n"
1493 "loc_fc223e4a:\n"
1494 " strh r0, [r4, #0xc]\n"
1495 " ldrsh.w r0, [r4, #6]\n"
1496 " bl sub_fc2e0f56_my\n"
1497 " ldr pc,=0xfc223e55\n"
1498
1499 ".ltorg\n"
1500 );
1501 }
1502
1503
1504 void __attribute__((naked,noinline)) sub_fc2e0f56_my() {
1505 asm volatile (
1506 " push {r4, r5, r6, lr}\n"
1507 " ldr r5, =0x0000d4d0\n"
1508 " mov r4, r0\n"
1509 " ldr r0, [r5, #4]\n"
1510 " cmp r0, #1\n"
1511 " beq loc_fc2e0f6e\n"
1512 " movs r0, #0\n"
1513 " movw r2, #0x154\n"
1514 " ldr r1, =0xfc2e108c\n"
1515 " blx sub_fc2a16b0\n"
1516 "loc_fc2e0f6e:\n"
1517 " ldr r0, =0xfffff400\n"
1518 " cmp r4, r0\n"
1519 " bne loc_fc2e0f78\n"
1520 " ldrsh.w r4, [r5, #2]\n"
1521 "loc_fc2e0f78:\n"
1522 " strh r4, [r5, #2]\n"
1523 " cmp r4, r0\n"
1524 " bne loc_fc2e0f8a\n"
1525 " movs r0, #0\n"
1526 " movw r2, #0x15a\n"
1527 " ldr r1, =0xfc2e108c\n"
1528 " blx sub_fc2a16b0\n"
1529 "loc_fc2e0f8a:\n"
1530 " mov r0, r4\n"
1531 " bl apex2us\n"
1532
1533 " mov r4, r0\n"
1534 " bl sub_fc1a9032\n"
1535 " mov r0, r4\n"
1536 " bl sub_fc1ad042\n"
1537 " lsls r0, r0, #0x1f\n"
1538 " beq loc_fc2e0fb0\n"
1539 " pop.w {r4, r5, r6, lr}\n"
1540 " movs r0, #0\n"
1541 " movw r2, #0x15f\n"
1542 " ldr r1, =0xfc2e108c\n"
1543
1544 " ldr pc,=0xfc2a0ce1\n"
1545 "loc_fc2e0fb0:\n"
1546 " pop {r4, r5, r6, pc}\n"
1547
1548 ".ltorg\n"
1549 );
1550 }
1551