source: trunk/platform/a3000/sub/100c/capt_seq.c @ 1372

Revision 1372, 28.7 KB checked in by philmoz, 19 months ago (diff)

A3000 port from ERR99 - http://chdk.setepontos.com/index.php?topic=650.msg74533#msg74533
Firmware versions 1.00b, 1.00c and 1.00d.

  • 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*)0x5A80;
6
7#include "../../../generic/capt_seq.c"
8
9
10void __attribute__((naked,noinline)) sub_FFD17F00_my() {
11 asm volatile (
12
13        "STMFD   SP!, {R0-R8,LR}\n"
14        "MOV     R4, R0\n"
15        "BL      sub_FFD189F8    \n"
16                                "MOV     R1, #0xFFFFFFFF\n"
17        "BL      sub_FFC28C18\n"
18        "LDR     R5, =0x5A80\n"
19        "LDR     R0, [R5,#0xC]\n"
20        "CMP     R0, #0\n"
21        "BNE     loc_FFD17F50\n"
22        "MOV     R1, #1\n"
23        "MOV     R0, #0\n"
24        "BL      sub_FFC0F41C    \n"
25        "STR     R0, [R5,#0xC]\n"
26        "MOV     R3, #0\n"
27        "STR     R3, [SP]\n"
28        "LDR     R3, =0xFFD1793C \n"
29        "LDR     R0, =0xFFD18164\n"
30        "MOV     R2, #0x400\n"
31        "MOV     R1, #0x17\n"
32        "BL      sub_FFC0F3E8    \n"
33"loc_FFD17F50:\n"
34        "MOV     R2, #4\n"
35        "ADD     R1, SP, #8\n"
36        "MOV     R0, #0x8A\n"
37        "BL      sub_FFC6C664    \n"
38        "TST     R0, #1\n"
39        "LDRNE   R1, =0x3BA\n"
40        "LDRNE   R0, =0xFFD17BC0\n"
41        "BLNE    sub_FFC0F5E8\n"
42        "LDR     R6, =0x34720\n"
43        "LDR     R7, =0x3465C\n"
44        "LDR     R3, [R6]\n"
45        "LDRSH   R2, [R6,#0xC]\n"
46        "LDRSH   R1, [R6,#0xE]\n"
47        "LDR     R0, [R7,#0x88]\n"
48        "BL      sub_FFCE9E5C\n"
49        "BL      sub_FFC4660C    \n"
50        "LDR     R3, =0x5A88\n"
51        "STRH    R0, [R4,#0xA4]\n"
52        "SUB     R2, R3, #4\n"
53        "STRD    R2, [SP]\n"
54        "MOV     R1, R0\n"
55        "LDRH    R0, [R7,#0x5C]\n"
56        "LDRSH   R2, [R6,#0xC]\n"
57        "SUB     R3, R3, #8\n"
58        "BL      sub_FFD1905C\n"
59                "BL      wait_until_remote_button_is_released\n" // untested!
60                "BL      capt_seq_hook_set_nr\n"
61                "B       sub_FFD17FB4\n" // -> continue in firmware
62 );
63}
64void __attribute__((naked,noinline)) sub_FFC5C5D8_my() {
65 asm volatile (
66        "STMFD   SP!, {R4-R6,LR}\n"
67        "LDR     R4, [R0,#0xC]\n"
68        "LDR     R6, =0x3465C\n"
69        "LDR     R0, [R4,#8]\n"
70        "MOV     R5, #0\n"
71        "ORR     R0, R0, #1\n"
72        "STR     R0, [R4,#8]\n"
73        "LDR     R0, [R6,#0x24]\n"
74        "CMP     R0, #0\n"
75        "MOVEQ   R0, #2\n"
76        "BLEQ    sub_FFC58AEC\n"
77        "BL      sub_FFC5CAD4\n"
78        "LDR     R0, [R6,#0x24]\n"
79        "CMP     R0, #0\n"
80        "BNE     loc_FFC5C674\n"
81        "MOV     R0, R4\n"
82        "BL      sub_FFC5CE74\n"
83        "MOV     R0, R4\n"
84        "BL      sub_FFD16AA8\n"
85        "CMP     R0, #0\n"
86        "MOV     R0, R4\n"
87        "BEQ     loc_FFC5C64C\n"
88        "BL      sub_FFD16B34    \n"
89        "TST     R0, #1\n"
90        "MOVNE   R2, R4\n"
91        "LDMNEFD SP!, {R4-R6,LR}\n"
92        "MOVNE   R1, #1\n"
93        "BNE     sub_FFC5A76C    \n"
94        "B       loc_FFC5C650\n"
95"loc_FFC5C64C:\n"
96        "BL      sub_FFD16AF8\n"
97"loc_FFC5C650:\n"
98        "MOV     R0, R4\n"
99        "BL      sub_FFC5BD24\n"
100        "MOV     R0, R4\n"
101        "BL      sub_FFD17E38    \n"
102        "BL      sub_FFD18864    \n"
103        "MOV     R0, R4\n"
104        //"BL      sub_FFD17F00    \n"
105        "BL      sub_FFD17F00_my    \n"  // ---> nr setup
106        "MOV     R5, R0\n"
107        "B       loc_FFC5C684\n"
108"loc_FFC5C674:\n"
109        "LDR     R0, =0x27FC\n"
110        "LDR     R0, [R0,#0x10]\n"
111        "CMP     R0, #0\n"
112        "MOVNE   R5, #0x1D\n"
113"loc_FFC5C684:\n"
114                                "BL      capt_seq_hook_raw_here\n" // ++++->
115        "BL      sub_FFC5F144\n"
116        "BL      sub_FFC5F18C\n"
117        "BL      sub_FFC5F1CC\n"
118        "MOV     R2, R4\n"
119        "MOV     R1, #1\n"
120        "MOV     R0, R5\n"
121        "BL      sub_FFC5A76C    \n"
122        "BL      sub_FFD18198\n"
123        "CMP     R0, #0\n"
124        "LDRNE   R0, [R4,#8]\n"
125        "ORRNE   R0, R0, #0x2000\n"
126        "STRNE   R0, [R4,#8]\n"
127        "LDMFD   SP!, {R4-R6,PC}\n"
128  );
129}
130
131void __attribute__((naked,noinline)) task_CaptSeqTask_my() {
132        asm volatile (
133        "STMFD   SP!, {R3-R9,LR}\n"
134        "LDR     R6, =0x27FC\n"
135        "LDR     R4, =0x3465C\n"
136        "MOV     R9, #1\n"
137        "MOV     R7, #0\n"
138"loc_FFC5C1FC:\n"
139        "LDR     R0, [R6,#4]\n"
140        "MOV     R2, #0\n"
141        "MOV     R1, SP\n"
142        "BL      sub_FFC28E74    \n"
143        "TST     R0, #1\n"
144        "BEQ     loc_FFC5C228\n"
145        "LDR     R1, =0x5B4\n"
146        "LDR     R0, =0xFFC5BDA0\n"
147        "BL      sub_FFC0F5E8\n"
148        "BL      sub_FFC0F3A0    \n"
149        "LDMFD   SP!, {R3-R9,PC}\n"
150"loc_FFC5C228:\n"
151        "LDR     R0, [SP]\n"
152        "LDR     R1, [R0]\n"
153        "CMP     R1, #0x1D\n"
154        "ADDLS   PC, PC, R1,LSL#2\n"
155        "B       loc_FFC5C4B0\n"
156"loc_FFC5C23C:\n"
157        "B       loc_FFC5C2B4\n"
158"loc_FFC5C240:\n"
159        "B       loc_FFC5C318\n"
160"loc_FFC5C244:\n"
161        "B       loc_FFC5C354\n"
162"loc_FFC5C248:\n"
163        "B       loc_FFC5C368\n"
164"loc_FFC5C24C:\n"
165        "B       loc_FFC5C360\n"
166"loc_FFC5C250:\n"
167        "B       loc_FFC5C370\n"
168"loc_FFC5C254:\n"
169        "B       loc_FFC5C378\n"
170"loc_FFC5C258:\n"
171        "B       loc_FFC5C380\n"
172"loc_FFC5C25C:\n"
173        "B       loc_FFC5C3D8\n"
174"loc_FFC5C260:\n"
175        "B       loc_FFC5C400\n"
176"loc_FFC5C264:\n"
177        "B       loc_FFC5C3E4\n"
178"loc_FFC5C268:\n"
179        "B       loc_FFC5C3F0\n"
180"loc_FFC5C26C:\n"
181        "B       loc_FFC5C3F8\n"
182"loc_FFC5C270:\n"
183        "B       loc_FFC5C408\n"
184"loc_FFC5C274:\n"
185        "B       loc_FFC5C410\n"
186"loc_FFC5C278:\n"
187        "B       loc_FFC5C418\n"
188"loc_FFC5C27C:\n"
189        "B       loc_FFC5C420\n"
190"loc_FFC5C280:\n"
191        "B       loc_FFC5C428\n"
192"loc_FFC5C284:\n"
193        "B       loc_FFC5C434\n"
194"loc_FFC5C288:\n"
195        "B       loc_FFC5C43C\n"
196"loc_FFC5C28C:\n"
197        "B       loc_FFC5C444\n"
198"loc_FFC5C290:\n"
199        "B       loc_FFC5C44C\n"
200"loc_FFC5C294:\n"
201        "B       loc_FFC5C454\n"
202"loc_FFC5C298:\n"
203        "B       loc_FFC5C460\n"
204"loc_FFC5C29C:\n"
205        "B       loc_FFC5C468\n"
206"loc_FFC5C2A0:\n"
207        "B       loc_FFC5C470\n"
208"loc_FFC5C2A4:\n"
209        "B       loc_FFC5C478\n"
210"loc_FFC5C2A8:\n"
211        "B       loc_FFC5C480\n"
212"loc_FFC5C2AC:\n"
213        "B       loc_FFC5C48C\n"
214"loc_FFC5C2B0:\n"
215        "B       loc_FFC5C4BC\n"
216"loc_FFC5C2B4:\n"
217        "BL      sub_FFC5CAE4\n"
218                // TODO do we need the short press hack ?
219                "BL      shooting_expo_param_override\n"  // +       
220        "BL      sub_FFC5A2F8\n"
221        "LDR     R0, [R4,#0x24]\n"
222        "CMP     R0, #0\n"
223        "BEQ     loc_FFC5C4BC\n"
224        "BL      sub_FFC5BA80\n"
225        "MOV     R5, R0\n"
226        "LDR     R0, [R4,#0x24]\n"
227        "CMP     R0, #0\n"
228        "BEQ     loc_FFC5C2FC\n"
229        "MOV     R0, #0xC\n"
230        "BL      sub_FFC60874\n"
231        "TST     R0, #1\n"
232        "STRNE   R9, [R6,#0x10]\n"
233        "LDRNE   R0, [R5,#8]\n"
234        "ORRNE   R0, R0, #0x40000000\n"
235        "STRNE   R0, [R5,#8]\n"
236        "BNE     loc_FFC5C4BC\n"
237"loc_FFC5C2FC:\n"
238        "MOV     R0, R5\n"
239        "BL      sub_FFC5BD24\n"
240        "MOV     R0, R5\n"
241        //"BL      sub_FFD17F00    \n"
242        "BL      sub_FFD17F00_my\n" // ----> nr setup (quick press)
243        "TST     R0, #1\n"
244        "STRNE   R9, [R6,#0x10]\n"
245        "B       loc_FFC5C4BC\n"
246"loc_FFC5C318:\n"
247        "LDR     R0, [R4,#0x24]\n"
248        "CMP     R0, #0\n"
249        "BNE     loc_FFC5C344\n"
250        "MOV     R0, #0xC\n"
251        "BL      sub_FFC60874\n"
252        "TST     R0, #1\n"
253        "LDRNE   R0, [SP]\n"
254        "MOVNE   R1, #1\n"
255        "LDRNE   R2, [R0,#0xC]\n"
256        "MOVNE   R0, #1\n"
257        "BNE     loc_FFC5C3D0\n"
258"loc_FFC5C344:\n"
259        "LDR     R0, [SP]\n"
260        //"BL      sub_FFC5C5D8\n"
261        "BL      sub_FFC5C5D8_my\n" // ------------->
262"loc_FFC5C34C:\n"
263        "STR     R7, [R4,#0x24]\n"
264        "B       loc_FFC5C4BC\n"
265"loc_FFC5C354:\n"
266        "MOV     R0, #1\n"
267        "BL      sub_FFC5CD6C    \n"
268        "B       loc_FFC5C4BC\n"
269"loc_FFC5C360:\n"
270        "BL      sub_FFC5C750\n"
271        "B       loc_FFC5C34C\n"
272"loc_FFC5C368:\n"
273        "BL      sub_FFC5CAC4\n"
274        "B       loc_FFC5C34C\n"
275"loc_FFC5C370:\n"
276        "BL      sub_FFC5CACC\n"
277        "B       loc_FFC5C4BC\n"
278"loc_FFC5C378:\n"
279        "BL      sub_FFC5CC7C\n"
280        "B       loc_FFC5C3DC\n"
281"loc_FFC5C380:\n"
282        "LDR     R5, [R0,#0xC]\n"
283        "BL      sub_FFC5CAD4\n"
284        "MOV     R0, R5\n"
285        "BL      sub_FFD16E3C    \n"
286        "TST     R0, #1\n"
287        "MOV     R8, R0\n"
288        "BNE     loc_FFC5C3C0\n"
289        "BL      sub_FFC6C7F4    \n"
290        "STR     R0, [R5,#0x18]\n"
291        "MOV     R0, R5\n"
292        "BL      sub_FFD17E38    \n"
293        "MOV     R0, R5\n"
294        "BL      sub_FFD181E4    \n"
295        "MOV     R8, R0\n"
296        "LDR     R0, [R5,#0x18]\n"
297        "BL      sub_FFC6CA2C    \n"
298"loc_FFC5C3C0:\n"
299        "BL      sub_FFC5CAC4\n"
300        "MOV     R2, R5\n"
301        "MOV     R1, #9\n"
302        "MOV     R0, R8\n"
303"loc_FFC5C3D0:\n"
304        "BL      sub_FFC5A76C    \n"
305        "B       loc_FFC5C4BC\n"
306"loc_FFC5C3D8:\n"
307        "BL      sub_FFC5CCE4\n"
308"loc_FFC5C3DC:\n"
309        "BL      sub_FFC5A2F8\n"
310        "B       loc_FFC5C4BC\n"
311"loc_FFC5C3E4:\n"
312        "LDR     R0, [R4,#0x54]\n"
313        "BL      sub_FFC5D0CC    \n"
314        "B       loc_FFC5C4BC\n"
315"loc_FFC5C3F0:\n"
316        "BL      sub_FFC5D37C\n"
317        "B       loc_FFC5C4BC\n"
318"loc_FFC5C3F8:\n"
319        "BL      sub_FFC5D410\n"
320        "B       loc_FFC5C4BC\n"
321"loc_FFC5C400:\n"
322        "BL      sub_FFC5CAC4\n"
323        "B       loc_FFC5C4BC\n"
324"loc_FFC5C408:\n"
325        "BL      sub_FFD17068\n"
326        "B       loc_FFC5C4BC\n"
327"loc_FFC5C410:\n"
328        "BL      sub_FFD17260\n"
329        "B       loc_FFC5C4BC\n"
330"loc_FFC5C418:\n"
331        "BL      sub_FFD172F4\n"
332        "B       loc_FFC5C4BC\n"
333"loc_FFC5C420:\n"
334        "BL      sub_FFD173B4\n"
335        "B       loc_FFC5C4BC\n"
336"loc_FFC5C428:\n"
337        "MOV     R0, #0\n"
338        "BL      sub_FFD175AC\n"
339        "B       loc_FFC5C4BC\n"
340"loc_FFC5C434:\n"
341        "BL      sub_FFD176FC\n"
342        "B       loc_FFC5C4BC\n"
343"loc_FFC5C43C:\n"
344        "BL      sub_FFD1778C\n"
345        "B       loc_FFC5C4BC\n"
346"loc_FFC5C444:\n"
347        "BL      sub_FFD1784C\n"
348        "B       loc_FFC5C4BC\n"
349"loc_FFC5C44C:\n"
350        "BL      sub_FFC5CEC0\n"
351        "B       loc_FFC5C4BC\n"
352"loc_FFC5C454:\n"
353        "BL      sub_FFC5CF54\n"
354        "BL      sub_FFC26E20\n"
355        "B       loc_FFC5C4BC\n"
356"loc_FFC5C460:\n"
357        "BL      sub_FFD17480\n"
358        "B       loc_FFC5C4BC\n"
359"loc_FFC5C468:\n"
360        "BL      sub_FFD174C4\n"
361        "B       loc_FFC5C4BC\n"
362"loc_FFC5C470:\n"
363        "BL      sub_FFC5F0C4\n"
364        "B       loc_FFC5C4BC\n"
365"loc_FFC5C478:\n"
366        "BL      sub_FFC5F144\n"
367        "B       loc_FFC5C4BC\n"
368"loc_FFC5C480:\n"
369        "BL      sub_FFC5F1A0\n"
370        "BL      sub_FFC5F160\n"
371        "B       loc_FFC5C4BC\n"
372"loc_FFC5C48C:\n"
373        "LDRH    R0, [R4,#0x94]\n"
374        "CMP     R0, #4\n"
375        "LDRNEH  R0, [R4]\n"
376        "SUBNE   R12, R0, #0x8200\n"
377        "SUBNES  R12, R12, #0x2A\n"
378        "BNE     loc_FFC5C4BC\n"
379        "BL      sub_FFC5F144\n"
380        "BL      sub_FFC5F4E4\n"
381        "B       loc_FFC5C4BC\n"
382"loc_FFC5C4B0:\n"
383        "LDR     R1, =0x70B\n"
384        "LDR     R0, =0xFFC5BDA0\n"
385        "BL      sub_FFC0F5E8\n"
386"loc_FFC5C4BC:\n"
387        "LDR     R0, [SP]\n"
388        "LDR     R1, [R0,#4]\n"
389        "LDR     R0, [R6]\n"
390        "BL      sub_FFC28BE4\n"
391        "LDR     R5, [SP]\n"
392        "LDR     R0, [R5,#8]\n"
393        "CMP     R0, #0\n"
394        "LDREQ   R1, =0x132\n"
395        "LDREQ   R0, =0xFFC5BDA0\n"
396        "BLEQ    sub_FFC0F5E8\n"
397        "STR     R7, [R5,#8]\n"
398        "B       loc_FFC5C1FC\n"
399    );
400}
401void __attribute__((naked,noinline)) exp_drv_task(){
402 asm volatile(
403        "STMFD   SP!, {R4-R8,LR}\n"
404        "SUB     SP, SP, #0x20\n"
405        "LDR     R8, =0xBB8\n"
406        "LDR     R7, =0x3A24\n"
407        "LDR     R5, =0x3DA50\n"
408        "MOV     R0, #0\n"
409        "ADD     R6, SP, #0x10\n"
410        "STR     R0, [SP,#0xC]\n"
411"loc_FFC95068:\n"
412        "LDR     R0, [R7,#0x20]\n"
413        "MOV     R2, #0\n"
414        "ADD     R1, SP, #0x1C\n"
415        "BL      sub_FFC28E74    \n"
416        "LDR     R0, [SP,#0xC]\n"
417        "CMP     R0, #1\n"
418        "BNE     loc_FFC950B4\n"
419        "LDR     R0, [SP,#0x1C]\n"
420        "LDR     R0, [R0]\n"
421        "CMP     R0, #0x13\n"
422        "CMPNE   R0, #0x14\n"
423        "CMPNE   R0, #0x15\n"
424        "CMPNE   R0, #0x16\n"
425        "BEQ     loc_FFC95218\n"
426        "CMP     R0, #0x28\n"
427        "BEQ     loc_FFC951A0\n"
428        "ADD     R1, SP, #0xC\n"
429        "MOV     R0, #0\n"
430        "BL      sub_FFC94FF8    \n"
431"loc_FFC950B4:\n"
432        "LDR     R0, [SP,#0x1C]\n"
433        "LDR     R1, [R0]\n"
434        "CMP     R1, #0x2E\n"
435        "BNE     loc_FFC950E4\n"
436        "LDR     R0, [SP,#0x1C]\n"
437        "BL      sub_FFC96350    \n"
438        "LDR     R0, [R7,#0x1C]\n"
439        "MOV     R1, #1\n"
440        "BL      sub_FFC28BE4\n"
441        "BL      sub_FFC0F3A0    \n"
442        "ADD     SP, SP, #0x20\n"
443        "LDMFD   SP!, {R4-R8,PC}\n"
444"loc_FFC950E4:\n"
445        "CMP     R1, #0x2D\n"
446        "BNE     loc_FFC95100\n"
447        "LDR     R2, [R0,#0x8C]!\n"
448        "LDR     R1, [R0,#4]\n"
449        "MOV     R0, R1\n"
450        "BLX     R2\n"
451        "B       loc_FFC95640\n"
452"loc_FFC95100:\n"
453        "CMP     R1, #0x26\n"
454        "BNE     loc_FFC95150\n"
455        "LDR     R0, [R7,#0x1C]\n"
456        "MOV     R1, #0x80\n"
457        "BL      sub_FFC28C18\n"
458        "LDR     R0, =0xFFC917C4\n"
459        "MOV     R1, #0x80\n"
460        "BL      sub_FFD0C72C    \n"
461        "LDR     R0, [R7,#0x1C]\n"
462        "MOV     R2, R8\n"
463        "MOV     R1, #0x80\n"
464        "BL      sub_FFC28B24    \n"
465        "TST     R0, #1\n"
466        "LDRNE   R1, =0xE5F\n"
467        "BNE     loc_FFC9520C\n"
468"loc_FFC9513C:\n"
469        "LDR     R1, [SP,#0x1C]\n"
470        "LDR     R0, [R1,#0x90]\n"
471        "LDR     R1, [R1,#0x8C]\n"
472        "BLX     R1\n"
473        "B       loc_FFC95640\n"
474"loc_FFC95150:\n"
475        "CMP     R1, #0x27\n"
476        "BNE     loc_FFC95198\n"
477        "ADD     R1, SP, #0xC\n"
478        "BL      sub_FFC94FF8    \n"
479        "LDR     R0, [R7,#0x1C]\n"
480        "MOV     R1, #0x100\n"
481        "BL      sub_FFC28C18\n"
482        "LDR     R0, =0xFFC917D4\n"
483        "MOV     R1, #0x100\n"
484        "BL      sub_FFD0C9B4    \n"
485        "LDR     R0, [R7,#0x1C]\n"
486        "MOV     R2, R8\n"
487        "MOV     R1, #0x100\n"
488        "BL      sub_FFC28B24    \n"
489        "TST     R0, #1\n"
490        "BEQ     loc_FFC9513C\n"
491        "LDR     R1, =0xE69\n"
492        "B       loc_FFC9520C\n"
493"loc_FFC95198:\n"
494        "CMP     R1, #0x28\n"
495        "BNE     loc_FFC951B0\n"
496"loc_FFC951A0:\n"
497        "LDR     R0, [SP,#0x1C]\n"
498        "ADD     R1, SP, #0xC\n"
499        "BL      sub_FFC94FF8    \n"
500        "B       loc_FFC9513C\n"
501"loc_FFC951B0:\n"
502        "CMP     R1, #0x2B\n"
503        "BNE     loc_FFC951C8\n"
504        "BL      sub_FFC84B1C    \n"
505        "BL      sub_FFC85760    \n"
506        "BL      sub_FFC852B0    \n"
507        "B       loc_FFC9513C\n"
508"loc_FFC951C8:\n"
509        "CMP     R1, #0x2C\n"
510        "BNE     loc_FFC95218\n"
511        "LDR     R0, [R7,#0x1C]\n"
512        "MOV     R1, #4\n"
513        "BL      sub_FFC28C18\n"
514        "LDR     R1, =0xFFC917F4\n"
515        "LDR     R0, =0xFFFFF400\n"
516        "MOV     R2, #4\n"
517        "BL      sub_FFC84598\n"
518        "BL      sub_FFC84820    \n"
519        "LDR     R0, [R7,#0x1C]\n"
520        "MOV     R2, R8\n"
521        "MOV     R1, #4\n"
522        "BL      sub_FFC28A40    \n"
523        "TST     R0, #1\n"
524        "BEQ     loc_FFC9513C\n"
525        "LDR     R1, =0xE91\n"
526"loc_FFC9520C:\n"
527        "LDR     R0, =0xFFC91E34\n"
528        "BL      sub_FFC0F5E8\n"
529        "B       loc_FFC9513C\n"
530"loc_FFC95218:\n"
531        "LDR     R0, [SP,#0x1C]\n"
532        "MOV     R4, #1\n"
533        "LDR     R1, [R0]\n"
534        "CMP     R1, #0x11\n"
535        "CMPNE   R1, #0x12\n"
536        "BNE     loc_FFC95288\n"
537        "LDR     R1, [R0,#0x7C]\n"
538        "ADD     R1, R1, R1,LSL#1\n"
539        "ADD     R1, R0, R1,LSL#2\n"
540        "SUB     R1, R1, #8\n"
541        "LDMIA   R1, {R2-R4}\n"
542        "STMIA   R6, {R2-R4}\n"
543        "BL      sub_FFC93984\n"
544        "LDR     R0, [SP,#0x1C]\n"
545        "LDR     R1, [R0,#0x7C]\n"
546        "LDR     R3, [R0,#0x8C]\n"
547        "LDR     R2, [R0,#0x90]\n"
548        "ADD     R0, R0, #4\n"
549        "BLX     R3\n"
550        "LDR     R0, [SP,#0x1C]\n"
551        "BL      sub_FFC96718    \n"
552        "LDR     R0, [SP,#0x1C]\n"
553        "LDR     R1, [R0,#0x7C]\n"
554        "LDR     R3, [R0,#0x94]\n"
555        "LDR     R2, [R0,#0x98]\n"
556        "ADD     R0, R0, #4\n"
557        "BLX     R3\n"
558        "B       loc_FFC95580\n"
559"loc_FFC95288:\n"
560        "CMP     R1, #0x13\n"
561        "CMPNE   R1, #0x14\n"
562        "CMPNE   R1, #0x15\n"
563        "CMPNE   R1, #0x16\n"
564        "BNE     loc_FFC95340\n"
565        "ADD     R3, SP, #0xC\n"
566        "MOV     R2, SP\n"
567        "ADD     R1, SP, #0x10\n"
568        "BL      sub_FFC93C60    \n"
569        "CMP     R0, #1\n"
570        "MOV     R4, R0\n"
571        "CMPNE   R4, #5\n"
572        "BNE     loc_FFC952DC\n"
573        "LDR     R0, [SP,#0x1C]\n"
574        "MOV     R2, R4\n"
575        "LDR     R1, [R0,#0x7C]!\n"
576        "LDR     R12, [R0,#0x10]!\n"
577        "LDR     R3, [R0,#4]\n"
578        "MOV     R0, SP\n"
579        "BLX     R12\n"
580        "B       loc_FFC95314\n"
581"loc_FFC952DC:\n"
582        "LDR     R0, [SP,#0x1C]\n"
583        "CMP     R4, #2\n"
584        "LDR     R3, [R0,#0x90]\n"
585        "CMPNE   R4, #6\n"
586        "BNE     loc_FFC95328\n"
587        "LDR     R12, [R0,#0x8C]\n"
588        "MOV     R0, SP\n"
589        "MOV     R2, R4\n"
590        "MOV     R1, #1\n"
591        "BLX     R12\n"
592        "LDR     R0, [SP,#0x1C]\n"
593        "MOV     R2, SP\n"
594        "ADD     R1, SP, #0x10\n"
595        "BL      sub_FFC94D00    \n"
596"loc_FFC95314:\n"
597        "LDR     R0, [SP,#0x1C]\n"
598        "LDR     R2, [SP,#0xC]\n"
599        "MOV     R1, R4\n"
600        "BL      sub_FFC94F98    \n"
601        "B       loc_FFC95580\n"
602"loc_FFC95328:\n"
603        "LDR     R1, [R0,#0x7C]\n"
604        "LDR     R12, [R0,#0x8C]\n"
605        "ADD     R0, R0, #4\n"
606        "MOV     R2, R4\n"
607        "BLX     R12\n"
608        "B       loc_FFC95580\n"
609"loc_FFC95340:\n"
610        "CMP     R1, #0x22\n"
611        "CMPNE   R1, #0x23\n"
612        "BNE     loc_FFC9538C\n"
613        "LDR     R1, [R0,#0x7C]\n"
614        "ADD     R1, R1, R1,LSL#1\n"
615        "ADD     R1, R0, R1,LSL#2\n"
616        "SUB     R1, R1, #8\n"
617        "LDMIA   R1, {R2-R4}\n"
618        "STMIA   R6, {R2-R4}\n"
619        "BL      sub_FFC92ED4    \n"
620        "LDR     R0, [SP,#0x1C]\n"
621        "LDR     R1, [R0,#0x7C]\n"
622        "LDR     R3, [R0,#0x8C]\n"
623        "LDR     R2, [R0,#0x90]\n"
624        "ADD     R0, R0, #4\n"
625        "BLX     R3\n"
626        "LDR     R0, [SP,#0x1C]\n"
627        "BL      sub_FFC931C8    \n"
628        "B       loc_FFC95580\n"
629"loc_FFC9538C:\n"
630        "ADD     R1, R0, #4\n"
631        "LDMIA   R1, {R2,R3,R12}\n"
632        "STMIA   R6, {R2,R3,R12}\n"
633        "LDR     R1, [R0]\n"
634        "CMP     R1, #0x25\n"
635        "ADDLS   PC, PC, R1,LSL#2\n"
636        "B       loc_FFC95560\n"
637"loc_FFC953A8:\n"
638        "B       loc_FFC95440\n"
639"loc_FFC953AC:\n"
640        "B       loc_FFC95440\n"
641"loc_FFC953B0:\n"
642        "B       loc_FFC95448\n"
643"loc_FFC953B4:\n"
644        "B       loc_FFC95450\n"
645"loc_FFC953B8:\n"
646        "B       loc_FFC95450\n"
647"loc_FFC953BC:\n"
648        "B       loc_FFC95450\n"
649"loc_FFC953C0:\n"
650        "B       loc_FFC95440\n"
651"loc_FFC953C4:\n"
652        "B       loc_FFC95448\n"
653"loc_FFC953C8:\n"
654        "B       loc_FFC95450\n"
655"loc_FFC953CC:\n"
656        "B       loc_FFC95450\n"
657"loc_FFC953D0:\n"
658        "B       loc_FFC95468\n"
659"loc_FFC953D4:\n"
660        "B       loc_FFC95468\n"
661"loc_FFC953D8:\n"
662        "B       loc_FFC95554\n"
663"loc_FFC953DC:\n"
664        "B       loc_FFC9555C\n"
665"loc_FFC953E0:\n"
666        "B       loc_FFC9555C\n"
667"loc_FFC953E4:\n"
668        "B       loc_FFC9555C\n"
669"loc_FFC953E8:\n"
670        "B       loc_FFC9555C\n"
671"loc_FFC953EC:\n"
672        "B       loc_FFC95560\n"
673"loc_FFC953F0:\n"
674        "B       loc_FFC95560\n"
675"loc_FFC953F4:\n"
676        "B       loc_FFC95560\n"
677"loc_FFC953F8:\n"
678        "B       loc_FFC95560\n"
679"loc_FFC953FC:\n"
680        "B       loc_FFC95560\n"
681"loc_FFC95400:\n"
682        "B       loc_FFC95560\n"
683"loc_FFC95404:\n"
684        "B       loc_FFC95458\n"
685"loc_FFC95408:\n"
686        "B       loc_FFC95460\n"
687"loc_FFC9540C:\n"
688        "B       loc_FFC95460\n"
689"loc_FFC95410:\n"
690        "B       loc_FFC95474\n"
691"loc_FFC95414:\n"
692        "B       loc_FFC95474\n"
693"loc_FFC95418:\n"
694        "B       loc_FFC9547C\n"
695"loc_FFC9541C:\n"
696        "B       loc_FFC954AC\n"
697"loc_FFC95420:\n"
698        "B       loc_FFC954DC\n"
699"loc_FFC95424:\n"
700        "B       loc_FFC9550C\n"
701"loc_FFC95428:\n"
702        "B       loc_FFC9553C\n"
703"loc_FFC9542C:\n"
704        "B       loc_FFC9553C\n"
705"loc_FFC95430:\n"
706        "B       loc_FFC95560\n"
707"loc_FFC95434:\n"
708        "B       loc_FFC95560\n"
709"loc_FFC95438:\n"
710        "B       loc_FFC95544\n"
711"loc_FFC9543C:\n"
712        "B       loc_FFC9554C\n"
713"loc_FFC95440:\n"
714        "BL      sub_FFC91CDC\n"
715        "B       loc_FFC95560\n"
716"loc_FFC95448:\n"
717        "BL      sub_FFC91F60\n"
718        "B       loc_FFC95560\n"
719"loc_FFC95450:\n"
720        "BL      sub_FFC92168\n"
721        "B       loc_FFC95560\n"
722"loc_FFC95458:\n"
723        "BL      sub_FFC923E0\n"
724        "B       loc_FFC95560\n"
725"loc_FFC95460:\n"
726        "BL      sub_FFC925D8\n"
727        "B       loc_FFC95560\n"
728"loc_FFC95468:\n" //10,11
729        //"BL      sub_FFC92894\n"
730                "BL      sub_FFC92894_my\n" // ----------------------->
731        "MOV     R4, #0\n"
732        "B       loc_FFC95560\n"
733"loc_FFC95474:\n"
734        "BL      sub_FFC929D4\n"
735        "B       loc_FFC95560\n"
736"loc_FFC9547C:\n"
737        "LDRH    R1, [R0,#4]\n"
738        "STRH    R1, [SP,#0x10]\n"
739        "LDRH    R1, [R5,#2]\n"
740        "STRH    R1, [SP,#0x12]\n"
741        "LDRH    R1, [R5,#4]\n"
742        "STRH    R1, [SP,#0x14]\n"
743        "LDRH    R1, [R5,#6]\n"
744        "STRH    R1, [SP,#0x16]\n"
745        "LDRH    R1, [R0,#0xC]\n"
746        "STRH    R1, [SP,#0x18]\n"
747        "BL      sub_FFC963C4    \n"
748        "B       loc_FFC95560\n"
749"loc_FFC954AC:\n"
750        "LDRH    R1, [R0,#4]\n"
751        "STRH    R1, [SP,#0x10]\n"
752        "LDRH    R1, [R5,#2]\n"
753        "STRH    R1, [SP,#0x12]\n"
754        "LDRH    R1, [R5,#4]\n"
755        "STRH    R1, [SP,#0x14]\n"
756        "LDRH    R1, [R5,#6]\n"
757        "STRH    R1, [SP,#0x16]\n"
758        "LDRH    R1, [R5,#8]\n"
759        "STRH    R1, [SP,#0x18]\n"
760        "BL      sub_FFC96530    \n"
761        "B       loc_FFC95560\n"
762"loc_FFC954DC:\n"
763        "LDRH    R1, [R5]\n"
764        "STRH    R1, [SP,#0x10]\n"
765        "LDRH    R1, [R0,#6]\n"
766        "STRH    R1, [SP,#0x12]\n"
767        "LDRH    R1, [R5,#4]\n"
768        "STRH    R1, [SP,#0x14]\n"
769        "LDRH    R1, [R5,#6]\n"
770        "STRH    R1, [SP,#0x16]\n"
771        "LDRH    R1, [R5,#8]\n"
772        "STRH    R1, [SP,#0x18]\n"
773        "BL      sub_FFC965DC    \n"
774        "B       loc_FFC95560\n"
775"loc_FFC9550C:\n"
776        "LDRH    R1, [R5]\n"
777        "STRH    R1, [SP,#0x10]\n"
778        "LDRH    R1, [R5,#2]\n"
779        "STRH    R1, [SP,#0x12]\n"
780        "LDRH    R1, [R5,#4]\n"
781        "STRH    R1, [SP,#0x14]\n"
782        "LDRH    R1, [R5,#6]\n"
783        "STRH    R1, [SP,#0x16]\n"
784        "LDRH    R1, [R0,#0xC]\n"
785        "STRH    R1, [SP,#0x18]\n"
786        "BL      sub_FFC9667C    \n"
787        "B       loc_FFC95560\n"
788"loc_FFC9553C:\n"
789        "BL      sub_FFC92D2C\n"
790        "B       loc_FFC95560\n"
791"loc_FFC95544:\n"
792        "BL      sub_FFC932CC\n"
793        "B       loc_FFC95560\n"
794"loc_FFC9554C:\n"
795        "BL      sub_FFC93508\n"
796        "B       loc_FFC95560\n"
797"loc_FFC95554:\n"
798        "BL      sub_FFC93684\n"
799        "B       loc_FFC95560\n"
800"loc_FFC9555C:\n"
801        "BL      sub_FFC93820\n"
802"loc_FFC95560:\n"
803        "LDR     R0, [SP,#0x1C]\n"
804        "LDR     R1, [R0,#0x7C]\n"
805        "LDR     R3, [R0,#0x8C]\n"
806        "LDR     R2, [R0,#0x90]\n"
807        "ADD     R0, R0, #4\n"
808        "BLX     R3\n"
809        "CMP     R4, #1\n"
810        "BNE     loc_FFC955C8\n"
811"loc_FFC95580:\n"
812        "LDR     R0, [SP,#0x1C]\n"
813        "MOV     R2, #0xC\n"
814        "LDR     R1, [R0,#0x7C]\n"
815        "ADD     R1, R1, R1,LSL#1\n"
816        "ADD     R0, R0, R1,LSL#2\n"
817        "SUB     R4, R0, #8\n"
818        "LDR     R0, =0x3DA50\n"
819        "ADD     R1, SP, #0x10\n"
820        "BL      sub_FFE8D5DC\n"
821        "LDR     R0, =0x3DA5C\n"
822        "MOV     R2, #0xC\n"
823        "ADD     R1, SP, #0x10\n"
824        "BL      sub_FFE8D5DC\n"
825        "LDR     R0, =0x3DA68\n"
826        "MOV     R2, #0xC\n"
827        "MOV     R1, R4\n"
828        "BL      sub_FFE8D5DC\n"
829        "B       loc_FFC95640\n"
830"loc_FFC955C8:\n"
831        "LDR     R0, [SP,#0x1C]\n"
832        "LDR     R0, [R0]\n"
833        "CMP     R0, #0xB\n"
834        "BNE     loc_FFC95610\n"
835        "MOV     R3, #0\n"
836        "STR     R3, [SP]\n"
837        "MOV     R3, #1\n"
838        "MOV     R2, #1\n"
839        "MOV     R1, #1\n"
840        "MOV     R0, #0\n"
841        "BL      sub_FFC91AE4\n"
842        "MOV     R3, #0\n"
843        "STR     R3, [SP]\n"
844        "MOV     R3, #1\n"
845        "MOV     R2, #1\n"
846        "MOV     R1, #1\n"
847        "MOV     R0, #0\n"
848        "B       loc_FFC9563C\n"
849"loc_FFC95610:\n"
850        "MOV     R3, #1\n"
851        "MOV     R2, #1\n"
852        "MOV     R1, #1\n"
853        "MOV     R0, #1\n"
854        "STR     R3, [SP]\n"
855        "BL      sub_FFC91AE4\n"
856        "MOV     R3, #1\n"
857        "MOV     R2, #1\n"
858        "MOV     R1, #1\n"
859        "MOV     R0, #1\n"
860        "STR     R3, [SP]\n"
861"loc_FFC9563C:\n"
862        "BL      sub_FFC91C24\n"
863"loc_FFC95640:\n"
864        "LDR     R0, [SP,#0x1C]\n"
865        "BL      sub_FFC96350    \n"
866        "B       loc_FFC95068\n"
867  );
868}
869
870void __attribute__((naked,noinline)) sub_FFC92894_my(){
871 asm volatile(
872        "STMFD   SP!, {R4-R8,LR}\n"
873        "LDR     R7, =0x3A24\n"
874        "MOV     R4, R0\n"
875        "LDR     R0, [R7,#0x1C]\n"
876        "MOV     R1, #0x3E\n"
877        "BL      sub_FFC28C18\n"
878        "LDRSH   R0, [R4,#4]\n"
879        "MOV     R2, #0\n"
880        "MOV     R1, #0\n"
881        "BL      sub_FFC91848\n"
882        "MOV     R6, R0\n"
883        "LDRSH   R0, [R4,#6]\n"
884        "BL      sub_FFC91958\n"
885        "LDRSH   R0, [R4,#8]\n"
886        "BL      sub_FFC919B0\n"
887        "LDRSH   R0, [R4,#0xA]\n"
888        "BL      sub_FFC91A08\n"
889        "LDRSH   R0, [R4,#0xC]\n"
890        "MOV     R1, #0\n"
891        "BL      sub_FFC91A60\n"
892        "MOV     R5, R0\n"
893        "LDR     R0, [R4]\n"
894        "LDR     R8, =0x3DA68\n"
895        "CMP     R0, #0xB\n"
896        "MOVEQ   R6, #0\n"
897        "MOVEQ   R5, #0\n"
898        "BEQ     loc_FFC92928\n"
899        "CMP     R6, #1\n"
900        "BNE     loc_FFC92928\n"
901        "LDRSH   R0, [R4,#4]\n"
902        "LDR     R1, =0xFFC917B4\n"
903        "MOV     R2, #2\n"
904        "BL      sub_FFD0C880    \n"
905        "STRH    R0, [R4,#4]\n"
906        "MOV     R0, #0\n"
907        "STR     R0, [R7,#0x28]\n"
908        "B       loc_FFC92930\n"
909"loc_FFC92928:\n"
910        "LDRH    R0, [R8]\n"
911        "STRH    R0, [R4,#4]\n"
912"loc_FFC92930:\n"
913        "CMP     R5, #1\n"
914        "LDRNEH  R0, [R8,#8]\n"
915        "BNE     loc_FFC9294C\n"
916        "LDRSH   R0, [R4,#0xC]\n"
917        "LDR     R1, =0xFFC91838\n"
918        "MOV     R2, #0x20\n"
919        "BL      sub_FFC96380\n"
920"loc_FFC9294C:\n"
921        "STRH    R0, [R4,#0xC]\n"
922        "LDRSH   R0, [R4,#6]\n"
923        //"BL      sub_FFC8488C    \n"
924                                "BL      sub_FFC8488C_my    \n" // ------------->
925        "LDRSH   R0, [R4,#8]\n"
926        "MOV     R1, #1\n"
927        "BL      sub_FFC84FF8    \n"
928        "MOV     R1, #0\n"
929        "ADD     R0, R4, #8\n"
930        "BL      sub_FFC85080    \n"
931        "LDRSH   R0, [R4,#0xE]\n"
932        "BL      sub_FFC8CB40    \n"
933        "LDR     R4, =0xBB8\n"
934        "CMP     R6, #1\n"
935        "BNE     loc_FFC929A4\n"
936        "LDR     R0, [R7,#0x1C]\n"
937        "MOV     R2, R4\n"
938        "MOV     R1, #2\n"
939        "BL      sub_FFC28B24    \n"
940        "TST     R0, #1\n"
941        "LDRNE   R1, =0x5A3\n"
942        "LDRNE   R0, =0xFFC91E34\n"
943        "BLNE    sub_FFC0F5E8\n"
944"loc_FFC929A4:\n"
945        "CMP     R5, #1\n"
946        "LDMNEFD SP!, {R4-R8,PC}\n"
947        "LDR     R0, [R7,#0x1C]\n"
948        "MOV     R2, R4\n"
949        "MOV     R1, #0x20\n"
950        "BL      sub_FFC28B24    \n"
951        "TST     R0, #1\n"
952        "LDRNE   R1, =0x5A8\n"
953        "LDRNE   R0, =0xFFC91E34\n"
954        "LDMNEFD SP!, {R4-R8,LR}\n"
955        "BNE     sub_FFC0F5E8\n"
956        "LDMFD   SP!, {R4-R8,PC}\n"
957
958  );
959}
960
961void __attribute__((naked,noinline)) sub_FFC8488C_my(){
962 asm volatile(
963        "STMFD   SP!, {R4-R6,LR}\n"
964        "LDR     R5, =0x3718\n"
965        "MOV     R4, R0\n"
966        "LDR     R0, [R5,#4]\n"
967        "CMP     R0, #1\n"
968        "LDRNE   R1, =0x146\n"
969        "LDRNE   R0, =0xFFC84690\n"
970        "BLNE    sub_FFC0F5E8\n"
971        "CMN     R4, #0xC00\n"
972        "LDREQSH R4, [R5,#2]\n"
973        "CMN     R4, #0xC00\n"
974        "MOVEQ   R1, #0x14C\n"
975        "LDREQ   R0, =0xFFC84690\n"
976        "STRH    R4, [R5,#2]\n"
977        "BLEQ    sub_FFC0F5E8\n"
978        "MOV     R0, R4\n"
979        //"BL      sub_FFD880EC \n"
980        "BL      apex2us\n" // +
981        "MOV     R4, R0\n"
982        "BL      sub_FFCB7570\n"
983        "MOV     R0, R4\n"
984        "BL      sub_FFCBBC00\n"
985        "TST     R0, #1\n"
986        "LDRNE   R1, =0x151\n"
987        "LDMNEFD SP!, {R4-R6,LR}\n"
988        "LDRNE   R0, =0xFFC84690\n"
989        "BNE     sub_FFC0F5E8\n"
990        "LDMFD   SP!, {R4-R6,PC}\n"
991  );
992}
993
Note: See TracBrowser for help on using the repository browser.