This source file includes following definitions.
- log_capt_seq
- log_capt_seq2
- log_capt_seq_override
- log_remote_hook
- log_remote_hook2
- log_rh
- capt_seq_task
- sub_fc0dd248_my
- sub_fc0dd0dc_my
- sub_fc116fa2_my
- exp_drv_task
- sub_fc278b4c_my
- sub_fc142cda_my
1 #include "lolevel.h"
2 #include "platform.h"
3 #include "core.h"
4
5
6 #undef CAPTSEQ_DEBUG
7
8 #define USE_STUBS_NRFLAG 1
9 #define NR_AUTO (0)
10
11 extern int active_raw_buffer;
12
13 extern void _LogCameraEvent(int id,const char *fmt,...);
14
15 extern char *hook_raw_image_addr(void);
16
17 #ifdef CAPTSEQ_DEBUG
18 void log_capt_seq(int m)
19 {
20 _LogCameraEvent(0x60,"cs m:%d arb:%d rb:0x%08x i:%04d",
21 m,
22 active_raw_buffer,
23 hook_raw_image_addr(),
24 get_exposure_counter());
25 }
26 void log_capt_seq2(int m)
27 {
28 _LogCameraEvent(0x60,"cs end m:%d arb:%d rb:0x%08x i:%04d",
29 m,
30 active_raw_buffer,
31 hook_raw_image_addr(),
32 get_exposure_counter());
33 }
34 void log_capt_seq_override(void)
35 {
36 _LogCameraEvent(0x60,"cs override arb:%d rb:0x%08x i:%04d",
37 active_raw_buffer,
38 hook_raw_image_addr(),
39 get_exposure_counter());
40 }
41 void log_remote_hook(void) {
42 _LogCameraEvent(0x60,"remote hook1 %d", *(unsigned*)0xc0242014);
43 }
44 void log_remote_hook2(void) {
45 _LogCameraEvent(0x60,"remote hook2 %d", *(unsigned*)0xc0242014);
46 }
47 void log_rh(void) {
48 _LogCameraEvent(0x60,"raw hook");
49 }
50 #endif
51
52 #include "../../../generic/capt_seq.c"
53
54 void __attribute__((naked,noinline)) capt_seq_task() {
55 asm volatile (
56
57 " push {r3, r4, r5, r6, r7, lr}\n"
58 " ldr r4, =0x0005dd60\n"
59 " movs r6, #0\n"
60 " ldr r5, =0x0000b1f8\n"
61 "loc_fc0bce6e:\n"
62 " movs r2, #0\n"
63 " mov r1, sp\n"
64 " ldr r0, [r5, #8]\n"
65 " blx sub_fc314ce0\n"
66 " lsls r0, r0, #0x1f\n"
67 " beq loc_fc0bce90\n"
68 " movw r2, #0x455\n"
69 " ldr r1, =0xfc0bca88\n"
70 " movs r0, #0\n"
71 " blx sub_fc314e50\n"
72 " blx sub_fc314d08\n"
73 " pop {r3, r4, r5, r6, r7, pc}\n"
74 "loc_fc0bce90:\n"
75 " ldr r0, [sp]\n"
76 " ldr r0, [r0]\n"
77 " cmp r0, #1\n"
78 " beq loc_fc0bcea8\n"
79 " cmp r0, #0x27\n"
80 " beq loc_fc0bcea8\n"
81 " cmp r0, #0x1c\n"
82 " beq loc_fc0bcea8\n"
83 " cmp r0, #0x1f\n"
84 " beq loc_fc0bcea8\n"
85 " bl sub_fc18c16c\n"
86 "loc_fc0bcea8:\n"
87 #ifdef CAPTSEQ_DEBUG
88 "ldr r0, [sp]\n"
89 "ldr r0, [r0]\n"
90 "bl log_capt_seq\n"
91 #endif
92 " ldr r0, [sp]\n"
93 " ldr r1, [r0]\n"
94 " cmp r1, #0x2e\n"
95 " bhs loc_fc0bcf6a\n"
96 " tbb [pc, r1]\n"
97 "branchtable_fc0bceb4:\n"
98 " .byte((loc_fc0bcee2 - branchtable_fc0bceb4) / 2)\n"
99 " .byte((loc_fc0bcef8 - branchtable_fc0bceb4) / 2)\n"
100 " .byte((loc_fc0bcf00 - branchtable_fc0bceb4) / 2)\n"
101 " .byte((loc_fc0bcf0e - branchtable_fc0bceb4) / 2)\n"
102 " .byte((loc_fc0bcf08 - branchtable_fc0bceb4) / 2)\n"
103 " .byte((loc_fc0bcf18 - branchtable_fc0bceb4) / 2)\n"
104 " .byte((loc_fc0bcf1e - branchtable_fc0bceb4) / 2)\n"
105 " .byte((loc_fc0bcf5c - branchtable_fc0bceb4) / 2)\n"
106 " .byte((loc_fc0bcf2e - branchtable_fc0bceb4) / 2)\n"
107 " .byte((loc_fc0bcf36 - branchtable_fc0bceb4) / 2)\n"
108 " .byte((loc_fc0bcf3c - branchtable_fc0bceb4) / 2)\n"
109 " .byte((loc_fc0bcf44 - branchtable_fc0bceb4) / 2)\n"
110 " .byte((loc_fc0bcf4a - branchtable_fc0bceb4) / 2)\n"
111 " .byte((loc_fc0bcf50 - branchtable_fc0bceb4) / 2)\n"
112 " .byte((loc_fc0bcf56 - branchtable_fc0bceb4) / 2)\n"
113 " .byte((loc_fc0bcf64 - branchtable_fc0bceb4) / 2)\n"
114 " .byte((loc_fc0bcf78 - branchtable_fc0bceb4) / 2)\n"
115 " .byte((loc_fc0bcf7e - branchtable_fc0bceb4) / 2)\n"
116 " .byte((loc_fc0bcf84 - branchtable_fc0bceb4) / 2)\n"
117 " .byte((loc_fc0bcf8a - branchtable_fc0bceb4) / 2)\n"
118 " .byte((loc_fc0bcf8e - branchtable_fc0bceb4) / 2)\n"
119 " .byte((loc_fc0bcf94 - branchtable_fc0bceb4) / 2)\n"
120 " .byte((loc_fc0bcf9a - branchtable_fc0bceb4) / 2)\n"
121 " .byte((loc_fc0bcfa0 - branchtable_fc0bceb4) / 2)\n"
122 " .byte((loc_fc0bcfa6 - branchtable_fc0bceb4) / 2)\n"
123 " .byte((loc_fc0bcfac - branchtable_fc0bceb4) / 2)\n"
124 " .byte((loc_fc0bcfb4 - branchtable_fc0bceb4) / 2)\n"
125 " .byte((loc_fc0bcfba - branchtable_fc0bceb4) / 2)\n"
126 " .byte((loc_fc0bcfbe - branchtable_fc0bceb4) / 2)\n"
127 " .byte((loc_fc0bcfc6 - branchtable_fc0bceb4) / 2)\n"
128 " .byte((loc_fc0bcfcc - branchtable_fc0bceb4) / 2)\n"
129 " .byte((loc_fc0bcfd2 - branchtable_fc0bceb4) / 2)\n"
130 " .byte((loc_fc0bcfd8 - branchtable_fc0bceb4) / 2)\n"
131 " .byte((loc_fc0bcfde - branchtable_fc0bceb4) / 2)\n"
132 " .byte((loc_fc0bcfe4 - branchtable_fc0bceb4) / 2)\n"
133 " .byte((loc_fc0bcfea - branchtable_fc0bceb4) / 2)\n"
134 " .byte((loc_fc0bcff2 - branchtable_fc0bceb4) / 2)\n"
135 " .byte((loc_fc0bcff8 - branchtable_fc0bceb4) / 2)\n"
136 " .byte((loc_fc0bd01c - branchtable_fc0bceb4) / 2)\n"
137 " .byte((loc_fc0bd022 - branchtable_fc0bceb4) / 2)\n"
138 " .byte((loc_fc0bd05a - branchtable_fc0bceb4) / 2)\n"
139 " .byte((loc_fc0bd02e - branchtable_fc0bceb4) / 2)\n"
140 " .byte((loc_fc0bd034 - branchtable_fc0bceb4) / 2)\n"
141 " .byte((loc_fc0bd03a - branchtable_fc0bceb4) / 2)\n"
142 " .byte((loc_fc0bd040 - branchtable_fc0bceb4) / 2)\n"
143 " .byte((loc_fc0bd046 - branchtable_fc0bceb4) / 2)\n"
144 ".align 1\n"
145 "loc_fc0bcee2:\n"
146 " ldr r0, [r0, #0xc]\n"
147 " bl sub_fc0d4f20\n"
148 #ifdef CAPTSEQ_DEBUG
149 "bl log_capt_seq_override\n"
150 #endif
151 " bl shooting_expo_param_override\n"
152 " bl sub_fc101d70\n"
153 " ldr r0, [r4, #0x28]\n"
154 " cmp r0, #0\n"
155 " beq loc_fc0bcef6\n"
156 " bl sub_fc0dd248_my\n"
157 "loc_fc0bcef6:\n"
158 " b loc_fc0bd05a\n"
159 "loc_fc0bcef8:\n"
160 " ldr r0, [r0, #0x10]\n"
161 " bl sub_fc0dd0dc_my\n"
162 " b loc_fc0bd05a\n"
163 "loc_fc0bcf00:\n"
164 " movs r0, #1\n"
165 " bl sub_fc0d51b0\n"
166 " b loc_fc0bd05a\n"
167 "loc_fc0bcf08:\n"
168 " bl sub_fc0d4c64\n"
169 " b loc_fc0bcf14\n"
170 "loc_fc0bcf0e:\n"
171 " ldr r0, [r0, #0xc]\n"
172 " bl sub_fc0d4f08\n"
173 "loc_fc0bcf14:\n"
174 " str r6, [r4, #0x28]\n"
175 " b loc_fc0bd05a\n"
176 "loc_fc0bcf18:\n"
177 " bl sub_fc0d4f0e\n"
178 " b loc_fc0bd05a\n"
179 "loc_fc0bcf1e:\n"
180 " bl sub_fc0d5152\n"
181 " bl sub_fc101d70\n"
182 " movs r0, #0\n"
183 " bl sub_fc2a50aa\n"
184 " b loc_fc0bd05a\n"
185 "loc_fc0bcf2e:\n"
186 " ldr r0, [r4, #0x54]\n"
187 " bl sub_fc0d5756\n"
188 " b loc_fc0bd05a\n"
189 "loc_fc0bcf36:\n"
190 " bl sub_fc0d59e2\n"
191 " b loc_fc0bd05a\n"
192 "loc_fc0bcf3c:\n"
193 " ldr r0, [r0, #0xc]\n"
194 " bl sub_fc0d5a2e\n"
195 " b loc_fc0bd05a\n"
196 "loc_fc0bcf44:\n"
197 " bl sub_fc0d5bf4\n"
198 " b loc_fc0bd05a\n"
199 "loc_fc0bcf4a:\n"
200 " bl sub_fc0d5c52\n"
201 " b loc_fc0bd05a\n"
202 "loc_fc0bcf50:\n"
203 " bl sub_fc0d6008\n"
204 " b loc_fc0bd05a\n"
205 "loc_fc0bcf56:\n"
206 " bl sub_fc0d609e\n"
207 " b loc_fc0bd05a\n"
208 "loc_fc0bcf5c:\n"
209 " ldr r0, [r0, #0xc]\n"
210 " bl sub_fc0d4f08\n"
211 " b loc_fc0bd05a\n"
212 "loc_fc0bcf64:\n"
213 " bl sub_fc0dc83c\n"
214 " b loc_fc0bd05a\n"
215 "loc_fc0bcf6a:\n"
216 " b loc_fc0bd04c\n"
217
218 ".ltorg\n"
219 "loc_fc0bcf78:\n"
220 " bl sub_fc0dc9f4\n"
221 " b loc_fc0bd05a\n"
222 "loc_fc0bcf7e:\n"
223 " bl sub_fc0dca98\n"
224 " b loc_fc0bd05a\n"
225 "loc_fc0bcf84:\n"
226 " bl sub_fc0dcb2a\n"
227 " b loc_fc0bd05a\n"
228 "loc_fc0bcf8a:\n"
229 " movs r0, #0\n"
230 " b loc_fc0bcfae\n"
231 "loc_fc0bcf8e:\n"
232 " bl sub_fc0dce20\n"
233 " b loc_fc0bd05a\n"
234 "loc_fc0bcf94:\n"
235 " bl sub_fc0dce80\n"
236 " b loc_fc0bd05a\n"
237 "loc_fc0bcf9a:\n"
238 " bl sub_fc0dce84\n"
239 " b loc_fc0bd05a\n"
240 "loc_fc0bcfa0:\n"
241 " bl sub_fc0dce94\n"
242 " b loc_fc0bd05a\n"
243 "loc_fc0bcfa6:\n"
244 " bl sub_fc0dcf28\n"
245 " b loc_fc0bd05a\n"
246 "loc_fc0bcfac:\n"
247 " movs r0, #1\n"
248 "loc_fc0bcfae:\n"
249 " bl sub_fc0dcd00\n"
250 " b loc_fc0bd05a\n"
251 "loc_fc0bcfb4:\n"
252 " bl sub_fc0d5276\n"
253 " b loc_fc0bd05a\n"
254 "loc_fc0bcfba:\n"
255 " movs r0, #0\n"
256 " b loc_fc0bcfc0\n"
257 "loc_fc0bcfbe:\n"
258 " ldr r0, [r0, #0xc]\n"
259 "loc_fc0bcfc0:\n"
260 " bl sub_fc0d52a8\n"
261 " b loc_fc0bd05a\n"
262 "loc_fc0bcfc6:\n"
263 " bl sub_fc0dcc46\n"
264 " b loc_fc0bd05a\n"
265 "loc_fc0bcfcc:\n"
266 " bl sub_fc0dccb2\n"
267 " b loc_fc0bd05a\n"
268 "loc_fc0bcfd2:\n"
269 " bl sub_fc10fd1c\n"
270 " b loc_fc0bd05a\n"
271 "loc_fc0bcfd8:\n"
272 " bl sub_fc10256c\n"
273 " b loc_fc0bd05a\n"
274 "loc_fc0bcfde:\n"
275 " bl sub_fc0d67ca\n"
276 " b loc_fc0bd05a\n"
277 "loc_fc0bcfe4:\n"
278 " bl sub_fc0d6884\n"
279 " b loc_fc0bd05a\n"
280 "loc_fc0bcfea:\n"
281 " ldr r0, [r0, #0xc]\n"
282 " bl sub_fc0dd008\n"
283 " b loc_fc0bd05a\n"
284 "loc_fc0bcff2:\n"
285 " bl sub_fc0dd05a\n"
286 " b loc_fc0bd05a\n"
287 "loc_fc0bcff8:\n"
288 " bl sub_fc0d71b8\n"
289 " bl sub_fc0d7ffe\n"
290 " ldrh.w r0, [r4, #0x1a4]\n"
291 " cmp r0, #4\n"
292 " beq loc_fc0bd012\n"
293 " ldrh r0, [r4]\n"
294 " sub.w r1, r0, #0x8200\n"
295 " subs r1, #0x36\n"
296 " bne loc_fc0bd05a\n"
297 "loc_fc0bd012:\n"
298 " bl sub_fc0d6884\n"
299 " bl sub_fc0d6c06\n"
300 " b loc_fc0bd05a\n"
301 "loc_fc0bd01c:\n"
302 " movs r2, #0\n"
303 " movs r1, #0x11\n"
304 " b loc_fc0bd026\n"
305 "loc_fc0bd022:\n"
306 " movs r2, #0\n"
307 " movs r1, #0x10\n"
308 "loc_fc0bd026:\n"
309 " movs r0, #0\n"
310 " bl sub_fc1026fa\n"
311 " b loc_fc0bd05a\n"
312 "loc_fc0bd02e:\n"
313 " bl sub_fc110468\n"
314 " b loc_fc0bd05a\n"
315 "loc_fc0bd034:\n"
316 " bl sub_fc1104e4\n"
317 " b loc_fc0bd05a\n"
318 "loc_fc0bd03a:\n"
319 " bl sub_fc110524\n"
320 " b loc_fc0bd05a\n"
321 "loc_fc0bd040:\n"
322 " bl sub_fc1103ac\n"
323 " b loc_fc0bd05a\n"
324 "loc_fc0bd046:\n"
325 " bl sub_fc1103ae\n"
326 " b loc_fc0bd05a\n"
327 "loc_fc0bd04c:\n"
328 " movw r2, #0x588\n"
329 " ldr r1, =0xfc0bca88\n"
330 " movs r0, #0\n"
331 " blx sub_fc314e50\n"
332 "loc_fc0bd05a:\n"
333 #ifdef CAPTSEQ_DEBUG
334
335 "ldr r0, [sp]\n"
336 "ldr r0, [r0]\n"
337 "bl log_capt_seq2\n"
338 #endif
339 " ldr r0, [sp]\n"
340 " ldr r1, [r0, #4]\n"
341 " ldr r0, [r5, #4]\n"
342 " blx sub_fc314cf8\n"
343 " ldr r7, [sp]\n"
344 " ldr r0, [r7, #8]\n"
345 " cbnz r0, loc_fc0bd078\n"
346 " movw r2, #0x12b\n"
347 " ldr r1, =0xfc0bca88\n"
348 " movs r0, #0\n"
349 " blx sub_fc314e50\n"
350 "loc_fc0bd078:\n"
351 " str r6, [r7, #8]\n"
352 " b loc_fc0bce6e\n"
353 ".ltorg\n"
354 );
355 }
356
357 void __attribute__((naked,noinline)) sub_fc0dd248_my() {
358 asm volatile (
359 " push {r4, lr}\n"
360 " bl sub_fc102c38\n"
361 " mov r4, r0\n"
362 " bl sub_fc0d4f14\n"
363 " bl sub_fc137bd8\n"
364 " mov r1, r4\n"
365 " bl sub_fc137c26\n"
366 " movs r2, #4\n"
367 " movw r0, #0x118\n"
368 " add.w r1, r4, #0x34\n"
369 " bl _SetPropertyCase\n"
370 " movs r2, #4\n"
371 " movs r0, #0x32\n"
372 " add.w r1, r4, #0x38\n"
373 " bl _SetPropertyCase\n"
374 " movs r2, #4\n"
375 " movs r0, #0x46\n"
376 " add.w r1, r4, #8\n"
377 " bl _SetPropertyCase\n"
378 " bl sub_fc18bc9a\n"
379 " mvn r1, #0x1000\n"
380 " blx sub_fc314da0\n"
381 " mov r0, r4\n"
382 " bl sub_fc18b980\n"
383 " bl sub_fc249504\n"
384 " bl sub_fc2a6a82\n"
385 " mov r0, r4\n"
386 " bl sub_fc116fa2_my\n"
387 " lsls r0, r0, #0x1f\n"
388 " beq loc_fc0dd2ae\n"
389 " ldr r1, =0x00012db4\n"
390 " movs r0, #1\n"
391 " str r0, [r1]\n"
392 "loc_fc0dd2ae:\n"
393 " pop {r4, pc}\n"
394 ".ltorg\n"
395 );
396 }
397
398 void __attribute__((naked,noinline)) sub_fc0dd0dc_my() {
399 asm volatile (
400 " push {r3, r4, r5, r6, r7, lr}\n"
401 " ldr r6, =0x0005dd60\n"
402 " mov r5, r0\n"
403 " movs r4, #0\n"
404 " ldr r0, [r6, #0x28]\n"
405 " cbz r0, loc_fc0dd104\n"
406 " ldr r0, =0x00012db4\n"
407 " ldr r0, [r0]\n"
408 " cbz r0, loc_fc0dd0f0\n"
409 " movs r4, #0x1d\n"
410 "loc_fc0dd0f0:\n"
411 " mov r2, r5\n"
412 " movs r1, #2\n"
413 " mov r0, r4\n"
414 " bl sub_fc1026fa\n"
415 " mov r1, r4\n"
416 " mov r0, r5\n"
417 " bl sub_fc18bff8\n"
418 " b loc_fc0dd23e\n"
419 "loc_fc0dd104:\n"
420 " bl sub_fc137bd8\n"
421 " mov r1, r5\n"
422 " bl sub_fc137c26\n"
423 " movs r2, #4\n"
424 " movw r0, #0x118\n"
425 " add.w r1, r5, #0x34\n"
426 " bl _SetPropertyCase\n"
427 " movs r2, #4\n"
428 " movs r0, #0x32\n"
429 " add.w r1, r5, #0x38\n"
430 " bl _SetPropertyCase\n"
431 " ldr.w r0, [r6, #0x10c]\n"
432 " cbnz r0, loc_fc0dd13e\n"
433 " ldrh.w r0, [r6, #0x1a2]\n"
434 " cmp r0, #3\n"
435 " beq loc_fc0dd144\n"
436 " ldr r0, [r5, #8]\n"
437 " cmp r0, #1\n"
438 " bhi loc_fc0dd154\n"
439 " b loc_fc0dd144\n"
440 "loc_fc0dd13e:\n"
441 " ldr r0, [r5, #0xc]\n"
442 " cmp r0, #1\n"
443 " bne loc_fc0dd154\n"
444 "loc_fc0dd144:\n"
445 " movs r0, #0xc\n"
446 " bl sub_fc33e12c\n"
447 " lsls r0, r0, #0x1f\n"
448 " beq loc_fc0dd154\n"
449 " bl sub_fc102562\n"
450 " movs r4, #1\n"
451 "loc_fc0dd154:\n"
452 " lsls r0, r4, #0x1f\n"
453 " bne loc_fc0dd22c\n"
454 " ldr.w r0, [r6, #0xec]\n"
455 " cbz r0, loc_fc0dd178\n"
456 " ldrh.w r0, [r6, #0x1a2]\n"
457 " cmp r0, #3\n"
458 " beq loc_fc0dd16c\n"
459 " ldr r0, [r5, #8]\n"
460 " cmp r0, #1\n"
461 " bhi loc_fc0dd1be\n"
462 "loc_fc0dd16c:\n"
463 " ldr.w r0, [r6, #0x10c]\n"
464 " cbz r0, loc_fc0dd178\n"
465 " ldr r0, [r5, #0xc]\n"
466 " cmp r0, #1\n"
467 " bhi loc_fc0dd1be\n"
468 "loc_fc0dd178:\n"
469 " bl sub_fc1105c8\n"
470 " cbnz r0, loc_fc0dd1be\n"
471 " movs r2, #2\n"
472 " mov r1, sp\n"
473 " movw r0, #0x112\n"
474 " bl _GetPropertyCase\n"
475 " lsls r0, r0, #0x1f\n"
476 " beq loc_fc0dd198\n"
477 " movs r2, #0xcb\n"
478 " movs r0, #0\n"
479 " ldr r1, =0xfc0dd2bc\n"
480 " blx sub_fc314e50\n"
481 "loc_fc0dd198:\n"
482 " ldrsh.w r0, [sp]\n"
483 " bl sub_fc1271a6\n"
484 " bl sub_fc127068\n"
485 " cmp r0, #1\n"
486 " bls loc_fc0dd1b0\n"
487 " movs r0, #0\n"
488 " bl sub_fc127130\n"
489 " b loc_fc0dd1be\n"
490 "loc_fc0dd1b0:\n"
491 " bl sub_fc102562\n"
492 " bl sub_fc33e16c\n"
493 " movs r4, #1\n"
494 " lsls r0, r4, #0x1f\n"
495 " bne loc_fc0dd22c\n"
496 "loc_fc0dd1be:\n"
497 " mov r0, r5\n"
498 " bl sub_fc10fd82\n"
499 " mov r4, r0\n"
500 " lsls r0, r0, #0x1f\n"
501 " bne loc_fc0dd22c\n"
502 " bl sub_fc18bc9a\n"
503 " mvn r1, #0x1000\n"
504 " blx sub_fc314da0\n"
505 " bl sub_fc249504\n"
506 " bl sub_fc2a6a82\n"
507 " mov r0, r5\n"
508 " bl sub_fc116cec\n"
509 " mov r4, r0\n"
510 " lsls r0, r0, #0x1f\n"
511 " bne loc_fc0dd22c\n"
512 " bl sub_fc0d4f14\n"
513 " mov r0, r5\n"
514 " bl sub_fc18b980\n"
515 " movs r0, #2\n"
516 " bl sub_fc0d7a2e\n"
517 " ldr.w r0, [r6, #0xb0]\n"
518 " cbz r0, loc_fc0dd208\n"
519 " mov r0, r5\n"
520 " bl sub_fc1175a8\n"
521 " b loc_fc0dd23e\n"
522 "loc_fc0dd208:\n"
523 " ldr.w r0, [r6, #0xb4]\n"
524 " cbz r0, loc_fc0dd216\n"
525 " mov r0, r5\n"
526 " bl sub_fc11721e\n"
527 " b loc_fc0dd23e\n"
528 "loc_fc0dd216:\n"
529 " ldr.w r0, [r6, #0xb8]\n"
530 " cmp r0, #0\n"
531 " mov r0, r5\n"
532 " beq loc_fc0dd226\n"
533 " bl sub_fc1178a4\n"
534 " b loc_fc0dd23e\n"
535 "loc_fc0dd226:\n"
536 " bl sub_fc116fa2_my\n"
537 " b loc_fc0dd23e\n"
538 "loc_fc0dd22c:\n"
539 " movs r1, #2\n"
540 " mov r2, r5\n"
541 " mov r0, r4\n"
542 " bl sub_fc1026fa\n"
543 " mov r1, r4\n"
544 " mov r0, r5\n"
545 " bl sub_fc18c12e\n"
546 "loc_fc0dd23e:\n"
547 " bl sub_fc0d5c44\n"
548 " movs r0, #0\n"
549 " str r0, [r6, #0x28]\n"
550 " pop {r3, r4, r5, r6, r7, pc}\n"
551 ".ltorg\n"
552 );
553 }
554
555
556 void __attribute__((naked,noinline)) sub_fc116fa2_my() {
557 asm volatile (
558 " push.w {r1, r2, r3, r4, r5, r6, r7, r8, sb, lr}\n"
559 " ldr r6, =0xfc116f7d\n"
560 " mov r5, r0\n"
561 " bl sub_fc18b916\n"
562 " bl sub_fc0dd712\n"
563 " ldr r7, =0x0005dd60\n"
564 " ldr.w r0, [r7, #0xa4]\n"
565 " cbnz r0, loc_fc116fd0\n"
566 " ldrh.w r0, [r7, #0x1a2]\n"
567 " cmp r0, #3\n"
568 " beq loc_fc116fc8\n"
569 " ldr r0, [r5, #8]\n"
570 " cmp r0, #1\n"
571 " bhi loc_fc116fd0\n"
572 "loc_fc116fc8:\n"
573 " bl sub_fc0d5298\n"
574 " bl sub_fc0dd2de\n"
575 "loc_fc116fd0:\n"
576 " movs r2, #4\n"
577 " movw r0, #0x139\n"
578 " add r1, sp, #8\n"
579 " bl _GetPropertyCase\n"
580 " lsls r0, r0, #0x1f\n"
581 " beq loc_fc116fec\n"
582 " movs r0, #0\n"
583 " movw r2, #0x150\n"
584 " ldr r1, =0xfc1171c8\n"
585 " blx sub_fc314e50\n"
586 "loc_fc116fec:\n"
587 #ifdef CAPTSEQ_DEBUG
588
589 "bl log_remote_hook\n"
590 #endif
591 " ldr r0, [sp, #8]\n"
592 " ubfx r0, r0, #8, #8\n"
593 " cmp r0, #6\n"
594 " bne loc_fc116ffc\n"
595 " ldr r0, =0xfc116f7d\n"
596 " movs r1, #0\n"
597 " b loc_fc117000\n"
598 "loc_fc116ffc:\n"
599 " ldr r0, =0xfc18b68f\n"
600 " mov r1, r5\n"
601 "loc_fc117000:\n"
602 " bl sub_fc144f10\n"
603 " movs r2, #2\n"
604 " movw r0, #0x114\n"
605 " add r1, sp, #4\n"
606 " bl _GetPropertyCase\n"
607 " lsls r0, r0, #0x1f\n"
608 " beq loc_fc117020\n"
609 " movs r0, #0\n"
610 " movw r2, #0x159\n"
611 " ldr r1, =0xfc1171c8\n"
612 " blx sub_fc314e50\n"
613 "loc_fc117020:\n"
614 " ldr.w r0, [r7, #0x18c]\n"
615 " cbz r0, loc_fc11702a\n"
616 " bl sub_fc18b7ea\n"
617 "loc_fc11702a:\n"
618 " movs r0, #0\n"
619 " bl sub_fc0bd154\n"
620 " bl sub_fc110676\n"
621 " ldr.w r8, =0xfc116f7d\n"
622 " mov r4, r0\n"
623 " lsls r0, r0, #0x1f\n"
624 " bne loc_fc11713c\n"
625
626 #ifdef CAPTSEQ_DEBUG
627 "bl log_remote_hook2\n"
628 #endif
629 " BL wait_until_remote_button_is_released\n"
630 " BL capt_seq_hook_set_nr\n"
631
632 " mov r0, r5\n"
633 " bl sub_fc18ba7e\n"
634 " mov r0, r5\n"
635 " bl sub_fc110580\n"
636 " ldr r1, =0x0002f888\n"
637 " movs r2, #4\n"
638 " movs r0, #0x92\n"
639 " bl _GetPropertyCase\n"
640 " lsls r0, r0, #0x1f\n"
641 " beq loc_fc117064\n"
642 " movs r0, #0\n"
643 " movw r2, #0x16e\n"
644 " ldr r1, =0xfc1171c8\n"
645 " blx sub_fc314e50\n"
646 "loc_fc117064:\n"
647 " bl sub_fc0bd288\n"
648 " bl sub_fc18bb10\n"
649 " movs r1, #0\n"
650 " mov r0, r5\n"
651 " bl sub_fc116f7e\n"
652 " mov r6, r0\n"
653 " ldr r0, [sp, #8]\n"
654 " ubfx r0, r0, #8, #8\n"
655 " cmp r0, #6\n"
656 " bne loc_fc117084\n"
657 " ldr r2, =0xfc18b7b5\n"
658 " b loc_fc117086\n"
659 "loc_fc117084:\n"
660 " ldr r2, =0xfc18b7cb\n"
661 "loc_fc117086:\n"
662 " ldrh r0, [r5, #0x18]\n"
663 " ldr r4, =0x0002f888\n"
664 " cbz r0, loc_fc117094\n"
665 " cmp r0, #1\n"
666 " beq loc_fc1170aa\n"
667 " cmp r0, #4\n"
668 " bne loc_fc1170fa\n"
669 "loc_fc117094:\n"
670 " str r6, [sp]\n"
671 " mov r3, r2\n"
672 " ldr r1, [r5, #0x38]\n"
673 " mov r0, r5\n"
674 " ldr r2, [r4]\n"
675 " bl sub_fc18b4ba\n"
676 " mov r4, r0\n"
677 " bl sub_fc2cd196\n"
678 " b loc_fc117108\n"
679 "loc_fc1170aa:\n"
680 " str r6, [sp]\n"
681 " mov r3, r2\n"
682 " ldr r1, [r5, #0x38]\n"
683 " mov sb, r4\n"
684 " ldr r2, [r4]\n"
685 " mov r0, r5\n"
686 " bl sub_fc18b524\n"
687 " movs r2, #1\n"
688 " mov r4, r0\n"
689 " movs r1, #0\n"
690 " movs r0, #0x45\n"
691 " bl sub_fc2a6c1c\n"
692 " lsls r0, r4, #0x1f\n"
693 " bne loc_fc117108\n"
694 " ldr r0, =0xfc116f7d\n"
695 " movs r1, #0\n"
696 " bl sub_fc144f10\n"
697 " movs r1, #1\n"
698 " mov r0, r5\n"
699 " bl sub_fc116f7e\n"
700 " mov r6, r0\n"
701 " ldr.w r0, [sb]\n"
702 " mov r4, sb\n"
703 " bl sub_fc18b8b8\n"
704 " ldr r1, [r5, #0x38]\n"
705 " mov r3, r6\n"
706 " ldr r2, [r4]\n"
707 " mov r0, r5\n"
708 " bl sub_fc18b59c\n"
709 " mov r4, r0\n"
710 " bl sub_fc18b462\n"
711 " b loc_fc117108\n"
712 "loc_fc1170fa:\n"
713 " movs r0, #0\n"
714 " movw r2, #0x1a7\n"
715 " ldr r1, =0xfc1171c8\n"
716 " blx sub_fc314e50\n"
717 " movs r4, #0x1d\n"
718 "loc_fc117108:\n"
719 " bl sub_fc18bb14\n"
720 " lsls r0, r4, #0x1f\n"
721 " bne loc_fc117172\n"
722 " mov r0, r5\n"
723 " bl sub_fc18bb2a\n"
724 " ldr.w r0, [r7, #0x108]\n"
725 " cbnz r0, loc_fc11713a\n"
726 " mov r0, r5\n"
727 " bl sub_fc1105c2\n"
728 " cbnz r0, loc_fc11713a\n"
729 " mov r0, r5\n"
730 " bl sub_fc18c26a\n"
731 " lsls r0, r0, #0x1f\n"
732 " beq loc_fc11713a\n"
733 " movs r0, #0\n"
734 " movw r2, #0x1c8\n"
735 " ldr r1, =0xfc1171c8\n"
736 " blx sub_fc314e50\n"
737 "loc_fc11713a:\n"
738 " b loc_fc11713e\n"
739 "loc_fc11713c:\n"
740 " b loc_fc117172\n"
741 "loc_fc11713e:\n"
742 #ifdef CAPTSEQ_DEBUG
743 "bl log_rh\n"
744 #endif
745 " bl capt_seq_hook_raw_here\n"
746 " mov r0, r5\n"
747 " bl sub_fc18bb00\n"
748 " mov r0, r5\n"
749 " bl sub_fc18bad4\n"
750 " cmp r6, r8\n"
751 " beq loc_fc117172\n"
752 " bl sub_fc18bc9a\n"
753 " movs r1, #4\n"
754 " movw sb, #0x1d5\n"
755 " ldr r3, =0xfc1171c8\n"
756 " movw r2, #0x3a98\n"
757 " str.w sb, [sp]\n"
758 " bl sub_fc33e2e4\n"
759 " cbz r0, loc_fc117172\n"
760 " movs r0, #0\n"
761 " mov r2, sb\n"
762 " ldr r1, =0xfc1171c8\n"
763 " blx sub_fc314e50\n"
764 "loc_fc117172:\n"
765 " ldr.w r0, [r7, #0x18c]\n"
766 " cbz r0, loc_fc117182\n"
767 " movs r2, #1\n"
768 " movs r1, #0\n"
769 " movs r0, #0x46\n"
770 " bl sub_fc2a6c1c\n"
771 "loc_fc117182:\n"
772 " movs r1, #2\n"
773 " mov r2, r5\n"
774 " mov r0, r4\n"
775 " bl sub_fc1026fa\n"
776 " ldr r0, [r7, #0x28]\n"
777 " cmp r0, #0\n"
778 " mov r0, r8\n"
779 " beq loc_fc1171a8\n"
780 " cmp r6, r0\n"
781 " beq loc_fc11719c\n"
782 " movs r1, #1\n"
783 " b loc_fc11719e\n"
784 "loc_fc11719c:\n"
785 " movs r1, #0\n"
786 "loc_fc11719e:\n"
787 " mov r2, r4\n"
788 " mov r0, r5\n"
789 " bl sub_fc18bfb6\n"
790 " b loc_fc1171ba\n"
791 "loc_fc1171a8:\n"
792 " cmp r6, r0\n"
793 " beq loc_fc1171b0\n"
794 " movs r1, #1\n"
795 " b loc_fc1171b2\n"
796 "loc_fc1171b0:\n"
797 " movs r1, #0\n"
798 "loc_fc1171b2:\n"
799 " mov r2, r4\n"
800 " mov r0, r5\n"
801 " bl sub_fc18bf70\n"
802 "loc_fc1171ba:\n"
803 " mov r0, r4\n"
804 " pop.w {r1, r2, r3, r4, r5, r6, r7, r8, sb, pc}\n"
805 ".ltorg\n"
806 );
807 }
808
809
810 void __attribute__((naked,noinline)) exp_drv_task() {
811 asm volatile (
812
813 " push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}\n"
814 " sub sp, #0x2c\n"
815 " ldr.w sb, =0x0000cc60\n"
816 " ldr.w fp, =0xfffff400\n"
817 " movs r0, #0\n"
818 " ldr r6, =0x0006a77c\n"
819 " add.w r8, sp, #0x1c\n"
820 " movw sl, #0xbb8\n"
821 " str r0, [sp, #0xc]\n"
822 "loc_fc27baec:\n"
823 " ldr.w r0, [sb, #0x24]\n"
824 " movs r2, #0\n"
825 " add r1, sp, #0x28\n"
826 " mov r4, sb\n"
827 " blx sub_fc314ce0\n"
828 " ldr r0, [sp, #0xc]\n"
829 " cmp r0, #1\n"
830 " bne loc_fc27bb28\n"
831 " ldr r0, [sp, #0x28]\n"
832 " ldr r0, [r0]\n"
833 " cmp r0, #0x15\n"
834 "loc_fc27bb06:\n"
835 " beq loc_fc27bbe4\n"
836 " cmp r0, #0x16\n"
837 " beq loc_fc27bb06\n"
838 " cmp r0, #0x17\n"
839 " beq loc_fc27bb06\n"
840 " cmp r0, #0x18\n"
841 " beq loc_fc27bb06\n"
842 " cmp r0, #0x19\n"
843 " beq loc_fc27bb06\n"
844 " cmp r0, #0x1a\n"
845 " beq loc_fc27bb06\n"
846 " cmp r0, #0x35\n"
847 " beq loc_fc27bbea\n"
848 " movs r0, #0\n"
849 " add r1, sp, #0xc\n"
850 " bl sub_fc27b80e\n"
851 "loc_fc27bb28:\n"
852 " ldr r0, [sp, #0x28]\n"
853 " ldr r1, [r0]\n"
854 " cmp r1, #0x3d\n"
855 " bne loc_fc27bb46\n"
856 " bl sub_fc27cc52\n"
857 " ldr.w r0, [sb, #0x20]\n"
858 " movs r1, #1\n"
859 " blx sub_fc314cf8\n"
860 " blx sub_fc314d08\n"
861 " add sp, #0x2c\n"
862
863 " ldmia.w sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}\n"
864 "loc_fc27bb46:\n"
865 " cmp r1, #0x3c\n"
866 " bne loc_fc27bb58\n"
867 "loc_fc27bb4a:\n"
868 " add.w r0, r0, #0xac\n"
869 " ldrd r2, r1, [r0]\n"
870 " mov r0, r1\n"
871 " blx r2\n"
872 " b loc_fc27bfd2\n"
873 "loc_fc27bb58:\n"
874 " cmp r1, #0x33\n"
875 " bne loc_fc27bb8e\n"
876 " ldr r0, [r4, #0x20]\n"
877 " movs r1, #0x80\n"
878 " blx sub_fc314da0\n"
879 " ldr r0, =0xfc2779ab\n"
880 " movs r1, #0x80\n"
881 " bl sub_fc3396f6\n"
882 " ldr r0, [r4, #0x20]\n"
883 " movs r1, #0x80\n"
884 " mov r2, sl\n"
885 " blx sub_fc314c50\n"
886 " lsls r0, r0, #0x1f\n"
887 " beq loc_fc27bb80\n"
888 " movw r2, #0x173c\n"
889 " b loc_fc27bc50\n"
890 "loc_fc27bb80:\n"
891 " ldr r1, [sp, #0x28]\n"
892 " add.w r1, r1, #0xac\n"
893 " ldrd r1, r0, [r1]\n"
894 " blx r1\n"
895 " b loc_fc27bfd2\n"
896 "loc_fc27bb8e:\n"
897 " cmp r1, #0x34\n"
898 " bne loc_fc27bbe6\n"
899 " add r1, sp, #0xc\n"
900 " bl sub_fc27b80e\n"
901 " movw r5, #0x100\n"
902 " ldr r0, [r4, #0x20]\n"
903 " mov r1, r5\n"
904 " blx sub_fc314da0\n"
905 " ldr r0, =0xfc2779b5\n"
906 " mov r1, r5\n"
907 " bl sub_fc3398a2\n"
908 " ldr r0, [r4, #0x20]\n"
909 " mov r2, sl\n"
910 " mov r1, r5\n"
911 " blx sub_fc314c50\n"
912 " lsls r0, r0, #0x1f\n"
913 " beq loc_fc27bb80\n"
914 " movw r2, #0x1746\n"
915 " b loc_fc27bc50\n"
916
917 "loc_fc27bbe4:\n"
918 " b loc_fc27bc5a\n"
919 "loc_fc27bbe6:\n"
920 " cmp r1, #0x35\n"
921 " bne loc_fc27bbf4\n"
922 "loc_fc27bbea:\n"
923 " ldr r0, [sp, #0x28]\n"
924 " add r1, sp, #0xc\n"
925 " bl sub_fc27b80e\n"
926 " b loc_fc27bb80\n"
927 "loc_fc27bbf4:\n"
928 " cmp r1, #0x36\n"
929 " bne loc_fc27bc0e\n"
930 " bl sub_fc27b852\n"
931 " ldr r1, [sp, #0x28]\n"
932 " add.w r1, r1, #0xac\n"
933 " ldrd r1, r0, [r1]\n"
934 " blx r1\n"
935 " bl sub_fc20f65e\n"
936 " b loc_fc27bfd2\n"
937 "loc_fc27bc0e:\n"
938 " cmp r1, #0x37\n"
939 " beq loc_fc27bb4a\n"
940 " cmp r1, #0x3a\n"
941 " bne loc_fc27bc24\n"
942 " bl sub_fc142f1c\n"
943 " bl sub_fc20f968\n"
944 " bl sub_fc20f65e\n"
945 " b loc_fc27bb80\n"
946 "loc_fc27bc24:\n"
947 " cmp r1, #0x3b\n"
948 " bne loc_fc27bc5a\n"
949 " ldr r0, [r4, #0x20]\n"
950 " movs r1, #4\n"
951 " blx sub_fc314da0\n"
952 " ldr r1, =0xfc2779c9\n"
953 " movs r2, #4\n"
954 " mov r0, fp\n"
955 " bl sub_fc27cca4\n"
956 " bl sub_fc142c80\n"
957 " ldr r0, [r4, #0x20]\n"
958 " movs r1, #4\n"
959 " mov r2, sl\n"
960 " blx sub_fc314e48\n"
961 " lsls r0, r0, #0x1f\n"
962 " beq loc_fc27bb80\n"
963 " movw r2, #0x1829\n"
964 "loc_fc27bc50:\n"
965 " ldr r1, =0xfc277d90\n"
966 " movs r0, #0\n"
967 " blx sub_fc314e50\n"
968 " b loc_fc27bb80\n"
969 "loc_fc27bc5a:\n"
970 " ldr r0, [sp, #0x28]\n"
971 " movs r5, #1\n"
972 " ldr r1, [r0]\n"
973 " cmp r1, #0x13\n"
974 " beq loc_fc27bc68\n"
975 " cmp r1, #0x14\n"
976 " bne loc_fc27bca6\n"
977 "loc_fc27bc68:\n"
978 " ldr.w r1, [r0, #0x94]\n"
979 " mov r4, r8\n"
980 " add.w r1, r1, r1, lsl #1\n"
981 " add.w r1, r0, r1, lsl #2\n"
982 " subs r1, #8\n"
983 " ldm r1!, {r2, r3, r7}\n"
984 " stm r4!, {r2, r3, r7}\n"
985 " bl sub_fc27a170\n"
986 " ldr r0, [sp, #0x28]\n"
987 " add.w r0, r0, #0x94\n"
988 " ldrd r3, r2, [r0, #0x18]\n"
989 " ldr r1, [r0]\n"
990 " sub.w r0, r0, #0x90\n"
991 " blx r3\n"
992 " ldr r0, [sp, #0x28]\n"
993 " bl sub_fc27ceca\n"
994 " ldr r0, [sp, #0x28]\n"
995 " add.w r0, r0, #0x94\n"
996 " ldr r1, [r0]\n"
997 " ldrd r3, r2, [r0, #0x20]\n"
998 " b loc_fc27bef4\n"
999 "loc_fc27bca6:\n"
1000 " cmp r1, #0x15\n"
1001 " beq loc_fc27bcbe\n"
1002 " cmp r1, #0x16\n"
1003 " beq loc_fc27bcbe\n"
1004 " cmp r1, #0x17\n"
1005 " beq loc_fc27bcbe\n"
1006 " cmp r1, #0x18\n"
1007 " beq loc_fc27bcbe\n"
1008 " cmp r1, #0x19\n"
1009 " beq loc_fc27bcbe\n"
1010 " cmp r1, #0x1a\n"
1011 " bne loc_fc27bd2a\n"
1012 "loc_fc27bcbe:\n"
1013 " bl sub_fc142f1c\n"
1014 " ldr r0, [sp, #0x28]\n"
1015 " add r3, sp, #0xc\n"
1016 " add r1, sp, #0x1c\n"
1017 " mov r2, sp\n"
1018 " bl sub_fc27a34e\n"
1019 " cmp r0, #1\n"
1020 " mov r4, r0\n"
1021 " beq loc_fc27bcd8\n"
1022 " cmp r4, #5\n"
1023 " bne loc_fc27bcf8\n"
1024 "loc_fc27bcd8:\n"
1025 " ldr r0, [sp, #0x28]\n"
1026 " mov r2, r4\n"
1027 " add.w r0, r0, #0x94\n"
1028 " ldrd r7, r3, [r0, #0x18]\n"
1029 " ldr r1, [r0]\n"
1030 " sub.w r0, r0, #0x90\n"
1031 " blx r7\n"
1032 " ldr r2, [sp, #0xc]\n"
1033 " mov r1, r4\n"
1034 " ldr r0, [sp, #0x28]\n"
1035 " bl sub_fc27b7cc\n"
1036 "loc_fc27bcf6:\n"
1037 " b loc_fc27befa\n"
1038 "loc_fc27bcf8:\n"
1039 " cmp r4, #2\n"
1040 " beq loc_fc27bd00\n"
1041 " cmp r4, #6\n"
1042 " bne loc_fc27bd14\n"
1043 "loc_fc27bd00:\n"
1044 " ldr r0, [sp, #0x28]\n"
1045 " add r1, sp, #0x1c\n"
1046 " mov r2, sp\n"
1047 " bl sub_fc27b564\n"
1048 " ldr r2, [sp, #0xc]\n"
1049 " mov r1, r4\n"
1050 " ldr r0, [sp, #0x28]\n"
1051 " bl sub_fc27b7cc\n"
1052 "loc_fc27bd14:\n"
1053 " ldr r0, [sp, #0x28]\n"
1054 " mov r2, r4\n"
1055 " add.w r0, r0, #0x94\n"
1056 " ldrd r7, r3, [r0, #0x18]\n"
1057 " ldr r1, [r0]\n"
1058 " sub.w r0, r0, #0x90\n"
1059 " blx r7\n"
1060 " b loc_fc27befa\n"
1061 "loc_fc27bd2a:\n"
1062 " cmp r1, #0x2d\n"
1063 " beq loc_fc27bd32\n"
1064 " cmp r1, #0x2e\n"
1065 " bne loc_fc27bda0\n"
1066 "loc_fc27bd32:\n"
1067 " ldr.w r1, [r0, #0x94]\n"
1068 " mov r7, r8\n"
1069 " add.w r1, r1, r1, lsl #1\n"
1070 " add.w r1, r0, r1, lsl #2\n"
1071 " subs r1, #8\n"
1072 " ldm r1, {r1, r2, r3}\n"
1073 " stm r7!, {r1, r2, r3}\n"
1074 " bl sub_fc27946c\n"
1075 " ldr r0, [sp, #0x28]\n"
1076 " add.w r0, r0, #0x94\n"
1077 " ldrd r3, r2, [r0, #0x18]\n"
1078 " ldr r1, [r0]\n"
1079 " sub.w r0, r0, #0x90\n"
1080 " blx r3\n"
1081 " bl sub_fc142f1c\n"
1082 " bl sub_fc20f968\n"
1083 " bl sub_fc20f65e\n"
1084 " ldr r0, [r4, #0x20]\n"
1085 " movs r1, #2\n"
1086 " mov r7, sl\n"
1087 " mov r2, sl\n"
1088 " blx sub_fc314c50\n"
1089 " lsls r0, r0, #0x1f\n"
1090 " beq loc_fc27bd84\n"
1091 " ldr r1, =0xfc277d90\n"
1092 " movs r0, #0\n"
1093 " movw r2, #0xcae\n"
1094 " blx sub_fc314e50\n"
1095 "loc_fc27bd84:\n"
1096 " ldr r0, [r4, #0x20]\n"
1097 " movs r1, #0x20\n"
1098 " mov r2, r7\n"
1099 " blx sub_fc314c50\n"
1100 " lsls r0, r0, #0x1f\n"
1101 " beq loc_fc27bcf6\n"
1102 " ldr r1, =0xfc277d90\n"
1103 " movs r0, #0\n"
1104 " movw r2, #0xcb1\n"
1105 " blx sub_fc314e50\n"
1106 " b loc_fc27befa\n"
1107 "loc_fc27bda0:\n"
1108 " adds r1, r0, #4\n"
1109 " mov r4, r8\n"
1110 " ldm r1!, {r2, r3, r7}\n"
1111 " stm r4!, {r2, r3, r7}\n"
1112 " ldr r1, [r0]\n"
1113 " cmp r1, #0x33\n"
1114 " bhs loc_fc27bdea\n"
1115 " tbb [pc, r1]\n"
1116 "branchtable_fc27bdb2:\n"
1117 " .byte((loc_fc27bde6 - branchtable_fc27bdb2) / 2)\n"
1118 " .byte((loc_fc27bde6 - branchtable_fc27bdb2) / 2)\n"
1119 " .byte((loc_fc27bdec - branchtable_fc27bdb2) / 2)\n"
1120 " .byte((loc_fc27bdf2 - branchtable_fc27bdb2) / 2)\n"
1121 " .byte((loc_fc27bdf2 - branchtable_fc27bdb2) / 2)\n"
1122 " .byte((loc_fc27bdf2 - branchtable_fc27bdb2) / 2)\n"
1123 " .byte((loc_fc27bde6 - branchtable_fc27bdb2) / 2)\n"
1124 " .byte((loc_fc27bdec - branchtable_fc27bdb2) / 2)\n"
1125 " .byte((loc_fc27bdf2 - branchtable_fc27bdb2) / 2)\n"
1126 " .byte((loc_fc27bdf2 - branchtable_fc27bdb2) / 2)\n"
1127 " .byte((loc_fc27be04 - branchtable_fc27bdb2) / 2)\n"
1128 " .byte((loc_fc27be04 - branchtable_fc27bdb2) / 2)\n"
1129 " .byte((loc_fc27be04 - branchtable_fc27bdb2) / 2)\n"
1130 " .byte((loc_fc27bed8 - branchtable_fc27bdb2) / 2)\n"
1131 " .byte((loc_fc27bede - branchtable_fc27bdb2) / 2)\n"
1132 " .byte((loc_fc27bede - branchtable_fc27bdb2) / 2)\n"
1133 " .byte((loc_fc27bede - branchtable_fc27bdb2) / 2)\n"
1134 " .byte((loc_fc27bede - branchtable_fc27bdb2) / 2)\n"
1135 " .byte((loc_fc27bee4 - branchtable_fc27bdb2) / 2)\n"
1136 " .byte((loc_fc27bee8 - branchtable_fc27bdb2) / 2)\n"
1137 " .byte((loc_fc27bee8 - branchtable_fc27bdb2) / 2)\n"
1138 " .byte((loc_fc27bee8 - branchtable_fc27bdb2) / 2)\n"
1139 " .byte((loc_fc27bee8 - branchtable_fc27bdb2) / 2)\n"
1140 " .byte((loc_fc27bee8 - branchtable_fc27bdb2) / 2)\n"
1141 " .byte((loc_fc27bee8 - branchtable_fc27bdb2) / 2)\n"
1142 " .byte((loc_fc27bee8 - branchtable_fc27bdb2) / 2)\n"
1143 " .byte((loc_fc27bee8 - branchtable_fc27bdb2) / 2)\n"
1144 " .byte((loc_fc27bdf8 - branchtable_fc27bdb2) / 2)\n"
1145 " .byte((loc_fc27bdfe - branchtable_fc27bdb2) / 2)\n"
1146 " .byte((loc_fc27bdfe - branchtable_fc27bdb2) / 2)\n"
1147 " .byte((loc_fc27bdfe - branchtable_fc27bdb2) / 2)\n"
1148 " .byte((loc_fc27be0c - branchtable_fc27bdb2) / 2)\n"
1149 " .byte((loc_fc27be0c - branchtable_fc27bdb2) / 2)\n"
1150 " .byte((loc_fc27be0c - branchtable_fc27bdb2) / 2)\n"
1151 " .byte((loc_fc27be0c - branchtable_fc27bdb2) / 2)\n"
1152 " .byte((loc_fc27be0c - branchtable_fc27bdb2) / 2)\n"
1153 " .byte((loc_fc27be0c - branchtable_fc27bdb2) / 2)\n"
1154 " .byte((loc_fc27be12 - branchtable_fc27bdb2) / 2)\n"
1155 " .byte((loc_fc27be3c - branchtable_fc27bdb2) / 2)\n"
1156 " .byte((loc_fc27be66 - branchtable_fc27bdb2) / 2)\n"
1157 " .byte((loc_fc27be6a - branchtable_fc27bdb2) / 2)\n"
1158 " .byte((loc_fc27be72 - branchtable_fc27bdb2) / 2)\n"
1159 " .byte((loc_fc27be9c - branchtable_fc27bdb2) / 2)\n"
1160 " .byte((loc_fc27bec6 - branchtable_fc27bdb2) / 2)\n"
1161 " .byte((loc_fc27bec6 - branchtable_fc27bdb2) / 2)\n"
1162 " .byte((loc_fc27bee8 - branchtable_fc27bdb2) / 2)\n"
1163 " .byte((loc_fc27bee8 - branchtable_fc27bdb2) / 2)\n"
1164 " .byte((loc_fc27becc - branchtable_fc27bdb2) / 2)\n"
1165 " .byte((loc_fc27becc - branchtable_fc27bdb2) / 2)\n"
1166 " .byte((loc_fc27becc - branchtable_fc27bdb2) / 2)\n"
1167 " .byte((loc_fc27bed2 - branchtable_fc27bdb2) / 2)\n"
1168 ".align 1\n"
1169 "loc_fc27bde6:\n"
1170 " bl sub_fc277ed4\n"
1171 "loc_fc27bdea:\n"
1172 " b loc_fc27bee8\n"
1173 "loc_fc27bdec:\n"
1174 " bl sub_fc27814c\n"
1175 " b loc_fc27bee8\n"
1176 "loc_fc27bdf2:\n"
1177 " bl sub_fc278370\n"
1178 " b loc_fc27bee8\n"
1179 "loc_fc27bdf8:\n"
1180 " bl sub_fc278624\n"
1181 " b loc_fc27bee8\n"
1182 "loc_fc27bdfe:\n"
1183 " bl sub_fc2787e0\n"
1184 " b loc_fc27bee8\n"
1185 "loc_fc27be04:\n"
1186 " bl sub_fc278b4c_my\n"
1187 " movs r5, #0\n"
1188 " b loc_fc27bee8\n"
1189 "loc_fc27be0c:\n"
1190 " bl sub_fc278c50\n"
1191 " b loc_fc27bee8\n"
1192 "loc_fc27be12:\n"
1193 " ldrh r1, [r0, #4]\n"
1194 " strh.w r1, [sp, #0x1c]\n"
1195 " ldrh r1, [r6, #2]\n"
1196 " strh.w r1, [sp, #0x1e]\n"
1197 " ldrh r1, [r6, #4]\n"
1198 " strh.w r1, [sp, #0x20]\n"
1199 " ldrh r1, [r6, #6]\n"
1200 " strh.w r1, [sp, #0x22]\n"
1201 " ldrh r1, [r0, #0xc]\n"
1202 " strh.w r1, [sp, #0x24]\n"
1203 " ldrh r1, [r6, #0xa]\n"
1204 " strh.w r1, [sp, #0x26]\n"
1205 " bl sub_fc279158\n"
1206 " b loc_fc27bee8\n"
1207 "loc_fc27be3c:\n"
1208 " ldrh r1, [r0, #4]\n"
1209 " strh.w r1, [sp, #0x1c]\n"
1210 " ldrh r1, [r6, #2]\n"
1211 " strh.w r1, [sp, #0x1e]\n"
1212 " ldrh r1, [r6, #4]\n"
1213 " strh.w r1, [sp, #0x20]\n"
1214 " ldrh r1, [r6, #6]\n"
1215 " strh.w r1, [sp, #0x22]\n"
1216 " ldrh r1, [r6, #8]\n"
1217 " strh.w r1, [sp, #0x24]\n"
1218 " ldrh r1, [r6, #0xa]\n"
1219 " strh.w r1, [sp, #0x26]\n"
1220 " bl sub_fc27cd1c\n"
1221 " b loc_fc27bee8\n"
1222 "loc_fc27be66:\n"
1223 " movs r1, #1\n"
1224 " b loc_fc27be6c\n"
1225 "loc_fc27be6a:\n"
1226 " movs r1, #0\n"
1227 "loc_fc27be6c:\n"
1228 " bl sub_fc27921a\n"
1229 " b loc_fc27bee8\n"
1230 "loc_fc27be72:\n"
1231 " ldrh r1, [r6]\n"
1232 " strh.w r1, [sp, #0x1c]\n"
1233 " ldrh r1, [r0, #6]\n"
1234 " strh.w r1, [sp, #0x1e]\n"
1235 " ldrh r1, [r6, #4]\n"
1236 " strh.w r1, [sp, #0x20]\n"
1237 " ldrh r1, [r6, #6]\n"
1238 " strh.w r1, [sp, #0x22]\n"
1239 " ldrh r1, [r6, #8]\n"
1240 " strh.w r1, [sp, #0x24]\n"
1241 " ldrh r1, [r6, #0xa]\n"
1242 " strh.w r1, [sp, #0x26]\n"
1243 " bl sub_fc27cde8\n"
1244 " b loc_fc27bee8\n"
1245 "loc_fc27be9c:\n"
1246 " ldrh r1, [r6]\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_fc27ce5c\n"
1259 " b loc_fc27bee8\n"
1260 "loc_fc27bec6:\n"
1261 " bl sub_fc27925e\n"
1262 " b loc_fc27bee8\n"
1263 "loc_fc27becc:\n"
1264 " bl sub_fc27981c\n"
1265 " b loc_fc27bee8\n"
1266 "loc_fc27bed2:\n"
1267 " bl sub_fc279b10\n"
1268 " b loc_fc27bee8\n"
1269 "loc_fc27bed8:\n"
1270 " bl sub_fc279d2a\n"
1271 " b loc_fc27bee8\n"
1272 "loc_fc27bede:\n"
1273 " bl sub_fc279e88\n"
1274 " b loc_fc27bee8\n"
1275 "loc_fc27bee4:\n"
1276 " bl sub_fc279fd2\n"
1277 "loc_fc27bee8:\n"
1278 " ldr r0, [sp, #0x28]\n"
1279 " add.w r0, r0, #0x94\n"
1280 " ldrd r3, r2, [r0, #0x18]\n"
1281 " ldr r1, [r0]\n"
1282 "loc_fc27bef4:\n"
1283 " sub.w r0, r0, #0x90\n"
1284 " blx r3\n"
1285 "loc_fc27befa:\n"
1286 " ldr r0, [sp, #0x28]\n"
1287 " ldr r0, [r0]\n"
1288 " cmp r0, #0x11\n"
1289 " beq loc_fc27bf1e\n"
1290 " bgt loc_fc27bf12\n"
1291 " cmp r0, #1\n"
1292 " beq loc_fc27bf1e\n"
1293 " cmp r0, #4\n"
1294 " beq loc_fc27bf1e\n"
1295 " cmp r0, #0xf\n"
1296 " bne loc_fc27bf50\n"
1297 " b loc_fc27bf1e\n"
1298 "loc_fc27bf12:\n"
1299 " cmp r0, #0x14\n"
1300 " beq loc_fc27bf1e\n"
1301 " cmp r0, #0x1a\n"
1302 " beq loc_fc27bf1e\n"
1303 " cmp r0, #0x1d\n"
1304 " bne loc_fc27bf50\n"
1305 "loc_fc27bf1e:\n"
1306 " ldrsh.w r0, [r6]\n"
1307 " mov r2, fp\n"
1308 " cmp r0, fp\n"
1309 " beq loc_fc27bf30\n"
1310 " ldrsh.w r1, [r6, #8]\n"
1311 " cmp r1, r2\n"
1312 " bne loc_fc27bf48\n"
1313 "loc_fc27bf30:\n"
1314 " add r0, sp, #0x10\n"
1315 " bl sub_fc362e56\n"
1316 " ldrh.w r0, [sp, #0x10]\n"
1317 " strh.w r0, [sp, #0x1c]\n"
1318 " ldrh.w r0, [sp, #0x18]\n"
1319 " strh.w r0, [sp, #0x24]\n"
1320 " b loc_fc27bf50\n"
1321 "loc_fc27bf48:\n"
1322 " strh.w r0, [sp, #0x1c]\n"
1323 " strh.w r1, [sp, #0x24]\n"
1324 "loc_fc27bf50:\n"
1325 " cmp r5, #1\n"
1326 " ldr r0, [sp, #0x28]\n"
1327 " bne loc_fc27bf88\n"
1328 " movs r2, #0xc\n"
1329 " ldr.w r1, [r0, #0x94]\n"
1330 " add.w r1, r1, r1, lsl #1\n"
1331 " add.w r4, r0, r1, lsl #2\n"
1332 " ldr r0, =0x0006a77c\n"
1333 " subs r4, #8\n"
1334 " add r1, sp, #0x1c\n"
1335 " blx sub_fc314e58\n"
1336 " ldr r0, =0x0006a77c\n"
1337 " movs r2, #0xc\n"
1338 " add r1, sp, #0x1c\n"
1339 " adds r0, #0xc\n"
1340 " blx sub_fc314e58\n"
1341 " ldr r0, =0x0006a77c\n"
1342 " movs r2, #0xc\n"
1343 " mov r1, r4\n"
1344 " adds r0, #0x18\n"
1345 " blx sub_fc314e58\n"
1346 " b loc_fc27bfd2\n"
1347 "loc_fc27bf88:\n"
1348 " ldr r0, [r0]\n"
1349 " mov.w r3, #1\n"
1350 " cmp r0, #0xc\n"
1351 " bne loc_fc27bfb2\n"
1352 " movs r2, #0\n"
1353 " mov r1, r3\n"
1354 " strd r2, r3, [sp]\n"
1355 " movs r0, #0\n"
1356 " mov r2, r3\n"
1357 " bl sub_fc277cd4\n"
1358 " movs r3, #1\n"
1359 " movs r2, #0\n"
1360 " mov r1, r3\n"
1361 " movs r0, #0\n"
1362 " strd r2, r3, [sp]\n"
1363 " mov r2, r3\n"
1364 " b loc_fc27bfce\n"
1365 "loc_fc27bfb2:\n"
1366 " movs r2, #1\n"
1367 " strd r2, r3, [sp]\n"
1368 " mov r3, r2\n"
1369 " mov r1, r2\n"
1370 " mov r0, r2\n"
1371 " bl sub_fc277cd4\n"
1372 " movs r3, #1\n"
1373 " str r3, [sp]\n"
1374 " mov r2, r3\n"
1375 " mov r1, r3\n"
1376 " mov r0, r3\n"
1377 " str r3, [sp, #4]\n"
1378 "loc_fc27bfce:\n"
1379 " bl sub_fc277e14\n"
1380 "loc_fc27bfd2:\n"
1381 " ldr r0, [sp, #0x28]\n"
1382 " bl sub_fc27cc52\n"
1383 " b loc_fc27baec\n"
1384 ".ltorg\n"
1385 );
1386 }
1387
1388 void __attribute__((naked,noinline)) sub_fc278b4c_my() {
1389 asm volatile (
1390 " push.w {r4, r5, r6, r7, r8, lr}\n"
1391 " ldr r7, =0x0000cc60\n"
1392 " movs r1, #0x3e\n"
1393 " mov r4, r0\n"
1394 " ldr r0, [r7, #0x20]\n"
1395 " blx sub_fc314da0\n"
1396 " movs r2, #0\n"
1397 " ldrsh.w r0, [r4, #4]\n"
1398 " movs r3, #1\n"
1399 " mov r1, r2\n"
1400 " bl sub_fc277a12\n"
1401 " mov r6, r0\n"
1402 " ldrsh.w r0, [r4, #6]\n"
1403 " bl sub_fc277b9a\n"
1404 " ldrsh.w r0, [r4, #8]\n"
1405 " bl sub_fc277bde\n"
1406 " ldrsh.w r0, [r4, #0xa]\n"
1407 " bl sub_fc277c22\n"
1408 " ldrsh.w r0, [r4, #0xc]\n"
1409 " movs r1, #0\n"
1410 " bl sub_fc277c66\n"
1411 " mov r5, r0\n"
1412 " ldr r0, [r4]\n"
1413 " ldr.w r8, =0x0006a794\n"
1414 " cmp r0, #0xc\n"
1415 " bne loc_fc278ba0\n"
1416 " movs r6, #0\n"
1417 " mov r5, r6\n"
1418 " b loc_fc278bb8\n"
1419 "loc_fc278ba0:\n"
1420 " cmp r6, #1\n"
1421 " bne loc_fc278bb8\n"
1422 " ldrsh.w r0, [r4, #4]\n"
1423 " movs r2, #2\n"
1424 " ldr r1, =0xfc2779a1\n"
1425 " bl sub_fc339712\n"
1426 " strh r0, [r4, #4]\n"
1427 " movs r0, #0\n"
1428 " str r0, [r7, #0x2c]\n"
1429 " b loc_fc278bbe\n"
1430 "loc_fc278bb8:\n"
1431 " ldrh.w r0, [r8]\n"
1432 " strh r0, [r4, #4]\n"
1433 "loc_fc278bbe:\n"
1434 " cmp r5, #1\n"
1435 " bne loc_fc278bd0\n"
1436 " ldrsh.w r0, [r4, #0xc]\n"
1437 " movs r2, #0x20\n"
1438 " ldr r1, =0xfc2779fd\n"
1439 " bl sub_fc27ccc8\n"
1440 " b loc_fc278bd4\n"
1441 "loc_fc278bd0:\n"
1442 " ldrh.w r0, [r8, #8]\n"
1443 "loc_fc278bd4:\n"
1444 " strh r0, [r4, #0xc]\n"
1445 " ldrsh.w r0, [r4, #6]\n"
1446 " bl sub_fc142cda_my\n"
1447 " ldr pc, =0xfc278bdf\n"
1448 );
1449 }
1450
1451 void __attribute__((naked,noinline)) sub_fc142cda_my() {
1452 asm volatile (
1453 " push {r4, r5, r6, lr}\n"
1454 " ldr r5, =0x0000c5a4\n"
1455 " mov r4, r0\n"
1456 " ldr r0, [r5, #4]\n"
1457 " cmp r0, #1\n"
1458 " beq loc_fc142cf2\n"
1459 " movs r0, #0\n"
1460 " movw r2, #0x16b\n"
1461 " ldr r1, =0xfc142d98\n"
1462 " blx sub_fc314e50\n"
1463 "loc_fc142cf2:\n"
1464 " ldr r0, =0xfffff400\n"
1465 " cmp r4, r0\n"
1466 " bne loc_fc142cfc\n"
1467 " ldrsh.w r4, [r5, #2]\n"
1468 "loc_fc142cfc:\n"
1469 " strh r4, [r5, #2]\n"
1470 " cmp r4, r0\n"
1471 " bne loc_fc142d0e\n"
1472 " movs r0, #0\n"
1473 " movw r2, #0x171\n"
1474 " ldr r1, =0xfc142d98\n"
1475 " blx sub_fc314e50\n"
1476 "loc_fc142d0e:\n"
1477 " mov r0, r4\n"
1478
1479 " bl apex2us\n"
1480 " mov r4, r0\n"
1481 " bl sub_fc2309fa\n"
1482 " mov r0, r4\n"
1483 " bl sub_fc15e4a8\n"
1484 " lsls r0, r0, #0x1f\n"
1485 " beq loc_fc142d34\n"
1486 " pop.w {r4, r5, r6, lr}\n"
1487 " movs r0, #0\n"
1488 " movw r2, #0x176\n"
1489 " ldr r1, =0xfc142d98\n"
1490 " b.w sub_fc314302\n"
1491 "loc_fc142d34:\n"
1492 " pop {r4, r5, r6, pc}\n"
1493 );
1494 }
1495