summaryrefslogtreecommitdiff
path: root/asm/darray.s
blob: d7bdbbbbb8b19f06317d46e691dd6bd21b9e4c52 (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
.include "macros.inc"

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

.global ArrayNew
ArrayNew:
/* 80335DB8 00331A18  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80335DBC 00331A1C  7C 08 02 A6 */	mflr r0
/* 80335DC0 00331A20  90 01 00 24 */	stw r0, 0x24(r1)
/* 80335DC4 00331A24  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80335DC8 00331A28  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80335DCC 00331A2C  7C BE 2B 78 */	mr r30, r5
/* 80335DD0 00331A30  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80335DD4 00331A34  7C 9D 23 78 */	mr r29, r4
/* 80335DD8 00331A38  93 81 00 10 */	stw r28, 0x10(r1)
/* 80335DDC 00331A3C  7C 7C 1B 78 */	mr r28, r3
/* 80335DE0 00331A40  38 60 00 18 */	li r3, 0x18
/* 80335DE4 00331A44  48 00 35 31 */	bl gsimalloc
/* 80335DE8 00331A48  2C 1D 00 00 */	cmpwi r29, 0
/* 80335DEC 00331A4C  7C 7F 1B 78 */	mr r31, r3
/* 80335DF0 00331A50  40 82 00 08 */	bne lbl_80335DF8
/* 80335DF4 00331A54  3B A0 00 08 */	li r29, 8
lbl_80335DF8:
/* 80335DF8 00331A58  38 00 00 00 */	li r0, 0
/* 80335DFC 00331A5C  2C 1D 00 00 */	cmpwi r29, 0
/* 80335E00 00331A60  90 03 00 00 */	stw r0, 0(r3)
/* 80335E04 00331A64  93 A3 00 04 */	stw r29, 4(r3)
/* 80335E08 00331A68  93 83 00 08 */	stw r28, 8(r3)
/* 80335E0C 00331A6C  93 A3 00 0C */	stw r29, 0xc(r3)
/* 80335E10 00331A70  93 C3 00 10 */	stw r30, 0x10(r3)
/* 80335E14 00331A74  41 82 00 18 */	beq lbl_80335E2C
/* 80335E18 00331A78  80 03 00 08 */	lwz r0, 8(r3)
/* 80335E1C 00331A7C  7C 7D 01 D6 */	mullw r3, r29, r0
/* 80335E20 00331A80  48 00 34 F5 */	bl gsimalloc
/* 80335E24 00331A84  90 7F 00 14 */	stw r3, 0x14(r31)
/* 80335E28 00331A88  48 00 00 08 */	b lbl_80335E30
lbl_80335E2C:
/* 80335E2C 00331A8C  90 03 00 14 */	stw r0, 0x14(r3)
lbl_80335E30:
/* 80335E30 00331A90  7F E3 FB 78 */	mr r3, r31
/* 80335E34 00331A94  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80335E38 00331A98  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80335E3C 00331A9C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80335E40 00331AA0  83 81 00 10 */	lwz r28, 0x10(r1)
/* 80335E44 00331AA4  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80335E48 00331AA8  7C 08 03 A6 */	mtlr r0
/* 80335E4C 00331AAC  38 21 00 20 */	addi r1, r1, 0x20
/* 80335E50 00331AB0  4E 80 00 20 */	blr

.global ArrayFree
ArrayFree:
/* 80335E54 00331AB4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80335E58 00331AB8  7C 08 02 A6 */	mflr r0
/* 80335E5C 00331ABC  90 01 00 14 */	stw r0, 0x14(r1)
/* 80335E60 00331AC0  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80335E64 00331AC4  3B E0 00 00 */	li r31, 0
/* 80335E68 00331AC8  93 C1 00 08 */	stw r30, 8(r1)
/* 80335E6C 00331ACC  7C 7E 1B 78 */	mr r30, r3
/* 80335E70 00331AD0  48 00 00 44 */	b lbl_80335EB4
lbl_80335E74:
/* 80335E74 00331AD4  81 9E 00 10 */	lwz r12, 0x10(r30)
/* 80335E78 00331AD8  2C 0C 00 00 */	cmpwi r12, 0
/* 80335E7C 00331ADC  41 82 00 34 */	beq lbl_80335EB0
/* 80335E80 00331AE0  2C 1F 00 00 */	cmpwi r31, 0
/* 80335E84 00331AE4  41 80 00 0C */	blt lbl_80335E90
/* 80335E88 00331AE8  7C 1F 00 00 */	cmpw r31, r0
/* 80335E8C 00331AEC  41 80 00 0C */	blt lbl_80335E98
lbl_80335E90:
/* 80335E90 00331AF0  38 60 00 00 */	li r3, 0
/* 80335E94 00331AF4  48 00 00 14 */	b lbl_80335EA8
lbl_80335E98:
/* 80335E98 00331AF8  80 1E 00 08 */	lwz r0, 8(r30)
/* 80335E9C 00331AFC  80 7E 00 14 */	lwz r3, 0x14(r30)
/* 80335EA0 00331B00  7C 00 F9 D6 */	mullw r0, r0, r31
/* 80335EA4 00331B04  7C 63 02 14 */	add r3, r3, r0
lbl_80335EA8:
/* 80335EA8 00331B08  7D 89 03 A6 */	mtctr r12
/* 80335EAC 00331B0C  4E 80 04 21 */	bctrl
lbl_80335EB0:
/* 80335EB0 00331B10  3B FF 00 01 */	addi r31, r31, 1
lbl_80335EB4:
/* 80335EB4 00331B14  80 1E 00 00 */	lwz r0, 0(r30)
/* 80335EB8 00331B18  7C 1F 00 00 */	cmpw r31, r0
/* 80335EBC 00331B1C  41 80 FF B8 */	blt lbl_80335E74
/* 80335EC0 00331B20  80 7E 00 14 */	lwz r3, 0x14(r30)
/* 80335EC4 00331B24  48 00 34 75 */	bl gsifree
/* 80335EC8 00331B28  7F C3 F3 78 */	mr r3, r30
/* 80335ECC 00331B2C  48 00 34 6D */	bl gsifree
/* 80335ED0 00331B30  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80335ED4 00331B34  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80335ED8 00331B38  83 C1 00 08 */	lwz r30, 8(r1)
/* 80335EDC 00331B3C  7C 08 03 A6 */	mtlr r0
/* 80335EE0 00331B40  38 21 00 10 */	addi r1, r1, 0x10
/* 80335EE4 00331B44  4E 80 00 20 */	blr

.global ArrayLength
ArrayLength:
/* 80335EE8 00331B48  80 63 00 00 */	lwz r3, 0(r3)
/* 80335EEC 00331B4C  4E 80 00 20 */	blr

.global ArrayNth
ArrayNth:
/* 80335EF0 00331B50  2C 04 00 00 */	cmpwi r4, 0
/* 80335EF4 00331B54  41 80 00 10 */	blt lbl_80335F04
/* 80335EF8 00331B58  80 03 00 00 */	lwz r0, 0(r3)
/* 80335EFC 00331B5C  7C 04 00 00 */	cmpw r4, r0
/* 80335F00 00331B60  41 80 00 0C */	blt lbl_80335F0C
lbl_80335F04:
/* 80335F04 00331B64  38 60 00 00 */	li r3, 0
/* 80335F08 00331B68  4E 80 00 20 */	blr
lbl_80335F0C:
/* 80335F0C 00331B6C  80 03 00 08 */	lwz r0, 8(r3)
/* 80335F10 00331B70  80 63 00 14 */	lwz r3, 0x14(r3)
/* 80335F14 00331B74  7C 00 21 D6 */	mullw r0, r0, r4
/* 80335F18 00331B78  7C 63 02 14 */	add r3, r3, r0
/* 80335F1C 00331B7C  4E 80 00 20 */	blr

.global ArrayAppend
ArrayAppend:
/* 80335F20 00331B80  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80335F24 00331B84  7C 08 02 A6 */	mflr r0
/* 80335F28 00331B88  2C 03 00 00 */	cmpwi r3, 0
/* 80335F2C 00331B8C  90 01 00 24 */	stw r0, 0x24(r1)
/* 80335F30 00331B90  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80335F34 00331B94  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80335F38 00331B98  7C 9E 23 78 */	mr r30, r4
/* 80335F3C 00331B9C  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80335F40 00331BA0  7C 7D 1B 78 */	mr r29, r3
/* 80335F44 00331BA4  41 82 00 E4 */	beq lbl_80336028
/* 80335F48 00331BA8  83 E3 00 00 */	lwz r31, 0(r3)
/* 80335F4C 00331BAC  80 A3 00 04 */	lwz r5, 4(r3)
/* 80335F50 00331BB0  7C 1F 28 00 */	cmpw r31, r5
/* 80335F54 00331BB4  40 82 00 24 */	bne lbl_80335F78
/* 80335F58 00331BB8  80 83 00 0C */	lwz r4, 0xc(r3)
/* 80335F5C 00331BBC  80 1D 00 08 */	lwz r0, 8(r29)
/* 80335F60 00331BC0  7C A5 22 14 */	add r5, r5, r4
/* 80335F64 00331BC4  7C 85 01 D6 */	mullw r4, r5, r0
/* 80335F68 00331BC8  90 A3 00 04 */	stw r5, 4(r3)
/* 80335F6C 00331BCC  80 63 00 14 */	lwz r3, 0x14(r3)
/* 80335F70 00331BD0  48 00 33 B5 */	bl gsirealloc
/* 80335F74 00331BD4  90 7D 00 14 */	stw r3, 0x14(r29)
lbl_80335F78:
/* 80335F78 00331BD8  80 7D 00 00 */	lwz r3, 0(r29)
/* 80335F7C 00331BDC  38 A3 00 01 */	addi r5, r3, 1
/* 80335F80 00331BE0  38 C5 FF FF */	addi r6, r5, -1
/* 80335F84 00331BE4  90 BD 00 00 */	stw r5, 0(r29)
/* 80335F88 00331BE8  7C 1F 30 00 */	cmpw r31, r6
/* 80335F8C 00331BEC  40 80 00 64 */	bge lbl_80335FF0
/* 80335F90 00331BF0  34 9F 00 01 */	addic. r4, r31, 1
/* 80335F94 00331BF4  41 80 00 0C */	blt lbl_80335FA0
/* 80335F98 00331BF8  7C 04 28 00 */	cmpw r4, r5
/* 80335F9C 00331BFC  41 80 00 0C */	blt lbl_80335FA8
lbl_80335FA0:
/* 80335FA0 00331C00  38 60 00 00 */	li r3, 0
/* 80335FA4 00331C04  48 00 00 14 */	b lbl_80335FB8
lbl_80335FA8:
/* 80335FA8 00331C08  80 1D 00 08 */	lwz r0, 8(r29)
/* 80335FAC 00331C0C  80 7D 00 14 */	lwz r3, 0x14(r29)
/* 80335FB0 00331C10  7C 00 21 D6 */	mullw r0, r0, r4
/* 80335FB4 00331C14  7C 63 02 14 */	add r3, r3, r0
lbl_80335FB8:
/* 80335FB8 00331C18  2C 1F 00 00 */	cmpwi r31, 0
/* 80335FBC 00331C1C  41 80 00 0C */	blt lbl_80335FC8
/* 80335FC0 00331C20  7C 1F 28 00 */	cmpw r31, r5
/* 80335FC4 00331C24  41 80 00 0C */	blt lbl_80335FD0
lbl_80335FC8:
/* 80335FC8 00331C28  38 80 00 00 */	li r4, 0
/* 80335FCC 00331C2C  48 00 00 14 */	b lbl_80335FE0
lbl_80335FD0:
/* 80335FD0 00331C30  80 1D 00 08 */	lwz r0, 8(r29)
/* 80335FD4 00331C34  80 9D 00 14 */	lwz r4, 0x14(r29)
/* 80335FD8 00331C38  7C 00 F9 D6 */	mullw r0, r0, r31
/* 80335FDC 00331C3C  7C 84 02 14 */	add r4, r4, r0
lbl_80335FE0:
/* 80335FE0 00331C40  80 BD 00 08 */	lwz r5, 8(r29)
/* 80335FE4 00331C44  7C 1F 30 50 */	subf r0, r31, r6
/* 80335FE8 00331C48  7C A5 01 D6 */	mullw r5, r5, r0
/* 80335FEC 00331C4C  4B E9 42 89 */	bl memmove
lbl_80335FF0:
/* 80335FF0 00331C50  2C 1F 00 00 */	cmpwi r31, 0
/* 80335FF4 00331C54  41 80 00 10 */	blt lbl_80336004
/* 80335FF8 00331C58  80 1D 00 00 */	lwz r0, 0(r29)
/* 80335FFC 00331C5C  7C 1F 00 00 */	cmpw r31, r0
/* 80336000 00331C60  41 80 00 0C */	blt lbl_8033600C
lbl_80336004:
/* 80336004 00331C64  38 60 00 00 */	li r3, 0
/* 80336008 00331C68  48 00 00 14 */	b lbl_8033601C
lbl_8033600C:
/* 8033600C 00331C6C  80 1D 00 08 */	lwz r0, 8(r29)
/* 80336010 00331C70  80 7D 00 14 */	lwz r3, 0x14(r29)
/* 80336014 00331C74  7C 00 F9 D6 */	mullw r0, r0, r31
/* 80336018 00331C78  7C 63 02 14 */	add r3, r3, r0
lbl_8033601C:
/* 8033601C 00331C7C  80 BD 00 08 */	lwz r5, 8(r29)
/* 80336020 00331C80  7F C4 F3 78 */	mr r4, r30
/* 80336024 00331C84  4B CC DF DD */	bl memcpy
lbl_80336028:
/* 80336028 00331C88  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8033602C 00331C8C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80336030 00331C90  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80336034 00331C94  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80336038 00331C98  7C 08 03 A6 */	mtlr r0
/* 8033603C 00331C9C  38 21 00 20 */	addi r1, r1, 0x20
/* 80336040 00331CA0  4E 80 00 20 */	blr

.global ArrayInsertSorted
ArrayInsertSorted:
/* 80336044 00331CA4  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80336048 00331CA8  7C 08 02 A6 */	mflr r0
/* 8033604C 00331CAC  90 01 00 34 */	stw r0, 0x34(r1)
/* 80336050 00331CB0  39 61 00 30 */	addi r11, r1, 0x30
/* 80336054 00331CB4  4B E9 10 C9 */	bl func_801C711C
/* 80336058 00331CB8  80 C3 00 00 */	lwz r6, 0(r3)
/* 8033605C 00331CBC  7C 7D 1B 78 */	mr r29, r3
/* 80336060 00331CC0  83 83 00 08 */	lwz r28, 8(r3)
/* 80336064 00331CC4  7C 9E 23 78 */	mr r30, r4
/* 80336068 00331CC8  83 E3 00 14 */	lwz r31, 0x14(r3)
/* 8033606C 00331CCC  7C B8 2B 78 */	mr r24, r5
/* 80336070 00331CD0  3B 46 FF FF */	addi r26, r6, -1
/* 80336074 00331CD4  3B 20 00 00 */	li r25, 0
/* 80336078 00331CD8  48 00 00 3C */	b lbl_803360B4
lbl_8033607C:
/* 8033607C 00331CDC  7C 19 D2 14 */	add r0, r25, r26
/* 80336080 00331CE0  7F 0C C3 78 */	mr r12, r24
/* 80336084 00331CE4  7C 1B 0E 70 */	srawi r27, r0, 1
/* 80336088 00331CE8  7F C4 F3 78 */	mr r4, r30
/* 8033608C 00331CEC  7C 1B E1 D6 */	mullw r0, r27, r28
/* 80336090 00331CF0  7C 7F 02 14 */	add r3, r31, r0
/* 80336094 00331CF4  7D 89 03 A6 */	mtctr r12
/* 80336098 00331CF8  4E 80 04 21 */	bctrl
/* 8033609C 00331CFC  2C 03 00 00 */	cmpwi r3, 0
/* 803360A0 00331D00  40 80 00 08 */	bge lbl_803360A8
/* 803360A4 00331D04  3B 3B 00 01 */	addi r25, r27, 1
lbl_803360A8:
/* 803360A8 00331D08  2C 03 00 00 */	cmpwi r3, 0
/* 803360AC 00331D0C  41 80 00 08 */	blt lbl_803360B4
/* 803360B0 00331D10  3B 5B FF FF */	addi r26, r27, -1
lbl_803360B4:
/* 803360B4 00331D14  7C 19 D0 00 */	cmpw r25, r26
/* 803360B8 00331D18  40 81 FF C4 */	ble lbl_8033607C
/* 803360BC 00331D1C  7C D9 E1 D6 */	mullw r6, r25, r28
/* 803360C0 00331D20  80 7D 00 14 */	lwz r3, 0x14(r29)
/* 803360C4 00331D24  80 BD 00 08 */	lwz r5, 8(r29)
/* 803360C8 00331D28  80 1D 00 00 */	lwz r0, 0(r29)
/* 803360CC 00331D2C  80 9D 00 04 */	lwz r4, 4(r29)
/* 803360D0 00331D30  7C DF 32 14 */	add r6, r31, r6
/* 803360D4 00331D34  7C C3 30 50 */	subf r6, r3, r6
/* 803360D8 00331D38  7C 00 20 00 */	cmpw r0, r4
/* 803360DC 00331D3C  7F E6 2B D6 */	divw r31, r6, r5
/* 803360E0 00331D40  40 82 00 1C */	bne lbl_803360FC
/* 803360E4 00331D44  80 1D 00 0C */	lwz r0, 0xc(r29)
/* 803360E8 00331D48  7C 04 02 14 */	add r0, r4, r0
/* 803360EC 00331D4C  7C 80 29 D6 */	mullw r4, r0, r5
/* 803360F0 00331D50  90 1D 00 04 */	stw r0, 4(r29)
/* 803360F4 00331D54  48 00 32 31 */	bl gsirealloc
/* 803360F8 00331D58  90 7D 00 14 */	stw r3, 0x14(r29)
lbl_803360FC:
/* 803360FC 00331D5C  80 7D 00 00 */	lwz r3, 0(r29)
/* 80336100 00331D60  38 A3 00 01 */	addi r5, r3, 1
/* 80336104 00331D64  38 C5 FF FF */	addi r6, r5, -1
/* 80336108 00331D68  90 BD 00 00 */	stw r5, 0(r29)
/* 8033610C 00331D6C  7C 1F 30 00 */	cmpw r31, r6
/* 80336110 00331D70  40 80 00 64 */	bge lbl_80336174
/* 80336114 00331D74  34 9F 00 01 */	addic. r4, r31, 1
/* 80336118 00331D78  41 80 00 0C */	blt lbl_80336124
/* 8033611C 00331D7C  7C 04 28 00 */	cmpw r4, r5
/* 80336120 00331D80  41 80 00 0C */	blt lbl_8033612C
lbl_80336124:
/* 80336124 00331D84  38 60 00 00 */	li r3, 0
/* 80336128 00331D88  48 00 00 14 */	b lbl_8033613C
lbl_8033612C:
/* 8033612C 00331D8C  80 1D 00 08 */	lwz r0, 8(r29)
/* 80336130 00331D90  80 7D 00 14 */	lwz r3, 0x14(r29)
/* 80336134 00331D94  7C 00 21 D6 */	mullw r0, r0, r4
/* 80336138 00331D98  7C 63 02 14 */	add r3, r3, r0
lbl_8033613C:
/* 8033613C 00331D9C  2C 1F 00 00 */	cmpwi r31, 0
/* 80336140 00331DA0  41 80 00 0C */	blt lbl_8033614C
/* 80336144 00331DA4  7C 1F 28 00 */	cmpw r31, r5
/* 80336148 00331DA8  41 80 00 0C */	blt lbl_80336154
lbl_8033614C:
/* 8033614C 00331DAC  38 80 00 00 */	li r4, 0
/* 80336150 00331DB0  48 00 00 14 */	b lbl_80336164
lbl_80336154:
/* 80336154 00331DB4  80 1D 00 08 */	lwz r0, 8(r29)
/* 80336158 00331DB8  80 9D 00 14 */	lwz r4, 0x14(r29)
/* 8033615C 00331DBC  7C 00 F9 D6 */	mullw r0, r0, r31
/* 80336160 00331DC0  7C 84 02 14 */	add r4, r4, r0
lbl_80336164:
/* 80336164 00331DC4  80 BD 00 08 */	lwz r5, 8(r29)
/* 80336168 00331DC8  7C 1F 30 50 */	subf r0, r31, r6
/* 8033616C 00331DCC  7C A5 01 D6 */	mullw r5, r5, r0
/* 80336170 00331DD0  4B E9 41 05 */	bl memmove
lbl_80336174:
/* 80336174 00331DD4  2C 1F 00 00 */	cmpwi r31, 0
/* 80336178 00331DD8  41 80 00 10 */	blt lbl_80336188
/* 8033617C 00331DDC  80 1D 00 00 */	lwz r0, 0(r29)
/* 80336180 00331DE0  7C 1F 00 00 */	cmpw r31, r0
/* 80336184 00331DE4  41 80 00 0C */	blt lbl_80336190
lbl_80336188:
/* 80336188 00331DE8  38 60 00 00 */	li r3, 0
/* 8033618C 00331DEC  48 00 00 14 */	b lbl_803361A0
lbl_80336190:
/* 80336190 00331DF0  80 1D 00 08 */	lwz r0, 8(r29)
/* 80336194 00331DF4  80 7D 00 14 */	lwz r3, 0x14(r29)
/* 80336198 00331DF8  7C 00 F9 D6 */	mullw r0, r0, r31
/* 8033619C 00331DFC  7C 63 02 14 */	add r3, r3, r0
lbl_803361A0:
/* 803361A0 00331E00  80 BD 00 08 */	lwz r5, 8(r29)
/* 803361A4 00331E04  7F C4 F3 78 */	mr r4, r30
/* 803361A8 00331E08  4B CC DE 59 */	bl memcpy
/* 803361AC 00331E0C  39 61 00 30 */	addi r11, r1, 0x30
/* 803361B0 00331E10  4B E9 0F B9 */	bl func_801C7168
/* 803361B4 00331E14  80 01 00 34 */	lwz r0, 0x34(r1)
/* 803361B8 00331E18  7C 08 03 A6 */	mtlr r0
/* 803361BC 00331E1C  38 21 00 30 */	addi r1, r1, 0x30
/* 803361C0 00331E20  4E 80 00 20 */	blr

.global ArrayRemoveAt
ArrayRemoveAt:
/* 803361C4 00331E24  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 803361C8 00331E28  7C 08 02 A6 */	mflr r0
/* 803361CC 00331E2C  90 01 00 14 */	stw r0, 0x14(r1)
/* 803361D0 00331E30  93 E1 00 0C */	stw r31, 0xc(r1)
/* 803361D4 00331E34  7C 7F 1B 78 */	mr r31, r3
/* 803361D8 00331E38  80 E3 00 00 */	lwz r7, 0(r3)
/* 803361DC 00331E3C  39 07 FF FF */	addi r8, r7, -1
/* 803361E0 00331E40  7C 04 40 00 */	cmpw r4, r8
/* 803361E4 00331E44  40 80 00 6C */	bge lbl_80336250
/* 803361E8 00331E48  2C 04 00 00 */	cmpwi r4, 0
/* 803361EC 00331E4C  41 80 00 0C */	blt lbl_803361F8
/* 803361F0 00331E50  7C 04 38 00 */	cmpw r4, r7
/* 803361F4 00331E54  41 80 00 0C */	blt lbl_80336200
lbl_803361F8:
/* 803361F8 00331E58  38 C0 00 00 */	li r6, 0
/* 803361FC 00331E5C  48 00 00 14 */	b lbl_80336210
lbl_80336200:
/* 80336200 00331E60  80 03 00 08 */	lwz r0, 8(r3)
/* 80336204 00331E64  80 A3 00 14 */	lwz r5, 0x14(r3)
/* 80336208 00331E68  7C 00 21 D6 */	mullw r0, r0, r4
/* 8033620C 00331E6C  7C C5 02 14 */	add r6, r5, r0
lbl_80336210:
/* 80336210 00331E70  34 A4 00 01 */	addic. r5, r4, 1
/* 80336214 00331E74  41 80 00 0C */	blt lbl_80336220
/* 80336218 00331E78  7C 05 38 00 */	cmpw r5, r7
/* 8033621C 00331E7C  41 80 00 0C */	blt lbl_80336228
lbl_80336220:
/* 80336220 00331E80  38 E0 00 00 */	li r7, 0
/* 80336224 00331E84  48 00 00 14 */	b lbl_80336238
lbl_80336228:
/* 80336228 00331E88  80 03 00 08 */	lwz r0, 8(r3)
/* 8033622C 00331E8C  80 63 00 14 */	lwz r3, 0x14(r3)
/* 80336230 00331E90  7C 00 29 D6 */	mullw r0, r0, r5
/* 80336234 00331E94  7C E3 02 14 */	add r7, r3, r0
lbl_80336238:
/* 80336238 00331E98  80 BF 00 08 */	lwz r5, 8(r31)
/* 8033623C 00331E9C  7C 04 40 50 */	subf r0, r4, r8
/* 80336240 00331EA0  7C C3 33 78 */	mr r3, r6
/* 80336244 00331EA4  7C E4 3B 78 */	mr r4, r7
/* 80336248 00331EA8  7C A5 01 D6 */	mullw r5, r5, r0
/* 8033624C 00331EAC  4B E9 40 29 */	bl memmove
lbl_80336250:
/* 80336250 00331EB0  80 7F 00 00 */	lwz r3, 0(r31)
/* 80336254 00331EB4  38 03 FF FF */	addi r0, r3, -1
/* 80336258 00331EB8  90 1F 00 00 */	stw r0, 0(r31)
/* 8033625C 00331EBC  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80336260 00331EC0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80336264 00331EC4  7C 08 03 A6 */	mtlr r0
/* 80336268 00331EC8  38 21 00 10 */	addi r1, r1, 0x10
/* 8033626C 00331ECC  4E 80 00 20 */	blr

.global ArrayDeleteAt
ArrayDeleteAt:
/* 80336270 00331ED0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80336274 00331ED4  7C 08 02 A6 */	mflr r0
/* 80336278 00331ED8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8033627C 00331EDC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80336280 00331EE0  7C 7F 1B 78 */	mr r31, r3
/* 80336284 00331EE4  93 C1 00 08 */	stw r30, 8(r1)
/* 80336288 00331EE8  7C 9E 23 78 */	mr r30, r4
/* 8033628C 00331EEC  81 83 00 10 */	lwz r12, 0x10(r3)
/* 80336290 00331EF0  2C 0C 00 00 */	cmpwi r12, 0
/* 80336294 00331EF4  41 82 00 38 */	beq lbl_803362CC
/* 80336298 00331EF8  2C 04 00 00 */	cmpwi r4, 0
/* 8033629C 00331EFC  41 80 00 10 */	blt lbl_803362AC
/* 803362A0 00331F00  80 03 00 00 */	lwz r0, 0(r3)
/* 803362A4 00331F04  7C 04 00 00 */	cmpw r4, r0
/* 803362A8 00331F08  41 80 00 0C */	blt lbl_803362B4
lbl_803362AC:
/* 803362AC 00331F0C  38 60 00 00 */	li r3, 0
/* 803362B0 00331F10  48 00 00 14 */	b lbl_803362C4
lbl_803362B4:
/* 803362B4 00331F14  80 03 00 08 */	lwz r0, 8(r3)
/* 803362B8 00331F18  80 63 00 14 */	lwz r3, 0x14(r3)
/* 803362BC 00331F1C  7C 00 21 D6 */	mullw r0, r0, r4
/* 803362C0 00331F20  7C 63 02 14 */	add r3, r3, r0
lbl_803362C4:
/* 803362C4 00331F24  7D 89 03 A6 */	mtctr r12
/* 803362C8 00331F28  4E 80 04 21 */	bctrl
lbl_803362CC:
/* 803362CC 00331F2C  80 9F 00 00 */	lwz r4, 0(r31)
/* 803362D0 00331F30  38 C4 FF FF */	addi r6, r4, -1
/* 803362D4 00331F34  7C 1E 30 00 */	cmpw r30, r6
/* 803362D8 00331F38  40 80 00 64 */	bge lbl_8033633C
/* 803362DC 00331F3C  2C 1E 00 00 */	cmpwi r30, 0
/* 803362E0 00331F40  41 80 00 0C */	blt lbl_803362EC
/* 803362E4 00331F44  7C 1E 20 00 */	cmpw r30, r4
/* 803362E8 00331F48  41 80 00 0C */	blt lbl_803362F4
lbl_803362EC:
/* 803362EC 00331F4C  38 60 00 00 */	li r3, 0
/* 803362F0 00331F50  48 00 00 14 */	b lbl_80336304
lbl_803362F4:
/* 803362F4 00331F54  80 1F 00 08 */	lwz r0, 8(r31)
/* 803362F8 00331F58  80 7F 00 14 */	lwz r3, 0x14(r31)
/* 803362FC 00331F5C  7C 00 F1 D6 */	mullw r0, r0, r30
/* 80336300 00331F60  7C 63 02 14 */	add r3, r3, r0
lbl_80336304:
/* 80336304 00331F64  34 BE 00 01 */	addic. r5, r30, 1
/* 80336308 00331F68  41 80 00 0C */	blt lbl_80336314
/* 8033630C 00331F6C  7C 05 20 00 */	cmpw r5, r4
/* 80336310 00331F70  41 80 00 0C */	blt lbl_8033631C
lbl_80336314:
/* 80336314 00331F74  38 80 00 00 */	li r4, 0
/* 80336318 00331F78  48 00 00 14 */	b lbl_8033632C
lbl_8033631C:
/* 8033631C 00331F7C  80 1F 00 08 */	lwz r0, 8(r31)
/* 80336320 00331F80  80 9F 00 14 */	lwz r4, 0x14(r31)
/* 80336324 00331F84  7C 00 29 D6 */	mullw r0, r0, r5
/* 80336328 00331F88  7C 84 02 14 */	add r4, r4, r0
lbl_8033632C:
/* 8033632C 00331F8C  80 BF 00 08 */	lwz r5, 8(r31)
/* 80336330 00331F90  7C 1E 30 50 */	subf r0, r30, r6
/* 80336334 00331F94  7C A5 01 D6 */	mullw r5, r5, r0
/* 80336338 00331F98  4B E9 3F 3D */	bl memmove
lbl_8033633C:
/* 8033633C 00331F9C  80 7F 00 00 */	lwz r3, 0(r31)
/* 80336340 00331FA0  38 03 FF FF */	addi r0, r3, -1
/* 80336344 00331FA4  90 1F 00 00 */	stw r0, 0(r31)
/* 80336348 00331FA8  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8033634C 00331FAC  83 C1 00 08 */	lwz r30, 8(r1)
/* 80336350 00331FB0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80336354 00331FB4  7C 08 03 A6 */	mtlr r0
/* 80336358 00331FB8  38 21 00 10 */	addi r1, r1, 0x10
/* 8033635C 00331FBC  4E 80 00 20 */	blr

.global ArrayReplaceAt
ArrayReplaceAt:
/* 80336360 00331FC0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80336364 00331FC4  7C 08 02 A6 */	mflr r0
/* 80336368 00331FC8  90 01 00 24 */	stw r0, 0x24(r1)
/* 8033636C 00331FCC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80336370 00331FD0  7C BF 2B 78 */	mr r31, r5
/* 80336374 00331FD4  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80336378 00331FD8  7C 9E 23 78 */	mr r30, r4
/* 8033637C 00331FDC  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80336380 00331FE0  7C 7D 1B 78 */	mr r29, r3
/* 80336384 00331FE4  81 83 00 10 */	lwz r12, 0x10(r3)
/* 80336388 00331FE8  2C 0C 00 00 */	cmpwi r12, 0
/* 8033638C 00331FEC  41 82 00 38 */	beq lbl_803363C4
/* 80336390 00331FF0  2C 05 00 00 */	cmpwi r5, 0
/* 80336394 00331FF4  41 80 00 10 */	blt lbl_803363A4
/* 80336398 00331FF8  80 03 00 00 */	lwz r0, 0(r3)
/* 8033639C 00331FFC  7C 05 00 00 */	cmpw r5, r0
/* 803363A0 00332000  41 80 00 0C */	blt lbl_803363AC
lbl_803363A4:
/* 803363A4 00332004  38 60 00 00 */	li r3, 0
/* 803363A8 00332008  48 00 00 14 */	b lbl_803363BC
lbl_803363AC:
/* 803363AC 0033200C  80 03 00 08 */	lwz r0, 8(r3)
/* 803363B0 00332010  80 63 00 14 */	lwz r3, 0x14(r3)
/* 803363B4 00332014  7C 00 29 D6 */	mullw r0, r0, r5
/* 803363B8 00332018  7C 63 02 14 */	add r3, r3, r0
lbl_803363BC:
/* 803363BC 0033201C  7D 89 03 A6 */	mtctr r12
/* 803363C0 00332020  4E 80 04 21 */	bctrl
lbl_803363C4:
/* 803363C4 00332024  2C 1F 00 00 */	cmpwi r31, 0
/* 803363C8 00332028  41 80 00 10 */	blt lbl_803363D8
/* 803363CC 0033202C  80 1D 00 00 */	lwz r0, 0(r29)
/* 803363D0 00332030  7C 1F 00 00 */	cmpw r31, r0
/* 803363D4 00332034  41 80 00 0C */	blt lbl_803363E0
lbl_803363D8:
/* 803363D8 00332038  38 60 00 00 */	li r3, 0
/* 803363DC 0033203C  48 00 00 14 */	b lbl_803363F0
lbl_803363E0:
/* 803363E0 00332040  80 1D 00 08 */	lwz r0, 8(r29)
/* 803363E4 00332044  80 7D 00 14 */	lwz r3, 0x14(r29)
/* 803363E8 00332048  7C 00 F9 D6 */	mullw r0, r0, r31
/* 803363EC 0033204C  7C 63 02 14 */	add r3, r3, r0
lbl_803363F0:
/* 803363F0 00332050  80 BD 00 08 */	lwz r5, 8(r29)
/* 803363F4 00332054  7F C4 F3 78 */	mr r4, r30
/* 803363F8 00332058  4B CC DC 09 */	bl memcpy
/* 803363FC 0033205C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80336400 00332060  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80336404 00332064  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80336408 00332068  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8033640C 0033206C  7C 08 03 A6 */	mtlr r0
/* 80336410 00332070  38 21 00 20 */	addi r1, r1, 0x20
/* 80336414 00332074  4E 80 00 20 */	blr

.global ArraySort
ArraySort:
/* 80336418 00332078  7C 65 1B 78 */	mr r5, r3
/* 8033641C 0033207C  7C 86 23 78 */	mr r6, r4
/* 80336420 00332080  80 85 00 00 */	lwz r4, 0(r5)
/* 80336424 00332084  80 63 00 14 */	lwz r3, 0x14(r3)
/* 80336428 00332088  80 A5 00 08 */	lwz r5, 8(r5)
/* 8033642C 0033208C  4B E9 67 A0 */	b qsort

.global ArraySearch
ArraySearch:
/* 80336430 00332090  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80336434 00332094  7C 08 02 A6 */	mflr r0
/* 80336438 00332098  90 01 00 34 */	stw r0, 0x34(r1)
/* 8033643C 0033209C  39 61 00 30 */	addi r11, r1, 0x30
/* 80336440 003320A0  4B E9 0C D9 */	bl _savegpr_23
/* 80336444 003320A4  2C 03 00 00 */	cmpwi r3, 0
/* 80336448 003320A8  7C 7C 1B 78 */	mr r28, r3
/* 8033644C 003320AC  7C 9D 23 78 */	mr r29, r4
/* 80336450 003320B0  7C BE 2B 78 */	mr r30, r5
/* 80336454 003320B4  3B E0 00 01 */	li r31, 1
/* 80336458 003320B8  41 82 00 10 */	beq lbl_80336468
/* 8033645C 003320BC  80 A3 00 00 */	lwz r5, 0(r3)
/* 80336460 003320C0  2C 05 00 00 */	cmpwi r5, 0
/* 80336464 003320C4  40 82 00 0C */	bne lbl_80336470
lbl_80336468:
/* 80336468 003320C8  38 60 FF FF */	li r3, -1
/* 8033646C 003320CC  48 00 01 44 */	b lbl_803365B0
lbl_80336470:
/* 80336470 003320D0  2C 07 00 00 */	cmpwi r7, 0
/* 80336474 003320D4  41 82 00 9C */	beq lbl_80336510
/* 80336478 003320D8  2C 06 00 00 */	cmpwi r6, 0
/* 8033647C 003320DC  41 80 00 0C */	blt lbl_80336488
/* 80336480 003320E0  7C 06 28 00 */	cmpw r6, r5
/* 80336484 003320E4  41 80 00 0C */	blt lbl_80336490
lbl_80336488:
/* 80336488 003320E8  3B 60 00 00 */	li r27, 0
/* 8033648C 003320EC  48 00 00 14 */	b lbl_803364A0
lbl_80336490:
/* 80336490 003320F0  80 03 00 08 */	lwz r0, 8(r3)
/* 80336494 003320F4  80 83 00 14 */	lwz r4, 0x14(r3)
/* 80336498 003320F8  7C 00 31 D6 */	mullw r0, r0, r6
/* 8033649C 003320FC  7F 64 02 14 */	add r27, r4, r0
lbl_803364A0:
/* 803364A0 00332100  7C 86 28 50 */	subf r4, r6, r5
/* 803364A4 00332104  83 43 00 08 */	lwz r26, 8(r3)
/* 803364A8 00332108  3B 04 FF FF */	addi r24, r4, -1
/* 803364AC 0033210C  3A E0 00 00 */	li r23, 0
/* 803364B0 00332110  3B E0 00 00 */	li r31, 0
/* 803364B4 00332114  48 00 00 48 */	b lbl_803364FC
lbl_803364B8:
/* 803364B8 00332118  7C 17 C2 14 */	add r0, r23, r24
/* 803364BC 0033211C  7F CC F3 78 */	mr r12, r30
/* 803364C0 00332120  7C 19 0E 70 */	srawi r25, r0, 1
/* 803364C4 00332124  7F A4 EB 78 */	mr r4, r29
/* 803364C8 00332128  7C 19 D1 D6 */	mullw r0, r25, r26
/* 803364CC 0033212C  7C 7B 02 14 */	add r3, r27, r0
/* 803364D0 00332130  7D 89 03 A6 */	mtctr r12
/* 803364D4 00332134  4E 80 04 21 */	bctrl
/* 803364D8 00332138  2C 03 00 00 */	cmpwi r3, 0
/* 803364DC 0033213C  40 82 00 08 */	bne lbl_803364E4
/* 803364E0 00332140  3B E0 00 01 */	li r31, 1
lbl_803364E4:
/* 803364E4 00332144  2C 03 00 00 */	cmpwi r3, 0
/* 803364E8 00332148  40 80 00 08 */	bge lbl_803364F0
/* 803364EC 0033214C  3A F9 00 01 */	addi r23, r25, 1
lbl_803364F0:
/* 803364F0 00332150  2C 03 00 00 */	cmpwi r3, 0
/* 803364F4 00332154  41 80 00 08 */	blt lbl_803364FC
/* 803364F8 00332158  3B 19 FF FF */	addi r24, r25, -1
lbl_803364FC:
/* 803364FC 0033215C  7C 17 C0 00 */	cmpw r23, r24
/* 80336500 00332160  40 81 FF B8 */	ble lbl_803364B8
/* 80336504 00332164  7C 17 D1 D6 */	mullw r0, r23, r26
/* 80336508 00332168  7C 9B 02 14 */	add r4, r27, r0
/* 8033650C 0033216C  48 00 00 7C */	b lbl_80336588
lbl_80336510:
/* 80336510 00332170  2C 06 00 00 */	cmpwi r6, 0
/* 80336514 00332174  41 80 00 0C */	blt lbl_80336520
/* 80336518 00332178  7C 06 28 00 */	cmpw r6, r5
/* 8033651C 0033217C  41 80 00 0C */	blt lbl_80336528
lbl_80336520:
/* 80336520 00332180  3A E0 00 00 */	li r23, 0
/* 80336524 00332184  48 00 00 14 */	b lbl_80336538
lbl_80336528:
/* 80336528 00332188  80 03 00 08 */	lwz r0, 8(r3)
/* 8033652C 0033218C  80 83 00 14 */	lwz r4, 0x14(r3)
/* 80336530 00332190  7C 00 31 D6 */	mullw r0, r0, r6
/* 80336534 00332194  7E E4 02 14 */	add r23, r4, r0
lbl_80336538:
/* 80336538 00332198  83 23 00 08 */	lwz r25, 8(r3)
/* 8033653C 0033219C  7F 06 28 50 */	subf r24, r6, r5
/* 80336540 003321A0  3B 40 00 00 */	li r26, 0
/* 80336544 003321A4  3B 60 00 00 */	li r27, 0
/* 80336548 003321A8  48 00 00 34 */	b lbl_8033657C
lbl_8033654C:
/* 8033654C 003321AC  7F CC F3 78 */	mr r12, r30
/* 80336550 003321B0  7F A3 EB 78 */	mr r3, r29
/* 80336554 003321B4  7C 97 DA 14 */	add r4, r23, r27
/* 80336558 003321B8  7D 89 03 A6 */	mtctr r12
/* 8033655C 003321BC  4E 80 04 21 */	bctrl
/* 80336560 003321C0  2C 03 00 00 */	cmpwi r3, 0
/* 80336564 003321C4  40 82 00 10 */	bne lbl_80336574
/* 80336568 003321C8  7C 19 D1 D6 */	mullw r0, r25, r26
/* 8033656C 003321CC  7C 97 02 14 */	add r4, r23, r0
/* 80336570 003321D0  48 00 00 18 */	b lbl_80336588
lbl_80336574:
/* 80336574 003321D4  7F 7B CA 14 */	add r27, r27, r25
/* 80336578 003321D8  3B 5A 00 01 */	addi r26, r26, 1
lbl_8033657C:
/* 8033657C 003321DC  7C 1A C0 00 */	cmpw r26, r24
/* 80336580 003321E0  41 80 FF CC */	blt lbl_8033654C
/* 80336584 003321E4  38 80 00 00 */	li r4, 0
lbl_80336588:
/* 80336588 003321E8  2C 04 00 00 */	cmpwi r4, 0
/* 8033658C 003321EC  41 82 00 20 */	beq lbl_803365AC
/* 80336590 003321F0  2C 1F 00 00 */	cmpwi r31, 0
/* 80336594 003321F4  41 82 00 18 */	beq lbl_803365AC
/* 80336598 003321F8  80 7C 00 14 */	lwz r3, 0x14(r28)
/* 8033659C 003321FC  80 1C 00 08 */	lwz r0, 8(r28)
/* 803365A0 00332200  7C 63 20 50 */	subf r3, r3, r4
/* 803365A4 00332204  7C 63 03 D6 */	divw r3, r3, r0
/* 803365A8 00332208  48 00 00 08 */	b lbl_803365B0
lbl_803365AC:
/* 803365AC 0033220C  38 60 FF FF */	li r3, -1
lbl_803365B0:
/* 803365B0 00332210  39 61 00 30 */	addi r11, r1, 0x30
/* 803365B4 00332214  4B E9 0B B1 */	bl _restgpr_23
/* 803365B8 00332218  80 01 00 34 */	lwz r0, 0x34(r1)
/* 803365BC 0033221C  7C 08 03 A6 */	mtlr r0
/* 803365C0 00332220  38 21 00 30 */	addi r1, r1, 0x30
/* 803365C4 00332224  4E 80 00 20 */	blr

.global ArrayMapBackwards
ArrayMapBackwards:
/* 803365C8 00332228  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 803365CC 0033222C  7C 08 02 A6 */	mflr r0
/* 803365D0 00332230  90 01 00 24 */	stw r0, 0x24(r1)
/* 803365D4 00332234  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 803365D8 00332238  93 C1 00 18 */	stw r30, 0x18(r1)
/* 803365DC 0033223C  7C BE 2B 78 */	mr r30, r5
/* 803365E0 00332240  93 A1 00 14 */	stw r29, 0x14(r1)
/* 803365E4 00332244  7C 9D 23 78 */	mr r29, r4
/* 803365E8 00332248  93 81 00 10 */	stw r28, 0x10(r1)
/* 803365EC 0033224C  7C 7C 1B 78 */	mr r28, r3
/* 803365F0 00332250  80 C3 00 00 */	lwz r6, 0(r3)
/* 803365F4 00332254  3B E6 FF FF */	addi r31, r6, -1
/* 803365F8 00332258  48 00 00 44 */	b lbl_8033663C
lbl_803365FC:
/* 803365FC 0033225C  2C 1F 00 00 */	cmpwi r31, 0
/* 80336600 00332260  41 80 00 10 */	blt lbl_80336610
/* 80336604 00332264  80 1C 00 00 */	lwz r0, 0(r28)
/* 80336608 00332268  7C 1F 00 00 */	cmpw r31, r0
/* 8033660C 0033226C  41 80 00 0C */	blt lbl_80336618
lbl_80336610:
/* 80336610 00332270  38 60 00 00 */	li r3, 0
/* 80336614 00332274  48 00 00 14 */	b lbl_80336628
lbl_80336618:
/* 80336618 00332278  80 1C 00 08 */	lwz r0, 8(r28)
/* 8033661C 0033227C  80 7C 00 14 */	lwz r3, 0x14(r28)
/* 80336620 00332280  7C 00 F9 D6 */	mullw r0, r0, r31
/* 80336624 00332284  7C 63 02 14 */	add r3, r3, r0
lbl_80336628:
/* 80336628 00332288  7F AC EB 78 */	mr r12, r29
/* 8033662C 0033228C  7F C4 F3 78 */	mr r4, r30
/* 80336630 00332290  7D 89 03 A6 */	mtctr r12
/* 80336634 00332294  4E 80 04 21 */	bctrl
/* 80336638 00332298  3B FF FF FF */	addi r31, r31, -1
lbl_8033663C:
/* 8033663C 0033229C  2C 1F 00 00 */	cmpwi r31, 0
/* 80336640 003322A0  40 80 FF BC */	bge lbl_803365FC
/* 80336644 003322A4  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80336648 003322A8  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8033664C 003322AC  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80336650 003322B0  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80336654 003322B4  83 81 00 10 */	lwz r28, 0x10(r1)
/* 80336658 003322B8  7C 08 03 A6 */	mtlr r0
/* 8033665C 003322BC  38 21 00 20 */	addi r1, r1, 0x20
/* 80336660 003322C0  4E 80 00 20 */	blr

.global ArrayMapBackwards2
ArrayMapBackwards2:
/* 80336664 003322C4  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80336668 003322C8  7C 08 02 A6 */	mflr r0
/* 8033666C 003322CC  90 01 00 24 */	stw r0, 0x24(r1)
/* 80336670 003322D0  39 61 00 20 */	addi r11, r1, 0x20
/* 80336674 003322D4  4B E9 0A B5 */	bl _savegpr_27
/* 80336678 003322D8  80 C3 00 00 */	lwz r6, 0(r3)
/* 8033667C 003322DC  7C 7B 1B 78 */	mr r27, r3
/* 80336680 003322E0  7C 9C 23 78 */	mr r28, r4
/* 80336684 003322E4  7C BD 2B 78 */	mr r29, r5
/* 80336688 003322E8  3B C6 FF FF */	addi r30, r6, -1
/* 8033668C 003322EC  48 00 00 58 */	b lbl_803366E4
lbl_80336690:
/* 80336690 003322F0  2C 1E 00 00 */	cmpwi r30, 0
/* 80336694 003322F4  41 80 00 10 */	blt lbl_803366A4
/* 80336698 003322F8  80 1B 00 00 */	lwz r0, 0(r27)
/* 8033669C 003322FC  7C 1E 00 00 */	cmpw r30, r0
/* 803366A0 00332300  41 80 00 0C */	blt lbl_803366AC
lbl_803366A4:
/* 803366A4 00332304  3B E0 00 00 */	li r31, 0
/* 803366A8 00332308  48 00 00 14 */	b lbl_803366BC
lbl_803366AC:
/* 803366AC 0033230C  80 1B 00 08 */	lwz r0, 8(r27)
/* 803366B0 00332310  80 7B 00 14 */	lwz r3, 0x14(r27)
/* 803366B4 00332314  7C 00 F1 D6 */	mullw r0, r0, r30
/* 803366B8 00332318  7F E3 02 14 */	add r31, r3, r0
lbl_803366BC:
/* 803366BC 0033231C  7F 8C E3 78 */	mr r12, r28
/* 803366C0 00332320  7F E3 FB 78 */	mr r3, r31
/* 803366C4 00332324  7F A4 EB 78 */	mr r4, r29
/* 803366C8 00332328  7D 89 03 A6 */	mtctr r12
/* 803366CC 0033232C  4E 80 04 21 */	bctrl
/* 803366D0 00332330  2C 03 00 00 */	cmpwi r3, 0
/* 803366D4 00332334  40 82 00 0C */	bne lbl_803366E0
/* 803366D8 00332338  7F E3 FB 78 */	mr r3, r31
/* 803366DC 0033233C  48 00 00 14 */	b lbl_803366F0
lbl_803366E0:
/* 803366E0 00332340  3B DE FF FF */	addi r30, r30, -1
lbl_803366E4:
/* 803366E4 00332344  2C 1E 00 00 */	cmpwi r30, 0
/* 803366E8 00332348  40 80 FF A8 */	bge lbl_80336690
/* 803366EC 0033234C  38 60 00 00 */	li r3, 0
lbl_803366F0:
/* 803366F0 00332350  39 61 00 20 */	addi r11, r1, 0x20
/* 803366F4 00332354  4B E9 0A 81 */	bl _restgpr_27
/* 803366F8 00332358  80 01 00 24 */	lwz r0, 0x24(r1)
/* 803366FC 0033235C  7C 08 03 A6 */	mtlr r0
/* 80336700 00332360  38 21 00 20 */	addi r1, r1, 0x20
/* 80336704 00332364  4E 80 00 20 */	blr

.global ArrayClear
ArrayClear:
/* 80336708 00332368  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8033670C 0033236C  7C 08 02 A6 */	mflr r0
/* 80336710 00332370  90 01 00 14 */	stw r0, 0x14(r1)
/* 80336714 00332374  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80336718 00332378  93 C1 00 08 */	stw r30, 8(r1)
/* 8033671C 0033237C  7C 7E 1B 78 */	mr r30, r3
/* 80336720 00332380  80 83 00 00 */	lwz r4, 0(r3)
/* 80336724 00332384  3B E4 FF FF */	addi r31, r4, -1
/* 80336728 00332388  48 00 00 C4 */	b lbl_803367EC
lbl_8033672C:
/* 8033672C 0033238C  81 9E 00 10 */	lwz r12, 0x10(r30)
/* 80336730 00332390  2C 0C 00 00 */	cmpwi r12, 0
/* 80336734 00332394  41 82 00 38 */	beq lbl_8033676C
/* 80336738 00332398  2C 1F 00 00 */	cmpwi r31, 0
/* 8033673C 0033239C  41 80 00 10 */	blt lbl_8033674C
/* 80336740 003323A0  80 1E 00 00 */	lwz r0, 0(r30)
/* 80336744 003323A4  7C 1F 00 00 */	cmpw r31, r0
/* 80336748 003323A8  41 80 00 0C */	blt lbl_80336754
lbl_8033674C:
/* 8033674C 003323AC  38 60 00 00 */	li r3, 0
/* 80336750 003323B0  48 00 00 14 */	b lbl_80336764
lbl_80336754:
/* 80336754 003323B4  80 1E 00 08 */	lwz r0, 8(r30)
/* 80336758 003323B8  80 7E 00 14 */	lwz r3, 0x14(r30)
/* 8033675C 003323BC  7C 00 F9 D6 */	mullw r0, r0, r31
/* 80336760 003323C0  7C 63 02 14 */	add r3, r3, r0
lbl_80336764:
/* 80336764 003323C4  7D 89 03 A6 */	mtctr r12
/* 80336768 003323C8  4E 80 04 21 */	bctrl
lbl_8033676C:
/* 8033676C 003323CC  80 9E 00 00 */	lwz r4, 0(r30)
/* 80336770 003323D0  38 C4 FF FF */	addi r6, r4, -1
/* 80336774 003323D4  7C 1F 30 00 */	cmpw r31, r6
/* 80336778 003323D8  40 80 00 64 */	bge lbl_803367DC
/* 8033677C 003323DC  2C 1F 00 00 */	cmpwi r31, 0
/* 80336780 003323E0  41 80 00 0C */	blt lbl_8033678C
/* 80336784 003323E4  7C 1F 20 00 */	cmpw r31, r4
/* 80336788 003323E8  41 80 00 0C */	blt lbl_80336794
lbl_8033678C:
/* 8033678C 003323EC  38 60 00 00 */	li r3, 0
/* 80336790 003323F0  48 00 00 14 */	b lbl_803367A4
lbl_80336794:
/* 80336794 003323F4  80 1E 00 08 */	lwz r0, 8(r30)
/* 80336798 003323F8  80 7E 00 14 */	lwz r3, 0x14(r30)
/* 8033679C 003323FC  7C 00 F9 D6 */	mullw r0, r0, r31
/* 803367A0 00332400  7C 63 02 14 */	add r3, r3, r0
lbl_803367A4:
/* 803367A4 00332404  34 BF 00 01 */	addic. r5, r31, 1
/* 803367A8 00332408  41 80 00 0C */	blt lbl_803367B4
/* 803367AC 0033240C  7C 05 20 00 */	cmpw r5, r4
/* 803367B0 00332410  41 80 00 0C */	blt lbl_803367BC
lbl_803367B4:
/* 803367B4 00332414  38 80 00 00 */	li r4, 0
/* 803367B8 00332418  48 00 00 14 */	b lbl_803367CC
lbl_803367BC:
/* 803367BC 0033241C  80 1E 00 08 */	lwz r0, 8(r30)
/* 803367C0 00332420  80 9E 00 14 */	lwz r4, 0x14(r30)
/* 803367C4 00332424  7C 00 29 D6 */	mullw r0, r0, r5
/* 803367C8 00332428  7C 84 02 14 */	add r4, r4, r0
lbl_803367CC:
/* 803367CC 0033242C  80 BE 00 08 */	lwz r5, 8(r30)
/* 803367D0 00332430  7C 1F 30 50 */	subf r0, r31, r6
/* 803367D4 00332434  7C A5 01 D6 */	mullw r5, r5, r0
/* 803367D8 00332438  4B E9 3A 9D */	bl memmove
lbl_803367DC:
/* 803367DC 0033243C  80 7E 00 00 */	lwz r3, 0(r30)
/* 803367E0 00332440  3B FF FF FF */	addi r31, r31, -1
/* 803367E4 00332444  38 03 FF FF */	addi r0, r3, -1
/* 803367E8 00332448  90 1E 00 00 */	stw r0, 0(r30)
lbl_803367EC:
/* 803367EC 0033244C  2C 1F 00 00 */	cmpwi r31, 0
/* 803367F0 00332450  40 80 FF 3C */	bge lbl_8033672C
/* 803367F4 00332454  80 01 00 14 */	lwz r0, 0x14(r1)
/* 803367F8 00332458  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 803367FC 0033245C  83 C1 00 08 */	lwz r30, 8(r1)
/* 80336800 00332460  7C 08 03 A6 */	mtlr r0
/* 80336804 00332464  38 21 00 10 */	addi r1, r1, 0x10
/* 80336808 00332468  4E 80 00 20 */	blr