summaryrefslogtreecommitdiff
path: root/asm/SDK/NWC24/NWC24StdAPI.s
blob: 2697038916a4ddb2d5d9f03899b7bde0280b8a6f (plain)
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
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global STD_strnlen
STD_strnlen:
/* 80300FE4 002FCC44  38 A0 00 00 */	li r5, 0
/* 80300FE8 002FCC48  7C 89 03 A6 */	mtctr r4
/* 80300FEC 002FCC4C  28 04 00 00 */	cmplwi r4, 0
/* 80300FF0 002FCC50  40 81 00 1C */	ble lbl_8030100C
lbl_80300FF4:
/* 80300FF4 002FCC54  88 03 00 00 */	lbz r0, 0(r3)
/* 80300FF8 002FCC58  7C 00 07 75 */	extsb. r0, r0
/* 80300FFC 002FCC5C  41 82 00 10 */	beq lbl_8030100C
/* 80301000 002FCC60  38 A5 00 01 */	addi r5, r5, 1
/* 80301004 002FCC64  38 63 00 01 */	addi r3, r3, 1
/* 80301008 002FCC68  42 00 FF EC */	bdnz lbl_80300FF4
lbl_8030100C:
/* 8030100C 002FCC6C  7C A3 2B 78 */	mr r3, r5
/* 80301010 002FCC70  4E 80 00 20 */	blr

.global Mail_memset
Mail_memset:
/* 80301014 002FCC74  2C 05 00 00 */	cmpwi r5, 0
/* 80301018 002FCC78  39 00 00 00 */	li r8, 0
/* 8030101C 002FCC7C  4D 82 00 20 */	beqlr
/* 80301020 002FCC80  28 05 00 08 */	cmplwi r5, 8
/* 80301024 002FCC84  38 C5 FF F8 */	addi r6, r5, -8
/* 80301028 002FCC88  40 81 00 48 */	ble lbl_80301070
/* 8030102C 002FCC8C  38 06 00 07 */	addi r0, r6, 7
/* 80301030 002FCC90  7C 67 1B 78 */	mr r7, r3
/* 80301034 002FCC94  54 00 E8 FE */	srwi r0, r0, 3
/* 80301038 002FCC98  7C 09 03 A6 */	mtctr r0
/* 8030103C 002FCC9C  28 06 00 00 */	cmplwi r6, 0
/* 80301040 002FCCA0  40 81 00 30 */	ble lbl_80301070
lbl_80301044:
/* 80301044 002FCCA4  98 87 00 00 */	stb r4, 0(r7)
/* 80301048 002FCCA8  39 08 00 08 */	addi r8, r8, 8
/* 8030104C 002FCCAC  98 87 00 01 */	stb r4, 1(r7)
/* 80301050 002FCCB0  98 87 00 02 */	stb r4, 2(r7)
/* 80301054 002FCCB4  98 87 00 03 */	stb r4, 3(r7)
/* 80301058 002FCCB8  98 87 00 04 */	stb r4, 4(r7)
/* 8030105C 002FCCBC  98 87 00 05 */	stb r4, 5(r7)
/* 80301060 002FCCC0  98 87 00 06 */	stb r4, 6(r7)
/* 80301064 002FCCC4  98 87 00 07 */	stb r4, 7(r7)
/* 80301068 002FCCC8  38 E7 00 08 */	addi r7, r7, 8
/* 8030106C 002FCCCC  42 00 FF D8 */	bdnz lbl_80301044
lbl_80301070:
/* 80301070 002FCCD0  7C 08 28 50 */	subf r0, r8, r5
/* 80301074 002FCCD4  7C C3 42 14 */	add r6, r3, r8
/* 80301078 002FCCD8  7C 09 03 A6 */	mtctr r0
/* 8030107C 002FCCDC  7C 08 28 40 */	cmplw r8, r5
/* 80301080 002FCCE0  4C 80 00 20 */	bgelr
lbl_80301084:
/* 80301084 002FCCE4  98 86 00 00 */	stb r4, 0(r6)
/* 80301088 002FCCE8  38 C6 00 01 */	addi r6, r6, 1
/* 8030108C 002FCCEC  42 00 FF F8 */	bdnz lbl_80301084
/* 80301090 002FCCF0  4E 80 00 20 */	blr

.global convNum
convNum:
/* 80301094 002FCCF4  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80301098 002FCCF8  7C 08 02 A6 */	mflr r0
/* 8030109C 002FCCFC  90 01 00 24 */	stw r0, 0x24(r1)
/* 803010A0 002FCD00  39 61 00 20 */	addi r11, r1, 0x20
/* 803010A4 002FCD04  4B EC 60 85 */	bl _savegpr_27
/* 803010A8 002FCD08  2C 07 00 00 */	cmpwi r7, 0
/* 803010AC 002FCD0C  41 82 00 18 */	beq lbl_803010C4
/* 803010B0 002FCD10  54 80 00 01 */	rlwinm. r0, r4, 0, 0, 0
/* 803010B4 002FCD14  41 82 00 10 */	beq lbl_803010C4
/* 803010B8 002FCD18  7C 84 00 D0 */	neg r4, r4
/* 803010BC 002FCD1C  3B C0 00 01 */	li r30, 1
/* 803010C0 002FCD20  48 00 00 08 */	b lbl_803010C8
lbl_803010C4:
/* 803010C4 002FCD24  3B C0 00 00 */	li r30, 0
lbl_803010C8:
/* 803010C8 002FCD28  3B E0 00 00 */	li r31, 0
/* 803010CC 002FCD2C  39 80 00 00 */	li r12, 0
/* 803010D0 002FCD30  3C E0 80 00 */	lis r7, 0x8000
/* 803010D4 002FCD34  48 00 01 40 */	b lbl_80301214
lbl_803010D8:
/* 803010D8 002FCD38  7C 04 2B 96 */	divwu r0, r4, r5
/* 803010DC 002FCD3C  7C 7B 1B 78 */	mr r27, r3
/* 803010E0 002FCD40  39 60 00 00 */	li r11, 0
/* 803010E4 002FCD44  7C 00 29 D6 */	mullw r0, r0, r5
/* 803010E8 002FCD48  7C 00 20 50 */	subf r0, r0, r4
/* 803010EC 002FCD4C  7C 84 2B 96 */	divwu r4, r4, r5
/* 803010F0 002FCD50  7C 00 07 74 */	extsb r0, r0
/* 803010F4 002FCD54  48 00 00 0C */	b lbl_80301100
lbl_803010F8:
/* 803010F8 002FCD58  3B 7B 00 01 */	addi r27, r27, 1
/* 803010FC 002FCD5C  39 6B 00 01 */	addi r11, r11, 1
lbl_80301100:
/* 80301100 002FCD60  8B BB 00 00 */	lbz r29, 0(r27)
/* 80301104 002FCD64  7F BD 07 75 */	extsb. r29, r29
/* 80301108 002FCD68  40 82 FF F0 */	bne lbl_803010F8
/* 8030110C 002FCD6C  2C 8B 00 00 */	cmpwi cr1, r11, 0
/* 80301110 002FCD70  41 84 00 E4 */	blt cr1, lbl_803011F4
/* 80301114 002FCD74  3B AB 00 01 */	addi r29, r11, 1
/* 80301118 002FCD78  2C 1D 00 08 */	cmpwi r29, 8
/* 8030111C 002FCD7C  40 81 00 B4 */	ble lbl_803011D0
/* 80301120 002FCD80  3B 80 00 00 */	li r28, 0
/* 80301124 002FCD84  3B 60 00 00 */	li r27, 0
/* 80301128 002FCD88  41 84 00 14 */	blt cr1, lbl_8030113C
/* 8030112C 002FCD8C  3B A7 00 01 */	addi r29, r7, 1
/* 80301130 002FCD90  7C 0B E8 00 */	cmpw r11, r29
/* 80301134 002FCD94  41 80 00 08 */	blt lbl_8030113C
/* 80301138 002FCD98  3B 60 00 01 */	li r27, 1
lbl_8030113C:
/* 8030113C 002FCD9C  2C 1B 00 00 */	cmpwi r27, 0
/* 80301140 002FCDA0  41 82 00 2C */	beq lbl_8030116C
/* 80301144 002FCDA4  55 7D 00 01 */	rlwinm. r29, r11, 0, 0, 0
/* 80301148 002FCDA8  3B 60 00 01 */	li r27, 1
/* 8030114C 002FCDAC  40 82 00 14 */	bne lbl_80301160
/* 80301150 002FCDB0  3B AB 00 01 */	addi r29, r11, 1
/* 80301154 002FCDB4  57 BD 00 01 */	rlwinm. r29, r29, 0, 0, 0
/* 80301158 002FCDB8  41 82 00 08 */	beq lbl_80301160
/* 8030115C 002FCDBC  3B 60 00 00 */	li r27, 0
lbl_80301160:
/* 80301160 002FCDC0  2C 1B 00 00 */	cmpwi r27, 0
/* 80301164 002FCDC4  41 82 00 08 */	beq lbl_8030116C
/* 80301168 002FCDC8  3B 80 00 01 */	li r28, 1
lbl_8030116C:
/* 8030116C 002FCDCC  2C 1C 00 00 */	cmpwi r28, 0
/* 80301170 002FCDD0  41 82 00 60 */	beq lbl_803011D0
/* 80301174 002FCDD4  55 7D E8 FE */	srwi r29, r11, 3
/* 80301178 002FCDD8  7F A9 03 A6 */	mtctr r29
/* 8030117C 002FCDDC  2C 0B 00 08 */	cmpwi r11, 8
/* 80301180 002FCDE0  41 80 00 50 */	blt lbl_803011D0
lbl_80301184:
/* 80301184 002FCDE4  7F A3 58 AE */	lbzx r29, r3, r11
/* 80301188 002FCDE8  7F 63 5A 14 */	add r27, r3, r11
/* 8030118C 002FCDEC  9B BB 00 01 */	stb r29, 1(r27)
/* 80301190 002FCDF0  8B BB FF FF */	lbz r29, -1(r27)
/* 80301194 002FCDF4  7F A3 59 AE */	stbx r29, r3, r11
/* 80301198 002FCDF8  39 6B FF F8 */	addi r11, r11, -8
/* 8030119C 002FCDFC  8B BB FF FE */	lbz r29, -2(r27)
/* 803011A0 002FCE00  9B BB FF FF */	stb r29, -1(r27)
/* 803011A4 002FCE04  8B BB FF FD */	lbz r29, -3(r27)
/* 803011A8 002FCE08  9B BB FF FE */	stb r29, -2(r27)
/* 803011AC 002FCE0C  8B BB FF FC */	lbz r29, -4(r27)
/* 803011B0 002FCE10  9B BB FF FD */	stb r29, -3(r27)
/* 803011B4 002FCE14  8B BB FF FB */	lbz r29, -5(r27)
/* 803011B8 002FCE18  9B BB FF FC */	stb r29, -4(r27)
/* 803011BC 002FCE1C  8B BB FF FA */	lbz r29, -6(r27)
/* 803011C0 002FCE20  9B BB FF FB */	stb r29, -5(r27)
/* 803011C4 002FCE24  8B BB FF F9 */	lbz r29, -7(r27)
/* 803011C8 002FCE28  9B BB FF FA */	stb r29, -6(r27)
/* 803011CC 002FCE2C  42 00 FF B8 */	bdnz lbl_80301184
lbl_803011D0:
/* 803011D0 002FCE30  3B AB 00 01 */	addi r29, r11, 1
/* 803011D4 002FCE34  7F A9 03 A6 */	mtctr r29
/* 803011D8 002FCE38  2C 0B 00 00 */	cmpwi r11, 0
/* 803011DC 002FCE3C  41 80 00 18 */	blt lbl_803011F4
lbl_803011E0:
/* 803011E0 002FCE40  7F A3 58 AE */	lbzx r29, r3, r11
/* 803011E4 002FCE44  7F 63 5A 14 */	add r27, r3, r11
/* 803011E8 002FCE48  39 6B FF FF */	addi r11, r11, -1
/* 803011EC 002FCE4C  9B BB 00 01 */	stb r29, 1(r27)
/* 803011F0 002FCE50  42 00 FF F0 */	bdnz lbl_803011E0
lbl_803011F4:
/* 803011F4 002FCE54  2C 00 00 09 */	cmpwi r0, 9
/* 803011F8 002FCE58  39 60 00 30 */	li r11, 0x30
/* 803011FC 002FCE5C  40 81 00 08 */	ble lbl_80301204
/* 80301200 002FCE60  7C CB 07 74 */	extsb r11, r6
lbl_80301204:
/* 80301204 002FCE64  7C 00 5A 14 */	add r0, r0, r11
/* 80301208 002FCE68  39 8C 00 01 */	addi r12, r12, 1
/* 8030120C 002FCE6C  98 03 00 00 */	stb r0, 0(r3)
/* 80301210 002FCE70  3B FF 00 01 */	addi r31, r31, 1
lbl_80301214:
/* 80301214 002FCE74  2C 04 00 00 */	cmpwi r4, 0
/* 80301218 002FCE78  40 82 FE C0 */	bne lbl_803010D8
/* 8030121C 002FCE7C  88 03 00 00 */	lbz r0, 0(r3)
/* 80301220 002FCE80  7C 00 07 75 */	extsb. r0, r0
/* 80301224 002FCE84  40 82 01 20 */	bne lbl_80301344
/* 80301228 002FCE88  7C 64 1B 78 */	mr r4, r3
/* 8030122C 002FCE8C  38 A0 00 00 */	li r5, 0
/* 80301230 002FCE90  48 00 00 0C */	b lbl_8030123C
lbl_80301234:
/* 80301234 002FCE94  38 84 00 01 */	addi r4, r4, 1
/* 80301238 002FCE98  38 A5 00 01 */	addi r5, r5, 1
lbl_8030123C:
/* 8030123C 002FCE9C  88 04 00 00 */	lbz r0, 0(r4)
/* 80301240 002FCEA0  7C 00 07 75 */	extsb. r0, r0
/* 80301244 002FCEA4  40 82 FF F0 */	bne lbl_80301234
/* 80301248 002FCEA8  2C 85 00 00 */	cmpwi cr1, r5, 0
/* 8030124C 002FCEAC  41 84 00 E8 */	blt cr1, lbl_80301334
/* 80301250 002FCEB0  38 05 00 01 */	addi r0, r5, 1
/* 80301254 002FCEB4  2C 00 00 08 */	cmpwi r0, 8
/* 80301258 002FCEB8  40 81 00 B8 */	ble lbl_80301310
/* 8030125C 002FCEBC  38 C0 00 00 */	li r6, 0
/* 80301260 002FCEC0  38 E0 00 00 */	li r7, 0
/* 80301264 002FCEC4  41 84 00 18 */	blt cr1, lbl_8030127C
/* 80301268 002FCEC8  3C 80 80 00 */	lis r4, 0x80000001@ha
/* 8030126C 002FCECC  38 04 00 01 */	addi r0, r4, 0x80000001@l
/* 80301270 002FCED0  7C 05 00 00 */	cmpw r5, r0
/* 80301274 002FCED4  41 80 00 08 */	blt lbl_8030127C
/* 80301278 002FCED8  38 E0 00 01 */	li r7, 1
lbl_8030127C:
/* 8030127C 002FCEDC  2C 07 00 00 */	cmpwi r7, 0
/* 80301280 002FCEE0  41 82 00 2C */	beq lbl_803012AC
/* 80301284 002FCEE4  54 A0 00 01 */	rlwinm. r0, r5, 0, 0, 0
/* 80301288 002FCEE8  38 80 00 01 */	li r4, 1
/* 8030128C 002FCEEC  40 82 00 14 */	bne lbl_803012A0
/* 80301290 002FCEF0  38 05 00 01 */	addi r0, r5, 1
/* 80301294 002FCEF4  54 00 00 01 */	rlwinm. r0, r0, 0, 0, 0
/* 80301298 002FCEF8  41 82 00 08 */	beq lbl_803012A0
/* 8030129C 002FCEFC  38 80 00 00 */	li r4, 0
lbl_803012A0:
/* 803012A0 002FCF00  2C 04 00 00 */	cmpwi r4, 0
/* 803012A4 002FCF04  41 82 00 08 */	beq lbl_803012AC
/* 803012A8 002FCF08  38 C0 00 01 */	li r6, 1
lbl_803012AC:
/* 803012AC 002FCF0C  2C 06 00 00 */	cmpwi r6, 0
/* 803012B0 002FCF10  41 82 00 60 */	beq lbl_80301310
/* 803012B4 002FCF14  54 A0 E8 FE */	srwi r0, r5, 3
/* 803012B8 002FCF18  7C 09 03 A6 */	mtctr r0
/* 803012BC 002FCF1C  2C 05 00 08 */	cmpwi r5, 8
/* 803012C0 002FCF20  41 80 00 50 */	blt lbl_80301310
lbl_803012C4:
/* 803012C4 002FCF24  7C 03 28 AE */	lbzx r0, r3, r5
/* 803012C8 002FCF28  7C 83 2A 14 */	add r4, r3, r5
/* 803012CC 002FCF2C  98 04 00 01 */	stb r0, 1(r4)
/* 803012D0 002FCF30  88 04 FF FF */	lbz r0, -1(r4)
/* 803012D4 002FCF34  7C 03 29 AE */	stbx r0, r3, r5
/* 803012D8 002FCF38  38 A5 FF F8 */	addi r5, r5, -8
/* 803012DC 002FCF3C  88 04 FF FE */	lbz r0, -2(r4)
/* 803012E0 002FCF40  98 04 FF FF */	stb r0, -1(r4)
/* 803012E4 002FCF44  88 04 FF FD */	lbz r0, -3(r4)
/* 803012E8 002FCF48  98 04 FF FE */	stb r0, -2(r4)
/* 803012EC 002FCF4C  88 04 FF FC */	lbz r0, -4(r4)
/* 803012F0 002FCF50  98 04 FF FD */	stb r0, -3(r4)
/* 803012F4 002FCF54  88 04 FF FB */	lbz r0, -5(r4)
/* 803012F8 002FCF58  98 04 FF FC */	stb r0, -4(r4)
/* 803012FC 002FCF5C  88 04 FF FA */	lbz r0, -6(r4)
/* 80301300 002FCF60  98 04 FF FB */	stb r0, -5(r4)
/* 80301304 002FCF64  88 04 FF F9 */	lbz r0, -7(r4)
/* 80301308 002FCF68  98 04 FF FA */	stb r0, -6(r4)
/* 8030130C 002FCF6C  42 00 FF B8 */	bdnz lbl_803012C4
lbl_80301310:
/* 80301310 002FCF70  38 05 00 01 */	addi r0, r5, 1
/* 80301314 002FCF74  7C 09 03 A6 */	mtctr r0
/* 80301318 002FCF78  2C 05 00 00 */	cmpwi r5, 0
/* 8030131C 002FCF7C  41 80 00 18 */	blt lbl_80301334
lbl_80301320:
/* 80301320 002FCF80  7C 03 28 AE */	lbzx r0, r3, r5
/* 80301324 002FCF84  7C 83 2A 14 */	add r4, r3, r5
/* 80301328 002FCF88  38 A5 FF FF */	addi r5, r5, -1
/* 8030132C 002FCF8C  98 04 00 01 */	stb r0, 1(r4)
/* 80301330 002FCF90  42 00 FF F0 */	bdnz lbl_80301320
lbl_80301334:
/* 80301334 002FCF94  38 00 00 30 */	li r0, 0x30
/* 80301338 002FCF98  39 8C 00 01 */	addi r12, r12, 1
/* 8030133C 002FCF9C  98 03 00 00 */	stb r0, 0(r3)
/* 80301340 002FCFA0  3B FF 00 01 */	addi r31, r31, 1
lbl_80301344:
/* 80301344 002FCFA4  7D 20 07 74 */	extsb r0, r9
/* 80301348 002FCFA8  2C 00 00 30 */	cmpwi r0, 0x30
/* 8030134C 002FCFAC  41 82 00 08 */	beq lbl_80301354
/* 80301350 002FCFB0  39 20 00 20 */	li r9, 0x20
lbl_80301354:
/* 80301354 002FCFB4  7D 45 07 74 */	extsb r5, r10
/* 80301358 002FCFB8  7F FF F2 14 */	add r31, r31, r30
/* 8030135C 002FCFBC  3D 40 80 00 */	lis r10, 0x8000
/* 80301360 002FCFC0  38 80 00 20 */	li r4, 0x20
/* 80301364 002FCFC4  38 00 00 00 */	li r0, 0
/* 80301368 002FCFC8  48 00 01 54 */	b lbl_803014BC
lbl_8030136C:
/* 8030136C 002FCFCC  2C 05 00 4C */	cmpwi r5, 0x4c
/* 80301370 002FCFD0  40 82 00 38 */	bne lbl_803013A8
/* 80301374 002FCFD4  7C 6B 1B 78 */	mr r11, r3
/* 80301378 002FCFD8  38 E0 00 00 */	li r7, 0
/* 8030137C 002FCFDC  48 00 00 0C */	b lbl_80301388
lbl_80301380:
/* 80301380 002FCFE0  39 6B 00 01 */	addi r11, r11, 1
/* 80301384 002FCFE4  38 E7 00 01 */	addi r7, r7, 1
lbl_80301388:
/* 80301388 002FCFE8  88 CB 00 00 */	lbz r6, 0(r11)
/* 8030138C 002FCFEC  7C C6 07 75 */	extsb. r6, r6
/* 80301390 002FCFF0  40 82 FF F0 */	bne lbl_80301380
/* 80301394 002FCFF4  7C 83 39 AE */	stbx r4, r3, r7
/* 80301398 002FCFF8  38 C7 00 01 */	addi r6, r7, 1
/* 8030139C 002FCFFC  39 8C 00 01 */	addi r12, r12, 1
/* 803013A0 002FD000  7C 03 31 AE */	stbx r0, r3, r6
/* 803013A4 002FD004  48 00 01 14 */	b lbl_803014B8
lbl_803013A8:
/* 803013A8 002FD008  7C 6B 1B 78 */	mr r11, r3
/* 803013AC 002FD00C  38 C0 00 00 */	li r6, 0
/* 803013B0 002FD010  48 00 00 0C */	b lbl_803013BC
lbl_803013B4:
/* 803013B4 002FD014  39 6B 00 01 */	addi r11, r11, 1
/* 803013B8 002FD018  38 C6 00 01 */	addi r6, r6, 1
lbl_803013BC:
/* 803013BC 002FD01C  88 EB 00 00 */	lbz r7, 0(r11)
/* 803013C0 002FD020  7C E7 07 75 */	extsb. r7, r7
/* 803013C4 002FD024  40 82 FF F0 */	bne lbl_803013B4
/* 803013C8 002FD028  2C 86 00 00 */	cmpwi cr1, r6, 0
/* 803013CC 002FD02C  41 84 00 E4 */	blt cr1, lbl_803014B0
/* 803013D0 002FD030  38 E6 00 01 */	addi r7, r6, 1
/* 803013D4 002FD034  2C 07 00 08 */	cmpwi r7, 8
/* 803013D8 002FD038  40 81 00 B4 */	ble lbl_8030148C
/* 803013DC 002FD03C  39 60 00 00 */	li r11, 0
/* 803013E0 002FD040  3B A0 00 00 */	li r29, 0
/* 803013E4 002FD044  41 84 00 14 */	blt cr1, lbl_803013F8
/* 803013E8 002FD048  38 EA 00 01 */	addi r7, r10, 1
/* 803013EC 002FD04C  7C 06 38 00 */	cmpw r6, r7
/* 803013F0 002FD050  41 80 00 08 */	blt lbl_803013F8
/* 803013F4 002FD054  3B A0 00 01 */	li r29, 1
lbl_803013F8:
/* 803013F8 002FD058  2C 1D 00 00 */	cmpwi r29, 0
/* 803013FC 002FD05C  41 82 00 2C */	beq lbl_80301428
/* 80301400 002FD060  54 C7 00 01 */	rlwinm. r7, r6, 0, 0, 0
/* 80301404 002FD064  3B A0 00 01 */	li r29, 1
/* 80301408 002FD068  40 82 00 14 */	bne lbl_8030141C
/* 8030140C 002FD06C  38 E6 00 01 */	addi r7, r6, 1
/* 80301410 002FD070  54 E7 00 01 */	rlwinm. r7, r7, 0, 0, 0
/* 80301414 002FD074  41 82 00 08 */	beq lbl_8030141C
/* 80301418 002FD078  3B A0 00 00 */	li r29, 0
lbl_8030141C:
/* 8030141C 002FD07C  2C 1D 00 00 */	cmpwi r29, 0
/* 80301420 002FD080  41 82 00 08 */	beq lbl_80301428
/* 80301424 002FD084  39 60 00 01 */	li r11, 1
lbl_80301428:
/* 80301428 002FD088  2C 0B 00 00 */	cmpwi r11, 0
/* 8030142C 002FD08C  41 82 00 60 */	beq lbl_8030148C
/* 80301430 002FD090  54 C7 E8 FE */	srwi r7, r6, 3
/* 80301434 002FD094  7C E9 03 A6 */	mtctr r7
/* 80301438 002FD098  2C 06 00 08 */	cmpwi r6, 8
/* 8030143C 002FD09C  41 80 00 50 */	blt lbl_8030148C
lbl_80301440:
/* 80301440 002FD0A0  7C E3 30 AE */	lbzx r7, r3, r6
/* 80301444 002FD0A4  7D 63 32 14 */	add r11, r3, r6
/* 80301448 002FD0A8  98 EB 00 01 */	stb r7, 1(r11)
/* 8030144C 002FD0AC  88 EB FF FF */	lbz r7, -1(r11)
/* 80301450 002FD0B0  7C E3 31 AE */	stbx r7, r3, r6
/* 80301454 002FD0B4  38 C6 FF F8 */	addi r6, r6, -8
/* 80301458 002FD0B8  88 EB FF FE */	lbz r7, -2(r11)
/* 8030145C 002FD0BC  98 EB FF FF */	stb r7, -1(r11)
/* 80301460 002FD0C0  88 EB FF FD */	lbz r7, -3(r11)
/* 80301464 002FD0C4  98 EB FF FE */	stb r7, -2(r11)
/* 80301468 002FD0C8  88 EB FF FC */	lbz r7, -4(r11)
/* 8030146C 002FD0CC  98 EB FF FD */	stb r7, -3(r11)
/* 80301470 002FD0D0  88 EB FF FB */	lbz r7, -5(r11)
/* 80301474 002FD0D4  98 EB FF FC */	stb r7, -4(r11)
/* 80301478 002FD0D8  88 EB FF FA */	lbz r7, -6(r11)
/* 8030147C 002FD0DC  98 EB FF FB */	stb r7, -5(r11)
/* 80301480 002FD0E0  88 EB FF F9 */	lbz r7, -7(r11)
/* 80301484 002FD0E4  98 EB FF FA */	stb r7, -6(r11)
/* 80301488 002FD0E8  42 00 FF B8 */	bdnz lbl_80301440
lbl_8030148C:
/* 8030148C 002FD0EC  38 E6 00 01 */	addi r7, r6, 1
/* 80301490 002FD0F0  7C E9 03 A6 */	mtctr r7
/* 80301494 002FD0F4  2C 06 00 00 */	cmpwi r6, 0
/* 80301498 002FD0F8  41 80 00 18 */	blt lbl_803014B0
lbl_8030149C:
/* 8030149C 002FD0FC  7C E3 30 AE */	lbzx r7, r3, r6
/* 803014A0 002FD100  7D 63 32 14 */	add r11, r3, r6
/* 803014A4 002FD104  38 C6 FF FF */	addi r6, r6, -1
/* 803014A8 002FD108  98 EB 00 01 */	stb r7, 1(r11)
/* 803014AC 002FD10C  42 00 FF F0 */	bdnz lbl_8030149C
lbl_803014B0:
/* 803014B0 002FD110  99 23 00 00 */	stb r9, 0(r3)
/* 803014B4 002FD114  39 8C 00 01 */	addi r12, r12, 1
lbl_803014B8:
/* 803014B8 002FD118  3B FF 00 01 */	addi r31, r31, 1
lbl_803014BC:
/* 803014BC 002FD11C  7C 1F 40 00 */	cmpw r31, r8
/* 803014C0 002FD120  41 80 FE AC */	blt lbl_8030136C
/* 803014C4 002FD124  2C 1E 00 00 */	cmpwi r30, 0
/* 803014C8 002FD128  41 82 01 18 */	beq lbl_803015E0
/* 803014CC 002FD12C  7C 64 1B 78 */	mr r4, r3
/* 803014D0 002FD130  38 A0 00 00 */	li r5, 0
/* 803014D4 002FD134  48 00 00 0C */	b lbl_803014E0
lbl_803014D8:
/* 803014D8 002FD138  38 84 00 01 */	addi r4, r4, 1
/* 803014DC 002FD13C  38 A5 00 01 */	addi r5, r5, 1
lbl_803014E0:
/* 803014E0 002FD140  88 04 00 00 */	lbz r0, 0(r4)
/* 803014E4 002FD144  7C 00 07 75 */	extsb. r0, r0
/* 803014E8 002FD148  40 82 FF F0 */	bne lbl_803014D8
/* 803014EC 002FD14C  2C 85 00 00 */	cmpwi cr1, r5, 0
/* 803014F0 002FD150  41 84 00 E8 */	blt cr1, lbl_803015D8
/* 803014F4 002FD154  38 05 00 01 */	addi r0, r5, 1
/* 803014F8 002FD158  2C 00 00 08 */	cmpwi r0, 8
/* 803014FC 002FD15C  40 81 00 B8 */	ble lbl_803015B4
/* 80301500 002FD160  38 C0 00 00 */	li r6, 0
/* 80301504 002FD164  38 E0 00 00 */	li r7, 0
/* 80301508 002FD168  41 84 00 18 */	blt cr1, lbl_80301520
/* 8030150C 002FD16C  3C 80 80 00 */	lis r4, 0x80000001@ha
/* 80301510 002FD170  38 04 00 01 */	addi r0, r4, 0x80000001@l
/* 80301514 002FD174  7C 05 00 00 */	cmpw r5, r0
/* 80301518 002FD178  41 80 00 08 */	blt lbl_80301520
/* 8030151C 002FD17C  38 E0 00 01 */	li r7, 1
lbl_80301520:
/* 80301520 002FD180  2C 07 00 00 */	cmpwi r7, 0
/* 80301524 002FD184  41 82 00 2C */	beq lbl_80301550
/* 80301528 002FD188  54 A0 00 01 */	rlwinm. r0, r5, 0, 0, 0
/* 8030152C 002FD18C  38 80 00 01 */	li r4, 1
/* 80301530 002FD190  40 82 00 14 */	bne lbl_80301544
/* 80301534 002FD194  38 05 00 01 */	addi r0, r5, 1
/* 80301538 002FD198  54 00 00 01 */	rlwinm. r0, r0, 0, 0, 0
/* 8030153C 002FD19C  41 82 00 08 */	beq lbl_80301544
/* 80301540 002FD1A0  38 80 00 00 */	li r4, 0
lbl_80301544:
/* 80301544 002FD1A4  2C 04 00 00 */	cmpwi r4, 0
/* 80301548 002FD1A8  41 82 00 08 */	beq lbl_80301550
/* 8030154C 002FD1AC  38 C0 00 01 */	li r6, 1
lbl_80301550:
/* 80301550 002FD1B0  2C 06 00 00 */	cmpwi r6, 0
/* 80301554 002FD1B4  41 82 00 60 */	beq lbl_803015B4
/* 80301558 002FD1B8  54 A0 E8 FE */	srwi r0, r5, 3
/* 8030155C 002FD1BC  7C 09 03 A6 */	mtctr r0
/* 80301560 002FD1C0  2C 05 00 08 */	cmpwi r5, 8
/* 80301564 002FD1C4  41 80 00 50 */	blt lbl_803015B4
lbl_80301568:
/* 80301568 002FD1C8  7C 03 28 AE */	lbzx r0, r3, r5
/* 8030156C 002FD1CC  7C 83 2A 14 */	add r4, r3, r5
/* 80301570 002FD1D0  98 04 00 01 */	stb r0, 1(r4)
/* 80301574 002FD1D4  88 04 FF FF */	lbz r0, -1(r4)
/* 80301578 002FD1D8  7C 03 29 AE */	stbx r0, r3, r5
/* 8030157C 002FD1DC  38 A5 FF F8 */	addi r5, r5, -8
/* 80301580 002FD1E0  88 04 FF FE */	lbz r0, -2(r4)
/* 80301584 002FD1E4  98 04 FF FF */	stb r0, -1(r4)
/* 80301588 002FD1E8  88 04 FF FD */	lbz r0, -3(r4)
/* 8030158C 002FD1EC  98 04 FF FE */	stb r0, -2(r4)
/* 80301590 002FD1F0  88 04 FF FC */	lbz r0, -4(r4)
/* 80301594 002FD1F4  98 04 FF FD */	stb r0, -3(r4)
/* 80301598 002FD1F8  88 04 FF FB */	lbz r0, -5(r4)
/* 8030159C 002FD1FC  98 04 FF FC */	stb r0, -4(r4)
/* 803015A0 002FD200  88 04 FF FA */	lbz r0, -6(r4)
/* 803015A4 002FD204  98 04 FF FB */	stb r0, -5(r4)
/* 803015A8 002FD208  88 04 FF F9 */	lbz r0, -7(r4)
/* 803015AC 002FD20C  98 04 FF FA */	stb r0, -6(r4)
/* 803015B0 002FD210  42 00 FF B8 */	bdnz lbl_80301568
lbl_803015B4:
/* 803015B4 002FD214  38 05 00 01 */	addi r0, r5, 1
/* 803015B8 002FD218  7C 09 03 A6 */	mtctr r0
/* 803015BC 002FD21C  2C 05 00 00 */	cmpwi r5, 0
/* 803015C0 002FD220  41 80 00 18 */	blt lbl_803015D8
lbl_803015C4:
/* 803015C4 002FD224  7C 03 28 AE */	lbzx r0, r3, r5
/* 803015C8 002FD228  7C 83 2A 14 */	add r4, r3, r5
/* 803015CC 002FD22C  38 A5 FF FF */	addi r5, r5, -1
/* 803015D0 002FD230  98 04 00 01 */	stb r0, 1(r4)
/* 803015D4 002FD234  42 00 FF F0 */	bdnz lbl_803015C4
lbl_803015D8:
/* 803015D8 002FD238  38 00 00 2D */	li r0, 0x2d
/* 803015DC 002FD23C  98 03 00 00 */	stb r0, 0(r3)
lbl_803015E0:
/* 803015E0 002FD240  39 61 00 20 */	addi r11, r1, 0x20
/* 803015E4 002FD244  7D 83 63 78 */	mr r3, r12
/* 803015E8 002FD248  4B EC 5B 8D */	bl _restgpr_27
/* 803015EC 002FD24C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 803015F0 002FD250  7C 08 03 A6 */	mtlr r0
/* 803015F4 002FD254  38 21 00 20 */	addi r1, r1, 0x20
/* 803015F8 002FD258  4E 80 00 20 */	blr

.global Mail_sprintf
Mail_sprintf:
/* 803015FC 002FD25C  94 21 FF 80 */	stwu r1, -0x80(r1)
/* 80301600 002FD260  7C 08 02 A6 */	mflr r0
/* 80301604 002FD264  90 01 00 84 */	stw r0, 0x84(r1)
/* 80301608 002FD268  93 E1 00 7C */	stw r31, 0x7c(r1)
/* 8030160C 002FD26C  40 86 00 24 */	bne cr1, lbl_80301630
/* 80301610 002FD270  D8 21 00 28 */	stfd f1, 0x28(r1)
/* 80301614 002FD274  D8 41 00 30 */	stfd f2, 0x30(r1)
/* 80301618 002FD278  D8 61 00 38 */	stfd f3, 0x38(r1)
/* 8030161C 002FD27C  D8 81 00 40 */	stfd f4, 0x40(r1)
/* 80301620 002FD280  D8 A1 00 48 */	stfd f5, 0x48(r1)
/* 80301624 002FD284  D8 C1 00 50 */	stfd f6, 0x50(r1)
/* 80301628 002FD288  D8 E1 00 58 */	stfd f7, 0x58(r1)
/* 8030162C 002FD28C  D9 01 00 60 */	stfd f8, 0x60(r1)
lbl_80301630:
/* 80301630 002FD290  39 61 00 88 */	addi r11, r1, 0x88
/* 80301634 002FD294  38 01 00 08 */	addi r0, r1, 8
/* 80301638 002FD298  3D 80 02 00 */	lis r12, 0x200
/* 8030163C 002FD29C  90 61 00 08 */	stw r3, 8(r1)
/* 80301640 002FD2A0  3B E1 00 68 */	addi r31, r1, 0x68
/* 80301644 002FD2A4  90 A1 00 10 */	stw r5, 0x10(r1)
/* 80301648 002FD2A8  7F E5 FB 78 */	mr r5, r31
/* 8030164C 002FD2AC  90 81 00 0C */	stw r4, 0xc(r1)
/* 80301650 002FD2B0  90 C1 00 14 */	stw r6, 0x14(r1)
/* 80301654 002FD2B4  90 E1 00 18 */	stw r7, 0x18(r1)
/* 80301658 002FD2B8  91 01 00 1C */	stw r8, 0x1c(r1)
/* 8030165C 002FD2BC  91 21 00 20 */	stw r9, 0x20(r1)
/* 80301660 002FD2C0  91 41 00 24 */	stw r10, 0x24(r1)
/* 80301664 002FD2C4  91 81 00 68 */	stw r12, 0x68(r1)
/* 80301668 002FD2C8  91 61 00 6C */	stw r11, 0x6c(r1)
/* 8030166C 002FD2CC  90 01 00 70 */	stw r0, 0x70(r1)
/* 80301670 002FD2D0  48 00 00 19 */	bl Mail_vsprintf
/* 80301674 002FD2D4  80 01 00 84 */	lwz r0, 0x84(r1)
/* 80301678 002FD2D8  83 E1 00 7C */	lwz r31, 0x7c(r1)
/* 8030167C 002FD2DC  7C 08 03 A6 */	mtlr r0
/* 80301680 002FD2E0  38 21 00 80 */	addi r1, r1, 0x80
/* 80301684 002FD2E4  4E 80 00 20 */	blr

.global Mail_vsprintf
Mail_vsprintf:
/* 80301688 002FD2E8  94 21 FF B0 */	stwu r1, -0x50(r1)
/* 8030168C 002FD2EC  7C 08 02 A6 */	mflr r0
/* 80301690 002FD2F0  90 01 00 54 */	stw r0, 0x54(r1)
/* 80301694 002FD2F4  39 61 00 50 */	addi r11, r1, 0x50
/* 80301698 002FD2F8  4B EC 5A 65 */	bl _savegpr_16
/* 8030169C 002FD2FC  3A 00 00 00 */	li r16, 0
/* 803016A0 002FD300  7C 74 1B 78 */	mr r20, r3
/* 803016A4 002FD304  9A 03 00 00 */	stb r16, 0(r3)
/* 803016A8 002FD308  7C 95 23 78 */	mr r21, r4
/* 803016AC 002FD30C  7C B6 2B 78 */	mr r22, r5
/* 803016B0 002FD310  3B E0 00 00 */	li r31, 0
/* 803016B4 002FD314  3E 40 80 00 */	lis r18, 0x8000
/* 803016B8 002FD318  3A 60 00 20 */	li r19, 0x20
/* 803016BC 002FD31C  3E 20 80 44 */	lis r17, 0x8044
/* 803016C0 002FD320  48 00 04 5C */	b lbl_80301B1C
/* 803016C4 002FD324  48 00 00 08 */	b lbl_803016CC
lbl_803016C8:
/* 803016C8 002FD328  3A 94 00 01 */	addi r20, r20, 1
lbl_803016CC:
/* 803016CC 002FD32C  88 14 00 00 */	lbz r0, 0(r20)
/* 803016D0 002FD330  7C 00 07 75 */	extsb. r0, r0
/* 803016D4 002FD334  40 82 FF F4 */	bne lbl_803016C8
/* 803016D8 002FD338  7C C0 07 74 */	extsb r0, r6
/* 803016DC 002FD33C  2C 00 00 25 */	cmpwi r0, 0x25
/* 803016E0 002FD340  40 82 04 04 */	bne lbl_80301AE4
/* 803016E4 002FD344  88 15 00 00 */	lbz r0, 0(r21)
/* 803016E8 002FD348  3A B5 00 01 */	addi r21, r21, 1
/* 803016EC 002FD34C  7C 03 07 74 */	extsb r3, r0
/* 803016F0 002FD350  2C 03 00 25 */	cmpwi r3, 0x25
/* 803016F4 002FD354  40 82 00 40 */	bne lbl_80301734
/* 803016F8 002FD358  7E 84 A3 78 */	mr r4, r20
/* 803016FC 002FD35C  7E 86 A3 78 */	mr r6, r20
/* 80301700 002FD360  38 A0 00 00 */	li r5, 0
/* 80301704 002FD364  3A 94 00 01 */	addi r20, r20, 1
/* 80301708 002FD368  48 00 00 0C */	b lbl_80301714
lbl_8030170C:
/* 8030170C 002FD36C  38 C6 00 01 */	addi r6, r6, 1
/* 80301710 002FD370  38 A5 00 01 */	addi r5, r5, 1
lbl_80301714:
/* 80301714 002FD374  88 66 00 00 */	lbz r3, 0(r6)
/* 80301718 002FD378  7C 63 07 75 */	extsb. r3, r3
/* 8030171C 002FD37C  40 82 FF F0 */	bne lbl_8030170C
/* 80301720 002FD380  7C 04 29 AE */	stbx r0, r4, r5
/* 80301724 002FD384  38 05 00 01 */	addi r0, r5, 1
/* 80301728 002FD388  3B FF 00 01 */	addi r31, r31, 1
/* 8030172C 002FD38C  7E 04 01 AE */	stbx r16, r4, r0
/* 80301730 002FD390  48 00 03 EC */	b lbl_80301B1C
lbl_80301734:
/* 80301734 002FD394  2C 03 00 2D */	cmpwi r3, 0x2d
/* 80301738 002FD398  7C 1A 03 78 */	mr r26, r0
/* 8030173C 002FD39C  40 82 00 0C */	bne lbl_80301748
/* 80301740 002FD3A0  88 15 00 00 */	lbz r0, 0(r21)
/* 80301744 002FD3A4  3A B5 00 01 */	addi r21, r21, 1
lbl_80301748:
/* 80301748 002FD3A8  7C 03 07 74 */	extsb r3, r0
/* 8030174C 002FD3AC  7C 19 03 78 */	mr r25, r0
/* 80301750 002FD3B0  2C 03 00 2A */	cmpwi r3, 0x2a
/* 80301754 002FD3B4  3B A0 00 00 */	li r29, 0
/* 80301758 002FD3B8  3B 80 00 0A */	li r28, 0xa
/* 8030175C 002FD3BC  3B 00 00 30 */	li r24, 0x30
/* 80301760 002FD3C0  3B C0 00 00 */	li r30, 0
/* 80301764 002FD3C4  40 82 00 20 */	bne lbl_80301784
/* 80301768 002FD3C8  7E C3 B3 78 */	mr r3, r22
/* 8030176C 002FD3CC  38 80 00 01 */	li r4, 1
/* 80301770 002FD3D0  4B EC 54 11 */	bl __va_arg
/* 80301774 002FD3D4  88 15 00 00 */	lbz r0, 0(r21)
/* 80301778 002FD3D8  3A B5 00 01 */	addi r21, r21, 1
/* 8030177C 002FD3DC  83 63 00 00 */	lwz r27, 0(r3)
/* 80301780 002FD3E0  48 00 00 38 */	b lbl_803017B8
lbl_80301784:
/* 80301784 002FD3E4  3B 60 00 00 */	li r27, 0
/* 80301788 002FD3E8  48 00 00 1C */	b lbl_803017A4
lbl_8030178C:
/* 8030178C 002FD3EC  1C 9B 00 0A */	mulli r4, r27, 0xa
/* 80301790 002FD3F0  7C 03 07 74 */	extsb r3, r0
/* 80301794 002FD3F4  88 15 00 00 */	lbz r0, 0(r21)
/* 80301798 002FD3F8  3A B5 00 01 */	addi r21, r21, 1
/* 8030179C 002FD3FC  7C 63 22 14 */	add r3, r3, r4
/* 803017A0 002FD400  3B 63 FF D0 */	addi r27, r3, -48
lbl_803017A4:
/* 803017A4 002FD404  7C 03 07 74 */	extsb r3, r0
/* 803017A8 002FD408  2C 03 00 30 */	cmpwi r3, 0x30
/* 803017AC 002FD40C  41 80 00 0C */	blt lbl_803017B8
/* 803017B0 002FD410  2C 03 00 39 */	cmpwi r3, 0x39
/* 803017B4 002FD414  40 81 FF D8 */	ble lbl_8030178C
lbl_803017B8:
/* 803017B8 002FD418  70 03 00 DF */	andi. r3, r0, 0xdf
/* 803017BC 002FD41C  7C 77 07 74 */	extsb r23, r3
/* 803017C0 002FD420  2C 17 00 4C */	cmpwi r23, 0x4c
/* 803017C4 002FD424  40 82 00 0C */	bne lbl_803017D0
/* 803017C8 002FD428  88 15 00 00 */	lbz r0, 0(r21)
/* 803017CC 002FD42C  3A B5 00 01 */	addi r21, r21, 1
lbl_803017D0:
/* 803017D0 002FD430  7C 03 07 74 */	extsb r3, r0
/* 803017D4 002FD434  38 03 FF A8 */	addi r0, r3, -88
/* 803017D8 002FD438  28 00 00 20 */	cmplwi r0, 0x20
/* 803017DC 002FD43C  41 81 02 90 */	bgt lbl_80301A6C
/* 803017E0 002FD440  38 71 62 50 */	addi r3, r17, 0x6250
/* 803017E4 002FD444  54 00 10 3A */	slwi r0, r0, 2
/* 803017E8 002FD448  7C 63 00 2E */	lwzx r3, r3, r0
/* 803017EC 002FD44C  7C 69 03 A6 */	mtctr r3
/* 803017F0 002FD450  4E 80 04 20 */	bctr
/* 803017F4 002FD454  3B C0 00 01 */	li r30, 1
/* 803017F8 002FD458  3B A0 00 01 */	li r29, 1
/* 803017FC 002FD45C  48 00 02 70 */	b lbl_80301A6C
/* 80301800 002FD460  3B C0 00 01 */	li r30, 1
/* 80301804 002FD464  3B 80 00 08 */	li r28, 8
/* 80301808 002FD468  48 00 02 64 */	b lbl_80301A6C
/* 8030180C 002FD46C  3B C0 00 01 */	li r30, 1
/* 80301810 002FD470  48 00 02 5C */	b lbl_80301A6C
/* 80301814 002FD474  3B C0 00 01 */	li r30, 1
/* 80301818 002FD478  3B 80 00 10 */	li r28, 0x10
/* 8030181C 002FD47C  3B 00 00 57 */	li r24, 0x57
/* 80301820 002FD480  48 00 02 4C */	b lbl_80301A6C
/* 80301824 002FD484  3B C0 00 01 */	li r30, 1
/* 80301828 002FD488  3B 80 00 10 */	li r28, 0x10
/* 8030182C 002FD48C  3B 00 00 37 */	li r24, 0x37
/* 80301830 002FD490  48 00 02 3C */	b lbl_80301A6C
/* 80301834 002FD494  7E C3 B3 78 */	mr r3, r22
/* 80301838 002FD498  38 80 00 01 */	li r4, 1
/* 8030183C 002FD49C  4B EC 53 45 */	bl __va_arg
/* 80301840 002FD4A0  80 03 00 00 */	lwz r0, 0(r3)
/* 80301844 002FD4A4  7E 83 A3 78 */	mr r3, r20
/* 80301848 002FD4A8  7E 85 A3 78 */	mr r5, r20
/* 8030184C 002FD4AC  38 80 00 00 */	li r4, 0
/* 80301850 002FD4B0  7C 06 07 74 */	extsb r6, r0
/* 80301854 002FD4B4  3A 94 00 01 */	addi r20, r20, 1
/* 80301858 002FD4B8  48 00 00 0C */	b lbl_80301864
lbl_8030185C:
/* 8030185C 002FD4BC  38 A5 00 01 */	addi r5, r5, 1
/* 80301860 002FD4C0  38 84 00 01 */	addi r4, r4, 1
lbl_80301864:
/* 80301864 002FD4C4  88 05 00 00 */	lbz r0, 0(r5)
/* 80301868 002FD4C8  7C 00 07 75 */	extsb. r0, r0
/* 8030186C 002FD4CC  40 82 FF F0 */	bne lbl_8030185C
/* 80301870 002FD4D0  7C C3 21 AE */	stbx r6, r3, r4
/* 80301874 002FD4D4  38 04 00 01 */	addi r0, r4, 1
/* 80301878 002FD4D8  3B FF 00 01 */	addi r31, r31, 1
/* 8030187C 002FD4DC  7E 03 01 AE */	stbx r16, r3, r0
/* 80301880 002FD4E0  48 00 01 EC */	b lbl_80301A6C
/* 80301884 002FD4E4  7E C3 B3 78 */	mr r3, r22
/* 80301888 002FD4E8  38 80 00 01 */	li r4, 1
/* 8030188C 002FD4EC  4B EC 52 F5 */	bl __va_arg
/* 80301890 002FD4F0  80 63 00 00 */	lwz r3, 0(r3)
/* 80301894 002FD4F4  2C 03 00 00 */	cmpwi r3, 0
/* 80301898 002FD4F8  41 82 00 70 */	beq lbl_80301908
/* 8030189C 002FD4FC  7C 64 1B 78 */	mr r4, r3
/* 803018A0 002FD500  38 A0 00 00 */	li r5, 0
/* 803018A4 002FD504  48 00 00 0C */	b lbl_803018B0
lbl_803018A8:
/* 803018A8 002FD508  38 84 00 01 */	addi r4, r4, 1
/* 803018AC 002FD50C  38 A5 00 01 */	addi r5, r5, 1
lbl_803018B0:
/* 803018B0 002FD510  88 04 00 00 */	lbz r0, 0(r4)
/* 803018B4 002FD514  7C 00 07 75 */	extsb. r0, r0
/* 803018B8 002FD518  40 82 FF F0 */	bne lbl_803018A8
/* 803018BC 002FD51C  7E 86 A3 78 */	mr r6, r20
/* 803018C0 002FD520  38 80 00 00 */	li r4, 0
/* 803018C4 002FD524  48 00 00 0C */	b lbl_803018D0
lbl_803018C8:
/* 803018C8 002FD528  38 C6 00 01 */	addi r6, r6, 1
/* 803018CC 002FD52C  38 84 00 01 */	addi r4, r4, 1
lbl_803018D0:
/* 803018D0 002FD530  88 06 00 00 */	lbz r0, 0(r6)
/* 803018D4 002FD534  7C 00 07 75 */	extsb. r0, r0
/* 803018D8 002FD538  40 82 FF F0 */	bne lbl_803018C8
/* 803018DC 002FD53C  7C 94 22 14 */	add r4, r20, r4
/* 803018E0 002FD540  48 00 00 14 */	b lbl_803018F4
lbl_803018E4:
/* 803018E4 002FD544  88 03 00 00 */	lbz r0, 0(r3)
/* 803018E8 002FD548  38 63 00 01 */	addi r3, r3, 1
/* 803018EC 002FD54C  98 04 00 00 */	stb r0, 0(r4)
/* 803018F0 002FD550  38 84 00 01 */	addi r4, r4, 1
lbl_803018F4:
/* 803018F4 002FD554  88 03 00 00 */	lbz r0, 0(r3)
/* 803018F8 002FD558  7C 00 07 75 */	extsb. r0, r0
/* 803018FC 002FD55C  40 82 FF E8 */	bne lbl_803018E4
/* 80301900 002FD560  9A 04 00 00 */	stb r16, 0(r4)
/* 80301904 002FD564  48 00 00 08 */	b lbl_8030190C
lbl_80301908:
/* 80301908 002FD568  38 A0 00 00 */	li r5, 0
lbl_8030190C:
/* 8030190C 002FD56C  7F FF 2A 14 */	add r31, r31, r5
/* 80301910 002FD570  7F 40 07 74 */	extsb r0, r26
/* 80301914 002FD574  48 00 01 50 */	b lbl_80301A64
lbl_80301918:
/* 80301918 002FD578  2C 00 00 2D */	cmpwi r0, 0x2d
/* 8030191C 002FD57C  3B FF 00 01 */	addi r31, r31, 1
/* 80301920 002FD580  40 82 00 34 */	bne lbl_80301954
/* 80301924 002FD584  7E 86 A3 78 */	mr r6, r20
/* 80301928 002FD588  38 80 00 00 */	li r4, 0
/* 8030192C 002FD58C  48 00 00 0C */	b lbl_80301938
lbl_80301930:
/* 80301930 002FD590  38 C6 00 01 */	addi r6, r6, 1
/* 80301934 002FD594  38 84 00 01 */	addi r4, r4, 1
lbl_80301938:
/* 80301938 002FD598  88 66 00 00 */	lbz r3, 0(r6)
/* 8030193C 002FD59C  7C 63 07 75 */	extsb. r3, r3
/* 80301940 002FD5A0  40 82 FF F0 */	bne lbl_80301930
/* 80301944 002FD5A4  7E 74 21 AE */	stbx r19, r20, r4
/* 80301948 002FD5A8  38 64 00 01 */	addi r3, r4, 1
/* 8030194C 002FD5AC  7E 14 19 AE */	stbx r16, r20, r3
/* 80301950 002FD5B0  48 00 01 10 */	b lbl_80301A60
lbl_80301954:
/* 80301954 002FD5B4  7E 86 A3 78 */	mr r6, r20
/* 80301958 002FD5B8  38 60 00 00 */	li r3, 0
/* 8030195C 002FD5BC  48 00 00 0C */	b lbl_80301968
lbl_80301960:
/* 80301960 002FD5C0  38 C6 00 01 */	addi r6, r6, 1
/* 80301964 002FD5C4  38 63 00 01 */	addi r3, r3, 1
lbl_80301968:
/* 80301968 002FD5C8  88 86 00 00 */	lbz r4, 0(r6)
/* 8030196C 002FD5CC  7C 84 07 75 */	extsb. r4, r4
/* 80301970 002FD5D0  40 82 FF F0 */	bne lbl_80301960
/* 80301974 002FD5D4  2C 83 00 00 */	cmpwi cr1, r3, 0
/* 80301978 002FD5D8  41 84 00 E4 */	blt cr1, lbl_80301A5C
/* 8030197C 002FD5DC  38 83 00 01 */	addi r4, r3, 1
/* 80301980 002FD5E0  2C 04 00 08 */	cmpwi r4, 8
/* 80301984 002FD5E4  40 81 00 B4 */	ble lbl_80301A38
/* 80301988 002FD5E8  38 C0 00 00 */	li r6, 0
/* 8030198C 002FD5EC  38 E0 00 00 */	li r7, 0
/* 80301990 002FD5F0  41 84 00 14 */	blt cr1, lbl_803019A4
/* 80301994 002FD5F4  38 92 00 01 */	addi r4, r18, 1
/* 80301998 002FD5F8  7C 03 20 00 */	cmpw r3, r4
/* 8030199C 002FD5FC  41 80 00 08 */	blt lbl_803019A4
/* 803019A0 002FD600  38 E0 00 01 */	li r7, 1
lbl_803019A4:
/* 803019A4 002FD604  2C 07 00 00 */	cmpwi r7, 0
/* 803019A8 002FD608  41 82 00 2C */	beq lbl_803019D4
/* 803019AC 002FD60C  54 64 00 01 */	rlwinm. r4, r3, 0, 0, 0
/* 803019B0 002FD610  38 E0 00 01 */	li r7, 1
/* 803019B4 002FD614  40 82 00 14 */	bne lbl_803019C8
/* 803019B8 002FD618  38 83 00 01 */	addi r4, r3, 1
/* 803019BC 002FD61C  54 84 00 01 */	rlwinm. r4, r4, 0, 0, 0
/* 803019C0 002FD620  41 82 00 08 */	beq lbl_803019C8
/* 803019C4 002FD624  38 E0 00 00 */	li r7, 0
lbl_803019C8:
/* 803019C8 002FD628  2C 07 00 00 */	cmpwi r7, 0
/* 803019CC 002FD62C  41 82 00 08 */	beq lbl_803019D4
/* 803019D0 002FD630  38 C0 00 01 */	li r6, 1
lbl_803019D4:
/* 803019D4 002FD634  2C 06 00 00 */	cmpwi r6, 0
/* 803019D8 002FD638  41 82 00 60 */	beq lbl_80301A38
/* 803019DC 002FD63C  54 64 E8 FE */	srwi r4, r3, 3
/* 803019E0 002FD640  7C 89 03 A6 */	mtctr r4
/* 803019E4 002FD644  2C 03 00 08 */	cmpwi r3, 8
/* 803019E8 002FD648  41 80 00 50 */	blt lbl_80301A38
lbl_803019EC:
/* 803019EC 002FD64C  7C D4 18 AE */	lbzx r6, r20, r3
/* 803019F0 002FD650  7C 94 1A 14 */	add r4, r20, r3
/* 803019F4 002FD654  98 C4 00 01 */	stb r6, 1(r4)
/* 803019F8 002FD658  88 C4 FF FF */	lbz r6, -1(r4)
/* 803019FC 002FD65C  7C D4 19 AE */	stbx r6, r20, r3
/* 80301A00 002FD660  38 63 FF F8 */	addi r3, r3, -8
/* 80301A04 002FD664  88 C4 FF FE */	lbz r6, -2(r4)
/* 80301A08 002FD668  98 C4 FF FF */	stb r6, -1(r4)
/* 80301A0C 002FD66C  88 C4 FF FD */	lbz r6, -3(r4)
/* 80301A10 002FD670  98 C4 FF FE */	stb r6, -2(r4)
/* 80301A14 002FD674  88 C4 FF FC */	lbz r6, -4(r4)
/* 80301A18 002FD678  98 C4 FF FD */	stb r6, -3(r4)
/* 80301A1C 002FD67C  88 C4 FF FB */	lbz r6, -5(r4)
/* 80301A20 002FD680  98 C4 FF FC */	stb r6, -4(r4)
/* 80301A24 002FD684  88 C4 FF FA */	lbz r6, -6(r4)
/* 80301A28 002FD688  98 C4 FF FB */	stb r6, -5(r4)
/* 80301A2C 002FD68C  88 C4 FF F9 */	lbz r6, -7(r4)
/* 80301A30 002FD690  98 C4 FF FA */	stb r6, -6(r4)
/* 80301A34 002FD694  42 00 FF B8 */	bdnz lbl_803019EC
lbl_80301A38:
/* 80301A38 002FD698  38 83 00 01 */	addi r4, r3, 1
/* 80301A3C 002FD69C  7C 89 03 A6 */	mtctr r4
/* 80301A40 002FD6A0  2C 03 00 00 */	cmpwi r3, 0
/* 80301A44 002FD6A4  41 80 00 18 */	blt lbl_80301A5C
lbl_80301A48:
/* 80301A48 002FD6A8  7C 94 18 AE */	lbzx r4, r20, r3
/* 80301A4C 002FD6AC  7C D4 1A 14 */	add r6, r20, r3
/* 80301A50 002FD6B0  38 63 FF FF */	addi r3, r3, -1
/* 80301A54 002FD6B4  98 86 00 01 */	stb r4, 1(r6)
/* 80301A58 002FD6B8  42 00 FF F0 */	bdnz lbl_80301A48
lbl_80301A5C:
/* 80301A5C 002FD6BC  9A 74 00 00 */	stb r19, 0(r20)
lbl_80301A60:
/* 80301A60 002FD6C0  38 A5 00 01 */	addi r5, r5, 1
lbl_80301A64:
/* 80301A64 002FD6C4  7C 05 D8 00 */	cmpw r5, r27
/* 80301A68 002FD6C8  41 80 FE B0 */	blt lbl_80301918
lbl_80301A6C:
/* 80301A6C 002FD6CC  2C 1E 00 00 */	cmpwi r30, 0
/* 80301A70 002FD6D0  41 82 00 AC */	beq lbl_80301B1C
/* 80301A74 002FD6D4  2C 17 00 4C */	cmpwi r23, 0x4c
/* 80301A78 002FD6D8  40 82 00 18 */	bne lbl_80301A90
/* 80301A7C 002FD6DC  7E C3 B3 78 */	mr r3, r22
/* 80301A80 002FD6E0  38 80 00 01 */	li r4, 1
/* 80301A84 002FD6E4  4B EC 50 FD */	bl __va_arg
/* 80301A88 002FD6E8  80 83 00 00 */	lwz r4, 0(r3)
/* 80301A8C 002FD6EC  48 00 00 30 */	b lbl_80301ABC
lbl_80301A90:
/* 80301A90 002FD6F0  2C 1D 00 00 */	cmpwi r29, 0
/* 80301A94 002FD6F4  41 82 00 18 */	beq lbl_80301AAC
/* 80301A98 002FD6F8  7E C3 B3 78 */	mr r3, r22
/* 80301A9C 002FD6FC  38 80 00 01 */	li r4, 1
/* 80301AA0 002FD700  4B EC 50 E1 */	bl __va_arg
/* 80301AA4 002FD704  80 83 00 00 */	lwz r4, 0(r3)
/* 80301AA8 002FD708  48 00 00 14 */	b lbl_80301ABC
lbl_80301AAC:
/* 80301AAC 002FD70C  7E C3 B3 78 */	mr r3, r22
/* 80301AB0 002FD710  38 80 00 01 */	li r4, 1
/* 80301AB4 002FD714  4B EC 50 CD */	bl __va_arg
/* 80301AB8 002FD718  80 83 00 00 */	lwz r4, 0(r3)
lbl_80301ABC:
/* 80301ABC 002FD71C  7E 83 A3 78 */	mr r3, r20
/* 80301AC0 002FD720  7F 85 E3 78 */	mr r5, r28
/* 80301AC4 002FD724  7F 06 C3 78 */	mr r6, r24
/* 80301AC8 002FD728  7F A7 EB 78 */	mr r7, r29
/* 80301ACC 002FD72C  7F 68 DB 78 */	mr r8, r27
/* 80301AD0 002FD730  7F 29 07 74 */	extsb r9, r25
/* 80301AD4 002FD734  7F 4A 07 74 */	extsb r10, r26
/* 80301AD8 002FD738  4B FF F5 BD */	bl convNum
/* 80301ADC 002FD73C  7F FF 1A 14 */	add r31, r31, r3
/* 80301AE0 002FD740  48 00 00 3C */	b lbl_80301B1C
lbl_80301AE4:
/* 80301AE4 002FD744  7E 83 A3 78 */	mr r3, r20
/* 80301AE8 002FD748  7E 85 A3 78 */	mr r5, r20
/* 80301AEC 002FD74C  38 80 00 00 */	li r4, 0
/* 80301AF0 002FD750  3A 94 00 01 */	addi r20, r20, 1
/* 80301AF4 002FD754  48 00 00 0C */	b lbl_80301B00
lbl_80301AF8:
/* 80301AF8 002FD758  38 A5 00 01 */	addi r5, r5, 1
/* 80301AFC 002FD75C  38 84 00 01 */	addi r4, r4, 1
lbl_80301B00:
/* 80301B00 002FD760  88 05 00 00 */	lbz r0, 0(r5)
/* 80301B04 002FD764  7C 00 07 75 */	extsb. r0, r0
/* 80301B08 002FD768  40 82 FF F0 */	bne lbl_80301AF8
/* 80301B0C 002FD76C  7C C3 21 AE */	stbx r6, r3, r4
/* 80301B10 002FD770  38 04 00 01 */	addi r0, r4, 1
/* 80301B14 002FD774  3B FF 00 01 */	addi r31, r31, 1
/* 80301B18 002FD778  7E 03 01 AE */	stbx r16, r3, r0
lbl_80301B1C:
/* 80301B1C 002FD77C  88 D5 00 00 */	lbz r6, 0(r21)
/* 80301B20 002FD780  3A B5 00 01 */	addi r21, r21, 1
/* 80301B24 002FD784  7C C0 07 75 */	extsb. r0, r6
/* 80301B28 002FD788  40 82 FB A4 */	bne lbl_803016CC
/* 80301B2C 002FD78C  39 61 00 50 */	addi r11, r1, 0x50
/* 80301B30 002FD790  7F E3 FB 78 */	mr r3, r31
/* 80301B34 002FD794  4B EC 56 15 */	bl _restgpr_16
/* 80301B38 002FD798  80 01 00 54 */	lwz r0, 0x54(r1)
/* 80301B3C 002FD79C  7C 08 03 A6 */	mtlr r0
/* 80301B40 002FD7A0  38 21 00 50 */	addi r1, r1, 0x50
/* 80301B44 002FD7A4  4E 80 00 20 */	blr