source: trunk/platform/sx30/sub/100h/capt_seq.c @ 1273

Revision 1273, 37.6 KB checked in by philmoz, 22 months ago (diff)

Update for G12 & SX30:

  • Property svn:eol-style set to native
Line 
1#include "lolevel.h"
2#include "platform.h"
3#include "core.h"
4
5static long *nrflag = (long*)(0x8608+0x8); // in _sub_FF9953B4__NRTable.c__0
6#define NR_AUTO (0)                                                     // have to explictly reset value back to 0 to enable auto
7
8#include "../../../generic/capt_seq.c"
9
10//void __attribute__((naked,noinline)) hangdebug() {
11//      debug_led(1);
12//      while(1);
13//}
14
15// @ FF8868C0 in firmware
16void __attribute__((naked,noinline)) capt_seq_task() {
17
18asm volatile (
19
20        "STMFD SP!, {R3-R7,LR}\n"
21        "LDR    R7, =0x3648\n"
22        "LDR    R4, =0x3BC24\n"
23        "MOV    R6, #0\n"
24
25"loc_FF8868D0:\n"
26        "LDR    R0, [R7,#4]\n"
27        "MOV    R2, #0\n"
28        "MOV    R1, SP\n"
29        "BL             sub_FF83A4C8\n"
30        "TST    R0, #1\n"
31        "BEQ    loc_FF8868FC\n"
32        "LDR    R1, =0x43F\n"
33        "LDR    R0, =0xFF8863B0\n"              //aSsshoottask_c
34        "BL             _DebugAssert\n"
35        "BL             _ExitTask\n"
36        "LDMFD SP!, {R3-R7,PC}\n"
37
38"loc_FF8868FC:\n"
39        "LDR    R0, [SP]\n"
40        "LDR    R1, [R0]\n"
41        "CMP    R1, #0x22\n"
42        "ADDLS  PC, PC, R1,LSL#2\n"
43
44                          "B  loc_FF886B50\n"
45"loc_FF886910: B  loc_FF88699C\n"
46"loc_FF886914: B  loc_FF8869B4\n"
47"loc_FF886918: B  loc_FF8869CC\n"
48"loc_FF88691C: B  loc_FF8869EC\n"
49"loc_FF886920: B  loc_FF8869E4\n"
50"loc_FF886924: B  loc_FF8869F8\n"
51"loc_FF886928: B  loc_FF886A00\n"
52"loc_FF88692C: B  loc_FF886A08\n"
53"loc_FF886930: B  loc_FF886A14\n"
54"loc_FF886934: B  loc_FF886A3C\n"
55"loc_FF886938: B  loc_FF886A20\n"
56"loc_FF88693C: B  loc_FF886A2C\n"
57"loc_FF886940: B  loc_FF886A34\n"
58"loc_FF886944: B  loc_FF886A44\n"
59"loc_FF886948: B  loc_FF886A4C\n"
60"loc_FF88694C: B  loc_FF886A54\n"
61"loc_FF886950: B  loc_FF886A5C\n"
62"loc_FF886954: B  loc_FF886A64\n"
63"loc_FF886958: B  loc_FF886A6C\n"
64"loc_FF88695C: B  loc_FF886A74\n"
65"loc_FF886960: B  loc_FF886A7C\n"
66"loc_FF886964: B  loc_FF886A84\n"
67"loc_FF886968: B  loc_FF886A8C\n"
68"loc_FF88696C: B  loc_FF886A98\n"
69"loc_FF886970: B  loc_FF886AA0\n"
70"loc_FF886974: B  loc_FF886AAC\n"
71"loc_FF886978: B  loc_FF886AB4\n"
72"loc_FF88697C: B  loc_FF886AE4\n"
73"loc_FF886980: B  loc_FF886AEC\n"
74"loc_FF886984: B  loc_FF886AF4\n"
75"loc_FF886988: B  loc_FF886AFC\n"
76"loc_FF88698C: B  loc_FF886B04\n"
77"loc_FF886990: B  loc_FF886B0C\n"
78"loc_FF886994: B  loc_FF886B18\n"
79"loc_FF886998: B  loc_FF886B5C\n"
80
81// jump table entry 0
82"loc_FF88699C:\n"
83
84"               BL      shooting_expo_iso_override\n"               // added
85
86"               BL      sub_FF887084 \n"
87
88"               BL      shooting_expo_param_override\n"                 // added
89
90"               BL      sub_FF8840BC \n"
91
92"               MOV     R0, #0\n"                                                       // added
93"               STR     R0, [R4,#0x24]\n"                                       // added, fixes overrides  behavior at short shutter press (from S95)
94
95//"             LDR     R0, [R4,#0x24] \n"                                              // above two lines make this code redundant
96//"             CMP     R0, #0 \n"                                                              // above two lines make this code redundant
97
98//"             BLNE    sub_FF992DAC \n"                                        // above two lines make this code redundant
99//"             BLNE    sub_FF992DAC_my \n"                                     // patched (above two lines make this patch redundant)
100
101"               B       loc_FF886B5C \n"
102
103// jump table entry 1
104"loc_FF8869B4: \n"
105"               LDRH    R1, [R4] \n"
106"               SUB     R12, R1, #0x8200 \n"
107"               SUBS    R12, R12, #0x2E \n"
108"               LDRNE   R0, [R0,#0xC] \n"
109
110//"             BLNE    sub_FF992BD8 \n"
111"               BLNE    sub_FF992BD8_my \n"
112
113"               B       loc_FF886B5C \n"
114
115// jump table entry 2
116"loc_FF8869CC: \n"
117"               MOV     R0, #1 \n"
118"               BL      sub_FF88739C \n"
119"               LDR     R0, [R4,#0xC]\n"
120"               CMP     R0, #0\n"
121"               BLNE    sub_FF888024 \n"
122"               B       loc_FF886B5C \n"
123
124"loc_FF8869E4: \n"
125"               BL      sub_FF886D20 \n"
126"               B       loc_FF8869F0 \n"
127
128"loc_FF8869EC: \n"
129"               BL      sub_FF887064 \n"
130"loc_FF8869F0: \n"
131"               STR     R6, [R4,#0x24] \n"
132"               B       loc_FF886B5C \n"
133
134"loc_FF8869F8: \n"
135"               BL      sub_FF88706C \n"
136"               B       loc_FF886B5C \n"
137
138"loc_FF886A00: \n"
139"               BL      sub_FF887270 \n"
140"               B       loc_FF886A18 \n"
141
142"loc_FF886A08: \n"
143"               LDR     R0, [R0,#0xC] \n"
144"               BL      sub_FF992E14 \n"
145"               B       loc_FF886B5C \n"
146
147"loc_FF886A14: \n"
148"               BL      sub_FF88730C \n"
149"loc_FF886A18: \n"
150"               BL      sub_FF8840BC \n"
151"               B       loc_FF886B5C \n"
152
153"loc_FF886A20: \n"
154"               LDR     R0, [R4,#0x54] \n"
155"               BL      sub_FF887A5C \n"
156"               B       loc_FF886B5C \n"
157
158"loc_FF886A2C: \n"
159"               BL      sub_FF887DDC \n"
160"               B       loc_FF886B5C \n"
161
162"loc_FF886A34: \n"
163"               BL      sub_FF887E40 \n"
164"               B       loc_FF886B5C \n"
165
166"loc_FF886A3C: \n"
167"               BL      sub_FF887064 \n"
168"               B       loc_FF886B5C \n"
169
170"loc_FF886A44: \n"
171"               BL      sub_FF991BB4 \n"
172"               B       loc_FF886B5C \n"
173
174"loc_FF886A4C: \n"
175"               BL      sub_FF991E04 \n"
176"               B       loc_FF886B5C \n"
177
178"loc_FF886A54: \n"
179"               BL      sub_FF991ED0 \n"
180"               B       loc_FF886B5C \n"
181
182"loc_FF886A5C: \n"
183"               BL      sub_FF991FE4 \n"
184"               B       loc_FF886B5C \n"
185
186"loc_FF886A64: \n"
187"               BL      sub_FF9920B4 \n"
188"               B       loc_FF886B5C \n"
189
190"loc_FF886A6C: \n"
191"               MOV     R0, #0 \n"
192"               B       loc_FF886A90 \n"
193
194"loc_FF886A74: \n"
195"               BL      sub_FF9926C8 \n"
196"               B       loc_FF886B5C \n"
197
198"loc_FF886A7C: \n"
199"               BL      sub_FF992760 \n"
200"               B       loc_FF886B5C \n"
201
202"loc_FF886A84: \n"
203"               BL      sub_FF992840 \n"
204"               B       loc_FF886B5C \n"
205
206"loc_FF886A8C: \n"
207"               MOV     R0, #1 \n"
208"loc_FF886A90: \n"
209"               BL      sub_FF99256C \n"
210"               B       loc_FF886B5C \n"
211
212"loc_FF886A98: \n"
213"               BL      sub_FF8875D8 \n"
214"               B       loc_FF886B5C \n"
215
216"loc_FF886AA0: \n"
217"               BL      sub_FF887680 \n"
218"               BL      sub_FF993A74 \n"
219"               B       loc_FF886B5C \n"
220
221"loc_FF886AAC: \n"
222"               BL      sub_FF992394 \n"
223"               B       loc_FF886B5C \n"
224
225"loc_FF886AB4: \n"
226"               MOV     R2, #2 \n"
227"               ADD     R1, R4, #0x68 \n"
228"               MOV     R0, #0x6F \n"
229"               BL      _GetPropertyCase \n"
230"               TST     R0, #1 \n"
231"               LDRNE   R1, =0x531 \n"
232"               LDRNE   R0, =0xFF8863B0 \n"     //=aSsshoottask_c
233"               BLNE    _DebugAssert \n"
234"               LDRH    R0, [R4,#0x68] \n"
235"               CMP     R0, #1 \n"
236"               BLEQ    sub_FF992388 \n"
237"               B       loc_FF886B5C \n"
238
239"loc_FF886AE4: \n"
240"               BL      sub_FF9924C0 \n"
241"               B       loc_FF886B5C \n"
242
243"loc_FF886AEC: \n"
244"               BL      sub_FF993B44 \n"
245"               B       loc_FF886B5C \n"
246
247"loc_FF886AF4: \n"
248"               BL      sub_FF837D44 \n"
249"               B       loc_FF886B5C \n"
250
251"loc_FF886AFC: \n"
252"               BL      sub_FF88A2D8 \n"
253"               B       loc_FF886B5C \n"
254
255"loc_FF886B04: \n"
256"               BL      sub_FF88A360 \n"
257"               B       loc_FF886B5C \n"
258
259"loc_FF886B0C: \n"
260"               BL      sub_FF88A3BC \n"
261"               BL      sub_FF88A37C \n"
262"               B       loc_FF886B5C \n"
263
264"loc_FF886B18: \n"
265"               MOV     R0, #1 \n"
266"               BL      sub_FF9935B0 \n"
267"               MOV     R0, #1 \n"
268"               BL      sub_FF9936E0 \n"
269"               LDRH    R0, [R4,#0xA4] \n"
270"               CMP     R0, #4 \n"
271"               LDRNEH  R0, [R4] \n"
272"               SUBNE   R12, R0, #0x4200 \n"
273"               SUBNES  R12, R12, #0x2A \n"
274"               BNE     loc_FF886B5C \n"
275"               BL      sub_FF88A360 \n"
276"               BL      sub_FF88A8D4 \n"
277"               BL      sub_FF88A7DC \n"
278"               B       loc_FF886B5C \n"
279
280"loc_FF886B50: \n"
281"               LDR     R1, =0x591 \n"
282"               LDR     R0, =0xFF8863B0 \n"                             // "SsShootTask.c"
283"               BL      _DebugAssert \n"
284
285"loc_FF886B5C: \n"
286"               LDR     R0, [SP] \n"
287"               LDR     R1, [R0,#4] \n"
288"               LDR     R0, [R7] \n"
289"               BL      sub_FF891798 \n"
290"               LDR     R5, [SP] \n"
291"               LDR     R0, [R5,#8] \n"
292"               CMP     R0, #0 \n"
293"               LDREQ   R1, =0x115 \n"
294"               LDREQ   R0, =0xFF8863B0 \n"                     // "SsShootTask.c"
295"               BLEQ    _DebugAssert \n"
296"               STR     R6, [R5,#8] \n"
297"               B       loc_FF8868D0 \n"
298        );
299}
300
301void __attribute__((naked,noinline)) sub_FF992BD8_my(){
302asm volatile(
303"                STMFD   SP!, {R3-R7,LR} \n"
304"                LDR     R5, =0x3BC24 \n"
305"                MOV     R4, R0 \n"
306"                LDR     R0, [R5,#0x24] \n"
307"                MOV     R6, #0 \n"
308"                CMP     R0, #0 \n"
309"                BNE     loc_FF992C14 \n"
310"                MOV     R0, #0xC \n"
311"                BL      sub_FF88C648 \n"
312"                TST     R0, #1 \n"
313"                MOVNE   R2, R4 \n"
314"                LDMNEFD SP!, {R3-R7,LR} \n"
315"                MOVNE   R1, #1 \n"
316"                MOVNE   R0, #1 \n"
317"                BNE     sub_FF884798 \n"
318
319"loc_FF992C14: \n"
320"                LDR     R0, [R4,#8] \n"
321"                LDR     R7, =0x420C \n"
322"                ORR     R0, R0, #1 \n"
323"                STR     R0, [R4,#8] \n"
324"                LDRH    R0, [R5] \n"
325"                CMP     R0, R7 \n"
326"                BEQ     loc_FF992CA4 \n"
327"                LDRH    R0, [R5,#0xA2] \n"
328"                CMP     R0, #3 \n"
329"                BEQ     loc_FF992CEC \n"
330"                LDR     R0, [R4,#0xC] \n"
331"                CMP     R0, #1 \n"
332"                BLS     loc_FF992CB0 \n"
333"                LDRH    R0, [R5,#0xA0] \n"
334"                CMP     R0, #0 \n"
335"                BNE     loc_FF992CEC \n"
336"                LDRH    R0, [R5,#0x9C] \n"
337"                CMP     R0, #2 \n"
338"                BNE     loc_FF992CBC \n"
339"                BL      sub_FF887740 \n"
340"                LDRH    R0, [R5] \n"
341"                CMP     R0, R7 \n"
342"                BEQ     loc_FF992CA4 \n"
343"                LDRH    R0, [R5,#0xA2] \n"
344"                CMP     R0, #3 \n"
345"                BEQ     loc_FF992CEC \n"
346"                LDR     R0, [R4,#0xC] \n"
347"                CMP     R0, #1 \n"
348"                BLS     loc_FF992CB0 \n"
349"                LDRH    R0, [R5,#0xA0] \n"
350"                CMP     R0, #0 \n"
351"                BNE     loc_FF992CEC \n"
352"                LDRH    R0, [R5,#0x9C] \n"
353"                CMP     R0, #2 \n"
354"                BEQ     loc_FF992CE8 \n"
355"                B       loc_FF992CBC \n"
356
357"loc_FF992CA4: \n"
358"                LDRH    R0, [R5,#0xA2] \n"
359"                CMP     R0, #3 \n"
360"                BEQ     loc_FF992CEC \n"
361
362"loc_FF992CB0: \n"
363"                LDRH    R0, [R5,#0xA0] \n"
364"                CMP     R0, #0 \n"
365"                BNE     loc_FF992CEC \n"
366
367"loc_FF992CBC: \n"
368"                LDRH    R0, [R5,#0x9C] \n"
369"                CMP     R0, #1 \n"
370"                BNE     loc_FF992CEC \n"
371"                LDRH    R0, [R5] \n"
372"                CMP     R0, R7 \n"
373"                LDRNE   R0, [R4,#0xC] \n"
374"                CMPNE   R0, #1 \n"
375"                BLS     loc_FF992CEC \n"
376"                LDR     R0, [R4,#0x10] \n"
377"                CMP     R0, #1 \n"
378"                BNE     loc_FF992CEC \n"
379
380"loc_FF992CE8: \n"
381"                BL      sub_FF993B7C \n"
382
383"loc_FF992CEC: \n"
384"                BL      sub_FF993B44 \n"
385"                BL      sub_FF887074 \n"
386"                LDR     R0, [R5,#0x24] \n"                     // before shot XXX
387"                CMP     R0, #0 \n"
388"                BNE     loc_FF992D84 \n"
389"                MOV     R0, R4 \n"
390"                BL      sub_FFAEC1EC \n"
391"                TST     R0, #1 \n"
392"                BNE     locret_FF992DA8 \n"
393"                MOV     R0, R4 \n"
394"                BL      sub_FFAEC600 \n"
395"                BL      sub_FF993384 \n"
396"                MOV     R6, #1 \n"
397"                MOV     R0, #2 \n"
398"                BL      sub_FF87FD8C \n"                       // after pre-flash, before shot XXX
399
400                 "BL      wait_until_remote_button_is_released\n"
401                 "BL      capt_seq_hook_set_nr\n"                     // +
402
403"                LDRH    R0, [R5] \n"
404"                SUB     R12, R0, #0x8200 \n"
405"                SUBS    R12, R12, #0x2D \n"
406"                BNE     loc_FF992D74 \n"
407"                MOV     R2, #2 \n"
408"                ADD     R0, R2, #0x15C \n"
409"                MOV     R1, SP \n"
410"                STR     R6, [SP] \n"
411"                BL      _GetPropertyCase \n"
412"                TST     R0, #1 \n"
413"                MOVNE   R1, #0xC3 \n"
414//"                ADRNE   R0, aSscaptureseq_c \n"
415"                LDRNE   R0, =0xFF992E88 \n"
416"                BLNE    _DebugAssert \n"
417"                LDRH    R0, [SP] \n"
418"                CMP     R0, #1 \n"
419"                STRHI   R6, [R4,#0xD4] \n"
420"                BHI     loc_FF992D94 \n"
421"                MOV     R0, #0 \n"
422"                STR     R0, [R4,#0xD4] \n"
423
424"loc_FF992D74: \n"
425"                MOV     R0, R4 \n"
426//"                BL      sub_FFAECAF8 \n"                     // main flash / shot XXX
427"                BL      sub_FFAECAF8_my \n"                    // main flash / shot XXX
428"                MOV     R6, R0 \n"
429"                B       loc_FF992D98 \n"
430
431"loc_FF992D84: \n"
432"                LDR     R0, =0x85AC \n"
433"                LDR     R0, [R0] \n"
434"                CMP     R0, #0 \n"
435"                BEQ     loc_FF992D98 \n"
436
437"loc_FF992D94: \n"
438"                MOV     R6, #0x1D \n"
439
440"loc_FF992D98: \n"
441"                MOV     R1, R6 \n"
442"                MOV     R0, R4 \n"
443"                LDMFD   SP!, {R3-R7,LR} \n"
444"                B       sub_FFAEC310 \n"
445
446"locret_FF992DA8: \n"
447"                LDMFD   SP!, {R3-R7,PC} \n"
448);
449}
450
451void __attribute__((naked,noinline)) sub_FFAECAF8_my(){
452 asm volatile(
453"                STMFD   SP!, {R2-R6,LR} \n"
454"                MOV     R5, R0 \n"
455"                BL      sub_FF9938A4 \n"
456//"                MOVL    R1, 0xFFFFFFFF \n"
457"                                MVN     R1, #0 \n"
458"                BL      sub_FF8917CC \n"
459"                LDR     R0, =0xFFAEC38C \n" //sub_FFAEC38C
460"                MOV     R1, R5 \n"
461"                BL      sub_FF8C6444 \n"
462"                MOV     R0, R5 \n"
463"                BL      sub_FFAEC298 \n"
464"                MOV     R0, R5 \n"
465"                BL      sub_FFAEC6E8 \n"
466"                MOV     R4, R0 \n"
467"                LDR     R1, =0xE164 \n"
468"                MOV     R0, #0x8A \n"
469"                MOV     R2, #4 \n"
470"                BL      _GetPropertyCase \n"
471"                TST     R0, #1 \n"
472"                LDRNE   R1, =0x1F6 \n"
473//"                ADRNE   R0, aSsstandardcapt ; "SsStandardCaptureSeq.c" \n"
474"                LDRNE   R0, =0xFFAECC80 \n"
475"                BLNE    _DebugAssert \n"
476"                BL      sub_FF889A00 \n"
477"                MOV     R0, R4 \n"
478"                CMP     R0, #1 \n"
479"                MOV     R4, #0 \n"
480"                BEQ     loc_FFAECB98 \n"
481"                CMP     R0, #2 \n"
482"                BEQ     loc_FFAECBA8 \n"
483"                CMP     R0, #3 \n"
484"                BEQ     loc_FFAECBCC \n"
485"                CMP     R0, #7 \n"
486"                BNE     loc_FFAECBE8 \n"
487"                MOV     R0, #0 \n"
488"                BL      sub_FF8C6474 \n"
489"                MOV     R0, #4 \n"
490"                STR     R0, [SP,#0x4] \n"
491
492"loc_FFAECB88: \n"
493"                ADD     R1, SP, #0x4 \n"
494"                MOV     R0, R5 \n"
495"                BL      sub_FFAEC95C \n"
496"                B       loc_FFAECBC4 \n"
497
498"loc_FFAECB98: \n"
499"                MOV     R0, #1 \n"
500"                BL      sub_FF8C6474 \n"
501"                STR     R4, [SP,#0x4] \n"
502"                B       loc_FFAECB88 \n"
503
504"loc_FFAECBA8: \n"
505"                MOV     R0, #1 \n"
506"                BL      sub_FF8C6474 \n"
507"                MOV     R0, #1 \n"
508"                STR     R0, [SP,#0x4] \n"
509"                MOV     R0, R5 \n"
510"                ADD     R1, SP, #0x4 \n"
511"                BL      sub_FFAECD54 \n"
512
513"loc_FFAECBC4: \n"
514
515"               BL      capt_seq_hook_raw_here\n"               // added (16/2/2011, moved here so that long exposures work)
516
517"                MOV     R6, R0 \n"
518"                B       loc_FFAECBF4 \n"
519
520"loc_FFAECBCC: \n"
521"                MOV     R0, #1 \n"
522"                BL      sub_FF8C6474 \n"
523"                ADD     R1, SP, #0x4 \n"
524"                MOV     R0, R5 \n"
525"                STR     R4, [SP,#0x4] \n"
526"                BL      sub_FFAEC9D8 \n"
527"                B       loc_FFAECBC4 \n"
528
529"loc_FFAECBE8: \n"
530"                MOV     R1, #0x22C \n"
531//"                ADR     R0, aSsstandardcapt ; "SsStandardCaptureSeq.c" \n"
532"                LDR   R0, =0xFFAECC80 \n"
533"                BL      _DebugAssert \n"
534
535"loc_FFAECBF4: \n"
536"                TST     R6, #1 \n"
537"                MOVNE   R0, R6 \n"
538"                BNE     locret_FFAECC60 \n"
539"                MOV     R1, #0 \n"
540//"                ADR     R0, nullsub_371 \n"
541"                                LDR     R0, =0xFFAEC8CC \n"
542"                BL      sub_FF8C6444 \n"
543"                LDR     R0, =0x3BC24 \n"
544"                LDRH    R0, [R0] \n"
545"                SUB     R12, R0, #0x4000 \n"
546"                SUBS    R12, R12, #0x20C \n"
547"                BLEQ    sub_FF8AF950 \n"
548"                MOV     R0, R5 \n"
549"                BL      sub_FFAEC790 \n"
550"                BL      sub_FF9938A4 \n"
551"                MOV     R3, #0x244 \n"
552"                STR     R3, [SP] \n"
553"                LDR     R2, =0x3A98 \n"
554//"                ADR     R3, aSsstandardcapt ; "SsStandardCaptureSeq.c" \n"
555"                LDR   R3, =0xFFAECC80 \n"
556"                MOV     R1, #4 \n"
557"                BL      sub_FF88C9C4 \n"
558"                CMP     R0, #0 \n"
559"                MOVNE   R1, #0x244 \n"
560//"                ADRNE   R0, aSsstandardcapt ; "SsStandardCaptureSeq.c" \n"
561"                LDRNE   R0, =0xFFAECC80 \n"
562"                BLNE    _DebugAssert \n"
563"                LDRH    R0, [SP,#0x4] \n"
564"                STRH    R0, [R5,#0x14] \n"
565"                MOV     R0, #0 \n"
566
567"locret_FFAECC60: \n"
568"                LDMFD   SP!, {R2-R6,PC} \n"
569         );
570}
571
572/*************************************************************/
573// @ FF8D0818
574void __attribute__((naked,noinline)) exp_drv_task(){
575
576 asm volatile(
577"                STMFD   SP!, {R4-R8,LR} \n"
578"                SUB     SP, SP, #0x20 \n"
579"                LDR     R8, =0xBB8 \n"
580"                LDR     R7, =0x5094 \n"
581"                LDR     R5, =0x57870 \n"
582"                MOV     R0, #0 \n"
583"                ADD     R6, SP, #0x10 \n"
584"                STR     R0, [SP,#0x0C] \n"
585
586"loc_FF8D0838: \n"
587"                LDR     R0, [R7,#0x20] \n"
588"                MOV     R2, #0 \n"
589"                ADD     R1, SP, #0x1C \n"
590"                BL      sub_FF83A4C8 \n"
591"                LDR     R0, [SP,#0x0C] \n"
592"                CMP     R0, #1 \n"
593"                BNE     loc_FF8D0884 \n"
594"                LDR     R0, [SP,#0x1C] \n"
595"                LDR     R0, [R0] \n"
596"                CMP     R0, #0x14 \n"
597"                CMPNE   R0, #0x15 \n"
598"                CMPNE   R0, #0x16 \n"
599"                CMPNE   R0, #0x17 \n"
600"                BEQ     loc_FF8D09E8 \n"
601"                CMP     R0, #0x29 \n"
602"                BEQ     loc_FF8D0970 \n"
603"                ADD     R1, SP, #0x0C \n"
604"                MOV     R0, #0 \n"
605"                BL      sub_FF8D07C8 \n"
606
607"loc_FF8D0884: \n"
608"                LDR     R0, [SP,#0x1C] \n"
609"                LDR     R1, [R0] \n"
610"                CMP     R1, #0x2F \n"
611"                BNE     loc_FF8D08B4 \n"
612"                LDR     R0, [SP,#0x1C] \n"
613"                BL      sub_FF8D1BBC \n"
614"                LDR     R0, [R7,#0x1C] \n"
615"                MOV     R1, #1 \n"
616"                BL      sub_FF891798 \n"
617"                BL      _ExitTask \n"
618"                ADD     SP, SP, #0x20 \n"
619"                LDMFD   SP!, {R4-R8,PC} \n"
620
621"loc_FF8D08B4: \n"
622"                CMP     R1, #0x2E \n"
623"                BNE     loc_FF8D08D0 \n"
624"                LDR     R2, [R0,#0x8C]! \n"
625"                LDR     R1, [R0,#4] \n"
626"                MOV     R0, R1 \n"
627"                BLX     R2 \n"
628"                B       loc_FF8D0EA4 \n"
629
630"loc_FF8D08D0: \n"
631"                CMP     R1, #0x27 \n"
632"                BNE     loc_FF8D0920 \n"
633"                LDR     R0, [R7,#0x1C] \n"
634"                MOV     R1, #0x80 \n"
635"                BL      sub_FF8917CC \n"
636"                LDR     R0, =0xFF8CC678 \n"
637"                MOV     R1, #0x80 \n"
638"                BL      sub_FF97F6E4 \n"
639"                LDR     R0, [R7,#0x1C] \n"
640"                MOV     R2, R8 \n"
641"                MOV     R1, #0x80 \n"
642"                BL      sub_FF8916D8 \n"
643"                TST     R0, #1 \n"
644"                LDRNE   R1, =0x1089 \n"
645"                BNE     loc_FF8D09DC \n"
646
647"loc_FF8D090C: \n"
648"                LDR     R1, [SP,#0x1C] \n"
649"                LDR     R0, [R1,#0x90] \n"
650"                LDR     R1, [R1,#0x8C] \n"
651"                BLX     R1 \n"
652"                B       loc_FF8D0EA4 \n"
653
654"loc_FF8D0920: \n"
655"                CMP     R1, #0x28 \n"
656"                BNE     loc_FF8D0968 \n"
657"                ADD     R1, SP, #0x0C \n"
658"                BL      sub_FF8D07C8 \n"
659"                LDR     R0, [R7,#0x1C] \n"
660"                MOV     R1, #0x100 \n"
661"                BL      sub_FF8917CC \n"
662"                LDR     R0, =0xFF8CC688 \n"
663"                MOV     R1, #0x100 \n"
664"                BL      sub_FF980114 \n"
665"                LDR     R0, [R7,#0x1C] \n"
666"                MOV     R2, R8 \n"
667"                MOV     R1, #0x100 \n"
668"                BL      sub_FF8916D8 \n"
669"                TST     R0, #1 \n"
670"                BEQ     loc_FF8D090C \n"
671"                LDR     R1, =0x1093 \n"
672"                B       loc_FF8D09DC \n"
673
674"loc_FF8D0968: \n"
675"                CMP     R1, #0x29 \n"
676"                BNE     loc_FF8D0980 \n"
677
678"loc_FF8D0970: \n"
679"                LDR     R0, [SP,#0x1C] \n"
680"                ADD     R1, SP, #0x0C \n"
681"                BL      sub_FF8D07C8 \n"
682"                B       loc_FF8D090C \n"
683
684"loc_FF8D0980: \n"
685"                CMP     R1, #0x2C \n"
686"                BNE     loc_FF8D0998 \n"
687"                BL      sub_FF8BEBCC \n"
688"                BL      sub_FF8BF7D8 \n"
689"                BL      sub_FF8BF344 \n"
690"                B       loc_FF8D090C \n"
691
692"loc_FF8D0998: \n"
693"                CMP     R1, #0x2D \n"
694"                BNE     loc_FF8D09E8 \n"
695"                LDR     R0, [R7,#0x1C] \n"
696"                MOV     R1, #4 \n"
697"                BL      sub_FF8917CC \n"
698"                LDR     R1, =0xFF8CC6A8 \n"
699"                LDR     R0, =0xFFFFF400 \n"
700"                MOV     R2, #4 \n"
701"                BL      sub_FF8BE648 \n"
702"                BL      sub_FF8BE8D0 \n"
703"                LDR     R0, [R7,#0x1C] \n"
704"                MOV     R2, R8 \n"
705"                MOV     R1, #4 \n"
706"                BL      sub_FF8915F4 \n"
707"                TST     R0, #1 \n"
708"                BEQ     loc_FF8D090C \n"
709"                LDR     R1, =0x10BB \n"
710
711"loc_FF8D09DC: \n"
712"                LDR     R0, =0xFF8CCD30 \n"
713"                BL      _DebugAssert \n"
714"                B       loc_FF8D090C \n"
715
716"loc_FF8D09E8: \n"
717"                LDR     R0, [SP,#0x1C] \n"
718"                MOV     R4, #1 \n"
719"                LDR     R1, [R0] \n"
720"                CMP     R1, #0x12 \n"
721"                CMPNE   R1, #0x13 \n"
722"                BNE     loc_FF8D0A58 \n"
723"                LDR     R1, [R0,#0x7C] \n"
724"                ADD     R1, R1, R1,LSL#1 \n"
725"                ADD     R1, R0, R1,LSL#2 \n"
726"                SUB     R1, R1, #8 \n"
727"                LDMIA   R1, {R2-R4} \n"
728"                STMIA   R6, {R2-R4} \n"
729"                BL      sub_FF8CEF50 \n"
730"                LDR     R0, [SP,#0x1C] \n"
731"                LDR     R1, [R0,#0x7C] \n"
732"                LDR     R3, [R0,#0x8C] \n"
733"                LDR     R2, [R0,#0x90] \n"
734"                ADD     R0, R0, #4 \n"
735"                BLX     R3 \n"
736"                LDR     R0, [SP,#0x1C] \n"
737"                BL      sub_FF8D1FC8 \n"
738"                LDR     R0, [SP,#0x1C] \n"
739"                LDR     R1, [R0,#0x7C] \n"
740"                LDR     R3, [R0,#0x94] \n"
741"                LDR     R2, [R0,#0x98] \n"
742"                ADD     R0, R0, #4 \n"
743"                BLX     R3 \n"
744"                B       loc_FF8D0DE0 \n"
745
746"loc_FF8D0A58: \n"
747"                CMP     R1, #0x14 \n"
748"                CMPNE   R1, #0x15 \n"
749"                CMPNE   R1, #0x16 \n"
750"                CMPNE   R1, #0x17 \n"
751"                BNE     loc_FF8D0B10 \n"
752"                ADD     R3, SP, #0x0C \n"
753"                MOV     R2, SP \n"
754"                ADD     R1, SP, #0x10 \n"
755"                BL      sub_FF8CF1BC \n"
756"                CMP     R0, #1 \n"
757"                MOV     R4, R0 \n"
758"                CMPNE   R4, #5 \n"
759"                BNE     loc_FF8D0AAC \n"
760"                LDR     R0, [SP,#0x1C] \n"
761"                MOV     R2, R4 \n"
762"                LDR     R1, [R0,#0x7C]! \n"
763"                LDR     R12, [R0,#0x10]! \n"
764"                LDR     R3, [R0,#4] \n"
765"                MOV     R0, SP \n"
766"                BLX     R12 \n"
767"                B       loc_FF8D0AE4 \n"
768
769"loc_FF8D0AAC: \n"
770"                LDR     R0, [SP,#0x1C] \n"
771"                CMP     R4, #2 \n"
772"                LDR     R3, [R0,#0x90] \n"
773"                CMPNE   R4, #6 \n"
774"                BNE     loc_FF8D0AF8 \n"
775"                LDR     R12, [R0,#0x8C] \n"
776"                MOV     R0, SP \n"
777"                MOV     R2, R4 \n"
778"                MOV     R1, #1 \n"
779"                BLX     R12 \n"
780"                LDR     R0, [SP,#0x1C] \n"
781"                MOV     R2, SP \n"
782"                ADD     R1, SP, #0x10 \n"
783"                BL      sub_FF8D0514 \n"
784
785"loc_FF8D0AE4: \n"
786"                LDR     R0, [SP,#0x1C] \n"
787"                LDR     R2, [SP,#0x0C] \n"
788"                MOV     R1, R4 \n"
789"                BL      sub_FF8D0768 \n"
790"                B       loc_FF8D0DE0 \n"
791
792"loc_FF8D0AF8: \n"
793"                LDR     R1, [R0,#0x7C] \n"
794"                LDR     R12, [R0,#0x8C] \n"
795"                ADD     R0, R0, #4 \n"
796"                MOV     R2, R4 \n"
797"                BLX     R12 \n"
798"                B       loc_FF8D0DE0 \n"
799
800"loc_FF8D0B10: \n"
801"                CMP     R1, #0x23 \n"
802"                CMPNE   R1, #0x24 \n"
803"                BNE     loc_FF8D0B5C \n"
804"                LDR     R1, [R0,#0x7C] \n"
805"                ADD     R1, R1, R1,LSL#1 \n"
806"                ADD     R1, R0, R1,LSL#2 \n"
807"                SUB     R1, R1, #8 \n"
808"                LDMIA   R1, {R2-R4} \n"
809"                STMIA   R6, {R2-R4} \n"
810"                BL      sub_FF8CDFD4 \n"
811"                LDR     R0, [SP,#0x1C] \n"
812"                LDR     R1, [R0,#0x7C] \n"
813"                LDR     R3, [R0,#0x8C] \n"
814"                LDR     R2, [R0,#0x90] \n"
815"                ADD     R0, R0, #4 \n"
816"                BLX     R3 \n"
817"                LDR     R0, [SP,#0x1C] \n"
818"                BL      sub_FF8CE420 \n"
819"                B       loc_FF8D0DE0 \n"
820
821"loc_FF8D0B5C: \n"
822"                ADD     R1, R0, #4 \n"
823"                LDMIA   R1, {R2,R3,R12} \n"
824"                STMIA   R6, {R2,R3,R12} \n"
825"                LDR     R1, [R0] \n"
826"                CMP     R1, #0x26 \n"
827"                ADDLS   PC, PC, R1,LSL#2 \n"
828"                B       loc_FF8D0DC0 \n"
829
830"loc_FF8D0B78: \n"
831"                B       loc_FF8D0C14 \n"
832
833"loc_FF8D0B7C: \n"
834"                B       loc_FF8D0C14 \n"
835
836"loc_FF8D0B80: \n"
837"                B       loc_FF8D0C1C \n"
838
839"loc_FF8D0B84: \n"
840"                B       loc_FF8D0C24 \n"
841
842"loc_FF8D0B88: \n"
843"                B       loc_FF8D0C24 \n"
844
845"loc_FF8D0B8C: \n"
846"                B       loc_FF8D0C24 \n"
847
848"loc_FF8D0B90: \n"
849"                B       loc_FF8D0C14 \n"
850
851"loc_FF8D0B94: \n"
852"                B       loc_FF8D0C1C \n"
853
854"loc_FF8D0B98: \n"
855"                B       loc_FF8D0C24 \n"
856
857"loc_FF8D0B9C: \n"
858"                B       loc_FF8D0C24 \n"
859
860"loc_FF8D0BA0: \n"
861"                B       loc_FF8D0C3C \n"
862
863"loc_FF8D0BA4: \n"
864"                B       loc_FF8D0C3C \n"
865
866"loc_FF8D0BA8: \n"
867"                B       loc_FF8D0DAC \n"
868
869"loc_FF8D0BAC: \n"
870"                B       loc_FF8D0DB4 \n"
871
872"loc_FF8D0BB0: \n"
873"                B       loc_FF8D0DB4 \n"
874
875"loc_FF8D0BB4: \n"
876"                B       loc_FF8D0DB4 \n"
877
878"loc_FF8D0BB8: \n"
879"                B       loc_FF8D0DB4 \n"
880
881"loc_FF8D0BBC: \n"
882"                B       loc_FF8D0DBC \n"
883
884"loc_FF8D0BC0: \n"
885"                B       loc_FF8D0DC0 \n"
886
887"loc_FF8D0BC4: \n"
888"                B       loc_FF8D0DC0 \n"
889
890"loc_FF8D0BC8: \n"
891"                B       loc_FF8D0DC0 \n"
892
893"loc_FF8D0BCC: \n"
894"                B       loc_FF8D0DC0 \n"
895
896"loc_FF8D0BD0: \n"
897"                B       loc_FF8D0DC0 \n"
898
899"loc_FF8D0BD4: \n"
900"                B       loc_FF8D0DC0 \n"
901
902"loc_FF8D0BD8: \n"
903"                B       loc_FF8D0C2C \n"
904
905"loc_FF8D0BDC: \n"
906"                B       loc_FF8D0C34 \n"
907
908"loc_FF8D0BE0: \n"
909"                B       loc_FF8D0C34 \n"
910
911"loc_FF8D0BE4: \n"
912"                B       loc_FF8D0C48 \n"
913
914"loc_FF8D0BE8: \n"
915"                B       loc_FF8D0C48 \n"
916
917"loc_FF8D0BEC: \n"
918"                B       loc_FF8D0C50 \n"
919
920"loc_FF8D0BF0: \n"
921"                B       loc_FF8D0C88 \n"
922
923"loc_FF8D0BF4: \n"
924"                B       loc_FF8D0CC0 \n"
925
926"loc_FF8D0BF8: \n"
927"                B       loc_FF8D0D5C \n"
928
929"loc_FF8D0BFC: \n"
930"                B       loc_FF8D0D94 \n"
931
932"loc_FF8D0C00: \n"
933"                B       loc_FF8D0D94 \n"
934
935"loc_FF8D0C04: \n"
936"                B       loc_FF8D0DC0 \n"
937
938"loc_FF8D0C08: \n"
939"                B       loc_FF8D0DC0 \n"
940
941"loc_FF8D0C0C: \n"
942"                B       loc_FF8D0D9C \n"
943
944"loc_FF8D0C10: \n"
945"                B       loc_FF8D0DA4 \n"
946
947"loc_FF8D0C14: \n"
948//"; jumptable FF8D0B70 entries 0,1,6      ; LOCATION: ExpDrv.c:928
949"                BL      sub_FF8CCBB8 \n"
950"                B       loc_FF8D0DC0 \n"
951
952"loc_FF8D0C1C: \n"
953//"; jumptable FF8D0B70 entries 2,7        ; LOCATION: ExpDrv.c:0
954"                BL      sub_FF8CCE54 \n"
955"                B       loc_FF8D0DC0 \n"
956
957"loc_FF8D0C24: \n"
958//"; jumptable FF8D0B70 entries 3-5,8,9    ; LOCATION: ExpDrv.c:0
959"                BL      sub_FF8CD07C \n"
960"                B       loc_FF8D0DC0 \n"
961
962"loc_FF8D0C2C: \n"
963//"; jumptable FF8D0B70 entry 24           ; LOCATION: ExpDrv.c:2
964"                BL      sub_FF8CD354 \n"
965"                B       loc_FF8D0DC0 \n"
966
967"loc_FF8D0C34: \n"
968//"; jumptable FF8D0B70 entries 25,26      ; LOCATION: ExpDrv.c:0
969"                BL      sub_FF8CD56C \n"
970"                B       loc_FF8D0DC0 \n"
971
972"loc_FF8D0C3C: \n"
973//"; jumptable FF8D0B70 entries 10,11      ; LOCATION: ExpDrv.c:2
974//"                BL      sub_FF8CD890 \n"
975"                BL      sub_FF8CD890_my \n"  // patched
976"                MOV     R4, #0 \n"
977"                B       loc_FF8D0DC0 \n"
978
979"loc_FF8D0C48: \n"
980//"; jumptable FF8D0B70 entries 27,28      ; LOCATION: ExpDrv.c:0
981"                BL      sub_FF8CD9D8 \n"
982"                B       loc_FF8D0DC0 \n"
983
984"loc_FF8D0C50: \n"
985//"; jumptable FF8D0B70 entry 29
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, [R0,#0xC] \n"
995"                STRH    R1, [SP,#0x18] \n"
996"                LDRH    R1, [R5,#0xA] \n"
997"                STRH    R1, [SP,#0x1A] \n"
998"                BL      sub_FF8D1CC0 \n"
999"                B       loc_FF8D0DC0 \n"
1000
1001"loc_FF8D0C88: \n"
1002//"; jumptable FF8D0B70 entry 30
1003"                LDRH    R1, [R0,#4] \n"
1004"                STRH    R1, [SP,#0x10] \n"
1005"                LDRH    R1, [R5,#2] \n"
1006"                STRH    R1, [SP,#0x12] \n"
1007"                LDRH    R1, [R5,#4] \n"
1008"                STRH    R1, [SP,#0x14] \n"
1009"                LDRH    R1, [R5,#6] \n"
1010"                STRH    R1, [SP,#0x16] \n"
1011"                LDRH    R1, [R5,#8] \n"
1012"                STRH    R1, [SP,#0x18] \n"
1013"                LDRH    R1, [R5,#0xA] \n"
1014"                STRH    R1, [SP,#0x1A] \n"
1015"                BL      sub_FF8D1DC8 \n"
1016"                B       loc_FF8D0DC0 \n"
1017
1018"loc_FF8D0CC0: \n"
1019//"; jumptable FF8D0B70 entry 31
1020"                LDRH    R1, [R5] \n"
1021"                STRH    R1, [SP,#0x10] \n"
1022"                LDRH    R1, [R0,#6] \n"
1023"                STRH    R1, [SP,#0x12] \n"
1024"                LDRH    R1, [R5,#4] \n"
1025"                STRH    R1, [SP,#0x14] \n"
1026"                LDRH    R1, [R5,#6] \n"
1027"                STRH    R1, [SP,#0x16] \n"
1028"                LDRH    R1, [R5,#8] \n"
1029"                STRH    R1, [SP,#0x18] \n"
1030"                LDRH    R1, [R5,#0xA] \n"
1031"                STRH    R1, [SP,#0x1A] \n"
1032"                BL      sub_FF8D1E7C \n"
1033"                B       loc_FF8D0DC0 \n"
1034
1035"loc_FF8D0D5C: \n"
1036//"; jumptable FF8D0B70 entry 32
1037"                LDRH    R1, [R5] \n"
1038"                STRH    R1, [SP,#0x10] \n"
1039"                LDRH    R1, [R5,#2] \n"
1040"                STRH    R1, [SP,#0x12] \n"
1041"                LDRH    R1, [R5,#4] \n"
1042"                STRH    R1, [SP,#0x14] \n"
1043"                LDRH    R1, [R5,#6] \n"
1044"                STRH    R1, [SP,#0x16] \n"
1045"                LDRH    R1, [R0,#0xC] \n"
1046"                STRH    R1, [SP,#0x18] \n"
1047"                LDRH    R1, [R5,#0xA] \n"
1048"                STRH    R1, [SP,#0x1A] \n"
1049"                BL      sub_FF8D1F24 \n"
1050"                B       loc_FF8D0DC0 \n"
1051
1052"loc_FF8D0D94: \n"
1053//"; jumptable FF8D0B70 entries 33,34      ; LOCATION: ExpDrv.c:6
1054"                BL      sub_FF8CDDAC \n"
1055"                B       loc_FF8D0DC0 \n"
1056
1057"loc_FF8D0D9C: \n"
1058//"; jumptable FF8D0B70 entry 37           ; LOCATION: ExpDrv.c:10
1059"                BL      sub_FF8CE524 \n"
1060"                B       loc_FF8D0DC0 \n"
1061
1062"loc_FF8D0DA4: \n"
1063//"; jumptable FF8D0B70 entry 38           ; LOCATION: ExpDrv.c:6
1064"                BL      sub_FF8CE7C0 \n"
1065"                B       loc_FF8D0DC0 \n"
1066
1067"loc_FF8D0DAC: \n"
1068//"; jumptable FF8D0B70 entry 12           ; LOCATION: ExpDrv.c:2
1069"                BL      sub_FF8CE9A0 \n"
1070"                B       loc_FF8D0DC0 \n"
1071
1072"loc_FF8D0DB4: \n"
1073//"; jumptable FF8D0B70 entries 13-16      ; LOCATION: ExpDrv.c:128
1074"                BL      sub_FF8CEB5C \n"
1075"                B       loc_FF8D0DC0 \n"
1076
1077"loc_FF8D0DBC: \n"
1078//"; jumptable FF8D0B70 entry 17           ; LOCATION: ExpDrv.c:2
1079"                BL      sub_FF8CED48 \n"
1080
1081"loc_FF8D0DC0: \n"
1082//"; jumptable FF8D0B70 default entry
1083//"; jumptable FF8D0B70 entries 18-23,35,36
1084"                LDR     R0, [SP,#0x1C] \n"
1085"                LDR     R1, [R0,#0x7C] \n"
1086"                LDR     R3, [R0,#0x8C] \n"
1087"                LDR     R2, [R0,#0x90] \n"
1088"                ADD     R0, R0, #4 \n"
1089"                BLX     R3 \n"
1090"                CMP     R4, #1 \n"
1091"                BNE     loc_FF8D0E28 \n"
1092
1093"loc_FF8D0DE0: \n"
1094"                LDR     R0, [SP,#0x1C] \n"
1095"                MOV     R2, #0xC \n"
1096"                LDR     R1, [R0,#0x7C] \n"
1097"                ADD     R1, R1, R1,LSL#1 \n"
1098"                ADD     R0, R0, R1,LSL#2 \n"
1099"                SUB     R4, R0, #8 \n"
1100"                LDR     R0, =0x57870 \n"
1101"                ADD     R1, SP, #0x10 \n"
1102"                BL      sub_FFB92348 \n"
1103"                LDR     R0, =0x5787C \n"
1104"                MOV     R2, #0xC \n"
1105"                ADD     R1, SP, #0x10 \n"
1106"                BL      sub_FFB92348 \n"
1107"                LDR     R0, =0x57888 \n"
1108"                MOV     R2, #0xC \n"
1109"                MOV     R1, R4 \n"
1110"                BL      sub_FFB92348 \n"
1111"                B       loc_FF8D0EA4 \n"
1112
1113"loc_FF8D0E28: \n"
1114"                LDR     R0, [SP,#0x1C] \n"
1115"                MOV     R3, #1 \n"
1116"                LDR     R0, [R0] \n"
1117"                CMP     R0, #0xB \n"
1118"                BNE     loc_FF8D0E70 \n"
1119"                MOV     R2, #0 \n"
1120"                STRD    R2, [SP] \n"
1121"                MOV     R2, #1 \n"
1122"                MOV     R1, #1 \n"
1123"                MOV     R0, #0 \n"
1124"                BL      sub_FF8CC998 \n"
1125"                MOV     R3, #1 \n"
1126"                MOV     R2, #0 \n"
1127"                STRD    R2, [SP] \n"
1128"                MOV     R2, #1 \n"
1129"                MOV     R1, #1 \n"
1130"                MOV     R0, #0 \n"
1131"                B       loc_FF8D0EA0 \n"
1132
1133"loc_FF8D0E70: \n"
1134"                MOV     R2, #1 \n"
1135"                STRD    R2, [SP] \n"
1136"                MOV     R3, #1 \n"
1137"                MOV     R1, #1 \n"
1138"                MOV     R0, #1 \n"
1139"                BL      sub_FF8CC998 \n"
1140"                MOV     R3, #1 \n"
1141"                MOV     R2, #1 \n"
1142"                MOV     R1, #1 \n"
1143"                MOV     R0, #1 \n"
1144"                STR     R3, [SP] \n"
1145"                STR     R3, [SP,#0x04] \n"
1146
1147"loc_FF8D0EA0: \n"
1148"                BL      sub_FF8CCB00 \n"
1149
1150"loc_FF8D0EA4: \n"
1151"                LDR     R0, [SP,#0x1C] \n"
1152"                BL      sub_FF8D1BBC \n"
1153"                B       loc_FF8D0838 \n"
1154 );
1155}
1156
1157void __attribute__((naked,noinline)) sub_FF8CD890_my() {
1158        asm volatile (
1159"                STMFD   SP!, {R4-R8,LR} \n"
1160"                LDR     R7, =0x5094 \n"
1161"                MOV     R4, R0 \n"
1162"                LDR     R0, [R7,#0x1C] \n"
1163"                MOV     R1, #0x3E \n"
1164"                BL      sub_FF8917CC \n"
1165"                LDRSH   R0, [R4,#4] \n"
1166"                MOV     R2, #0 \n"
1167"                MOV     R1, #0 \n"
1168"                BL      sub_FF8CC6FC \n"
1169"                MOV     R5, R0 \n"
1170"                LDRSH   R0, [R4,#6] \n"
1171"                BL      sub_FF8CC80C \n"
1172"                LDRSH   R0, [R4,#8] \n"
1173"                BL      sub_FF8CC864 \n"
1174"                LDRSH   R0, [R4,#0xA] \n"
1175"                BL      sub_FF8CC8BC \n"
1176"                LDRSH   R0, [R4,#0xC] \n"
1177"                MOV     R1, #0 \n"
1178"                BL      sub_FF8CC914 \n"
1179"                MOV     R6, R0 \n"
1180"                LDRSH   R0, [R4,#0xE] \n"
1181"                BL      sub_FF8D1C60 \n"
1182"                LDR     R0, [R4] \n"
1183"                LDR     R8, =0x57888 \n"
1184"                CMP     R0, #0xB \n"
1185"                MOVEQ   R5, #0 \n"
1186"                MOVEQ   R6, #0 \n"
1187"                BEQ     loc_FF8CD92C \n"
1188"                CMP     R5, #1 \n"
1189"                BNE     loc_FF8CD92C \n"
1190"                LDRSH   R0, [R4,#4] \n"
1191"                LDR     R1, =0xFF8CC668 \n"
1192"                MOV     R2, #2 \n"
1193"                BL      sub_FF97FA30 \n"
1194"                STRH    R0, [R4,#4] \n"
1195"                MOV     R0, #0 \n"
1196"                STR     R0, [R7,#0x28] \n"
1197"                B       loc_FF8CD934 \n"
1198
1199"loc_FF8CD92C: \n"
1200"                LDRH    R0, [R8] \n"
1201"                STRH    R0, [R4,#4] \n"
1202
1203"loc_FF8CD934: \n"
1204"                CMP     R6, #1 \n"
1205"                LDRNEH  R0, [R8,#8] \n"
1206"                BNE     loc_FF8CD950 \n"
1207"                LDRSH   R0, [R4,#0xC] \n"
1208"                LDR     R1, =0xFF8CC6EC \n"
1209"                MOV     R2, #0x20 \n"
1210"                BL      sub_FF8D1C7C \n"
1211
1212"loc_FF8CD950: \n"
1213"                STRH    R0, [R4,#0xC] \n"
1214"                LDRSH   R0, [R4,#6] \n"
1215//"                BL      sub_FF8BE93C \n"
1216"                BL      sub_FF8BE93C_my \n" // patched
1217"                               B       sub_FF8CD95C \n"                // continue in firmware
1218        );
1219}
1220
1221void __attribute__((naked,noinline)) sub_FF8BE93C_my() {
1222        asm volatile (
1223"                STMFD   SP!, {R4-R6,LR} \n"
1224"                LDR     R5, =0x4D70 \n"
1225"                MOV     R4, R0 \n"
1226"                LDR     R0, [R5,#4] \n"
1227"                CMP     R0, #1 \n"
1228"                LDRNE   R1, =0x146 \n"
1229"                LDRNE   R0, =0xFF8BE740 \n"
1230"                BLNE    _DebugAssert \n"
1231"                CMN     R4, #0xC00 \n"
1232"                LDREQSH R4, [R5,#2] \n"
1233"                CMN     R4, #0xC00 \n"
1234"                MOVEQ   R1, #0x14C \n"
1235"                LDRNE   R0, =0xFF8BE740 \n"
1236"                STRH    R4, [R5,#2] \n"
1237"                BLEQ    _DebugAssert \n"
1238"                MOV     R0, R4 \n"
1239"                BL      apex2us \n"    // patched
1240"                               B       sub_FF8BE980 \n"        // continue in firmware
1241);
1242}
Note: See TracBrowser for help on using the repository browser.