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