1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
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
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
|
.include "asm/macros.inc"
.include "global.inc"
.section .text
arm_func_start FSi_CloseFileCommand
FSi_CloseFileCommand: ; 0x020D0114
mov r0, #0x0
bx lr
arm_func_start FSi_OpenFileDirectCommand
FSi_OpenFileDirectCommand: ; 0x020D011C
ldr r1, [r0, #0x30]
str r1, [r0, #0x24]
ldr r1, [r0, #0x30]
str r1, [r0, #0x2c]
ldr r1, [r0, #0x34]
str r1, [r0, #0x28]
ldr r1, [r0, #0x38]
str r1, [r0, #0x20]
mov r0, #0x0
bx lr
arm_func_start FSi_OpenFileFastCommand
FSi_OpenFileFastCommand: ; 0x020D0144
stmdb sp!, {r4-r5,lr}
sub sp, sp, #0x14
mov r5, r0
ldr r1, [r5, #0x8]
ldr r4, [r5, #0x34]
ldr r0, [r1, #0x30]
mov r2, r4, lsl #0x3
cmp r2, r0
addcs sp, sp, #0x14
movcs r0, #0x1
ldmcsia sp!, {r4-r5,lr}
bxcs lr
str r1, [sp, #0x8]
ldr r1, [r1, #0x2c]
add r0, sp, #0x8
add r3, r1, r2
add r1, sp, #0x0
mov r2, #0x8
str r3, [sp, #0xc]
bl FSi_ReadTable
_020D0194:
cmp r0, #0
addne sp, sp, #0x14
ldmneia sp!, {r4-r5,lr}
bxne lr
ldr r1, [sp]
mov r0, r5
str r1, [r5, #0x30]
ldr r2, [sp, #0x4]
mov r1, #7
str r2, [r5, #0x34]
str r4, [r5, #0x38]
bl FSi_TranslateCommand
add sp, sp, #0x14
ldmia sp!, {r4-r5,lr}
bx lr
arm_func_start FSi_GetPathCommand
FSi_GetPathCommand: ; 0x020D01D0
stmdb sp!, {r4-r11,lr}
sub sp, sp, #0xe4
mov r4, r0
ldr r1, [r4, #0x8]
add r0, sp, #0x98
add r11, r4, #0x30
str r1, [sp, #0x0]
bl FS_InitFile
ldr r0, [r4, #0x8]
str r0, [sp, #0xa0]
ldr r0, [r4, #0xc]
ands r0, r0, #0x20
movne r0, #0x1
moveq r0, #0x0
cmp r0, #0x0
ldrneh r5, [r4, #0x24]
movne r4, #0x10000
bne _020D02BC
ldrh r0, [r11, #0x8]
ldr r4, [r4, #0x20]
cmp r0, #0x0
ldrneh r5, [r11, #0xa]
bne _020D02BC
mov r10, #0x0
mov r9, r10
mov r5, #0x10000
add r8, sp, #0x98
mov r6, #0x3
mov r7, #0x1
_020D0244:
mov r0, r8
mov r1, r10
bl FSi_SeekDirDirect
add r2, sp, #0x4
cmp r10, #0x0
mov r0, r8
mov r1, r6
ldreq r9, [sp, #0xc4]
str r2, [sp, #0xc8]
str r7, [sp, #0xcc]
bl FSi_TranslateCommand
_020D0270:
cmp r0, #0x0
bne _020D02A8
_020D0278:
ldr r0, [sp, #0x10]
cmp r0, #0x0
bne _020D0294
ldr r0, [sp, #0x8]
cmp r0, r4
ldreqh r5, [sp, #0xbc]
beq _020D02A8
_020D0294:
mov r0, r8
mov r1, r6
bl FSi_TranslateCommand
cmp r0, #0x0
beq _020D0278
_020D02A8:
cmp r5, #0x10000
bne _020D02BC
add sl, sl, #0x1
cmp sl, r9
bcc _020D0244
_020D02BC:
cmp r5, #0x10000
moveq r0, #0x0
streqh r0, [r11, #0x8]
addeq sp, sp, #0xe4
moveq r0, #0x1
ldmeqia sp!, {r4-r11,lr}
bxeq lr
ldrh r0, [r11, #0x8]
cmp r0, #0x0
bne _020D03B8
ldr r0, [sp, #0x0]
mov r1, #0x0
ldr r0, [r0, #0x0]
cmp r0, #0xff
addls r9, r1, #0x1
bls _020D0308
cmp r0, #0xff00
addls r9, r1, #0x2
addhi r9, r1, #0x3
_020D0308:
cmp r4, #0x10000
ldrne r0, [sp, #0x14]
add r9, r9, #0x2
addne r9, r9, r0
mov r10, r5
cmp r5, #0x0
beq _020D03AC
add r0, sp, #0x98
mov r1, r5
bl FSi_SeekDirDirect
add r8, sp, #0x98
mov r6, #0x3
mov r7, #0x1
_020D033C:
ldr r1, [sp, #0xc4]
mov r0, r8
bl FSi_SeekDirDirect
add r2, sp, #0x4
mov r0, r8
mov r1, r6
str r2, [sp, #0xc8]
str r7, [sp, #0xcc]
bl FSi_TranslateCommand
_020D0360:
cmp r0, #0x0
bne _020D03A0
_020D0368:
ldr r0, [sp, #0x10]
cmp r0, #0x0
beq _020D038C
ldrh r0, [sp, #0x8]
cmp r0, sl
ldreq r0, [sp, #0x14]
addeq r0, r0, #0x1
addeq r9, r9, r0
beq _020D03A0
_020D038C:
mov r0, r8
mov r1, r6
bl FSi_TranslateCommand
cmp r0, #0x0
beq _020D0368
_020D03A0:
ldrh sl, [sp, #0xbc]
cmp sl, #0x0
bne _020D033C
_020D03AC:
add r0, r9, #0x1
strh r0, [r11, #0x8]
strh r5, [r11, #0xa]
_020D03B8:
ldr r7, [r11, #0x0]
cmp r7, #0x0
addeq sp, sp, #0xe4
moveq r0, #0x0
ldmeqia sp!, {r4-r11,lr}
bxeq lr
ldrh r6, [r11, #0x8]
ldr r0, [r11, #0x4]
cmp r0, r6
addcc sp, sp, #0xe4
movcc r0, #0x1
ldmccia sp!, {r4-r11,lr}
bxcc lr
ldr r0, [sp, #0x0]
mov r9, #0x0
ldr r0, [r0, #0x0]
cmp r0, #0xff
movls r8, #0x1
bls _020D0410
cmp r0, #0xff00
movls r8, #0x2
movhi r8, #0x3
_020D0410:
ldr r0, [sp, #0x0]
mov r1, r7
mov r2, r8
bl MI_CpuCopy8
add r1, r9, r8
ldr r0, _020D058C ; =0x0210682C
add r1, r7, r1
mov r2, #0x2
bl MI_CpuCopy8
add r0, sp, #0x98
mov r1, r5
bl FSi_SeekDirDirect
cmp r4, #0x10000
beq _020D04C4
add r3, sp, #0x4
mov r2, #0x0
add r0, sp, #0x98
mov r1, #0x3
str r3, [sp, #0xc8]
str r2, [sp, #0xcc]
bl FSi_TranslateCommand
_020D0464:
cmp r0, #0x0
bne _020D04A0
add r9, sp, #0x98
mov r8, #0x3
_020D0474:
ldr r0, [sp, #0x10]
cmp r0, #0x0
bne _020D048C
ldr r0, [sp, #0x8]
cmp r0, r4
beq _020D04A0
_020D048C:
mov r0, r9
mov r1, r8
bl FSi_TranslateCommand
cmp r0, #0x0
beq _020D0474
_020D04A0:
ldr r0, [sp, #0x14]
add r1, r7, r6
add r4, r0, #0x1
add r0, sp, #0x18
mov r2, r4
sub r1, r1, r4
bl MI_CpuCopy8
sub r6, r6, r4
b _020D04D4
_020D04C4:
add r0, r7, r6
mov r1, #0x0
strb r1, [r0, #-0x1]
sub r6, r6, #0x1
_020D04D4:
cmp r5, #0x0
beq _020D057C
add r10, sp, #0x98
add r11, sp, #0x4
mov r4, #0x3
mov r9, #0x0
mov r8, #0x2f
_020D04F0:
ldr r1, [sp, #0xc4]
mov r0, r10
bl FSi_SeekDirDirect
add r2, r7, r6
mov r0, r10
mov r1, r4
str r11, [sp, #0xc8]
str r9, [sp, #0xcc]
strb r8, [r2, #-0x1]
sub r6, r6, #0x1
bl FSi_TranslateCommand
_020D051C:
cmp r0, #0x0
bne _020D0570
_020D0524:
ldr r0, [sp, #0x10]
cmp r0, #0x0
beq _020D055C
ldrh r0, [sp, #0x8]
cmp r0, r5
bne _020D055C
ldr r5, [sp, #0x14]
add r1, r7, r6
add r0, sp, #0x18
mov r2, r5
sub r1, r1, r5
bl MI_CpuCopy8
sub r6, r6, r5
b _020D0570
_020D055C:
mov r0, sl
mov r1, r4
bl FSi_TranslateCommand
cmp r0, #0x0
beq _020D0524
_020D0570:
ldrh r5, [sp, #0xbc]
cmp r5, #0x0
bne _020D04F0
_020D057C:
mov r0, #0x0
add sp, sp, #0xe4
ldmia sp!, {r4-r11,lr}
bx lr
.balign 4
_020D058C: .word 0x0210682C
arm_func_start FSi_FindPathCommand
FSi_FindPathCommand: ; 0x020D0590
stmdb sp!, {r4-r11,lr}
sub sp, sp, #0x9c
mov r10, r0
ldr r2, [r10, #0x40]
ldr r9, [r10, #0x3c]
mov r1, #0x2
str r2, [sp, #0x0]
bl FSi_TranslateCommand
ldrb r1, [r9, #0x0]
cmp r1, #0x0
beq _020D0780
mov r0, #0x2
add r11, sp, #0x1c
mov r4, #0x3
mov r5, #0x1
mov r6, #0x0
str r0, [sp, #0x4]
_020D05D4:
mov r7, r6
b _020D05E0
_020D05DC:
add r7, r7, #0x1
_020D05E0:
ldrb r8, [r9, r7]
mov r0, r6
cmp r8, #0x0
beq _020D0600
cmp r8, #0x2f
beq _020D0600
cmp r8, #0x5c
movne r0, r5
_020D0600:
cmp r0, #0x0
bne _020D05DC
cmp r8, #0x0
bne _020D061C
ldr r0, [sp, #0x0]
cmp r0, #0x0
beq _020D0620
_020D061C:
mov r8, r5
_020D0620:
cmp r7, #0x0
addeq sp, sp, #0x9c
moveq r0, #0x1
ldmeqia sp!, {r4-r11,lr}
bxeq lr
cmp r1, #0x2e
bne _020D068C
cmp r7, #0x1
addeq r9, r9, #0x1
beq _020D0764
ldrb r0, [r9, #0x1]
cmp r7, #0x2
moveq r1, r5
movne r1, r6
cmp r0, #0x2e
moveq r0, r5
movne r0, r6
ands r0, r1, r0
beq _020D068C
ldrh r0, [r10, #0x24]
cmp r0, #0x0
beq _020D0684
ldr r1, [r10, #0x2c]
mov r0, r10
bl FSi_SeekDirDirect
_020D0684:
add r9, r9, #0x2
b _020D0764
_020D068C:
cmp r7, #0x7f
addgt sp, sp, #0x9c
movgt r0, #0x1
ldmgtia sp!, {r4-r11,lr}
bxgt lr
add r0, sp, #0x8
str r0, [r10, #0x30]
str r6, [r10, #0x34]
_020D06AC:
mov r0, r10
mov r1, r4
bl FSi_TranslateCommand
_020D06B8:
cmp r0, #0x0
addne sp, sp, #0x9c
movne r0, #0x1
ldmneia sp!, {r4-r11,lr}
bxne lr
ldr r0, [sp, #0x14]
cmp r8, r0
bne _020D06AC
ldr r0, [sp, #0x18]
cmp r7, r0
bne _020D06AC
mov r0, r9
mov r1, fp
mov r2, r7
bl FSi_StrNICmp
cmp r0, #0x0
bne _020D06AC
cmp r8, #0x0
beq _020D0728
add r0, sp, #0x8
add r3, sl, #0x30
ldmia r0, {r0, r1, r2}
stmia r3, {r0, r1, r2}
ldr r1, [sp, #0x4]
mov r0, sl
add r9, r9, r7
bl FSi_TranslateCommand
b _020D0764
_020D0728:
ldr r0, [sp]
cmp r0, #0x0
addne sp, sp, #0x9c
movne r0, #0x1
ldmneia sp!, {r4-r11,lr}
bxne lr
ldr r3, [sl, #0x44]
ldr r2, [sp, #0x8]
ldr r1, [sp, #0xC]
add sp, sp, #0x9c
str r2, [r3]
str r1, [r3, #0x4]
mov r0, #0x0
ldmia sp!, {r4-r11,lr}
bx lr
_020D0764:
ldrb r0, [r9, #0x0]
cmp r0, #0x0
movne r0, r5
moveq r0, r6
ldrb r1, [r9, r0]!
cmp r1, #0x0
bne _020D05D4
_020D0780:
ldr r0, [sp, #0x0]
cmp r0, #0x0
moveq r0, #0x1
addne r0, r10, #0x20
ldrne r3, [r10, #0x44]
ldmneia r0, {r0-r2}
stmneia r3, {r0-r2}
movne r0, #0x0
add sp, sp, #0x9c
ldmia sp!, {r4-r11,lr}
bx lr
arm_func_start FSi_ReadDirCommand
FSi_ReadDirCommand: ; 0x020D07AC
stmdb sp!, {r4-r5,lr}
sub sp, sp, #0xc
mov r5, r0
ldr r4, [r5, #0x30]
ldr r1, [r5, #0x8]
add r0, sp, #0x4
str r1, [sp, #0x4]
ldr r3, [r5, #0x28]
add r1, sp, #0x0
mov r2, #0x1
str r3, [sp, #0x8]
bl FSi_ReadTable
_020D07DC:
cmp r0, #0x0
addne sp, sp, #0xC
ldmneia sp!, {r4-r5,lr}
bxne lr
ldrb r1, [sp]
and r2, r1, #0x7F
mov r1, r1, asr #0x7
str r2, [r4, #0x10]
and r1, r1, #0x1
str r1, [r4, #0xC]
ldr r2, [r4, #0x10]
cmp r2, #0x0
addeq sp, sp, #0xC
moveq r0, #0x1
ldmeqia sp!, {r4-r5,lr}
bxeq lr
ldr r1, [r5, #0x34]
cmp r1, #0x0
bne _020D0858
add r0, sp, #0x4
add r1, r4, #0x14
bl FSi_ReadTable
cmp r0, #0x0
addne sp, sp, #0xC
ldmneia sp!, {r4-r5,lr}
bxne lr
ldr r1, [r4, #0x10]
mov r2, #0x0
add r1, r4, r1
strb r2, [r1, #0x14]
b _020D0864
_020D0858:
ldr r1, [sp, #0x8]
add r1, r1, r2
str r1, [sp, #0x8]
_020D0864:
ldr r1, [r4, #0xC]
cmp r1, #0x0
beq _020D08B8
add r0, sp, #0x4
add r1, sp, #0x2
mov r2, #0x2
bl FSi_ReadTable
cmp r0, #0x0
addne sp, sp, #0xC
ldmneia sp!, {r4-r5,lr}
bxne lr
ldr r2, [r5, #0x8]
ldr r1, _020D08E8
str r2, [r4]
ldrh r3, [sp, #0x2]
mov r2, #0x0
and r1, r3, r1
strh r1, [r4, #0x4]
strh r2, [r4, #0x6]
str r2, [r4, #0x8]
b _020D08D4
_020D08B8:
ldr r1, [r5, #0x8]
str r1, [r4]
ldrh r1, [r5, #0x26]
str r1, [r4, #0x4]
ldrh r1, [r5, #0x26]
add r1, r1, #0x1
strh r1, [r5, #0x26]
_020D08D4:
ldr r1, [sp, #0x8]
str r1, [r5, #0x28]
add sp, sp, #0xC
ldmia sp!, {r4-r5,lr}
bx lr
_020D08E8: .word 0x00000FFF
arm_func_start FSi_SeekDirCommand
FSi_SeekDirCommand: ; 0x020D08EC
stmdb sp!, {r4-r6,lr}
sub sp, sp, #0x10
mov r6, r0
ldr r5, [r6, #0x8]
add r4, r6, #0x30
str r5, [sp, #0x8]
ldrh r1, [r4, #0x4]
ldr r2, [r5, #0x34]
add r0, sp, #0x8
add r3, r2, r1, lsl #0x3
add r1, sp, #0x0
mov r2, #0x8
str r3, [sp, #0xc]
bl FSi_ReadTable
movs r3, r0
bne _020D0978
add r12, r6, #0x20
ldmia r4, {r0-r2}
stmia r12, {r0-r2}
ldrh r0, [r4, #0x6]
cmp r0, #0x0
bne _020D0968
ldr r0, [r4, #0x8]
cmp r0, #0x0
bne _020D0968
ldrh r0, [sp, #0x4]
strh r0, [r6, #0x26]
ldr r1, [r5, #0x34]
ldr r0, [sp, #0x0]
add r0, r1, r0
str r0, [r6, #0x28]
_020D0968:
ldrh r1, [sp, #0x6]
ldr r0, _020D0988 ; =0x00000FFF
and r0, r1, r0
str r0, [r6, #0x2c]
_020D0978:
mov r0, r3
add sp, sp, #0x10
ldmia sp!, {r4-r6,lr}
bx lr
.balign 4
_020D0988: .word 0x00000FFF
arm_func_start FSi_WriteFileCommand
FSi_WriteFileCommand: ; 0x020D098C
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r2, [r0, #0x2c]
ldr r3, [r0, #0x38]
ldr lr, [r0, #0x8]
ldr r1, [r0, #0x30]
add r12, r2, r3
str r12, [r0, #0x2c]
ldr r12, [lr, #0x4c]
mov r0, lr
blx r12
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start FSi_ReadFileCommand
FSi_ReadFileCommand: ; 0x020D09C4
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r2, [r0, #0x2c]
ldr r3, [r0, #0x38]
ldr lr, [r0, #0x8]
ldr r1, [r0, #0x30]
add r12, r2, r3
str r12, [r0, #0x2c]
ldr r12, [lr, #0x48]
mov r0, lr
blx r12
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start FSi_SeekDirDirect
FSi_SeekDirDirect: ; 0x020D09FC
ldr r3, [r0, #0xc]
mov r2, #0x0
orr r3, r3, #0x4
str r3, [r0, #0xc]
ldr r3, [r0, #0x8]
ldr ip, _020D0A2C ; =FSi_TranslateCommand
str r3, [r0, #0x30]
str r2, [r0, #0x38]
strh r2, [r0, #0x36]
strh r1, [r0, #0x34]
mov r1, #0x2
bx r12
.balign 4
_020D0A2C: .word FSi_TranslateCommand
arm_func_start FSi_ReadTable
FSi_ReadTable:
stmdb sp!, {r4-r8,lr}
mov r7, r0
ldr r5, [r7, #0x0]
mov r6, r2
ldr r2, [r5, #0x1c]
mov r0, r5
orr r2, r2, #0x200
str r2, [r5, #0x1c]
ldr r2, [r7, #0x4]
ldr r4, [r5, #0x50]
mov r3, r6
blx r4
cmp r0, #0x0
beq _020D0A7C
cmp r0, #0x1
beq _020D0A7C
cmp r0, #0x6
beq _020D0A8C
b _020D0AC8
_020D0A7C:
ldr r1, [r5, #0x1c]
bic r1, r1, #0x200
str r1, [r5, #0x1c]
b _020D0AC8
_020D0A8C:
bl OS_DisableInterrupts
ldr r1, [r5, #0x1c]
mov r4, r0
ands r0, r1, #0x200
beq _020D0AB8
add r8, r5, #0xc
_020D0AA4:
mov r0, r8
bl OS_SleepThread
ldr r0, [r5, #0x1c]
ands r0, r0, #0x200
bne _020D0AA4
_020D0AB8:
mov r0, r4
bl OS_RestoreInterrupts
ldr r0, [r5, #0x24]
ldr r0, [r0, #0x14]
_020D0AC8:
ldr r1, [r7, #0x4]
add r1, r1, r6
str r1, [r7, #0x4]
ldmia sp!, {r4-r8,lr}
bx lr
arm_func_start FSi_StrNICmp
FSi_StrNICmp: ; 0x020D0ADC
stmdb sp!, {lr}
sub sp, sp, #0x4
cmp r2, #0x0
mov lr, #0x0
bls _020D0B30
_020D0AF0:
ldrb r12, [r0, lr]
ldrb r3, [r1, lr]
sub r12, r12, #0x41
cmp r12, #0x19
sub r3, r3, #0x41
addls r12, r12, #0x20
cmp r3, #0x19
addls r3, r3, #0x20
cmp r12, r3
addne sp, sp, #0x4
subne r0, r12, r3
ldmneia sp!, {lr}
bxne lr
add lr, lr, #0x1
cmp lr, r2
blo _020D0AF0
_020D0B30:
mov r0, #0x0
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
|