This source file includes following definitions.
- log_capt_seq
- log_capt_seq2
- log_capt_seq_override
- captseq_raw_addr_init_my
- clear_current_raw_addr
- capt_seq_task
- sub_fc1e58d8_my
- sub_fc1e56a6_my
- log_nr_call
- log_remote_hook
- log_rh
- sub_fc3d3872_my
- log_dvlp_seq
- log_dvlp_raw_hook
- log_dvlp_seq_1
- log_dvlp_seq_start
- developseq_task
1 #include "lolevel.h"
2 #include "platform.h"
3 #include "core.h"
4
5
6
7 extern void _LogCameraEvent(int id,const char *fmt,...);
8
9 #define USE_STUBS_NRFLAG 1
10 #define NR_AUTO (-1)
11
12 #ifdef CAPTSEQ_DEBUG_LOG
13 extern int active_raw_buffer;
14
15 extern char *hook_raw_image_addr(void);
16
17 void log_capt_seq(int m)
18 {
19 _LogCameraEvent(0x60,"cs m:%d arb:%d rb:0x%08x i:%04d",
20 m,
21 active_raw_buffer,
22 hook_raw_image_addr(),
23 get_exposure_counter());
24 }
25 void log_capt_seq2(int m)
26 {
27 _LogCameraEvent(0x60,"cs end m:%d arb:%d rb:0x%08x i:%04d",
28 m,
29 active_raw_buffer,
30 hook_raw_image_addr(),
31 get_exposure_counter());
32 }
33 void log_capt_seq_override(void)
34 {
35 _LogCameraEvent(0x60,"cs override arb:%d rb:0x%08x i:%04d",
36 active_raw_buffer,
37 hook_raw_image_addr(),
38 get_exposure_counter());
39 }
40 #endif
41
42 #include "../../../generic/capt_seq.c"
43
44
45
46 extern int _captseq_raw_addr_init(int raw_index, char **ptr);
47 char *current_raw_addr;
48
49 void captseq_raw_addr_init_my(int raw_index,char **ptr) {
50 _captseq_raw_addr_init(raw_index,ptr);
51 current_raw_addr=*(ptr + 0x5c/4);
52 #ifdef CAPTSEQ_DEBUG_LOG
53 _LogCameraEvent(0x60,"rawinit i:0x%x p:0x%x v:0x%x",raw_index,ptr,current_raw_addr);
54 #endif
55 }
56
57 void clear_current_raw_addr(void) {
58 current_raw_addr=NULL;
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, =0x0003fad4\n"
67 " movs r6, #0\n"
68 " ldr r5, =0x0000bd84\n"
69 "loc_fc1501e0:\n"
70 " movs r2, #0\n"
71 " mov r1, sp\n"
72 " ldr r0, [r5, #8]\n"
73 " blx sub_fc2ef8ec\n"
74 " lsls r0, r0, #0x1f\n"
75 " beq loc_fc150202\n"
76 " movw r2, #0x449\n"
77 " ldr r1, =0xfc14fe88\n"
78 " movs r0, #0\n"
79 " blx sub_fc2ef9e4\n"
80 " blx sub_fc2ef90c\n"
81 " pop {r3, r4, r5, r6, r7, pc}\n"
82 "loc_fc150202:\n"
83 " ldr r0, [sp]\n"
84 " ldr r0, [r0]\n"
85 " cmp r0, #1\n"
86 " beq loc_fc15021a\n"
87 " cmp r0, #0x28\n"
88 " beq loc_fc15021a\n"
89 " cmp r0, #0x1d\n"
90 " beq loc_fc15021a\n"
91 " cmp r0, #0x20\n"
92 " beq loc_fc15021a\n"
93 " bl sub_fc1e67ac\n"
94 "loc_fc15021a:\n"
95
96 #ifdef CAPTSEQ_DEBUG_LOG
97 "ldr r0, [sp]\n"
98 "ldr r0, [r0]\n"
99 "bl log_capt_seq\n"
100 #endif
101 " ldr r0, [sp]\n"
102 " ldr r1, [r0]\n"
103 " cmp r1, #0x2b\n"
104 " bhs loc_fc150304\n"
105 " tbb [pc, r1]\n"
106 "branchtable_fc150226:\n"
107 " .byte((loc_fc150252 - branchtable_fc150226) / 2)\n"
108 " .byte((loc_fc150268 - branchtable_fc150226) / 2)\n"
109 " .byte((loc_fc150270 - branchtable_fc150226) / 2)\n"
110 " .byte((loc_fc15027e - branchtable_fc150226) / 2)\n"
111 " .byte((loc_fc150278 - branchtable_fc150226) / 2)\n"
112 " .byte((loc_fc150288 - branchtable_fc150226) / 2)\n"
113 " .byte((loc_fc15028e - branchtable_fc150226) / 2)\n"
114 " .byte((loc_fc150294 - branchtable_fc150226) / 2)\n"
115 " .byte((loc_fc15029c - branchtable_fc150226) / 2)\n"
116 " .byte((loc_fc1502da - branchtable_fc150226) / 2)\n"
117 " .byte((loc_fc1502a6 - branchtable_fc150226) / 2)\n"
118 " .byte((loc_fc1502ae - branchtable_fc150226) / 2)\n"
119 " .byte((loc_fc1502c0 - branchtable_fc150226) / 2)\n"
120 " .byte((loc_fc1502c8 - branchtable_fc150226) / 2)\n"
121 " .byte((loc_fc1502ce - branchtable_fc150226) / 2)\n"
122 " .byte((loc_fc1502d4 - branchtable_fc150226) / 2)\n"
123 " .byte((loc_fc1502e2 - branchtable_fc150226) / 2)\n"
124 " .byte((loc_fc1502e8 - branchtable_fc150226) / 2)\n"
125 " .byte((loc_fc1502ee - branchtable_fc150226) / 2)\n"
126 " .byte((loc_fc1502f4 - branchtable_fc150226) / 2)\n"
127 " .byte((loc_fc1502fa - branchtable_fc150226) / 2)\n"
128 " .byte((loc_fc1502fe - branchtable_fc150226) / 2)\n"
129 " .byte((loc_fc150306 - branchtable_fc150226) / 2)\n"
130 " .byte((loc_fc15030c - branchtable_fc150226) / 2)\n"
131 " .byte((loc_fc150312 - branchtable_fc150226) / 2)\n"
132 " .byte((loc_fc150318 - branchtable_fc150226) / 2)\n"
133 " .byte((loc_fc15031e - branchtable_fc150226) / 2)\n"
134 " .byte((loc_fc150326 - branchtable_fc150226) / 2)\n"
135 " .byte((loc_fc15032c - branchtable_fc150226) / 2)\n"
136 " .byte((loc_fc150330 - branchtable_fc150226) / 2)\n"
137 " .byte((loc_fc150338 - branchtable_fc150226) / 2)\n"
138 " .byte((loc_fc15033e - branchtable_fc150226) / 2)\n"
139 " .byte((loc_fc150344 - branchtable_fc150226) / 2)\n"
140 " .byte((loc_fc15034a - branchtable_fc150226) / 2)\n"
141 " .byte((loc_fc150350 - branchtable_fc150226) / 2)\n"
142 " .byte((loc_fc150356 - branchtable_fc150226) / 2)\n"
143 " .byte((loc_fc15035c - branchtable_fc150226) / 2)\n"
144 " .byte((loc_fc150364 - branchtable_fc150226) / 2)\n"
145 " .byte((loc_fc15036a - branchtable_fc150226) / 2)\n"
146 " .byte((loc_fc15039a - branchtable_fc150226) / 2)\n"
147 " .byte((loc_fc1503a0 - branchtable_fc150226) / 2)\n"
148 " .byte((loc_fc15038e - branchtable_fc150226) / 2)\n"
149 " .byte((loc_fc1503ba - branchtable_fc150226) / 2)\n"
150 ".align 1\n"
151 "loc_fc150252:\n"
152 " ldr r0, [r0, #0xc]\n"
153 " bl sub_fc15073a\n"
154 #ifdef CAPTSEQ_DEBUG_LOG
155 "bl log_capt_seq_override\n"
156 #endif
157 " BL clear_current_raw_addr\n"
158 " BL shooting_expo_param_override\n"
159 " bl sub_fc14dc2e\n"
160 " ldr r0, [r4, #0x28]\n"
161 " cmp r0, #0\n"
162 " beq loc_fc150266\n"
163 " bl sub_fc1e58d8_my\n"
164 "loc_fc150266:\n"
165 " b loc_fc1503ba\n"
166 "loc_fc150268:\n"
167 " ldr r0, [r0, #0x10]\n"
168 " bl sub_fc1e56a6_my\n"
169 " b loc_fc1503ba\n"
170 "loc_fc150270:\n"
171 " movs r0, #1\n"
172 " bl sub_fc1509dc\n"
173 " b loc_fc1503ba\n"
174 "loc_fc150278:\n"
175 " bl sub_fc1504c2\n"
176 " b loc_fc150284\n"
177 "loc_fc15027e:\n"
178 " ldr r0, [r0, #0xc]\n"
179 " bl sub_fc150722\n"
180 "loc_fc150284:\n"
181 " str r6, [r4, #0x28]\n"
182 " b loc_fc1503ba\n"
183 "loc_fc150288:\n"
184 " bl sub_fc150728\n"
185 " b loc_fc1503ba\n"
186 "loc_fc15028e:\n"
187 " bl sub_fc150902\n"
188 " b loc_fc1502a0\n"
189 "loc_fc150294:\n"
190 " ldr r0, [r0, #0x10]\n"
191 " bl sub_fc1e5980\n"
192 " b loc_fc1503ba\n"
193 "loc_fc15029c:\n"
194 " bl sub_fc150964\n"
195 "loc_fc1502a0:\n"
196 " bl sub_fc14dc2e\n"
197 " b loc_fc1503ba\n"
198 "loc_fc1502a6:\n"
199 " ldr r0, [r4, #0x54]\n"
200 " bl sub_fc150f38\n"
201 " b loc_fc1503ba\n"
202 "loc_fc1502ae:\n"
203 " bl sub_fc15118a\n"
204 " b loc_fc1503ba\n"
205 ".ltorg\n"
206
207
208
209
210
211
212 "loc_fc1502c0:\n"
213 " ldr r0, [r0, #0xc]\n"
214 " bl sub_fc1511d6\n"
215 " b loc_fc1503ba\n"
216 "loc_fc1502c8:\n"
217 " bl sub_fc15138e\n"
218 " b loc_fc1503ba\n"
219 "loc_fc1502ce:\n"
220 " bl sub_fc151770\n"
221 " b loc_fc1503ba\n"
222 "loc_fc1502d4:\n"
223 " bl sub_fc151806\n"
224 " b loc_fc1503ba\n"
225 "loc_fc1502da:\n"
226 " ldr r0, [r0, #0xc]\n"
227 " bl sub_fc150722\n"
228 " b loc_fc1503ba\n"
229 "loc_fc1502e2:\n"
230 " bl sub_fc1e432c\n"
231 " b loc_fc1503ba\n"
232 "loc_fc1502e8:\n"
233 " bl sub_fc1e44d4\n"
234 " b loc_fc1503ba\n"
235 "loc_fc1502ee:\n"
236 " bl sub_fc1e4568\n"
237 " b loc_fc1503ba\n"
238 "loc_fc1502f4:\n"
239 " bl sub_fc1e45f4\n"
240 " b loc_fc1503ba\n"
241 "loc_fc1502fa:\n"
242 " movs r0, #0\n"
243 " b loc_fc150320\n"
244 "loc_fc1502fe:\n"
245 " bl sub_fc1e48e8\n"
246 " b loc_fc1503ba\n"
247 "loc_fc150304:\n"
248 " b loc_fc1503ac\n"
249 "loc_fc150306:\n"
250 " bl sub_fc1e4948\n"
251 " b loc_fc1503ba\n"
252 "loc_fc15030c:\n"
253 " bl sub_fc1e494c\n"
254 " b loc_fc1503ba\n"
255 "loc_fc150312:\n"
256 " bl sub_fc1e495c\n"
257 " b loc_fc1503ba\n"
258 "loc_fc150318:\n"
259 " bl sub_fc1e49d4\n"
260 " b loc_fc1503ba\n"
261 "loc_fc15031e:\n"
262 " movs r0, #1\n"
263 "loc_fc150320:\n"
264 " bl sub_fc1e47c8\n"
265 " b loc_fc1503ba\n"
266 "loc_fc150326:\n"
267 " bl sub_fc150abe\n"
268 " b loc_fc1503ba\n"
269 "loc_fc15032c:\n"
270 " movs r0, #0\n"
271 " b loc_fc150332\n"
272 "loc_fc150330:\n"
273 " ldr r0, [r0, #0xc]\n"
274 "loc_fc150332:\n"
275 " bl sub_fc150b1e\n"
276 " b loc_fc1503ba\n"
277 "loc_fc150338:\n"
278 " bl sub_fc1e46f2\n"
279 " b loc_fc1503ba\n"
280 "loc_fc15033e:\n"
281 " bl sub_fc1e4758\n"
282 " b loc_fc1503ba\n"
283 "loc_fc150344:\n"
284 " bl sub_fc1e6188\n"
285 " b loc_fc1503ba\n"
286 "loc_fc15034a:\n"
287 " bl sub_fc14e6c0\n"
288 " b loc_fc1503ba\n"
289 "loc_fc150350:\n"
290 " bl sub_fc2bff66\n"
291 " b loc_fc1503ba\n"
292 "loc_fc150356:\n"
293 " bl sub_fc2c0040\n"
294 " b loc_fc1503ba\n"
295 "loc_fc15035c:\n"
296 " ldr r0, [r0, #0xc]\n"
297 " bl sub_fc1e4aa8\n"
298 " b loc_fc1503ba\n"
299 "loc_fc150364:\n"
300 " bl sub_fc1e4b10\n"
301 " b loc_fc1503ba\n"
302 "loc_fc15036a:\n"
303 " bl sub_fc155bea\n"
304 " ldrh.w r0, [r4, #0x1a4]\n"
305 " cmp r0, #4\n"
306 " beq loc_fc150380\n"
307 " ldrh r0, [r4]\n"
308 " sub.w r1, r0, #0x4200\n"
309 " subs r1, #0x36\n"
310 " bne loc_fc1503ba\n"
311 "loc_fc150380:\n"
312 " bl sub_fc2c0040\n"
313 " bl sub_fc2c0556\n"
314 " bl sub_fc2c039e\n"
315 " b loc_fc1503ba\n"
316 "loc_fc15038e:\n"
317 " bl sub_fc151a02\n"
318 " movs r0, #1\n"
319 " bl sub_fc154066\n"
320 " b loc_fc1503ba\n"
321 "loc_fc15039a:\n"
322 " movs r2, #0\n"
323 " movs r1, #0x11\n"
324 " b loc_fc1503a4\n"
325 "loc_fc1503a0:\n"
326 " movs r2, #0\n"
327 " movs r1, #0x10\n"
328 "loc_fc1503a4:\n"
329 " movs r0, #0\n"
330 " bl sub_fc14e934\n"
331 " b loc_fc1503ba\n"
332 "loc_fc1503ac:\n"
333 " movw r2, #0x575\n"
334 " ldr r1, =0xfc14fe88\n"
335 " movs r0, #0\n"
336 " blx sub_fc2ef9e4\n"
337 "loc_fc1503ba:\n"
338 #ifdef CAPTSEQ_DEBUG_LOG
339
340 "ldr r0, [sp]\n"
341 "ldr r0, [r0]\n"
342 "bl log_capt_seq2\n"
343 #endif
344 " ldr r0, [sp]\n"
345 " ldr r1, [r0, #4]\n"
346 " ldr r0, [r5, #4]\n"
347 " blx sub_fc2ef84c\n"
348 " ldr r7, [sp]\n"
349 " ldr r0, [r7, #8]\n"
350 " cbnz r0, loc_fc1503d8\n"
351 " movw r2, #0x12a\n"
352 " ldr r1, =0xfc14fe88\n"
353 " movs r0, #0\n"
354 " blx sub_fc2ef9e4\n"
355 "loc_fc1503d8:\n"
356 " str r6, [r7, #8]\n"
357 " b loc_fc1501e0\n"
358 ".ltorg\n"
359 );
360 }
361
362
363 void __attribute__((naked,noinline)) sub_fc1e58d8_my() {
364 asm volatile (
365 " push {r3, r4, r5, r6, r7, lr}\n"
366 " bl sub_fc14f946\n"
367 " mov r4, r0\n"
368 " movs r0, #0xc\n"
369 " bl sub_fc2f775c\n"
370 " ldr r6, =0x0001474c\n"
371 " lsls r0, r0, #0x1f\n"
372 " mov.w r5, #1\n"
373 " bne loc_fc1e5972\n"
374 " movs r2, #2\n"
375 " mov r1, sp\n"
376 " movw r0, #0x110\n"
377 " bl _GetPropertyCase\n"
378 " lsls r0, r0, #0x1f\n"
379 " beq loc_fc1e590c\n"
380 " movs r0, #0\n"
381 " movw r2, #0x174\n"
382 " ldr r1, =0xfc1e5a5c\n"
383 " blx sub_fc2ef9e4\n"
384 "loc_fc1e590c:\n"
385 " ldrsh.w r0, [sp]\n"
386 " bl sub_fc134e86\n"
387 " bl sub_fc134d5e\n"
388 " cmp r0, #1\n"
389 " bls loc_fc1e5976\n"
390 " movs r0, #0\n"
391 " bl sub_fc134e16\n"
392 " bl sub_fc15072e\n"
393 " bl sub_fc152724\n"
394 " mov r1, r4\n"
395
396 "bl captseq_raw_addr_init_my\n"
397 " movs r2, #4\n"
398 " movw r0, #0x116\n"
399 " add.w r1, r4, #0x58\n"
400 " bl _SetPropertyCase\n"
401 " movs r2, #4\n"
402 " movs r0, #0x30\n"
403 " add.w r1, r4, #0x5c\n"
404 " bl _SetPropertyCase\n"
405 " movs r2, #4\n"
406 " movs r0, #0x44\n"
407 " add.w r1, r4, #8\n"
408 " bl _SetPropertyCase\n"
409 " bl sub_fc1e5fb2\n"
410 " mvn r1, #0x1000\n"
411 " blx sub_fc2ef91c\n"
412 " mov r0, r4\n"
413 " bl sub_fc1e5450\n"
414 " mov r0, r4\n"
415 " bl sub_fc3d3872_my\n"
416 " lsls r0, r0, #0x1f\n"
417 " beq loc_fc1e5974\n"
418 "loc_fc1e5972:\n"
419 " str r5, [r6]\n"
420 "loc_fc1e5974:\n"
421 " pop {r3, r4, r5, r6, r7, pc}\n"
422 "loc_fc1e5976:\n"
423 " bl sub_fc14e6b6\n"
424 " bl sub_fc2f779c\n"
425 " pop {r3, r4, r5, r6, r7, pc}\n"
426 ".ltorg\n"
427 );
428 }
429
430
431 void __attribute__((naked,noinline)) sub_fc1e56a6_my() {
432 asm volatile (
433 " push.w {r2, r3, r4, r5, r6, r7, r8, lr}\n"
434 " ldr r5, =0x0003fad4\n"
435 " mov r4, r0\n"
436 " movs r6, #0\n"
437 " ldr r0, [r5, #0x28]\n"
438 " cbz r0, loc_fc1e56d0\n"
439 " ldr r0, =0x0001474c\n"
440 " ldr r0, [r0]\n"
441 " cbz r0, loc_fc1e56bc\n"
442 " movs r6, #0x1d\n"
443 "loc_fc1e56bc:\n"
444 " mov r2, r4\n"
445 " movs r1, #2\n"
446 " mov r0, r6\n"
447 " bl sub_fc14e934\n"
448 " mov r1, r6\n"
449 " mov r0, r4\n"
450 " bl sub_fc1e660a\n"
451 " b loc_fc1e58d0\n"
452 "loc_fc1e56d0:\n"
453 " bl sub_fc152724\n"
454 " mov r1, r4\n"
455
456 "bl captseq_raw_addr_init_my\n"
457 " movw r7, #0x116\n"
458 " movs r2, #4\n"
459 " mov r0, r7\n"
460 " add.w r1, r4, #0x58\n"
461 " bl _SetPropertyCase\n"
462 " movs r2, #4\n"
463 " movs r0, #0x30\n"
464 " add.w r1, r4, #0x5c\n"
465 " bl _SetPropertyCase\n"
466 " ldr.w r0, [r5, #0x10c]\n"
467 " cbnz r0, loc_fc1e570c\n"
468 " ldrh.w r0, [r5, #0x1a2]\n"
469 " cmp r0, #3\n"
470 " beq loc_fc1e5712\n"
471 " ldr r0, [r4, #8]\n"
472 " cmp r0, #1\n"
473 " bhi loc_fc1e5722\n"
474 " b loc_fc1e5712\n"
475 "loc_fc1e570c:\n"
476 " ldr r0, [r4, #0xc]\n"
477 " cmp r0, #1\n"
478 " bne loc_fc1e5722\n"
479 "loc_fc1e5712:\n"
480 " movs r0, #0xc\n"
481 " bl sub_fc2f775c\n"
482 " lsls r0, r0, #0x1f\n"
483 " beq loc_fc1e5722\n"
484 " bl sub_fc14e6b6\n"
485 " movs r6, #1\n"
486 "loc_fc1e5722:\n"
487 " lsls r0, r6, #0x1f\n"
488 " bne loc_fc1e5782\n"
489 " ldr.w r0, [r5, #0xec]\n"
490 " cbz r0, loc_fc1e5746\n"
491 " ldrh.w r0, [r5, #0x1a2]\n"
492 " cmp r0, #3\n"
493 " beq loc_fc1e573a\n"
494 " ldr r0, [r4, #8]\n"
495 " cmp r0, #1\n"
496 " bhi loc_fc1e5782\n"
497 "loc_fc1e573a:\n"
498 " ldr.w r0, [r5, #0x10c]\n"
499 " cbz r0, loc_fc1e5746\n"
500 " ldr r0, [r4, #0xc]\n"
501 " cmp r0, #1\n"
502 " bhi loc_fc1e5782\n"
503 "loc_fc1e5746:\n"
504 " movs r2, #2\n"
505 " movw r0, #0x110\n"
506 " add r1, sp, #4\n"
507 " bl _GetPropertyCase\n"
508 " lsls r0, r0, #0x1f\n"
509 " beq loc_fc1e5760\n"
510 " movs r2, #0xc9\n"
511 " movs r0, #0\n"
512 " ldr r1, =0xfc1e5a5c\n"
513 " blx sub_fc2ef9e4\n"
514 "loc_fc1e5760:\n"
515 " ldrsh.w r0, [sp, #4]\n"
516 " bl sub_fc134e86\n"
517 " bl sub_fc134d5e\n"
518 " cmp r0, #1\n"
519 " bls loc_fc1e5778\n"
520 " movs r0, #0\n"
521 " bl sub_fc134e16\n"
522 " b loc_fc1e5782\n"
523 "loc_fc1e5778:\n"
524 " bl sub_fc14e6b6\n"
525 " bl sub_fc2f779c\n"
526 " movs r6, #1\n"
527 "loc_fc1e5782:\n"
528 " ldr.w r0, [r5, #0x1cc]\n"
529 " cbz r0, loc_fc1e579e\n"
530 " ldr r0, [r4, #8]\n"
531 " cmp r0, #1\n"
532 " beq loc_fc1e579e\n"
533 " movs r0, #1\n"
534 " bl sub_fc154066\n"
535 " lsls r0, r0, #0x1f\n"
536 " beq loc_fc1e579e\n"
537 " bl sub_fc14e6b6\n"
538 " movs r6, #1\n"
539 "loc_fc1e579e:\n"
540 " lsls r0, r6, #0x1f\n"
541 "loc_fc1e57a0:\n"
542 " bne loc_fc1e5884\n"
543 " mov r0, r4\n"
544 " bl sub_fc1e61d2\n"
545 " mov r6, r0\n"
546 " lsls r0, r0, #0x1f\n"
547 " bne loc_fc1e57a0\n"
548 " bl sub_fc1e5fb2\n"
549 " mvn r1, #0x1000\n"
550 " blx sub_fc2ef91c\n"
551 " mov r0, r4\n"
552 " bl sub_fc3d35ae\n"
553 " mov r6, r0\n"
554 " lsls r0, r0, #0x1f\n"
555 " bne loc_fc1e58be\n"
556 " bl sub_fc15072e\n"
557 " mov r0, r4\n"
558 " bl sub_fc1e5450\n"
559 " ldr.w r0, [r5, #0x130]\n"
560 " cbnz r0, loc_fc1e57e4\n"
561 " ldrh.w r0, [r5, #0x1a2]\n"
562 " cmp r0, #3\n"
563 " beq loc_fc1e57e4\n"
564 " ldr r0, [r4, #8]\n"
565 " cmp r0, #1\n"
566 " bhi loc_fc1e57ea\n"
567 "loc_fc1e57e4:\n"
568 " movs r0, #2\n"
569 " bl sub_fc156a86\n"
570 "loc_fc1e57ea:\n"
571 " ldr.w r0, [r5, #0xa8]\n"
572 " cmp r0, #0\n"
573 " beq loc_fc1e585a\n"
574 " ldrh.w r0, [r5, #0x1a2]\n"
575 " movw r6, #0x1000\n"
576 " cmp r0, #3\n"
577 " beq loc_fc1e581a\n"
578 " ldr r0, [r4, #8]\n"
579 " cmp r0, #1\n"
580 " bls loc_fc1e581a\n"
581 " bl sub_fc1e5fb2\n"
582 " movw r3, #0x112\n"
583 " movw r2, #0x3a98\n"
584 " mov r1, r6\n"
585 " str r3, [sp]\n"
586 " ldr r3, =0xfc1e5a5c\n"
587 " bl sub_fc2f7914\n"
588 "loc_fc1e581a:\n"
589 " movs r2, #4\n"
590 " movw r0, #0x188\n"
591 " add r1, sp, #4\n"
592 " bl _GetPropertyCase\n"
593 " lsls r0, r0, #0x1f\n"
594 " beq loc_fc1e5834\n"
595 " movs r0, #0\n"
596 " mov r2, r7\n"
597 " ldr r1, =0xfc1e5a5c\n"
598 " blx sub_fc2ef9e4\n"
599 "loc_fc1e5834:\n"
600 " ldr r0, [sp, #4]\n"
601 " cbnz r0, loc_fc1e5844\n"
602 " bl sub_fc1e5fb2\n"
603 " mov r1, r6\n"
604 " blx sub_fc2ef84c\n"
605 " b loc_fc1e585a\n"
606 "loc_fc1e5844:\n"
607 " bl sub_fc1e5fb2\n"
608 " mov r1, r6\n"
609 " blx sub_fc2ef91c\n"
610 " ldr r2, =0xfc1e5695\n"
611 " mov r3, r6\n"
612 " ldr r0, [sp, #4]\n"
613 " mov r1, r2\n"
614 " bl sub_fc359108\n"
615 "loc_fc1e585a:\n"
616 " ldr.w r0, [r5, #0xb0]\n"
617 " cbz r0, loc_fc1e5868\n"
618 " mov r0, r4\n"
619 " bl sub_fc3d40cc\n"
620 " b loc_fc1e58ae\n"
621 "loc_fc1e5868:\n"
622 " ldr.w r0, [r5, #0xb4]\n"
623 " cbz r0, loc_fc1e5876\n"
624 " mov r0, r4\n"
625 " bl sub_fc3d3d3e\n"
626 " b loc_fc1e58ae\n"
627 "loc_fc1e5876:\n"
628 " ldr.w r0, [r5, #0xb8]\n"
629 " cbz r0, loc_fc1e5886\n"
630 " mov r0, r4\n"
631 " bl sub_fc3d43d0\n"
632 " b loc_fc1e58ae\n"
633 "loc_fc1e5884:\n"
634 " b loc_fc1e58be\n"
635 "loc_fc1e5886:\n"
636 " ldr.w r0, [r5, #0xbc]\n"
637 " cbz r0, loc_fc1e589a\n"
638 " ldr r0, =0x0003fcd0\n"
639 " ldr r0, [r0]\n"
640 " cbz r0, loc_fc1e589a\n"
641 " mov r0, r4\n"
642 " bl sub_fc3d46c2\n"
643 " b loc_fc1e58ae\n"
644 "loc_fc1e589a:\n"
645 " ldr.w r0, [r5, #0xc0]\n"
646 " cmp r0, #0\n"
647 " mov r0, r4\n"
648 " beq loc_fc1e58aa\n"
649 " bl sub_fc3d49d0\n"
650 " b loc_fc1e58ae\n"
651 "loc_fc1e58aa:\n"
652 " bl sub_fc3d3872_my\n"
653 "loc_fc1e58ae:\n"
654 " ldr.w r0, [r5, #0x1cc]\n"
655 " cbz r0, loc_fc1e58d0\n"
656 " movs r1, #0\n"
657 " movs r0, #1\n"
658 " bl sub_fc1540ac\n"
659 " b loc_fc1e58d0\n"
660 "loc_fc1e58be:\n"
661 " movs r1, #2\n"
662 " mov r2, r4\n"
663 " mov r0, r6\n"
664 " bl sub_fc14e934\n"
665 " mov r1, r6\n"
666 " mov r0, r4\n"
667 " bl sub_fc1e6740\n"
668 "loc_fc1e58d0:\n"
669 " movs r0, #0\n"
670 " str r0, [r5, #0x28]\n"
671 " pop.w {r2, r3, r4, r5, r6, r7, r8, pc}\n"
672 ".ltorg\n"
673 );
674 }
675
676 #ifdef CAPTSEQ_DEBUG_LOG
677 void log_nr_call(void) {
678 _LogCameraEvent(0x60,"nr call %d",_nrflag);
679 }
680 void log_remote_hook(void) {
681 _LogCameraEvent(0x60,"remote hook");
682 }
683 void log_rh(void) {
684 _LogCameraEvent(0x60,"raw hook arb:%d rb:0x%08x rbc:0x%08x",active_raw_buffer,hook_raw_image_addr(),current_raw_addr);
685 }
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709 #endif
710
711
712 void __attribute__((naked,noinline)) sub_fc3d3872_my() {
713 asm volatile (
714 " push.w {r2, r3, r4, r5, r6, r7, r8, sb, sl, lr}\n"
715 " ldr r7, =0x0003fad4\n"
716 " mov r4, r0\n"
717 " ldr.w r0, [r7, #0x16c]\n"
718 " cbz r0, loc_fc3d388e\n"
719 " ldrh.w r0, [r7, #0x1a2]\n"
720 " cmp r0, #3\n"
721 " beq loc_fc3d388e\n"
722 " ldr r0, [r4, #8]\n"
723 " cmp r0, #1\n"
724 " bhi loc_fc3d3898\n"
725 "loc_fc3d388e:\n"
726 " mov r0, r4\n"
727 " bl sub_fc1e53e6\n"
728 " bl sub_fc1e5e72\n"
729 "loc_fc3d3898:\n"
730 " ldr.w r0, [r7, #0xa4]\n"
731 " cbnz r0, loc_fc3d38b4\n"
732 " ldrh.w r0, [r7, #0x1a2]\n"
733 " cmp r0, #3\n"
734 " beq loc_fc3d38ac\n"
735 " ldr r0, [r4, #8]\n"
736 " cmp r0, #1\n"
737 " bhi loc_fc3d38b4\n"
738 "loc_fc3d38ac:\n"
739 " bl sub_fc150b0e\n"
740 " bl sub_fc1e5a92\n"
741 "loc_fc3d38b4:\n"
742 " movs r2, #4\n"
743 " movw r0, #0x137\n"
744 " add r1, sp, #4\n"
745 " bl _GetPropertyCase\n"
746 " lsls r0, r0, #0x1f\n"
747 " beq loc_fc3d38d0\n"
748 " movs r0, #0\n"
749 " movw r2, #0x156\n"
750 " ldr r1, =0xfc3d3c38\n"
751 " blx sub_fc2ef9e4\n"
752 "loc_fc3d38d0:\n"
753 " ldr r0, [sp, #4]\n"
754 " ubfx r0, r0, #8, #8\n"
755 " cmp r0, #6\n"
756 " bne loc_fc3d38e0\n"
757 " ldr r0, =0xfc3d3829\n"
758 " movs r1, #0\n"
759 " b loc_fc3d38e4\n"
760 "loc_fc3d38e0:\n"
761 " ldr r0, =0xfc1e50bf\n"
762 " mov r1, r4\n"
763 "loc_fc3d38e4:\n"
764 " bl sub_fc1714a0\n"
765 " ldr.w r0, [r7, #0x18c]\n"
766 " cbz r0, loc_fc3d38f2\n"
767 " bl sub_fc1e531e\n"
768 "loc_fc3d38f2:\n"
769 " movs r0, #0\n"
770 " bl sub_fc15405e\n"
771 "bl capt_seq_hook_set_nr\n"
772 #ifdef CAPTSEQ_DEBUG_LOG
773 "bl log_nr_call\n"
774 #endif
775 " mov r0, r4\n"
776 " bl sub_fc1e5500\n"
777 " ldr r1, =0x00027eec\n"
778 " movs r2, #4\n"
779 " movs r0, #0x90\n"
780 " bl _GetPropertyCase\n"
781 " lsls r0, r0, #0x1f\n"
782 " beq loc_fc3d3918\n"
783 " movs r0, #0\n"
784 " movw r2, #0x171\n"
785 " ldr r1, =0xfc3d3c38\n"
786 " blx sub_fc2ef9e4\n"
787 "loc_fc3d3918:\n"
788 " bl sub_fc154118\n"
789 " bl sub_fc1e5592\n"
790 " movs r1, #0\n"
791 " mov r0, r4\n"
792 " bl sub_fc3d382a\n"
793 " mov r6, r0\n"
794 " BL wait_until_remote_button_is_released\n"
795
796 #ifdef CAPTSEQ_DEBUG_LOG
797 "bl log_remote_hook\n"
798 #endif
799 " ldr r0, [sp, #4]\n"
800 " ubfx r0, r0, #8, #8\n"
801 " cmp r0, #6\n"
802 " bne loc_fc3d3938\n"
803 " ldr r2, =0xfc1e52ed\n"
804 " b loc_fc3d393a\n"
805 "loc_fc3d3938:\n"
806 " ldr r2, =0xfc1e5303\n"
807 "loc_fc3d393a:\n"
808 " ldrh r0, [r4, #0x18]\n"
809 " ldr r5, =0x00027eec\n"
810 " cbz r0, loc_fc3d3948\n"
811 " cmp r0, #1\n"
812 " beq loc_fc3d395e\n"
813 " cmp r0, #4\n"
814 " bne loc_fc3d39ca\n"
815 "loc_fc3d3948:\n"
816 " str r6, [sp]\n"
817 " mov r3, r2\n"
818 " ldr r1, [r4, #0x5c]\n"
819 " mov r0, r4\n"
820 " ldr r2, [r5]\n"
821 " bl sub_fc1e4f12\n"
822 " mov r5, r0\n"
823 " bl sub_fc298486\n"
824 " b loc_fc3d39d8\n"
825 "loc_fc3d395e:\n"
826 " str r6, [sp]\n"
827 " mov r3, r2\n"
828 " ldr r1, [r4, #0x5c]\n"
829 " mov r8, r5\n"
830 " ldr r2, [r5]\n"
831 " mov r0, r4\n"
832 " bl sub_fc1e4f72\n"
833 " mov r5, r0\n"
834 " bl sub_fc171488\n"
835 " cbnz r0, loc_fc3d3980\n"
836 " movs r2, #1\n"
837 " movs r1, #0\n"
838 " movs r0, #0x45\n"
839 " bl sub_fc284442\n"
840 "loc_fc3d3980:\n"
841 " lsls r0, r5, #0x1f\n"
842 " bne loc_fc3d39d8\n"
843 " ldr.w r0, [r7, #0x100]\n"
844 " cbz r0, loc_fc3d399a\n"
845 " ldr r1, [r4, #8]\n"
846 " ldr r2, =0x001d8cac\n"
847 " ldr r0, [r4, #0x5c]\n"
848 " add.w r1, r2, r1, lsl #2\n"
849 " str r0, [r1, #-0x4]\n"
850 " b loc_fc3d39c4\n"
851 "loc_fc3d399a:\n"
852 " ldr r0, =0xfc3d3829\n"
853 " movs r1, #0\n"
854 " bl sub_fc1714a0\n"
855 " movs r1, #1\n"
856 " mov r0, r4\n"
857 " bl sub_fc3d382a\n"
858 " mov r6, r0\n"
859 " ldr.w r0, [r8]\n"
860 " mov r5, r8\n"
861 " bl sub_fc1e5388\n"
862 " ldr r1, [r4, #0x5c]\n"
863 " mov r3, r6\n"
864 " ldr r2, [r5]\n"
865 " mov r0, r4\n"
866 " bl sub_fc1e4fe0\n"
867 " mov r5, r0\n"
868 "loc_fc3d39c4:\n"
869 " bl sub_fc1e4ebc\n"
870 " b loc_fc3d39d8\n"
871 "loc_fc3d39ca:\n"
872 " movs r0, #0\n"
873 " movw r2, #0x1aa\n"
874 " ldr r1, =0xfc3d3c38\n"
875 " blx sub_fc2ef9e4\n"
876 " movs r5, #0x1d\n"
877 "loc_fc3d39d8:\n"
878 " bl sub_fc171488\n"
879 " cbz r0, loc_fc3d39e0\n"
880 " movs r5, #1\n"
881 "loc_fc3d39e0:\n"
882 " bl sub_fc1e5596\n"
883 " ldr.w r8, =0xfc3d3829\n"
884 " lsls r0, r5, #0x1f\n"
885 " bne loc_fc3d3a5a\n"
886 " ldr.w r0, [r7, #0x108]\n"
887 " cbnz r0, loc_fc3d3a26\n"
888 " ldr.w r0, [r7, #0x1cc]\n"
889 " cbz r0, loc_fc3d3a10\n"
890 " ldrh.w r0, [r7, #0x1ec]\n"
891 " cmp r0, #1\n"
892 " bne loc_fc3d3a26\n"
893 " mov r0, r4\n"
894 " bl sub_fc1e6c8a\n"
895 " lsls r0, r0, #0x1f\n"
896 " beq loc_fc3d3a26\n"
897 " movw r2, #0x1ca\n"
898 " b loc_fc3d3a1e\n"
899 "loc_fc3d3a10:\n"
900 " mov r0, r4\n"
901 " bl sub_fc1e6c8a\n"
902 " lsls r0, r0, #0x1f\n"
903 " beq loc_fc3d3a26\n"
904 " movw r2, #0x1cd\n"
905 "loc_fc3d3a1e:\n"
906 " movs r0, #0\n"
907 " ldr r1, =0xfc3d3c38\n"
908 " blx sub_fc2ef9e4\n"
909 "loc_fc3d3a26:\n"
910 #ifdef CAPTSEQ_DEBUG_LOG
911 "bl log_rh\n"
912 #endif
913 " BL capt_seq_hook_raw_here\n"
914 " BL clear_current_raw_addr\n"
915 " mov r0, r4\n"
916 " bl sub_fc1e5582\n"
917 " mov r0, r4\n"
918 " bl sub_fc1e5556\n"
919 " cmp r6, r8\n"
920 " beq loc_fc3d3a5a\n"
921 " bl sub_fc1e5fb2\n"
922 " movs r1, #4\n"
923 " movw sb, #0x1dd\n"
924 " ldr r3, =0xfc3d3c38\n"
925 " movw r2, #0x3a98\n"
926 " str.w sb, [sp]\n"
927 " bl sub_fc2f7914\n"
928 " cbz r0, loc_fc3d3a5a\n"
929 " movs r0, #0\n"
930 " mov r2, sb\n"
931 " ldr r1, =0xfc3d3c38\n"
932 " blx sub_fc2ef9e4\n"
933 "loc_fc3d3a5a:\n"
934 " ldrh r0, [r7]\n"
935 " sub.w r1, r0, #0x4000\n"
936 " subs r1, #0x44\n"
937 " bne loc_fc3d3a7c\n"
938 " bl sub_fc1e5fb2\n"
939 " movw r1, #0x8000\n"
940 " blx sub_fc2ef91c\n"
941 " ldr r0, =0xfc3d3861\n"
942 " movs r1, #0\n"
943 " bl sub_fc284ae8\n"
944 " bl sub_fc284ada\n"
945 "loc_fc3d3a7c:\n"
946 " ldr.w r0, [r7, #0x18c]\n"
947 " cbz r0, loc_fc3d3a8c\n"
948 " movs r2, #1\n"
949 " movs r1, #0\n"
950 " movs r0, #0x46\n"
951 " bl sub_fc284442\n"
952 "loc_fc3d3a8c:\n"
953 " movs r1, #2\n"
954 " mov r2, r4\n"
955 " mov r0, r5\n"
956 " bl sub_fc14e934\n"
957 " ldr r0, [r7, #0x28]\n"
958 " cmp r0, #0\n"
959 " mov r0, r8\n"
960 " beq loc_fc3d3ab2\n"
961 " cmp r6, r0\n"
962 " beq loc_fc3d3aa6\n"
963 " movs r1, #1\n"
964 " b loc_fc3d3aa8\n"
965 "loc_fc3d3aa6:\n"
966 " movs r1, #0\n"
967 "loc_fc3d3aa8:\n"
968 " mov r2, r5\n"
969 " mov r0, r4\n"
970 " bl sub_fc1e65c8\n"
971 " b loc_fc3d3ac4\n"
972 "loc_fc3d3ab2:\n"
973 " cmp r6, r0\n"
974 " beq loc_fc3d3aba\n"
975 " movs r1, #1\n"
976 " b loc_fc3d3abc\n"
977 "loc_fc3d3aba:\n"
978 " movs r1, #0\n"
979 "loc_fc3d3abc:\n"
980 " mov r2, r5\n"
981 " mov r0, r4\n"
982 " bl sub_fc1e6582\n"
983 "loc_fc3d3ac4:\n"
984 " mov r0, r5\n"
985 " pop.w {r2, r3, r4, r5, r6, r7, r8, sb, sl, pc}\n"
986 ".ltorg\n"
987 );
988 }
989
990
991
992 #if 0
993 void log_dvlp_seq(int m,int m2)
994 {
995 _LogCameraEvent(0x60,"dvlp m:%d m2:0x%x arb:%d rb:0x%08x i:%04d",
996 m,
997 m2,
998 active_raw_buffer,
999 hook_raw_image_addr(),
1000 get_exposure_counter());
1001
1002 }
1003 void log_dvlp_raw_hook(int m)
1004 {
1005 _LogCameraEvent(0x60,"dvlp rh m:%d arb:%d rb:0x%08x i:%04d",
1006 m,
1007 active_raw_buffer,
1008 hook_raw_image_addr(),
1009 get_exposure_counter());
1010 }
1011 void log_dvlp_seq_1(void)
1012 {
1013 _LogCameraEvent(0x60,"dvlp seq loop");
1014 }
1015 void log_dvlp_seq_start(void)
1016 {
1017 _LogCameraEvent(0x60,"dvlp seq start");
1018 }
1019
1020
1021 void __attribute__((naked,noinline)) developseq_task() {
1022 asm volatile (
1023 " push.w {r2, r3, r4, r5, r6, r7, r8, lr}\n"
1024 "bl log_dvlp_seq_start\n"
1025 " ldr r7, =0x0003fad4\n"
1026 " movs r5, #0\n"
1027 " ldr r6, =0x00014780\n"
1028 "loc_fc1e6840:\n"
1029 "bl log_dvlp_seq_1\n"
1030 " movs r2, #0\n"
1031 " ldr r1, [r6, #0x10]\n"
1032 " ldr r0, [r6, #8]\n"
1033 " blx sub_fc2ef87c\n"
1034 " ldr r0, [r6, #4]\n"
1035 " movs r2, #0\n"
1036 " add r1, sp, #4\n"
1037 " blx sub_fc2ef8ec\n"
1038 " lsls r0, r0, #0x1f\n"
1039 " beq loc_fc1e685e\n"
1040 " movw r2, #0x1c4\n"
1041 " b loc_fc1e686e\n"
1042 "loc_fc1e685e:\n"
1043 " ldr r0, [r6, #8]\n"
1044 " mov r1, sp\n"
1045 " blx sub_fc2ef70c\n"
1046 " lsls r0, r0, #0x1f\n"
1047 " beq loc_fc1e687e\n"
1048 " movw r2, #0x1ca\n"
1049 "loc_fc1e686e:\n"
1050 " movs r0, #0\n"
1051 " ldr r1, =0xfc1e6bd8\n"
1052 " blx sub_fc2ef9e4\n"
1053 " blx sub_fc2ef90c\n"
1054 " pop.w {r2, r3, r4, r5, r6, r7, r8, pc}\n"
1055 "loc_fc1e687e:\n"
1056 " ldr.w r0, [r7, #0x18c]\n"
1057 " cbz r0, loc_fc1e688c\n"
1058 " ldr r0, [sp, #4]\n"
1059 " ldr r0, [r0]\n"
1060 " cmp r0, #5\n"
1061 " bne loc_fc1e6898\n"
1062 "loc_fc1e688c:\n"
1063 " bl sub_fc3d4f92\n"
1064 " bl sub_fc1524bc\n"
1065 " bl sub_fc1e8680\n"
1066 "loc_fc1e6898:\n"
1067 "ldr r0, [sp, #4]\n"
1068 "ldr r0, [r0]\n"
1069 "ldr r1, [sp]\n"
1070 "bl log_dvlp_seq\n"
1071 " ldr r0, [sp, #4]\n"
1072 " ldr r1, [r0]\n"
1073 " cmp r1, #6\n"
1074 " bhs loc_fc1e691e\n"
1075 " tbb [pc, r1]\n"
1076 "branchtable_fc1e68a4:\n"
1077 " .byte((loc_fc1e68aa - branchtable_fc1e68a4) / 2)\n"
1078 " .byte((loc_fc1e68b2 - branchtable_fc1e68a4) / 2)\n"
1079 " .byte((loc_fc1e68b8 - branchtable_fc1e68a4) / 2)\n"
1080 " .byte((loc_fc1e68dc - branchtable_fc1e68a4) / 2)\n"
1081 " .byte((loc_fc1e690e - branchtable_fc1e68a4) / 2)\n"
1082 " .byte((loc_fc1e6914 - branchtable_fc1e68a4) / 2)\n"
1083 ".align 1\n"
1084 "loc_fc1e68aa:\n"
1085 "ldr r0, [sp, #4]\n"
1086 "ldr r0, [r0]\n"
1087 "bl log_dvlp_raw_hook\n"
1088
1089 "ldr r0, [sp, #4]\n"
1090 "ldr r1, [r0]\n"
1091 " ldr r0, [r0, #8]\n"
1092 " bl sub_fc1e7a2a\n"
1093 " b loc_fc1e691e\n"
1094 "loc_fc1e68b2:\n"
1095 " bl sub_fc3d5050\n"
1096 " b loc_fc1e691e\n"
1097 "loc_fc1e68b8:\n"
1098 " ldr r2, [r0, #8]\n"
1099 " movs r1, #1\n"
1100 " str.w r1, [r2, #0x108]\n"
1101 " ldr r0, [r0, #8]\n"
1102 " bl sub_fc1e783a\n"
1103 " ldr r0, [sp, #4]\n"
1104 " ldr r0, [r0, #8]\n"
1105 " str.w r5, [r0, #0x108]\n"
1106 " ldr r0, [r6, #0xc]\n"
1107 " blx sub_fc2ef96c\n"
1108 " ldr r0, [sp, #4]\n"
1109 " movs r1, #0xd\n"
1110 " ldr r2, [r0, #8]\n"
1111 " b loc_fc1e6918\n"
1112 "loc_fc1e68dc:\n"
1113 " ldr.w r1, [r7, #0xc0]\n"
1114 " cbz r1, loc_fc1e68f8\n"
1115 " ldr r0, [r0, #8]\n"
1116 " ldr.w r1, [r0, #0xfc]\n"
1117 " cmp r1, #1\n"
1118 " bne loc_fc1e68f0\n"
1119 "loc_fc1e68ec:\n"
1120 " movs r1, #1\n"
1121 " b loc_fc1e68f2\n"
1122 "loc_fc1e68f0:\n"
1123 " movs r1, #0\n"
1124 "loc_fc1e68f2:\n"
1125 " bl sub_fc1e75fa\n"
1126 " b loc_fc1e691e\n"
1127 "loc_fc1e68f8:\n"
1128 " ldr.w r1, [r7, #0x1cc]\n"
1129 " cbz r1, loc_fc1e690a\n"
1130 " ldrh.w r1, [r7, #0x1ec]\n"
1131 " cmp r1, #1\n"
1132 " beq loc_fc1e690a\n"
1133 " ldr r0, [r0, #8]\n"
1134 " b loc_fc1e68f0\n"
1135 "loc_fc1e690a:\n"
1136 " ldr r0, [r0, #8]\n"
1137 " b loc_fc1e68ec\n"
1138 "loc_fc1e690e:\n"
1139 " bl sub_fc1515f6\n"
1140 " b loc_fc1e691e\n"
1141 "loc_fc1e6914:\n"
1142 " movs r2, #0\n"
1143 " movs r1, #0x12\n"
1144 "loc_fc1e6918:\n"
1145 " movs r0, #0\n"
1146 " bl sub_fc14e934\n"
1147 "loc_fc1e691e:\n"
1148
1149
1150
1151
1152
1153
1154 " ldr r4, [sp, #4]\n"
1155 " ldr r0, [r4, #4]\n"
1156 " cbnz r0, loc_fc1e692e\n"
1157 " movs r2, #0x86\n"
1158 " movs r0, #0\n"
1159 " ldr r1, =0xfc1e6bd8\n"
1160 " blx sub_fc2ef9e4\n"
1161 "loc_fc1e692e:\n"
1162 " str r5, [r4, #4]\n"
1163 " add r1, sp, #4\n"
1164 " ldr r0, [r6, #4]\n"
1165 " blx sub_fc2ef70c\n"
1166 " lsls r0, r0, #0x1f\n"
1167 " beq loc_fc1e687e\n"
1168 " b loc_fc1e6840\n"
1169 ".ltorg\n"
1170 );
1171 }
1172 #endif