source: trunk/platform/sx30/sub/100l/capt_seq.c @ 1188

Revision 1188, 37.5 KB checked in by reyalp, 2 years ago (diff)

stubs cleanup for g12 and sx30 from philmoz in http://chdk.setepontos.com/index.php?topic=650.msg66662#msg66662

  • 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_FF99555C__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// @ FF8868C4
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_FF8868D4:\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_FF886900\n"
32        "LDR    R1, =0x43F\n"
33        "LDR    R0, =0xFF8863B4\n"
34        "BL             _DebugAssert\n"
35        "BL             _ExitTask\n"
36        "LDMFD SP!, {R3-R7,PC}\n"
37
38"loc_FF886900:\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_FF886B54\n"
45"loc_FF886914: B  loc_FF8869A0\n"
46"loc_FF886918: B  loc_FF8869B8\n"
47"loc_FF88691C: B  loc_FF8869D0\n"
48"loc_FF886920: B  loc_FF8869F0\n"
49"loc_FF886924: B  loc_FF8869E8\n"
50"loc_FF886928: B  loc_FF8869FC\n"
51"loc_FF88692C: B  loc_FF886A04\n"
52"loc_FF886930: B  loc_FF886A0C\n"
53"loc_FF886934: B  loc_FF886A18\n"
54"loc_FF886938: B  loc_FF886A40\n"
55"loc_FF88693C: B  loc_FF886A24\n"
56"loc_FF886940: B  loc_FF886A30\n"
57"loc_FF886944: B  loc_FF886A38\n"
58"loc_FF886948: B  loc_FF886A48\n"
59"loc_FF88694C: B  loc_FF886A50\n"
60"loc_FF886950: B  loc_FF886A58\n"
61"loc_FF886954: B  loc_FF886A60\n"
62"loc_FF886958: B  loc_FF886A68\n"
63"loc_FF88695C: B  loc_FF886A70\n"
64"loc_FF886960: B  loc_FF886A78\n"
65"loc_FF886964: B  loc_FF886A80\n"
66"loc_FF886968: B  loc_FF886A88\n"
67"loc_FF88696C: B  loc_FF886A90\n"
68"loc_FF886970: B  loc_FF886A9C\n"
69"loc_FF886974: B  loc_FF886AA4\n"
70"loc_FF886978: B  loc_FF886AB0\n"
71"loc_FF88697C: B  loc_FF886AB8\n"
72"loc_FF886980: B  loc_FF886AE8\n"
73"loc_FF886984: B  loc_FF886AF0\n"
74"loc_FF886988: B  loc_FF886AF8\n"
75"loc_FF88698C: B  loc_FF886B00\n"
76"loc_FF886990: B  loc_FF886B08\n"
77"loc_FF886994: B  loc_FF886B10\n"
78"loc_FF886998: B  loc_FF886B1C\n"
79"loc_FF88699C: B  loc_FF886B60\n"
80
81// jump table entry 0
82"loc_FF8869A0:\n"
83"               BL      sub_FF887088 \n"
84
85"               BL      shooting_expo_param_override\n"                 // added
86
87"               BL      sub_FF8840C0 \n"
88
89"               MOV     R0, #0\n"                                                       // added
90"               STR     R0, [R4,#0x24]\n"                                       // added, fixes overrides  behavior at short shutter press (from S95)
91
92//"             LDR     R0, [R4,#0x24] \n"                                              // above two lines make this code redundant
93//"             CMP     R0, #0 \n"                                                              // above two lines make this code redundant
94
95//"             BLNE    sub_FF992F54 \n"                                        // above two lines make this code redundant
96//"             BLNE    sub_FF992F54_my \n"                                     // patched (above two lines make this patch redundant)
97
98"               B       loc_FF886B60 \n"
99
100// jump table entry 1
101"loc_FF8869B8: \n"
102"               LDRH    R1, [R4] \n"
103"               SUB     R12, R1, #0x8200 \n"
104"               SUBS    R12, R12, #0x2E \n"
105"               LDRNE   R0, [R0,#0xC] \n"
106
107//"             BLNE    sub_FF992D80 \n"
108"               BLNE    sub_FF992D80_my \n"
109
110"               B       loc_FF886B60 \n"
111
112// jump table entry 2
113"loc_FF8869D0: \n"
114"               MOV     R0, #1 \n"
115"               BL      sub_FF8873A0 \n"
116"               LDR     R0, [R4,#0xC]\n"
117"               CMP     R0, #0\n"
118"               BLNE    sub_FF888028 \n"
119"               B       loc_FF886B60 \n"
120
121"loc_FF8869E8: \n"
122"               BL      sub_FF886D24 \n"
123"               B       loc_FF8869F4 \n"
124
125"loc_FF8869F0: \n"
126"               BL      sub_FF887068 \n"
127"loc_FF8869F4: \n"
128"               STR     R6, [R4,#0x24] \n"
129"               B       loc_FF886B60 \n"
130
131"loc_FF8869FC: \n"
132"               BL      sub_FF887070 \n"
133"               B       loc_FF886B60 \n"
134
135"loc_FF886A04: \n"
136"               BL      sub_FF887274 \n"
137"               B       loc_FF886A1C \n"
138
139"loc_FF886A0C: \n"
140"               LDR     R0, [R0,#0xC] \n"
141"               BL      sub_FF992FBC \n"
142"               B       loc_FF886B60 \n"
143
144"loc_FF886A18: \n"
145"               BL      sub_FF887310 \n"
146"loc_FF886A1C: \n"
147"               BL      sub_FF8840C0 \n"
148"               B       loc_FF886B60 \n"
149
150"loc_FF886A24: \n"
151"               LDR     R0, [R4,#0x54] \n"
152"               BL      sub_FF887A60 \n"
153"               B       loc_FF886B60 \n"
154
155"loc_FF886A30: \n"
156"               BL      sub_FF887DE0 \n"
157"               B       loc_FF886B60 \n"
158
159"loc_FF886A38: \n"
160"               BL      sub_FF887E44 \n"
161"               B       loc_FF886B60 \n"
162
163"loc_FF886A40: \n"
164"               BL      sub_FF887068 \n"
165"               B       loc_FF886B60 \n"
166
167"loc_FF886A48: \n"
168"               BL      sub_FF991D5C \n"
169"               B       loc_FF886B60 \n"
170
171"loc_FF886A50: \n"
172"               BL      sub_FF991FAC \n"
173"               B       loc_FF886B60 \n"
174
175"loc_FF886A58: \n"
176"               BL      sub_FF992078 \n"
177"               B       loc_FF886B60 \n"
178
179"loc_FF886A60: \n"
180"               BL      sub_FF99218C \n"
181"               B       loc_FF886B60 \n"
182
183"loc_FF886A68: \n"
184"               BL      sub_FF99225C \n"
185"               B       loc_FF886B60 \n"
186
187"loc_FF886A70: \n"
188"               MOV     R0, #0 \n"
189"               B       loc_FF886A94 \n"
190
191"loc_FF886A78: \n"
192"               BL      sub_FF992870 \n"
193"               B       loc_FF886B60 \n"
194
195"loc_FF886A80: \n"
196"               BL      sub_FF992908 \n"
197"               B       loc_FF886B60 \n"
198
199"loc_FF886A88: \n"
200"               BL      sub_FF9929E8 \n"
201"               B       loc_FF886B60 \n"
202
203"loc_FF886A90: \n"
204"               MOV     R0, #1 \n"
205"loc_FF886A94: \n"
206"               BL      sub_FF992714 \n"
207"               B       loc_FF886B60 \n"
208
209"loc_FF886A9C: \n"
210"               BL      sub_FF8875DC \n"
211"               B       loc_FF886B60 \n"
212
213"loc_FF886AA4: \n"
214"               BL      sub_FF887684 \n"
215"               BL      sub_FF993C1C \n"
216"               B       loc_FF886B60 \n"
217
218"loc_FF886AB0: \n"
219"               BL      sub_FF99253C \n"
220"               B       loc_FF886B60 \n"
221
222"loc_FF886AB8: \n"
223"               MOV     R2, #2 \n"
224"               ADD     R1, R4, #0x68 \n"
225"               MOV     R0, #0x6F \n"
226"               BL      sub_FF8999CC \n"
227"               TST     R0, #1 \n"
228"               LDRNE   R1, =0x531 \n"
229"               LDRNE   R0, =0xFF8863B4 \n"
230"               BLNE    _DebugAssert \n"
231"               LDRH    R0, [R4,#0x68] \n"
232"               CMP     R0, #1 \n"
233"               BLEQ    sub_FF992530 \n"
234"               B       loc_FF886B60 \n"
235
236"loc_FF886AE8: \n"
237"               BL      sub_FF992668 \n"
238"               B       loc_FF886B60 \n"
239
240"loc_FF886AF0: \n"
241"               BL      sub_FF993CEC \n"
242"               B       loc_FF886B60 \n"
243
244"loc_FF886AF8: \n"
245"               BL      sub_FF837D44 \n"
246"               B       loc_FF886B60 \n"
247
248"loc_FF886B00: \n"
249"               BL      sub_FF88A2DC \n"
250"               B       loc_FF886B60 \n"
251
252"loc_FF886B08: \n"
253"               BL      sub_FF88A364 \n"
254"               B       loc_FF886B60 \n"
255
256"loc_FF886B10: \n"
257"               BL      sub_FF88A3C0 \n"
258"               BL      sub_FF88A380 \n"
259"               B       loc_FF886B60 \n"
260
261"loc_FF886B1C: \n"
262"               MOV     R0, #1 \n"
263"               BL      sub_FF993758 \n"
264"               MOV     R0, #1 \n"
265"               BL      sub_FF993888 \n"
266"               LDRH    R0, [R4,#0xA4] \n"
267"               CMP     R0, #4 \n"
268"               LDRNEH  R0, [R4] \n"
269"               SUBNE   R12, R0, #0x4200 \n"
270"               SUBNES  R12, R12, #0x2A \n"
271"               BNE     loc_FF886B60 \n"
272"               BL      sub_FF88A364 \n"
273"               BL      sub_FF88A8D8 \n"
274"               BL      sub_FF88A7E0 \n"
275"               B       loc_FF886B60 \n"
276
277"loc_FF886B54: \n"
278"               LDR     R1, =0x591 \n"
279"               LDR     R0, =0xFF8863B4 \n"
280"               BL      _DebugAssert \n"                                // DebugAssert
281
282"loc_FF886B60: \n"
283"               LDR     R0, [SP] \n"
284"               LDR     R1, [R0,#4] \n"
285"               LDR     R0, [R7] \n"
286"               BL      sub_FF89179C \n"
287"               LDR     R5, [SP] \n"
288"               LDR     R0, [R5,#8] \n"
289"               CMP     R0, #0 \n"
290"               LDREQ   R1, =0x115 \n"
291"               LDREQ   R0, =0xFF8863B4 \n"
292"               BLEQ    _DebugAssert \n"                        // DebugAssert
293"               STR     R6, [R5,#8] \n"
294"               B       loc_FF8868D4 \n"
295        );
296}
297
298void __attribute__((naked,noinline)) sub_FF992D80_my(){
299asm volatile(
300"                STMFD   SP!, {R3-R7,LR} \n"
301"                LDR     R5, =0x3BC24 \n"
302"                MOV     R4, R0 \n"
303"                LDR     R0, [R5,#0x24] \n"
304"                MOV     R6, #0 \n"
305"                CMP     R0, #0 \n"
306"                BNE     loc_FF992DBC \n"
307"                MOV     R0, #0xC \n"
308"                BL      sub_FF88C64C \n"
309"                TST     R0, #1 \n"
310"                MOVNE   R2, R4 \n"
311"                LDMNEFD SP!, {R3-R7,LR} \n"
312"                MOVNE   R1, #1 \n"
313"                MOVNE   R0, #1 \n"
314"                BNE     sub_FF88479C \n"
315
316"loc_FF992DBC: \n"
317"                LDR     R0, [R4,#8] \n"
318"                LDR     R7, =0x420C \n"
319"                ORR     R0, R0, #1 \n"
320"                STR     R0, [R4,#8] \n"
321"                LDRH    R0, [R5] \n"
322"                CMP     R0, R7 \n"
323"                BEQ     loc_FF992E4C \n"
324"                LDRH    R0, [R5,#0xA2] \n"
325"                CMP     R0, #3 \n"
326"                BEQ     loc_FF992E94 \n"
327"                LDR     R0, [R4,#0xC] \n"
328"                CMP     R0, #1 \n"
329"                BLS     loc_FF992E58 \n"
330"                LDRH    R0, [R5,#0xA0] \n"
331"                CMP     R0, #0 \n"
332"                BNE     loc_FF992E94 \n"
333"                LDRH    R0, [R5,#0x9C] \n"
334"                CMP     R0, #2 \n"
335"                BNE     loc_FF992E64 \n"
336"                BL      sub_FF887744 \n"
337"                LDRH    R0, [R5] \n"
338"                CMP     R0, R7 \n"
339"                BEQ     loc_FF992E4C \n"
340"                LDRH    R0, [R5,#0xA2] \n"
341"                CMP     R0, #3 \n"
342"                BEQ     loc_FF992E94 \n"
343"                LDR     R0, [R4,#0xC] \n"
344"                CMP     R0, #1 \n"
345"                BLS     loc_FF992E58 \n"
346"                LDRH    R0, [R5,#0xA0] \n"
347"                CMP     R0, #0 \n"
348"                BNE     loc_FF992E94 \n"
349"                LDRH    R0, [R5,#0x9C] \n"
350"                CMP     R0, #2 \n"
351"                BEQ     loc_FF992E90 \n"
352"                B       loc_FF992E64 \n"
353
354"loc_FF992E4C: \n"
355"                LDRH    R0, [R5,#0xA2] \n"
356"                CMP     R0, #3 \n"
357"                BEQ     loc_FF992E94 \n"
358
359"loc_FF992E58: \n"
360"                LDRH    R0, [R5,#0xA0] \n"
361"                CMP     R0, #0 \n"
362"                BNE     loc_FF992E94 \n"
363
364"loc_FF992E64: \n"
365"                LDRH    R0, [R5,#0x9C] \n"
366"                CMP     R0, #1 \n"
367"                BNE     loc_FF992E94 \n"
368"                LDRH    R0, [R5] \n"
369"                CMP     R0, R7 \n"
370"                LDRNE   R0, [R4,#0xC] \n"
371"                CMPNE   R0, #1 \n"
372"                BLS     loc_FF992E94 \n"
373"                LDR     R0, [R4,#0x10] \n"
374"                CMP     R0, #1 \n"
375"                BNE     loc_FF992E94 \n"
376
377"loc_FF992E90: \n"
378"                BL      sub_FF993D24 \n"
379
380"loc_FF992E94: \n"
381"                BL      sub_FF993CEC \n"
382"                BL      sub_FF887078 \n"
383"                LDR     R0, [R5,#0x24] \n"                     // before shot XXX
384"                CMP     R0, #0 \n"
385"                BNE     loc_FF992F2C \n"
386"                MOV     R0, R4 \n"
387"                BL      sub_FFAEC394 \n"
388"                TST     R0, #1 \n"
389"                BNE     locret_FF992F50 \n"
390"                MOV     R0, R4 \n"
391"                BL      sub_FFAEC7A8 \n"
392"                BL      sub_FF99352C \n"
393"                MOV     R6, #1 \n"
394"                MOV     R0, #2 \n"
395"                BL      sub_FF87FD8C \n"                       // after pre-flash, before shot XXX
396
397                 "BL      wait_until_remote_button_is_released\n"
398                 "BL      capt_seq_hook_set_nr\n"                     // +
399
400"                LDRH    R0, [R5] \n"
401"                SUB     R12, R0, #0x8200 \n"
402"                SUBS    R12, R12, #0x2D \n"
403"                BNE     loc_FF992F1C \n"
404"                MOV     R2, #2 \n"
405"                ADD     R0, R2, #0x15C \n"
406"                MOV     R1, SP \n"
407"                STR     R6, [SP] \n"
408"                BL      _PT_GetPropertyCaseString \n"
409"                TST     R0, #1 \n"
410"                MOVNE   R1, #0xC3 \n"
411//"                ADRNE   R0, aSscaptureseq_c \n"
412"                LDRNE   R0, =0xFF993030 \n"
413"                BLNE    _DebugAssert \n"
414"                LDRH    R0, [SP] \n"
415"                CMP     R0, #1 \n"
416"                STRHI   R6, [R4,#0xD4] \n"
417"                BHI     loc_FF992F3C \n"
418"                MOV     R0, #0 \n"
419"                STR     R0, [R4,#0xD4] \n"
420
421"loc_FF992F1C: \n"
422"                MOV     R0, R4 \n"
423//"                BL      sub_FFAECCA0 \n"
424"                BL      sub_FFAECCA0_my \n"
425"                MOV     R6, R0 \n"
426"                B       loc_FF992F40 \n"
427
428"loc_FF992F2C: \n"
429"                LDR     R0, =0x85AC \n"
430"                LDR     R0, [R0] \n"
431"                CMP     R0, #0 \n"
432"                BEQ     loc_FF992F40 \n"
433
434"loc_FF992F3C: \n"
435"                MOV     R6, #0x1D \n"
436
437"loc_FF992F40: \n"
438"                MOV     R1, R6 \n"
439"                MOV     R0, R4 \n"
440"                LDMFD   SP!, {R3-R7,LR} \n"
441"                B       sub_FFAEC4B8 \n"
442
443"locret_FF992F50: \n"
444"                LDMFD   SP!, {R3-R7,PC} \n"
445);
446}
447
448void __attribute__((naked,noinline)) sub_FFAECCA0_my(){
449 asm volatile(
450"                STMFD   SP!, {R2-R6,LR} \n"
451"                MOV     R5, R0 \n"
452"                BL      sub_FF993A4C \n"
453//"                MOVL    R1, 0xFFFFFFFF \n"
454"                                MVN     R1, #0 \n"
455"                BL      sub_FF8917D0 \n"
456"                LDR     R0, =0xFFAEC534 \n"
457"                MOV     R1, R5 \n"
458"                BL      sub_FF8C6448 \n"
459"                MOV     R0, R5 \n"
460"                BL      sub_FFAEC440 \n"
461"                MOV     R0, R5 \n"
462"                BL      sub_FFAEC890 \n"
463"                MOV     R4, R0 \n"
464"                LDR     R1, =0xE164 \n"
465"                MOV     R0, #0x8A \n"
466"                MOV     R2, #4 \n"
467"                BL      _PT_GetPropertyCaseString \n"
468"                TST     R0, #1 \n"
469"                LDRNE   R1, =0x1F6 \n"
470//"                ADRNE   R0, aSsstandardcapt ; "SsStandardCaptureSeq.c" \n"
471"                LDRNE   R0, =0xFFAECE28 \n"
472"                BLNE    _DebugAssert \n"
473"                BL      sub_FF889A04 \n"
474"                MOV     R0, R4 \n"
475"                CMP     R0, #1 \n"
476"                MOV     R4, #0 \n"
477"                BEQ     loc_FFAECD40 \n"
478"                CMP     R0, #2 \n"
479"                BEQ     loc_FFAECD50 \n"
480"                CMP     R0, #3 \n"
481"                BEQ     loc_FFAECD74 \n"
482"                CMP     R0, #7 \n"
483"                BNE     loc_FFAECD90 \n"
484"                MOV     R0, #0 \n"
485"                BL      sub_FF8C6478 \n"
486"                MOV     R0, #4 \n"
487"                STR     R0, [SP,#0x4] \n"
488
489"loc_FFAECD30: \n"
490"                ADD     R1, SP, #0x4 \n"
491"                MOV     R0, R5 \n"
492"                BL      sub_FFAECB04 \n"
493"                B       loc_FFAECD6C \n"
494
495"loc_FFAECD40: \n"
496"                MOV     R0, #1 \n"
497"                BL      sub_FF8C6478 \n"
498"                STR     R4, [SP,#0x4] \n"
499"                B       loc_FFAECD30 \n"
500
501"loc_FFAECD50: \n"
502"                MOV     R0, #1 \n"
503"                BL      sub_FF8C6478 \n"
504"                MOV     R0, #1 \n"
505"                STR     R0, [SP,#0x4] \n"
506"                MOV     R0, R5 \n"
507"                ADD     R1, SP, #0x4 \n"
508"                BL      sub_FFAECEFC \n"
509
510"loc_FFAECD6C: \n"
511
512"               BL      capt_seq_hook_raw_here\n"               // added (16/2/2011, moved here so that long exposures work)
513
514"                MOV     R6, R0 \n"
515"                B       loc_FFAECD9C \n"
516
517"loc_FFAECD74: \n"
518"                MOV     R0, #1 \n"
519"                BL      sub_FF8C6478 \n"
520"                ADD     R1, SP, #0x4 \n"
521"                MOV     R0, R5 \n"
522"                STR     R4, [SP,#0x4] \n"
523"                BL      sub_FFAECB80 \n"
524"                B       loc_FFAECD6C \n"
525
526"loc_FFAECD90: \n"
527"                MOV     R1, #0x22C \n"
528//"                ADR     R0, aSsstandardcapt ; "SsStandardCaptureSeq.c" \n"
529"                LDR   R0, =0xFFAECE28 \n"
530"                BL      _DebugAssert \n"
531
532"loc_FFAECD9C: \n"
533"                TST     R6, #1 \n"
534"                MOVNE   R0, R6 \n"
535"                BNE     locret_FFAECE08 \n"
536"                MOV     R1, #0 \n"
537//"                ADR     R0, nullsub_371 \n"
538"                                LDR     R0, =0xFFAECA74 \n"
539"                BL      sub_FF8C6448 \n"
540"                LDR     R0, =0x3BC24 \n"
541"                LDRH    R0, [R0] \n"
542"                SUB     R12, R0, #0x4000 \n"
543"                SUBS    R12, R12, #0x20C \n"
544"                BLEQ    sub_FF8AF954 \n"
545"                MOV     R0, R5 \n"
546"                BL      sub_FFAEC938 \n"
547"                BL      sub_FF993A4C \n"
548"                MOV     R3, #0x244 \n"
549"                STR     R3, [SP] \n"
550"                LDR     R2, =0x3A98 \n"
551//"                ADR     R3, aSsstandardcapt ; "SsStandardCaptureSeq.c" \n"
552"                LDR   R3, =0xFFAECE28 \n"
553"                MOV     R1, #4 \n"
554"                BL      sub_FF88C9C8 \n"
555"                CMP     R0, #0 \n"
556"                MOVNE   R1, #0x244 \n"
557//"                ADRNE   R0, aSsstandardcapt ; "SsStandardCaptureSeq.c" \n"
558"                LDRNE   R0, =0xFFAECE28 \n"
559"                BLNE    _DebugAssert \n"
560"                LDRH    R0, [SP,#0x4] \n"
561"                STRH    R0, [R5,#0x14] \n"
562"                MOV     R0, #0 \n"
563
564"locret_FFAECE08: \n"
565"                LDMFD   SP!, {R2-R6,PC} \n"
566         );
567}
568
569/*************************************************************/
570// @ FF8D081C (1.00l)
571void __attribute__((naked,noinline)) exp_drv_task(){
572
573 asm volatile(
574"                STMFD   SP!, {R4-R8,LR} \n"
575"                SUB     SP, SP, #0x20 \n"
576"                LDR     R8, =0xBB8 \n"
577"                LDR     R7, =0x5094 \n"
578"                LDR     R5, =0x57870 \n"
579"                MOV     R0, #0 \n"
580"                ADD     R6, SP, #0x10 \n"
581"                STR     R0, [SP,#0x0C] \n"
582
583"loc_FF8D083C: \n"
584"                LDR     R0, [R7,#0x20] \n"
585"                MOV     R2, #0 \n"
586"                ADD     R1, SP, #0x1C \n"
587"                BL      sub_FF83A4C8 \n"
588"                LDR     R0, [SP,#0x0C] \n"
589"                CMP     R0, #1 \n"
590"                BNE     loc_FF8D0888 \n"
591"                LDR     R0, [SP,#0x1C] \n"
592"                LDR     R0, [R0] \n"
593"                CMP     R0, #0x14 \n"
594"                CMPNE   R0, #0x15 \n"
595"                CMPNE   R0, #0x16 \n"
596"                CMPNE   R0, #0x17 \n"
597"                BEQ     loc_FF8D09EC \n"
598"                CMP     R0, #0x29 \n"
599"                BEQ     loc_FF8D0974 \n"
600"                ADD     R1, SP, #0x0C \n"
601"                MOV     R0, #0 \n"
602"                BL      sub_FF8D07CC \n"
603
604"loc_FF8D0888: \n"
605"                LDR     R0, [SP,#0x1C] \n"
606"                LDR     R1, [R0] \n"
607"                CMP     R1, #0x2F \n"
608"                BNE     loc_FF8D08B8 \n"
609"                LDR     R0, [SP,#0x1C] \n"
610"                BL      sub_FF8D1BC0 \n"
611"                LDR     R0, [R7,#0x1C] \n"
612"                MOV     R1, #1 \n"
613"                BL      sub_FF89179C \n"
614"                BL      _ExitTask \n"
615"                ADD     SP, SP, #0x20 \n"
616"                LDMFD   SP!, {R4-R8,PC} \n"
617
618"loc_FF8D08B8: \n"
619"                CMP     R1, #0x2E \n"
620"                BNE     loc_FF8D08D4 \n"
621"                LDR     R2, [R0,#0x8C]! \n"
622"                LDR     R1, [R0,#4] \n"
623"                MOV     R0, R1 \n"
624"                BLX     R2 \n"
625"                B       loc_FF8D0EA8 \n"
626
627"loc_FF8D08D4: \n"
628"                CMP     R1, #0x27 \n"
629"                BNE     loc_FF8D0924 \n"
630"                LDR     R0, [R7,#0x1C] \n"
631"                MOV     R1, #0x80 \n"
632"                BL      sub_FF8917D0 \n"
633"                LDR     R0, =0xFF8CC67C \n"
634"                MOV     R1, #0x80 \n"
635"                BL      sub_FF97F6E8 \n"
636"                LDR     R0, [R7,#0x1C] \n"
637"                MOV     R2, R8 \n"
638"                MOV     R1, #0x80 \n"
639"                BL      sub_FF8916DC \n"
640"                TST     R0, #1 \n"
641"                LDRNE   R1, =0x1089 \n"
642"                BNE     loc_FF8D09E0 \n"
643
644"loc_FF8D0910: \n"
645"                LDR     R1, [SP,#0x1C] \n"
646"                LDR     R0, [R1,#0x90] \n"
647"                LDR     R1, [R1,#0x8C] \n"
648"                BLX     R1 \n"
649"                B       loc_FF8D0EA8 \n"
650
651"loc_FF8D0924: \n"
652"                CMP     R1, #0x28 \n"
653"                BNE     loc_FF8D096C \n"
654"                ADD     R1, SP, #0x0C \n"
655"                BL      sub_FF8D07CC \n"
656"                LDR     R0, [R7,#0x1C] \n"
657"                MOV     R1, #0x100 \n"
658"                BL      sub_FF8917D0 \n"
659"                LDR     R0, =0xFF8CC68C \n"
660"                MOV     R1, #0x100 \n"
661"                BL      sub_FF980118 \n"
662"                LDR     R0, [R7,#0x1C] \n"
663"                MOV     R2, R8 \n"
664"                MOV     R1, #0x100 \n"
665"                BL      sub_FF8916DC \n"
666"                TST     R0, #1 \n"
667"                BEQ     loc_FF8D0910 \n"
668"                LDR     R1, =0x1093 \n"
669"                B       loc_FF8D09E0 \n"
670
671"loc_FF8D096C: \n"
672"                CMP     R1, #0x29 \n"
673"                BNE     loc_FF8D0984 \n"
674
675"loc_FF8D0974: \n"
676"                LDR     R0, [SP,#0x1C] \n"
677"                ADD     R1, SP, #0x0C \n"
678"                BL      sub_FF8D07CC \n"
679"                B       loc_FF8D0910 \n"
680
681"loc_FF8D0984: \n"
682"                CMP     R1, #0x2C \n"
683"                BNE     loc_FF8D099C \n"
684"                BL      sub_FF8BEBD0 \n"
685"                BL      sub_FF8BF7DC \n"
686"                BL      sub_FF8BF348 \n"
687"                B       loc_FF8D0910 \n"
688
689"loc_FF8D099C: \n"
690"                CMP     R1, #0x2D \n"
691"                BNE     loc_FF8D09EC \n"
692"                LDR     R0, [R7,#0x1C] \n"
693"                MOV     R1, #4 \n"
694"                BL      sub_FF8917D0 \n"
695"                LDR     R1, =0xFF8CC6AC \n"
696"                LDR     R0, =0xFFFFF400 \n"
697"                MOV     R2, #4 \n"
698"                BL      sub_FF8BE64C \n"
699"                BL      sub_FF8BE8D4 \n"
700"                LDR     R0, [R7,#0x1C] \n"
701"                MOV     R2, R8 \n"
702"                MOV     R1, #4 \n"
703"                BL      sub_FF8915F8 \n"
704"                TST     R0, #1 \n"
705"                BEQ     loc_FF8D0910 \n"
706"                LDR     R1, =0x10BB \n"
707
708"loc_FF8D09E0: \n"
709"                LDR     R0, =0xFF8CCD34 \n"
710"                BL      _DebugAssert \n"
711"                B       loc_FF8D0910 \n"
712
713"loc_FF8D09EC: \n"
714"                LDR     R0, [SP,#0x1C] \n"
715"                MOV     R4, #1 \n"
716"                LDR     R1, [R0] \n"
717"                CMP     R1, #0x12 \n"
718"                CMPNE   R1, #0x13 \n"
719"                BNE     loc_FF8D0A5C \n"
720"                LDR     R1, [R0,#0x7C] \n"
721"                ADD     R1, R1, R1,LSL#1 \n"
722"                ADD     R1, R0, R1,LSL#2 \n"
723"                SUB     R1, R1, #8 \n"
724"                LDMIA   R1, {R2-R4} \n"
725"                STMIA   R6, {R2-R4} \n"
726"                BL      sub_FF8CEF54 \n"
727"                LDR     R0, [SP,#0x1C] \n"
728"                LDR     R1, [R0,#0x7C] \n"
729"                LDR     R3, [R0,#0x8C] \n"
730"                LDR     R2, [R0,#0x90] \n"
731"                ADD     R0, R0, #4 \n"
732"                BLX     R3 \n"
733"                LDR     R0, [SP,#0x1C] \n"
734"                BL      sub_FF8D1FCC \n"
735"                LDR     R0, [SP,#0x1C] \n"
736"                LDR     R1, [R0,#0x7C] \n"
737"                LDR     R3, [R0,#0x94] \n"
738"                LDR     R2, [R0,#0x98] \n"
739"                ADD     R0, R0, #4 \n"
740"                BLX     R3 \n"
741"                B       loc_FF8D0DE4 \n"
742
743"loc_FF8D0A5C: \n"
744"                CMP     R1, #0x14 \n"
745"                CMPNE   R1, #0x15 \n"
746"                CMPNE   R1, #0x16 \n"
747"                CMPNE   R1, #0x17 \n"
748"                BNE     loc_FF8D0B14 \n"
749"                ADD     R3, SP, #0x0C \n"
750"                MOV     R2, SP \n"
751"                ADD     R1, SP, #0x10 \n"
752"                BL      sub_FF8CF1C0 \n"
753"                CMP     R0, #1 \n"
754"                MOV     R4, R0 \n"
755"                CMPNE   R4, #5 \n"
756"                BNE     loc_FF8D0AB0 \n"
757"                LDR     R0, [SP,#0x1C] \n"
758"                MOV     R2, R4 \n"
759"                LDR     R1, [R0,#0x7C]! \n"
760"                LDR     R12, [R0,#0x10]! \n"
761"                LDR     R3, [R0,#4] \n"
762"                MOV     R0, SP \n"
763"                BLX     R12 \n"
764"                B       loc_FF8D0AE8 \n"
765
766"loc_FF8D0AB0: \n"
767"                LDR     R0, [SP,#0x1C] \n"
768"                CMP     R4, #2 \n"
769"                LDR     R3, [R0,#0x90] \n"
770"                CMPNE   R4, #6 \n"
771"                BNE     loc_FF8D0AFC \n"
772"                LDR     R12, [R0,#0x8C] \n"
773"                MOV     R0, SP \n"
774"                MOV     R2, R4 \n"
775"                MOV     R1, #1 \n"
776"                BLX     R12 \n"
777"                LDR     R0, [SP,#0x1C] \n"
778"                MOV     R2, SP \n"
779"                ADD     R1, SP, #0x10 \n"
780"                BL      sub_FF8D0518 \n"
781
782"loc_FF8D0AE8: \n"
783"                LDR     R0, [SP,#0x1C] \n"
784"                LDR     R2, [SP,#0x0C] \n"
785"                MOV     R1, R4 \n"
786"                BL      sub_FF8D076C \n"
787"                B       loc_FF8D0DE4 \n"
788
789"loc_FF8D0AFC: \n"
790"                LDR     R1, [R0,#0x7C] \n"
791"                LDR     R12, [R0,#0x8C] \n"
792"                ADD     R0, R0, #4 \n"
793"                MOV     R2, R4 \n"
794"                BLX     R12 \n"
795"                B       loc_FF8D0DE4 \n"
796
797"loc_FF8D0B14: \n"
798"                CMP     R1, #0x23 \n"
799"                CMPNE   R1, #0x24 \n"
800"                BNE     loc_FF8D0B60 \n"
801"                LDR     R1, [R0,#0x7C] \n"
802"                ADD     R1, R1, R1,LSL#1 \n"
803"                ADD     R1, R0, R1,LSL#2 \n"
804"                SUB     R1, R1, #8 \n"
805"                LDMIA   R1, {R2-R4} \n"
806"                STMIA   R6, {R2-R4} \n"
807"                BL      sub_FF8CDFD8 \n"
808"                LDR     R0, [SP,#0x1C] \n"
809"                LDR     R1, [R0,#0x7C] \n"
810"                LDR     R3, [R0,#0x8C] \n"
811"                LDR     R2, [R0,#0x90] \n"
812"                ADD     R0, R0, #4 \n"
813"                BLX     R3 \n"
814"                LDR     R0, [SP,#0x1C] \n"
815"                BL      sub_FF8CE424 \n"
816"                B       loc_FF8D0DE4 \n"
817
818"loc_FF8D0B60: \n"
819"                ADD     R1, R0, #4 \n"
820"                LDMIA   R1, {R2,R3,R12} \n"
821"                STMIA   R6, {R2,R3,R12} \n"
822"                LDR     R1, [R0] \n"
823"                CMP     R1, #0x26 \n"
824"                ADDLS   PC, PC, R1,LSL#2 \n"
825"                B       loc_FF8D0DC4 \n"
826
827"loc_FF8D0B7C: \n"
828"                B       loc_FF8D0C18 \n"
829
830"loc_FF8D0B80: \n"
831"                B       loc_FF8D0C18 \n"
832
833"loc_FF8D0B84: \n"
834"                B       loc_FF8D0C20 \n"
835
836"loc_FF8D0B88: \n"
837"                B       loc_FF8D0C28 \n"
838
839"loc_FF8D0B8C: \n"
840"                B       loc_FF8D0C28 \n"
841
842"loc_FF8D0B90: \n"
843"                B       loc_FF8D0C28 \n"
844
845"loc_FF8D0B94: \n"
846"                B       loc_FF8D0C18 \n"
847
848"loc_FF8D0B98: \n"
849"                B       loc_FF8D0C20 \n"
850
851"loc_FF8D0B9C: \n"
852"                B       loc_FF8D0C28 \n"
853
854"loc_FF8D0BA0: \n"
855"                B       loc_FF8D0C28 \n"
856
857"loc_FF8D0BA4: \n"
858"                B       loc_FF8D0C40 \n"
859
860"loc_FF8D0BA8: \n"
861"                B       loc_FF8D0C40 \n"
862
863"loc_FF8D0BAC: \n"
864"                B       loc_FF8D0DB0 \n"
865
866"loc_FF8D0BB0: \n"
867"                B       loc_FF8D0DB8 \n"
868
869"loc_FF8D0BB4: \n"
870"                B       loc_FF8D0DB8 \n"
871
872"loc_FF8D0BB8: \n"
873"                B       loc_FF8D0DB8 \n"
874
875"loc_FF8D0BBC: \n"
876"                B       loc_FF8D0DB8 \n"
877
878"loc_FF8D0BC0: \n"
879"                B       loc_FF8D0DC0 \n"
880
881"loc_FF8D0BC4: \n"
882"                B       loc_FF8D0DC4 \n"
883
884"loc_FF8D0BC8: \n"
885"                B       loc_FF8D0DC4 \n"
886
887"loc_FF8D0BCC: \n"
888"                B       loc_FF8D0DC4 \n"
889
890"loc_FF8D0BD0: \n"
891"                B       loc_FF8D0DC4 \n"
892
893"loc_FF8D0BD4: \n"
894"                B       loc_FF8D0DC4 \n"
895
896"loc_FF8D0BD8: \n"
897"                B       loc_FF8D0DC4 \n"
898
899"loc_FF8D0BDC: \n"
900"                B       loc_FF8D0C30 \n"
901
902"loc_FF8D0BE0: \n"
903"                B       loc_FF8D0C38 \n"
904
905"loc_FF8D0BE4: \n"
906"                B       loc_FF8D0C38 \n"
907
908"loc_FF8D0BE8: \n"
909"                B       loc_FF8D0C4C \n"
910
911"loc_FF8D0BEC: \n"
912"                B       loc_FF8D0C4C \n"
913
914"loc_FF8D0BF0: \n"
915"                B       loc_FF8D0C54 \n"
916
917"loc_FF8D0BF4: \n"
918"                B       loc_FF8D0C8C \n"
919
920"loc_FF8D0BF8: \n"
921"                B       loc_FF8D0CC4 \n"
922
923"loc_FF8D0BFC: \n"
924"                B       loc_FF8D0D60 \n"
925
926"loc_FF8D0C00: \n"
927"                B       loc_FF8D0D98 \n"
928
929"loc_FF8D0C04: \n"
930"                B       loc_FF8D0D98 \n"
931
932"loc_FF8D0C08: \n"
933"                B       loc_FF8D0DC4 \n"
934
935"loc_FF8D0C0C: \n"
936"                B       loc_FF8D0DC4 \n"
937
938"loc_FF8D0C10: \n"
939"                B       loc_FF8D0DA0 \n"
940
941"loc_FF8D0C14: \n"
942"                B       loc_FF8D0DA8 \n"
943
944"loc_FF8D0C18: \n"
945//"; jumptable FF8D0B70 entries 0,1,6      ; LOCATION: ExpDrv.c:928
946"                BL      sub_FF8CCBBC \n"
947"                B       loc_FF8D0DC4 \n"
948
949"loc_FF8D0C20: \n"
950//"; jumptable FF8D0B70 entries 2,7        ; LOCATION: ExpDrv.c:0
951"                BL      sub_FF8CCE58 \n"
952"                B       loc_FF8D0DC4 \n"
953
954"loc_FF8D0C28: \n"
955//"; jumptable FF8D0B70 entries 3-5,8,9    ; LOCATION: ExpDrv.c:0
956"                BL      sub_FF8CD080 \n"
957"                B       loc_FF8D0DC4 \n"
958
959"loc_FF8D0C30: \n"
960//"; jumptable FF8D0B70 entry 24           ; LOCATION: ExpDrv.c:2
961"                BL      sub_FF8CD358 \n"
962"                B       loc_FF8D0DC4 \n"
963
964"loc_FF8D0C38: \n"
965//"; jumptable FF8D0B70 entries 25,26      ; LOCATION: ExpDrv.c:0
966"                BL      sub_FF8CD570 \n"
967"                B       loc_FF8D0DC4 \n"
968
969"loc_FF8D0C40: \n"
970//"; jumptable FF8D0B70 entries 10,11      ; LOCATION: ExpDrv.c:2
971//"                BL      sub_FF8CD894 \n"
972"                BL      sub_FF8CD894_my \n"  // patched
973"                MOV     R4, #0 \n"
974"                B       loc_FF8D0DC4 \n"
975
976"loc_FF8D0C4C: \n"
977//"; jumptable FF8D0B70 entries 27,28      ; LOCATION: ExpDrv.c:0
978"                BL      sub_FF8CD9DC \n"
979"                B       loc_FF8D0DC4 \n"
980
981"loc_FF8D0C54: \n"
982//"; jumptable FF8D0B70 entry 29
983"                LDRH    R1, [R0,#4] \n"
984"                STRH    R1, [SP,#0x10] \n"
985"                LDRH    R1, [R5,#2] \n"
986"                STRH    R1, [SP,#0x12] \n"
987"                LDRH    R1, [R5,#4] \n"
988"                STRH    R1, [SP,#0x14] \n"
989"                LDRH    R1, [R5,#6] \n"
990"                STRH    R1, [SP,#0x16] \n"
991"                LDRH    R1, [R0,#0xC] \n"
992"                STRH    R1, [SP,#0x18] \n"
993"                LDRH    R1, [R5,#0xA] \n"
994"                STRH    R1, [SP,#0x1A] \n"
995"                BL      sub_FF8D1CC4 \n"
996"                B       loc_FF8D0DC4 \n"
997
998"loc_FF8D0C8C: \n"
999//"; jumptable FF8D0B70 entry 30
1000"                LDRH    R1, [R0,#4] \n"
1001"                STRH    R1, [SP,#0x10] \n"
1002"                LDRH    R1, [R5,#2] \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"                LDRH    R1, [R5,#0xA] \n"
1011"                STRH    R1, [SP,#0x1A] \n"
1012"                BL      sub_FF8D1DCC \n"
1013"                B       loc_FF8D0DC4 \n"
1014
1015"loc_FF8D0CC4: \n"
1016//"; jumptable FF8D0B70 entry 31
1017"                LDRH    R1, [R5] \n"
1018"                STRH    R1, [SP,#0x10] \n"
1019"                LDRH    R1, [R0,#6] \n"
1020"                STRH    R1, [SP,#0x12] \n"
1021"                LDRH    R1, [R5,#4] \n"
1022"                STRH    R1, [SP,#0x14] \n"
1023"                LDRH    R1, [R5,#6] \n"
1024"                STRH    R1, [SP,#0x16] \n"
1025"                LDRH    R1, [R5,#8] \n"
1026"                STRH    R1, [SP,#0x18] \n"
1027"                LDRH    R1, [R5,#0xA] \n"
1028"                STRH    R1, [SP,#0x1A] \n"
1029"                BL      sub_FF8D1E80 \n"
1030"                B       loc_FF8D0DC4 \n"
1031
1032"loc_FF8D0D60: \n"
1033//"; jumptable FF8D0B70 entry 32
1034"                LDRH    R1, [R5] \n"
1035"                STRH    R1, [SP,#0x10] \n"
1036"                LDRH    R1, [R5,#2] \n"
1037"                STRH    R1, [SP,#0x12] \n"
1038"                LDRH    R1, [R5,#4] \n"
1039"                STRH    R1, [SP,#0x14] \n"
1040"                LDRH    R1, [R5,#6] \n"
1041"                STRH    R1, [SP,#0x16] \n"
1042"                LDRH    R1, [R0,#0xC] \n"
1043"                STRH    R1, [SP,#0x18] \n"
1044"                LDRH    R1, [R5,#0xA] \n"
1045"                STRH    R1, [SP,#0x1A] \n"
1046"                BL      sub_FF8D1F28 \n"
1047"                B       loc_FF8D0DC4 \n"
1048
1049"loc_FF8D0D98: \n"
1050//"; jumptable FF8D0B70 entries 33,34      ; LOCATION: ExpDrv.c:6
1051"                BL      sub_FF8CDDB0 \n"
1052"                B       loc_FF8D0DC4 \n"
1053
1054"loc_FF8D0DA0: \n"
1055//"; jumptable FF8D0B70 entry 37           ; LOCATION: ExpDrv.c:10
1056"                BL      sub_FF8CE528 \n"
1057"                B       loc_FF8D0DC4 \n"
1058
1059"loc_FF8D0DA8: \n"
1060//"; jumptable FF8D0B70 entry 38           ; LOCATION: ExpDrv.c:6
1061"                BL      sub_FF8CE7C4 \n"
1062"                B       loc_FF8D0DC4 \n"
1063
1064"loc_FF8D0DB0: \n"
1065//"; jumptable FF8D0B70 entry 12           ; LOCATION: ExpDrv.c:2
1066"                BL      sub_FF8CE9A4 \n"
1067"                B       loc_FF8D0DC4 \n"
1068
1069"loc_FF8D0DB8: \n"
1070//"; jumptable FF8D0B70 entries 13-16      ; LOCATION: ExpDrv.c:128
1071"                BL      sub_FF8CEB60 \n"
1072"                B       loc_FF8D0DC4 \n"
1073
1074"loc_FF8D0DC0: \n"
1075//"; jumptable FF8D0B70 entry 17           ; LOCATION: ExpDrv.c:2
1076"                BL      sub_FF8CED4C \n"
1077
1078"loc_FF8D0DC4: \n"
1079//"; jumptable FF8D0B70 default entry
1080//"; jumptable FF8D0B70 entries 18-23,35,36
1081"                LDR     R0, [SP,#0x1C] \n"
1082"                LDR     R1, [R0,#0x7C] \n"
1083"                LDR     R3, [R0,#0x8C] \n"
1084"                LDR     R2, [R0,#0x90] \n"
1085"                ADD     R0, R0, #4 \n"
1086"                BLX     R3 \n"
1087"                CMP     R4, #1 \n"
1088"                BNE     loc_FF8D0E2C \n"
1089
1090"loc_FF8D0DE4: \n"
1091"                LDR     R0, [SP,#0x1C] \n"
1092"                MOV     R2, #0xC \n"
1093"                LDR     R1, [R0,#0x7C] \n"
1094"                ADD     R1, R1, R1,LSL#1 \n"
1095"                ADD     R0, R0, R1,LSL#2 \n"
1096"                SUB     R4, R0, #8 \n"
1097"                LDR     R0, =0x57870 \n"
1098"                ADD     R1, SP, #0x10 \n"
1099"                BL      sub_FFB924F0 \n"
1100"                LDR     R0, =0x5787C \n"
1101"                MOV     R2, #0xC \n"
1102"                ADD     R1, SP, #0x10 \n"
1103"                BL      sub_FFB924F0 \n"
1104"                LDR     R0, =0x57888 \n"
1105"                MOV     R2, #0xC \n"
1106"                MOV     R1, R4 \n"
1107"                BL      sub_FFB924F0 \n"
1108"                B       loc_FF8D0EA8 \n"
1109
1110"loc_FF8D0E2C: \n"
1111"                LDR     R0, [SP,#0x1C] \n"
1112"                MOV     R3, #1 \n"
1113"                LDR     R0, [R0] \n"
1114"                CMP     R0, #0xB \n"
1115"                BNE     loc_FF8D0E74 \n"
1116"                MOV     R2, #0 \n"
1117"                STRD    R2, [SP] \n"
1118"                MOV     R2, #1 \n"
1119"                MOV     R1, #1 \n"
1120"                MOV     R0, #0 \n"
1121"                BL      sub_FF8CC99C \n"
1122"                MOV     R3, #1 \n"
1123"                MOV     R2, #0 \n"
1124"                STRD    R2, [SP] \n"
1125"                MOV     R2, #1 \n"
1126"                MOV     R1, #1 \n"
1127"                MOV     R0, #0 \n"
1128"                B       loc_FF8D0EA4 \n"
1129
1130"loc_FF8D0E74: \n"
1131"                MOV     R2, #1 \n"
1132"                STRD    R2, [SP] \n"
1133"                MOV     R3, #1 \n"
1134"                MOV     R1, #1 \n"
1135"                MOV     R0, #1 \n"
1136"                BL      sub_FF8CC99C \n"
1137"                MOV     R3, #1 \n"
1138"                MOV     R2, #1 \n"
1139"                MOV     R1, #1 \n"
1140"                MOV     R0, #1 \n"
1141"                STR     R3, [SP] \n"
1142"                STR     R3, [SP,#0x04] \n"
1143
1144"loc_FF8D0EA4: \n"
1145"                BL      sub_FF8CCB04 \n"
1146
1147"loc_FF8D0EA8: \n"
1148"                LDR     R0, [SP,#0x1C] \n"
1149"                BL      sub_FF8D1BC0 \n"
1150"                B       loc_FF8D083C \n"
1151 );
1152}
1153
1154void __attribute__((naked,noinline)) sub_FF8CD894_my() {
1155        asm volatile (
1156"                STMFD   SP!, {R4-R8,LR} \n"
1157"                LDR     R7, =0x5094 \n"
1158"                MOV     R4, R0 \n"
1159"                LDR     R0, [R7,#0x1C] \n"
1160"                MOV     R1, #0x3E \n"
1161"                BL      sub_FF8917D0 \n"
1162"                LDRSH   R0, [R4,#4] \n"
1163"                MOV     R2, #0 \n"
1164"                MOV     R1, #0 \n"
1165"                BL      sub_FF8CC700 \n"
1166"                MOV     R5, R0 \n"
1167"                LDRSH   R0, [R4,#6] \n"
1168"                BL      sub_FF8CC810 \n"
1169"                LDRSH   R0, [R4,#8] \n"
1170"                BL      sub_FF8CC868 \n"
1171"                LDRSH   R0, [R4,#0xA] \n"
1172"                BL      sub_FF8CC8C0 \n"
1173"                LDRSH   R0, [R4,#0xC] \n"
1174"                MOV     R1, #0 \n"
1175"                BL      sub_FF8CC918 \n"
1176"                MOV     R6, R0 \n"
1177"                LDRSH   R0, [R4,#0xE] \n"
1178"                BL      sub_FF8D1C64 \n"
1179"                LDR     R0, [R4] \n"
1180"                LDR     R8, =0x57888 \n"
1181"                CMP     R0, #0xB \n"
1182"                MOVEQ   R5, #0 \n"
1183"                MOVEQ   R6, #0 \n"
1184"                BEQ     loc_FF8CD930 \n"
1185"                CMP     R5, #1 \n"
1186"                BNE     loc_FF8CD930 \n"
1187"                LDRSH   R0, [R4,#4] \n"
1188"                LDR     R1, =0xFF8CC66C \n"
1189"                MOV     R2, #2 \n"
1190"                BL      sub_FF97FA34 \n"
1191"                STRH    R0, [R4,#4] \n"
1192"                MOV     R0, #0 \n"
1193"                STR     R0, [R7,#0x28] \n"
1194"                B       loc_FF8CD938 \n"
1195
1196"loc_FF8CD930: \n"
1197"                LDRH    R0, [R8] \n"
1198"                STRH    R0, [R4,#4] \n"
1199
1200"loc_FF8CD938: \n"
1201"                CMP     R6, #1 \n"
1202"                LDRNEH  R0, [R8,#8] \n"
1203"                BNE     loc_FF8CD954 \n"
1204"                LDRSH   R0, [R4,#0xC] \n"
1205"                LDR     R1, =0xFF8CC6F0 \n"
1206"                MOV     R2, #0x20 \n"
1207"                BL      sub_FF8D1C80 \n"
1208
1209"loc_FF8CD954: \n"
1210"                STRH    R0, [R4,#0xC] \n"
1211"                LDRSH   R0, [R4,#6] \n"
1212//"                BL      sub_FF8BE940 \n"
1213"                BL      sub_FF8BE940_my \n" // patched
1214"                               B       sub_FF8CD960 \n"                // continue in firmware
1215        );
1216}
1217
1218void __attribute__((naked,noinline)) sub_FF8BE940_my() {
1219        asm volatile (
1220"                STMFD   SP!, {R4-R6,LR} \n"
1221"                LDR     R5, =0x4D70 \n"
1222"                MOV     R4, R0 \n"
1223"                LDR     R0, [R5,#4] \n"
1224"                CMP     R0, #1 \n"
1225"                LDRNE   R1, =0x146 \n"
1226"                LDRNE   R0, =0xFF8BE744 \n"
1227"                BLNE    _DebugAssert \n"
1228"                CMN     R4, #0xC00 \n"
1229"                LDREQSH R4, [R5,#2] \n"
1230"                CMN     R4, #0xC00 \n"
1231"                MOVEQ   R1, #0x14C \n"
1232"                LDRNE   R0, =0xFF8BE744 \n"
1233"                STRH    R4, [R5,#2] \n"
1234"                BLEQ    _DebugAssert \n"
1235"                MOV     R0, R4 \n"
1236"                BL      apex2us \n"    // patched
1237"                               B       sub_FF8BE984 \n"        // continue in firmware
1238);
1239}
Note: See TracBrowser for help on using the repository browser.