summaryrefslogtreecommitdiff
path: root/asm/MSL_C/MSL_Common/strtoul.s
blob: c6e412c0e45fd3c1450ed681cbaedc2c8b026b13 (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 __strtoul
__strtoul:
/* 801CFC84 001CB8E4  94 21 FF B0 */	stwu r1, -0x50(r1)
/* 801CFC88 001CB8E8  7C 08 02 A6 */	mflr r0
/* 801CFC8C 001CB8EC  2C 03 00 00 */	cmpwi r3, 0
/* 801CFC90 001CB8F0  90 01 00 54 */	stw r0, 0x54(r1)
/* 801CFC94 001CB8F4  BE 01 00 10 */	stmw r16, 0x10(r1)
/* 801CFC98 001CB8F8  3B 40 00 00 */	li r26, 0
/* 801CFC9C 001CB8FC  7C 70 1B 78 */	mr r16, r3
/* 801CFCA0 001CB900  7C 91 23 78 */	mr r17, r4
/* 801CFCA4 001CB904  7C B2 2B 78 */	mr r18, r5
/* 801CFCA8 001CB908  7C D3 33 78 */	mr r19, r6
/* 801CFCAC 001CB90C  7C F4 3B 78 */	mr r20, r7
/* 801CFCB0 001CB910  7D 15 43 78 */	mr r21, r8
/* 801CFCB4 001CB914  7D 36 4B 78 */	mr r22, r9
/* 801CFCB8 001CB918  3B 60 00 01 */	li r27, 1
/* 801CFCBC 001CB91C  3B 20 00 00 */	li r25, 0
/* 801CFCC0 001CB920  3B 00 00 00 */	li r24, 0
/* 801CFCC4 001CB924  3A E0 00 00 */	li r23, 0
/* 801CFCC8 001CB928  93 49 00 00 */	stw r26, 0(r9)
/* 801CFCCC 001CB92C  93 48 00 00 */	stw r26, 0(r8)
/* 801CFCD0 001CB930  41 80 00 1C */	blt lbl_801CFCEC
/* 801CFCD4 001CB934  2C 03 00 01 */	cmpwi r3, 1
/* 801CFCD8 001CB938  41 82 00 14 */	beq lbl_801CFCEC
/* 801CFCDC 001CB93C  2C 03 00 24 */	cmpwi r3, 0x24
/* 801CFCE0 001CB940  41 81 00 0C */	bgt lbl_801CFCEC
/* 801CFCE4 001CB944  2C 04 00 01 */	cmpwi r4, 1
/* 801CFCE8 001CB948  40 80 00 0C */	bge lbl_801CFCF4
lbl_801CFCEC:
/* 801CFCEC 001CB94C  3B 60 00 40 */	li r27, 0x40
/* 801CFCF0 001CB950  48 00 00 24 */	b lbl_801CFD14
lbl_801CFCF4:
/* 801CFCF4 001CB954  7E 4C 93 78 */	mr r12, r18
/* 801CFCF8 001CB958  7E 63 9B 78 */	mr r3, r19
/* 801CFCFC 001CB95C  38 80 00 00 */	li r4, 0
/* 801CFD00 001CB960  38 A0 00 00 */	li r5, 0
/* 801CFD04 001CB964  7D 89 03 A6 */	mtctr r12
/* 801CFD08 001CB968  3B 40 00 01 */	li r26, 1
/* 801CFD0C 001CB96C  4E 80 04 21 */	bctrl
/* 801CFD10 001CB970  7C 64 1B 78 */	mr r4, r3
lbl_801CFD14:
/* 801CFD14 001CB974  2C 10 00 00 */	cmpwi r16, 0
/* 801CFD18 001CB978  41 82 00 0C */	beq lbl_801CFD24
/* 801CFD1C 001CB97C  38 00 FF FF */	li r0, -1
/* 801CFD20 001CB980  7E E0 83 96 */	divwu r23, r0, r16
lbl_801CFD24:
/* 801CFD24 001CB984  3C 60 80 42 */	lis r3, lbl_80422D48@ha
/* 801CFD28 001CB988  3B C0 00 01 */	li r30, 1
/* 801CFD2C 001CB98C  3B E0 FF FF */	li r31, -1
/* 801CFD30 001CB990  3F 80 80 42 */	lis r28, 0x8042
/* 801CFD34 001CB994  3B A3 2D 48 */	addi r29, r3, lbl_80422D48@l
/* 801CFD38 001CB998  48 00 03 18 */	b lbl_801D0050
lbl_801CFD3C:
/* 801CFD3C 001CB99C  28 1B 00 10 */	cmplwi r27, 0x10
/* 801CFD40 001CB9A0  41 81 03 10 */	bgt lbl_801D0050
/* 801CFD44 001CB9A4  38 7C 31 00 */	addi r3, r28, 0x3100
/* 801CFD48 001CB9A8  57 60 10 3A */	slwi r0, r27, 2
/* 801CFD4C 001CB9AC  7C 63 00 2E */	lwzx r3, r3, r0
/* 801CFD50 001CB9B0  7C 69 03 A6 */	mtctr r3
/* 801CFD54 001CB9B4  4E 80 04 20 */	bctr
/* 801CFD58 001CB9B8  2C 04 00 00 */	cmpwi r4, 0
/* 801CFD5C 001CB9BC  38 00 00 00 */	li r0, 0
/* 801CFD60 001CB9C0  41 80 00 0C */	blt lbl_801CFD6C
/* 801CFD64 001CB9C4  2C 04 01 00 */	cmpwi r4, 0x100
/* 801CFD68 001CB9C8  41 80 00 08 */	blt lbl_801CFD70
lbl_801CFD6C:
/* 801CFD6C 001CB9CC  38 00 00 01 */	li r0, 1
lbl_801CFD70:
/* 801CFD70 001CB9D0  2C 00 00 00 */	cmpwi r0, 0
/* 801CFD74 001CB9D4  41 82 00 0C */	beq lbl_801CFD80
/* 801CFD78 001CB9D8  38 00 00 00 */	li r0, 0
/* 801CFD7C 001CB9DC  48 00 00 18 */	b lbl_801CFD94
lbl_801CFD80:
/* 801CFD80 001CB9E0  80 7D 00 38 */	lwz r3, 0x38(r29)
/* 801CFD84 001CB9E4  54 80 08 3C */	slwi r0, r4, 1
/* 801CFD88 001CB9E8  80 63 00 08 */	lwz r3, 8(r3)
/* 801CFD8C 001CB9EC  7C 03 02 2E */	lhzx r0, r3, r0
/* 801CFD90 001CB9F0  54 00 05 EE */	rlwinm r0, r0, 0, 0x17, 0x17
lbl_801CFD94:
/* 801CFD94 001CB9F4  2C 00 00 00 */	cmpwi r0, 0
/* 801CFD98 001CB9F8  41 82 00 28 */	beq lbl_801CFDC0
/* 801CFD9C 001CB9FC  7E 4C 93 78 */	mr r12, r18
/* 801CFDA0 001CBA00  7E 63 9B 78 */	mr r3, r19
/* 801CFDA4 001CBA04  38 80 00 00 */	li r4, 0
/* 801CFDA8 001CBA08  38 A0 00 00 */	li r5, 0
/* 801CFDAC 001CBA0C  7D 89 03 A6 */	mtctr r12
/* 801CFDB0 001CBA10  4E 80 04 21 */	bctrl
/* 801CFDB4 001CBA14  7C 64 1B 78 */	mr r4, r3
/* 801CFDB8 001CBA18  3B 39 00 01 */	addi r25, r25, 1
/* 801CFDBC 001CBA1C  48 00 02 94 */	b lbl_801D0050
lbl_801CFDC0:
/* 801CFDC0 001CBA20  2C 04 00 2B */	cmpwi r4, 0x2b
/* 801CFDC4 001CBA24  40 82 00 28 */	bne lbl_801CFDEC
/* 801CFDC8 001CBA28  7E 4C 93 78 */	mr r12, r18
/* 801CFDCC 001CBA2C  7E 63 9B 78 */	mr r3, r19
/* 801CFDD0 001CBA30  38 80 00 00 */	li r4, 0
/* 801CFDD4 001CBA34  38 A0 00 00 */	li r5, 0
/* 801CFDD8 001CBA38  7D 89 03 A6 */	mtctr r12
/* 801CFDDC 001CBA3C  3B 5A 00 01 */	addi r26, r26, 1
/* 801CFDE0 001CBA40  4E 80 04 21 */	bctrl
/* 801CFDE4 001CBA44  7C 64 1B 78 */	mr r4, r3
/* 801CFDE8 001CBA48  48 00 00 30 */	b lbl_801CFE18
lbl_801CFDEC:
/* 801CFDEC 001CBA4C  2C 04 00 2D */	cmpwi r4, 0x2d
/* 801CFDF0 001CBA50  40 82 00 28 */	bne lbl_801CFE18
/* 801CFDF4 001CBA54  7E 4C 93 78 */	mr r12, r18
/* 801CFDF8 001CBA58  7E 63 9B 78 */	mr r3, r19
/* 801CFDFC 001CBA5C  38 80 00 00 */	li r4, 0
/* 801CFE00 001CBA60  38 A0 00 00 */	li r5, 0
/* 801CFE04 001CBA64  7D 89 03 A6 */	mtctr r12
/* 801CFE08 001CBA68  3B 5A 00 01 */	addi r26, r26, 1
/* 801CFE0C 001CBA6C  4E 80 04 21 */	bctrl
/* 801CFE10 001CBA70  7C 64 1B 78 */	mr r4, r3
/* 801CFE14 001CBA74  93 D5 00 00 */	stw r30, 0(r21)
lbl_801CFE18:
/* 801CFE18 001CBA78  3B 60 00 02 */	li r27, 2
/* 801CFE1C 001CBA7C  48 00 02 34 */	b lbl_801D0050
/* 801CFE20 001CBA80  2C 10 00 00 */	cmpwi r16, 0
/* 801CFE24 001CBA84  41 82 00 0C */	beq lbl_801CFE30
/* 801CFE28 001CBA88  2C 10 00 10 */	cmpwi r16, 0x10
/* 801CFE2C 001CBA8C  40 82 00 34 */	bne lbl_801CFE60
lbl_801CFE30:
/* 801CFE30 001CBA90  2C 04 00 30 */	cmpwi r4, 0x30
/* 801CFE34 001CBA94  40 82 00 2C */	bne lbl_801CFE60
/* 801CFE38 001CBA98  7E 4C 93 78 */	mr r12, r18
/* 801CFE3C 001CBA9C  7E 63 9B 78 */	mr r3, r19
/* 801CFE40 001CBAA0  3B 60 00 04 */	li r27, 4
/* 801CFE44 001CBAA4  38 80 00 00 */	li r4, 0
/* 801CFE48 001CBAA8  38 A0 00 00 */	li r5, 0
/* 801CFE4C 001CBAAC  7D 89 03 A6 */	mtctr r12
/* 801CFE50 001CBAB0  3B 5A 00 01 */	addi r26, r26, 1
/* 801CFE54 001CBAB4  4E 80 04 21 */	bctrl
/* 801CFE58 001CBAB8  7C 64 1B 78 */	mr r4, r3
/* 801CFE5C 001CBABC  48 00 01 F4 */	b lbl_801D0050
lbl_801CFE60:
/* 801CFE60 001CBAC0  3B 60 00 08 */	li r27, 8
/* 801CFE64 001CBAC4  48 00 01 EC */	b lbl_801D0050
/* 801CFE68 001CBAC8  2C 04 00 58 */	cmpwi r4, 0x58
/* 801CFE6C 001CBACC  41 82 00 0C */	beq lbl_801CFE78
/* 801CFE70 001CBAD0  2C 04 00 78 */	cmpwi r4, 0x78
/* 801CFE74 001CBAD4  40 82 00 30 */	bne lbl_801CFEA4
lbl_801CFE78:
/* 801CFE78 001CBAD8  7E 4C 93 78 */	mr r12, r18
/* 801CFE7C 001CBADC  7E 63 9B 78 */	mr r3, r19
/* 801CFE80 001CBAE0  3A 00 00 10 */	li r16, 0x10
/* 801CFE84 001CBAE4  3B 60 00 08 */	li r27, 8
/* 801CFE88 001CBAE8  38 80 00 00 */	li r4, 0
/* 801CFE8C 001CBAEC  38 A0 00 00 */	li r5, 0
/* 801CFE90 001CBAF0  7D 89 03 A6 */	mtctr r12
/* 801CFE94 001CBAF4  3B 5A 00 01 */	addi r26, r26, 1
/* 801CFE98 001CBAF8  4E 80 04 21 */	bctrl
/* 801CFE9C 001CBAFC  7C 64 1B 78 */	mr r4, r3
/* 801CFEA0 001CBB00  48 00 01 B0 */	b lbl_801D0050
lbl_801CFEA4:
/* 801CFEA4 001CBB04  2C 10 00 00 */	cmpwi r16, 0
/* 801CFEA8 001CBB08  40 82 00 08 */	bne lbl_801CFEB0
/* 801CFEAC 001CBB0C  3A 00 00 08 */	li r16, 8
lbl_801CFEB0:
/* 801CFEB0 001CBB10  3B 60 00 10 */	li r27, 0x10
/* 801CFEB4 001CBB14  48 00 01 9C */	b lbl_801D0050
/* 801CFEB8 001CBB18  2C 10 00 00 */	cmpwi r16, 0
/* 801CFEBC 001CBB1C  40 82 00 08 */	bne lbl_801CFEC4
/* 801CFEC0 001CBB20  3A 00 00 0A */	li r16, 0xa
lbl_801CFEC4:
/* 801CFEC4 001CBB24  2C 17 00 00 */	cmpwi r23, 0
/* 801CFEC8 001CBB28  40 82 00 08 */	bne lbl_801CFED0
/* 801CFECC 001CBB2C  7E FF 83 96 */	divwu r23, r31, r16
lbl_801CFED0:
/* 801CFED0 001CBB30  2C 04 00 00 */	cmpwi r4, 0
/* 801CFED4 001CBB34  38 00 00 00 */	li r0, 0
/* 801CFED8 001CBB38  41 80 00 0C */	blt lbl_801CFEE4
/* 801CFEDC 001CBB3C  2C 04 01 00 */	cmpwi r4, 0x100
/* 801CFEE0 001CBB40  41 80 00 08 */	blt lbl_801CFEE8
lbl_801CFEE4:
/* 801CFEE4 001CBB44  38 00 00 01 */	li r0, 1
lbl_801CFEE8:
/* 801CFEE8 001CBB48  2C 00 00 00 */	cmpwi r0, 0
/* 801CFEEC 001CBB4C  41 82 00 0C */	beq lbl_801CFEF8
/* 801CFEF0 001CBB50  38 00 00 00 */	li r0, 0
/* 801CFEF4 001CBB54  48 00 00 18 */	b lbl_801CFF0C
lbl_801CFEF8:
/* 801CFEF8 001CBB58  80 7D 00 38 */	lwz r3, 0x38(r29)
/* 801CFEFC 001CBB5C  54 80 08 3C */	slwi r0, r4, 1
/* 801CFF00 001CBB60  80 63 00 08 */	lwz r3, 8(r3)
/* 801CFF04 001CBB64  7C 03 02 2E */	lhzx r0, r3, r0
/* 801CFF08 001CBB68  54 00 07 38 */	rlwinm r0, r0, 0, 0x1c, 0x1c
lbl_801CFF0C:
/* 801CFF0C 001CBB6C  2C 00 00 00 */	cmpwi r0, 0
/* 801CFF10 001CBB70  41 82 00 28 */	beq lbl_801CFF38
/* 801CFF14 001CBB74  38 84 FF D0 */	addi r4, r4, -48
/* 801CFF18 001CBB78  7C 04 80 00 */	cmpw r4, r16
/* 801CFF1C 001CBB7C  41 80 00 EC */	blt lbl_801D0008
/* 801CFF20 001CBB80  2C 1B 00 10 */	cmpwi r27, 0x10
/* 801CFF24 001CBB84  3B 60 00 40 */	li r27, 0x40
/* 801CFF28 001CBB88  40 82 00 08 */	bne lbl_801CFF30
/* 801CFF2C 001CBB8C  3B 60 00 20 */	li r27, 0x20
lbl_801CFF30:
/* 801CFF30 001CBB90  38 84 00 30 */	addi r4, r4, 0x30
/* 801CFF34 001CBB94  48 00 01 1C */	b lbl_801D0050
lbl_801CFF38:
/* 801CFF38 001CBB98  2C 04 00 00 */	cmpwi r4, 0
/* 801CFF3C 001CBB9C  38 00 00 00 */	li r0, 0
/* 801CFF40 001CBBA0  41 80 00 0C */	blt lbl_801CFF4C
/* 801CFF44 001CBBA4  2C 04 01 00 */	cmpwi r4, 0x100
/* 801CFF48 001CBBA8  41 80 00 08 */	blt lbl_801CFF50
lbl_801CFF4C:
/* 801CFF4C 001CBBAC  38 00 00 01 */	li r0, 1
lbl_801CFF50:
/* 801CFF50 001CBBB0  2C 00 00 00 */	cmpwi r0, 0
/* 801CFF54 001CBBB4  41 82 00 0C */	beq lbl_801CFF60
/* 801CFF58 001CBBB8  38 00 00 00 */	li r0, 0
/* 801CFF5C 001CBBBC  48 00 00 18 */	b lbl_801CFF74
lbl_801CFF60:
/* 801CFF60 001CBBC0  80 7D 00 38 */	lwz r3, 0x38(r29)
/* 801CFF64 001CBBC4  54 80 08 3C */	slwi r0, r4, 1
/* 801CFF68 001CBBC8  80 63 00 08 */	lwz r3, 8(r3)
/* 801CFF6C 001CBBCC  7C 03 02 2E */	lhzx r0, r3, r0
/* 801CFF70 001CBBD0  54 00 07 FE */	clrlwi r0, r0, 0x1f
lbl_801CFF74:
/* 801CFF74 001CBBD4  2C 00 00 00 */	cmpwi r0, 0
/* 801CFF78 001CBBD8  41 82 00 44 */	beq lbl_801CFFBC
/* 801CFF7C 001CBBDC  2C 04 00 00 */	cmpwi r4, 0
/* 801CFF80 001CBBE0  38 00 00 00 */	li r0, 0
/* 801CFF84 001CBBE4  41 80 00 0C */	blt lbl_801CFF90
/* 801CFF88 001CBBE8  2C 04 01 00 */	cmpwi r4, 0x100
/* 801CFF8C 001CBBEC  41 80 00 08 */	blt lbl_801CFF94
lbl_801CFF90:
/* 801CFF90 001CBBF0  38 00 00 01 */	li r0, 1
lbl_801CFF94:
/* 801CFF94 001CBBF4  2C 00 00 00 */	cmpwi r0, 0
/* 801CFF98 001CBBF8  41 82 00 0C */	beq lbl_801CFFA4
/* 801CFF9C 001CBBFC  7C 83 23 78 */	mr r3, r4
/* 801CFFA0 001CBC00  48 00 00 10 */	b lbl_801CFFB0
lbl_801CFFA4:
/* 801CFFA4 001CBC04  80 7D 00 38 */	lwz r3, 0x38(r29)
/* 801CFFA8 001CBC08  80 63 00 0C */	lwz r3, 0xc(r3)
/* 801CFFAC 001CBC0C  7C 63 20 AE */	lbzx r3, r3, r4
lbl_801CFFB0:
/* 801CFFB0 001CBC10  38 03 FF C9 */	addi r0, r3, -55
/* 801CFFB4 001CBC14  7C 00 80 00 */	cmpw r0, r16
/* 801CFFB8 001CBC18  41 80 00 1C */	blt lbl_801CFFD4
lbl_801CFFBC:
/* 801CFFBC 001CBC1C  2C 1B 00 10 */	cmpwi r27, 0x10
/* 801CFFC0 001CBC20  40 82 00 0C */	bne lbl_801CFFCC
/* 801CFFC4 001CBC24  3B 60 00 20 */	li r27, 0x20
/* 801CFFC8 001CBC28  48 00 00 88 */	b lbl_801D0050
lbl_801CFFCC:
/* 801CFFCC 001CBC2C  3B 60 00 40 */	li r27, 0x40
/* 801CFFD0 001CBC30  48 00 00 80 */	b lbl_801D0050
lbl_801CFFD4:
/* 801CFFD4 001CBC34  2C 04 00 00 */	cmpwi r4, 0
/* 801CFFD8 001CBC38  38 00 00 00 */	li r0, 0
/* 801CFFDC 001CBC3C  41 80 00 0C */	blt lbl_801CFFE8
/* 801CFFE0 001CBC40  2C 04 01 00 */	cmpwi r4, 0x100
/* 801CFFE4 001CBC44  41 80 00 08 */	blt lbl_801CFFEC
lbl_801CFFE8:
/* 801CFFE8 001CBC48  38 00 00 01 */	li r0, 1
lbl_801CFFEC:
/* 801CFFEC 001CBC4C  2C 00 00 00 */	cmpwi r0, 0
/* 801CFFF0 001CBC50  41 82 00 08 */	beq lbl_801CFFF8
/* 801CFFF4 001CBC54  48 00 00 10 */	b lbl_801D0004
lbl_801CFFF8:
/* 801CFFF8 001CBC58  80 7D 00 38 */	lwz r3, 0x38(r29)
/* 801CFFFC 001CBC5C  80 63 00 0C */	lwz r3, 0xc(r3)
/* 801D0000 001CBC60  7C 83 20 AE */	lbzx r4, r3, r4
lbl_801D0004:
/* 801D0004 001CBC64  38 84 FF C9 */	addi r4, r4, -55
lbl_801D0008:
/* 801D0008 001CBC68  7C 18 B8 40 */	cmplw r24, r23
/* 801D000C 001CBC6C  40 81 00 08 */	ble lbl_801D0014
/* 801D0010 001CBC70  93 D6 00 00 */	stw r30, 0(r22)
lbl_801D0014:
/* 801D0014 001CBC74  7F 18 81 D6 */	mullw r24, r24, r16
/* 801D0018 001CBC78  20 18 FF FF */	subfic r0, r24, -1
/* 801D001C 001CBC7C  7C 04 00 40 */	cmplw r4, r0
/* 801D0020 001CBC80  40 81 00 08 */	ble lbl_801D0028
/* 801D0024 001CBC84  93 D6 00 00 */	stw r30, 0(r22)
lbl_801D0028:
/* 801D0028 001CBC88  7E 4C 93 78 */	mr r12, r18
/* 801D002C 001CBC8C  7F 18 22 14 */	add r24, r24, r4
/* 801D0030 001CBC90  7E 63 9B 78 */	mr r3, r19
/* 801D0034 001CBC94  3B 60 00 10 */	li r27, 0x10
/* 801D0038 001CBC98  38 80 00 00 */	li r4, 0
/* 801D003C 001CBC9C  38 A0 00 00 */	li r5, 0
/* 801D0040 001CBCA0  7D 89 03 A6 */	mtctr r12
/* 801D0044 001CBCA4  3B 5A 00 01 */	addi r26, r26, 1
/* 801D0048 001CBCA8  4E 80 04 21 */	bctrl
/* 801D004C 001CBCAC  7C 64 1B 78 */	mr r4, r3
lbl_801D0050:
/* 801D0050 001CBCB0  7C 1A 88 00 */	cmpw r26, r17
/* 801D0054 001CBCB4  41 81 00 14 */	bgt lbl_801D0068
/* 801D0058 001CBCB8  2C 04 FF FF */	cmpwi r4, -1
/* 801D005C 001CBCBC  41 82 00 0C */	beq lbl_801D0068
/* 801D0060 001CBCC0  57 60 06 75 */	rlwinm. r0, r27, 0, 0x19, 0x1a
/* 801D0064 001CBCC4  41 82 FC D8 */	beq lbl_801CFD3C
lbl_801D0068:
/* 801D0068 001CBCC8  73 60 00 34 */	andi. r0, r27, 0x34
/* 801D006C 001CBCCC  40 82 00 10 */	bne lbl_801D007C
/* 801D0070 001CBCD0  3B 00 00 00 */	li r24, 0
/* 801D0074 001CBCD4  93 14 00 00 */	stw r24, 0(r20)
/* 801D0078 001CBCD8  48 00 00 10 */	b lbl_801D0088
lbl_801D007C:
/* 801D007C 001CBCDC  7C 7A CA 14 */	add r3, r26, r25
/* 801D0080 001CBCE0  38 03 FF FF */	addi r0, r3, -1
/* 801D0084 001CBCE4  90 14 00 00 */	stw r0, 0(r20)
lbl_801D0088:
/* 801D0088 001CBCE8  7E 4C 93 78 */	mr r12, r18
/* 801D008C 001CBCEC  7E 63 9B 78 */	mr r3, r19
/* 801D0090 001CBCF0  38 A0 00 01 */	li r5, 1
/* 801D0094 001CBCF4  7D 89 03 A6 */	mtctr r12
/* 801D0098 001CBCF8  4E 80 04 21 */	bctrl
/* 801D009C 001CBCFC  7F 03 C3 78 */	mr r3, r24
/* 801D00A0 001CBD00  BA 01 00 10 */	lmw r16, 0x10(r1)
/* 801D00A4 001CBD04  80 01 00 54 */	lwz r0, 0x54(r1)
/* 801D00A8 001CBD08  7C 08 03 A6 */	mtlr r0
/* 801D00AC 001CBD0C  38 21 00 50 */	addi r1, r1, 0x50
/* 801D00B0 001CBD10  4E 80 00 20 */	blr

.global __strtoull
__strtoull:
/* 801D00B4 001CBD14  94 21 FF A0 */	stwu r1, -0x60(r1)
/* 801D00B8 001CBD18  7C 08 02 A6 */	mflr r0
/* 801D00BC 001CBD1C  2C 03 00 00 */	cmpwi r3, 0
/* 801D00C0 001CBD20  90 01 00 64 */	stw r0, 0x64(r1)
/* 801D00C4 001CBD24  BD C1 00 18 */	stmw r14, 0x18(r1)
/* 801D00C8 001CBD28  3B 60 00 00 */	li r27, 0
/* 801D00CC 001CBD2C  7C 6F 1B 78 */	mr r15, r3
/* 801D00D0 001CBD30  7C 90 23 78 */	mr r16, r4
/* 801D00D4 001CBD34  90 E1 00 08 */	stw r7, 8(r1)
/* 801D00D8 001CBD38  7C B1 2B 78 */	mr r17, r5
/* 801D00DC 001CBD3C  7C D2 33 78 */	mr r18, r6
/* 801D00E0 001CBD40  7D 13 43 78 */	mr r19, r8
/* 801D00E4 001CBD44  7D 34 4B 78 */	mr r20, r9
/* 801D00E8 001CBD48  3B 80 00 01 */	li r28, 1
/* 801D00EC 001CBD4C  3B 40 00 00 */	li r26, 0
/* 801D00F0 001CBD50  3B 00 00 00 */	li r24, 0
/* 801D00F4 001CBD54  3B 20 00 00 */	li r25, 0
/* 801D00F8 001CBD58  3A C0 00 00 */	li r22, 0
/* 801D00FC 001CBD5C  3A E0 00 00 */	li r23, 0
/* 801D0100 001CBD60  93 69 00 00 */	stw r27, 0(r9)
/* 801D0104 001CBD64  93 68 00 00 */	stw r27, 0(r8)
/* 801D0108 001CBD68  41 80 00 1C */	blt lbl_801D0124
/* 801D010C 001CBD6C  2C 03 00 01 */	cmpwi r3, 1
/* 801D0110 001CBD70  41 82 00 14 */	beq lbl_801D0124
/* 801D0114 001CBD74  2C 03 00 24 */	cmpwi r3, 0x24
/* 801D0118 001CBD78  41 81 00 0C */	bgt lbl_801D0124
/* 801D011C 001CBD7C  2C 04 00 01 */	cmpwi r4, 1
/* 801D0120 001CBD80  40 80 00 0C */	bge lbl_801D012C
lbl_801D0124:
/* 801D0124 001CBD84  3B 80 00 40 */	li r28, 0x40
/* 801D0128 001CBD88  48 00 00 24 */	b lbl_801D014C
lbl_801D012C:
/* 801D012C 001CBD8C  7E 2C 8B 78 */	mr r12, r17
/* 801D0130 001CBD90  7E 43 93 78 */	mr r3, r18
/* 801D0134 001CBD94  38 80 00 00 */	li r4, 0
/* 801D0138 001CBD98  38 A0 00 00 */	li r5, 0
/* 801D013C 001CBD9C  7D 89 03 A6 */	mtctr r12
/* 801D0140 001CBDA0  3B 60 00 01 */	li r27, 1
/* 801D0144 001CBDA4  4E 80 04 21 */	bctrl
/* 801D0148 001CBDA8  7C 75 1B 78 */	mr r21, r3
lbl_801D014C:
/* 801D014C 001CBDAC  2C 0F 00 00 */	cmpwi r15, 0
/* 801D0150 001CBDB0  41 82 00 20 */	beq lbl_801D0170
/* 801D0154 001CBDB4  7D E6 7B 78 */	mr r6, r15
/* 801D0158 001CBDB8  7D E5 FE 70 */	srawi r5, r15, 0x1f
/* 801D015C 001CBDBC  38 60 FF FF */	li r3, -1
/* 801D0160 001CBDC0  38 80 FF FF */	li r4, -1
/* 801D0164 001CBDC4  4B FF 70 29 */	bl __div2u
/* 801D0168 001CBDC8  7C 96 23 78 */	mr r22, r4
/* 801D016C 001CBDCC  7C 77 1B 78 */	mr r23, r3
lbl_801D0170:
/* 801D0170 001CBDD0  3C 60 80 42 */	lis r3, lbl_80422D48@ha
/* 801D0174 001CBDD4  3B C0 00 01 */	li r30, 1
/* 801D0178 001CBDD8  3B E0 FF FF */	li r31, -1
/* 801D017C 001CBDDC  3D C0 80 42 */	lis r14, 0x8042
/* 801D0180 001CBDE0  3B A3 2D 48 */	addi r29, r3, lbl_80422D48@l
/* 801D0184 001CBDE4  48 00 03 7C */	b lbl_801D0500
lbl_801D0188:
/* 801D0188 001CBDE8  28 1C 00 10 */	cmplwi r28, 0x10
/* 801D018C 001CBDEC  41 81 03 74 */	bgt lbl_801D0500
/* 801D0190 001CBDF0  38 6E 31 44 */	addi r3, r14, 0x3144
/* 801D0194 001CBDF4  57 80 10 3A */	slwi r0, r28, 2
/* 801D0198 001CBDF8  7C 63 00 2E */	lwzx r3, r3, r0
/* 801D019C 001CBDFC  7C 69 03 A6 */	mtctr r3
/* 801D01A0 001CBE00  4E 80 04 20 */	bctr
/* 801D01A4 001CBE04  2C 15 00 00 */	cmpwi r21, 0
/* 801D01A8 001CBE08  38 00 00 00 */	li r0, 0
/* 801D01AC 001CBE0C  41 80 00 0C */	blt lbl_801D01B8
/* 801D01B0 001CBE10  2C 15 01 00 */	cmpwi r21, 0x100
/* 801D01B4 001CBE14  41 80 00 08 */	blt lbl_801D01BC
lbl_801D01B8:
/* 801D01B8 001CBE18  38 00 00 01 */	li r0, 1
lbl_801D01BC:
/* 801D01BC 001CBE1C  2C 00 00 00 */	cmpwi r0, 0
/* 801D01C0 001CBE20  41 82 00 0C */	beq lbl_801D01CC
/* 801D01C4 001CBE24  38 00 00 00 */	li r0, 0
/* 801D01C8 001CBE28  48 00 00 18 */	b lbl_801D01E0
lbl_801D01CC:
/* 801D01CC 001CBE2C  80 7D 00 38 */	lwz r3, 0x38(r29)
/* 801D01D0 001CBE30  56 A0 08 3C */	slwi r0, r21, 1
/* 801D01D4 001CBE34  80 63 00 08 */	lwz r3, 8(r3)
/* 801D01D8 001CBE38  7C 03 02 2E */	lhzx r0, r3, r0
/* 801D01DC 001CBE3C  54 00 05 EE */	rlwinm r0, r0, 0, 0x17, 0x17
lbl_801D01E0:
/* 801D01E0 001CBE40  2C 00 00 00 */	cmpwi r0, 0
/* 801D01E4 001CBE44  41 82 00 28 */	beq lbl_801D020C
/* 801D01E8 001CBE48  7E 2C 8B 78 */	mr r12, r17
/* 801D01EC 001CBE4C  7E 43 93 78 */	mr r3, r18
/* 801D01F0 001CBE50  38 80 00 00 */	li r4, 0
/* 801D01F4 001CBE54  38 A0 00 00 */	li r5, 0
/* 801D01F8 001CBE58  7D 89 03 A6 */	mtctr r12
/* 801D01FC 001CBE5C  4E 80 04 21 */	bctrl
/* 801D0200 001CBE60  7C 75 1B 78 */	mr r21, r3
/* 801D0204 001CBE64  3B 5A 00 01 */	addi r26, r26, 1
/* 801D0208 001CBE68  48 00 02 F8 */	b lbl_801D0500
lbl_801D020C:
/* 801D020C 001CBE6C  2C 15 00 2B */	cmpwi r21, 0x2b
/* 801D0210 001CBE70  40 82 00 28 */	bne lbl_801D0238
/* 801D0214 001CBE74  7E 2C 8B 78 */	mr r12, r17
/* 801D0218 001CBE78  7E 43 93 78 */	mr r3, r18
/* 801D021C 001CBE7C  38 80 00 00 */	li r4, 0
/* 801D0220 001CBE80  38 A0 00 00 */	li r5, 0
/* 801D0224 001CBE84  7D 89 03 A6 */	mtctr r12
/* 801D0228 001CBE88  3B 7B 00 01 */	addi r27, r27, 1
/* 801D022C 001CBE8C  4E 80 04 21 */	bctrl
/* 801D0230 001CBE90  7C 75 1B 78 */	mr r21, r3
/* 801D0234 001CBE94  48 00 00 30 */	b lbl_801D0264
lbl_801D0238:
/* 801D0238 001CBE98  2C 15 00 2D */	cmpwi r21, 0x2d
/* 801D023C 001CBE9C  40 82 00 28 */	bne lbl_801D0264
/* 801D0240 001CBEA0  7E 2C 8B 78 */	mr r12, r17
/* 801D0244 001CBEA4  7E 43 93 78 */	mr r3, r18
/* 801D0248 001CBEA8  38 80 00 00 */	li r4, 0
/* 801D024C 001CBEAC  38 A0 00 00 */	li r5, 0
/* 801D0250 001CBEB0  7D 89 03 A6 */	mtctr r12
/* 801D0254 001CBEB4  3B 7B 00 01 */	addi r27, r27, 1
/* 801D0258 001CBEB8  4E 80 04 21 */	bctrl
/* 801D025C 001CBEBC  7C 75 1B 78 */	mr r21, r3
/* 801D0260 001CBEC0  93 D3 00 00 */	stw r30, 0(r19)
lbl_801D0264:
/* 801D0264 001CBEC4  3B 80 00 02 */	li r28, 2
/* 801D0268 001CBEC8  48 00 02 98 */	b lbl_801D0500
/* 801D026C 001CBECC  2C 0F 00 00 */	cmpwi r15, 0
/* 801D0270 001CBED0  41 82 00 0C */	beq lbl_801D027C
/* 801D0274 001CBED4  2C 0F 00 10 */	cmpwi r15, 0x10
/* 801D0278 001CBED8  40 82 00 34 */	bne lbl_801D02AC
lbl_801D027C:
/* 801D027C 001CBEDC  2C 15 00 30 */	cmpwi r21, 0x30
/* 801D0280 001CBEE0  40 82 00 2C */	bne lbl_801D02AC
/* 801D0284 001CBEE4  7E 2C 8B 78 */	mr r12, r17
/* 801D0288 001CBEE8  7E 43 93 78 */	mr r3, r18
/* 801D028C 001CBEEC  3B 80 00 04 */	li r28, 4
/* 801D0290 001CBEF0  38 80 00 00 */	li r4, 0
/* 801D0294 001CBEF4  38 A0 00 00 */	li r5, 0
/* 801D0298 001CBEF8  7D 89 03 A6 */	mtctr r12
/* 801D029C 001CBEFC  3B 7B 00 01 */	addi r27, r27, 1
/* 801D02A0 001CBF00  4E 80 04 21 */	bctrl
/* 801D02A4 001CBF04  7C 75 1B 78 */	mr r21, r3
/* 801D02A8 001CBF08  48 00 02 58 */	b lbl_801D0500
lbl_801D02AC:
/* 801D02AC 001CBF0C  3B 80 00 08 */	li r28, 8
/* 801D02B0 001CBF10  48 00 02 50 */	b lbl_801D0500
/* 801D02B4 001CBF14  2C 15 00 58 */	cmpwi r21, 0x58
/* 801D02B8 001CBF18  41 82 00 0C */	beq lbl_801D02C4
/* 801D02BC 001CBF1C  2C 15 00 78 */	cmpwi r21, 0x78
/* 801D02C0 001CBF20  40 82 00 30 */	bne lbl_801D02F0
lbl_801D02C4:
/* 801D02C4 001CBF24  7E 2C 8B 78 */	mr r12, r17
/* 801D02C8 001CBF28  7E 43 93 78 */	mr r3, r18
/* 801D02CC 001CBF2C  39 E0 00 10 */	li r15, 0x10
/* 801D02D0 001CBF30  3B 80 00 08 */	li r28, 8
/* 801D02D4 001CBF34  38 80 00 00 */	li r4, 0
/* 801D02D8 001CBF38  38 A0 00 00 */	li r5, 0
/* 801D02DC 001CBF3C  7D 89 03 A6 */	mtctr r12
/* 801D02E0 001CBF40  3B 7B 00 01 */	addi r27, r27, 1
/* 801D02E4 001CBF44  4E 80 04 21 */	bctrl
/* 801D02E8 001CBF48  7C 75 1B 78 */	mr r21, r3
/* 801D02EC 001CBF4C  48 00 02 14 */	b lbl_801D0500
lbl_801D02F0:
/* 801D02F0 001CBF50  2C 0F 00 00 */	cmpwi r15, 0
/* 801D02F4 001CBF54  40 82 00 08 */	bne lbl_801D02FC
/* 801D02F8 001CBF58  39 E0 00 08 */	li r15, 8
lbl_801D02FC:
/* 801D02FC 001CBF5C  3B 80 00 10 */	li r28, 0x10
/* 801D0300 001CBF60  48 00 02 00 */	b lbl_801D0500
/* 801D0304 001CBF64  2C 0F 00 00 */	cmpwi r15, 0
/* 801D0308 001CBF68  40 82 00 08 */	bne lbl_801D0310
/* 801D030C 001CBF6C  39 E0 00 0A */	li r15, 0xa
lbl_801D0310:
/* 801D0310 001CBF70  38 00 00 00 */	li r0, 0
/* 801D0314 001CBF74  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 801D0318 001CBF78  7E E0 02 78 */	xor r0, r23, r0
/* 801D031C 001CBF7C  7E C0 03 79 */	or. r0, r22, r0
/* 801D0320 001CBF80  40 82 00 20 */	bne lbl_801D0340
/* 801D0324 001CBF84  7D E6 7B 78 */	mr r6, r15
/* 801D0328 001CBF88  7D E5 FE 70 */	srawi r5, r15, 0x1f
/* 801D032C 001CBF8C  38 60 FF FF */	li r3, -1
/* 801D0330 001CBF90  38 80 FF FF */	li r4, -1
/* 801D0334 001CBF94  4B FF 6E 59 */	bl __div2u
/* 801D0338 001CBF98  7C 96 23 78 */	mr r22, r4
/* 801D033C 001CBF9C  7C 77 1B 78 */	mr r23, r3
lbl_801D0340:
/* 801D0340 001CBFA0  2C 15 00 00 */	cmpwi r21, 0
/* 801D0344 001CBFA4  38 00 00 00 */	li r0, 0
/* 801D0348 001CBFA8  41 80 00 0C */	blt lbl_801D0354
/* 801D034C 001CBFAC  2C 15 01 00 */	cmpwi r21, 0x100
/* 801D0350 001CBFB0  41 80 00 08 */	blt lbl_801D0358
lbl_801D0354:
/* 801D0354 001CBFB4  38 00 00 01 */	li r0, 1
lbl_801D0358:
/* 801D0358 001CBFB8  2C 00 00 00 */	cmpwi r0, 0
/* 801D035C 001CBFBC  41 82 00 0C */	beq lbl_801D0368
/* 801D0360 001CBFC0  38 00 00 00 */	li r0, 0
/* 801D0364 001CBFC4  48 00 00 18 */	b lbl_801D037C
lbl_801D0368:
/* 801D0368 001CBFC8  80 7D 00 38 */	lwz r3, 0x38(r29)
/* 801D036C 001CBFCC  56 A0 08 3C */	slwi r0, r21, 1
/* 801D0370 001CBFD0  80 63 00 08 */	lwz r3, 8(r3)
/* 801D0374 001CBFD4  7C 03 02 2E */	lhzx r0, r3, r0
/* 801D0378 001CBFD8  54 00 07 38 */	rlwinm r0, r0, 0, 0x1c, 0x1c
lbl_801D037C:
/* 801D037C 001CBFDC  2C 00 00 00 */	cmpwi r0, 0
/* 801D0380 001CBFE0  41 82 00 28 */	beq lbl_801D03A8
/* 801D0384 001CBFE4  3A B5 FF D0 */	addi r21, r21, -48
/* 801D0388 001CBFE8  7C 15 78 00 */	cmpw r21, r15
/* 801D038C 001CBFEC  41 80 00 EC */	blt lbl_801D0478
/* 801D0390 001CBFF0  2C 1C 00 10 */	cmpwi r28, 0x10
/* 801D0394 001CBFF4  3B 80 00 40 */	li r28, 0x40
/* 801D0398 001CBFF8  40 82 00 08 */	bne lbl_801D03A0
/* 801D039C 001CBFFC  3B 80 00 20 */	li r28, 0x20
lbl_801D03A0:
/* 801D03A0 001CC000  3A B5 00 30 */	addi r21, r21, 0x30
/* 801D03A4 001CC004  48 00 01 5C */	b lbl_801D0500
lbl_801D03A8:
/* 801D03A8 001CC008  2C 15 00 00 */	cmpwi r21, 0
/* 801D03AC 001CC00C  38 00 00 00 */	li r0, 0
/* 801D03B0 001CC010  41 80 00 0C */	blt lbl_801D03BC
/* 801D03B4 001CC014  2C 15 01 00 */	cmpwi r21, 0x100
/* 801D03B8 001CC018  41 80 00 08 */	blt lbl_801D03C0
lbl_801D03BC:
/* 801D03BC 001CC01C  38 00 00 01 */	li r0, 1
lbl_801D03C0:
/* 801D03C0 001CC020  2C 00 00 00 */	cmpwi r0, 0
/* 801D03C4 001CC024  41 82 00 0C */	beq lbl_801D03D0
/* 801D03C8 001CC028  38 00 00 00 */	li r0, 0
/* 801D03CC 001CC02C  48 00 00 18 */	b lbl_801D03E4
lbl_801D03D0:
/* 801D03D0 001CC030  80 7D 00 38 */	lwz r3, 0x38(r29)
/* 801D03D4 001CC034  56 A0 08 3C */	slwi r0, r21, 1
/* 801D03D8 001CC038  80 63 00 08 */	lwz r3, 8(r3)
/* 801D03DC 001CC03C  7C 03 02 2E */	lhzx r0, r3, r0
/* 801D03E0 001CC040  54 00 07 FE */	clrlwi r0, r0, 0x1f
lbl_801D03E4:
/* 801D03E4 001CC044  2C 00 00 00 */	cmpwi r0, 0
/* 801D03E8 001CC048  41 82 00 44 */	beq lbl_801D042C
/* 801D03EC 001CC04C  2C 15 00 00 */	cmpwi r21, 0
/* 801D03F0 001CC050  38 00 00 00 */	li r0, 0
/* 801D03F4 001CC054  41 80 00 0C */	blt lbl_801D0400
/* 801D03F8 001CC058  2C 15 01 00 */	cmpwi r21, 0x100
/* 801D03FC 001CC05C  41 80 00 08 */	blt lbl_801D0404
lbl_801D0400:
/* 801D0400 001CC060  38 00 00 01 */	li r0, 1
lbl_801D0404:
/* 801D0404 001CC064  2C 00 00 00 */	cmpwi r0, 0
/* 801D0408 001CC068  41 82 00 0C */	beq lbl_801D0414
/* 801D040C 001CC06C  7E A3 AB 78 */	mr r3, r21
/* 801D0410 001CC070  48 00 00 10 */	b lbl_801D0420
lbl_801D0414:
/* 801D0414 001CC074  80 7D 00 38 */	lwz r3, 0x38(r29)
/* 801D0418 001CC078  80 63 00 0C */	lwz r3, 0xc(r3)
/* 801D041C 001CC07C  7C 63 A8 AE */	lbzx r3, r3, r21
lbl_801D0420:
/* 801D0420 001CC080  38 03 FF C9 */	addi r0, r3, -55
/* 801D0424 001CC084  7C 00 78 00 */	cmpw r0, r15
/* 801D0428 001CC088  41 80 00 1C */	blt lbl_801D0444
lbl_801D042C:
/* 801D042C 001CC08C  2C 1C 00 10 */	cmpwi r28, 0x10
/* 801D0430 001CC090  40 82 00 0C */	bne lbl_801D043C
/* 801D0434 001CC094  3B 80 00 20 */	li r28, 0x20
/* 801D0438 001CC098  48 00 00 C8 */	b lbl_801D0500
lbl_801D043C:
/* 801D043C 001CC09C  3B 80 00 40 */	li r28, 0x40
/* 801D0440 001CC0A0  48 00 00 C0 */	b lbl_801D0500
lbl_801D0444:
/* 801D0444 001CC0A4  2C 15 00 00 */	cmpwi r21, 0
/* 801D0448 001CC0A8  38 00 00 00 */	li r0, 0
/* 801D044C 001CC0AC  41 80 00 0C */	blt lbl_801D0458
/* 801D0450 001CC0B0  2C 15 01 00 */	cmpwi r21, 0x100
/* 801D0454 001CC0B4  41 80 00 08 */	blt lbl_801D045C
lbl_801D0458:
/* 801D0458 001CC0B8  38 00 00 01 */	li r0, 1
lbl_801D045C:
/* 801D045C 001CC0BC  2C 00 00 00 */	cmpwi r0, 0
/* 801D0460 001CC0C0  41 82 00 08 */	beq lbl_801D0468
/* 801D0464 001CC0C4  48 00 00 10 */	b lbl_801D0474
lbl_801D0468:
/* 801D0468 001CC0C8  80 7D 00 38 */	lwz r3, 0x38(r29)
/* 801D046C 001CC0CC  80 63 00 0C */	lwz r3, 0xc(r3)
/* 801D0470 001CC0D0  7E A3 A8 AE */	lbzx r21, r3, r21
lbl_801D0474:
/* 801D0474 001CC0D4  3A B5 FF C9 */	addi r21, r21, -55
lbl_801D0478:
/* 801D0478 001CC0D8  7C 18 B0 10 */	subfc r0, r24, r22
/* 801D047C 001CC0DC  7C 19 B9 10 */	subfe r0, r25, r23
/* 801D0480 001CC0E0  7C 16 B1 10 */	subfe r0, r22, r22
/* 801D0484 001CC0E4  7C 00 00 D1 */	neg. r0, r0
/* 801D0488 001CC0E8  41 82 00 08 */	beq lbl_801D0490
/* 801D048C 001CC0EC  93 D4 00 00 */	stw r30, 0(r20)
lbl_801D0490:
/* 801D0490 001CC0F0  7C 78 78 16 */	mulhwu r3, r24, r15
/* 801D0494 001CC0F4  7D E5 FE 70 */	srawi r5, r15, 0x1f
/* 801D0498 001CC0F8  7E A6 FE 70 */	srawi r6, r21, 0x1f
/* 801D049C 001CC0FC  7C 99 79 D6 */	mullw r4, r25, r15
/* 801D04A0 001CC100  7C 83 22 14 */	add r4, r3, r4
/* 801D04A4 001CC104  7C 78 29 D6 */	mullw r3, r24, r5
/* 801D04A8 001CC108  7C 18 79 D6 */	mullw r0, r24, r15
/* 801D04AC 001CC10C  7C E4 1A 14 */	add r7, r4, r3
/* 801D04B0 001CC110  7C A0 F8 10 */	subfc r5, r0, r31
/* 801D04B4 001CC114  7C 87 F9 10 */	subfe r4, r7, r31
/* 801D04B8 001CC118  7C 75 28 10 */	subfc r3, r21, r5
/* 801D04BC 001CC11C  7C 66 21 10 */	subfe r3, r6, r4
/* 801D04C0 001CC120  7C 65 29 10 */	subfe r3, r5, r5
/* 801D04C4 001CC124  7C 63 00 D1 */	neg. r3, r3
/* 801D04C8 001CC128  41 82 00 08 */	beq lbl_801D04D0
/* 801D04CC 001CC12C  93 D4 00 00 */	stw r30, 0(r20)
lbl_801D04D0:
/* 801D04D0 001CC130  7E A4 FE 70 */	srawi r4, r21, 0x1f
/* 801D04D4 001CC134  7E 2C 8B 78 */	mr r12, r17
/* 801D04D8 001CC138  7F 00 A8 14 */	addc r24, r0, r21
/* 801D04DC 001CC13C  7E 43 93 78 */	mr r3, r18
/* 801D04E0 001CC140  7F 27 21 14 */	adde r25, r7, r4
/* 801D04E4 001CC144  3B 80 00 10 */	li r28, 0x10
/* 801D04E8 001CC148  38 80 00 00 */	li r4, 0
/* 801D04EC 001CC14C  38 A0 00 00 */	li r5, 0
/* 801D04F0 001CC150  7D 89 03 A6 */	mtctr r12
/* 801D04F4 001CC154  3B 7B 00 01 */	addi r27, r27, 1
/* 801D04F8 001CC158  4E 80 04 21 */	bctrl
/* 801D04FC 001CC15C  7C 75 1B 78 */	mr r21, r3
lbl_801D0500:
/* 801D0500 001CC160  7C 1B 80 00 */	cmpw r27, r16
/* 801D0504 001CC164  41 81 00 14 */	bgt lbl_801D0518
/* 801D0508 001CC168  2C 15 FF FF */	cmpwi r21, -1
/* 801D050C 001CC16C  41 82 00 0C */	beq lbl_801D0518
/* 801D0510 001CC170  57 80 06 75 */	rlwinm. r0, r28, 0, 0x19, 0x1a
/* 801D0514 001CC174  41 82 FC 74 */	beq lbl_801D0188
lbl_801D0518:
/* 801D0518 001CC178  73 80 00 34 */	andi. r0, r28, 0x34
/* 801D051C 001CC17C  40 82 00 18 */	bne lbl_801D0534
/* 801D0520 001CC180  80 61 00 08 */	lwz r3, 8(r1)
/* 801D0524 001CC184  3B 00 00 00 */	li r24, 0
/* 801D0528 001CC188  3B 20 00 00 */	li r25, 0
/* 801D052C 001CC18C  93 03 00 00 */	stw r24, 0(r3)
/* 801D0530 001CC190  48 00 00 14 */	b lbl_801D0544
lbl_801D0534:
/* 801D0534 001CC194  7C 7B D2 14 */	add r3, r27, r26
/* 801D0538 001CC198  38 03 FF FF */	addi r0, r3, -1
/* 801D053C 001CC19C  80 61 00 08 */	lwz r3, 8(r1)
/* 801D0540 001CC1A0  90 03 00 00 */	stw r0, 0(r3)
lbl_801D0544:
/* 801D0544 001CC1A4  7E 2C 8B 78 */	mr r12, r17
/* 801D0548 001CC1A8  7E 43 93 78 */	mr r3, r18
/* 801D054C 001CC1AC  7E A4 AB 78 */	mr r4, r21
/* 801D0550 001CC1B0  38 A0 00 01 */	li r5, 1
/* 801D0554 001CC1B4  7D 89 03 A6 */	mtctr r12
/* 801D0558 001CC1B8  4E 80 04 21 */	bctrl
/* 801D055C 001CC1BC  7F 04 C3 78 */	mr r4, r24
/* 801D0560 001CC1C0  7F 23 CB 78 */	mr r3, r25
/* 801D0564 001CC1C4  B9 C1 00 18 */	lmw r14, 0x18(r1)
/* 801D0568 001CC1C8  80 01 00 64 */	lwz r0, 0x64(r1)
/* 801D056C 001CC1CC  7C 08 03 A6 */	mtlr r0
/* 801D0570 001CC1D0  38 21 00 60 */	addi r1, r1, 0x60
/* 801D0574 001CC1D4  4E 80 00 20 */	blr

.global strtoul
strtoul:
/* 801D0578 001CC1D8  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 801D057C 001CC1DC  7C 08 02 A6 */	mflr r0
/* 801D0580 001CC1E0  3C E0 80 00 */	lis r7, 0x7FFFFFFF@ha
/* 801D0584 001CC1E4  3C C0 80 1D */	lis r6, __StringRead@ha
/* 801D0588 001CC1E8  90 01 00 34 */	stw r0, 0x34(r1)
/* 801D058C 001CC1EC  38 00 00 00 */	li r0, 0
/* 801D0590 001CC1F0  39 01 00 0C */	addi r8, r1, 0xc
/* 801D0594 001CC1F4  39 21 00 08 */	addi r9, r1, 8
/* 801D0598 001CC1F8  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 801D059C 001CC1FC  7C 9F 23 78 */	mr r31, r4
/* 801D05A0 001CC200  38 87 FF FF */	addi r4, r7, 0x7FFFFFFF@l
/* 801D05A4 001CC204  38 E1 00 10 */	addi r7, r1, 0x10
/* 801D05A8 001CC208  93 C1 00 28 */	stw r30, 0x28(r1)
/* 801D05AC 001CC20C  7C 7E 1B 78 */	mr r30, r3
/* 801D05B0 001CC210  7C A3 2B 78 */	mr r3, r5
/* 801D05B4 001CC214  38 A6 E1 78 */	addi r5, r6, __StringRead@l
/* 801D05B8 001CC218  93 C1 00 18 */	stw r30, 0x18(r1)
/* 801D05BC 001CC21C  38 C1 00 18 */	addi r6, r1, 0x18
/* 801D05C0 001CC220  90 01 00 1C */	stw r0, 0x1c(r1)
/* 801D05C4 001CC224  4B FF F6 C1 */	bl __strtoul
/* 801D05C8 001CC228  2C 1F 00 00 */	cmpwi r31, 0
/* 801D05CC 001CC22C  41 82 00 10 */	beq lbl_801D05DC
/* 801D05D0 001CC230  80 01 00 10 */	lwz r0, 0x10(r1)
/* 801D05D4 001CC234  7C 1E 02 14 */	add r0, r30, r0
/* 801D05D8 001CC238  90 1F 00 00 */	stw r0, 0(r31)
lbl_801D05DC:
/* 801D05DC 001CC23C  80 01 00 08 */	lwz r0, 8(r1)
/* 801D05E0 001CC240  2C 00 00 00 */	cmpwi r0, 0
/* 801D05E4 001CC244  41 82 00 14 */	beq lbl_801D05F8
/* 801D05E8 001CC248  38 00 00 22 */	li r0, 0x22
/* 801D05EC 001CC24C  38 60 FF FF */	li r3, -1
/* 801D05F0 001CC250  90 0D 9F C8 */	stw r0, lbl_8063F288-_SDA_BASE_(r13)
/* 801D05F4 001CC254  48 00 00 14 */	b lbl_801D0608
lbl_801D05F8:
/* 801D05F8 001CC258  80 01 00 0C */	lwz r0, 0xc(r1)
/* 801D05FC 001CC25C  2C 00 00 00 */	cmpwi r0, 0
/* 801D0600 001CC260  41 82 00 08 */	beq lbl_801D0608
/* 801D0604 001CC264  7C 63 00 D0 */	neg r3, r3
lbl_801D0608:
/* 801D0608 001CC268  80 01 00 34 */	lwz r0, 0x34(r1)
/* 801D060C 001CC26C  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 801D0610 001CC270  83 C1 00 28 */	lwz r30, 0x28(r1)
/* 801D0614 001CC274  7C 08 03 A6 */	mtlr r0
/* 801D0618 001CC278  38 21 00 30 */	addi r1, r1, 0x30
/* 801D061C 001CC27C  4E 80 00 20 */	blr

.global strtol
strtol:
/* 801D0620 001CC280  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 801D0624 001CC284  7C 08 02 A6 */	mflr r0
/* 801D0628 001CC288  3C E0 80 00 */	lis r7, 0x7FFFFFFF@ha
/* 801D062C 001CC28C  3C C0 80 1D */	lis r6, __StringRead@ha
/* 801D0630 001CC290  90 01 00 34 */	stw r0, 0x34(r1)
/* 801D0634 001CC294  38 00 00 00 */	li r0, 0
/* 801D0638 001CC298  39 01 00 0C */	addi r8, r1, 0xc
/* 801D063C 001CC29C  39 21 00 08 */	addi r9, r1, 8
/* 801D0640 001CC2A0  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 801D0644 001CC2A4  7C 9F 23 78 */	mr r31, r4
/* 801D0648 001CC2A8  38 87 FF FF */	addi r4, r7, 0x7FFFFFFF@l
/* 801D064C 001CC2AC  38 E1 00 10 */	addi r7, r1, 0x10
/* 801D0650 001CC2B0  93 C1 00 28 */	stw r30, 0x28(r1)
/* 801D0654 001CC2B4  7C 7E 1B 78 */	mr r30, r3
/* 801D0658 001CC2B8  7C A3 2B 78 */	mr r3, r5
/* 801D065C 001CC2BC  38 A6 E1 78 */	addi r5, r6, __StringRead@l
/* 801D0660 001CC2C0  93 C1 00 18 */	stw r30, 0x18(r1)
/* 801D0664 001CC2C4  38 C1 00 18 */	addi r6, r1, 0x18
/* 801D0668 001CC2C8  90 01 00 1C */	stw r0, 0x1c(r1)
/* 801D066C 001CC2CC  4B FF F6 19 */	bl __strtoul
/* 801D0670 001CC2D0  2C 1F 00 00 */	cmpwi r31, 0
/* 801D0674 001CC2D4  41 82 00 10 */	beq lbl_801D0684
/* 801D0678 001CC2D8  80 01 00 10 */	lwz r0, 0x10(r1)
/* 801D067C 001CC2DC  7C 1E 02 14 */	add r0, r30, r0
/* 801D0680 001CC2E0  90 1F 00 00 */	stw r0, 0(r31)
lbl_801D0684:
/* 801D0684 001CC2E4  80 01 00 08 */	lwz r0, 8(r1)
/* 801D0688 001CC2E8  2C 00 00 00 */	cmpwi r0, 0
/* 801D068C 001CC2EC  40 82 00 34 */	bne lbl_801D06C0
/* 801D0690 001CC2F0  80 A1 00 0C */	lwz r5, 0xc(r1)
/* 801D0694 001CC2F4  2C 05 00 00 */	cmpwi r5, 0
/* 801D0698 001CC2F8  40 82 00 14 */	bne lbl_801D06AC
/* 801D069C 001CC2FC  3C 80 80 00 */	lis r4, 0x7FFFFFFF@ha
/* 801D06A0 001CC300  38 04 FF FF */	addi r0, r4, 0x7FFFFFFF@l
/* 801D06A4 001CC304  7C 03 00 40 */	cmplw r3, r0
/* 801D06A8 001CC308  41 81 00 18 */	bgt lbl_801D06C0
lbl_801D06AC:
/* 801D06AC 001CC30C  2C 05 00 00 */	cmpwi r5, 0
/* 801D06B0 001CC310  41 82 00 38 */	beq lbl_801D06E8
/* 801D06B4 001CC314  3C 00 80 00 */	lis r0, 0x8000
/* 801D06B8 001CC318  7C 03 00 40 */	cmplw r3, r0
/* 801D06BC 001CC31C  40 81 00 2C */	ble lbl_801D06E8
lbl_801D06C0:
/* 801D06C0 001CC320  80 A1 00 0C */	lwz r5, 0xc(r1)
/* 801D06C4 001CC324  38 00 00 22 */	li r0, 0x22
/* 801D06C8 001CC328  3C 60 80 00 */	lis r3, 0x7FFFFFFF@ha
/* 801D06CC 001CC32C  90 0D 9F C8 */	stw r0, lbl_8063F288-_SDA_BASE_(r13)
/* 801D06D0 001CC330  7C 85 00 D0 */	neg r4, r5
/* 801D06D4 001CC334  7C 84 2B 78 */	or r4, r4, r5
/* 801D06D8 001CC338  38 03 FF FF */	addi r0, r3, 0x7FFFFFFF@l
/* 801D06DC 001CC33C  54 83 0F FE */	srwi r3, r4, 0x1f
/* 801D06E0 001CC340  7C 63 02 14 */	add r3, r3, r0
/* 801D06E4 001CC344  48 00 00 10 */	b lbl_801D06F4
lbl_801D06E8:
/* 801D06E8 001CC348  2C 05 00 00 */	cmpwi r5, 0
/* 801D06EC 001CC34C  41 82 00 08 */	beq lbl_801D06F4
/* 801D06F0 001CC350  7C 63 00 D0 */	neg r3, r3
lbl_801D06F4:
/* 801D06F4 001CC354  80 01 00 34 */	lwz r0, 0x34(r1)
/* 801D06F8 001CC358  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 801D06FC 001CC35C  83 C1 00 28 */	lwz r30, 0x28(r1)
/* 801D0700 001CC360  7C 08 03 A6 */	mtlr r0
/* 801D0704 001CC364  38 21 00 30 */	addi r1, r1, 0x30
/* 801D0708 001CC368  4E 80 00 20 */	blr

.global atoi
atoi:
/* 801D070C 001CC36C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 801D0710 001CC370  7C 08 02 A6 */	mflr r0
/* 801D0714 001CC374  3C A0 80 1D */	lis r5, __StringRead@ha
/* 801D0718 001CC378  90 01 00 34 */	stw r0, 0x34(r1)
/* 801D071C 001CC37C  38 00 00 00 */	li r0, 0
/* 801D0720 001CC380  38 A5 E1 78 */	addi r5, r5, __StringRead@l
/* 801D0724 001CC384  38 C1 00 18 */	addi r6, r1, 0x18
/* 801D0728 001CC388  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 801D072C 001CC38C  3F E0 80 00 */	lis r31, 0x7FFFFFFF@ha
/* 801D0730 001CC390  38 9F FF FF */	addi r4, r31, 0x7FFFFFFF@l
/* 801D0734 001CC394  38 E1 00 08 */	addi r7, r1, 8
/* 801D0738 001CC398  90 61 00 18 */	stw r3, 0x18(r1)
/* 801D073C 001CC39C  39 01 00 0C */	addi r8, r1, 0xc
/* 801D0740 001CC3A0  39 21 00 10 */	addi r9, r1, 0x10
/* 801D0744 001CC3A4  38 60 00 0A */	li r3, 0xa
/* 801D0748 001CC3A8  90 01 00 1C */	stw r0, 0x1c(r1)
/* 801D074C 001CC3AC  4B FF F5 39 */	bl __strtoul
/* 801D0750 001CC3B0  80 01 00 10 */	lwz r0, 0x10(r1)
/* 801D0754 001CC3B4  2C 00 00 00 */	cmpwi r0, 0
/* 801D0758 001CC3B8  40 82 00 30 */	bne lbl_801D0788
/* 801D075C 001CC3BC  80 81 00 0C */	lwz r4, 0xc(r1)
/* 801D0760 001CC3C0  2C 04 00 00 */	cmpwi r4, 0
/* 801D0764 001CC3C4  40 82 00 10 */	bne lbl_801D0774
/* 801D0768 001CC3C8  38 1F FF FF */	addi r0, r31, -1
/* 801D076C 001CC3CC  7C 03 00 40 */	cmplw r3, r0
/* 801D0770 001CC3D0  41 81 00 18 */	bgt lbl_801D0788
lbl_801D0774:
/* 801D0774 001CC3D4  2C 04 00 00 */	cmpwi r4, 0
/* 801D0778 001CC3D8  41 82 00 38 */	beq lbl_801D07B0
/* 801D077C 001CC3DC  3C 00 80 00 */	lis r0, 0x8000
/* 801D0780 001CC3E0  7C 03 00 40 */	cmplw r3, r0
/* 801D0784 001CC3E4  40 81 00 2C */	ble lbl_801D07B0
lbl_801D0788:
/* 801D0788 001CC3E8  80 A1 00 0C */	lwz r5, 0xc(r1)
/* 801D078C 001CC3EC  38 00 00 22 */	li r0, 0x22
/* 801D0790 001CC3F0  3C 60 80 00 */	lis r3, 0x7FFFFFFF@ha
/* 801D0794 001CC3F4  90 0D 9F C8 */	stw r0, lbl_8063F288-_SDA_BASE_(r13)
/* 801D0798 001CC3F8  7C 85 00 D0 */	neg r4, r5
/* 801D079C 001CC3FC  7C 84 2B 78 */	or r4, r4, r5
/* 801D07A0 001CC400  38 03 FF FF */	addi r0, r3, 0x7FFFFFFF@l
/* 801D07A4 001CC404  54 83 0F FE */	srwi r3, r4, 0x1f
/* 801D07A8 001CC408  7C 63 02 14 */	add r3, r3, r0
/* 801D07AC 001CC40C  48 00 00 10 */	b lbl_801D07BC
lbl_801D07B0:
/* 801D07B0 001CC410  2C 04 00 00 */	cmpwi r4, 0
/* 801D07B4 001CC414  41 82 00 08 */	beq lbl_801D07BC
/* 801D07B8 001CC418  7C 63 00 D0 */	neg r3, r3
lbl_801D07BC:
/* 801D07BC 001CC41C  80 01 00 34 */	lwz r0, 0x34(r1)
/* 801D07C0 001CC420  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 801D07C4 001CC424  7C 08 03 A6 */	mtlr r0
/* 801D07C8 001CC428  38 21 00 30 */	addi r1, r1, 0x30
/* 801D07CC 001CC42C  4E 80 00 20 */	blr