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_fc1b935a_my
- sub_fc1b91ce_my
- sub_fc36fa76_my
- exp_drv_task
- sub_fc273b48_my
- sub_fc1498d4_my
1 #include "lolevel.h"
2 #include "platform.h"
3 #include "core.h"
4
5
6
7
8 #define USE_STUBS_NRFLAG 1
9 #define NR_AUTO (0)
10
11
12 #ifdef CAPTSEQ_DEBUG_LOG
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 }
54 #endif
55
56 #include "../../../generic/capt_seq.c"
57
58
59
60
61
62
63 void __attribute__((naked,noinline)) capt_seq_task() {
64 asm volatile (
65 " push {r3, r4, r5, r6, r7, lr}\n"
66 " ldr r4, =0x00037518\n"
67 " movs r6, #0\n"
68 " ldr r5, =0x0000ba6c\n"
69 "loc_fc12de10:\n"
70 " movs r2, #0\n"
71 " mov r1, sp\n"
72 " ldr r0, [r5, #4]\n"
73 " blx sub_fc29b34c\n"
74 " lsls r0, r0, #0x1f\n"
75 " beq loc_fc12de32\n"
76 " movw r2, #0x429\n"
77 " ldr r1, =0xfc12da98\n"
78 " movs r0, #0\n"
79 " blx sub_fc29b444\n"
80 " blx sub_fc29b364\n"
81 " pop {r3, r4, r5, r6, r7, pc}\n"
82 "loc_fc12de32:\n"
83 " ldr r0, [sp]\n"
84 " ldr r0, [r0]\n"
85 " cmp r0, #1\n"
86 " beq loc_fc12de4a\n"
87 " cmp r0, #0x2a\n"
88 " beq loc_fc12de4a\n"
89 " cmp r0, #0x1e\n"
90 " beq loc_fc12de4a\n"
91 " cmp r0, #0x21\n"
92 " beq loc_fc12de4a\n"
93 " bl sub_fc1ba46c\n"
94 "loc_fc12de4a:\n"
95 #ifdef CAPTSEQ_DEBUG_LOG
96
97 "ldr r0, [sp]\n"
98 "ldr r0, [r0]\n"
99 "bl log_capt_seq1\n"
100 #endif
101 " ldr r0, [sp]\n"
102 " ldr r1, [r0]\n"
103 " cmp r1, #0x2c\n"
104 " bhs loc_fc12df32\n"
105 " tbb [pc, r1]\n"
106 "branchtable_fc12de56:\n"
107 " .byte((loc_fc12de82 - branchtable_fc12de56) / 2)\n"
108 " .byte((loc_fc12de96 - branchtable_fc12de56) / 2)\n"
109 " .byte((loc_fc12de9e - branchtable_fc12de56) / 2)\n"
110 " .byte((loc_fc12deac - branchtable_fc12de56) / 2)\n"
111 " .byte((loc_fc12dea6 - branchtable_fc12de56) / 2)\n"
112 " .byte((loc_fc12deb4 - branchtable_fc12de56) / 2)\n"
113 " .byte((loc_fc12deba - branchtable_fc12de56) / 2)\n"
114 " .byte((loc_fc12dec0 - branchtable_fc12de56) / 2)\n"
115 " .byte((loc_fc12dec8 - branchtable_fc12de56) / 2)\n"
116 " .byte((loc_fc12df04 - branchtable_fc12de56) / 2)\n"
117 " .byte((loc_fc12ded2 - branchtable_fc12de56) / 2)\n"
118 " .byte((loc_fc12deda - branchtable_fc12de56) / 2)\n"
119 " .byte((loc_fc12dee0 - branchtable_fc12de56) / 2)\n"
120 " .byte((loc_fc12dee8 - branchtable_fc12de56) / 2)\n"
121 " .byte((loc_fc12def8 - branchtable_fc12de56) / 2)\n"
122 " .byte((loc_fc12defe - branchtable_fc12de56) / 2)\n"
123 " .byte((loc_fc12df0a - branchtable_fc12de56) / 2)\n"
124 " .byte((loc_fc12df10 - branchtable_fc12de56) / 2)\n"
125 " .byte((loc_fc12df16 - branchtable_fc12de56) / 2)\n"
126 " .byte((loc_fc12df1c - branchtable_fc12de56) / 2)\n"
127 " .byte((loc_fc12df22 - branchtable_fc12de56) / 2)\n"
128 " .byte((loc_fc12df28 - branchtable_fc12de56) / 2)\n"
129 " .byte((loc_fc12df2c - branchtable_fc12de56) / 2)\n"
130 " .byte((loc_fc12df34 - branchtable_fc12de56) / 2)\n"
131 " .byte((loc_fc12df3a - branchtable_fc12de56) / 2)\n"
132 " .byte((loc_fc12df40 - branchtable_fc12de56) / 2)\n"
133 " .byte((loc_fc12df46 - branchtable_fc12de56) / 2)\n"
134 " .byte((loc_fc12df4c - branchtable_fc12de56) / 2)\n"
135 " .byte((loc_fc12df54 - branchtable_fc12de56) / 2)\n"
136 " .byte((loc_fc12df5a - branchtable_fc12de56) / 2)\n"
137 " .byte((loc_fc12df5e - branchtable_fc12de56) / 2)\n"
138 " .byte((loc_fc12df66 - branchtable_fc12de56) / 2)\n"
139 " .byte((loc_fc12df6c - branchtable_fc12de56) / 2)\n"
140 " .byte((loc_fc12df72 - branchtable_fc12de56) / 2)\n"
141 " .byte((loc_fc12df78 - branchtable_fc12de56) / 2)\n"
142 " .byte((loc_fc12df7e - branchtable_fc12de56) / 2)\n"
143 " .byte((loc_fc12df84 - branchtable_fc12de56) / 2)\n"
144 " .byte((loc_fc12df8a - branchtable_fc12de56) / 2)\n"
145 " .byte((loc_fc12df92 - branchtable_fc12de56) / 2)\n"
146 " .byte((loc_fc12df98 - branchtable_fc12de56) / 2)\n"
147 " .byte((loc_fc12dfa2 - branchtable_fc12de56) / 2)\n"
148 " .byte((loc_fc12dfce - branchtable_fc12de56) / 2)\n"
149 " .byte((loc_fc12dfd4 - branchtable_fc12de56) / 2)\n"
150 " .byte((loc_fc12dfee - branchtable_fc12de56) / 2)\n"
151 ".align 1\n"
152 "loc_fc12de82:\n"
153 " bl sub_fc12e326\n"
154 #ifdef CAPTSEQ_DEBUG_LOG
155 "bl log_capt_seq3\n"
156 #endif
157 " BL shooting_expo_param_override\n"
158 " bl sub_fc12bb2e\n"
159 " ldr r0, [r4, #0x28]\n"
160 " cmp r0, #0\n"
161 " beq loc_fc12de94\n"
162
163 " bl sub_fc1b935a_my\n"
164 "loc_fc12de94:\n"
165 " b loc_fc12dfee\n"
166 "loc_fc12de96:\n"
167 " ldr r0, [r0, #0x10]\n"
168
169 " bl sub_fc1b91ce_my\n"
170 " b loc_fc12dfee\n"
171 "loc_fc12de9e:\n"
172 " movs r0, #1\n"
173 " bl sub_fc12e5a6\n"
174 " b loc_fc12dfee\n"
175 "loc_fc12dea6:\n"
176 " bl sub_fc12e0f2\n"
177 " b loc_fc12deb0\n"
178 "loc_fc12deac:\n"
179 " bl sub_fc12e312\n"
180 "loc_fc12deb0:\n"
181 " str r6, [r4, #0x28]\n"
182 " b loc_fc12dfee\n"
183 "loc_fc12deb4:\n"
184 " bl sub_fc12e316\n"
185 " b loc_fc12dfee\n"
186 "loc_fc12deba:\n"
187 " bl sub_fc12e4ae\n"
188 " b loc_fc12decc\n"
189 "loc_fc12dec0:\n"
190 " ldr r0, [r0, #0x10]\n"
191 " bl sub_fc1b93ce\n"
192 " b loc_fc12dfee\n"
193 "loc_fc12dec8:\n"
194 " bl sub_fc12e534\n"
195 "loc_fc12decc:\n"
196 " bl sub_fc12bb2e\n"
197 " b loc_fc12dfee\n"
198 "loc_fc12ded2:\n"
199 " ldr r0, [r4, #0x50]\n"
200 " bl sub_fc12eb0c\n"
201 " b loc_fc12dfee\n"
202 "loc_fc12deda:\n"
203 " bl sub_fc12eda0\n"
204 " b loc_fc12dfee\n"
205 "loc_fc12dee0:\n"
206 " ldr r0, [r0, #0xc]\n"
207 " bl sub_fc12edec\n"
208 " b loc_fc12dfee\n"
209 "loc_fc12dee8:\n"
210 " bl sub_fc12ef66\n"
211 " b loc_fc12dfee\n"
212 ".ltorg\n"
213
214
215
216
217
218
219
220 "loc_fc12def8:\n"
221 " bl sub_fc12f328\n"
222 " b loc_fc12dfee\n"
223 "loc_fc12defe:\n"
224 " bl sub_fc12f3b8\n"
225 " b loc_fc12dfee\n"
226 "loc_fc12df04:\n"
227 " bl sub_fc12e312\n"
228 " b loc_fc12dfee\n"
229 "loc_fc12df0a:\n"
230 " bl sub_fc1b87a8\n"
231 " b loc_fc12dfee\n"
232 "loc_fc12df10:\n"
233 " bl sub_fc1b8936\n"
234 " b loc_fc12dfee\n"
235 "loc_fc12df16:\n"
236 " bl sub_fc1b89aa\n"
237 " b loc_fc12dfee\n"
238 "loc_fc12df1c:\n"
239 " bl sub_fc1b8a3c\n"
240 " b loc_fc12dfee\n"
241 "loc_fc12df22:\n"
242 " bl sub_fc1b8ad8\n"
243 " b loc_fc12dfee\n"
244 "loc_fc12df28:\n"
245 " movs r0, #0\n"
246 " b loc_fc12df4e\n"
247 "loc_fc12df2c:\n"
248 " bl sub_fc1b8dcc\n"
249 " b loc_fc12dfee\n"
250 "loc_fc12df32:\n"
251 " b loc_fc12dfe0\n"
252 "loc_fc12df34:\n"
253 " bl sub_fc1b8e2a\n"
254 " b loc_fc12dfee\n"
255 "loc_fc12df3a:\n"
256 " bl sub_fc1b8e2e\n"
257 " b loc_fc12dfee\n"
258 "loc_fc12df40:\n"
259 " bl sub_fc1b8e40\n"
260 " b loc_fc12dfee\n"
261 "loc_fc12df46:\n"
262 " bl sub_fc1b8ebc\n"
263 " b loc_fc12dfee\n"
264 "loc_fc12df4c:\n"
265 " movs r0, #1\n"
266 "loc_fc12df4e:\n"
267 " bl sub_fc1b8cc0\n"
268 " b loc_fc12dfee\n"
269 "loc_fc12df54:\n"
270 " bl sub_fc12e6b2\n"
271 " b loc_fc12dfee\n"
272 "loc_fc12df5a:\n"
273 " movs r0, #0\n"
274 " b loc_fc12df60\n"
275 "loc_fc12df5e:\n"
276 " ldr r0, [r0, #0xc]\n"
277 "loc_fc12df60:\n"
278 " bl sub_fc12e702\n"
279 " b loc_fc12dfee\n"
280 "loc_fc12df66:\n"
281 " bl sub_fc1b8bf4\n"
282 " b loc_fc12dfee\n"
283 "loc_fc12df6c:\n"
284 " bl sub_fc1b8c56\n"
285 " b loc_fc12dfee\n"
286 "loc_fc12df72:\n"
287 " bl sub_fc1b9e2a\n"
288 " b loc_fc12dfee\n"
289 "loc_fc12df78:\n"
290 " bl sub_fc12c364\n"
291 " b loc_fc12dfee\n"
292 "loc_fc12df7e:\n"
293 " bl sub_fc1314b4\n"
294 " b loc_fc12dfee\n"
295 "loc_fc12df84:\n"
296 " bl sub_fc131564\n"
297 " b loc_fc12dfee\n"
298 "loc_fc12df8a:\n"
299 " ldr r0, [r0, #0xc]\n"
300 " bl sub_fc1b8f7c\n"
301 " b loc_fc12dfee\n"
302 "loc_fc12df92:\n"
303 " bl sub_fc1b8fde\n"
304 " b loc_fc12dfee\n"
305 "loc_fc12df98:\n"
306 " bl sub_fc131654\n"
307 " bl sub_fc1315a2\n"
308 " b loc_fc12dfee\n"
309 "loc_fc12dfa2:\n"
310 " movs r0, #1\n"
311 " bl sub_fc1b9a6c\n"
312 " movs r0, #1\n"
313 " bl sub_fc1b9b36\n"
314 " ldrh.w r0, [r4, #0x198]\n"
315 " cmp r0, #4\n"
316 " beq loc_fc12dfc0\n"
317 " ldrh r0, [r4]\n"
318 " sub.w r1, r0, #0x4200\n"
319 " subs r1, #0x31\n"
320 " bne loc_fc12dfee\n"
321 "loc_fc12dfc0:\n"
322 " bl sub_fc131564\n"
323 " bl sub_fc131a44\n"
324 " bl sub_fc13188c\n"
325 " b loc_fc12dfee\n"
326 "loc_fc12dfce:\n"
327 " movs r2, #0\n"
328 " movs r1, #0x10\n"
329 " b loc_fc12dfd8\n"
330 "loc_fc12dfd4:\n"
331 " movs r2, #0\n"
332 " movs r1, #0xf\n"
333 "loc_fc12dfd8:\n"
334 " movs r0, #0\n"
335 " bl sub_fc12c530\n"
336 " b loc_fc12dfee\n"
337 "loc_fc12dfe0:\n"
338 " movw r2, #0x54d\n"
339 " ldr r1, =0xfc12da98\n"
340 " movs r0, #0\n"
341 " blx sub_fc29b444\n"
342 "loc_fc12dfee:\n"
343
344 #ifdef CAPTSEQ_DEBUG_LOG
345 "ldr r0, [sp]\n"
346 "ldr r0, [r0]\n"
347 "bl log_capt_seq2\n"
348 #endif
349 " bl capt_seq_hook_set_nr\n"
350 " ldr r0, [sp]\n"
351 " ldr r1, [r0, #4]\n"
352 " ldr r0, [r5]\n"
353 " blx sub_fc29b32c\n"
354 " ldr r7, [sp]\n"
355 " ldr r0, [r7, #8]\n"
356 " cbnz r0, loc_fc12e00c\n"
357 " movw r2, #0x11e\n"
358 " ldr r1, =0xfc12da98\n"
359 " movs r0, #0\n"
360 " blx sub_fc29b444\n"
361 "loc_fc12e00c:\n"
362 " str r6, [r7, #8]\n"
363 " b loc_fc12de10\n"
364 ".ltorg\n"
365 );
366 }
367
368
369
370 void __attribute__((naked,noinline)) sub_fc1b935a_my() {
371 asm volatile (
372 " push {r4, r5, r6, lr}\n"
373 " bl sub_fc12d52c\n"
374 " mov r4, r0\n"
375 " movs r0, #0xc\n"
376 " bl sub_fc2b70e0\n"
377 " ldr r6, =0x00014778\n"
378 " lsls r0, r0, #0x1f\n"
379 " mov.w r5, #1\n"
380 " bne loc_fc1b93ca\n"
381 " bl sub_fc2b7112\n"
382 " lsls r0, r0, #0x1f\n"
383 " bne loc_fc1b93ca\n"
384 " bl sub_fc12e31a\n"
385 " bl sub_fc12fe98\n"
386 " mov r1, r4\n"
387 " bl sub_fc12fede\n"
388 " movs r2, #4\n"
389 " movw r0, #0x10e\n"
390 " add.w r1, r4, #0x50\n"
391 " bl _SetPropertyCase\n"
392 " movs r2, #4\n"
393 " movs r0, #0x2c\n"
394 " add.w r1, r4, #0x54\n"
395 " bl _SetPropertyCase\n"
396 " movs r2, #4\n"
397 " movs r0, #0x3f\n"
398 " add.w r1, r4, #8\n"
399 " bl _SetPropertyCase\n"
400 " bl sub_fc1b9c26\n"
401 " mvn r1, #0x1000\n"
402 " blx sub_fc29b36c\n"
403 " mov r0, r4\n"
404 " bl sub_fc36f7e0\n"
405 " mov r0, r4\n"
406
407 " bl sub_fc36fa76_my\n"
408 " lsls r0, r0, #0x1f\n"
409 " beq loc_fc1b93cc\n"
410 "loc_fc1b93ca:\n"
411 " str r5, [r6]\n"
412 "loc_fc1b93cc:\n"
413 " pop {r4, r5, r6, pc}\n"
414 ".ltorg\n"
415 );
416 }
417
418
419 void __attribute__((naked,noinline)) sub_fc1b91ce_my() {
420 asm volatile (
421 " push {r2, r3, r4, r5, r6, lr}\n"
422 " ldr r6, =0x00037518\n"
423 " mov r4, r0\n"
424 " movs r5, #0\n"
425 " ldr r0, [r6, #0x28]\n"
426 " cbz r0, loc_fc1b91f6\n"
427 " ldr r0, =0x00014778\n"
428 " ldr r0, [r0]\n"
429 " cbz r0, loc_fc1b91e2\n"
430 " movs r5, #0x1d\n"
431 "loc_fc1b91e2:\n"
432 " mov r2, r4\n"
433 " movs r1, #1\n"
434 " mov r0, r5\n"
435 " bl sub_fc12c530\n"
436 " mov r1, r5\n"
437 " mov r0, r4\n"
438 " bl sub_fc1ba2ca\n"
439 " b loc_fc1b9354\n"
440 "loc_fc1b91f6:\n"
441 " bl sub_fc12fe98\n"
442 " mov r1, r4\n"
443 " bl sub_fc12fede\n"
444 " movs r2, #4\n"
445 " movw r0, #0x10e\n"
446 " add.w r1, r4, #0x50\n"
447 " bl _SetPropertyCase\n"
448 " movs r2, #4\n"
449 " movs r0, #0x2c\n"
450 " add.w r1, r4, #0x54\n"
451 " bl _SetPropertyCase\n"
452 " ldr.w r0, [r6, #0x12c]\n"
453 " cbz r0, loc_fc1b924e\n"
454 " ldrh.w r0, [r6, #0x196]\n"
455 " cmp r0, #3\n"
456 " beq loc_fc1b922e\n"
457 " ldr r0, [r4, #8]\n"
458 " cmp r0, #1\n"
459 " bhi loc_fc1b923a\n"
460 "loc_fc1b922e:\n"
461 " ldr.w r0, [r6, #0x104]\n"
462 " cbz r0, loc_fc1b924e\n"
463 " ldr r0, [r4, #0xc]\n"
464 " cmp r0, #1\n"
465 " bls loc_fc1b924e\n"
466 "loc_fc1b923a:\n"
467 " ldr.w r0, [r6, #0xe4]\n"
468 " cbnz r0, loc_fc1b9266\n"
469 " bl sub_fc11a3a6\n"
470 " lsls r0, r0, #0x1f\n"
471 " beq loc_fc1b9266\n"
472 " bl sub_fc2b714c\n"
473 " b loc_fc1b9264\n"
474 "loc_fc1b924e:\n"
475 " movs r0, #0xc\n"
476 " bl sub_fc2b70e0\n"
477 " lsls r0, r0, #0x1f\n"
478 " bne loc_fc1b9260\n"
479 " bl sub_fc2b7112\n"
480 " lsls r0, r0, #0x1f\n"
481 " beq loc_fc1b9266\n"
482 "loc_fc1b9260:\n"
483 " bl sub_fc12c35a\n"
484 "loc_fc1b9264:\n"
485 " movs r5, #1\n"
486 "loc_fc1b9266:\n"
487 " lsls r0, r5, #0x1f\n"
488 " bne loc_fc1b9342\n"
489 " mov r0, r4\n"
490 " bl sub_fc1b9e74\n"
491 " bl sub_fc1b9c26\n"
492 " mvn r1, #0x1000\n"
493 " blx sub_fc29b36c\n"
494 " mov r0, r4\n"
495 " bl sub_fc36f078\n"
496 " mov r5, r0\n"
497 " lsls r0, r0, #0x1f\n"
498 " bne loc_fc1b9342\n"
499 " bl sub_fc12e31a\n"
500 " mov r0, r4\n"
501 " bl sub_fc36f7e0\n"
502 " ldr.w r0, [r6, #0x128]\n"
503 " cbnz r0, loc_fc1b92a6\n"
504 " ldrh.w r0, [r6, #0x196]\n"
505 " cmp r0, #3\n"
506 " beq loc_fc1b92a6\n"
507 " ldr r0, [r4, #8]\n"
508 " cmp r0, #1\n"
509 " bhi loc_fc1b92ac\n"
510 "loc_fc1b92a6:\n"
511 " movs r0, #2\n"
512 " bl sub_fc1341ee\n"
513 "loc_fc1b92ac:\n"
514 " ldr.w r0, [r6, #0xa0]\n"
515 " cmp r0, #0\n"
516 " beq loc_fc1b931e\n"
517 " ldrh.w r0, [r6, #0x196]\n"
518 " movw r5, #0x1000\n"
519 " cmp r0, #3\n"
520 " beq loc_fc1b92dc\n"
521 " ldr r0, [r4, #8]\n"
522 " cmp r0, #1\n"
523 " bls loc_fc1b92dc\n"
524 " bl sub_fc1b9c26\n"
525 " movw r3, #0x119\n"
526 " movw r2, #0x3a98\n"
527 " mov r1, r5\n"
528 " str r3, [sp]\n"
529 " ldr r3, =0xfc1b94a4\n"
530 " bl sub_fc2b72b8\n"
531 "loc_fc1b92dc:\n"
532 " movs r2, #4\n"
533 " movw r0, #0x180\n"
534 " add r1, sp, #4\n"
535 " bl _GetPropertyCase\n"
536 " lsls r0, r0, #0x1f\n"
537 " beq loc_fc1b92f8\n"
538 " movs r0, #0\n"
539 " movw r2, #0x11d\n"
540 " ldr r1, =0xfc1b94a4\n"
541 " blx sub_fc29b444\n"
542 "loc_fc1b92f8:\n"
543 " ldr r0, [sp, #4]\n"
544 " cbnz r0, loc_fc1b9308\n"
545 " bl sub_fc1b9c26\n"
546 " mov r1, r5\n"
547 " blx sub_fc29b32c\n"
548 " b loc_fc1b931e\n"
549 "loc_fc1b9308:\n"
550 " bl sub_fc1b9c26\n"
551 " mov r1, r5\n"
552 " blx sub_fc29b36c\n"
553 " ldr r2, =0xfc1b91bd\n"
554 " mov r3, r5\n"
555 " ldr r0, [sp, #4]\n"
556 " mov r1, r2\n"
557 " bl sub_fc3004dc\n"
558 "loc_fc1b931e:\n"
559 " ldr.w r0, [r6, #0xac]\n"
560 " cbz r0, loc_fc1b932c\n"
561 " mov r0, r4\n"
562 " bl sub_fc36febc\n"
563 " b loc_fc1b9354\n"
564 "loc_fc1b932c:\n"
565 " ldr.w r0, [r6, #0xb0]\n"
566 " cmp r0, #0\n"
567 " mov r0, r4\n"
568 " beq loc_fc1b933c\n"
569 " bl sub_fc3701b6\n"
570 " b loc_fc1b9354\n"
571 "loc_fc1b933c:\n"
572 " bl sub_fc36fa76_my\n"
573 " b loc_fc1b9354\n"
574 "loc_fc1b9342:\n"
575 " movs r1, #1\n"
576 " mov r2, r4\n"
577 " mov r0, r5\n"
578 " bl sub_fc12c530\n"
579 " mov r1, r5\n"
580 " mov r0, r4\n"
581 " bl sub_fc1ba400\n"
582 "loc_fc1b9354:\n"
583 " movs r0, #0\n"
584 " str r0, [r6, #0x28]\n"
585 " pop {r2, r3, r4, r5, r6, pc}\n"
586
587 ".ltorg\n"
588 );
589 }
590
591
592
593 void __attribute__((naked,noinline)) sub_fc36fa76_my() {
594 asm volatile (
595 " push.w {r2, r3, r4, r5, r6, r7, r8, sb, sl, lr}\n"
596 " ldr r7, =0x00037518\n"
597 " mov r4, r0\n"
598 " ldr.w r0, [r7, #0x164]\n"
599 " cbz r0, loc_fc36fa92\n"
600 " ldrh.w r0, [r7, #0x196]\n"
601 " cmp r0, #3\n"
602 " beq loc_fc36fa92\n"
603 " ldr r0, [r4, #8]\n"
604 " cmp r0, #1\n"
605 " bhi loc_fc36fa9c\n"
606 "loc_fc36fa92:\n"
607 " mov r0, r4\n"
608 " bl sub_fc36f776\n"
609 " bl sub_fc1b9896\n"
610 "loc_fc36fa9c:\n"
611 " ldr.w r0, [r7, #0x9c]\n"
612 " cbnz r0, loc_fc36fab8\n"
613 " ldrh.w r0, [r7, #0x196]\n"
614 " cmp r0, #3\n"
615 " beq loc_fc36fab0\n"
616 " ldr r0, [r4, #8]\n"
617 " cmp r0, #1\n"
618 " bhi loc_fc36fab8\n"
619 "loc_fc36fab0:\n"
620 " bl sub_fc12e6fe\n"
621 " bl sub_fc1b94d6\n"
622 "loc_fc36fab8:\n"
623 " movs r2, #4\n"
624 " movw r0, #0x12f\n"
625 " add r1, sp, #4\n"
626 " bl _GetPropertyCase\n"
627 " lsls r0, r0, #0x1f\n"
628 " beq loc_fc36fad4\n"
629 " movs r0, #0\n"
630 " movw r2, #0x18c\n"
631 " ldr r1, =0xfc36fe20\n"
632 " blx sub_fc29b444\n"
633 "loc_fc36fad4:\n"
634 " ldr r0, [sp, #4]\n"
635 " ubfx r0, r0, #8, #8\n"
636 " cmp r0, #6\n"
637 " bne loc_fc36fae4\n"
638 " ldr r0, =0xfc36fa4f\n"
639 " movs r1, #0\n"
640 " b loc_fc36fae8\n"
641 "loc_fc36fae4:\n"
642 " ldr r0, =0xfc36f49f\n"
643 " mov r1, r4\n"
644 "loc_fc36fae8:\n"
645 " bl sub_fc14f7ac\n"
646 " mov r0, r4\n"
647 " bl sub_fc36f88c\n"
648 " ldr r1, =0x00023450\n"
649 " movs r2, #4\n"
650 " movs r0, #0x8a\n"
651 " bl _GetPropertyCase\n"
652 " lsls r0, r0, #0x1f\n"
653 " beq loc_fc36fb0c\n"
654 " movs r0, #0\n"
655 " movw r2, #0x19b\n"
656 " ldr r1, =0xfc36fe20\n"
657 " blx sub_fc29b444\n"
658 "loc_fc36fb0c:\n"
659 " bl sub_fc130a30\n"
660 " bl sub_fc36f928\n"
661 " movs r1, #0\n"
662 " mov r0, r4\n"
663 " bl sub_fc36fdf2\n"
664 " mov r6, r0\n"
665 " bl wait_until_remote_button_is_released\n"
666 #ifdef CAPT_SEQ_DEBUG
667 " bl log_remote_hook\n"
668 #endif
669 " ldr r0, [sp, #4]\n"
670 " ubfx r0, r0, #8, #8\n"
671 " cmp r0, #6\n"
672 " bne loc_fc36fb2c\n"
673 " ldr r2, =0xfc36f607\n"
674 " b loc_fc36fb2e\n"
675 "loc_fc36fb2c:\n"
676 " ldr r2, =0xfc36f68f\n"
677 "loc_fc36fb2e:\n"
678 " ldrh r0, [r4, #0x18]\n"
679 " ldr r5, =0x00023450\n"
680 " cbz r0, loc_fc36fb3c\n"
681 " cmp r0, #1\n"
682 " beq loc_fc36fb52\n"
683 " cmp r0, #4\n"
684 " bne loc_fc36fbb6\n"
685 "loc_fc36fb3c:\n"
686 " str r6, [sp]\n"
687 " mov r3, r2\n"
688 " ldr r1, [r4, #0x54]\n"
689 " mov r0, r4\n"
690 " ldr r2, [r5]\n"
691 " bl sub_fc36f36a\n"
692 " mov r5, r0\n"
693 " bl sub_fc14d328\n"
694 " b loc_fc36fbc4\n"
695 "loc_fc36fb52:\n"
696 " str r6, [sp]\n"
697 " mov r3, r2\n"
698 " ldr r1, [r4, #0x54]\n"
699 " mov r8, r5\n"
700 " ldr r2, [r5]\n"
701 " mov r0, r4\n"
702 " bl sub_fc36f3b6\n"
703 " movs r1, #0\n"
704 " mov r5, r0\n"
705 " movs r0, #0x45\n"
706 " bl sub_fc25cc38\n"
707 " lsls r0, r5, #0x1f\n"
708 " bne loc_fc36fbc4\n"
709 " ldr.w r0, [r7, #0xf8]\n"
710 " cbz r0, loc_fc36fb86\n"
711 " ldr r1, [r4, #8]\n"
712 " ldr r2, =0x001caa04\n"
713 " ldr r0, [r4, #0x54]\n"
714 " add.w r1, r2, r1, lsl #2\n"
715 " str r0, [r1, #-0x4]\n"
716 " b loc_fc36fbb0\n"
717 "loc_fc36fb86:\n"
718 " ldr r0, =0xfc36fa4f\n"
719 " movs r1, #0\n"
720 " bl sub_fc14f7ac\n"
721 " movs r1, #1\n"
722 " mov r0, r4\n"
723 " bl sub_fc36fdf2\n"
724 " mov r6, r0\n"
725 " ldr.w r0, [r8]\n"
726 " mov r5, r8\n"
727 " bl sub_fc36f718\n"
728 " ldr r1, [r4, #0x54]\n"
729 " mov r3, r6\n"
730 " ldr r2, [r5]\n"
731 " mov r0, r4\n"
732 " bl sub_fc36f406\n"
733 " mov r5, r0\n"
734 "loc_fc36fbb0:\n"
735 " bl sub_fc36f314\n"
736 " b loc_fc36fbc4\n"
737 "loc_fc36fbb6:\n"
738 " movs r0, #0\n"
739 " movw r2, #0x1d5\n"
740 " ldr r1, =0xfc36fe20\n"
741 " blx sub_fc29b444\n"
742 " movs r5, #0x1d\n"
743 "loc_fc36fbc4:\n"
744 " bl sub_fc36f92c\n"
745 " ldr.w r8, =0xfc36fa4f\n"
746 " lsls r0, r5, #0x1f\n"
747 " bne loc_fc36fc20\n"
748 " ldr.w r0, [r7, #0x100]\n"
749 " cbnz r0, loc_fc36fbec\n"
750 " mov r0, r4\n"
751 " bl sub_fc1ba892\n"
752 " lsls r0, r0, #0x1f\n"
753 " beq loc_fc36fbec\n"
754 " movs r0, #0\n"
755 " movw r2, #0x1ef\n"
756 " ldr r1, =0xfc36fe20\n"
757 " blx sub_fc29b444\n"
758 "loc_fc36fbec:\n"
759 #ifdef CAPT_SEQ_DEBUG
760 " BL log_raw_hook\n"
761 #endif
762 " BL capt_seq_hook_raw_here\n"
763 " mov r0, r4\n"
764 " bl sub_fc36f918\n"
765 " mov r0, r4\n"
766 " bl sub_fc36f8ec\n"
767 " cmp r6, r8\n"
768 " beq loc_fc36fc20\n"
769 " bl sub_fc1b9c26\n"
770 " movs r1, #4\n"
771 " movw sb, #0x1fc\n"
772 " ldr r3, =0xfc36fe20\n"
773 " movw r2, #0x3a98\n"
774 " str.w sb, [sp]\n"
775 " bl sub_fc2b72b8\n"
776 " cbz r0, loc_fc36fc20\n"
777 " movs r0, #0\n"
778 " mov r2, sb\n"
779 " ldr r1, =0xfc36fe20\n"
780 " blx sub_fc29b444\n"
781 "loc_fc36fc20:\n"
782 " movs r1, #1\n"
783 " mov r2, r4\n"
784 " mov r0, r5\n"
785 " bl sub_fc12c530\n"
786 " ldr r0, [r7, #0x28]\n"
787 " cmp r0, #0\n"
788 " mov r0, r8\n"
789 " beq loc_fc36fc46\n"
790 " cmp r6, r0\n"
791 " beq loc_fc36fc3a\n"
792 " movs r1, #1\n"
793 " b loc_fc36fc3c\n"
794 "loc_fc36fc3a:\n"
795 " movs r1, #0\n"
796 "loc_fc36fc3c:\n"
797 " mov r2, r5\n"
798 " mov r0, r4\n"
799 " bl sub_fc1ba288\n"
800 " b loc_fc36fc58\n"
801 "loc_fc36fc46:\n"
802 " cmp r6, r0\n"
803 " beq loc_fc36fc4e\n"
804 " movs r1, #1\n"
805 " b loc_fc36fc50\n"
806 "loc_fc36fc4e:\n"
807 " movs r1, #0\n"
808 "loc_fc36fc50:\n"
809 " mov r2, r5\n"
810 " mov r0, r4\n"
811 " bl sub_fc1ba242\n"
812 "loc_fc36fc58:\n"
813 " mov r0, r5\n"
814 " pop.w {r2, r3, r4, r5, r6, r7, r8, sb, sl, pc}\n"
815 ".ltorg\n"
816 );
817 }
818
819
820
821
822 #if 0
823
824
825
826 void __attribute__((naked,noinline)) exp_drv_task() {
827 asm volatile (
828 " push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}\n"
829 " sub sp, #0x2c\n"
830 " ldr.w sb, =0x0000d6d4\n"
831 " ldr.w sl, =0xfffff400\n"
832 " movs r0, #0\n"
833 " ldr r6, =0x0005a258\n"
834 " add.w r8, sp, #0x1c\n"
835 " movw fp, #0xbb8\n"
836 " str r0, [sp, #0xc]\n"
837 "loc_fc2769ac:\n"
838 " ldr.w r0, [sb, #0x20]\n"
839 " movs r2, #0\n"
840 " add r1, sp, #0x28\n"
841 " mov r4, sb\n"
842 " blx sub_fc29b34c\n"
843 " ldr r0, [sp, #0xc]\n"
844 " cmp r0, #1\n"
845 " bne loc_fc2769e0\n"
846 " ldr r0, [sp, #0x28]\n"
847 " ldr r0, [r0]\n"
848 " cmp r0, #0x14\n"
849 "loc_fc2769c6:\n"
850 " beq loc_fc276ac6\n"
851 " cmp r0, #0x15\n"
852 " beq loc_fc2769c6\n"
853 " cmp r0, #0x16\n"
854 " beq loc_fc2769c6\n"
855 " cmp r0, #0x17\n"
856 " beq loc_fc276ad2\n"
857 " cmp r0, #0x2a\n"
858 " beq loc_fc276a7c\n"
859 " movs r0, #0\n"
860 " add r1, sp, #0xc\n"
861 " bl sub_fc27694c\n"
862 "loc_fc2769e0:\n"
863 " ldr r0, [sp, #0x28]\n"
864 " ldr r1, [r0]\n"
865 " cmp r1, #0x30\n"
866 " bne loc_fc2769fe\n"
867 " bl sub_fc277736\n"
868 " ldr.w r0, [sb, #0x1c]\n"
869 " movs r1, #1\n"
870 " blx sub_fc29b32c\n"
871 " blx sub_fc29b364\n"
872 " add sp, #0x2c\n"
873
874 " ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}\n"
875 "loc_fc2769fe:\n"
876 " cmp r1, #0x2f\n"
877 " bne loc_fc276a10\n"
878 " add.w r0, r0, #0xa8\n"
879 " ldrd r2, r1, [r0]\n"
880 " mov r0, r1\n"
881 " blx r2\n"
882 " b loc_fc276e1e\n"
883 "loc_fc276a10:\n"
884 " cmp r1, #0x28\n"
885 " bne loc_fc276a46\n"
886 " ldr r0, [r4, #0x1c]\n"
887 " movs r1, #0x80\n"
888 " blx sub_fc29b36c\n"
889 " ldr r0, =0xfc2728c1\n"
890 " movs r1, #0x80\n"
891 " bl sub_fc129792\n"
892 " ldr r0, [r4, #0x1c]\n"
893 " movs r1, #0x80\n"
894 " mov r2, fp\n"
895 " blx sub_fc29b29c\n"
896 " lsls r0, r0, #0x1f\n"
897 " beq loc_fc276a38\n"
898 " movw r2, #0x1732\n"
899 " b loc_fc276ac4\n"
900 "loc_fc276a38:\n"
901 " ldr r1, [sp, #0x28]\n"
902 " add.w r1, r1, #0xa8\n"
903 " ldrd r1, r0, [r1]\n"
904 " blx r1\n"
905 " b loc_fc276e1e\n"
906 "loc_fc276a46:\n"
907 " cmp r1, #0x29\n"
908 " bne loc_fc276a78\n"
909 " add r1, sp, #0xc\n"
910 " bl sub_fc27694c\n"
911 " movw r5, #0x100\n"
912 " ldr r0, [r4, #0x1c]\n"
913 " mov r1, r5\n"
914 " blx sub_fc29b36c\n"
915 " ldr r0, =0xfc2728cb\n"
916 " mov r1, r5\n"
917 " bl sub_fc12a112\n"
918 " ldr r0, [r4, #0x1c]\n"
919 " mov r2, fp\n"
920 " mov r1, r5\n"
921 " blx sub_fc29b29c\n"
922 " lsls r0, r0, #0x1f\n"
923 " beq loc_fc276a38\n"
924 " movw r2, #0x173c\n"
925 " b loc_fc276ac4\n"
926 "loc_fc276a78:\n"
927 " cmp r1, #0x2a\n"
928 " bne loc_fc276a86\n"
929 "loc_fc276a7c:\n"
930 " ldr r0, [sp, #0x28]\n"
931 " add r1, sp, #0xc\n"
932 " bl sub_fc27694c\n"
933 " b loc_fc276a38\n"
934 "loc_fc276a86:\n"
935 " cmp r1, #0x2d\n"
936 " bne loc_fc276a98\n"
937 " bl sub_fc149b16\n"
938 " bl sub_fc14a49c\n"
939 " bl sub_fc14a182\n"
940 " b loc_fc276a38\n"
941 "loc_fc276a98:\n"
942 " cmp r1, #0x2e\n"
943 " bne loc_fc276ad2\n"
944 " ldr r0, [r4, #0x1c]\n"
945 " movs r1, #4\n"
946 " blx sub_fc29b36c\n"
947 " ldr r1, =0xfc2728df\n"
948 " movs r2, #4\n"
949 " mov r0, sl\n"
950 " bl sub_fc272c2c\n"
951 " bl sub_fc14987a\n"
952 " ldr r0, [r4, #0x1c]\n"
953 " movs r1, #4\n"
954 " mov r2, fp\n"
955 " blx sub_fc29b404\n"
956 " lsls r0, r0, #0x1f\n"
957 " beq loc_fc276a38\n"
958 " movw r2, #0x1774\n"
959 "loc_fc276ac4:\n"
960 " b loc_fc276ac8\n"
961 "loc_fc276ac6:\n"
962 " b loc_fc276ad2\n"
963 "loc_fc276ac8:\n"
964 " ldr r1, =0xfc2730b0\n"
965 " movs r0, #0\n"
966 " blx sub_fc29b444\n"
967 " b loc_fc276a38\n"
968 "loc_fc276ad2:\n"
969 " ldr r0, [sp, #0x28]\n"
970 " movs r5, #1\n"
971 " ldr r1, [r0]\n"
972 " cmp r1, #0x12\n"
973 " beq loc_fc276ae0\n"
974 " cmp r1, #0x13\n"
975 " bne loc_fc276b1e\n"
976 "loc_fc276ae0:\n"
977 " ldr.w r1, [r0, #0x94]\n"
978 " mov r4, r8\n"
979 " add.w r1, r1, r1, lsl #1\n"
980 " add.w r1, r0, r1, lsl #2\n"
981 " subs r1, #8\n"
982 " ldm r1!, {r2, r3, r7}\n"
983 " stm r4!, {r2, r3, r7}\n"
984 " bl sub_fc275288\n"
985 " ldr r0, [sp, #0x28]\n"
986 " add.w r0, r0, #0x94\n"
987 " ldrd r3, r2, [r0, #0x14]\n"
988 " ldr r1, [r0]\n"
989 " sub.w r0, r0, #0x90\n"
990 " blx r3\n"
991 " ldr r0, [sp, #0x28]\n"
992 " bl sub_fc27791e\n"
993 " ldr r0, [sp, #0x28]\n"
994 " add.w r0, r0, #0x94\n"
995 " ldr r1, [r0]\n"
996 " ldrd r3, r2, [r0, #0x1c]\n"
997 " b loc_fc276d40\n"
998 "loc_fc276b1e:\n"
999 " cmp r1, #0x14\n"
1000 " beq loc_fc276b2e\n"
1001 " cmp r1, #0x15\n"
1002 " beq loc_fc276b2e\n"
1003 " cmp r1, #0x16\n"
1004 " beq loc_fc276b2e\n"
1005 " cmp r1, #0x17\n"
1006 " bne loc_fc276ba0\n"
1007 "loc_fc276b2e:\n"
1008 " add r3, sp, #0xc\n"
1009 " mov r2, sp\n"
1010 " add r1, sp, #0x1c\n"
1011 " bl sub_fc27547e\n"
1012 " cmp r0, #1\n"
1013 " mov r4, r0\n"
1014 " beq loc_fc276b42\n"
1015 " cmp r4, #5\n"
1016 " bne loc_fc276b58\n"
1017 "loc_fc276b42:\n"
1018 " ldr r0, [sp, #0x28]\n"
1019 " mov r2, r4\n"
1020 " add.w r0, r0, #0x94\n"
1021 " ldrd r7, r3, [r0, #0x14]\n"
1022 " ldr r1, [r0]\n"
1023 " sub.w r0, r0, #0x90\n"
1024 " blx r7\n"
1025 " b loc_fc276b7e\n"
1026 "loc_fc276b58:\n"
1027 " cmp r4, #2\n"
1028 " beq loc_fc276b60\n"
1029 " cmp r4, #6\n"
1030 " bne loc_fc276b8a\n"
1031 "loc_fc276b60:\n"
1032 " ldr r0, [sp, #0x28]\n"
1033 " mov r2, r4\n"
1034 " add.w r0, r0, #0x94\n"
1035 " ldrd r7, r3, [r0, #0x14]\n"
1036 " ldr r1, [r0]\n"
1037 " sub.w r0, r0, #0x90\n"
1038 " blx r7\n"
1039 " ldr r0, [sp, #0x28]\n"
1040 " add r1, sp, #0x1c\n"
1041 " mov r2, sp\n"
1042 " bl sub_fc2766f8\n"
1043 "loc_fc276b7e:\n"
1044 " ldr r2, [sp, #0xc]\n"
1045 " mov r1, r4\n"
1046 " ldr r0, [sp, #0x28]\n"
1047 " bl sub_fc276904\n"
1048 " b loc_fc276d46\n"
1049 "loc_fc276b8a:\n"
1050 " ldr r0, [sp, #0x28]\n"
1051 " mov r2, r4\n"
1052 " add.w r0, r0, #0x94\n"
1053 " ldrd r7, r3, [r0, #0x14]\n"
1054 " ldr r1, [r0]\n"
1055 " sub.w r0, r0, #0x90\n"
1056 " blx r7\n"
1057 " b loc_fc276d46\n"
1058 "loc_fc276ba0:\n"
1059 " cmp r1, #0x24\n"
1060 " beq loc_fc276ba8\n"
1061 " cmp r1, #0x25\n"
1062 " bne loc_fc276bda\n"
1063 "loc_fc276ba8:\n"
1064 " ldr.w r1, [r0, #0x94]\n"
1065 " mov r4, r8\n"
1066 " add.w r1, r1, r1, lsl #1\n"
1067 " add.w r1, r0, r1, lsl #2\n"
1068 " subs r1, #8\n"
1069 " ldm r1!, {r2, r3, r7}\n"
1070 " stm r4!, {r2, r3, r7}\n"
1071 " bl sub_fc274402\n"
1072 " ldr r0, [sp, #0x28]\n"
1073 " add.w r0, r0, #0x94\n"
1074 " ldrd r3, r2, [r0, #0x14]\n"
1075 " ldr r1, [r0]\n"
1076 " sub.w r0, r0, #0x90\n"
1077 " blx r3\n"
1078 " ldr r0, [sp, #0x28]\n"
1079 " bl sub_fc2747dc\n"
1080 " b loc_fc276d46\n"
1081 "loc_fc276bda:\n"
1082 " adds r1, r0, #4\n"
1083 " mov r4, r8\n"
1084 " ldm r1!, {r2, r3, r7}\n"
1085 " stm r4!, {r2, r3, r7}\n"
1086 " ldr r1, [r0]\n"
1087 " cmp r1, #0x28\n"
1088 " bhs loc_fc276c18\n"
1089 " tbb [pc, r1]\n"
1090 "branchtable_fc276bec:\n"
1091 " .byte((loc_fc276c14 - branchtable_fc276bec) / 2)\n"
1092 " .byte((loc_fc276c14 - branchtable_fc276bec) / 2)\n"
1093 " .byte((loc_fc276c1a - branchtable_fc276bec) / 2)\n"
1094 " .byte((loc_fc276c20 - branchtable_fc276bec) / 2)\n"
1095 " .byte((loc_fc276c20 - branchtable_fc276bec) / 2)\n"
1096 " .byte((loc_fc276c20 - branchtable_fc276bec) / 2)\n"
1097 " .byte((loc_fc276c14 - branchtable_fc276bec) / 2)\n"
1098 " .byte((loc_fc276c1a - branchtable_fc276bec) / 2)\n"
1099 " .byte((loc_fc276c20 - branchtable_fc276bec) / 2)\n"
1100 " .byte((loc_fc276c20 - branchtable_fc276bec) / 2)\n"
1101 " .byte((loc_fc276c32 - branchtable_fc276bec) / 2)\n"
1102 " .byte((loc_fc276c32 - branchtable_fc276bec) / 2)\n"
1103 " .byte((loc_fc276d24 - branchtable_fc276bec) / 2)\n"
1104 " .byte((loc_fc276d2a - branchtable_fc276bec) / 2)\n"
1105 " .byte((loc_fc276d2a - branchtable_fc276bec) / 2)\n"
1106 " .byte((loc_fc276d2a - branchtable_fc276bec) / 2)\n"
1107 " .byte((loc_fc276d2a - branchtable_fc276bec) / 2)\n"
1108 " .byte((loc_fc276d30 - branchtable_fc276bec) / 2)\n"
1109 " .byte((loc_fc276d34 - branchtable_fc276bec) / 2)\n"
1110 " .byte((loc_fc276d34 - branchtable_fc276bec) / 2)\n"
1111 " .byte((loc_fc276d34 - branchtable_fc276bec) / 2)\n"
1112 " .byte((loc_fc276d34 - branchtable_fc276bec) / 2)\n"
1113 " .byte((loc_fc276d34 - branchtable_fc276bec) / 2)\n"
1114 " .byte((loc_fc276d34 - branchtable_fc276bec) / 2)\n"
1115 " .byte((loc_fc276c26 - branchtable_fc276bec) / 2)\n"
1116 " .byte((loc_fc276c2c - branchtable_fc276bec) / 2)\n"
1117 " .byte((loc_fc276c2c - branchtable_fc276bec) / 2)\n"
1118 " .byte((loc_fc276c2c - branchtable_fc276bec) / 2)\n"
1119 " .byte((loc_fc276c3a - branchtable_fc276bec) / 2)\n"
1120 " .byte((loc_fc276c3a - branchtable_fc276bec) / 2)\n"
1121 " .byte((loc_fc276c40 - branchtable_fc276bec) / 2)\n"
1122 " .byte((loc_fc276c94 - branchtable_fc276bec) / 2)\n"
1123 " .byte((loc_fc276cbe - branchtable_fc276bec) / 2)\n"
1124 " .byte((loc_fc276ce8 - branchtable_fc276bec) / 2)\n"
1125 " .byte((loc_fc276d12 - branchtable_fc276bec) / 2)\n"
1126 " .byte((loc_fc276d12 - branchtable_fc276bec) / 2)\n"
1127 " .byte((loc_fc276d34 - branchtable_fc276bec) / 2)\n"
1128 " .byte((loc_fc276d34 - branchtable_fc276bec) / 2)\n"
1129 " .byte((loc_fc276d18 - branchtable_fc276bec) / 2)\n"
1130 " .byte((loc_fc276d1e - branchtable_fc276bec) / 2)\n"
1131 ".align 1\n"
1132 "loc_fc276c14:\n"
1133 " bl sub_fc272e48\n"
1134 "loc_fc276c18:\n"
1135 " b loc_fc276d34\n"
1136 "loc_fc276c1a:\n"
1137 " bl sub_fc2730d0\n"
1138 " b loc_fc276d34\n"
1139 "loc_fc276c20:\n"
1140 " bl sub_fc2732ca\n"
1141 " b loc_fc276d34\n"
1142 "loc_fc276c26:\n"
1143 " bl sub_fc27356a\n"
1144 " b loc_fc276d34\n"
1145 "loc_fc276c2c:\n"
1146 " bl sub_fc27371a\n"
1147 " b loc_fc276d34\n"
1148 "loc_fc276c32:\n"
1149
1150 " bl sub_fc273b48_my\n"
1151 " movs r5, #0\n"
1152 " b loc_fc276d34\n"
1153 "loc_fc276c3a:\n"
1154 " bl sub_fc273c42\n"
1155 " b loc_fc276d34\n"
1156 "loc_fc276c40:\n"
1157 " ldrh r1, [r0, #4]\n"
1158 " strh.w r1, [sp, #0x1c]\n"
1159 " ldrh r1, [r6, #2]\n"
1160 " strh.w r1, [sp, #0x1e]\n"
1161 " ldrh r1, [r6, #4]\n"
1162 " strh.w r1, [sp, #0x20]\n"
1163 " ldrh r1, [r6, #6]\n"
1164 " strh.w r1, [sp, #0x22]\n"
1165 " ldrh r1, [r0, #0xc]\n"
1166 " strh.w r1, [sp, #0x24]\n"
1167 " ldrh r1, [r6, #0xa]\n"
1168 " strh.w r1, [sp, #0x26]\n"
1169 " bl sub_fc27414e\n"
1170 " b loc_fc276d34\n"
1171 ".ltorg\n"
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188 "loc_fc276c94:\n"
1189 " ldrh r1, [r0, #4]\n"
1190 " strh.w r1, [sp, #0x1c]\n"
1191 " strh.w r1, [sp, #0x1c]\n"
1192 " ldrh r1, [r6, #2]\n"
1193 " strh.w r1, [sp, #0x1e]\n"
1194 " ldrh r1, [r6, #4]\n"
1195 " strh.w r1, [sp, #0x20]\n"
1196 " ldrh r1, [r6, #6]\n"
1197 " strh.w r1, [sp, #0x22]\n"
1198 " ldrh r1, [r6, #8]\n"
1199 " strh.w r1, [sp, #0x24]\n"
1200 " ldrh r1, [r6, #0xa]\n"
1201 " strh.w r1, [sp, #0x26]\n"
1202 " bl sub_fc2777b2\n"
1203 " b loc_fc276d34\n"
1204 "loc_fc276cbe:\n"
1205 " ldrh r1, [r6]\n"
1206 " strh.w r1, [sp, #0x1c]\n"
1207 " ldrh r1, [r0, #6]\n"
1208 " strh.w r1, [sp, #0x1e]\n"
1209 " ldrh r1, [r6, #4]\n"
1210 " strh.w r1, [sp, #0x20]\n"
1211 " ldrh r1, [r6, #6]\n"
1212 " strh.w r1, [sp, #0x22]\n"
1213 " ldrh r1, [r6, #8]\n"
1214 " strh.w r1, [sp, #0x24]\n"
1215 " ldrh r1, [r6, #0xa]\n"
1216 " strh.w r1, [sp, #0x26]\n"
1217 " bl sub_fc277838\n"
1218 " b loc_fc276d34\n"
1219 "loc_fc276ce8:\n"
1220 " ldrh r1, [r6]\n"
1221 " strh.w r1, [sp, #0x1c]\n"
1222 " ldrh r1, [r6, #2]\n"
1223 " strh.w r1, [sp, #0x1e]\n"
1224 " ldrh r1, [r6, #4]\n"
1225 " strh.w r1, [sp, #0x20]\n"
1226 " ldrh r1, [r6, #6]\n"
1227 " strh.w r1, [sp, #0x22]\n"
1228 " ldrh r1, [r0, #0xc]\n"
1229 " strh.w r1, [sp, #0x24]\n"
1230 " ldrh r1, [r6, #0xa]\n"
1231 " strh.w r1, [sp, #0x26]\n"
1232 " bl sub_fc2778ae\n"
1233 " b loc_fc276d34\n"
1234 "loc_fc276d12:\n"
1235 " bl sub_fc27422c\n"
1236 " b loc_fc276d34\n"
1237 "loc_fc276d18:\n"
1238 " bl sub_fc2748a4\n"
1239 " b loc_fc276d34\n"
1240 "loc_fc276d1e:\n"
1241 " bl sub_fc274c82\n"
1242 " b loc_fc276d34\n"
1243 "loc_fc276d24:\n"
1244 " bl sub_fc274e60\n"
1245 " b loc_fc276d34\n"
1246 "loc_fc276d2a:\n"
1247 " bl sub_fc274fda\n"
1248 " b loc_fc276d34\n"
1249 "loc_fc276d30:\n"
1250 " bl sub_fc2750f6\n"
1251 "loc_fc276d34:\n"
1252 " ldr r0, [sp, #0x28]\n"
1253 " add.w r0, r0, #0x94\n"
1254 " ldrd r3, r2, [r0, #0x14]\n"
1255 " ldr r1, [r0]\n"
1256 "loc_fc276d40:\n"
1257 " sub.w r0, r0, #0x90\n"
1258 " blx r3\n"
1259 "loc_fc276d46:\n"
1260 " ldr r0, [sp, #0x28]\n"
1261 " ldr r0, [r0]\n"
1262 " cmp r0, #0x10\n"
1263 " beq loc_fc276d6a\n"
1264 " bgt loc_fc276d5e\n"
1265 " cmp r0, #1\n"
1266 " beq loc_fc276d6a\n"
1267 " cmp r0, #4\n"
1268 " beq loc_fc276d6a\n"
1269 " cmp r0, #0xe\n"
1270 " bne loc_fc276d9c\n"
1271 " b loc_fc276d6a\n"
1272 "loc_fc276d5e:\n"
1273 " cmp r0, #0x13\n"
1274 " beq loc_fc276d6a\n"
1275 " cmp r0, #0x17\n"
1276 " beq loc_fc276d6a\n"
1277 " cmp r0, #0x1a\n"
1278 " bne loc_fc276d9c\n"
1279 "loc_fc276d6a:\n"
1280 " ldrsh.w r0, [r6]\n"
1281 " mov r2, sl\n"
1282 " cmp r0, sl\n"
1283 " beq loc_fc276d7c\n"
1284 " ldrsh.w r1, [r6, #8]\n"
1285 " cmp r1, r2\n"
1286 " bne loc_fc276d94\n"
1287 "loc_fc276d7c:\n"
1288 " add r0, sp, #0x10\n"
1289 " bl sub_fc2d6990\n"
1290 " ldrh.w r0, [sp, #0x10]\n"
1291 " strh.w r0, [sp, #0x1c]\n"
1292 " ldrh.w r0, [sp, #0x18]\n"
1293 " strh.w r0, [sp, #0x24]\n"
1294 " b loc_fc276d9c\n"
1295 "loc_fc276d94:\n"
1296 " strh.w r0, [sp, #0x1c]\n"
1297 " strh.w r1, [sp, #0x24]\n"
1298 "loc_fc276d9c:\n"
1299 " cmp r5, #1\n"
1300 " ldr r0, [sp, #0x28]\n"
1301 " bne loc_fc276dd4\n"
1302 " movs r2, #0xc\n"
1303 " ldr.w r1, [r0, #0x94]\n"
1304 " add.w r1, r1, r1, lsl #1\n"
1305 " add.w r4, r0, r1, lsl #2\n"
1306 " ldr r0, =0x0005a258\n"
1307 " subs r4, #8\n"
1308 " add r1, sp, #0x1c\n"
1309 " blx sub_fc29b45c\n"
1310 " ldr r0, =0x0005a258\n"
1311 " movs r2, #0xc\n"
1312 " add r1, sp, #0x1c\n"
1313 " adds r0, #0xc\n"
1314 " blx sub_fc29b45c\n"
1315 " ldr r0, =0x0005a258\n"
1316 " movs r2, #0xc\n"
1317 " mov r1, r4\n"
1318 " adds r0, #0x18\n"
1319 " blx sub_fc29b45c\n"
1320 " b loc_fc276e1e\n"
1321 "loc_fc276dd4:\n"
1322 " ldr r0, [r0]\n"
1323 " mov.w r3, #1\n"
1324 " cmp r0, #0xb\n"
1325 " bne loc_fc276dfe\n"
1326 " movs r2, #0\n"
1327 " mov r1, r3\n"
1328 " strd r2, r3, [sp]\n"
1329 " movs r0, #0\n"
1330 " mov r2, r3\n"
1331 " bl sub_fc272ca8\n"
1332 " movs r3, #1\n"
1333 " movs r2, #0\n"
1334 " mov r1, r3\n"
1335 " movs r0, #0\n"
1336 " strd r2, r3, [sp]\n"
1337 " mov r2, r3\n"
1338 " b loc_fc276e1a\n"
1339 "loc_fc276dfe:\n"
1340 " movs r2, #1\n"
1341 " strd r2, r3, [sp]\n"
1342 " mov r3, r2\n"
1343 " mov r1, r2\n"
1344 " mov r0, r2\n"
1345 " bl sub_fc272ca8\n"
1346 " movs r3, #1\n"
1347 " str r3, [sp]\n"
1348 " mov r2, r3\n"
1349 " mov r1, r3\n"
1350 " mov r0, r3\n"
1351 " str r3, [sp, #4]\n"
1352 "loc_fc276e1a:\n"
1353 " bl sub_fc272dce\n"
1354 "loc_fc276e1e:\n"
1355 " ldr r0, [sp, #0x28]\n"
1356 " bl sub_fc277736\n"
1357 " b loc_fc2769ac\n"
1358 ".ltorg\n"
1359 );
1360 }
1361
1362
1363
1364 void __attribute__((naked,noinline)) sub_fc273b48_my() {
1365 asm volatile (
1366 " push.w {r4, r5, r6, r7, r8, lr}\n"
1367 " ldr r7, =0x0000d6d4\n"
1368 " movs r1, #0x3e\n"
1369 " mov r4, r0\n"
1370 " ldr r0, [r7, #0x1c]\n"
1371 " blx sub_fc29b36c\n"
1372 " movs r2, #0\n"
1373 " ldrsh.w r0, [r4, #4]\n"
1374 " movs r3, #1\n"
1375 " mov r1, r2\n"
1376 " bl sub_fc272920\n"
1377 " mov r6, r0\n"
1378 " ldrsh.w r0, [r4, #6]\n"
1379 " bl sub_fc272abe\n"
1380 " ldrsh.w r0, [r4, #8]\n"
1381 " bl sub_fc272b02\n"
1382 " ldrsh.w r0, [r4, #0xa]\n"
1383 " bl sub_fc272b46\n"
1384 " ldrsh.w r0, [r4, #0xc]\n"
1385 " movs r1, #0\n"
1386 " bl sub_fc272b8a\n"
1387 " mov r5, r0\n"
1388 " ldr r0, [r4]\n"
1389 " ldr.w r8, =0x0005a270\n"
1390 " cmp r0, #0xb\n"
1391 " bne loc_fc273b9c\n"
1392 " movs r6, #0\n"
1393 " mov r5, r6\n"
1394 " b loc_fc273bb4\n"
1395 "loc_fc273b9c:\n"
1396 " cmp r6, #1\n"
1397 " bne loc_fc273bb4\n"
1398 " ldrsh.w r0, [r4, #4]\n"
1399 " movs r2, #2\n"
1400 " ldr r1, =0xfc2728b7\n"
1401 " bl sub_fc129982\n"
1402 " strh r0, [r4, #4]\n"
1403 " movs r0, #0\n"
1404 " str r0, [r7, #0x28]\n"
1405 " b loc_fc273bba\n"
1406 "loc_fc273bb4:\n"
1407 " ldrh.w r0, [r8]\n"
1408 " strh r0, [r4, #4]\n"
1409 "loc_fc273bba:\n"
1410 " cmp r5, #1\n"
1411 " bne loc_fc273bcc\n"
1412 " ldrsh.w r0, [r4, #0xc]\n"
1413 " movs r2, #0x20\n"
1414 " ldr r1, =0xfc27290b\n"
1415 " bl sub_fc277788\n"
1416 " b loc_fc273bd0\n"
1417 "loc_fc273bcc:\n"
1418 " ldrh.w r0, [r8, #8]\n"
1419 "loc_fc273bd0:\n"
1420 " strh r0, [r4, #0xc]\n"
1421 " ldrsh.w r0, [r4, #6]\n"
1422 " bl sub_fc1498d4_my\n"
1423 " ldr pc, =0xfc273bdb\n"
1424 ".ltorg\n"
1425 );
1426 }
1427
1428
1429
1430 void __attribute__((naked,noinline)) sub_fc1498d4_my() {
1431 asm volatile (
1432 " push {r4, r5, r6, lr}\n"
1433 " ldr r5, =0x0000d2b4\n"
1434 " mov r4, r0\n"
1435 " ldr r0, [r5, #4]\n"
1436 " cmp r0, #1\n"
1437 " beq loc_fc1498ec\n"
1438 " movs r0, #0\n"
1439 " movw r2, #0x168\n"
1440 " ldr r1, =0xfc149980\n"
1441 " blx sub_fc29b444\n"
1442 "loc_fc1498ec:\n"
1443 " ldr r0, =0xfffff400\n"
1444 " cmp r4, r0\n"
1445 " bne loc_fc1498f6\n"
1446 " ldrsh.w r4, [r5, #2]\n"
1447 "loc_fc1498f6:\n"
1448 " strh r4, [r5, #2]\n"
1449 " cmp r4, r0\n"
1450 " bne loc_fc149908\n"
1451 " movs r0, #0\n"
1452 " movw r2, #0x16e\n"
1453 " ldr r1, =0xfc149980\n"
1454 " blx sub_fc29b444\n"
1455 "loc_fc149908:\n"
1456 " mov r0, r4\n"
1457
1458 " bl sub_fc313636\n"
1459
1460 " mov r4, r0\n"
1461 " bl sub_fc184f1a\n"
1462 " mov r0, r4\n"
1463 " bl sub_fc1891ba\n"
1464 " lsls r0, r0, #0x1f\n"
1465 " beq loc_fc14992e\n"
1466 " pop.w {r4, r5, r6, lr}\n"
1467 " movs r0, #0\n"
1468 " movw r2, #0x173\n"
1469 " ldr r1, =0xfc149980\n"
1470
1471 " ldr pc,=0xfc29aa61\n"
1472 "loc_fc14992e:\n"
1473 " pop {r4, r5, r6, pc}\n"
1474 ".ltorg\n"
1475 );
1476 }
1477 #endif
1478