source: trunk/platform/ixus100_sd780/sub/100c/capt_seq.c @ 876

Revision 876, 45.3 KB checked in by fe50, 3 years ago (diff)
Line 
1#include "lolevel.h"
2#include "platform.h"
3#include "core.h"
4#include "conf.h"
5
6
7//VERIFY_SD780 ALL stuff below...
8
9
10static long *nrflag = (long*)0x6048; // see below
11
12#include "../../../generic/capt_seq.c"
13
14void __attribute__((naked,noinline)) sub_FF91F5BC_my() {
15        asm volatile (
16"                 STMFD   SP!, {R0-R8,LR}\n"
17"                 MOV     R4, R0\n"
18"                 BL      sub_FF920314\n" // SsShootEvent.c:60\n"
19"                 MVN     R1, #0\n"
20"                 BL      sub_FF8661AC\n"
21"                 LDR     R5, =0x6048\n"
22"                 LDR     R0, [R5, #0xC]\n"
23"                 CMP     R0, #0\n"
24"                 BNE     loc_FF91F60C\n"
25"                 MOV     R1, #1\n"
26"                 MOV     R0, #0\n"
27"                 BL      sub_FF8271C0\n"
28"                 STR     R0, [R5, #0xC]\n"
29"                 MOV     R3, #0\n"
30"                 STR     R3, [SP]\n"
31"                 LDR     R3, =0xFF91F078\n"
32"                 LDR     R0, =0xFF91F83C\n"  //VERIFY_SD780 "ADR R0, aShuttersoundta"
33"                 MOV     R2, #0x400\n"
34"                 MOV     R1, #0x17\n"
35"                 BL      sub_FF82718C\n"
36"loc_FF91F60C:\n"
37"                 MOV     R2, #4\n"
38"                 ADD     R1, SP, #8\n"
39"                 MOV     R0, #0x8A\n"
40"                 BL      sub_FF86E284\n" // PT_GetPropertyCaseString_0 ; LOCATION: PropertyCase.c:0\n"
41"                 TST     R0, #1\n"
42"                 LDRNE   R1, =0x3AE\n"
43"                 LDRNE   R0, =0xFF91F310\n" // "SsCaptureSeq.c"
44"                 BLNE    sub_FF81B284\n" // DebugAssert\n"
45"                 LDR     R8, =0x145E4\n"
46"                 LDR     R7, =0x14520\n"
47"                 LDRSH   R1, [R8,#0xE]\n"
48"                 LDR     R0, [R7,#0x8C]\n"
49"                 BL      sub_FF8E18CC\n"
50"                 BL      sub_FF845EBC\n" // GetCCDTemperature ; LOCATION: Thermometer.c:250\n"
51"                 LDR     R3, =0x6050\n"
52"                 STRH    R0, [R4,#0x9C]\n"
53"                 SUB     R2, R3, #4\n"
54//"                 STRD    R2, [SP]\n"
55"                 STR    R2, [SP]\n"
56"                 MOV     R1, R0\n"
57"                 LDRH    R0, [R7,#0x5C]\n"
58"                 LDRSH   R2, [R8,#0xC]\n"
59"                 SUB     R3, R3, #8\n"
60"                 BL      sub_FF92194C\n" // NRTable.c:219\n"
61//VERIFY_SD780"                 BL      wait_until_remote_button_is_released\n"
62//VERIFY_SD780"                 BL      capt_seq_hook_set_nr\n"
63"                 B       sub_FF91F668\n" // -> continue function in firmware
64    );
65}
66
67void __attribute__((naked,noinline)) sub_FF85DB34_my() {
68        asm volatile (
69"                STMFD   SP!, {R4-R6,LR}\n"
70"                LDR     R4, [R0,#0xC]\n"
71"                LDR     R6, =0x14520\n"
72"                LDR     R0, [R4,#8]\n"
73"                MOV     R5, #0\n"
74"                ORR     R0, R0, #1\n"
75"                STR     R0, [R4,#8]\n"
76"                LDR     R0, [R6,#0x24]\n"
77"                CMP     R0, #0\n"
78"                MOVEQ   R0, #2\n"
79"                BLEQ    sub_FF858E7C\n"
80"                BL      sub_FF85E064\n"
81"                LDR     R0, [R6,#0x24]\n"
82"                CMP     R0, #0\n"
83"                BNE     loc_FF85DBE4\n"
84"                MOV     R0, #0\n"
85"                BL      sub_FF9201A4\n"
86"                MOV     R0, R4\n"
87"                BL      sub_FF85E3B4\n"
88"                MOV     R0, R4\n"
89"                BL      sub_FF91E1F0\n"
90"                CMP     R0, #0\n"
91"                BEQ     loc_FF85DBB4\n"
92"                BL      sub_FF9201E4\n"
93"                MOV     R0, R4\n"
94"                BL      sub_FF91E2D4\n" // SsPrePreSeq.c:0
95"                TST     R0, #1\n"
96"                MOVNE   R2, R4\n"
97"                LDMNEFD SP!, {R4-R6,LR}\n"
98"                MOVNE   R1, #1\n"
99"                BNE     sub_FF85BABC\n" // SsShootCtrl.c:0
100"                B       loc_FF85DBC0\n"
101"loc_FF85DBB4:\n"
102"                MOV     R0, R4\n"
103"                BL      sub_FF91E270\n"
104"                BL      sub_FF9201E4\n"
105"loc_FF85DBC0:\n"
106"                MOV     R0, R4\n"
107"                BL      sub_FF85D260\n"
108"                MOV     R0, R4\n"
109"                BL      sub_FF91F4D4\n" // SsCaptureSeq.c:1
110"                BL      sub_FF920034\n" // SsShootLib.c:32768
111"                MOV     R0, R4\n"
112"                BL      sub_FF91F5BC_my\n" // SsCaptureSeq.c:0 nr setup
113//"                BL      sub_FF91F5BC\n" // SsCaptureSeq.c:0 nr setup
114"                BL      capt_seq_hook_raw_here\n"
115"                MOV     R5, R0\n"
116"                B       loc_FF85DBF4\n"
117"loc_FF85DBE4:\n"
118"                LDR     R0, =0x291C\n"
119"                LDR     R0, [R0,#0x10]\n"
120"                CMP     R0, #0\n"
121"                MOVNE   R5, #0x1D\n"
122"loc_FF85DBF4:\n"
123"                BL      sub_FF860908\n"
124"                BL      sub_FF860950\n"
125"                BL      sub_FF860990\n"
126"                MOV     R2, R4\n"
127"                MOV     R1, #1\n"
128"                MOV     R0, R5\n"
129"                BL      sub_FF85BABC\n" // SsShootCtrl.c:0
130"                BL      sub_FF91F868\n"
131"                CMP     R0, #0\n"
132"                LDRNE   R0, [R4,#8]\n"
133"                ORRNE   R0, R0, #0x2000\n"
134"                STRNE   R0, [R4,#8]\n"
135"                LDMFD   SP!, {R4-R6,PC}\n"
136    );
137}
138
139
140//VERIFY_SD780 - Below this is good ASM but needs work still...
141void __attribute__((naked,noinline)) task_CaptSeqTask_my() {
142        asm volatile (
143"                STMFD   SP!, {R3-R9,LR}\n"
144"                LDR     R6, =0x291C\n"
145"                LDR     R4, =0x14520\n"
146"                MOV     R9, #1\n"
147"                MOV     R7, #0\n"
148"loc_FF85D768:\n"
149"                LDR     R0, [R6,#0x4]\n"
150"                MOV     R2, #0\n"
151"                MOV     R1, SP\n"
152"                BL      sub_FF826978\n" //  KerQueue.c
153"                TST     R0, #1\n"
154"                BEQ     loc_FF85D794\n"
155"                LDR     R1, =0x588\n"
156"                LDR     R0, =0xFF85D2E0\n" // "SsShootTask.c"
157"                BL      sub_FF81B284\n" // DebugAssert
158"                BL      sub_FF81B23C\n" // ExitTask
159"                LDMFD   SP!, {R3-R9,PC}\n"
160"loc_FF85D794:\n"
161"                LDR     R0, [SP]\n"
162"                LDR     R1, [R0]\n"
163"                CMP     R1, #0x1D\n"
164"                ADDLS   PC, PC, R1,LSL#2\n"
165"                B       loc_FF85DA10\n"
166"loc_FF85D7A8:\n"
167"                B       loc_FF85D820\n"
168"loc_FF85D7AC:\n"
169"                B       loc_FF85D884\n"
170"loc_FF85D7B0:\n"
171"                B       loc_FF85D8C0\n"
172"loc_FF85D7B4:\n"
173"                B       loc_FF85D8D4\n"
174"loc_FF85D7B8:\n"
175"                B       loc_FF85D8CC\n"
176"loc_FF85D7BC:\n"
177"                B       loc_FF85D8DC\n"
178"loc_FF85D7C0:\n"
179"                B       loc_FF85D8E4\n"
180"loc_FF85D7C4:\n"
181"                B       loc_FF85D8EC\n"
182"loc_FF85D7C8:\n"
183"                B       loc_FF85D944\n"
184"loc_FF85D7CC:\n"
185"                B       loc_FF85D96C\n"
186"loc_FF85D7D0:\n"
187"                B       loc_FF85D950\n"
188"loc_FF85D7D4:\n"
189"                B       loc_FF85D95C\n"
190"loc_FF85D7D8:\n"
191"                B       loc_FF85D964\n"
192"loc_FF85D7DC:\n"
193"                B       loc_FF85D974\n"
194"loc_FF85D7E0:\n"
195"                B       loc_FF85D97C\n"
196"loc_FF85D7E4:\n"
197"                B       loc_FF85D984\n"
198"loc_FF85D7E8:\n"
199"                B       loc_FF85D98C\n"
200"loc_FF85D7EC:\n"
201"                B       loc_FF85D994\n"
202"loc_FF85D7F0:\n"
203"                B       loc_FF85D9A0\n"
204"loc_FF85D7F4:\n"
205"                B       loc_FF85D9A8\n"
206"loc_FF85D7F8:\n"
207"                B       loc_FF85D9B0\n"
208"loc_FF85D7FC:\n"
209"                B       loc_FF85D9B8\n"
210"loc_FF85D800:\n"
211"                B       loc_FF85D9C0\n"
212"loc_FF85D804:\n"
213"                B       loc_FF85D9CC\n"
214"loc_FF85D808:\n"
215"                B       loc_FF85D9D4\n"
216"loc_FF85D80C:\n"
217"                B       loc_FF85D9DC\n"
218"loc_FF85D810:\n"
219"                B       loc_FF85D9E4\n"
220"loc_FF85D814:\n"
221"                B       loc_FF85D9EC\n"
222"loc_FF85D818:\n"
223"                B       loc_FF85D9F8\n"
224"loc_FF85D81C:\n"
225"                B       loc_FF85DA1C\n"
226"loc_FF85D820:\n"
227// jumptable FF85D7A0 entry 0: halfpress in shoot mode, or full press if quick
228"                BL      sub_FF85E074\n" // SsPrepareSeq_c
229////"                BL      shooting_expo_param_override\n"  // +
230"    STMFD   SP!, {R1-R12,LR}\n"
231"    BL      captseq_hack_override_active\n" // returns 1 if tv or sv override in effect
232"    LDMFD   SP!, {R1-R12,LR}\n"
233"    STR     R0,[SP,#-4]!\n" // push return value
234"    BL      shooting_expo_param_override\n" // saves all regs
235//"                BL      sub_FF863F08\n"
236"                BL      sub_FF85B5A8\n"
237"    LDR     R0,[SP],#4\n" // pop override hack
238"    CMP     R0, #1\n"
239"    MOVEQ   R0, #0\n"
240"    STREQ   R0, [R4,#0x24]\n"  // fixes overrides behavior at short shutter press
241////"                BL      sub_FF863F08\n"
242///*
243// //  this code added to avoid some incorrect behavior if overrides are used.
244// //  but it can cause some unexpected side effects. In this case, remove this code!
245
246//                 "LDR     R0, =ovr_disable\n"
247//                 "LDR     R0, [R0]\n"
248//                 "LDR     R0, [R0]\n"
249//                 "CMP     R0, #1\n"
250//                 "BEQ     locA\n"
251//                 "MOV     R0, #0\n"
252//                 "STR     R0, [R4,#0x24]\n"  // fixes overrides  behavior at short shutter press
253////               "STR     R0, [R4,#0x1C]\n"
254//                 "B       loc_FF8661C8\n"
255//"locA:\n"
256
257// //  end of my code
258//*/
259
260//"                BL      sub_FF85E074\n" // SsPrepareSeq_c
261//"                              BL              sub_FF85B5A8\n"  //above removes this????
262"                LDR     R0, [R4,#0x24]\n"
263"                CMP     R0, #0\n"
264"                BEQ     loc_FF85DA1C\n" // -> jt 32, loop
265"                BL      sub_FF85CFBC\n"
266"                MOV     R5, R0\n"
267"                LDR     R0, [R4,#0x24]\n"
268"                CMP     R0, #0\n"
269"                BEQ     loc_FF85D868\n"
270"                MOV     R0, #0xC\n"
271"                BL      sub_FF862090\n"
272"                TST     R0, #1\n"
273"                STRNE   R9, [R6,#0x10]\n"
274"                LDRNE   R0, [R5,#8]\n"
275"                ORRNE   R0, R0, #0x40000000\n"
276"                STRNE   R0, [R5,#8]\n"
277"                BNE     loc_FF85DA1C\n" // -> jt 32, loop
278"loc_FF85D868:\n"
279"                MOV     R0, R5\n"
280"                BL      sub_FF85D260\n"
281"                MOV     R0, R5\n"
282"                BL      sub_FF91F5BC\n" // nr setup, hook here too ?
283"                TST     R0, #1\n"
284"                STRNE   R9, [R6,#0x10]\n"
285"                B       loc_FF85DA1C\n" // -> jt 32, loop
286
287"loc_FF85D884:\n"
288// jumptable FF865F58 entry 1: called 1+ sec after entry 0, i.e. shooting near complete
289"                                LDR     R0, [R4,#0x24]\n"
290"                CMP     R0, #0\n"
291"                BNE     loc_FF85D8B0\n"
292"                MOV     R0, #0xC\n"
293"                BL      sub_FF862090\n"
294"                TST     R0, #1\n"
295"                LDRNE   R0, [SP]\n"
296"                MOVNE   R1, #1\n"
297"                LDRNE   R2, [R0,#0xC]\n"
298"                MOVNE   R0, #1\n"
299"                BNE     loc_FF85D93C\n"
300
301"loc_FF85D8B0:\n"
302"                LDR     R0, [SP]\n"
303"                BL      sub_FF85DB34_my\n"  //HERE is the above functions...
304
305"loc_FF85D8B8:\n"
306"                STR     R7, [R4,#0x24]\n"
307"                B       loc_FF85DA1C\n"
308
309"loc_FF85D8C0:\n"
310// jumptable FF865F58 entry 2
311"                MOV     R0, #1\n"
312"                BL      sub_FF85E28C\n"
313"                B       loc_FF85DA1C\n" // jt 32, loop
314
315"loc_FF85D8CC:\n"
316// jumptable FF865F58 entry 4 // called in shooting, after first call to 32
317"                BL      sub_FF85DCBC\n"
318"                B       loc_FF85D8B8\n"
319
320"loc_FF85D8D4:\n"
321// jumptable FF865F58 entry 3: last call after shot, also called switching from play->shoot
322"                BL      sub_FF85E054\n"
323"                B       loc_FF85D8B8\n" // -> middle of jt 4
324
325"loc_FF85D8DC:\n"
326// jumptable FF865F58 entry 5
327"                BL      sub_FF85E05C\n"
328"                B       loc_FF85DA1C\n"
329
330"loc_FF85D8E4:\n"
331// jumptable FF865F58 entry 6
332"                BL      sub_FF85E1AC\n"
333"                B       loc_FF85D948\n" // -> middle of jt 8
334
335"loc_FF85D8EC:\n"
336// jumptable FF865F58 entry 7
337"                LDR     R5, [R0,#0xC]\n"
338"                BL      sub_FF85E064\n"
339"                MOV     R0, R5\n"
340"                BL      sub_FF91E5A0\n"
341"                TST     R0, #1\n"
342"                MOV     R8, R0\n"
343"                BNE     loc_FF85D92C\n"
344"                BL      sub_FF86E414\n"
345"                STR     R0, [R5,#0x18]\n"
346"                MOV     R0, R5\n"
347"                BL      sub_FF91F4D4\n"
348"                MOV     R0, R5\n"
349"                BL      sub_FF91F8C4\n"
350"                MOV     R8, R0\n"
351"                LDR     R0, [R5,#0x18]\n"
352"                BL      sub_FF86E628\n"
353
354"loc_FF85D92C:\n"
355"                BL      sub_FF85E054\n"
356"                MOV     R2, R5\n"
357"                MOV     R1, #9\n"
358"                MOV     R0, R8\n"
359
360"loc_FF85D93C:\n"
361"                BL      sub_FF85BABC\n"
362"                B       loc_FF85DA1C\n"
363
364"loc_FF85D944:\n"
365// jumptable FF865F58 entry 8: movie mode half press ?
366"                BL      sub_FF85E20C\n"
367"loc_FF85D948:\n"
368"                BL      sub_FF85B5A8\n"
369"                B       loc_FF85DA1C\n"
370
371"loc_FF85D950:\n"
372// jumptable FF865F58 entry 10
373"                LDR     R0, [R4,#0x54]\n"
374"                BL      sub_FF85E620_my\n"
375"                B       loc_FF85DA1C\n"
376
377"loc_FF85D95C:\n"
378// jumptable FF865F58 entry 11
379"                BL      sub_FF85E8D4\n"
380"                B       loc_FF85DA1C\n"
381
382"loc_FF85D964:\n"
383// jumptable FF865F58 entry 12
384"                BL      sub_FF85E968\n"
385"                B       loc_FF85DA1C\n"
386
387"loc_FF85D96C:\n"
388// jumptable FF865F58 entry 9
389"                BL      sub_FF85E054\n"
390"                B       loc_FF85DA1C\n"
391
392"loc_FF85D974:\n"
393// jumptable FF865F58 entry 13
394"                BL      sub_FF91E7B0\n"
395"                B       loc_FF85DA1C\n"
396
397"loc_FF85D97C:\n"
398// jumptable FF865F58 entry 14
399"                BL      sub_FF91E998\n"
400"                B       loc_FF85DA1C\n"
401
402"loc_FF85D984:\n"
403// jumptable FF865F58 entry 15
404"                BL      sub_FF91EA28\n"
405"                B       loc_FF85DA1C\n"
406
407"loc_FF85D98C:\n"
408// jumptable FF865F58 entry 16
409"                BL      sub_FF91EADC\n"
410"                B       loc_FF85DA1C\n"
411
412"loc_FF85D994:\n"
413// jumptable FF865F58 entry 17
414"                MOV     R0,#0\n"
415"                BL      sub_FF91ED00\n"
416"                B       loc_FF85DA1C\n"
417
418"loc_FF85D9A0:\n"
419// jumptable FF865F58 entry 18
420"                BL      sub_FF91EE38\n"
421"                B       loc_FF85DA1C\n"
422
423"loc_FF85D9A8:\n"
424// jumptable FF865F58 entry 19
425"                BL      sub_FF91EEC8\n"
426"                B       loc_FF85DA1C\n"
427
428"loc_FF85D9B0:\n"
429// jumptable FF865F58 entry 20
430"                BL      sub_FF91EF88\n"
431"                B       loc_FF85DA1C\n"
432
433"loc_FF85D9B8:\n"
434// jumptable FF865F58 entry 21: focus mode to mf
435"                BL      sub_FF85E40C\n"
436"                B       loc_FF85DA1C\n"
437
438"loc_FF85D9C0:\n"
439// jumptable FF865F58 entry 22: halfpress to shoot, focus mode change except MF
440"                BL      sub_FF85E4AC\n"
441"                BL      sub_FF824A04\n"
442"                B       loc_FF85DA1C\n"
443
444"loc_FF85D9CC:\n"
445// jumptable FF865F58 entry 23
446"                BL      sub_FF91EB98\n"
447"                B       loc_FF85DA1C\n"
448
449"loc_FF85D9D4:\n"
450// jumptable FF865F58 entry 24
451"                BL      sub_FF91EC04\n"
452"                B       loc_FF85DA1C\n"
453
454"loc_FF85D9DC:\n"
455// jumptable FF865F58 entry 25
456"                BL      sub_FF8608A0\n"
457"                B       loc_FF85DA1C\n"
458
459"loc_FF85D9E4:\n"
460// jumptable FF865F58 entry 26
461"                BL      sub_FF860908\n"
462"                B       loc_FF85DA1C\n"
463
464"loc_FF85D9EC:\n"
465// jumptable FF865F58 entry 27: iso change
466"                BL      sub_FF860964\n"
467"                BL      sub_FF860924\n"
468"                B       loc_FF85DA1C\n"
469
470"loc_FF85D9F8:\n"
471// jumptable FF865F58 entry 28
472"                MOV     R0, #1\n"
473"                BL      sub_FF9201A4\n"
474"                LDRH    R0, [R4, #0x98]\n"
475"                CMP     R0, #4\n"
476"                BLNE    sub_FF860BD0\n"
477"                B       loc_FF85DA1C\n"
478"loc_FF85DA10:\n"
479// jumptable FF865F58 default entry
480"                LDR     R1, =0x6C9\n"
481"                LDR     R0, =0xFF85D2E0\n" // "SsShootTask.c"
482"                BL      sub_FF81B284\n" // DebugAssert
483
484"loc_FF85DA1C:\n"
485// jumptable FF865F58 entry 29: Most continue here
486// also called explicitly in shoot after 1 and 30, and on pb -> shoot 2x
487"                LDR     R0, [SP]\n"
488"                LDR     R1, [R0,#4]\n"
489"                LDR     R0, [R6]\n"
490"                BL      sub_FF866178\n"
491"                LDR     R5, [SP]\n"
492"                LDR     R0, [R5,#8]\n"
493"                CMP     R0, #0\n"
494"                LDREQ   R1, =0x12B\n"
495"                LDREQ   R0, =0xFF85D2E0\n" // "SsShootTask.c"
496"                BLEQ    sub_FF81B284\n" // DebugAssert
497"                STR     R7, [R5,#8]\n"
498"                B       loc_FF85D768\n" // -> main loop
499    );
500}
501
502void __attribute__((naked,noinline)) sub_FF85E620_my() {
503        asm volatile (
504                        "                 STMFD   SP!, {R4-R9,LR}\n"
505                        "                 MOV     R9, R0\n"
506                        "                 MOV     R0, #0x41\n"
507                        "                 SUB     SP, SP, #0x3C\n"
508                        "                 MOV     R6, #0\n"
509                        "                 STR     R0, [SP,#0x38]\n"
510                        "                 BL      sub_FF85E5F0\n"
511                        "                 CMP     R0, #0\n"
512                        "                 LDRNE   R1, =0x18F\n"
513                        "                 BNE     sub_FF85E7E4\n"
514                        "                 LDR     R5, =0x2944\n"
515                        "                 LDR     R1, =0x40E\n"
516                        "                 LDR     R0, [R5,#4]\n"
517                        "                 BL      sub_FF8661AC\n"
518                        "                 BL      sub_FF86E414\n"
519                        "                 STR     R0, [R5,#8]\n"
520                        "                 MOV     R0, #0\n"
521                        "                 BL      sub_FF868480\n"
522                        "                 STR     R0, [SP,#0x2C]\n"
523                        "                 ADD     R0, SP, #0x2C\n"
524                        "                 ADD     R1, SP, #0x4\n"
525                        "                 BL      sub_FF867F08\n"
526                        "                 ADD     R0, SP, #0x4\n"
527                        "                 BL      sub_FF867DF0\n"
528                        "                 STR     R0, [SP,#0x30]\n"
529                        "                 LDR     R0, [R5,#8]\n"
530                        "                 MOV     R3, #4\n"
531                        "                 ADD     R2, SP, #0x30\n"
532                        "                 MOV     R1, #0x34\n"
533                        "                 BL      sub_FF86E734\n"
534                        "                 LDR     R8, [SP,#0x30]\n"
535                        "                 BL      sub_FF85EA6C_my\n"
536                        "                 B       sub_FF85E6A0\n"
537    );
538}
539
540void __attribute__((naked,noinline)) sub_FF85EA6C_my() {
541        asm volatile (
542                        "                 STMFD   SP!, {R4,LR}\n"
543                        "                 SUB     SP, SP, #0x18\n"
544                        "                 ADD     R1, SP, #0x14\n"
545                        "                 MOV     R2, #1\n"
546                        "                 MOV     R0, #0x5F\n"
547                        "                 BL      sub_FF86E284\n" //PT_GetPropertyCaseString_0
548                        "                 TST     R0, #1\n"
549                        "                 LDRNE   R1, =0x105\n"
550                        "                 LDRNE   R0, =0xFF85E930\n" //aSsmovierec_c
551                        "                 BLNE    sub_FF81B284\n" //DebugAssert
552                        "                 MOV     R0, #0\n"
553                        "                 BL      sub_FF8AF4F8\n"
554                        "                 STR     R0, [SP,#0x10]\n"
555                        "                 MOV     R0, #0\n"
556                        "                 BL      sub_FF8B130C\n"
557                        "                 STR     R0, [SP,#0xC]\n"
558                        "                 LDRB    R0, [SP,#0x14]\n"
559                        "                 BL      sub_FF8AF4F8\n"
560                        "                 STR     R0, [SP,#0x8]\n"
561                        "                 LDRB    R0, [SP,#0x14]\n"
562                        "                 BL      sub_FF8B130C\n"
563                        "                 LDR     R4, =0x2944\n"
564                        "                 STR     R0, [SP,#0x4]\n"
565                        "                 LDR     R0, [R4,#8]\n"
566                        "                 MOV     R3, #4\n"
567                        "                 ADD     R2, SP, #0x10\n"
568                        "                 MOV     R1, #0x99\n"
569                        "                 BL      sub_FF86E734\n"
570                        "                 LDR     R0, [R4,#8]\n"
571                        "                 MOV     R3, #4\n"
572                        "                 ADD     R2, SP, #0xC\n"
573                        "                 MOV     R1, #0x9A\n"
574                        "                 BL      sub_FF86E734\n"
575                        "                 LDR     R1, =0x111\n"
576                        "                 LDR     R0, [R4,#8]\n"
577                        "                 MOV     R3, #4\n"
578                        "                 ADD     R2, SP, #0x8\n"
579                        "                 BL      sub_FF86E734\n"
580                        "                 LDR     R1, =0x112\n"
581                        "                 LDR     R0, [R4,#8]\n"
582                        "                 MOV     R3, #4\n"
583                        "                 ADD     R2, SP, #0x4\n"
584                        "                 BL      sub_FF86E734\n"
585                        "                 LDR     R0, =0x14520\n"
586                        "                 ADD     R2, SP, #0xC\n"
587                        "                 LDRH    R0, [R0,#0x44]\n"
588                        "                 ADD     R1, SP, #0x10\n"
589                        "                 BL      sub_FF8621C4_my\n"  //mine mine mine!!!!
590                        "                 B       sub_FF85EB2C\n"
591    );
592}
593
594void __attribute__((naked,noinline)) sub_FF8621C4_my() {
595        asm volatile (
596                        "                CMP     R0, #4\n"
597                        "                MOV     R3, #0\n"
598                        "                MOV     R12, #0\n"
599                        "                ADDLS   PC, PC, R0,LSL#2\n"
600                        "                B       loc_FF862218\n"
601                        "loc_FF8621D8:\n"
602                        "                B       loc_FF8621EC\n"
603                        "loc_FF8621DC:\n"
604                        "                B       loc_FF8621F8\n"
605                        "loc_FF8621E0:\n"
606                        "                B       loc_FF862204\n"
607                        "loc_FF8621E4:\n"
608                        "                B       loc_FF862218\n"
609                        "loc_FF8621E8:\n"
610                        "                B       loc_FF862210\n"
611                        "loc_FF8621EC:\n"
612                        //; jumptable FF8621D0 entry 0
613                        "                MOV     R3, #0x500\n" //0xA0
614                        "                MOV     R12, #0x2D0\n" //0x78
615                        "                B       sub_FF862218\n"
616                        "loc_FF8621F8:\n"
617                        //; jumptable FF8621D0 entry 1
618                        "                MOV     R3, #0x500\n" //0x140
619                        "                MOV     R12, #0x2D0\n" //0xF0
620                        "                B       sub_FF862218\n"
621                        "\n"
622                        "loc_FF862204:\n"
623
624                        //; jumptable FF8621D0 entry 2
625                        "                MOV     R3, #0x500\n" //0x280
626                        "                MOV     R12, #0x2D0\n" //0x1E0
627                        "                B       sub_FF862218\n"
628                        "loc_FF862210:\n"
629                        //; jumptable FF8621D0 entry 4
630                        "                MOV     R3, #0x500\n" //0x500
631                        "                MOV     R12, #0x2D0\n" //0x2D0
632                        "loc_FF862218:\n"
633                        //; jumptable FF8621D0 default entry
634                        //; jumptable FF8621D0 entry 3
635                        "                CMP     R1, #0\n"
636                        "                STRNE   R3, [R1]\n"
637                        "                CMP     R2, #0\n"
638                        "                STRNE   R12, [R2]\n"
639                        "                BX      LR\n"
640    );
641}
642
643
644// Extracted method: task_ExpDrvTask (FF899CC4)
645void __attribute__((naked,noinline)) exp_drv_task()
646{
647        asm volatile (
648                        "loc_FF899CC4:\n"
649                        "                STMFD   SP!, {R4-R8,LR}\n"
650                        "                SUB     SP, SP, #0x20\n"
651                        "                LDR     R8, =0xBB8\n"
652                        "                LDR     R7, =0x3B64\n"
653                        "                LDR     R5, =0x19174\n"
654                        "                MOV     R0, #0\n"
655                        "                ADD     R6, SP, #0x10\n"
656                        "                STR     R0, [SP,#0xC]\n"
657                        "loc_FF899CE4:\n"
658                        "                LDR     R0, [R7,#0x20]\n"
659                        "                MOV     R2, #0\n"
660                        "                ADD     R1, SP, #0x1C\n"
661                        "                BL      sub_FF826978\n"
662                        "                LDR     R0, [SP,#0xC]\n"
663                        "                CMP     R0, #1\n"
664                        "                BNE     loc_FF899D30\n"
665                        "                LDR     R0, [SP,#0x1C]\n"
666                        "                LDR     R0, [R0]\n"
667                        "                CMP     R0, #0x13\n"
668                        "                CMPNE   R0, #0x14\n"
669                        "                CMPNE   R0, #0x15\n"
670                        "                CMPNE   R0, #0x16\n"
671                        "                BEQ     loc_FF899E4C\n"
672                        "                CMP     R0, #0x28\n"
673                        "                BEQ     loc_FF899E24\n"
674                        "                ADD     R1, SP, #0xC\n"
675                        "                MOV     R0, #0\n"
676                        "                BL      sub_FF899C74\n"
677                        "loc_FF899D30:\n"
678                        "                LDR     R0, [SP,#0x1C]\n"
679                        "                LDR     R1, [R0]\n"
680                        "                CMP     R1, #0x2D\n"
681                        "                BNE     loc_FF899D60\n"
682                        "                LDR     R0, [SP,#0x1C]\n"
683                        "                BL      sub_FF89AF78\n"
684                        "                LDR     R0, [R7,#0x1C]\n"
685                        "                MOV     R1, #1\n"
686                        "                BL      sub_FF866178\n"
687                        "                BL      0xFF81B23C\n"          //ExitTask
688                        "                ADD     SP, SP, #0x20\n"
689                        "                LDMFD   SP!, {R4-R8,PC}\n"
690                        "loc_FF899D60:\n"
691                        "                CMP     R1, #0x2C\n"
692                        "                BNE     loc_FF899D7C\n"
693                        "                LDR     R2, [R0,#0x88]!\n"
694                        "                LDR     R1, [R0,#4]\n"
695                        "                MOV     R0, R1\n"
696                        "                BLX     R2\n"
697                        "                B       loc_FF89A274\n"
698                        "loc_FF899D7C:\n"
699                        "                CMP     R1, #0x26\n"
700                        "                BNE     loc_FF899DCC\n"
701                        "                LDR     R0, [R7,#0x1C]\n"
702                        "                MOV     R1, #0x80\n"
703                        "                BL      sub_FF8661AC\n"
704                        "                LDR     R0, =0xFF8965E4\n"
705                        "                MOV     R1, #0x80\n"
706                        "                BL      sub_FF91307C\n"
707                        "                LDR     R0, [R7,#0x1C]\n"
708                        "                MOV     R2, R8\n"
709                        "                MOV     R1, #0x80\n"
710                        "                BL      sub_FF8660B8\n"
711                        "                TST     R0, #1\n"
712                        "                LDRNE   R1, =0xDC6\n"
713                        "                BNE     loc_FF899E10\n"
714                        "loc_FF899DB8:\n"
715                        "                LDR     R1, [SP,#0x1C]\n"
716                        "                LDR     R0, [R1,#0x8C]\n"
717                        "                LDR     R1, [R1,#0x88]\n"
718                        "                BLX     R1\n"
719                        "                B       loc_FF89A274\n"
720                        "loc_FF899DCC:\n"
721                        "                CMP     R1, #0x27\n"
722                        "                BNE     loc_FF899E1C\n"
723                        "                ADD     R1, SP, #0xC\n"
724                        "                BL      sub_FF899C74\n"
725                        "                LDR     R0, [R7,#0x1C]\n"
726                        "                MOV     R1, #0x100\n"
727                        "                BL      sub_FF8661AC\n"
728                        "                MOV     R1, #0x100\n"
729                        "                LDR     R0, =0xFF8965F4\n"  //JHARP ADR?
730                        "                BL      sub_FF913304\n"
731                        "                LDR     R0, [R7,#0x1C]\n"
732                        "                MOV     R2, R8\n"
733                        "                MOV     R1, #0x100\n"
734                        "                BL      sub_FF8660B8\n"
735                        "                TST     R0, #1\n"
736                        "                BEQ     loc_FF899DB8\n"
737                        "                MOV     R1, #0xDD0\n"
738                        "loc_FF899E10:\n"
739                        "                LDR     R0, =0xFF896C24\n"  //aExpdrv_c
740                        "                BL      0xFF81B284\n"          //DebugAssert
741                        "                B       loc_FF899DB8\n"
742                        "loc_FF899E1C:\n"
743                        "                CMP     R1, #0x28\n"
744                        "                BNE     loc_FF899E34\n"
745                        "loc_FF899E24:\n"
746                        "                LDR     R0, [SP,#0x1C]\n"
747                        "                ADD     R1, SP, #0xC\n"
748                        "                BL      sub_FF899C74\n"
749                        "                B       loc_FF899DB8\n"
750                        "loc_FF899E34:\n"
751                        "                CMP     R1, #0x2B\n"
752                        "                BNE     loc_FF899E4C\n"
753                        "                BL      sub_FF88919C\n"
754                        "                BL      sub_FF889E28\n"
755                        "                BL      sub_FF889960\n"
756                        "                B       loc_FF899DB8\n"
757                        "loc_FF899E4C:\n"
758                        "                LDR     R0, [SP,#0x1C]\n"
759                        "                MOV     R4, #1\n"
760                        "                LDR     R1, [R0]\n"
761                        "                CMP     R1, #0x11\n"
762                        "                CMPNE   R1, #0x12\n"
763                        "                BNE     loc_FF899EBC\n"
764                        "                LDR     R1, [R0,#0x7C]\n"
765                        "                ADD     R1, R1, R1,LSL#1\n"
766                        "                ADD     R1, R0, R1,LSL#2\n"
767                        "                SUB     R1, R1, #8\n"
768                        "                LDMIA   R1, {R2-R4}\n"
769                        "                STMIA   R6, {R2-R4}\n"
770                        "                BL      sub_FF8986BC\n"
771                        "                LDR     R0, [SP,#0x1C]\n"
772                        "                LDR     R1, [R0,#0x7C]\n"
773                        "                LDR     R3, [R0,#0x88]\n"
774                        "                LDR     R2, [R0,#0x8C]\n"
775                        "                ADD     R0, R0, #4\n"
776                        "                BLX     R3\n"
777                        "                LDR     R0, [SP,#0x1C]\n"
778                        "                BL      sub_FF89B330\n"
779                        "                LDR     R0, [SP,#0x1C]\n"
780                        "                LDR     R1, [R0,#0x7C]\n"
781                        "                LDR     R3, [R0,#0x90]\n"
782                        "                LDR     R2, [R0,#0x94]\n"
783                        "                ADD     R0, R0, #4\n"
784                        "                BLX     R3\n"
785                        "                B       loc_FF89A1B4\n"
786                        "loc_FF899EBC:\n"
787                        "                CMP     R1, #0x13\n"
788                        "                CMPNE   R1, #0x14\n"
789                        "                CMPNE   R1, #0x15\n"
790                        "                CMPNE   R1, #0x16\n"
791                        "                BNE     loc_FF899F74\n"
792                        "                ADD     R3, SP, #0xC\n"
793                        "                MOV     R2, SP\n"
794                        "                ADD     R1, SP, #0x10\n"
795                        "                BL      sub_FF898900\n"
796                        "                CMP     R0, #1\n"
797                        "                MOV     R4, R0\n"
798                        "                CMPNE   R4, #5\n"
799                        "                BNE     loc_FF899F10\n"
800                        "                LDR     R0, [SP,#0x1C]\n"
801                        "                MOV     R2, R4\n"
802                        "                LDR     R1, [R0,#0x7C]!\n"
803                        "                LDR     R12, [R0,#0xC]!\n"
804                        "                LDR     R3, [R0,#4]\n"
805                        "                MOV     R0, SP\n"
806                        "                BLX     R12\n"
807                        "                B       loc_FF899F48\n"
808                        "loc_FF899F10:\n"
809                        "                LDR     R0, [SP,#0x1C]\n"
810                        "                CMP     R4, #2\n"
811                        "                LDR     R3, [R0,#0x8C]\n"
812                        "                CMPNE   R4, #6\n"
813                        "                BNE     loc_FF899F5C\n"
814                        "                LDR     R12, [R0,#0x88]\n"
815                        "                MOV     R0, SP\n"
816                        "                MOV     R2, R4\n"
817                        "                MOV     R1, #1\n"
818                        "                BLX     R12\n"
819                        "                LDR     R0, [SP,#0x1C]\n"
820                        "                MOV     R2, SP\n"
821                        "                ADD     R1, SP, #0x10\n"
822                        "                BL      sub_FF89995C\n"
823                        "loc_FF899F48:\n"
824                        "                LDR     R0, [SP,#0x1C]\n"
825                        "                LDR     R2, [SP,#0xC]\n"
826                        "                MOV     R1, R4\n"
827                        "                BL      sub_FF899C14\n"
828                        "                B       loc_FF89A1B4\n"
829                        "loc_FF899F5C:\n"
830                        "                LDR     R1, [R0,#0x7C]\n"
831                        "                LDR     R12, [R0,#0x88]\n"
832                        "                ADD     R0, R0, #4\n"
833                        "                MOV     R2, R4\n"
834                        "                BLX     R12\n"
835                        "                B       loc_FF89A1B4\n"
836                        "loc_FF899F74:\n"
837                        "                CMP     R1, #0x22\n"
838                        "                CMPNE   R1, #0x23\n"
839                        "                BNE     loc_FF899FC0\n"
840                        "                LDR     R1, [R0,#0x7C]\n"
841                        "                ADD     R1, R1, R1,LSL#1\n"
842                        "                ADD     R1, R0, R1,LSL#2\n"
843                        "                SUB     R1, R1, #8\n"
844                        "                LDMIA   R1, {R2-R4}\n"
845                        "                STMIA   R6, {R2-R4}\n"
846                        "                BL      sub_FF897C48\n"
847                        "                LDR     R0, [SP,#0x1C]\n"
848                        "                LDR     R1, [R0,#0x7C]\n"
849                        "                LDR     R3, [R0,#0x88]\n"
850                        "                LDR     R2, [R0,#0x8C]\n"
851                        "                ADD     R0, R0, #4\n"
852                        "                BLX     R3\n"
853                        "                LDR     R0, [SP,#0x1C]\n"
854                        "                BL      sub_FF897F38\n"
855                        "                B       loc_FF89A1B4\n"
856                        "loc_FF899FC0:\n"
857                        "                ADD     R1, R0, #4\n"
858                        "                LDMIA   R1, {R2,R3,R12}\n"
859                        "                STMIA   R6, {R2,R3,R12}\n"
860                        "                LDR     R1, [R0]\n"
861                        "                CMP     R1, #0x25\n"
862                        "                ADDLS   PC, PC, R1,LSL#2\n"
863                        "                B       loc_FF89A194\n"
864                        "loc_FF899FDC:\n"
865                        "                B       loc_FF89A074\n"
866                        "loc_FF899FE0:\n"
867                        "                B       loc_FF89A074\n"
868                        "loc_FF899FE4:\n"
869                        "                B       loc_FF89A07C\n"
870                        "loc_FF899FE8:\n"
871                        "                B       loc_FF89A084\n"
872                        "loc_FF899FEC:\n"
873                        "                B       loc_FF89A084\n"
874                        "loc_FF899FF0:\n"
875                        "                B       loc_FF89A084\n"
876                        "loc_FF899FF4:\n"
877                        "                B       loc_FF89A074\n"
878                        "loc_FF899FF8:\n"
879                        "                B       loc_FF89A07C\n"
880                        "loc_FF899FFC:\n"
881                        "                B       loc_FF89A084\n"
882                        "loc_FF89A000:\n"
883                        "                B       loc_FF89A084\n"
884                        "loc_FF89A004:\n"
885                        "                B       loc_FF89A09C\n"
886                        "loc_FF89A008:\n"
887                        "                B       loc_FF89A09C\n"
888                        "loc_FF89A00C:\n"
889                        "                B       loc_FF89A188\n"
890                        "loc_FF89A010:\n"
891                        "                B       loc_FF89A190\n"
892                        "loc_FF89A014:\n"
893                        "                B       loc_FF89A190\n"
894                        "loc_FF89A018:\n"
895                        "                B       loc_FF89A190\n"
896                        "loc_FF89A01C:\n"
897                        "                B       loc_FF89A190\n"
898                        "loc_FF89A020:\n"
899                        "                B       loc_FF89A194\n"
900                        "loc_FF89A024:\n"
901                        "                B       loc_FF89A194\n"
902                        "loc_FF89A028:\n"
903                        "                B       loc_FF89A194\n"
904                        "loc_FF89A02C:\n"
905                        "                B       loc_FF89A194\n"
906                        "loc_FF89A030:\n"
907                        "                B       loc_FF89A194\n"
908                        "loc_FF89A034:\n"
909                        "                B       loc_FF89A194\n"
910                        "loc_FF89A038:\n"
911                        "                B       loc_FF89A08C\n"
912                        "loc_FF89A03C:\n"
913                        "                B       loc_FF89A094\n"
914                        "loc_FF89A040:\n"
915                        "                B       loc_FF89A094\n"
916                        "loc_FF89A044:\n"
917                        "                B       loc_FF89A0A8\n"
918                        "loc_FF89A048:\n"
919                        "                B       loc_FF89A0A8\n"
920                        "loc_FF89A04C:\n"
921                        "                B       loc_FF89A0B0\n"
922                        "loc_FF89A050:\n"
923                        "                B       loc_FF89A0E0\n"
924                        "loc_FF89A054:\n"
925                        "                B       loc_FF89A110\n"
926                        "loc_FF89A058:\n"
927                        "                B       loc_FF89A140\n"
928                        "loc_FF89A05C:\n"
929                        "                B       loc_FF89A170\n"
930                        "loc_FF89A060:\n"
931                        "                B       loc_FF89A170\n"
932                        "loc_FF89A064:\n"
933                        "                B       loc_FF89A194\n"
934                        "loc_FF89A068:\n"
935                        "                B       loc_FF89A194\n"
936                        "loc_FF89A06C:\n"
937                        "                B       loc_FF89A178\n"
938                        "loc_FF89A070:\n"
939                        "                B       loc_FF89A180\n"
940                        "loc_FF89A074:\n"
941//                      "; jumptable FF899FD4 entries 0,1,6\n"
942                        "                BL      sub_FF896AD0\n"
943                        "                B       loc_FF89A194\n"
944                        "loc_FF89A07C:\n"
945//                      "; jumptable FF899FD4 entries 2,7\n"
946                        "                BL      sub_FF896D44\n"
947                        "                B       loc_FF89A194\n"
948                        "loc_FF89A084:\n"
949//                      "; jumptable FF899FD4 entries 3-5,8,9\n"
950                        "                BL      sub_FF896F48\n"
951                        "                B       loc_FF89A194\n"
952                        "loc_FF89A08C:\n"
953//                      "; jumptable FF899FD4 entry 23\n"
954                        "                BL      sub_FF8971B0\n"
955                        "                B       loc_FF89A194\n"
956                        "loc_FF89A094:\n"
957//                      "; jumptable FF899FD4 entries 24,25\n"
958                        "                BL      sub_FF8973A4\n"
959                        "                B       loc_FF89A194\n"
960                        "loc_FF89A09C:\n"
961//                      "; jumptable FF899FD4 entries 10,11\n"
962                        "                BL      sub_FF897634_my\n"
963//                      "                BL      sub_FF897634\n"
964                        "                MOV     R4, #0\n"
965                        "                B       loc_FF89A194\n"
966                        "loc_FF89A0A8:\n"
967//                      "; jumptable FF899FD4 entries 26,27\n"
968                        "                BL      sub_FF897770\n"
969                        "                B       loc_FF89A194\n"
970                        "loc_FF89A0B0:\n"
971//                      "; jumptable FF899FD4 entry 28\n"
972                        "                LDRH    R1, [R0,#4]\n"
973                        "                STRH    R1, [SP,#0x10]\n"
974                        "                LDRH    R1, [R5,#2]\n"
975                        "                STRH    R1, [SP,#0x12]\n"
976                        "                LDRH    R1, [R5,#4]\n"
977                        "                STRH    R1, [SP,#0x14]\n"
978                        "                LDRH    R1, [R5,#6]\n"
979                        "                STRH    R1, [SP,#0x16]\n"
980                        "                LDRH    R1, [R0,#0xC]\n"
981                        "                STRH    R1, [SP,#0x18]\n"
982                        "                BL      sub_FF89AFEC\n"
983                        "                B       loc_FF89A194\n"
984                        "loc_FF89A0E0:\n"
985//                      "; jumptable FF899FD4 entry 29\n"
986                        "                LDRH    R1, [R0,#4]\n"
987                        "                STRH    R1, [SP,#0x10]\n"
988                        "                LDRH    R1, [R5,#2]\n"
989                        "                STRH    R1, [SP,#0x12]\n"
990                        "                LDRH    R1, [R5,#4]\n"
991                        "                STRH    R1, [SP,#0x14]\n"
992                        "                LDRH    R1, [R5,#6]\n"
993                        "                STRH    R1, [SP,#0x16]\n"
994                        "                LDRH    R1, [R5,#8]\n"
995                        "                STRH    R1, [SP,#0x18]\n"
996                        "                BL      sub_FF89B14C\n"
997                        "                B       loc_FF89A194\n"
998                        "loc_FF89A110:\n"
999//                      "; jumptable FF899FD4 entry 30\n"
1000                        "                LDRH    R1, [R5]\n"
1001                        "                STRH    R1, [SP,#0x10]\n"
1002                        "                LDRH    R1, [R0,#6]\n"
1003                        "                STRH    R1, [SP,#0x12]\n"
1004                        "                LDRH    R1, [R5,#4]\n"
1005                        "                STRH    R1, [SP,#0x14]\n"
1006                        "                LDRH    R1, [R5,#6]\n"
1007                        "                STRH    R1, [SP,#0x16]\n"
1008                        "                LDRH    R1, [R5,#8]\n"
1009                        "                STRH    R1, [SP,#0x18]\n"
1010                        "                BL      sub_FF89B1F8\n"
1011                        "                B       loc_FF89A194\n"
1012                        "loc_FF89A140:\n"
1013//                      "; jumptable FF899FD4 entry 31\n"
1014                        "                LDRH    R1, [R5]\n"
1015                        "                STRH    R1, [SP,#0x10]\n"
1016                        "                LDRH    R1, [R5,#2]\n"
1017                        "                STRH    R1, [SP,#0x12]\n"
1018                        "                LDRH    R1, [R5,#4]\n"
1019                        "                STRH    R1, [SP,#0x14]\n"
1020                        "                LDRH    R1, [R5,#6]\n"
1021                        "                STRH    R1, [SP,#0x16]\n"
1022                        "                LDRH    R1, [R0,#0xC]\n"
1023                        "                STRH    R1, [SP,#0x18]\n"
1024                        "                BL      sub_FF89B298\n"
1025                        "                B       loc_FF89A194\n"
1026                        "loc_FF89A170:\n"
1027//                      "; jumptable FF899FD4 entries 32,33\n"
1028                        "                BL      sub_FF897A10\n"
1029                        "                B       loc_FF89A194\n"
1030                        "loc_FF89A178:\n"
1031//                      "; jumptable FF899FD4 entry 36\n"
1032                        "                BL      sub_FF89803C\n"
1033                        "                B       loc_FF89A194\n"
1034                        "loc_FF89A180:\n"
1035//                      "; jumptable FF899FD4 entry 37\n"
1036                        "                BL      sub_FF898274\n"
1037                        "                B       loc_FF89A194\n"
1038                        "loc_FF89A188:\n"
1039//                      "; jumptable FF899FD4 entry 12\n"
1040                        "                BL      sub_FF8983EC\n"
1041                        "                B       loc_FF89A194\n"
1042                        "loc_FF89A190:\n"
1043//                      "; jumptable FF899FD4 entries 13-16\n"
1044                        "                BL      sub_FF898584\n"
1045                        "loc_FF89A194:\n"
1046//                      "; jumptable FF899FD4 default entry\n"
1047//                      "; jumptable FF899FD4 entries 17-22,34,35\n"
1048                        "                LDR     R0, [SP,#0x1C]\n"
1049                        "                LDR     R1, [R0,#0x7C]\n"
1050                        "                LDR     R3, [R0,#0x88]\n"
1051                        "                LDR     R2, [R0,#0x8C]\n"
1052                        "                ADD     R0, R0, #4\n"
1053                        "                BLX     R3\n"
1054                        "                CMP     R4, #1\n"
1055                        "                BNE     loc_FF89A1FC\n"
1056                        "loc_FF89A1B4:\n"
1057                        "                LDR     R0, [SP,#0x1C]\n"
1058                        "                MOV     R2, #0xC\n"
1059                        "                LDR     R1, [R0,#0x7C]\n"
1060                        "                ADD     R1, R1, R1,LSL#1\n"
1061                        "                ADD     R0, R0, R1,LSL#2\n"
1062                        "                SUB     R4, R0, #8\n"
1063                        "                LDR     R0, =0x19174\n"
1064                        "                ADD     R1, SP, #0x10\n"
1065                        "                BL      sub_FFAC7CA0\n"
1066                        "                LDR     R0, =0x19180\n"
1067                        "                MOV     R2, #0xC\n"
1068                        "                ADD     R1, SP, #0x10\n"
1069                        "                BL      sub_FFAC7CA0\n"
1070                        "                LDR     R0, =0x1918C\n"
1071                        "                MOV     R2, #0xC\n"
1072                        "                MOV     R1, R4\n"
1073                        "                BL      sub_FFAC7CA0\n"
1074                        "                B       loc_FF89A274\n"
1075                        "loc_FF89A1FC:\n"
1076                        "                LDR     R0, [SP,#0x1C]\n"
1077                        "                LDR     R0, [R0]\n"
1078                        "                CMP     R0, #0xB\n"
1079                        "                BNE     loc_FF89A244\n"
1080                        "                MOV     R3, #0\n"
1081                        "                STR     R3, [SP]\n"
1082                        "                MOV     R3, #1\n"
1083                        "                MOV     R2, #1\n"
1084                        "                MOV     R1, #1\n"
1085                        "                MOV     R0, #0\n"
1086                        "                BL      sub_FF8968D8\n"
1087                        "                MOV     R3, #0\n"
1088                        "                STR     R3, [SP]\n"
1089                        "                MOV     R3, #1\n"
1090                        "                MOV     R2, #1\n"
1091                        "                MOV     R1, #1\n"
1092                        "                MOV     R0, #0\n"
1093                        "                B       loc_FF89A270\n"
1094                        "loc_FF89A244:\n"
1095                        "                MOV     R3, #1\n"
1096                        "                MOV     R2, #1\n"
1097                        "                MOV     R1, #1\n"
1098                        "                MOV     R0, #1\n"
1099                        "                STR     R3, [SP]\n"
1100                        "                BL      sub_FF8968D8\n"
1101                        "                MOV     R3, #1\n"
1102                        "                MOV     R2, #1\n"
1103                        "                MOV     R1, #1\n"
1104                        "                MOV     R0, #1\n"
1105                        "                STR     R3, [SP]\n"
1106                        "loc_FF89A270:\n"
1107                        "                BL      sub_FF896A18\n"
1108                        "loc_FF89A274:\n"
1109                        "                LDR     R0, [SP,#0x1C]\n"
1110                        "                BL      sub_FF89AF78\n"
1111                        "                B       loc_FF899CE4\n"
1112);
1113}
1114
1115void __attribute__((naked,noinline)) sub_FF897634_my()
1116{
1117        asm volatile (
1118                        "                STMFD   SP!, {R4-R8,LR}\n"
1119                        "                LDR     R7, =0x3B64\n"
1120                        "                MOV     R4, R0\n"
1121                        "                LDR     R0, [R7,#0x1C]\n"
1122                        "                MOV     R1, #0x3E\n"
1123                        "                BL      sub_FF8661AC\n"
1124                        "                LDRSH   R0, [R4,#4]\n"
1125                        "                MOV     R2, #0\n"
1126                        "                MOV     R1, #0\n"
1127                        "                BL      sub_FF896668\n"
1128                        "                MOV     R6, R0\n"
1129                        "                LDRSH   R0, [R4,#6]\n"
1130                        "                BL      sub_FF896778\n"
1131                        "                LDRSH   R0, [R4,#8]\n"
1132                        "                BL      sub_FF8967D0\n"
1133                        "                LDRSH   R0, [R4,#0xA]\n"
1134                        "                BL      sub_FF896828\n"
1135                        "                LDRSH   R0, [R4,#0xC]\n"
1136                        "                BL      sub_FF896880\n"
1137                        "                MOV     R5, R0\n"
1138                        "                LDR     R0, [R4]\n"
1139                        "                LDR     R8, =0x1918C\n"
1140                        "                CMP     R0, #0xB\n"
1141                        "                MOVEQ   R6, #0\n"
1142                        "                MOVEQ   R5, #0\n"
1143                        "                BEQ     loc_FF8976C4\n"
1144                        "                CMP     R6, #1\n"
1145                        "                BNE     loc_FF8976C4\n"
1146                        "                LDRSH   R0, [R4,#4]\n"
1147                        "                LDR     R1, =0xFF8965D4\n"
1148                        "                MOV     R2, #2\n"
1149                        "                BL      sub_FF9131D0\n"
1150                        "                STRH    R0, [R4,#4]\n"
1151                        "                MOV     R0, #0\n"
1152                        "                STR     R0, [R7,#0x28]\n"
1153                        "                B       loc_FF8976CC\n"
1154                        "loc_FF8976C4:\n"
1155                        "                LDRH    R0, [R8]\n"
1156                        "                STRH    R0, [R4,#4]\n"
1157                        "loc_FF8976CC:\n"
1158                        "                CMP     R5, #1\n"
1159                        "                LDRNEH  R0, [R8,#8]\n"
1160                        "                BNE     loc_FF8976E8\n"
1161                        "                LDRSH   R0, [R4,#0xC]\n"
1162                        "                LDR     R1, =0xFF896658\n"
1163                        "                MOV     R2, #0x20\n"
1164                        "                BL      sub_FF89AFA8\n"
1165                        "loc_FF8976E8:\n"
1166                        "                STRH    R0, [R4,#0xC]\n"
1167                        "                LDRSH   R0, [R4,#6]\n"
1168                        "                BL      sub_FF888F0C_my\n"
1169//                      "                BL      sub_FF888F0C\n"
1170                        "                LDRSH   R0, [R4,#8]\n"
1171                        "                MOV     R1, #1\n"
1172                        "                BL      sub_FF889658\n"
1173                        "                MOV     R1, #0\n"
1174                        "                ADD     R0, R4, #8\n"
1175                        "                BL      sub_FF8896E0\n"
1176                        "                LDRSH   R0, [R4,#0xE]\n"
1177                        "                BL      sub_FF8920D8\n"
1178                        "                LDR     R4, =0xBB8\n"
1179                        "                CMP     R6, #1\n"
1180                        "                BNE     loc_FF897740\n"
1181                        "                LDR     R0, [R7,#0x1C]\n"
1182                        "                MOV     R2, R4\n"
1183                        "                MOV     R1, #2\n"
1184                        "                BL      sub_FF8660B8\n"
1185                        "                TST     R0, #1\n"
1186                        "                LDRNE   R1, =0x583\n"
1187                        "                LDRNE   R0, =0xFF896C24\n" //aExpdrv_c
1188                        "                BLNE    0xFF81B284\n"  //DebugAssert
1189                        "loc_FF897740:\n"
1190                        "                CMP     R5, #1\n"
1191                        "                LDMNEFD SP!, {R4-R8,PC}\n"
1192                        "                LDR     R0, [R7,#0x1C]\n"
1193                        "                MOV     R2, R4\n"
1194                        "                MOV     R1, #0x20\n"
1195                        "                BL      sub_FF8660B8\n"
1196                        "                TST     R0, #1\n"
1197                        "                LDRNE   R1, =0x588\n"
1198                        "                LDRNE   R0, =0xFF896C24\n" //aExpdrv_c
1199                        "                LDMNEFD SP!, {R4-R8,LR}\n"
1200                        "                BNE     0xFF81B284\n"  //DebugAssert
1201                        "                LDMFD   SP!, {R4-R8,PC}\n"
1202);
1203}
1204
1205
1206
1207
1208void __attribute__((naked,noinline)) sub_FF888F0C_my()
1209{
1210        asm volatile (
1211                        "                STMFD   SP!, {R4-R6,LR}\n"
1212                        "                LDR     R5, =0x3860\n"
1213                        "                MOV     R4, R0\n"
1214                        "                LDR     R0, [R5,#4]\n"
1215                        "                CMP     R0, #1\n"
1216                        "                MOVNE   R1, #0x140\n"
1217                        "                LDRNE   R0, =0xFF888D10\n"  //aShutter_c
1218                        "                BLNE    0xFF81B284\n"  //DebugAssert
1219                        "                CMN     R4, #0xC00\n"
1220                        "                LDREQSH R4, [R5,#2]\n"
1221                        "                CMN     R4, #0xC00\n"
1222                        "                LDREQ   R1, =0x146\n"
1223                        "                LDREQ   R0, =0xFF888D10\n"  //aShutter_c
1224                        "                STRH    R4, [R5,#2]\n"
1225                        "                BLEQ    0xFF81B284\n"  //DebugAssert
1226                        "                MOV     R0, R4\n"
1227//                      "                BL      sub_FF9A010C\n" //--
1228                        "                                BL      apex2us\n" // ++
1229                        "                MOV     R4, R0\n"
1230//                      "                BL      0xFF8AEED4\n"  //nullsub_59
1231                        "                MOV     R0, R4\n"
1232                        "                BL      sub_FF8B2850\n"
1233                        "                TST     R0, #1\n"
1234//                      "                LDRNE   R1, =0x14B\n"
1235                        "                                LDRNE   R1, =0x14B\n"
1236                        "                LDMNEFD SP!, {R4-R6,LR}\n"
1237                        "                LDRNE   R0, =0xFF888D10\n"  //aShutter_c
1238                        "                BNE     0xFF81B284\n"  //DebugAssert
1239                        "                LDMFD   SP!, {R4-R6,PC}\n"
1240);
1241}
Note: See TracBrowser for help on using the repository browser.