This source file includes following definitions.
- taskHook
- CreateTask_spytask
- boot
- sub_FF810354_my
- sub_FF811198_my
- sub_FF815E58_my
- taskcreate_Startup_my
- task_Startup_my
- debug_blink
- init_file_modules_task
- sub_FF891968_my
- sub_FF87343C_my
- sub_FF873064_my
- sub_FF872D84_my
- JogDial_task_my
1 #include "lolevel.h"
2 #include "platform.h"
3 #include "core.h"
4 #include "dryos31.h"
5
6 #define offsetof(TYPE, MEMBER) ((int) &((TYPE *)0)->MEMBER)
7
8 void JogDial_task_my(void);
9
10 const char * const new_sa = &_end;
11
12 void taskHook(context_t **context) {
13
14 task_t *tcb=(task_t*)((char*)context-offsetof(task_t, context));
15
16 if(!_strcmp(tcb->name, "PhySw")) tcb->entry = (void*)mykbd_task;
17 if(!_strcmp(tcb->name, "CaptSeqTask")) tcb->entry = (void*)capt_seq_task;
18 if(!_strcmp(tcb->name, "InitFileModules")) tcb->entry = (void*)init_file_modules_task;
19 if(!_strcmp(tcb->name, "MovieRecord")) tcb->entry = (void*)movie_record_task;
20 if(!_strcmp(tcb->name, "ExpDrvTask")) tcb->entry = (void*)exp_drv_task;
21 if(!_strcmp(tcb->name, "RotarySw")) tcb->entry = (void*)JogDial_task_my;
22
23 }
24
25 void CreateTask_spytask() {
26 _CreateTask("SpyTask", 0x19, 0x2000, core_spytask, 0);
27 };
28
29
30
31
32
33
34 void __attribute__((naked,noinline)) boot() {
35 asm volatile (
36
37 "LDR R1, =0xC0410000\n"
38 "MOV R0, #0\n"
39 "STR R0, [R1]\n"
40 "MOV R1, #0x78\n"
41 "MCR p15, 0, R1,c1,c0\n"
42 "MOV R1, #0\n"
43 "MCR p15, 0, R1,c7,c10, 4\n"
44 "MCR p15, 0, R1,c7,c5\n"
45 "MCR p15, 0, R1,c7,c6\n"
46 "MOV R0, #0x3D\n"
47 "MCR p15, 0, R0,c6,c0\n"
48 "MOV R0, #0xC000002F\n"
49 "MCR p15, 0, R0,c6,c1\n"
50 "MOV R0, #0x33\n"
51 "MCR p15, 0, R0,c6,c2\n"
52 "MOV R0, #0x40000033\n"
53 "MCR p15, 0, R0,c6,c3\n"
54 "MOV R0, #0x80000017\n"
55 "MCR p15, 0, R0,c6,c4\n"
56 "LDR R0, =0xFF80002D\n"
57 "MCR p15, 0, R0,c6,c5\n"
58 "MOV R0, #0x34\n"
59 "MCR p15, 0, R0,c2,c0\n"
60 "MOV R0, #0x34\n"
61 "MCR p15, 0, R0,c2,c0, 1\n"
62 "MOV R0, #0x34\n"
63 "MCR p15, 0, R0,c3,c0\n"
64 "LDR R0, =0x3333330\n"
65 "MCR p15, 0, R0,c5,c0, 2\n"
66 "LDR R0, =0x3333330\n"
67 "MCR p15, 0, R0,c5,c0, 3\n"
68 "MRC p15, 0, R0,c1,c0\n"
69 "ORR R0, R0, #0x1000\n"
70 "ORR R0, R0, #4\n"
71 "ORR R0, R0, #1\n"
72 "MCR p15, 0, R0,c1,c0\n"
73 "MOV R1, #0x80000006\n"
74 "MCR p15, 0, R1,c9,c1\n"
75 "MOV R1, #6\n"
76 "MCR p15, 0, R1,c9,c1, 1\n"
77 "MRC p15, 0, R1,c1,c0\n"
78 "ORR R1, R1, #0x50000\n"
79 "MCR p15, 0, R1,c1,c0\n"
80 "LDR R2, =0xC0200000\n"
81 "MOV R1, #1\n"
82 "STR R1, [R2,#0x10C]\n"
83 "MOV R1, #0xFF\n"
84 "STR R1, [R2,#0xC]\n"
85 "STR R1, [R2,#0x1C]\n"
86 "STR R1, [R2,#0x2C]\n"
87 "STR R1, [R2,#0x3C]\n"
88 "STR R1, [R2,#0x4C]\n"
89 "STR R1, [R2,#0x5C]\n"
90 "STR R1, [R2,#0x6C]\n"
91 "STR R1, [R2,#0x7C]\n"
92 "STR R1, [R2,#0x8C]\n"
93 "STR R1, [R2,#0x9C]\n"
94 "STR R1, [R2,#0xAC]\n"
95 "STR R1, [R2,#0xBC]\n"
96 "STR R1, [R2,#0xCC]\n"
97 "STR R1, [R2,#0xDC]\n"
98 "STR R1, [R2,#0xEC]\n"
99 "STR R1, [R2,#0xFC]\n"
100 "LDR R1, =0xC0400008\n"
101 "LDR R2, =0x430005\n"
102 "STR R2, [R1]\n"
103 "MOV R1, #1\n"
104 "LDR R2, =0xC0243100\n"
105 "STR R2, [R1]\n"
106 "LDR R2, =0xC0242010\n"
107 "LDR R1, [R2]\n"
108 "ORR R1, R1, #1\n"
109 "STR R1, [R2]\n"
110 "LDR R0, =0xFFC2FA94\n"
111 "LDR R1, =0x1900\n"
112 "LDR R3, =0xFA80\n"
113 "loc_FF81013C:\n"
114 "CMP R1, R3\n"
115 "LDRCC R2, [R0],#4\n"
116 "STRCC R2, [R1],#4\n"
117 "BCC loc_FF81013C\n"
118 "LDR R1, =0x152728\n"
119 "MOV R2, #0\n"
120 "loc_FF810154:\n"
121 "CMP R3, R1\n"
122 "STRCC R2, [R3],#4\n"
123 "BCC loc_FF810154\n"
124 "B sub_FF810354_my\n"
125
126 );
127 }
128
129
130 void __attribute__((naked,noinline)) sub_FF810354_my() {
131
132
133 *(int*)0x1934=(int)taskHook;
134 *(int*)0x1938=(int)taskHook;
135
136
137
138
139
140 *(int*)(0x24B4)= (*(int*)0xC022010C)&1 ? 0x400000 : 0x200000;
141
142
143 asm volatile (
144 "LDR R0, =0xFF8103CC\n"
145 "MOV R1, #0\n"
146 "LDR R3, =0xFF810404\n"
147 "loc_FF810360:\n"
148 "CMP R0, R3\n"
149 "LDRCC R2, [R0],#4\n"
150 "STRCC R2, [R1],#4\n"
151 "BCC loc_FF810360\n"
152 "LDR R0, =0xFF810404\n"
153 "MOV R1, #0x4B0\n"
154 "LDR R3, =0xFF810618\n"
155 "loc_FF81037C:\n"
156 "CMP R0, R3\n"
157 "LDRCC R2, [R0],#4\n"
158 "STRCC R2, [R1],#4\n"
159 "BCC loc_FF81037C\n"
160 "MOV R0, #0xD2\n"
161 "MSR CPSR_cxsf, R0\n"
162 "MOV SP, #0x1000\n"
163 "MOV R0, #0xD3\n"
164 "MSR CPSR_cxsf, R0\n"
165 "MOV SP, #0x1000\n"
166 "LDR R0, =0x6C4\n"
167 "LDR R2, =0xEEEEEEEE\n"
168 "MOV R3, #0x1000\n"
169 "loc_FF8103B0:\n"
170 "CMP R0, R3\n"
171 "STRCC R2, [R0],#4\n"
172 "BCC loc_FF8103B0\n"
173 "BL sub_FF811198_my\n"
174
175
176
177
178 "loc_FF810218:\n"
179 "ANDEQ R0, R0, R4,ASR#13\n"
180 "loc_FF8103C4:\n"
181 "ANDEQ R0, R0, R0,ROR R6\n"
182 "loc_FF8103C8:\n"
183 "ANDEQ R0, R0, R4,ROR R6\n"
184 "loc_FF8103CC:\n"
185 "NOP\n"
186 "LDR PC, =0xFF810618\n"
187 );
188 }
189
190 void __attribute__((naked,noinline)) sub_FF811198_my() {
191 asm volatile (
192 "STR LR, [SP,#-4]!\n"
193 "SUB SP, SP, #0x74\n"
194 "MOV R0, SP\n"
195 "MOV R1, #0x74\n"
196 "BL sub_FFB5FA88\n"
197 "MOV R0, #0x53000\n"
198 "STR R0, [SP,#4]\n"
199
200 "LDR R0, =new_sa\n"
201 "LDR R0, [R0]\n"
202 "LDR R2, =0x339C00\n"
203 "LDR R1, =0x3324A8\n"
204 "STR R0, [SP,#8]\n"
205 "SUB R0, R1, R0\n"
206 "ADD R3, SP, #0xC\n"
207 "STR R2, [SP]\n"
208 "STMIA R3, {R0-R2}\n"
209 "MOV R0, #0x22\n"
210 "STR R0, [SP,#0x18]\n"
211 "MOV R0, #0x68\n"
212 "STR R0, [SP,#0x1C]\n"
213 "LDR R0, =0x19B\n"
214 "LDR R1, =sub_FF815E58_my\n"
215
216 "STR R0, [SP,#0x20]\n"
217 "MOV R0, #0x96\n"
218 "STR R0, [SP,#0x24]\n"
219 "MOV R0, #0x78\n"
220 "STR R0, [SP,#0x28]\n"
221 "MOV R0, #0x64\n"
222 "STR R0, [SP,#0x2C]\n"
223 "MOV R0, #0\n"
224 "STR R0, [SP,#0x30]\n"
225 "STR R0, [SP,#0x34]\n"
226 "MOV R0, #0x10\n"
227 "STR R0, [SP,#0x5C]\n"
228 "MOV R0, #0x800\n"
229 "STR R0, [SP,#0x60]\n"
230 "MOV R0, #0xA0\n"
231 "STR R0, [SP,#0x64]\n"
232 "MOV R0, #0x280\n"
233 "STR R0, [SP,#0x68]\n"
234 "MOV R0, SP\n"
235 "MOV R2, #0\n"
236 "BL sub_FF813404\n"
237 "ADD SP, SP, #0x74\n"
238 "LDR PC, [SP],#4\n"
239 );
240 }
241
242
243
244 void __attribute__((naked,noinline)) sub_FF815E58_my() {
245 asm volatile (
246 "STMFD SP!, {R4,LR}\n"
247 "BL sub_FF810B20\n"
248 "BL sub_FF81A244\n"
249 "CMP R0, #0\n"
250 "LDRLT R0, =0xFF815F6C\n"
251 "BLLT sub_FF815F4C\n"
252 "BL sub_FF815A94\n"
253 "CMP R0, #0\n"
254 "LDRLT R0, =0xFF815F74\n"
255 "BLLT sub_FF815F4C\n"
256 "LDR R0, =0xFF815F84\n"
257 "BL sub_FF815B7C\n"
258 "CMP R0, #0\n"
259 "LDRLT R0, =0xFF815F8C\n"
260 "BLLT sub_FF815F4C\n"
261 "LDR R0, =0xFF815F84\n"
262 "BL sub_FF813BF0\n"
263 "CMP R0, #0\n"
264 "LDRLT R0, =0xFF815FA0\n"
265 "BLLT sub_FF815F4C\n"
266 "BL sub_FF819C3C\n"
267 "CMP R0, #0\n"
268 "LDRLT R0, =0xFF815FAC\n"
269 "BLLT sub_FF815F4C\n"
270 "BL sub_FF81167C\n"
271 "CMP R0, #0\n"
272 "LDRLT R0, =0xFF815FB8\n"
273 "BLLT sub_FF815F4C\n"
274 "LDMFD SP!, {R4,LR}\n"
275 "B taskcreate_Startup_my\n"
276
277
278
279 );
280 };
281
282
283
284
285 void __attribute__((naked,noinline)) taskcreate_Startup_my() {
286 asm volatile (
287
288 "STMFD SP!, {R3-R5,LR}\n"
289 "BL sub_FF834410\n"
290 "BL sub_FF83BF28\n"
291 "CMP R0, #0\n"
292
293 "BNE loc_FF81FB44\n"
294
295
296 "BL sub_FF835C04\n"
297 "CMP R0, #0\n"
298
299
300 "BEQ loc_FF81FB44\n"
301
302 "LDR R4, =0xC0220000\n"
303 "LDR R0, [R4,#0xCC]\n"
304
305 "TST R0, #1\n"
306 "MOVEQ R0, #0x12C\n"
307
308
309
310
311 "BLEQ sub_FF83A2DC\n"
312 "BL sub_FF83440C\n"
313 "CMP R0, #0\n"
314 "BNE loc_FF81FB44\n"
315 "BL sub_FF833AA4\n"
316 "MOV R0, #0x44\n"
317 "STR R0, [R4,#0x1C]\n"
318 "BL sub_FF833C90\n"
319 "loc_FF81FB40:\n"
320 "B loc_FF81FB40\n"
321
322
323 "loc_FF81FB44:\n"
324
325
326 "BL sub_FF834414\n"
327 "BL sub_FF83A154\n"
328
329 "LDR R1, =0x38E000\n"
330 "MOV R0, #0\n"
331
332 "BL sub_FF83A59C\n"
333 "BL sub_FF83A348\n"
334 "MOV R3, #0\n"
335
336 "STR R3, [SP]\n"
337 "LDR R3, =task_Startup_my\n"
338
339
340 "MOV R2, #0\n"
341 "MOV R1, #0x19\n"
342 "LDR R0, =0xFF81FB8C\n"
343
344
345 "BL sub_FF81E83C\n"
346 "MOV R0, #0\n"
347 "LDMFD SP!, {R3-R5,PC}\n"
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373 );
374 }
375
376
377
378
379
380 void __attribute__((naked,noinline)) task_Startup_my() {
381 asm volatile (
382 "STMFD SP!, {R4,LR}\n"
383 "BL sub_FF81650C\n"
384 "BL sub_FF83550C\n"
385 "BL sub_FF833728\n"
386 "BL sub_FF83BF68\n"
387 "BL sub_FF83C154\n"
388
389
390
391 "BL sub_FF83C2F8\n"
392 "BL sub_FF8322F4\n"
393 "BL sub_FF83C184\n"
394 "BL sub_FF8398F8\n"
395 "BL sub_FF83C2FC\n"
396
397
398
399
400
401
402
403
404 "BL CreateTask_spytask\n"
405
406
407
408 "BL sub_FF8342F4\n"
409 "BL sub_FF8378B0\n"
410
411 "BL sub_FF83C314\n"
412 "BL sub_FF8316B8\n"
413 "BL sub_FF833178\n"
414 "BL sub_FF83BD00\n"
415 "BL sub_FF8336DC\n"
416 "BL sub_FF833114\n"
417 "BL sub_FF832328\n"
418
419
420 "BL sub_FF83CD78\n"
421 "BL sub_FF8330EC\n"
422
423 "LDMFD SP!, {R4,LR}\n"
424 "B sub_FF81662C\n"
425
426
427 );
428 }
429
430
431
432
433 int debug_blink(int save_R0) {
434 int i;
435 *((volatile int *) 0xC0220130) = 0x46;
436 for (i=0; i<800000; i++)
437 {
438 asm volatile ( "nop\n" );
439 }
440 *((volatile int *) 0xC0220130) = 0x44;
441 for (i=0; i<800000; i++)
442 {
443 asm volatile ( "nop\n" );
444 }
445 return save_R0;
446 };
447
448
449
450
451 void __attribute__((naked,noinline)) init_file_modules_task() {
452 asm volatile(
453
454
455
456 "STMFD SP!, {R4-R6,LR}\n"
457 "BL sub_FF89193C\n"
458 "LDR R5, =0x5006\n"
459 "MOVS R4, R0\n"
460 "MOVNE R1, #0\n"
461 "MOVNE R0, R5\n"
462 "BLNE sub_FF8953D8\n"
463
464 "BL sub_FF891968_my\n"
465
466
467
468 "BL core_spytask_can_start\n"
469 "CMP R4, #0\n"
470 "MOVEQ R0, R5\n"
471 "LDMEQFD SP!, {R4-R6,LR}\n"
472 "MOVEQ R1, #0\n"
473 "BEQ sub_FF8953D8\n"
474 "LDMFD SP!, {R4-R6,PC}\n"
475 );
476 }
477
478
479
480
481
482
483 void __attribute__((naked,noinline)) sub_FF891968_my() {
484 asm volatile(
485 "STMFD SP!, {R4,LR}\n"
486 "MOV R0, #3\n"
487 "BL sub_FF87343C_my\n"
488
489
490 "BL sub_FF951620\n"
491 "LDR R4, =0x3680\n"
492 "LDR R0, [R4,#4]\n"
493 "CMP R0, #0\n"
494 "BNE loc_FF8919A0\n"
495 "BL sub_FF872684\n"
496 "BL sub_FF9443A4\n"
497 "BL sub_FF872684\n"
498 "BL sub_FF86EAA8\n"
499 "BL sub_FF872584\n"
500 "BL sub_FF944440\n"
501 "loc_FF8919A0:\n"
502 "MOV R0, #1\n"
503 "STR R0, [R4]\n"
504 "LDMFD SP!, {R4,PC}\n"
505 );
506 }
507
508
509 void __attribute__((naked,noinline)) sub_FF87343C_my() {
510 asm volatile(
511 "STMFD SP!, {R4-R8,LR}\n"
512 "MOV R8, R0\n"
513 "BL sub_FF8733BC\n"
514 "LDR R1, =0x39390\n"
515 "MOV R6, R0\n"
516 "ADD R4, R1, R0,LSL#7\n"
517 "LDR R0, [R4,#0x6C]\n"
518 "CMP R0, #4\n"
519 "LDREQ R1, =0x83F\n"
520 "LDREQ R0, =0xFF872EFC\n"
521 "BLEQ sub_FF81EB14\n"
522 "MOV R1, R8\n"
523 "MOV R0, R6\n"
524 "BL sub_FF872C74\n"
525 "LDR R0, [R4,#0x38]\n"
526 "BL sub_FF873ADC\n"
527 "CMP R0, #0\n"
528 "STREQ R0, [R4,#0x6C]\n"
529 "MOV R0, R6\n"
530 "BL sub_FF872D04\n"
531 "MOV R0, R6\n"
532 "BL sub_FF873064_my\n"
533
534
535
536
537
538 "MOV R5, R0\n"
539 "MOV R0, R6\n"
540 "BL sub_FF873294\n"
541 "LDR R6, [R4,#0x3C]\n"
542 "AND R7, R5, R0\n"
543 "CMP R6, #0\n"
544 "LDR R1, [R4,#0x38]\n"
545 "MOVEQ R0, #0x80000001\n"
546 "MOV R5, #0\n"
547
548 "BEQ loc_FF8734EC\n"
549 "LDR R3, [R4,#0x2C]\n"
550 "MOV R0, R1\n"
551 "BL sub_FF8727EC\n"
552 "CMP R0, #0\n"
553 "MOVNE R5, #4\n"
554 "CMP R6, #5\n"
555 "ORRNE R0, R5, #1\n"
556 "BICEQ R0, R5, #1\n"
557 "CMP R7, #0\n"
558 "BICEQ R0, R0, #2\n"
559 "ORREQ R0, R0, #0x80000000\n"
560 "BICNE R0, R0, #0x80000000\n"
561 "ORRNE R0, R0, #2\n"
562 "loc_FF8734EC:\n"
563 "CMP R8, #7\n"
564 "STR R0, [R4,#0x40]\n"
565 "LDMNEFD SP!, {R4-R8,PC}\n"
566 "MOV R0, R8\n"
567 "BL sub_FF87340C\n"
568 "CMP R0, #0\n"
569 "LDMEQFD SP!, {R4-R8,LR}\n"
570 "LDREQ R0, =0xFF873538\n"
571 "BEQ sub_FF81177C\n"
572 "LDMFD SP!, {R4-R8,PC}\n"
573
574 );
575 }
576
577
578
579
580
581 void __attribute__((naked,noinline)) sub_FF873064_my() {
582 asm volatile(
583 "STMFD SP!, {R4-R6,LR}\n"
584 "MOV R5, R0\n"
585 "LDR R0, =0x39390\n"
586 "ADD R4, R0, R5,LSL#7\n"
587 "LDR R0, [R4,#0x6C]\n"
588 "TST R0, #2\n"
589 "MOVNE R0, #1\n"
590 "LDMNEFD SP!, {R4-R6,PC}\n"
591 "LDR R0, [R4,#0x38]\n"
592 "MOV R1, R5\n"
593 "BL sub_FF872D84_my\n"
594
595 "CMP R0, #0\n"
596
597 "LDRNE R0, [R4,#0x38]\n"
598 "MOVNE R1, R5\n"
599 "BLNE sub_FF872F20\n"
600
601 "LDR R2, =0x39410\n"
602 "ADD R1, R5, R5,LSL#4\n"
603 "LDR R1, [R2,R1,LSL#2]\n"
604 "CMP R1, #4\n"
605 "BEQ loc_FF8730C4\n"
606
607 "CMP R0, #0\n"
608 "LDMEQFD SP!, {R4-R6,PC}\n"
609 "MOV R0, R5\n"
610 "BL sub_FF87287C\n"
611
612 "loc_FF8730C4:\n"
613 "CMP R0, #0\n"
614 "LDRNE R1, [R4,#0x6C]\n"
615 "ORRNE R1, R1, #2\n"
616 "STRNE R1, [R4,#0x6C]\n"
617 "LDMFD SP!, {R4-R6,PC}\n"
618 );
619 }
620
621
622
623
624
625 void __attribute__((naked,noinline)) sub_FF872D84_my() {
626 asm volatile(
627 "STMFD SP!, {R4-R10,LR}\n"
628 "MOV R9, R0\n"
629 "LDR R0, =0x39390\n"
630 "MOV R8, #0\n"
631 "ADD R5, R0, R1,LSL#7\n"
632 "LDR R0, [R5,#0x3C]\n"
633 "MOV R7, #0\n"
634 "CMP R0, #7\n"
635 "MOV R6, #0\n"
636 "ADDLS PC, PC, R0,LSL#2\n"
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659 "B loc_FF872EDC\n"
660 "loc_FF872DB0:\n"
661 "B loc_FF872DE8\n"
662 "loc_FF872DB4:\n"
663 "B loc_FF872DD0\n"
664 "loc_FF872DB8:\n"
665 "B loc_FF872DD0\n"
666 "loc_FF872DBC:\n"
667 "B loc_FF872DD0\n"
668 "loc_FF872DC0:\n"
669 "B loc_FF872DD0\n"
670 "loc_FF872DC4:\n"
671 "B loc_FF872ED4\n"
672 "loc_FF872DC8:\n"
673 "B loc_FF872DD0\n"
674 "loc_FF872DCC:\n"
675 "B loc_FF872DD0\n"
676 "loc_FF872DD0:\n"
677
678
679 "MOV R2, #0\n"
680 "MOV R1, #0x200\n"
681 "MOV R0, #2\n"
682 "BL sub_FF88B9EC\n"
683 "MOVS R4, R0\n"
684 "BNE loc_FF872DF0\n"
685 "loc_FF872DE8:\n"
686 "MOV R0, #0\n"
687 "LDMFD SP!, {R4-R10,PC}\n"
688 "loc_FF872DF0:\n"
689 "LDR R12, [R5,#0x50]\n"
690 "MOV R3, R4\n"
691 "MOV R2, #1\n"
692 "MOV R1, #0\n"
693 "MOV R0, R9\n"
694 "BLX R12\n"
695 "CMP R0, #1\n"
696 "BNE loc_FF872E1C\n"
697 "MOV R0, #2\n"
698 "BL sub_FF88BB38\n"
699 "B loc_FF872DE8\n"
700 "loc_FF872E1C:\n"
701 "LDR R1, [R5,#0x64]\n"
702 "MOV R0, R9\n"
703 "BLX R1\n"
704
705
706
707 "MOV R1, R4\n"
708 "BL mbr_read_dryos\n"
709
710
711
712
713
714
715 "MOV R12, R4\n"
716 "MOV LR, R4\n"
717 "MOV R1, #1\n"
718 "B dg_sd_fat32_enter\n"
719 "dg_sd_fat32:\n"
720 "CMP R1, #4\n"
721 "BEQ dg_sd_fat32_end\n"
722 "ADD R12, R12, #0x10\n"
723 "ADD R1, R1, #1\n"
724 "dg_sd_fat32_enter:\n"
725 "LDRB R2, [R12, #0x1BE]\n"
726 "LDRB R3, [R12, #0x1C2]\n"
727 "CMP R3, #0xB\n"
728 "CMPNE R3, #0xC\n"
729 "BNE dg_sd_fat32\n"
730 "CMP R2, #0x00\n"
731 "CMPNE R2, #0x80\n"
732 "BNE dg_sd_fat32\n"
733
734 "MOV R4, R12\n"
735
736 "dg_sd_fat32_end:\n"
737
738
739 "LDRB R1, [R4,#0x1C9]\n"
740 "LDRB R3, [R4,#0x1C8]\n"
741 "LDRB R12, [R4,#0x1CC]\n"
742 "MOV R1, R1,LSL#24\n"
743 "ORR R1, R1, R3,LSL#16\n"
744 "LDRB R3, [R4,#0x1C7]\n"
745 "LDRB R2, [R4,#0x1BE]\n"
746
747 "ORR R1, R1, R3,LSL#8\n"
748 "LDRB R3, [R4,#0x1C6]\n"
749 "CMP R2, #0\n"
750 "CMPNE R2, #0x80\n"
751 "ORR R1, R1, R3\n"
752 "LDRB R3, [R4,#0x1CD]\n"
753 "MOV R3, R3,LSL#24\n"
754 "ORR R3, R3, R12,LSL#16\n"
755 "LDRB R12, [R4,#0x1CB]\n"
756 "ORR R3, R3, R12,LSL#8\n"
757 "LDRB R12, [R4,#0x1CA]\n"
758 "ORR R3, R3, R12\n"
759
760
761 "LDRB R12, [LR,#0x1FE]\n"
762 "LDRB LR, [LR,#0x1FF]\n"
763
764
765
766
767
768 "BNE loc_FF872EA8\n"
769 "CMP R0, R1\n"
770 "BCC loc_FF872EA8\n"
771 "ADD R2, R1, R3\n"
772 "CMP R2, R0\n"
773 "CMPLS R12, #0x55\n"
774 "CMPEQ LR, #0xAA\n"
775 "MOVEQ R7, R1\n"
776 "MOVEQ R6, R3\n"
777 "MOVEQ R4, #1\n"
778 "BEQ loc_FF872EAC\n"
779 "loc_FF872EA8:\n"
780 "MOV R4, R8\n"
781 "loc_FF872EAC:\n"
782 "MOV R0, #2\n"
783 "BL sub_FF88BB38\n"
784 "CMP R4, #0\n"
785 "BNE loc_FF872EE8\n"
786 "LDR R1, [R5,#0x64]\n"
787 "MOV R7, #0\n"
788 "MOV R0, R9\n"
789 "BLX R1\n"
790 "MOV R6, R0\n"
791 "B loc_FF872EE8\n"
792 "loc_FF872ED4:\n"
793 "MOV R6, #0x40\n"
794 "B loc_FF872EE8\n"
795 "loc_FF872EDC:\n"
796 "LDR R1, =0x597\n"
797 "LDR R0, =0xFF872EFC\n"
798 "BL sub_FF81EB14\n"
799 "loc_FF872EE8:\n"
800 "STR R7, [R5,#0x44]!\n"
801 "STMIB R5, {R6,R8}\n"
802 "MOV R0, #1\n"
803 "LDMFD SP!, {R4-R10,PC}\n"
804
805
806
807
808
809
810
811
812
813 );
814 }
815
816
817 void __attribute__((naked,noinline)) JogDial_task_my() {
818 asm volatile(
819 "STMFD SP!, {R4-R11,LR}\n"
820 "SUB SP, SP, #0x2C\n"
821 "BL sub_FF862410\n"
822 "LDR R1, =0x24C8\n"
823 "LDR R9, =0xFFB65A50\n"
824 "MOV R0, #0\n"
825 "ADD R2, SP, #0x14\n"
826 "ADD R3, SP, #0x18\n"
827 "ADD R10, SP, #0xc\n"
828 "ADD R8, SP, #0x10\n"
829 "MOV R7, #0\n"
830
831 "loc_FF862050:\n"
832 "ADD R3, SP, #0x18\n"
833 "ADD R12, R3, R0,LSL#1\n"
834 "ADD R2, SP, #0x14\n"
835 "STRH R7, [R12]\n"
836 "ADD R12, R2, R0,LSL#1\n"
837 "STRH R7, [R12]\n"
838 "STR R7, [R8,R0,LSL#2]\n"
839 "STR R7, [R10,R0,LSL#2]\n"
840 "ADD R0, R0, #1\n"
841 "CMP R0, #1\n"
842 "BLT loc_FF862050\n"
843
844 "loc_FF86207C:\n"
845
846 "LDR R0, =0x24C8\n"
847 "MOV R2, #0\n"
848 "LDR R0, [R0,#8]\n"
849 "ADD R1, SP, #0x4\n"
850 "BL sub_FF839B88\n"
851 "TST R0, #1\n"
852 "LDRNE R1, =0x25C\n"
853 "LDRNE R0, =0xFF862348\n"
854 "BLNE sub_FF81EB14\n"
855 "LDR R0, [SP,#0x4]\n"
856 "AND R4, R0, #0xFF\n"
857 "AND R0, R0, #0xFF00\n"
858 "CMP R0, #0x100\n"
859 "BEQ loc_FF862100\n"
860 "CMP R0, #0x200\n"
861 "BEQ loc_FF862138\n"
862 "CMP R0, #0x300\n"
863 "BEQ loc_FF862394\n"
864 "CMP R0, #0x400\n"
865 "BNE loc_FF86207C\n"
866 "CMP R4, #0\n"
867 "LDRNE R1, =0x30E\n"
868 "LDRNE R0, =0xFF862348\n"
869 "BLNE sub_FF81EB14\n"
870 "LDR R2, =0xFFB65A3C\n"
871 "ADD R0, R4, R4,LSL#2\n"
872 "LDR R1, [R2,R0,LSL#2]\n"
873 "STR R7, [R1]\n"
874 "MOV R1, #1\n"
875 "ADD R0, R2, R0,LSL#2\n"
876
877 "loc_FF8620F4:\n"
878 "LDR R0, [R0,#8]\n"
879 "STR R1, [R0]\n"
880 "B loc_FF86207C\n"
881
882 "loc_FF862100:\n"
883
884 "labelA:\n"
885 "LDR R0, =jogdial_stopped\n"
886 "LDR R0, [R0]\n"
887 "CMP R0, #1\n"
888 "BNE labelB\n"
889 "MOV R0, #40\n"
890 "BL sub_FF83A2DC\n"
891 "B labelA\n"
892 "labelB:\n"
893
894 "LDR R5, =0x24D8\n"
895 "LDR R0, [R5,R4,LSL#2]\n"
896 "BL sub_FF83AB20\n"
897
898
899
900
901
902
903
904
905
906
907
908
909
910 "LDR R2, =0xFF861F8C\n"
911 "ADD R1, R2, #0\n"
912 "ORR R3, R4, #0x200\n"
913 "MOV R0, #0x28\n"
914 "BL sub_FF83AA3C\n"
915 "TST R0, #1\n"
916 "CMPNE R0, #0x15\n"
917 "STR R0, [R10,R4,LSL#2]\n"
918 "BEQ loc_FF86207C\n"
919 "LDR R1, =0x271\n"
920 "B loc_FF862338\n"
921
922 "loc_FF862138:\n"
923 "LDR R1, =0xFFB65A3C\n"
924 "ADD R0, R4, R4,LSL#2\n"
925 "STR R0, [SP,#0x28]\n"
926 "ADD R0, R1, R0,LSL#2\n"
927 "STR R0, [SP,#0x24]\n"
928 "LDR R0, [R0,#4]\n"
929 "LDR R0, [R0]\n"
930 "MOV R2, R0,ASR#16\n"
931 "ADD R0, SP, #0x18\n"
932 "ADD R0, R0, R4,LSL#1\n"
933 "STR R0, [SP,#0x20]\n"
934 "STRH R2, [R0]\n"
935 "ADD R0, SP, #0x14\n"
936 "ADD R0, R0, R4,LSL#1\n"
937 "STR R0, [SP,#0x1c]\n"
938 "LDRSH R3, [R0]\n"
939 "SUB R0, R2, R3\n"
940 "CMP R0, #0\n"
941 "BNE loc_FF8621C8\n"
942
943 "CMP R0, #0\n"
944 "BEQ loc_FF8622F0\n"
945 "LDR R5, =0x24D8\n"
946 "LDR R0, [R5,R4,LSL#2]\n"
947 "BL sub_FF83AB20\n"
948 "LDR R2, =0xFF861F98\n"
949 "ADD R1, R2, #0\n"
950 "ORR R3, R4, #0x300\n"
951 "MOV R0, #0x1F4\n"
952 "BL sub_FF83AA3C\n"
953 "TST R0, #1\n"
954 "CMPNE R0, #0x15\n"
955 "STR R0, [R5,R4,LSL#2]\n"
956 "BEQ loc_FF8622F0\n"
957 "LDR R1, =0x28E\n"
958 "B loc_FF8622E8\n"
959
960 "loc_FF8621C8:\n"
961 "MOV R1, R0\n"
962 "RSBLT R0, R0, #0\n"
963 "MOVLE R5, #0\n"
964 "MOVGT R5, #1\n"
965 "CMP R0, #0xFF\n"
966 "BLS loc_FF862208\n"
967 "CMP R1, #0\n"
968 "RSBLE R0, R3, #0xFF\n"
969 "ADDLE R0, R0, #0x7F00\n"
970 "ADDLE R0, R0, R2\n"
971 "RSBGT R0, R2, #0xFF\n"
972 "ADDGT R0, R0, #0x7F00\n"
973 "ADDGT R0, R0, R3\n"
974 "ADD R0, R0, #0x8000\n"
975 "ADD R0, R0, #1\n"
976 "EOR R5, R5, #1\n"
977
978 "loc_FF862208:\n"
979 "STR R0, [SP,#0x8]\n"
980 "LDR R0, [R8,R4,LSL#2]\n"
981 "CMP R0, #0\n"
982 "BEQ loc_FF862258\n"
983 "LDR R1, =0xFFB65A34\n"
984 "ADD R1, R1, R4,LSL#3\n"
985 "LDR R1, [R1,R5,LSL#2]\n"
986 "CMP R1, R0\n"
987 "BEQ loc_FF862274\n"
988 "ADD R11, R4, R4,LSL#1\n"
989 "ADD R6, R9, R11,LSL#2\n"
990 "LDRB R0, [R6,#9]\n"
991 "CMP R0, #1\n"
992 "LDREQ R0, [R6,#4]\n"
993 "BLEQ sub_FF897278\n"
994 "LDRB R0, [R6,#8]\n"
995 "CMP R0, #1\n"
996 "BNE loc_FF862274\n"
997 "LDR R0, [R9,R11,LSL#2]\n"
998 "B loc_FF862270\n"
999
1000 "loc_FF862258:\n"
1001 "ADD R0, R4, R4,LSL#1\n"
1002 "ADD R1, R9, R0,LSL#2\n"
1003 "LDRB R1, [R1,#8]\n"
1004 "CMP R1, #1\n"
1005 "BNE loc_FF862274\n"
1006 "LDR R0, [R9,R0,LSL#2]\n"
1007
1008 "loc_FF862270:\n"
1009 "BL sub_FF897278\n"
1010
1011 "loc_FF862274:\n"
1012 "LDR R0, =0xFFB65A34\n"
1013 "LDR R1, [SP,#0x8]\n"
1014 "ADD R6, R0, R4,LSL#3\n"
1015 "LDR R0, [R6,R5,LSL#2]\n"
1016 "BL sub_FF8971A8\n"
1017 "LDR R0, [R6,R5,LSL#2]\n"
1018 "STR R0, [R8,R4,LSL#2]\n"
1019 "LDR R0, [SP,#0x20]\n"
1020 "LDR R1, [SP,#0x1c]\n"
1021 "LDRH R0, [R0]\n"
1022 "STRH R0, [R1]\n"
1023 "ADD R0, R4, R4,LSL#1\n"
1024 "ADD R0, R9, R0,LSL#2\n"
1025 "LDRB R0, [R0,#9]\n"
1026 "CMP R0, #1\n"
1027 "BNE loc_FF8622F0\n"
1028 "LDR R5, =0x24D8\n"
1029 "LDR R0, [R5,R4,LSL#2]\n"
1030 "BL sub_FF83AB20\n"
1031 "LDR R2, =0xFF861F98\n"
1032 "ADD R1, R2, #0\n"
1033 "ORR R3, R4, #0x300\n"
1034 "MOV R0, #0x1F4\n"
1035 "BL sub_FF83AA3C\n"
1036 "TST R0, #1\n"
1037 "CMPNE R0, #0x15\n"
1038 "STR R0, [R5,R4,LSL#2]\n"
1039
1040 "BEQ loc_FF8622F0\n"
1041 "MOV R1, #0x2E8\n"
1042 ""
1043 "loc_FF8622E8:\n"
1044 "LDR R0, =0xFF862348\n"
1045 "BL sub_FF81EB14\n"
1046
1047
1048 "loc_FF8622F0:\n"
1049
1050 "ADD R0, R4, R4,LSL#1\n"
1051 "ADD R0, R8, R0,LSL#2\n"
1052 "LDRB R0, [R0,#0xA]\n"
1053 "CMP R0, #1\n"
1054 "BNE loc_FF862378\n"
1055 "LDR R0, =0x24C8\n"
1056 "LDR R0, [R0,#0xC]\n"
1057 "CMP R0, #0\n"
1058 "BEQ loc_FF862378\n"
1059 "LDR R2, =0xFF861F8C\n"
1060 "ADD R1, R2, #0\n"
1061 "ORR R3, R4, #0x400\n"
1062 "BL sub_FF83AA3C\n"
1063 "TST R0, #1\n"
1064 "CMPNE R0, #0x15\n"
1065 "STR R0, [R10,R4,LSL#2]\n"
1066 "BEQ loc_FF86207C\n"
1067 "LDR R1, =0x2F3\n"
1068
1069 "loc_FF862338:\n"
1070 "LDR R0, =0xFF862348\n"
1071 "BL sub_FF81EB14\n"
1072 "B loc_FF86207C\n"
1073
1074 "loc_FF862378:\n"
1075 "LDR R1, =0xFFB65A3C\n"
1076 "LDR R0, [SP,#0x28]\n"
1077 "LDR R0, [R1,R0,LSL#2]\n"
1078 "STR R7, [R0]\n"
1079 "LDR R0, [SP,#0x24]\n"
1080 "MOV R1, #1\n"
1081 "B loc_FF8620F4\n"
1082
1083 "loc_FF862394:\n"
1084 "LDR R0, [R9,R4,LSL#2]\n"
1085 "CMP R0, #0\n"
1086 "MOVEQ R1, #0x2BC\n"
1087 "LDREQ R0, =0xFF862348\n"
1088 "BLEQ sub_FF81EB14\n"
1089 "ADD R0, R4, R4,LSL#1\n"
1090 "ADD R0, R9, R0,LSL#2\n"
1091 "LDR R0, [R0,#4]\n"
1092 "BL sub_FF897278\n"
1093 "STR R7, [R8,R4,LSL#2]\n"
1094 "B loc_FF86207C\n"
1095
1096 );
1097 }
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190