This source file includes following definitions.
- blink
- taskCreateHook
- CreateTask_spytask
- boot
- loc_FFC001A0_my
- sub_FFC00FC4_my
- sub_FFC04B50_my
- taskcreate_Startup_my
- task_Startup_my
- init_file_modules_task
- sub_FFC6158C_my
- sub_FFC45524_my
- sub_FFC45108_my
- sub_FFC44E00_my
- JogDial_task_my
1 #include "lolevel.h"
2 #include "platform.h"
3 #include "core.h"
4
5
6 #define LED_AF 0xC022000C
7 #define LED_ORANGE 0xC0220010
8 #define LED_GREEN 0xC0220014
9
10 #define DELAY 10000000
11
12 void __attribute__((naked,noinline)) blink()
13 {
14 asm volatile (
15
16 "B start\n""b10: .long 0\n""b11: .long 0\n""b12: .long 0\n""STR R10, b10\n""STR R11, b11\n""STR R12, b12\n"
17 "start: LDR R12, =0xC022000C\n"
18 "LDR R10, =0xFFFFF\n"
19 "MOV R11, #0x46\n"
20 "STR R11, [R12]\n"
21 "check: CMP R10, #0\n"
22 "BEQ off\n"
23 "SUB R10, R10, #1\n"
24 "B check\n"
25 "off: MOV R11, #0x44\n"
26 "STR R11, [R12]\n"
27 "LDR R10, b10\n""LDR R11, b11\n""LDR R12, b12\n"
28 "MOV pc,lr\n"
29
30 );
31 }
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 const char * const new_sa = &_end;
55
56 void JogDial_task_my(void);
57
58 void taskCreateHook(int *p) {
59 p-=17;
60 if (p[0]==(int)0xFFC4F640) p[0]=(int)capt_seq_task;
61 if (p[0]==(int)0xFFC11638) p[0]=(int)mykbd_task;
62 if (p[0]==(int)0xFFC696AC) p[0]=(int)init_file_modules_task;
63 if (p[0]==(int)0xFFC37070) p[0]=(int)JogDial_task_my;
64 if (p[0]==(int)0xFFD144F0) p[0]=(int)movie_record_task;
65 if (p[0]==(int)0xFFC86E80) p[0]=(int)exp_drv_task;
66 if (p[0]==(int)0xFFDFA744) p[0]=(int)filewritetask;
67 }
68
69 void CreateTask_spytask() {
70 _CreateTask("SpyTask", 0x19, 0x2000, core_spytask, 0);
71 };
72
73
74 void __attribute__((naked,noinline)) boot() {
75 asm volatile (
76 "LDR R1, =0xC0410000\n"
77 "MOV R0, #0\n"
78 "STR R0, [R1]\n"
79 "MOV R1, #0x78\n"
80 "MCR p15, 0, R1,c1,c0\n"
81 "MOV R1, #0\n"
82 "MCR p15, 0, R1,c7,c10, 4\n"
83 "MCR p15, 0, R1,c7,c5\n"
84 "MCR p15, 0, R1,c7,c6\n"
85 "MOV R0, #0x3D\n"
86 "MCR p15, 0, R0,c6,c0\n"
87 "MOV R0, #0xC000002F\n"
88 "MCR p15, 0, R0,c6,c1\n"
89 "MOV R0, #0x33\n"
90 "MCR p15, 0, R0,c6,c2\n"
91 "MOV R0, #0x40000033\n"
92 "MCR p15, 0, R0,c6,c3\n"
93 "MOV R0, #0x80000017\n"
94 "MCR p15, 0, R0,c6,c4\n"
95 "LDR R0, =0xFFC0002B\n"
96 "MCR p15, 0, R0,c6,c5\n"
97 "MOV R0, #0x34\n"
98 "MCR p15, 0, R0,c2,c0\n"
99 "MOV R0, #0x34\n"
100 "MCR p15, 0, R0,c2,c0, 1\n"
101 "MOV R0, #0x34\n"
102 "MCR p15, 0, R0,c3,c0\n"
103 "LDR R0, =0x3333330\n"
104 "MCR p15, 0, R0,c5,c0, 2\n"
105 "LDR R0, =0x3333330\n"
106 "MCR p15, 0, R0,c5,c0, 3\n"
107 "MRC p15, 0, R0,c1,c0\n"
108 "ORR R0, R0, #0x1000\n"
109 "ORR R0, R0, #4\n"
110 "ORR R0, R0, #1\n"
111 "MCR p15, 0, R0,c1,c0\n"
112 "MOV R1, #0x80000006\n"
113 "MCR p15, 0, R1,c9,c1\n"
114 "MOV R1, #6\n"
115 "MCR p15, 0, R1,c9,c1, 1\n"
116 "MRC p15, 0, R1,c1,c0\n"
117 "ORR R1, R1, #0x50000\n"
118 "MCR p15, 0, R1,c1,c0\n"
119 "LDR R2, =0xC0200000\n"
120 "MOV R1, #1\n"
121 "STR R1, [R2,#0x10C]\n"
122 "MOV R1, #0xFF\n"
123 "STR R1, [R2,#0xC]\n"
124 "STR R1, [R2,#0x1C]\n"
125 "STR R1, [R2,#0x2C]\n"
126 "STR R1, [R2,#0x3C]\n"
127 "STR R1, [R2,#0x4C]\n"
128 "STR R1, [R2,#0x5C]\n"
129 "STR R1, [R2,#0x6C]\n"
130 "STR R1, [R2,#0x7C]\n"
131 "STR R1, [R2,#0x8C]\n"
132 "STR R1, [R2,#0x9C]\n"
133 "STR R1, [R2,#0xAC]\n"
134 "STR R1, [R2,#0xBC]\n"
135 "STR R1, [R2,#0xCC]\n"
136 "STR R1, [R2,#0xDC]\n"
137 "STR R1, [R2,#0xEC]\n"
138 "STR R1, [R2,#0xFC]\n"
139 "LDR R1, =0xC0400008\n"
140 "LDR R2, =0x430005\n"
141 "STR R2, [R1]\n"
142 "MOV R1, #1\n"
143 "LDR R2, =0xC0243100\n"
144 "STR R2, [R1]\n"
145 "LDR R2, =0xC0242010\n"
146 "LDR R1, [R2]\n"
147 "ORR R1, R1, #1\n"
148 "STR R1, [R2]\n"
149 "LDR R0, =0xFFF06D78\n"
150 "LDR R1, =0x1900\n"
151 "LDR R3, =0xBCC4\n"
152
153 "loc_FFC0013C:\n"
154 "CMP R1, R3\n"
155 "LDRCC R2, [R0],#4\n"
156 "STRCC R2, [R1],#4\n"
157 "BCC loc_FFC0013C\n"
158 "LDR R1, =0x10A6AC\n"
159 "MOV R2, #0\n"
160
161 "loc_FFC00154:\n"
162 "CMP R3, R1\n"
163 "STRCC R2, [R3],#4\n"
164 "BCC loc_FFC00154\n"
165 "B loc_FFC001A0_my\n"
166 );
167 };
168
169
170 void __attribute__((naked,noinline)) loc_FFC001A0_my() {
171 *(int*)0x1934=(int)taskCreateHook;
172 *(int*)0x1938=(int)taskCreateHook;
173 *(int*)(0x24BC+0x4) = (*(int*)0xC0220118)&1 ? 0x100000: 0x200000;
174
175 asm volatile (
176 "LDR R0, =0xFFC00218\n"
177 "MOV R1, #0\n"
178 "LDR R3, =0xFFC00250\n"
179 "loc_FFC001AC:\n"
180 "CMP R0, R3\n"
181 "LDRCC R2, [R0],#4\n"
182 "STRCC R2, [R1],#4\n"
183 "BCC loc_FFC001AC\n"
184 "LDR R0, =0xFFC00250\n"
185 "MOV R1, #0x4B0\n"
186 "LDR R3, =0xFFC00464\n"
187 "loc_FFC001C8:\n"
188 "CMP R0, R3\n"
189 "LDRCC R2, [R0],#4\n"
190 "STRCC R2, [R1],#4\n"
191 "BCC loc_FFC001C8\n"
192 "MOV R0, #0xD2\n"
193 "MSR CPSR_cxsf, R0\n"
194 "MOV SP, #0x1000\n"
195 "MOV R0, #0xD3\n"
196 "MSR CPSR_cxsf, R0\n"
197 "MOV SP, #0x1000\n"
198 "LDR R0, =0x6C4\n"
199 "LDR R2, =0xEEEEEEEE\n"
200 "MOV R3, #0x1000\n"
201 "loc_FFC001FC:\n"
202 "CMP R0, R3\n"
203 "STRCC R2, [R0],#4\n"
204 "BCC loc_FFC001FC\n"
205 "BL sub_FFC00FC4_my\n"
206 );
207 }
208
209
210 void __attribute__((naked,noinline)) sub_FFC00FC4_my() {
211 asm volatile (
212 "STR LR, [SP,#-4]!\n"
213 "SUB SP, SP, #0x74\n"
214 "MOV R0, SP\n"
215 "MOV R1, #0x74\n"
216 "BL sub_FFE90DB4\n"
217 "MOV R0, #0x53000\n"
218 "STR R0, [SP,#4]\n"
219
220 #if defined(CHDK_NOT_IN_CANON_HEAP)
221 "LDR R0, =0x10A6AC\n"
222 #else
223 "LDR R0, =new_sa\n"
224 "LDR R0, [R0]\n"
225 #endif
226
227 "LDR R2, =0x2F9C00\n"
228 "LDR R1, =0x2F24A8\n"
229 "STR R0, [SP,#8]\n"
230 "SUB R0, R1, R0\n"
231 "ADD R3, SP, #0xC\n"
232 "STR R2, [SP]\n"
233 "STMIA R3, {R0-R2}\n"
234 "MOV R0, #0x22\n"
235 "STR R0, [SP,#0x18]\n"
236 "MOV R0, #0x68\n"
237 "STR R0, [SP,#0x1C]\n"
238 "LDR R0, =0x19B\n"
239 "LDR R1, =sub_FFC04B50_my\n"
240 "STR R0, [SP,#0x20]\n"
241 "MOV R0, #0x96\n"
242 "STR R0, [SP,#0x24]\n"
243 "MOV R0, #0x78\n"
244 "STR R0, [SP,#0x28]\n"
245 "MOV R0, #0x64\n"
246 "STR R0, [SP,#0x2C]\n"
247 "MOV R0, #0\n"
248 "STR R0, [SP,#0x30]\n"
249 "STR R0, [SP,#0x34]\n"
250 "MOV R0, #0x10\n"
251 "STR R0, [SP,#0x5C]\n"
252 "MOV R0, #0x800\n"
253 "STR R0, [SP,#0x60]\n"
254 "MOV R0, #0xA0\n"
255 "STR R0, [SP,#0x64]\n"
256 "MOV R0, #0x280\n"
257 "STR R0, [SP,#0x68]\n"
258 "MOV R0, SP\n"
259 "MOV R2, #0\n"
260 "BL sub_FFC02B40\n"
261 "ADD SP, SP, #0x74\n"
262 "LDR PC, [SP],#4\n"
263 );
264 }
265
266 void __attribute__((naked,noinline)) sub_FFC04B50_my() {
267 asm volatile (
268 "STMFD SP!, {R4,LR}\n"
269 "BL sub_FFC00954\n"
270 "BL sub_FFC08E64\n"
271 "CMP R0, #0\n"
272 "LDRLT R0, =0xFFC04C64\n"
273 "BLLT sub_FFC04C44\n"
274 "BL sub_FFC0478C\n"
275 "CMP R0, #0\n"
276 "LDRLT R0, =0xFFC04C6C\n"
277 "BLLT sub_FFC04C44\n"
278 "LDR R0, =0xFFC04C7C\n"
279 "BL sub_FFC04874\n"
280 "CMP R0, #0\n"
281 "LDRLT R0, =0xFFC04C84\n"
282 "BLLT sub_FFC04C44\n"
283 "LDR R0, =0xFFC04C7C\n"
284 "BL sub_FFC0333C\n"
285 "CMP R0, #0\n"
286 "LDRLT R0, =0xFFC04C98\n"
287 "BLLT sub_FFC04C44\n"
288 "BL sub_FFC08878\n"
289 "CMP R0, #0\n"
290 "LDRLT R0, =0xFFC04CA4\n"
291 "BLLT sub_FFC04C44\n"
292 "BL sub_FFC014A8\n"
293 "CMP R0, #0\n"
294 "LDRLT R0, =0xFFC04CB0\n"
295 "BLLT sub_FFC04C44\n"
296 "LDMFD SP!, {R4,LR}\n"
297 "B taskcreate_Startup_my\n"
298 );
299 };
300
301 void __attribute__((naked,noinline)) taskcreate_Startup_my() {
302 asm volatile (
303 "STMFD SP!, {R3,LR}\n"
304 "BL sub_FFC11774\n"
305 "BL sub_FFC188AC\n"
306 "CMP R0, #0\n"
307 "BNE loc_FFC0C060\n"
308 "BL sub_FFC11770\n"
309 "CMP R0, #0\n"
310 "BNE loc_FFC0C060\n"
311 "BL sub_FFC10E3C\n"
312 "LDR R1, =0xC0220000\n"
313 "MOV R0, #0x44\n"
314 "STR R0, [R1,#0x84]\n"
315 "STR R0, [R1,#0x80]\n"
316 "BL sub_FFC11030\n"
317 "loc_FFC0C05C:\n"
318 "B loc_FFC0C05C\n"
319 "loc_FFC0C060:\n"
320
321 "BL sub_FFC11778\n"
322 "BL sub_FFC16B68\n"
323 "LDR R1, =0x34E000\n"
324 "MOV R0, #0\n"
325 "BL sub_FFC16FB0\n"
326 "BL sub_FFC16D5C\n"
327 "MOV R3, #0\n"
328 "STR R3, [SP]\n"
329 "LDR R3, =task_Startup_my\n"
330 "MOV R2, #0\n"
331 "MOV R1, #0x19\n"
332 "LDR R0, =0xFFC0C0A8\n"
333 "BL sub_FFC0AD70\n"
334 "MOV R0, #0\n"
335 "LDMFD SP!, {R12,PC}\n"
336 );
337 }
338
339 void __attribute__((naked,noinline)) task_Startup_my() {
340 asm volatile (
341 "STMFD SP!, {R4,LR}\n"
342 "BL sub_FFC051AC\n"
343 "BL sub_FFC12850\n"
344 "BL sub_FFC10AC8\n"
345 "BL sub_FFC188EC\n"
346 "BL sub_FFC18AD0\n"
347
348 "BL sub_FFC18C6C\n"
349 "BL sub_FFC0FBB0\n"
350 "BL sub_FFC18B00\n"
351 "BL sub_FFC1630C\n"
352 "BL sub_FFC18C70\n"
353 "BL CreateTask_spytask\n"
354 "BL sub_FFC1166C\n"
355 "BL sub_FFC146C0\n"
356 "BL sub_FFC18C88\n"
357 "BL sub_FFC0EEE8\n"
358 "BL sub_FFC104AC\n"
359 "BL sub_FFC18690\n"
360 "BL sub_FFC10A7C\n"
361 "BL sub_FFC103D0\n"
362 "BL sub_FFC0FBE4\n"
363 "BL sub_FFC196E4\n"
364 "BL sub_FFC103A8\n"
365 "LDMFD SP!, {R4,LR}\n"
366 "B sub_FFC052CC\n"
367 );
368 }
369
370
371 void __attribute__((naked,noinline)) init_file_modules_task() {
372 asm volatile(
373 "STMFD SP!, {R4-R6,LR}\n"
374 "BL sub_FFC61560\n"
375 "LDR R5, =0x5006\n"
376 "MOVS R4, R0\n"
377 "MOVNE R1, #0\n"
378 "MOVNE R0, R5\n"
379 "BLNE sub_FFC63DA8\n"
380 "BL sub_FFC6158C_my\n"
381 "BL core_spytask_can_start\n"
382 "CMP R4, #0\n"
383 "MOVEQ R0, R5\n"
384 "LDMEQFD SP!, {R4-R6,LR}\n"
385 "MOVEQ R1, #0\n"
386 "BEQ sub_FFC63DA8\n"
387 "LDMFD SP!, {R4-R6,PC}\n"
388 );
389 }
390
391
392 void __attribute__((naked,noinline)) sub_FFC6158C_my() {
393 asm volatile(
394 "STMFD SP!, {R4,LR}\n"
395 "MOV R0, #3\n"
396 "BL sub_FFC45524_my\n"
397 "BL sub_FFCF47FC\n"
398 "LDR R4, =0x2E80\n"
399 "LDR R0, [R4,#4]\n"
400 "CMP R0, #0\n"
401 "BNE loc_FFC615C4\n"
402 "BL sub_FFC447E4\n"
403 "BL sub_FFCEB398\n"
404 "BL sub_FFC447E4\n"
405 "BL sub_FFC4105C\n"
406 "BL sub_FFC446E4\n"
407 "BL sub_FFCEB458\n"
408 "loc_FFC615C4:\n"
409 "MOV R0, #1\n"
410 "STR R0, [R4]\n"
411 "LDMFD SP!, {R4,PC}\n"
412 );
413 }
414
415 void __attribute__((naked,noinline)) sub_FFC45524_my() {
416 asm volatile(
417 "STMFD SP!, {R4-R8,LR}\n"
418 "MOV R8, R0\n"
419 "BL sub_FFC4548C\n"
420 "MOV R6, R0\n"
421 "ADD R1, R0, R0,LSL#4\n"
422 "LDR R0, =0x100E0\n"
423 "ADD R4, R0, R1,LSL#3\n"
424 "LDR R0, [R4,#0x74]\n"
425 "CMP R0, #4\n"
426 "LDREQ R1, =0x804\n"
427 "LDREQ R0, =0xFFC44FA0\n"
428 "BLEQ sub_FFC0B048\n"
429 "MOV R1, R8\n"
430 "MOV R0, R6\n"
431 "BL sub_FFC44CE4\n"
432 "LDR R0, [R4,#0x38]\n"
433 "BL sub_FFC45A90\n"
434 "CMP R0, #0\n"
435 "STREQ R0, [R4,#0x74]\n"
436 "MOV R0, R6\n"
437 "BL sub_FFC44D78\n"
438 "MOV R0, R6\n"
439 "BL sub_FFC45108_my\n"
440 "MOV R5, R0\n"
441 "MOV R0, R6\n"
442 "BL sub_FFC45324\n"
443 "LDR R6, [R4,#0x3C]\n"
444 "AND R7, R5, R0\n"
445 "CMP R6, #0\n"
446 "LDR R1, [R4,#0x38]\n"
447 "MOVEQ R0, #0x80000001\n"
448 "MOV R5, #0\n"
449 "BEQ loc_FFC455D8\n"
450 "MOV R0, R1\n"
451 "BL sub_FFC4494C\n"
452 "CMP R0, #0\n"
453 "MOVNE R5, #4\n"
454 "CMP R6, #5\n"
455 "ORRNE R0, R5, #1\n"
456 "BICEQ R0, R5, #1\n"
457 "CMP R7, #0\n"
458 "BICEQ R0, R0, #2\n"
459 "ORREQ R0, R0, #0x80000000\n"
460 "BICNE R0, R0, #0x80000000\n"
461 "ORRNE R0, R0, #2\n"
462 "loc_FFC455D8:\n"
463 "CMP R8, #7\n"
464 "STR R0, [R4,#0x40]\n"
465 "LDMNEFD SP!, {R4-R8,PC}\n"
466 "MOV R0, R8\n"
467 "BL sub_FFC454DC\n"
468 "CMP R0, #0\n"
469 "LDMEQFD SP!, {R4-R8,LR}\n"
470 "LDREQ R0, =0xFFC457E0\n"
471 "BEQ sub_FFC015A8\n"
472 "LDMFD SP!, {R4-R8,PC}\n"
473 );
474 }
475
476 void __attribute__((naked,noinline)) sub_FFC45108_my() {
477 asm volatile(
478 "STMFD SP!, {R4-R6,LR}\n"
479 "MOV R6, R0\n"
480 "ADD R5, R0, R0,LSL#4\n"
481 "LDR R0, =0x100E0\n"
482 "ADD R4, R0, R5,LSL#3\n"
483 "LDR R0, [R4,#0x74]\n"
484 "TST R0, #2\n"
485 "MOVNE R0, #1\n"
486 "LDMNEFD SP!, {R4-R6,PC}\n"
487 "LDR R0, [R4,#0x38]\n"
488 "MOV R1, R6\n"
489 "BL sub_FFC44E00_my\n"
490 "CMP R0, #0\n"
491 "LDRNE R0, [R4,#0x38]\n"
492 "MOVNE R1, R6\n"
493 "BLNE sub_FFC44FC4\n"
494 "LDR R1, =0x10168\n"
495 "LDR R1, [R1,R5,LSL#2]\n"
496 "CMP R1, #4\n"
497 "BEQ loc_FFC45168\n"
498 "CMP R0, #0\n"
499 "LDMEQFD SP!, {R4-R6,PC}\n"
500 "MOV R0, R6\n"
501 "BL sub_FFC449DC\n"
502 "loc_FFC45168:\n"
503 "CMP R0, #0\n"
504 "LDRNE R1, [R4,#0x74]\n"
505 "ORRNE R1, R1, #2\n"
506 "STRNE R1, [R4,#0x74]\n"
507 "LDMFD SP!, {R4-R6,PC}\n"
508 );
509 }
510
511 void __attribute__((naked,noinline)) sub_FFC44E00_my() {
512 asm volatile(
513 "STMFD SP!, {R4-R10,LR}\n"
514 "MOV R9, R0\n"
515 "LDR R0, =0x100E0\n"
516 "ADD R1, R1, R1,LSL#4\n"
517 "ADD R5, R0, R1,LSL#3\n"
518 "LDR R0, [R5,#0x3C]\n"
519 "MOV R8, #0\n"
520 "CMP R0, #7\n"
521 "MOV R7, #0\n"
522 "MOV R6, #0\n"
523 "ADDLS PC, PC, R0,LSL#2\n"
524 "B loc_FFC44F5C\n"
525 "loc_FFC44E30:\n"
526 "B loc_FFC44E68\n"
527 "loc_FFC44E34:\n"
528 "B loc_FFC44E50\n"
529 "loc_FFC44E38:\n"
530 "B loc_FFC44E50\n"
531 "loc_FFC44E3C:\n"
532 "B loc_FFC44E50\n"
533 "loc_FFC44E40:\n"
534 "B loc_FFC44E50\n"
535 "loc_FFC44E44:\n"
536 "B loc_FFC44F54\n"
537 "loc_FFC44E48:\n"
538 "B loc_FFC44E50\n"
539 "loc_FFC44E4C:\n"
540 "B loc_FFC44E50\n"
541 "loc_FFC44E50:\n"
542 "MOV R2, #0\n"
543 "MOV R1, #0x200\n"
544 "MOV R0, #2\n"
545 "BL sub_FFC5B6C8\n"
546 "MOVS R4, R0\n"
547 "BNE loc_FFC44E70\n"
548 "loc_FFC44E68:\n"
549 "MOV R0, #0\n"
550 "LDMFD SP!, {R4-R10,PC}\n"
551 "loc_FFC44E70:\n"
552 "LDR R12, [R5,#0x50]\n"
553 "MOV R3, R4\n"
554 "MOV R2, #1\n"
555 "MOV R1, #0\n"
556 "MOV R0, R9\n"
557 "BLX R12\n"
558 "CMP R0, #1\n"
559 "BNE loc_FFC44E9C\n"
560 "MOV R0, #2\n"
561 "BL sub_FFC5B814\n"
562 "B loc_FFC44E68\n"
563 "loc_FFC44E9C:\n"
564 "LDR R1, [R5,#0x6C]\n"
565 "MOV R0, R9\n"
566 "BLX R1\n"
567
568 "MOV R1, R4\n"
569 "BL mbr_read_dryos\n"
570
571
572
573
574
575
576 "MOV R12, R4\n"
577 "MOV LR, R4\n"
578 "MOV R1, #1\n"
579 "B dg_sd_fat32_enter\n"
580 "dg_sd_fat32:\n"
581 "CMP R1, #4\n"
582 "BEQ dg_sd_fat32_end\n"
583 "ADD R12, R12, #0x10\n"
584 "ADD R1, R1, #1\n"
585 "dg_sd_fat32_enter:\n"
586 "LDRB R2, [R12, #0x1BE]\n"
587 "LDRB R3, [R12, #0x1C2]\n"
588 "CMP R3, #0xB\n"
589 "CMPNE R3, #0xC\n"
590 "BNE dg_sd_fat32\n"
591 "CMP R2, #0x00\n"
592 "CMPNE R2, #0x80\n"
593 "BNE dg_sd_fat32\n"
594
595 "MOV R4, R12\n"
596
597 "dg_sd_fat32_end:\n"
598
599
600
601 "LDRB R1, [R4,#0x1C9]\n"
602 "LDRB R3, [R4,#0x1C8]\n"
603 "LDRB R12, [R4,#0x1CC]\n"
604 "MOV R1, R1,LSL#24\n"
605 "ORR R1, R1, R3,LSL#16\n"
606 "LDRB R3, [R4,#0x1C7]\n"
607 "LDRB R2, [R4,#0x1BE]\n"
608
609 "ORR R1, R1, R3,LSL#8\n"
610 "LDRB R3, [R4,#0x1C6]\n"
611 "CMP R2, #0\n"
612 "CMPNE R2, #0x80\n"
613 "ORR R1, R1, R3\n"
614 "LDRB R3, [R4,#0x1CD]\n"
615 "MOV R3, R3,LSL#24\n"
616 "ORR R3, R3, R12,LSL#16\n"
617 "LDRB R12, [R4,#0x1CB]\n"
618 "ORR R3, R3, R12,LSL#8\n"
619 "LDRB R12, [R4,#0x1CA]\n"
620 "ORR R3, R3, R12\n"
621
622 "LDRB R12, [LR,#0x1FE]\n"
623 "LDRB LR, [LR,#0x1FF]\n"
624 "BNE loc_FFC44F28\n"
625 "CMP R0, R1\n"
626 "BCC loc_FFC44F28\n"
627 "ADD R2, R1, R3\n"
628 "CMP R2, R0\n"
629 "CMPLS R12, #0x55\n"
630 "CMPEQ LR, #0xAA\n"
631 "MOVEQ R7, R1\n"
632 "MOVEQ R6, R3\n"
633 "MOVEQ R4, #1\n"
634 "BEQ loc_FFC44F2C\n"
635 "loc_FFC44F28:\n"
636 "MOV R4, R8\n"
637 "loc_FFC44F2C:\n"
638 "MOV R0, #2\n"
639 "BL sub_FFC5B814\n"
640 "CMP R4, #0\n"
641 "BNE loc_FFC44F68\n"
642 "LDR R1, [R5,#0x6C]\n"
643 "MOV R7, #0\n"
644 "MOV R0, R9\n"
645 "BLX R1\n"
646 "MOV R6, R0\n"
647 "B loc_FFC44F68\n"
648 "loc_FFC44F54:\n"
649 "MOV R6, #0x40\n"
650 "B loc_FFC44F68\n"
651 "loc_FFC44F5C:\n"
652 "LDR R1, =0x568\n"
653 "LDR R0, =0xFFC44FA0\n"
654 "BL sub_FFC0B048\n"
655 "loc_FFC44F68:\n"
656 "STR R7, [R5,#0x44]!\n"
657 "STMIB R5, {R6,R8}\n"
658 "MOV R0, #1\n"
659 "LDMFD SP!, {R4-R10,PC}\n"
660 );
661 }
662
663 void __attribute__((naked,noinline)) JogDial_task_my()
664 {
665 asm volatile(
666 "STMFD SP!, {R4-R11,LR}\n"
667 "SUB SP, SP, #0x2C\n"
668 "BL sub_FFC37418\n"
669 "LDR R1, =0x24CC\n"
670 "LDR R8, =0xFFE9A7E4\n"
671 "MOV R0, #0\n"
672 "ADD R2, SP, #0x14\n"
673 "ADD R3, SP, #0x18\n"
674 "ADD R10, SP, #0xc\n"
675 "ADD R9, SP, #0x10\n"
676 "MOV R7, #0\n"
677 "loc_FFC3709C:\n"
678 "ADD R3, SP, #0x18\n"
679 "ADD R12, R3, R0,LSL#1\n"
680 "ADD R2, SP, #0x14\n"
681 "STRH R7, [R12]\n"
682 "ADD R12, R2, R0,LSL#1\n"
683 "STRH R7, [R12]\n"
684 "STR R7, [R9,R0,LSL#2]\n"
685 "STR R7, [R10,R0,LSL#2]\n"
686 "ADD R0, R0, #1\n"
687 "CMP R0, #1\n"
688 "BLT loc_FFC3709C\n"
689
690 "loc_FFC370C8:\n"
691
692 "loop:\n"
693 "LDR R0, =jogdial_stopped\n"
694 "LDR R0, [R0]\n"
695 "CMP R0, #0\n"
696 "BEQ endofloop\n"
697 "MOV R0, #40\n"
698 "BL _SleepTask\n"
699 "B loop\n"
700 "endofloop:\n"
701
702 "LDR R0, =0x24CC\n"
703 "MOV R2, #0\n"
704 "LDR R0, [R0,#8]\n"
705 "ADD R1, SP, #0x4\n"
706 "BL sub_FFC1659C\n"
707 "TST R0, #1\n"
708 "LDRNE R1, =0x226\n"
709 "LDRNE R0, =0xFFC3734C\n"
710 "BLNE sub_FFC0B048\n"
711 "LDR R0, [SP,#0x4]\n"
712 "AND R4, R0, #0xFF\n"
713 "AND R0, R0, #0xFF00\n"
714 "CMP R0, #0x100\n"
715 "BEQ loc_FFC3714C\n"
716
717 "CMP R0, #0x200\n"
718 "BEQ loc_FFC37184\n"
719 "CMP R0, #0x300\n"
720 "BEQ loc_FFC37398\n"
721 "CMP R0, #0x400\n"
722 "BNE loc_FFC370C8\n"
723 "CMP R4, #0\n"
724 "LDRNE R1, =0x2CA\n"
725 "LDRNE R0, =0xFFC3734C\n"
726 "BLNE sub_FFC0B048\n"
727 "LDR R2, =0xFFE9A7D0\n"
728 "ADD R0, R4, R4,LSL#2\n"
729 "LDR R1, [R2,R0,LSL#2]\n"
730 "STR R7, [R1]\n"
731 "MOV R1, #1\n"
732 "ADD R0, R2, R0,LSL#2\n"
733
734 "loc_FFC37140:\n"
735 "LDR R0, [R0,#8]\n"
736 "STR R1, [R0]\n"
737 "B loc_FFC370C8\n"
738
739 "loc_FFC3714C:\n"
740 "LDR R5, =0x24DC\n"
741 "LDR R0, [R5,R4,LSL#2]\n"
742 "BL sub_FFC17534\n"
743 "LDR R2, =0xFFC36FFC\n"
744 "ADD R1, R2, #0\n"
745 "ORR R3, R4, #0x200\n"
746 "MOV R0, #0x28\n"
747 "BL sub_FFC17450\n"
748 "TST R0, #1\n"
749 "CMPNE R0, #0x15\n"
750 "STR R0, [R10,R4,LSL#2]\n"
751 "BEQ loc_FFC370C8\n"
752 "LDR R1, =0x23B\n"
753 "B loc_FFC3733C\n"
754
755 "loc_FFC37184:\n"
756 "LDR R1, =0xFFE9A7D0\n"
757 "ADD R0, R4, R4,LSL#2\n"
758 "STR R0, [SP,#0x28]\n"
759 "ADD R0, R1, R0,LSL#2\n"
760 "STR R0, [SP,#0x24]\n"
761 "LDR R0, [R0,#4]\n"
762 "LDR R0, [R0]\n"
763 "MOV R2, R0,ASR#16\n"
764 "ADD R0, SP, #0x18\n"
765 "ADD R0, R0, R4,LSL#1\n"
766 "STR R0, [SP,#0x20]\n"
767 "STRH R2, [R0]\n"
768 "ADD R0, SP, #0x14\n"
769 "ADD R0, R0, R4,LSL#1\n"
770 "STR R0, [SP,#0x1c]\n"
771 "LDRSH R3, [R0]\n"
772 "SUB R0, R2, R3\n"
773 "CMP R0, #0\n"
774 "BEQ loc_FFC372F4\n"
775 "RSBLT R0, R0, #0\n"
776 "MOVLE R5, #0\n"
777 "MOVGT R5, #1\n"
778 "CMP R0, #0xFF\n"
779 "BLS loc_FFC37210\n"
780 "CMP R1, #0\n"
781 "RSBLE R0, R3, #0xFF\n"
782 "ADDLE R0, R0, #0x7F00\n"
783 "ADDLE R0, R0, R2\n"
784 "RSBGT R0, R2, #0xFF\n"
785 "ADDGT R0, R0, #0x7F00\n"
786 "ADDGT R0, R0, R3\n"
787 "ADD R0, R0, #0x8000\n"
788 "ADD R0, R0, #1\n"
789 "EOR R5, R5, #1\n"
790
791 "loc_FFC37210:\n"
792 "STR R0, [SP,#0x8]\n"
793 "LDR R0, [R9,R4,LSL#2]\n"
794 "CMP R0, #0\n"
795 "BEQ loc_FFC37260\n"
796 "LDR R1, =0xFFE9A7C8\n"
797 "ADD R1, R1, R4,LSL#3\n"
798 "LDR R1, [R1,R5,LSL#2]\n"
799 "CMP R1, R0\n"
800 "BEQ loc_FFC3727C\n"
801 "ADD R11, R4, R4,LSL#1\n"
802 "ADD R6, R8, R11,LSL#2\n"
803 "LDRB R0, [R6,#9]\n"
804 "CMP R0, #1\n"
805 "LDREQ R0, [R6,#4]\n"
806 "BLEQ sub_FFC65B38\n"
807 "LDRB R0, [R6,#8]\n"
808 "CMP R0, #1\n"
809 "BNE loc_FFC3727C\n"
810 "LDR R0, [R8,R11,LSL#2]\n"
811 "B loc_FFC37278\n"
812
813 "loc_FFC37260:\n"
814 "ADD R0, R4, R4,LSL#1\n"
815 "ADD R1, R8, R0,LSL#2\n"
816 "LDRB R1, [R1,#8]\n"
817 "CMP R1, #1\n"
818 "BNE loc_FFC3727C\n"
819 "LDR R0, [R8,R0,LSL#2]\n"
820
821 "loc_FFC37278:\n"
822 "BL sub_FFC65B38\n"
823
824 "loc_FFC3727C:\n"
825 "LDR R0, =0xFFE9A7C8\n"
826 "LDR R1, [SP,#0x8]\n"
827 "ADD R6, R0, R4,LSL#3\n"
828 "LDR R0, [R6,R5,LSL#2]\n"
829 "BL sub_FFC65A68\n"
830 "LDR R0, [R6,R5,LSL#2]\n"
831 "STR R0, [R9,R4,LSL#2]\n"
832 "LDR R0, [SP,#0x20]\n"
833 "LDR R1, [SP,#0x1c]\n"
834 "LDRH R0, [R0]\n"
835 "STRH R0, [R1]\n"
836 "ADD R0, R4, R4,LSL#1\n"
837 "ADD R0, R8, R0,LSL#2\n"
838 "LDRB R0, [R0,#9]\n"
839 "CMP R0, #1\n"
840 "BNE loc_FFC372F4\n"
841 "LDR R5, =0x24DC\n"
842 "LDR R0, [R5,R4,LSL#2]\n"
843 "BL sub_FFC17534\n"
844 "LDR R2, =0xFFC37008\n"
845 "ADD R1, R2, #0\n"
846 "ORR R3, R4, #0x300\n"
847 "MOV R0, #0x1F4\n"
848 "BL sub_FFC17450\n"
849 "TST R0, #1\n"
850 "CMPNE R0, #0x15\n"
851 "STR R0, [R5,R4,LSL#2]\n"
852 "LDRNE R0, =0xFFC3734C\n"
853 "MOVNE R1, #0x2A4\n"
854 "BLNE sub_FFC0B048\n"
855
856 "loc_FFC372F4:\n"
857 "ADD R0, R4, R4,LSL#1\n"
858 "ADD R0, R8, R0,LSL#2\n"
859 "LDRB R0, [R0,#0xA]\n"
860 "CMP R0, #1\n"
861 "BNE loc_FFC3737C\n"
862 "LDR R0, =0x23E4\n"
863 "LDR R0, [R0,#0xC]\n"
864 "CMP R0, #0\n"
865 "BEQ loc_FFC3737C\n"
866 "LDR R2, =0xFFC36FFC\n"
867 "ADD R1, R2, #0\n"
868 "ORR R3, R4, #0x400\n"
869 "BL sub_FFC17450\n"
870 "TST R0, #1\n"
871 "CMPNE R0, #0x15\n"
872 "STR R0, [R10,R4,LSL#2]\n"
873 "BEQ loc_FFC370C8\n"
874 "LDR R1, =0x2AF\n"
875
876 "loc_FFC3733C:\n"
877 "LDR R0, =0xFFC3734C\n"
878 "BL sub_FFC0B048\n"
879 "B loc_FFC370C8\n"
880
881 "loc_FFC3737C:\n"
882 "LDR R1, =0xFFE9A7D0\n"
883 "LDR R0, [SP,#0x28]\n"
884 "LDR R0, [R1,R0,LSL#2]\n"
885 "STR R7, [R0]\n"
886 "LDR R0, [SP,#0x24]\n"
887 "MOV R1, #1\n"
888 "B loc_FFC37140\n"
889
890 "loc_FFC37398:\n"
891 "LDR R0, [R9,R4,LSL#2]\n"
892 "CMP R0, #0\n"
893 "MOVEQ R1, #0x2BC\n"
894 "lDREQ R0, =0xFFC3734C\n"
895 "BLEQ sub_FFC0B048\n"
896 "ADD R0, R4, R4,LSL#1\n"
897 "ADD R0, R8, R0,LSL#2\n"
898 "LDR R0, [R0,#4]\n"
899 "BL sub_FFC65B38\n"
900 "STR R7, [R9,R4,LSL#2]\n"
901 "B loc_FFC370C8\n"
902
903 );
904 }
905