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_fc1b9426_my
- sub_fc1b929a_my
- sub_fc36fb9e_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 #ifdef CAPTSEQ_DEBUG_LOG
12 extern void _LogCameraEvent(int id,const char *fmt,...);
13 extern int active_raw_buffer;
14 extern char *hook_raw_image_addr(void);
15
16 void log_remote_hook(void)
17 {
18 _LogCameraEvent(0x60,"Remote Hook:");
19 }
20
21 void log_raw_hook(void) {
22 #ifdef VARIABLE_RAW_BUFFER
23 _LogCameraEvent(0x60,"Raw Hook: arb:%d rb:0x%08x rbc:0x%08x",active_raw_buffer,hook_raw_image_addr(),current_raw_addr2);
24 #else
25 _LogCameraEvent(0x60,"Raw Hook: arb:%d rb:0x%08x",active_raw_buffer,hook_raw_image_addr());
26 #endif
27 }
28
29 void log_capt_seq1(int m)
30 {
31 _LogCameraEvent(0x60,"Capture Sequence Start: m:%d arb:%d rb:0x%08x i:%04d",
32 m,
33 active_raw_buffer,
34 hook_raw_image_addr(),
35 get_exposure_counter());
36 }
37 void log_capt_seq2(int m)
38 {
39 _LogCameraEvent(0x60,"Capture Sequence End: m:%d arb:%d rb:0x%08x i:%04d",
40 m,
41 active_raw_buffer,
42 hook_raw_image_addr(),
43 get_exposure_counter());
44 }
45 void log_capt_seq3(void)
46 {
47 _LogCameraEvent(0x60,"Capture Sequence Override: arb:%d rb:0x%08x i:%04d",
48 active_raw_buffer,
49 hook_raw_image_addr(),
50 get_exposure_counter());
51
52 }
53 #endif
54
55 #include "../../../generic/capt_seq.c"
56
57
58
59
60
61
62 void __attribute__((naked,noinline)) capt_seq_task() {
63 asm volatile (
64 " push {r3, r4, r5, r6, r7, lr}\n"
65 " ldr r4, =0x00037518\n"
66 " movs r6, #0\n"
67 " ldr r5, =0x0000ba6c\n"
68 "loc_fc12dedc:\n"
69 " movs r2, #0\n"
70 " mov r1, sp\n"
71 " ldr r0, [r5, #4]\n"
72 " blx sub_fc29b440\n"
73 " lsls r0, r0, #0x1f\n"
74 " beq loc_fc12defe\n"
75 " movw r2, #0x429\n"
76 " ldr r1, =0xfc12db64\n"
77 " movs r0, #0\n"
78 " blx sub_fc29b538\n"
79 " blx sub_fc29b458\n"
80 " pop {r3, r4, r5, r6, r7, pc}\n"
81 "loc_fc12defe:\n"
82 " ldr r0, [sp]\n"
83 " ldr r0, [r0]\n"
84 " cmp r0, #1\n"
85 " beq loc_fc12df16\n"
86 " cmp r0, #0x2a\n"
87 " beq loc_fc12df16\n"
88 " cmp r0, #0x1e\n"
89 " beq loc_fc12df16\n"
90 " cmp r0, #0x21\n"
91 " beq loc_fc12df16\n"
92 " bl sub_fc1ba538\n"
93 "loc_fc12df16:\n"
94 #ifdef CAPTSEQ_DEBUG_LOG
95
96 "ldr r0, [sp]\n"
97 "ldr r0, [r0]\n"
98 "bl log_capt_seq1\n"
99 #endif
100 " ldr r0, [sp]\n"
101 " ldr r1, [r0]\n"
102 " cmp r1, #0x2c\n"
103 " bhs loc_fc12dffe\n"
104 " tbb [pc, r1]\n"
105 "branchtable_fc12df22:\n"
106 " .byte((loc_fc12df4e - branchtable_fc12df22) / 2)\n"
107 " .byte((loc_fc12df62 - branchtable_fc12df22) / 2)\n"
108 " .byte((loc_fc12df6a - branchtable_fc12df22) / 2)\n"
109 " .byte((loc_fc12df78 - branchtable_fc12df22) / 2)\n"
110 " .byte((loc_fc12df72 - branchtable_fc12df22) / 2)\n"
111 " .byte((loc_fc12df80 - branchtable_fc12df22) / 2)\n"
112 " .byte((loc_fc12df86 - branchtable_fc12df22) / 2)\n"
113 " .byte((loc_fc12df8c - branchtable_fc12df22) / 2)\n"
114 " .byte((loc_fc12df94 - branchtable_fc12df22) / 2)\n"
115 " .byte((loc_fc12dfd0 - branchtable_fc12df22) / 2)\n"
116 " .byte((loc_fc12df9e - branchtable_fc12df22) / 2)\n"
117 " .byte((loc_fc12dfa6 - branchtable_fc12df22) / 2)\n"
118 " .byte((loc_fc12dfac - branchtable_fc12df22) / 2)\n"
119 " .byte((loc_fc12dfb4 - branchtable_fc12df22) / 2)\n"
120 " .byte((loc_fc12dfc4 - branchtable_fc12df22) / 2)\n"
121 " .byte((loc_fc12dfca - branchtable_fc12df22) / 2)\n"
122 " .byte((loc_fc12dfd6 - branchtable_fc12df22) / 2)\n"
123 " .byte((loc_fc12dfdc - branchtable_fc12df22) / 2)\n"
124 " .byte((loc_fc12dfe2 - branchtable_fc12df22) / 2)\n"
125 " .byte((loc_fc12dfe8 - branchtable_fc12df22) / 2)\n"
126 " .byte((loc_fc12dfee - branchtable_fc12df22) / 2)\n"
127 " .byte((loc_fc12dff4 - branchtable_fc12df22) / 2)\n"
128 " .byte((loc_fc12dff8 - branchtable_fc12df22) / 2)\n"
129 " .byte((loc_fc12e000 - branchtable_fc12df22) / 2)\n"
130 " .byte((loc_fc12e006 - branchtable_fc12df22) / 2)\n"
131 " .byte((loc_fc12e00c - branchtable_fc12df22) / 2)\n"
132 " .byte((loc_fc12e012 - branchtable_fc12df22) / 2)\n"
133 " .byte((loc_fc12e018 - branchtable_fc12df22) / 2)\n"
134 " .byte((loc_fc12e020 - branchtable_fc12df22) / 2)\n"
135 " .byte((loc_fc12e026 - branchtable_fc12df22) / 2)\n"
136 " .byte((loc_fc12e02a - branchtable_fc12df22) / 2)\n"
137 " .byte((loc_fc12e032 - branchtable_fc12df22) / 2)\n"
138 " .byte((loc_fc12e038 - branchtable_fc12df22) / 2)\n"
139 " .byte((loc_fc12e03e - branchtable_fc12df22) / 2)\n"
140 " .byte((loc_fc12e044 - branchtable_fc12df22) / 2)\n"
141 " .byte((loc_fc12e04a - branchtable_fc12df22) / 2)\n"
142 " .byte((loc_fc12e050 - branchtable_fc12df22) / 2)\n"
143 " .byte((loc_fc12e056 - branchtable_fc12df22) / 2)\n"
144 " .byte((loc_fc12e05e - branchtable_fc12df22) / 2)\n"
145 " .byte((loc_fc12e064 - branchtable_fc12df22) / 2)\n"
146 " .byte((loc_fc12e06e - branchtable_fc12df22) / 2)\n"
147 " .byte((loc_fc12e09a - branchtable_fc12df22) / 2)\n"
148 " .byte((loc_fc12e0a0 - branchtable_fc12df22) / 2)\n"
149 " .byte((loc_fc12e0ba - branchtable_fc12df22) / 2)\n"
150 ".align 1\n"
151 "loc_fc12df4e:\n"
152 " bl sub_fc12e3f2\n"
153 #ifdef CAPTSEQ_DEBUG_LOG
154 "bl log_capt_seq3\n"
155 #endif
156 " BL shooting_expo_param_override\n"
157 " bl sub_fc12bbfa\n"
158 " ldr r0, [r4, #0x28]\n"
159 " cmp r0, #0\n"
160 " beq loc_fc12df60\n"
161
162 " bl sub_fc1b9426_my\n"
163 "loc_fc12df60:\n"
164 " b loc_fc12e0ba\n"
165 "loc_fc12df62:\n"
166 " ldr r0, [r0, #0x10]\n"
167
168 " bl sub_fc1b929a_my\n"
169 " b loc_fc12e0ba\n"
170 "loc_fc12df6a:\n"
171 " movs r0, #1\n"
172 " bl sub_fc12e672\n"
173 " b loc_fc12e0ba\n"
174 "loc_fc12df72:\n"
175 " bl sub_fc12e1be\n"
176 " b loc_fc12df7c\n"
177 "loc_fc12df78:\n"
178 " bl sub_fc12e3de\n"
179 "loc_fc12df7c:\n"
180 " str r6, [r4, #0x28]\n"
181 " b loc_fc12e0ba\n"
182 "loc_fc12df80:\n"
183 " bl sub_fc12e3e2\n"
184 " b loc_fc12e0ba\n"
185 "loc_fc12df86:\n"
186 " bl sub_fc12e57a\n"
187 " b loc_fc12df98\n"
188 "loc_fc12df8c:\n"
189 " ldr r0, [r0, #0x10]\n"
190 " bl sub_fc1b949a\n"
191 " b loc_fc12e0ba\n"
192 "loc_fc12df94:\n"
193 " bl sub_fc12e600\n"
194 "loc_fc12df98:\n"
195 " bl sub_fc12bbfa\n"
196 " b loc_fc12e0ba\n"
197 "loc_fc12df9e:\n"
198 " ldr r0, [r4, #0x50]\n"
199 " bl sub_fc12ebd8\n"
200 " b loc_fc12e0ba\n"
201 "loc_fc12dfa6:\n"
202 " bl sub_fc12ee6c\n"
203 " b loc_fc12e0ba\n"
204 "loc_fc12dfac:\n"
205 " ldr r0, [r0, #0xc]\n"
206 " bl sub_fc12eeb8\n"
207 " b loc_fc12e0ba\n"
208 "loc_fc12dfb4:\n"
209 " bl sub_fc12f032\n"
210 " b loc_fc12e0ba\n"
211
212 ".ltorg\n"
213
214
215
216
217
218
219
220 "loc_fc12dfc4:\n"
221 " bl sub_fc12f3f4\n"
222 " b loc_fc12e0ba\n"
223 "loc_fc12dfca:\n"
224 " bl sub_fc12f484\n"
225 " b loc_fc12e0ba\n"
226 "loc_fc12dfd0:\n"
227 " bl sub_fc12e3de\n"
228 " b loc_fc12e0ba\n"
229 "loc_fc12dfd6:\n"
230 " bl sub_fc1b8874\n"
231 " b loc_fc12e0ba\n"
232 "loc_fc12dfdc:\n"
233 " bl sub_fc1b8a02\n"
234 " b loc_fc12e0ba\n"
235 "loc_fc12dfe2:\n"
236 " bl sub_fc1b8a76\n"
237 " b loc_fc12e0ba\n"
238 "loc_fc12dfe8:\n"
239 " bl sub_fc1b8b08\n"
240 " b loc_fc12e0ba\n"
241 "loc_fc12dfee:\n"
242 " bl sub_fc1b8ba4\n"
243 " b loc_fc12e0ba\n"
244 "loc_fc12dff4:\n"
245 " movs r0, #0\n"
246 " b loc_fc12e01a\n"
247 "loc_fc12dff8:\n"
248 " bl sub_fc1b8e98\n"
249 " b loc_fc12e0ba\n"
250 "loc_fc12dffe:\n"
251 " b loc_fc12e0ac\n"
252 "loc_fc12e000:\n"
253 " bl sub_fc1b8ef6\n"
254 " b loc_fc12e0ba\n"
255 "loc_fc12e006:\n"
256 " bl sub_fc1b8efa\n"
257 " b loc_fc12e0ba\n"
258 "loc_fc12e00c:\n"
259 " bl sub_fc1b8f0c\n"
260 " b loc_fc12e0ba\n"
261 "loc_fc12e012:\n"
262 " bl sub_fc1b8f88\n"
263 " b loc_fc12e0ba\n"
264 "loc_fc12e018:\n"
265 " movs r0, #1\n"
266 "loc_fc12e01a:\n"
267 " bl sub_fc1b8d8c\n"
268 " b loc_fc12e0ba\n"
269 "loc_fc12e020:\n"
270 " bl sub_fc12e77e\n"
271 " b loc_fc12e0ba\n"
272 "loc_fc12e026:\n"
273 " movs r0, #0\n"
274 " b loc_fc12e02c\n"
275 "loc_fc12e02a:\n"
276 " ldr r0, [r0, #0xc]\n"
277 "loc_fc12e02c:\n"
278 " bl sub_fc12e7ce\n"
279 " b loc_fc12e0ba\n"
280 "loc_fc12e032:\n"
281 " bl sub_fc1b8cc0\n"
282 " b loc_fc12e0ba\n"
283 "loc_fc12e038:\n"
284 " bl sub_fc1b8d22\n"
285 " b loc_fc12e0ba\n"
286 "loc_fc12e03e:\n"
287 " bl sub_fc1b9ef6\n"
288 " b loc_fc12e0ba\n"
289 "loc_fc12e044:\n"
290 " bl sub_fc12c430\n"
291 " b loc_fc12e0ba\n"
292 "loc_fc12e04a:\n"
293 " bl sub_fc131580\n"
294 " b loc_fc12e0ba\n"
295 "loc_fc12e050:\n"
296 " bl sub_fc131630\n"
297 " b loc_fc12e0ba\n"
298 "loc_fc12e056:\n"
299 " ldr r0, [r0, #0xc]\n"
300 " bl sub_fc1b9048\n"
301 " b loc_fc12e0ba\n"
302 "loc_fc12e05e:\n"
303 " bl sub_fc1b90aa\n"
304 " b loc_fc12e0ba\n"
305 "loc_fc12e064:\n"
306 " bl sub_fc131720\n"
307 " bl sub_fc13166e\n"
308 " b loc_fc12e0ba\n"
309 "loc_fc12e06e:\n"
310 " movs r0, #1\n"
311 " bl sub_fc1b9b38\n"
312 " movs r0, #1\n"
313 " bl sub_fc1b9c02\n"
314 " ldrh.w r0, [r4, #0x198]\n"
315 " cmp r0, #4\n"
316 " beq loc_fc12e08c\n"
317 " ldrh r0, [r4]\n"
318 " sub.w r1, r0, #0x4200\n"
319 " subs r1, #0x31\n"
320 " bne loc_fc12e0ba\n"
321 "loc_fc12e08c:\n"
322 " bl sub_fc131630\n"
323 " bl sub_fc131b10\n"
324 " bl sub_fc131958\n"
325 " b loc_fc12e0ba\n"
326 "loc_fc12e09a:\n"
327 " movs r2, #0\n"
328 " movs r1, #0x10\n"
329 " b loc_fc12e0a4\n"
330 "loc_fc12e0a0:\n"
331 " movs r2, #0\n"
332 " movs r1, #0xf\n"
333 "loc_fc12e0a4:\n"
334 " movs r0, #0\n"
335 " bl sub_fc12c5fc\n"
336 " b loc_fc12e0ba\n"
337 "loc_fc12e0ac:\n"
338 " movw r2, #0x54d\n"
339 " ldr r1, =0xfc12db64\n"
340 " movs r0, #0\n"
341 " blx sub_fc29b538\n"
342 "loc_fc12e0ba:\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_fc29b420\n"
354 " ldr r7, [sp]\n"
355 " ldr r0, [r7, #8]\n"
356 " cbnz r0, loc_fc12e0d8\n"
357 " movw r2, #0x11e\n"
358 " ldr r1, =0xfc12db64\n"
359 " movs r0, #0\n"
360 " blx sub_fc29b538\n"
361 "loc_fc12e0d8:\n"
362 " str r6, [r7, #8]\n"
363 " b loc_fc12dedc\n"
364 ".ltorg\n"
365 );
366 }
367
368
369
370 void __attribute__((naked,noinline)) sub_fc1b9426_my() {
371 asm volatile (
372 " push {r4, r5, r6, lr}\n"
373 " bl sub_fc12d5f8\n"
374 " mov r4, r0\n"
375 " movs r0, #0xc\n"
376 " bl sub_fc2b71dc\n"
377 " ldr r6, =0x00014778\n"
378 " lsls r0, r0, #0x1f\n"
379 " mov.w r5, #1\n"
380 " bne loc_fc1b9496\n"
381 " bl sub_fc2b720e\n"
382 " lsls r0, r0, #0x1f\n"
383 " bne loc_fc1b9496\n"
384 " bl sub_fc12e3e6\n"
385 " bl sub_fc12ff64\n"
386 " mov r1, r4\n"
387 " bl sub_fc12ffaa\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_fc1b9cf2\n"
401 " mvn r1, #0x1000\n"
402 " blx sub_fc29b460\n"
403 " mov r0, r4\n"
404 " bl sub_fc36f908\n"
405 " mov r0, r4\n"
406
407 " bl sub_fc36fb9e_my\n"
408 " lsls r0, r0, #0x1f\n"
409 " beq loc_fc1b9498\n"
410 "loc_fc1b9496:\n"
411 " str r5, [r6]\n"
412 "loc_fc1b9498:\n"
413 " pop {r4, r5, r6, pc}\n"
414 ".ltorg\n"
415 );
416 }
417
418
419 void __attribute__((naked,noinline)) sub_fc1b929a_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_fc1b92c2\n"
427 " ldr r0, =0x00014778\n"
428 " ldr r0, [r0]\n"
429 " cbz r0, loc_fc1b92ae\n"
430 " movs r5, #0x1d\n"
431 "loc_fc1b92ae:\n"
432 " mov r2, r4\n"
433 " movs r1, #1\n"
434 " mov r0, r5\n"
435 " bl sub_fc12c5fc\n"
436 " mov r1, r5\n"
437 " mov r0, r4\n"
438 " bl sub_fc1ba396\n"
439 " b loc_fc1b9420\n"
440 "loc_fc1b92c2:\n"
441 " bl sub_fc12ff64\n"
442 " mov r1, r4\n"
443 " bl sub_fc12ffaa\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_fc1b931a\n"
454 " ldrh.w r0, [r6, #0x196]\n"
455 " cmp r0, #3\n"
456 " beq loc_fc1b92fa\n"
457 " ldr r0, [r4, #8]\n"
458 " cmp r0, #1\n"
459 " bhi loc_fc1b9306\n"
460 "loc_fc1b92fa:\n"
461 " ldr.w r0, [r6, #0x104]\n"
462 " cbz r0, loc_fc1b931a\n"
463 " ldr r0, [r4, #0xc]\n"
464 " cmp r0, #1\n"
465 " bls loc_fc1b931a\n"
466 "loc_fc1b9306:\n"
467 " ldr.w r0, [r6, #0xe4]\n"
468 " cbnz r0, loc_fc1b9332\n"
469 " bl sub_fc11a472\n"
470 " lsls r0, r0, #0x1f\n"
471 " beq loc_fc1b9332\n"
472 " bl sub_fc2b7248\n"
473 " b loc_fc1b9330\n"
474 "loc_fc1b931a:\n"
475 " movs r0, #0xc\n"
476 " bl sub_fc2b71dc\n"
477 " lsls r0, r0, #0x1f\n"
478 " bne loc_fc1b932c\n"
479 " bl sub_fc2b720e\n"
480 " lsls r0, r0, #0x1f\n"
481 " beq loc_fc1b9332\n"
482 "loc_fc1b932c:\n"
483 " bl sub_fc12c426\n"
484 "loc_fc1b9330:\n"
485 " movs r5, #1\n"
486 "loc_fc1b9332:\n"
487 " lsls r0, r5, #0x1f\n"
488 " bne loc_fc1b940e\n"
489 " mov r0, r4\n"
490 " bl sub_fc1b9f40\n"
491 " bl sub_fc1b9cf2\n"
492 " mvn r1, #0x1000\n"
493 " blx sub_fc29b460\n"
494 " mov r0, r4\n"
495 " bl sub_fc36f1a0\n"
496 " mov r5, r0\n"
497 " lsls r0, r0, #0x1f\n"
498 " bne loc_fc1b940e\n"
499 " bl sub_fc12e3e6\n"
500 " mov r0, r4\n"
501 " bl sub_fc36f908\n"
502 " ldr.w r0, [r6, #0x128]\n"
503 " cbnz r0, loc_fc1b9372\n"
504 " ldrh.w r0, [r6, #0x196]\n"
505 " cmp r0, #3\n"
506 " beq loc_fc1b9372\n"
507 " ldr r0, [r4, #8]\n"
508 " cmp r0, #1\n"
509 " bhi loc_fc1b9378\n"
510 "loc_fc1b9372:\n"
511 " movs r0, #2\n"
512 " bl sub_fc1342ba\n"
513 "loc_fc1b9378:\n"
514 " ldr.w r0, [r6, #0xa0]\n"
515 " cmp r0, #0\n"
516 " beq loc_fc1b93ea\n"
517 " ldrh.w r0, [r6, #0x196]\n"
518 " movw r5, #0x1000\n"
519 " cmp r0, #3\n"
520 " beq loc_fc1b93a8\n"
521 " ldr r0, [r4, #8]\n"
522 " cmp r0, #1\n"
523 " bls loc_fc1b93a8\n"
524 " bl sub_fc1b9cf2\n"
525 " movw r3, #0x119\n"
526 " movw r2, #0x3a98\n"
527 " mov r1, r5\n"
528 " str r3, [sp]\n"
529 " ldr r3, =0xfc1b9570\n"
530 " bl sub_fc2b73b4\n"
531 "loc_fc1b93a8:\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_fc1b93c4\n"
538 " movs r0, #0\n"
539 " movw r2, #0x11d\n"
540 " ldr r1, =0xfc1b9570\n"
541 " blx sub_fc29b538\n"
542 "loc_fc1b93c4:\n"
543 " ldr r0, [sp, #4]\n"
544 " cbnz r0, loc_fc1b93d4\n"
545 " bl sub_fc1b9cf2\n"
546 " mov r1, r5\n"
547 " blx sub_fc29b420\n"
548 " b loc_fc1b93ea\n"
549 "loc_fc1b93d4:\n"
550 " bl sub_fc1b9cf2\n"
551 " mov r1, r5\n"
552 " blx sub_fc29b460\n"
553 " ldr r2, =0xfc1b9289\n"
554 " mov r3, r5\n"
555 " ldr r0, [sp, #4]\n"
556 " mov r1, r2\n"
557 " bl sub_fc3005e0\n"
558 "loc_fc1b93ea:\n"
559 " ldr.w r0, [r6, #0xac]\n"
560 " cbz r0, loc_fc1b93f8\n"
561 " mov r0, r4\n"
562 " bl sub_fc36ffe4\n"
563 " b loc_fc1b9420\n"
564 "loc_fc1b93f8:\n"
565 " ldr.w r0, [r6, #0xb0]\n"
566 " cmp r0, #0\n"
567 " mov r0, r4\n"
568 " beq loc_fc1b9408\n"
569 " bl sub_fc3702de\n"
570 " b loc_fc1b9420\n"
571 "loc_fc1b9408:\n"
572
573 " bl sub_fc36fb9e_my\n"
574 " b loc_fc1b9420\n"
575 "loc_fc1b940e:\n"
576 " movs r1, #1\n"
577 " mov r2, r4\n"
578 " mov r0, r5\n"
579 " bl sub_fc12c5fc\n"
580 " mov r1, r5\n"
581 " mov r0, r4\n"
582 " bl sub_fc1ba4cc\n"
583 "loc_fc1b9420:\n"
584 " movs r0, #0\n"
585 " str r0, [r6, #0x28]\n"
586 " pop {r2, r3, r4, r5, r6, pc}\n"
587 ".ltorg\n"
588 );
589 }
590
591
592
593 void __attribute__((naked,noinline)) sub_fc36fb9e_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_fc36fbba\n"
600 " ldrh.w r0, [r7, #0x196]\n"
601 " cmp r0, #3\n"
602 " beq loc_fc36fbba\n"
603 " ldr r0, [r4, #8]\n"
604 " cmp r0, #1\n"
605 " bhi loc_fc36fbc4\n"
606 "loc_fc36fbba:\n"
607 " mov r0, r4\n"
608 " bl sub_fc36f89e\n"
609 " bl sub_fc1b9962\n"
610 "loc_fc36fbc4:\n"
611 " ldr.w r0, [r7, #0x9c]\n"
612 " cbnz r0, loc_fc36fbe0\n"
613 " ldrh.w r0, [r7, #0x196]\n"
614 " cmp r0, #3\n"
615 " beq loc_fc36fbd8\n"
616 " ldr r0, [r4, #8]\n"
617 " cmp r0, #1\n"
618 " bhi loc_fc36fbe0\n"
619 "loc_fc36fbd8:\n"
620 " bl sub_fc12e7ca\n"
621 " bl sub_fc1b95a2\n"
622 "loc_fc36fbe0:\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_fc36fbfc\n"
629 " movs r0, #0\n"
630 " movw r2, #0x18c\n"
631 " ldr r1, =0xfc36ff48\n"
632 " blx sub_fc29b538\n"
633 "loc_fc36fbfc:\n"
634 " ldr r0, [sp, #4]\n"
635 " ubfx r0, r0, #8, #8\n"
636 " cmp r0, #6\n"
637 " bne loc_fc36fc0c\n"
638 " ldr r0, =0xfc36fb77\n"
639 " movs r1, #0\n"
640 " b loc_fc36fc10\n"
641 "loc_fc36fc0c:\n"
642 " ldr r0, =0xfc36f5c7\n"
643 " mov r1, r4\n"
644 "loc_fc36fc10:\n"
645 " bl sub_fc14f878\n"
646 " mov r0, r4\n"
647 " bl sub_fc36f9b4\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_fc36fc34\n"
654 " movs r0, #0\n"
655 " movw r2, #0x19b\n"
656 " ldr r1, =0xfc36ff48\n"
657 " blx sub_fc29b538\n"
658 "loc_fc36fc34:\n"
659 " bl sub_fc130afc\n"
660 " bl sub_fc36fa50\n"
661 " movs r1, #0\n"
662 " mov r0, r4\n"
663 " bl sub_fc36ff1a\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_fc36fc54\n"
673 " ldr r2, =0xfc36f72f\n"
674 " b loc_fc36fc56\n"
675 "loc_fc36fc54:\n"
676 " ldr r2, =0xfc36f7b7\n"
677 "loc_fc36fc56:\n"
678 " ldrh r0, [r4, #0x18]\n"
679 " ldr r5, =0x00023450\n"
680 " cbz r0, loc_fc36fc64\n"
681 " cmp r0, #1\n"
682 " beq loc_fc36fc7a\n"
683 " cmp r0, #4\n"
684 " bne loc_fc36fcde\n"
685 "loc_fc36fc64:\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_fc36f492\n"
692 " mov r5, r0\n"
693 " bl sub_fc14d3f4\n"
694 " b loc_fc36fcec\n"
695 "loc_fc36fc7a:\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_fc36f4de\n"
703 " movs r1, #0\n"
704 " mov r5, r0\n"
705 " movs r0, #0x45\n"
706 " bl sub_fc25cd04\n"
707 " lsls r0, r5, #0x1f\n"
708 " bne loc_fc36fcec\n"
709 " ldr.w r0, [r7, #0xf8]\n"
710 " cbz r0, loc_fc36fcae\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_fc36fcd8\n"
717 "loc_fc36fcae:\n"
718 " ldr r0, =0xfc36fb77\n"
719 " movs r1, #0\n"
720 " bl sub_fc14f878\n"
721 " movs r1, #1\n"
722 " mov r0, r4\n"
723 " bl sub_fc36ff1a\n"
724 " mov r6, r0\n"
725 " ldr.w r0, [r8]\n"
726 " mov r5, r8\n"
727 " bl sub_fc36f840\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_fc36f52e\n"
733 " mov r5, r0\n"
734 "loc_fc36fcd8:\n"
735 " bl sub_fc36f43c\n"
736 " b loc_fc36fcec\n"
737 "loc_fc36fcde:\n"
738 " movs r0, #0\n"
739 " movw r2, #0x1d5\n"
740 " ldr r1, =0xfc36ff48\n"
741 " blx sub_fc29b538\n"
742 " movs r5, #0x1d\n"
743 "loc_fc36fcec:\n"
744 " bl sub_fc36fa54\n"
745 " ldr.w r8, =0xfc36fb77\n"
746 " lsls r0, r5, #0x1f\n"
747 " bne loc_fc36fd48\n"
748 " ldr.w r0, [r7, #0x100]\n"
749 " cbnz r0, loc_fc36fd14\n"
750 " mov r0, r4\n"
751 " bl sub_fc1ba95e\n"
752 " lsls r0, r0, #0x1f\n"
753 " beq loc_fc36fd14\n"
754 " movs r0, #0\n"
755 " movw r2, #0x1ef\n"
756 " ldr r1, =0xfc36ff48\n"
757 " blx sub_fc29b538\n"
758 "loc_fc36fd14:\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_fc36fa40\n"
765 " mov r0, r4\n"
766 " bl sub_fc36fa14\n"
767 " cmp r6, r8\n"
768 " beq loc_fc36fd48\n"
769 " bl sub_fc1b9cf2\n"
770 " movs r1, #4\n"
771 " movw sb, #0x1fc\n"
772 " ldr r3, =0xfc36ff48\n"
773 " movw r2, #0x3a98\n"
774 " str.w sb, [sp]\n"
775 " bl sub_fc2b73b4\n"
776 " cbz r0, loc_fc36fd48\n"
777 " movs r0, #0\n"
778 " mov r2, sb\n"
779 " ldr r1, =0xfc36ff48\n"
780 " blx sub_fc29b538\n"
781 "loc_fc36fd48:\n"
782 " movs r1, #1\n"
783 " mov r2, r4\n"
784 " mov r0, r5\n"
785 " bl sub_fc12c5fc\n"
786 " ldr r0, [r7, #0x28]\n"
787 " cmp r0, #0\n"
788 " mov r0, r8\n"
789 " beq loc_fc36fd6e\n"
790 " cmp r6, r0\n"
791 " beq loc_fc36fd62\n"
792 " movs r1, #1\n"
793 " b loc_fc36fd64\n"
794 "loc_fc36fd62:\n"
795 " movs r1, #0\n"
796 "loc_fc36fd64:\n"
797 " mov r2, r5\n"
798 " mov r0, r4\n"
799 " bl sub_fc1ba354\n"
800 " b loc_fc36fd80\n"
801 "loc_fc36fd6e:\n"
802 " cmp r6, r0\n"
803 " beq loc_fc36fd76\n"
804 " movs r1, #1\n"
805 " b loc_fc36fd78\n"
806 "loc_fc36fd76:\n"
807 " movs r1, #0\n"
808 "loc_fc36fd78:\n"
809 " mov r2, r5\n"
810 " mov r0, r4\n"
811 " bl sub_fc1ba30e\n"
812 "loc_fc36fd80:\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