summaryrefslogtreecommitdiff
path: root/asm/SDK/SO/SOBasic.s
blob: 0a84db6895f7cada37992f5bbc2c1404ccb30a55 (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
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
.include "macros.inc"

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

.global __SOCreateSocket
__SOCreateSocket:
/* 802F61FC 002F1E5C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802F6200 002F1E60  7C 08 02 A6 */	mflr r0
/* 802F6204 002F1E64  90 01 00 24 */	stw r0, 0x24(r1)
/* 802F6208 002F1E68  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802F620C 002F1E6C  7C BF 2B 78 */	mr r31, r5
/* 802F6210 002F1E70  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802F6214 002F1E74  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802F6218 002F1E78  7C 9D 23 78 */	mr r29, r4
/* 802F621C 002F1E7C  38 81 00 08 */	addi r4, r1, 8
/* 802F6220 002F1E80  93 81 00 10 */	stw r28, 0x10(r1)
/* 802F6224 002F1E84  7C 7C 1B 78 */	mr r28, r3
/* 802F6228 002F1E88  38 60 00 00 */	li r3, 0
/* 802F622C 002F1E8C  4B FF F9 99 */	bl SOiPrepare
/* 802F6230 002F1E90  2C 03 00 00 */	cmpwi r3, 0
/* 802F6234 002F1E94  40 82 00 7C */	bne lbl_802F62B0
/* 802F6238 002F1E98  2C 1C 00 17 */	cmpwi r28, 0x17
/* 802F623C 002F1E9C  40 82 00 0C */	bne lbl_802F6248
/* 802F6240 002F1EA0  3B E0 FF FB */	li r31, -5
/* 802F6244 002F1EA4  48 00 00 60 */	b lbl_802F62A4
lbl_802F6248:
/* 802F6248 002F1EA8  38 60 00 0C */	li r3, 0xc
/* 802F624C 002F1EAC  38 80 00 20 */	li r4, 0x20
/* 802F6250 002F1EB0  4B FF F8 59 */	bl SOiAlloc
/* 802F6254 002F1EB4  2C 03 00 00 */	cmpwi r3, 0
/* 802F6258 002F1EB8  7C 7E 1B 78 */	mr r30, r3
/* 802F625C 002F1EBC  40 82 00 0C */	bne lbl_802F6268
/* 802F6260 002F1EC0  3B E0 FF CF */	li r31, -49
/* 802F6264 002F1EC4  48 00 00 40 */	b lbl_802F62A4
lbl_802F6268:
/* 802F6268 002F1EC8  93 83 00 00 */	stw r28, 0(r3)
/* 802F626C 002F1ECC  7F C5 F3 78 */	mr r5, r30
/* 802F6270 002F1ED0  38 80 00 0F */	li r4, 0xf
/* 802F6274 002F1ED4  38 C0 00 0C */	li r6, 0xc
/* 802F6278 002F1ED8  93 A3 00 04 */	stw r29, 4(r3)
/* 802F627C 002F1EDC  38 E0 00 00 */	li r7, 0
/* 802F6280 002F1EE0  39 00 00 00 */	li r8, 0
/* 802F6284 002F1EE4  93 E3 00 08 */	stw r31, 8(r3)
/* 802F6288 002F1EE8  80 61 00 08 */	lwz r3, 8(r1)
/* 802F628C 002F1EEC  4B FA D8 65 */	bl IOS_Ioctl
/* 802F6290 002F1EF0  7C 7F 1B 78 */	mr r31, r3
/* 802F6294 002F1EF4  7F C4 F3 78 */	mr r4, r30
/* 802F6298 002F1EF8  38 60 00 0C */	li r3, 0xc
/* 802F629C 002F1EFC  38 A0 00 20 */	li r5, 0x20
/* 802F62A0 002F1F00  4B FF F8 F1 */	bl SOiFree
lbl_802F62A4:
/* 802F62A4 002F1F04  7F E4 FB 78 */	mr r4, r31
/* 802F62A8 002F1F08  38 60 00 00 */	li r3, 0
/* 802F62AC 002F1F0C  4B FF FA 01 */	bl SOiConclude
lbl_802F62B0:
/* 802F62B0 002F1F10  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802F62B4 002F1F14  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802F62B8 002F1F18  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802F62BC 002F1F1C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802F62C0 002F1F20  83 81 00 10 */	lwz r28, 0x10(r1)
/* 802F62C4 002F1F24  7C 08 03 A6 */	mtlr r0
/* 802F62C8 002F1F28  38 21 00 20 */	addi r1, r1, 0x20
/* 802F62CC 002F1F2C  4E 80 00 20 */	blr

.global SOClose
SOClose:
/* 802F62D0 002F1F30  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802F62D4 002F1F34  7C 08 02 A6 */	mflr r0
/* 802F62D8 002F1F38  90 01 00 24 */	stw r0, 0x24(r1)
/* 802F62DC 002F1F3C  38 81 00 08 */	addi r4, r1, 8
/* 802F62E0 002F1F40  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802F62E4 002F1F44  7C 7F 1B 78 */	mr r31, r3
/* 802F62E8 002F1F48  38 60 00 00 */	li r3, 0
/* 802F62EC 002F1F4C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802F62F0 002F1F50  4B FF F8 D5 */	bl SOiPrepare
/* 802F62F4 002F1F54  2C 03 00 00 */	cmpwi r3, 0
/* 802F62F8 002F1F58  40 82 00 64 */	bne lbl_802F635C
/* 802F62FC 002F1F5C  38 60 00 0C */	li r3, 0xc
/* 802F6300 002F1F60  38 80 00 20 */	li r4, 0x20
/* 802F6304 002F1F64  4B FF F7 A5 */	bl SOiAlloc
/* 802F6308 002F1F68  2C 03 00 00 */	cmpwi r3, 0
/* 802F630C 002F1F6C  7C 7E 1B 78 */	mr r30, r3
/* 802F6310 002F1F70  40 82 00 0C */	bne lbl_802F631C
/* 802F6314 002F1F74  3B E0 FF CF */	li r31, -49
/* 802F6318 002F1F78  48 00 00 38 */	b lbl_802F6350
lbl_802F631C:
/* 802F631C 002F1F7C  93 E3 00 00 */	stw r31, 0(r3)
/* 802F6320 002F1F80  7F C5 F3 78 */	mr r5, r30
/* 802F6324 002F1F84  38 80 00 03 */	li r4, 3
/* 802F6328 002F1F88  38 C0 00 04 */	li r6, 4
/* 802F632C 002F1F8C  80 61 00 08 */	lwz r3, 8(r1)
/* 802F6330 002F1F90  38 E0 00 00 */	li r7, 0
/* 802F6334 002F1F94  39 00 00 00 */	li r8, 0
/* 802F6338 002F1F98  4B FA D7 B9 */	bl IOS_Ioctl
/* 802F633C 002F1F9C  7C 7F 1B 78 */	mr r31, r3
/* 802F6340 002F1FA0  7F C4 F3 78 */	mr r4, r30
/* 802F6344 002F1FA4  38 60 00 0C */	li r3, 0xc
/* 802F6348 002F1FA8  38 A0 00 20 */	li r5, 0x20
/* 802F634C 002F1FAC  4B FF F8 45 */	bl SOiFree
lbl_802F6350:
/* 802F6350 002F1FB0  7F E4 FB 78 */	mr r4, r31
/* 802F6354 002F1FB4  38 60 00 00 */	li r3, 0
/* 802F6358 002F1FB8  4B FF F9 55 */	bl SOiConclude
lbl_802F635C:
/* 802F635C 002F1FBC  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802F6360 002F1FC0  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802F6364 002F1FC4  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802F6368 002F1FC8  7C 08 03 A6 */	mtlr r0
/* 802F636C 002F1FCC  38 21 00 20 */	addi r1, r1, 0x20
/* 802F6370 002F1FD0  4E 80 00 20 */	blr

.global SOListen
SOListen:
/* 802F6374 002F1FD4  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802F6378 002F1FD8  7C 08 02 A6 */	mflr r0
/* 802F637C 002F1FDC  90 01 00 24 */	stw r0, 0x24(r1)
/* 802F6380 002F1FE0  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802F6384 002F1FE4  7C 9F 23 78 */	mr r31, r4
/* 802F6388 002F1FE8  38 81 00 08 */	addi r4, r1, 8
/* 802F638C 002F1FEC  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802F6390 002F1FF0  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802F6394 002F1FF4  7C 7D 1B 78 */	mr r29, r3
/* 802F6398 002F1FF8  38 60 00 00 */	li r3, 0
/* 802F639C 002F1FFC  4B FF F8 29 */	bl SOiPrepare
/* 802F63A0 002F2000  2C 03 00 00 */	cmpwi r3, 0
/* 802F63A4 002F2004  40 82 00 68 */	bne lbl_802F640C
/* 802F63A8 002F2008  38 60 00 0C */	li r3, 0xc
/* 802F63AC 002F200C  38 80 00 20 */	li r4, 0x20
/* 802F63B0 002F2010  4B FF F6 F9 */	bl SOiAlloc
/* 802F63B4 002F2014  2C 03 00 00 */	cmpwi r3, 0
/* 802F63B8 002F2018  7C 7E 1B 78 */	mr r30, r3
/* 802F63BC 002F201C  40 82 00 0C */	bne lbl_802F63C8
/* 802F63C0 002F2020  3B E0 FF CF */	li r31, -49
/* 802F63C4 002F2024  48 00 00 3C */	b lbl_802F6400
lbl_802F63C8:
/* 802F63C8 002F2028  93 A3 00 00 */	stw r29, 0(r3)
/* 802F63CC 002F202C  7F C5 F3 78 */	mr r5, r30
/* 802F63D0 002F2030  38 80 00 0A */	li r4, 0xa
/* 802F63D4 002F2034  38 C0 00 08 */	li r6, 8
/* 802F63D8 002F2038  93 E3 00 04 */	stw r31, 4(r3)
/* 802F63DC 002F203C  38 E0 00 00 */	li r7, 0
/* 802F63E0 002F2040  39 00 00 00 */	li r8, 0
/* 802F63E4 002F2044  80 61 00 08 */	lwz r3, 8(r1)
/* 802F63E8 002F2048  4B FA D7 09 */	bl IOS_Ioctl
/* 802F63EC 002F204C  7C 7F 1B 78 */	mr r31, r3
/* 802F63F0 002F2050  7F C4 F3 78 */	mr r4, r30
/* 802F63F4 002F2054  38 60 00 0C */	li r3, 0xc
/* 802F63F8 002F2058  38 A0 00 20 */	li r5, 0x20
/* 802F63FC 002F205C  4B FF F7 95 */	bl SOiFree
lbl_802F6400:
/* 802F6400 002F2060  7F E4 FB 78 */	mr r4, r31
/* 802F6404 002F2064  38 60 00 00 */	li r3, 0
/* 802F6408 002F2068  4B FF F8 A5 */	bl SOiConclude
lbl_802F640C:
/* 802F640C 002F206C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802F6410 002F2070  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802F6414 002F2074  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802F6418 002F2078  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802F641C 002F207C  7C 08 03 A6 */	mtlr r0
/* 802F6420 002F2080  38 21 00 20 */	addi r1, r1, 0x20
/* 802F6424 002F2084  4E 80 00 20 */	blr

.global SOAccept
SOAccept:
/* 802F6428 002F2088  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 802F642C 002F208C  7C 08 02 A6 */	mflr r0
/* 802F6430 002F2090  90 01 00 34 */	stw r0, 0x34(r1)
/* 802F6434 002F2094  39 61 00 30 */	addi r11, r1, 0x30
/* 802F6438 002F2098  4B ED 0C F1 */	bl _savegpr_27
/* 802F643C 002F209C  7C 7C 1B 78 */	mr r28, r3
/* 802F6440 002F20A0  7C 9B 23 78 */	mr r27, r4
/* 802F6444 002F20A4  38 81 00 08 */	addi r4, r1, 8
/* 802F6448 002F20A8  38 60 00 00 */	li r3, 0
/* 802F644C 002F20AC  4B FF F7 79 */	bl SOiPrepare
/* 802F6450 002F20B0  2C 03 00 00 */	cmpwi r3, 0
/* 802F6454 002F20B4  40 82 00 FC */	bne lbl_802F6550
/* 802F6458 002F20B8  2C 1B 00 00 */	cmpwi r27, 0
/* 802F645C 002F20BC  41 82 00 1C */	beq lbl_802F6478
/* 802F6460 002F20C0  88 1B 00 00 */	lbz r0, 0(r27)
/* 802F6464 002F20C4  28 00 00 08 */	cmplwi r0, 8
/* 802F6468 002F20C8  41 81 00 08 */	bgt lbl_802F6470
/* 802F646C 002F20CC  40 80 00 0C */	bge lbl_802F6478
lbl_802F6470:
/* 802F6470 002F20D0  3B C0 FF E4 */	li r30, -28
/* 802F6474 002F20D4  48 00 00 D0 */	b lbl_802F6544
lbl_802F6478:
/* 802F6478 002F20D8  2C 1B 00 00 */	cmpwi r27, 0
/* 802F647C 002F20DC  40 82 00 0C */	bne lbl_802F6488
/* 802F6480 002F20E0  38 60 00 04 */	li r3, 4
/* 802F6484 002F20E4  48 00 00 0C */	b lbl_802F6490
lbl_802F6488:
/* 802F6488 002F20E8  88 7B 00 00 */	lbz r3, 0(r27)
/* 802F648C 002F20EC  38 63 00 20 */	addi r3, r3, 0x20
lbl_802F6490:
/* 802F6490 002F20F0  38 03 00 1F */	addi r0, r3, 0x1f
/* 802F6494 002F20F4  38 60 00 0C */	li r3, 0xc
/* 802F6498 002F20F8  54 1F 00 34 */	rlwinm r31, r0, 0, 0, 0x1a
/* 802F649C 002F20FC  7F E4 FB 78 */	mr r4, r31
/* 802F64A0 002F2100  4B FF F6 09 */	bl SOiAlloc
/* 802F64A4 002F2104  2C 03 00 00 */	cmpwi r3, 0
/* 802F64A8 002F2108  7C 7D 1B 78 */	mr r29, r3
/* 802F64AC 002F210C  40 82 00 0C */	bne lbl_802F64B8
/* 802F64B0 002F2110  3B C0 FF CF */	li r30, -49
/* 802F64B4 002F2114  48 00 00 90 */	b lbl_802F6544
lbl_802F64B8:
/* 802F64B8 002F2118  2C 1B 00 00 */	cmpwi r27, 0
/* 802F64BC 002F211C  93 83 00 00 */	stw r28, 0(r3)
/* 802F64C0 002F2120  3B 83 00 20 */	addi r28, r3, 0x20
/* 802F64C4 002F2124  40 82 00 28 */	bne lbl_802F64EC
/* 802F64C8 002F2128  80 61 00 08 */	lwz r3, 8(r1)
/* 802F64CC 002F212C  7F A5 EB 78 */	mr r5, r29
/* 802F64D0 002F2130  38 80 00 01 */	li r4, 1
/* 802F64D4 002F2134  38 C0 00 04 */	li r6, 4
/* 802F64D8 002F2138  38 E0 00 00 */	li r7, 0
/* 802F64DC 002F213C  39 00 00 00 */	li r8, 0
/* 802F64E0 002F2140  4B FA D6 11 */	bl IOS_Ioctl
/* 802F64E4 002F2144  7C 7E 1B 78 */	mr r30, r3
/* 802F64E8 002F2148  48 00 00 4C */	b lbl_802F6534
lbl_802F64EC:
/* 802F64EC 002F214C  88 BB 00 00 */	lbz r5, 0(r27)
/* 802F64F0 002F2150  7F 83 E3 78 */	mr r3, r28
/* 802F64F4 002F2154  7F 64 DB 78 */	mr r4, r27
/* 802F64F8 002F2158  4B D0 DB 09 */	bl memcpy
/* 802F64FC 002F215C  80 61 00 08 */	lwz r3, 8(r1)
/* 802F6500 002F2160  7F A5 EB 78 */	mr r5, r29
/* 802F6504 002F2164  89 1B 00 00 */	lbz r8, 0(r27)
/* 802F6508 002F2168  7F 87 E3 78 */	mr r7, r28
/* 802F650C 002F216C  38 80 00 01 */	li r4, 1
/* 802F6510 002F2170  38 C0 00 04 */	li r6, 4
/* 802F6514 002F2174  4B FA D5 DD */	bl IOS_Ioctl
/* 802F6518 002F2178  2C 03 00 00 */	cmpwi r3, 0
/* 802F651C 002F217C  7C 7E 1B 78 */	mr r30, r3
/* 802F6520 002F2180  41 80 00 14 */	blt lbl_802F6534
/* 802F6524 002F2184  88 BC 00 00 */	lbz r5, 0(r28)
/* 802F6528 002F2188  7F 63 DB 78 */	mr r3, r27
/* 802F652C 002F218C  7F 84 E3 78 */	mr r4, r28
/* 802F6530 002F2190  4B D0 DA D1 */	bl memcpy
lbl_802F6534:
/* 802F6534 002F2194  7F A4 EB 78 */	mr r4, r29
/* 802F6538 002F2198  7F E5 FB 78 */	mr r5, r31
/* 802F653C 002F219C  38 60 00 0C */	li r3, 0xc
/* 802F6540 002F21A0  4B FF F6 51 */	bl SOiFree
lbl_802F6544:
/* 802F6544 002F21A4  7F C4 F3 78 */	mr r4, r30
/* 802F6548 002F21A8  38 60 00 00 */	li r3, 0
/* 802F654C 002F21AC  4B FF F7 61 */	bl SOiConclude
lbl_802F6550:
/* 802F6550 002F21B0  39 61 00 30 */	addi r11, r1, 0x30
/* 802F6554 002F21B4  4B ED 0C 21 */	bl _restgpr_27
/* 802F6558 002F21B8  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802F655C 002F21BC  7C 08 03 A6 */	mtlr r0
/* 802F6560 002F21C0  38 21 00 30 */	addi r1, r1, 0x30
/* 802F6564 002F21C4  4E 80 00 20 */	blr

.global SOBind
SOBind:
/* 802F6568 002F21C8  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802F656C 002F21CC  7C 08 02 A6 */	mflr r0
/* 802F6570 002F21D0  90 01 00 24 */	stw r0, 0x24(r1)
/* 802F6574 002F21D4  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802F6578 002F21D8  7C 9F 23 78 */	mr r31, r4
/* 802F657C 002F21DC  38 81 00 08 */	addi r4, r1, 8
/* 802F6580 002F21E0  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802F6584 002F21E4  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802F6588 002F21E8  7C 7D 1B 78 */	mr r29, r3
/* 802F658C 002F21EC  38 60 00 00 */	li r3, 0
/* 802F6590 002F21F0  4B FF F6 35 */	bl SOiPrepare
/* 802F6594 002F21F4  2C 03 00 00 */	cmpwi r3, 0
/* 802F6598 002F21F8  40 82 00 9C */	bne lbl_802F6634
/* 802F659C 002F21FC  2C 1F 00 00 */	cmpwi r31, 0
/* 802F65A0 002F2200  41 82 00 14 */	beq lbl_802F65B4
/* 802F65A4 002F2204  88 1F 00 00 */	lbz r0, 0(r31)
/* 802F65A8 002F2208  28 00 00 08 */	cmplwi r0, 8
/* 802F65AC 002F220C  41 81 00 08 */	bgt lbl_802F65B4
/* 802F65B0 002F2210  40 80 00 0C */	bge lbl_802F65BC
lbl_802F65B4:
/* 802F65B4 002F2214  3B E0 FF E4 */	li r31, -28
/* 802F65B8 002F2218  48 00 00 70 */	b lbl_802F6628
lbl_802F65BC:
/* 802F65BC 002F221C  38 60 00 0C */	li r3, 0xc
/* 802F65C0 002F2220  38 80 00 40 */	li r4, 0x40
/* 802F65C4 002F2224  4B FF F4 E5 */	bl SOiAlloc
/* 802F65C8 002F2228  2C 03 00 00 */	cmpwi r3, 0
/* 802F65CC 002F222C  7C 7E 1B 78 */	mr r30, r3
/* 802F65D0 002F2230  40 82 00 0C */	bne lbl_802F65DC
/* 802F65D4 002F2234  3B E0 FF CF */	li r31, -49
/* 802F65D8 002F2238  48 00 00 50 */	b lbl_802F6628
lbl_802F65DC:
/* 802F65DC 002F223C  93 A3 00 00 */	stw r29, 0(r3)
/* 802F65E0 002F2240  38 00 00 01 */	li r0, 1
/* 802F65E4 002F2244  7F E4 FB 78 */	mr r4, r31
/* 802F65E8 002F2248  90 03 00 04 */	stw r0, 4(r3)
/* 802F65EC 002F224C  38 63 00 08 */	addi r3, r3, 8
/* 802F65F0 002F2250  88 BF 00 00 */	lbz r5, 0(r31)
/* 802F65F4 002F2254  4B D0 DA 0D */	bl memcpy
/* 802F65F8 002F2258  80 61 00 08 */	lwz r3, 8(r1)
/* 802F65FC 002F225C  7F C5 F3 78 */	mr r5, r30
/* 802F6600 002F2260  38 80 00 02 */	li r4, 2
/* 802F6604 002F2264  38 C0 00 24 */	li r6, 0x24
/* 802F6608 002F2268  38 E0 00 00 */	li r7, 0
/* 802F660C 002F226C  39 00 00 00 */	li r8, 0
/* 802F6610 002F2270  4B FA D4 E1 */	bl IOS_Ioctl
/* 802F6614 002F2274  7C 7F 1B 78 */	mr r31, r3
/* 802F6618 002F2278  7F C4 F3 78 */	mr r4, r30
/* 802F661C 002F227C  38 60 00 0C */	li r3, 0xc
/* 802F6620 002F2280  38 A0 00 40 */	li r5, 0x40
/* 802F6624 002F2284  4B FF F5 6D */	bl SOiFree
lbl_802F6628:
/* 802F6628 002F2288  7F E4 FB 78 */	mr r4, r31
/* 802F662C 002F228C  38 60 00 00 */	li r3, 0
/* 802F6630 002F2290  4B FF F6 7D */	bl SOiConclude
lbl_802F6634:
/* 802F6634 002F2294  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802F6638 002F2298  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802F663C 002F229C  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802F6640 002F22A0  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802F6644 002F22A4  7C 08 03 A6 */	mtlr r0
/* 802F6648 002F22A8  38 21 00 20 */	addi r1, r1, 0x20
/* 802F664C 002F22AC  4E 80 00 20 */	blr

.global SOConnect
SOConnect:
/* 802F6650 002F22B0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802F6654 002F22B4  7C 08 02 A6 */	mflr r0
/* 802F6658 002F22B8  90 01 00 24 */	stw r0, 0x24(r1)
/* 802F665C 002F22BC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802F6660 002F22C0  7C 9F 23 78 */	mr r31, r4
/* 802F6664 002F22C4  38 81 00 08 */	addi r4, r1, 8
/* 802F6668 002F22C8  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802F666C 002F22CC  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802F6670 002F22D0  7C 7D 1B 78 */	mr r29, r3
/* 802F6674 002F22D4  38 60 00 00 */	li r3, 0
/* 802F6678 002F22D8  4B FF F5 4D */	bl SOiPrepare
/* 802F667C 002F22DC  2C 03 00 00 */	cmpwi r3, 0
/* 802F6680 002F22E0  40 82 00 9C */	bne lbl_802F671C
/* 802F6684 002F22E4  2C 1F 00 00 */	cmpwi r31, 0
/* 802F6688 002F22E8  41 82 00 14 */	beq lbl_802F669C
/* 802F668C 002F22EC  88 1F 00 00 */	lbz r0, 0(r31)
/* 802F6690 002F22F0  28 00 00 08 */	cmplwi r0, 8
/* 802F6694 002F22F4  41 81 00 08 */	bgt lbl_802F669C
/* 802F6698 002F22F8  40 80 00 0C */	bge lbl_802F66A4
lbl_802F669C:
/* 802F669C 002F22FC  3B E0 FF E4 */	li r31, -28
/* 802F66A0 002F2300  48 00 00 70 */	b lbl_802F6710
lbl_802F66A4:
/* 802F66A4 002F2304  38 60 00 0C */	li r3, 0xc
/* 802F66A8 002F2308  38 80 00 40 */	li r4, 0x40
/* 802F66AC 002F230C  4B FF F3 FD */	bl SOiAlloc
/* 802F66B0 002F2310  2C 03 00 00 */	cmpwi r3, 0
/* 802F66B4 002F2314  7C 7E 1B 78 */	mr r30, r3
/* 802F66B8 002F2318  40 82 00 0C */	bne lbl_802F66C4
/* 802F66BC 002F231C  3B E0 FF CF */	li r31, -49
/* 802F66C0 002F2320  48 00 00 50 */	b lbl_802F6710
lbl_802F66C4:
/* 802F66C4 002F2324  93 A3 00 00 */	stw r29, 0(r3)
/* 802F66C8 002F2328  38 00 00 01 */	li r0, 1
/* 802F66CC 002F232C  7F E4 FB 78 */	mr r4, r31
/* 802F66D0 002F2330  90 03 00 04 */	stw r0, 4(r3)
/* 802F66D4 002F2334  38 63 00 08 */	addi r3, r3, 8
/* 802F66D8 002F2338  88 BF 00 00 */	lbz r5, 0(r31)
/* 802F66DC 002F233C  4B D0 D9 25 */	bl memcpy
/* 802F66E0 002F2340  80 61 00 08 */	lwz r3, 8(r1)
/* 802F66E4 002F2344  7F C5 F3 78 */	mr r5, r30
/* 802F66E8 002F2348  38 80 00 04 */	li r4, 4
/* 802F66EC 002F234C  38 C0 00 24 */	li r6, 0x24
/* 802F66F0 002F2350  38 E0 00 00 */	li r7, 0
/* 802F66F4 002F2354  39 00 00 00 */	li r8, 0
/* 802F66F8 002F2358  4B FA D3 F9 */	bl IOS_Ioctl
/* 802F66FC 002F235C  7C 7F 1B 78 */	mr r31, r3
/* 802F6700 002F2360  7F C4 F3 78 */	mr r4, r30
/* 802F6704 002F2364  38 60 00 0C */	li r3, 0xc
/* 802F6708 002F2368  38 A0 00 40 */	li r5, 0x40
/* 802F670C 002F236C  4B FF F4 85 */	bl SOiFree
lbl_802F6710:
/* 802F6710 002F2370  7F E4 FB 78 */	mr r4, r31
/* 802F6714 002F2374  38 60 00 00 */	li r3, 0
/* 802F6718 002F2378  4B FF F5 95 */	bl SOiConclude
lbl_802F671C:
/* 802F671C 002F237C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802F6720 002F2380  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802F6724 002F2384  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802F6728 002F2388  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802F672C 002F238C  7C 08 03 A6 */	mtlr r0
/* 802F6730 002F2390  38 21 00 20 */	addi r1, r1, 0x20
/* 802F6734 002F2394  4E 80 00 20 */	blr

.global SOGetSockName
SOGetSockName:
/* 802F6738 002F2398  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 802F673C 002F239C  7C 08 02 A6 */	mflr r0
/* 802F6740 002F23A0  90 01 00 34 */	stw r0, 0x34(r1)
/* 802F6744 002F23A4  39 61 00 30 */	addi r11, r1, 0x30
/* 802F6748 002F23A8  4B ED 09 E1 */	bl _savegpr_27
/* 802F674C 002F23AC  7C 7C 1B 78 */	mr r28, r3
/* 802F6750 002F23B0  7C 9B 23 78 */	mr r27, r4
/* 802F6754 002F23B4  38 81 00 08 */	addi r4, r1, 8
/* 802F6758 002F23B8  38 60 00 00 */	li r3, 0
/* 802F675C 002F23BC  4B FF F4 69 */	bl SOiPrepare
/* 802F6760 002F23C0  2C 03 00 00 */	cmpwi r3, 0
/* 802F6764 002F23C4  40 82 00 B8 */	bne lbl_802F681C
/* 802F6768 002F23C8  2C 1B 00 00 */	cmpwi r27, 0
/* 802F676C 002F23CC  41 82 00 14 */	beq lbl_802F6780
/* 802F6770 002F23D0  88 7B 00 00 */	lbz r3, 0(r27)
/* 802F6774 002F23D4  28 03 00 08 */	cmplwi r3, 8
/* 802F6778 002F23D8  41 81 00 08 */	bgt lbl_802F6780
/* 802F677C 002F23DC  40 80 00 0C */	bge lbl_802F6788
lbl_802F6780:
/* 802F6780 002F23E0  3B C0 FF E4 */	li r30, -28
/* 802F6784 002F23E4  48 00 00 8C */	b lbl_802F6810
lbl_802F6788:
/* 802F6788 002F23E8  38 03 00 3F */	addi r0, r3, 0x3f
/* 802F678C 002F23EC  38 60 00 0C */	li r3, 0xc
/* 802F6790 002F23F0  54 1F 00 34 */	rlwinm r31, r0, 0, 0, 0x1a
/* 802F6794 002F23F4  7F E4 FB 78 */	mr r4, r31
/* 802F6798 002F23F8  4B FF F3 11 */	bl SOiAlloc
/* 802F679C 002F23FC  2C 03 00 00 */	cmpwi r3, 0
/* 802F67A0 002F2400  7C 7D 1B 78 */	mr r29, r3
/* 802F67A4 002F2404  40 82 00 0C */	bne lbl_802F67B0
/* 802F67A8 002F2408  3B C0 FF CF */	li r30, -49
/* 802F67AC 002F240C  48 00 00 64 */	b lbl_802F6810
lbl_802F67B0:
/* 802F67B0 002F2410  93 83 00 00 */	stw r28, 0(r3)
/* 802F67B4 002F2414  3B 83 00 20 */	addi r28, r3, 0x20
/* 802F67B8 002F2418  7F 64 DB 78 */	mr r4, r27
/* 802F67BC 002F241C  88 BB 00 00 */	lbz r5, 0(r27)
/* 802F67C0 002F2420  7F 83 E3 78 */	mr r3, r28
/* 802F67C4 002F2424  4B D0 D8 3D */	bl memcpy
/* 802F67C8 002F2428  80 61 00 08 */	lwz r3, 8(r1)
/* 802F67CC 002F242C  7F A5 EB 78 */	mr r5, r29
/* 802F67D0 002F2430  89 1B 00 00 */	lbz r8, 0(r27)
/* 802F67D4 002F2434  7F 87 E3 78 */	mr r7, r28
/* 802F67D8 002F2438  38 80 00 07 */	li r4, 7
/* 802F67DC 002F243C  38 C0 00 04 */	li r6, 4
/* 802F67E0 002F2440  4B FA D3 11 */	bl IOS_Ioctl
/* 802F67E4 002F2444  2C 03 00 00 */	cmpwi r3, 0
/* 802F67E8 002F2448  7C 7E 1B 78 */	mr r30, r3
/* 802F67EC 002F244C  41 80 00 14 */	blt lbl_802F6800
/* 802F67F0 002F2450  88 BC 00 00 */	lbz r5, 0(r28)
/* 802F67F4 002F2454  7F 63 DB 78 */	mr r3, r27
/* 802F67F8 002F2458  7F 84 E3 78 */	mr r4, r28
/* 802F67FC 002F245C  4B D0 D8 05 */	bl memcpy
lbl_802F6800:
/* 802F6800 002F2460  7F A4 EB 78 */	mr r4, r29
/* 802F6804 002F2464  7F E5 FB 78 */	mr r5, r31
/* 802F6808 002F2468  38 60 00 0C */	li r3, 0xc
/* 802F680C 002F246C  4B FF F3 85 */	bl SOiFree
lbl_802F6810:
/* 802F6810 002F2470  7F C4 F3 78 */	mr r4, r30
/* 802F6814 002F2474  38 60 00 00 */	li r3, 0
/* 802F6818 002F2478  4B FF F4 95 */	bl SOiConclude
lbl_802F681C:
/* 802F681C 002F247C  39 61 00 30 */	addi r11, r1, 0x30
/* 802F6820 002F2480  4B ED 09 55 */	bl _restgpr_27
/* 802F6824 002F2484  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802F6828 002F2488  7C 08 03 A6 */	mtlr r0
/* 802F682C 002F248C  38 21 00 30 */	addi r1, r1, 0x30
/* 802F6830 002F2490  4E 80 00 20 */	blr

.global SORecvFrom
SORecvFrom:
/* 802F6834 002F2494  7C 8A 23 78 */	mr r10, r4
/* 802F6838 002F2498  7C A9 2B 78 */	mr r9, r5
/* 802F683C 002F249C  7C C0 33 78 */	mr r0, r6
/* 802F6840 002F24A0  7C E8 3B 78 */	mr r8, r7
/* 802F6844 002F24A4  7C 64 1B 78 */	mr r4, r3
/* 802F6848 002F24A8  7D 45 53 78 */	mr r5, r10
/* 802F684C 002F24AC  7D 26 4B 78 */	mr r6, r9
/* 802F6850 002F24B0  7C 07 03 78 */	mr r7, r0
/* 802F6854 002F24B4  38 60 00 00 */	li r3, 0
/* 802F6858 002F24B8  48 00 05 2C */	b RecvFrom

.global SORecv
SORecv:
/* 802F685C 002F24BC  7C 88 23 78 */	mr r8, r4
/* 802F6860 002F24C0  7C A0 2B 78 */	mr r0, r5
/* 802F6864 002F24C4  7C C7 33 78 */	mr r7, r6
/* 802F6868 002F24C8  7C 64 1B 78 */	mr r4, r3
/* 802F686C 002F24CC  7D 05 43 78 */	mr r5, r8
/* 802F6870 002F24D0  7C 06 03 78 */	mr r6, r0
/* 802F6874 002F24D4  38 60 00 00 */	li r3, 0
/* 802F6878 002F24D8  39 00 00 00 */	li r8, 0
/* 802F687C 002F24DC  48 00 05 08 */	b RecvFrom

.global SOSendTo
SOSendTo:
/* 802F6880 002F24E0  7C 8A 23 78 */	mr r10, r4
/* 802F6884 002F24E4  7C A9 2B 78 */	mr r9, r5
/* 802F6888 002F24E8  7C C0 33 78 */	mr r0, r6
/* 802F688C 002F24EC  7C E8 3B 78 */	mr r8, r7
/* 802F6890 002F24F0  7C 64 1B 78 */	mr r4, r3
/* 802F6894 002F24F4  7D 45 53 78 */	mr r5, r10
/* 802F6898 002F24F8  7D 26 4B 78 */	mr r6, r9
/* 802F689C 002F24FC  7C 07 03 78 */	mr r7, r0
/* 802F68A0 002F2500  38 60 00 00 */	li r3, 0
/* 802F68A4 002F2504  48 00 07 80 */	b SendTo

.global SOSend
SOSend:
/* 802F68A8 002F2508  7C 88 23 78 */	mr r8, r4
/* 802F68AC 002F250C  7C A0 2B 78 */	mr r0, r5
/* 802F68B0 002F2510  7C C7 33 78 */	mr r7, r6
/* 802F68B4 002F2514  7C 64 1B 78 */	mr r4, r3
/* 802F68B8 002F2518  7D 05 43 78 */	mr r5, r8
/* 802F68BC 002F251C  7C 06 03 78 */	mr r6, r0
/* 802F68C0 002F2520  38 60 00 00 */	li r3, 0
/* 802F68C4 002F2524  39 00 00 00 */	li r8, 0
/* 802F68C8 002F2528  48 00 07 5C */	b SendTo

.global SOFcntl
SOFcntl:
/* 802F68CC 002F252C  94 21 FF 70 */	stwu r1, -0x90(r1)
/* 802F68D0 002F2530  7C 08 02 A6 */	mflr r0
/* 802F68D4 002F2534  90 01 00 94 */	stw r0, 0x94(r1)
/* 802F68D8 002F2538  93 E1 00 8C */	stw r31, 0x8c(r1)
/* 802F68DC 002F253C  93 C1 00 88 */	stw r30, 0x88(r1)
/* 802F68E0 002F2540  93 A1 00 84 */	stw r29, 0x84(r1)
/* 802F68E4 002F2544  7C 9D 23 78 */	mr r29, r4
/* 802F68E8 002F2548  93 81 00 80 */	stw r28, 0x80(r1)
/* 802F68EC 002F254C  7C 7C 1B 78 */	mr r28, r3
/* 802F68F0 002F2550  40 86 00 24 */	bne cr1, lbl_802F6914
/* 802F68F4 002F2554  D8 21 00 28 */	stfd f1, 0x28(r1)
/* 802F68F8 002F2558  D8 41 00 30 */	stfd f2, 0x30(r1)
/* 802F68FC 002F255C  D8 61 00 38 */	stfd f3, 0x38(r1)
/* 802F6900 002F2560  D8 81 00 40 */	stfd f4, 0x40(r1)
/* 802F6904 002F2564  D8 A1 00 48 */	stfd f5, 0x48(r1)
/* 802F6908 002F2568  D8 C1 00 50 */	stfd f6, 0x50(r1)
/* 802F690C 002F256C  D8 E1 00 58 */	stfd f7, 0x58(r1)
/* 802F6910 002F2570  D9 01 00 60 */	stfd f8, 0x60(r1)
lbl_802F6914:
/* 802F6914 002F2574  39 61 00 98 */	addi r11, r1, 0x98
/* 802F6918 002F2578  38 01 00 08 */	addi r0, r1, 8
/* 802F691C 002F257C  3D 80 02 00 */	lis r12, 0x200
/* 802F6920 002F2580  90 81 00 0C */	stw r4, 0xc(r1)
/* 802F6924 002F2584  3B E1 00 6C */	addi r31, r1, 0x6c
/* 802F6928 002F2588  38 80 00 01 */	li r4, 1
/* 802F692C 002F258C  90 61 00 08 */	stw r3, 8(r1)
/* 802F6930 002F2590  7F E3 FB 78 */	mr r3, r31
/* 802F6934 002F2594  90 A1 00 10 */	stw r5, 0x10(r1)
/* 802F6938 002F2598  90 C1 00 14 */	stw r6, 0x14(r1)
/* 802F693C 002F259C  90 E1 00 18 */	stw r7, 0x18(r1)
/* 802F6940 002F25A0  91 01 00 1C */	stw r8, 0x1c(r1)
/* 802F6944 002F25A4  91 21 00 20 */	stw r9, 0x20(r1)
/* 802F6948 002F25A8  91 41 00 24 */	stw r10, 0x24(r1)
/* 802F694C 002F25AC  91 81 00 6C */	stw r12, 0x6c(r1)
/* 802F6950 002F25B0  91 61 00 70 */	stw r11, 0x70(r1)
/* 802F6954 002F25B4  90 01 00 74 */	stw r0, 0x74(r1)
/* 802F6958 002F25B8  4B ED 02 29 */	bl __va_arg
/* 802F695C 002F25BC  83 E3 00 00 */	lwz r31, 0(r3)
/* 802F6960 002F25C0  38 81 00 68 */	addi r4, r1, 0x68
/* 802F6964 002F25C4  38 60 00 00 */	li r3, 0
/* 802F6968 002F25C8  4B FF F2 5D */	bl SOiPrepare
/* 802F696C 002F25CC  2C 03 00 00 */	cmpwi r3, 0
/* 802F6970 002F25D0  40 82 00 6C */	bne lbl_802F69DC
/* 802F6974 002F25D4  38 60 00 0C */	li r3, 0xc
/* 802F6978 002F25D8  38 80 00 20 */	li r4, 0x20
/* 802F697C 002F25DC  4B FF F1 2D */	bl SOiAlloc
/* 802F6980 002F25E0  2C 03 00 00 */	cmpwi r3, 0
/* 802F6984 002F25E4  7C 7E 1B 78 */	mr r30, r3
/* 802F6988 002F25E8  40 82 00 0C */	bne lbl_802F6994
/* 802F698C 002F25EC  3B E0 FF CF */	li r31, -49
/* 802F6990 002F25F0  48 00 00 40 */	b lbl_802F69D0
lbl_802F6994:
/* 802F6994 002F25F4  93 83 00 00 */	stw r28, 0(r3)
/* 802F6998 002F25F8  7F C5 F3 78 */	mr r5, r30
/* 802F699C 002F25FC  38 80 00 05 */	li r4, 5
/* 802F69A0 002F2600  38 C0 00 0C */	li r6, 0xc
/* 802F69A4 002F2604  93 A3 00 04 */	stw r29, 4(r3)
/* 802F69A8 002F2608  38 E0 00 00 */	li r7, 0
/* 802F69AC 002F260C  39 00 00 00 */	li r8, 0
/* 802F69B0 002F2610  93 E3 00 08 */	stw r31, 8(r3)
/* 802F69B4 002F2614  80 61 00 68 */	lwz r3, 0x68(r1)
/* 802F69B8 002F2618  4B FA D1 39 */	bl IOS_Ioctl
/* 802F69BC 002F261C  7C 7F 1B 78 */	mr r31, r3
/* 802F69C0 002F2620  7F C4 F3 78 */	mr r4, r30
/* 802F69C4 002F2624  38 60 00 0C */	li r3, 0xc
/* 802F69C8 002F2628  38 A0 00 20 */	li r5, 0x20
/* 802F69CC 002F262C  4B FF F1 C5 */	bl SOiFree
lbl_802F69D0:
/* 802F69D0 002F2630  7F E4 FB 78 */	mr r4, r31
/* 802F69D4 002F2634  38 60 00 00 */	li r3, 0
/* 802F69D8 002F2638  4B FF F2 D5 */	bl SOiConclude
lbl_802F69DC:
/* 802F69DC 002F263C  80 01 00 94 */	lwz r0, 0x94(r1)
/* 802F69E0 002F2640  83 E1 00 8C */	lwz r31, 0x8c(r1)
/* 802F69E4 002F2644  83 C1 00 88 */	lwz r30, 0x88(r1)
/* 802F69E8 002F2648  83 A1 00 84 */	lwz r29, 0x84(r1)
/* 802F69EC 002F264C  83 81 00 80 */	lwz r28, 0x80(r1)
/* 802F69F0 002F2650  7C 08 03 A6 */	mtlr r0
/* 802F69F4 002F2654  38 21 00 90 */	addi r1, r1, 0x90
/* 802F69F8 002F2658  4E 80 00 20 */	blr

.global SOShutdown
SOShutdown:
/* 802F69FC 002F265C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802F6A00 002F2660  7C 08 02 A6 */	mflr r0
/* 802F6A04 002F2664  90 01 00 24 */	stw r0, 0x24(r1)
/* 802F6A08 002F2668  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802F6A0C 002F266C  7C 9F 23 78 */	mr r31, r4
/* 802F6A10 002F2670  38 81 00 08 */	addi r4, r1, 8
/* 802F6A14 002F2674  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802F6A18 002F2678  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802F6A1C 002F267C  7C 7D 1B 78 */	mr r29, r3
/* 802F6A20 002F2680  38 60 00 00 */	li r3, 0
/* 802F6A24 002F2684  4B FF F1 A1 */	bl SOiPrepare
/* 802F6A28 002F2688  2C 03 00 00 */	cmpwi r3, 0
/* 802F6A2C 002F268C  40 82 00 68 */	bne lbl_802F6A94
/* 802F6A30 002F2690  38 60 00 0C */	li r3, 0xc
/* 802F6A34 002F2694  38 80 00 20 */	li r4, 0x20
/* 802F6A38 002F2698  4B FF F0 71 */	bl SOiAlloc
/* 802F6A3C 002F269C  2C 03 00 00 */	cmpwi r3, 0
/* 802F6A40 002F26A0  7C 7E 1B 78 */	mr r30, r3
/* 802F6A44 002F26A4  40 82 00 0C */	bne lbl_802F6A50
/* 802F6A48 002F26A8  3B E0 FF CF */	li r31, -49
/* 802F6A4C 002F26AC  48 00 00 3C */	b lbl_802F6A88
lbl_802F6A50:
/* 802F6A50 002F26B0  93 A3 00 00 */	stw r29, 0(r3)
/* 802F6A54 002F26B4  7F C5 F3 78 */	mr r5, r30
/* 802F6A58 002F26B8  38 80 00 0E */	li r4, 0xe
/* 802F6A5C 002F26BC  38 C0 00 08 */	li r6, 8
/* 802F6A60 002F26C0  93 E3 00 04 */	stw r31, 4(r3)
/* 802F6A64 002F26C4  38 E0 00 00 */	li r7, 0
/* 802F6A68 002F26C8  39 00 00 00 */	li r8, 0
/* 802F6A6C 002F26CC  80 61 00 08 */	lwz r3, 8(r1)
/* 802F6A70 002F26D0  4B FA D0 81 */	bl IOS_Ioctl
/* 802F6A74 002F26D4  7C 7F 1B 78 */	mr r31, r3
/* 802F6A78 002F26D8  7F C4 F3 78 */	mr r4, r30
/* 802F6A7C 002F26DC  38 60 00 0C */	li r3, 0xc
/* 802F6A80 002F26E0  38 A0 00 20 */	li r5, 0x20
/* 802F6A84 002F26E4  4B FF F1 0D */	bl SOiFree
lbl_802F6A88:
/* 802F6A88 002F26E8  7F E4 FB 78 */	mr r4, r31
/* 802F6A8C 002F26EC  38 60 00 00 */	li r3, 0
/* 802F6A90 002F26F0  4B FF F2 1D */	bl SOiConclude
lbl_802F6A94:
/* 802F6A94 002F26F4  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802F6A98 002F26F8  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802F6A9C 002F26FC  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802F6AA0 002F2700  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802F6AA4 002F2704  7C 08 03 A6 */	mtlr r0
/* 802F6AA8 002F2708  38 21 00 20 */	addi r1, r1, 0x20
/* 802F6AAC 002F270C  4E 80 00 20 */	blr

.global SOPoll
SOPoll:
/* 802F6AB0 002F2710  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 802F6AB4 002F2714  7C 08 02 A6 */	mflr r0
/* 802F6AB8 002F2718  90 01 00 34 */	stw r0, 0x34(r1)
/* 802F6ABC 002F271C  39 61 00 30 */	addi r11, r1, 0x30
/* 802F6AC0 002F2720  4B ED 06 65 */	bl _savegpr_26
/* 802F6AC4 002F2724  90 A1 00 08 */	stw r5, 8(r1)
/* 802F6AC8 002F2728  7C 7F 1B 78 */	mr r31, r3
/* 802F6ACC 002F272C  7C 9A 23 78 */	mr r26, r4
/* 802F6AD0 002F2730  38 81 00 10 */	addi r4, r1, 0x10
/* 802F6AD4 002F2734  90 C1 00 0C */	stw r6, 0xc(r1)
/* 802F6AD8 002F2738  38 60 00 00 */	li r3, 0
/* 802F6ADC 002F273C  4B FF F0 E9 */	bl SOiPrepare
/* 802F6AE0 002F2740  2C 03 00 00 */	cmpwi r3, 0
/* 802F6AE4 002F2744  40 82 01 10 */	bne lbl_802F6BF4
/* 802F6AE8 002F2748  2C 1F 00 00 */	cmpwi r31, 0
/* 802F6AEC 002F274C  40 82 00 0C */	bne lbl_802F6AF8
/* 802F6AF0 002F2750  3B 80 FF E4 */	li r28, -28
/* 802F6AF4 002F2754  48 00 00 F4 */	b lbl_802F6BE8
lbl_802F6AF8:
/* 802F6AF8 002F2758  1F BA 00 0C */	mulli r29, r26, 0xc
/* 802F6AFC 002F275C  38 60 00 0C */	li r3, 0xc
/* 802F6B00 002F2760  38 1D 00 3F */	addi r0, r29, 0x3f
/* 802F6B04 002F2764  54 1E 00 34 */	rlwinm r30, r0, 0, 0, 0x1a
/* 802F6B08 002F2768  7F C4 F3 78 */	mr r4, r30
/* 802F6B0C 002F276C  4B FF EF 9D */	bl SOiAlloc
/* 802F6B10 002F2770  2C 03 00 00 */	cmpwi r3, 0
/* 802F6B14 002F2774  7C 7B 1B 78 */	mr r27, r3
/* 802F6B18 002F2778  40 82 00 0C */	bne lbl_802F6B24
/* 802F6B1C 002F277C  3B 80 FF CF */	li r28, -49
/* 802F6B20 002F2780  48 00 00 C8 */	b lbl_802F6BE8
lbl_802F6B24:
/* 802F6B24 002F2784  80 E1 00 08 */	lwz r7, 8(r1)
/* 802F6B28 002F2788  38 A0 FF FF */	li r5, -1
/* 802F6B2C 002F278C  80 81 00 0C */	lwz r4, 0xc(r1)
/* 802F6B30 002F2790  6C A0 80 00 */	xoris r0, r5, 0x8000
/* 802F6B34 002F2794  6C E6 80 00 */	xoris r6, r7, 0x8000
/* 802F6B38 002F2798  3B 43 00 20 */	addi r26, r3, 0x20
/* 802F6B3C 002F279C  7C A4 28 10 */	subfc r5, r4, r5
/* 802F6B40 002F27A0  7C C6 01 10 */	subfe r6, r6, r0
/* 802F6B44 002F27A4  7C C0 01 10 */	subfe r6, r0, r0
/* 802F6B48 002F27A8  7C C6 00 D1 */	neg. r6, r6
/* 802F6B4C 002F27AC  40 82 00 14 */	bne lbl_802F6B60
/* 802F6B50 002F27B0  38 81 00 08 */	addi r4, r1, 8
/* 802F6B54 002F27B4  38 A0 00 08 */	li r5, 8
/* 802F6B58 002F27B8  4B D0 D4 A9 */	bl memcpy
/* 802F6B5C 002F27BC  48 00 00 34 */	b lbl_802F6B90
lbl_802F6B60:
/* 802F6B60 002F27C0  3C A0 80 00 */	lis r5, 0x800000F8@ha
/* 802F6B64 002F27C4  3C 60 10 62 */	lis r3, 0x10624DD3@ha
/* 802F6B68 002F27C8  80 05 00 F8 */	lwz r0, 0x800000F8@l(r5)
/* 802F6B6C 002F27CC  38 C3 4D D3 */	addi r6, r3, 0x10624DD3@l
/* 802F6B70 002F27D0  7C E3 3B 78 */	mr r3, r7
/* 802F6B74 002F27D4  38 A0 00 00 */	li r5, 0
/* 802F6B78 002F27D8  54 00 F0 BE */	srwi r0, r0, 2
/* 802F6B7C 002F27DC  7C 06 00 16 */	mulhwu r0, r6, r0
/* 802F6B80 002F27E0  54 06 D1 BE */	srwi r6, r0, 6
/* 802F6B84 002F27E4  4B ED 06 F5 */	bl __div2i
/* 802F6B88 002F27E8  90 9B 00 04 */	stw r4, 4(r27)
/* 802F6B8C 002F27EC  90 7B 00 00 */	stw r3, 0(r27)
lbl_802F6B90:
/* 802F6B90 002F27F0  7F 43 D3 78 */	mr r3, r26
/* 802F6B94 002F27F4  7F E4 FB 78 */	mr r4, r31
/* 802F6B98 002F27F8  7F A5 EB 78 */	mr r5, r29
/* 802F6B9C 002F27FC  4B D0 D4 65 */	bl memcpy
/* 802F6BA0 002F2800  80 61 00 10 */	lwz r3, 0x10(r1)
/* 802F6BA4 002F2804  7F 65 DB 78 */	mr r5, r27
/* 802F6BA8 002F2808  7F 47 D3 78 */	mr r7, r26
/* 802F6BAC 002F280C  7F A8 EB 78 */	mr r8, r29
/* 802F6BB0 002F2810  38 80 00 0B */	li r4, 0xb
/* 802F6BB4 002F2814  38 C0 00 08 */	li r6, 8
/* 802F6BB8 002F2818  4B FA CF 39 */	bl IOS_Ioctl
/* 802F6BBC 002F281C  2C 03 00 00 */	cmpwi r3, 0
/* 802F6BC0 002F2820  7C 7C 1B 78 */	mr r28, r3
/* 802F6BC4 002F2824  41 80 00 14 */	blt lbl_802F6BD8
/* 802F6BC8 002F2828  7F E3 FB 78 */	mr r3, r31
/* 802F6BCC 002F282C  7F 44 D3 78 */	mr r4, r26
/* 802F6BD0 002F2830  7F A5 EB 78 */	mr r5, r29
/* 802F6BD4 002F2834  4B D0 D4 2D */	bl memcpy
lbl_802F6BD8:
/* 802F6BD8 002F2838  7F 64 DB 78 */	mr r4, r27
/* 802F6BDC 002F283C  7F C5 F3 78 */	mr r5, r30
/* 802F6BE0 002F2840  38 60 00 0C */	li r3, 0xc
/* 802F6BE4 002F2844  4B FF EF AD */	bl SOiFree
lbl_802F6BE8:
/* 802F6BE8 002F2848  7F 84 E3 78 */	mr r4, r28
/* 802F6BEC 002F284C  38 60 00 00 */	li r3, 0
/* 802F6BF0 002F2850  4B FF F0 BD */	bl SOiConclude
lbl_802F6BF4:
/* 802F6BF4 002F2854  39 61 00 30 */	addi r11, r1, 0x30
/* 802F6BF8 002F2858  4B ED 05 79 */	bl _restgpr_26
/* 802F6BFC 002F285C  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802F6C00 002F2860  7C 08 03 A6 */	mtlr r0
/* 802F6C04 002F2864  38 21 00 30 */	addi r1, r1, 0x30
/* 802F6C08 002F2868  4E 80 00 20 */	blr

.global SOInetAtoN
SOInetAtoN:
/* 802F6C0C 002F286C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 802F6C10 002F2870  7C 08 02 A6 */	mflr r0
/* 802F6C14 002F2874  90 01 00 34 */	stw r0, 0x34(r1)
/* 802F6C18 002F2878  39 61 00 30 */	addi r11, r1, 0x30
/* 802F6C1C 002F287C  4B ED 05 0D */	bl _savegpr_27
/* 802F6C20 002F2880  7C 7B 1B 78 */	mr r27, r3
/* 802F6C24 002F2884  7C 9C 23 78 */	mr r28, r4
/* 802F6C28 002F2888  38 81 00 0C */	addi r4, r1, 0xc
/* 802F6C2C 002F288C  38 A1 00 08 */	addi r5, r1, 8
/* 802F6C30 002F2890  38 60 00 00 */	li r3, 0
/* 802F6C34 002F2894  4B FF F0 D5 */	bl SOiPrepareTempRm
/* 802F6C38 002F2898  2C 03 00 00 */	cmpwi r3, 0
/* 802F6C3C 002F289C  40 82 00 C4 */	bne lbl_802F6D00
/* 802F6C40 002F28A0  2C 1B 00 00 */	cmpwi r27, 0
/* 802F6C44 002F28A4  40 82 00 0C */	bne lbl_802F6C50
/* 802F6C48 002F28A8  3B C0 FF E4 */	li r30, -28
/* 802F6C4C 002F28AC  48 00 00 A4 */	b lbl_802F6CF0
lbl_802F6C50:
/* 802F6C50 002F28B0  7F 63 DB 78 */	mr r3, r27
/* 802F6C54 002F28B4  4B EC FF 11 */	bl strlen
/* 802F6C58 002F28B8  38 03 00 40 */	addi r0, r3, 0x40
/* 802F6C5C 002F28BC  38 60 00 0C */	li r3, 0xc
/* 802F6C60 002F28C0  54 1F 00 34 */	rlwinm r31, r0, 0, 0, 0x1a
/* 802F6C64 002F28C4  7F E4 FB 78 */	mr r4, r31
/* 802F6C68 002F28C8  4B FF EE 41 */	bl SOiAlloc
/* 802F6C6C 002F28CC  2C 03 00 00 */	cmpwi r3, 0
/* 802F6C70 002F28D0  7C 7D 1B 78 */	mr r29, r3
/* 802F6C74 002F28D4  40 82 00 0C */	bne lbl_802F6C80
/* 802F6C78 002F28D8  3B C0 FF CF */	li r30, -49
/* 802F6C7C 002F28DC  48 00 00 74 */	b lbl_802F6CF0
lbl_802F6C80:
/* 802F6C80 002F28E0  2C 1B 00 00 */	cmpwi r27, 0
/* 802F6C84 002F28E4  3B C3 00 20 */	addi r30, r3, 0x20
/* 802F6C88 002F28E8  41 82 00 10 */	beq lbl_802F6C98
/* 802F6C8C 002F28EC  7F C3 F3 78 */	mr r3, r30
/* 802F6C90 002F28F0  7F 64 DB 78 */	mr r4, r27
/* 802F6C94 002F28F4  4B ED 76 3D */	bl strcpy
lbl_802F6C98:
/* 802F6C98 002F28F8  7F 63 DB 78 */	mr r3, r27
/* 802F6C9C 002F28FC  4B EC FE C9 */	bl strlen
/* 802F6CA0 002F2900  7C 66 1B 78 */	mr r6, r3
/* 802F6CA4 002F2904  80 61 00 0C */	lwz r3, 0xc(r1)
/* 802F6CA8 002F2908  7F C5 F3 78 */	mr r5, r30
/* 802F6CAC 002F290C  7F A7 EB 78 */	mr r7, r29
/* 802F6CB0 002F2910  38 80 00 15 */	li r4, 0x15
/* 802F6CB4 002F2914  39 00 00 04 */	li r8, 4
/* 802F6CB8 002F2918  4B FA CE 39 */	bl IOS_Ioctl
/* 802F6CBC 002F291C  2C 03 00 00 */	cmpwi r3, 0
/* 802F6CC0 002F2920  7C 7E 1B 78 */	mr r30, r3
/* 802F6CC4 002F2924  41 80 00 1C */	blt lbl_802F6CE0
/* 802F6CC8 002F2928  2C 1C 00 00 */	cmpwi r28, 0
/* 802F6CCC 002F292C  41 82 00 14 */	beq lbl_802F6CE0
/* 802F6CD0 002F2930  7F 83 E3 78 */	mr r3, r28
/* 802F6CD4 002F2934  7F A4 EB 78 */	mr r4, r29
/* 802F6CD8 002F2938  38 A0 00 04 */	li r5, 4
/* 802F6CDC 002F293C  4B D0 D3 25 */	bl memcpy
lbl_802F6CE0:
/* 802F6CE0 002F2940  7F A4 EB 78 */	mr r4, r29
/* 802F6CE4 002F2944  7F E5 FB 78 */	mr r5, r31
/* 802F6CE8 002F2948  38 60 00 0C */	li r3, 0xc
/* 802F6CEC 002F294C  4B FF EE A5 */	bl SOiFree
lbl_802F6CF0:
/* 802F6CF0 002F2950  80 A1 00 08 */	lwz r5, 8(r1)
/* 802F6CF4 002F2954  7F C4 F3 78 */	mr r4, r30
/* 802F6CF8 002F2958  38 60 00 00 */	li r3, 0
/* 802F6CFC 002F295C  4B FF F2 E5 */	bl SOiConcludeTempRm
lbl_802F6D00:
/* 802F6D00 002F2960  39 61 00 30 */	addi r11, r1, 0x30
/* 802F6D04 002F2964  4B ED 04 71 */	bl _restgpr_27
/* 802F6D08 002F2968  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802F6D0C 002F296C  7C 08 03 A6 */	mtlr r0
/* 802F6D10 002F2970  38 21 00 30 */	addi r1, r1, 0x30
/* 802F6D14 002F2974  4E 80 00 20 */	blr

.global SOInetNtoA
SOInetNtoA:
/* 802F6D18 002F2978  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802F6D1C 002F297C  7C 08 02 A6 */	mflr r0
/* 802F6D20 002F2980  7C 68 1B 78 */	mr r8, r3
/* 802F6D24 002F2984  3C 80 80 44 */	lis r4, lbl_80445FE0@ha
/* 802F6D28 002F2988  90 01 00 14 */	stw r0, 0x14(r1)
/* 802F6D2C 002F298C  38 84 5F E0 */	addi r4, r4, lbl_80445FE0@l
/* 802F6D30 002F2990  88 E8 00 02 */	lbz r7, 2(r8)
/* 802F6D34 002F2994  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802F6D38 002F2998  3F E0 80 58 */	lis r31, lbl_8057AAD0@ha
/* 802F6D3C 002F299C  88 A3 00 00 */	lbz r5, 0(r3)
/* 802F6D40 002F29A0  88 C3 00 01 */	lbz r6, 1(r3)
/* 802F6D44 002F29A4  38 7F AA D0 */	addi r3, r31, lbl_8057AAD0@l
/* 802F6D48 002F29A8  89 08 00 03 */	lbz r8, 3(r8)
/* 802F6D4C 002F29AC  4C C6 31 82 */	crclr 6
/* 802F6D50 002F29B0  4B ED 5D AD */	bl sprintf
/* 802F6D54 002F29B4  38 7F AA D0 */	addi r3, r31, -21808
/* 802F6D58 002F29B8  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802F6D5C 002F29BC  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802F6D60 002F29C0  7C 08 03 A6 */	mtlr r0
/* 802F6D64 002F29C4  38 21 00 10 */	addi r1, r1, 0x10
/* 802F6D68 002F29C8  4E 80 00 20 */	blr

.global SONtoHl
SONtoHl:
/* 802F6D6C 002F29CC  4E 80 00 20 */	blr

.global SONtoHs
SONtoHs:
/* 802F6D70 002F29D0  54 63 04 3E */	clrlwi r3, r3, 0x10
/* 802F6D74 002F29D4  4E 80 00 20 */	blr

.global SOHtoNl
SOHtoNl:
/* 802F6D78 002F29D8  4E 80 00 20 */	blr

.global SOHtoNs
SOHtoNs:
/* 802F6D7C 002F29DC  54 63 04 3E */	clrlwi r3, r3, 0x10
/* 802F6D80 002F29E0  4E 80 00 20 */	blr

RecvFrom:
/* 802F6D84 002F29E4  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 802F6D88 002F29E8  7C 08 02 A6 */	mflr r0
/* 802F6D8C 002F29EC  90 01 00 44 */	stw r0, 0x44(r1)
/* 802F6D90 002F29F0  39 61 00 40 */	addi r11, r1, 0x40
/* 802F6D94 002F29F4  4B ED 03 7D */	bl _savegpr_21
/* 802F6D98 002F29F8  7C 9A 23 78 */	mr r26, r4
/* 802F6D9C 002F29FC  7C 79 1B 78 */	mr r25, r3
/* 802F6DA0 002F2A00  7C BB 2B 78 */	mr r27, r5
/* 802F6DA4 002F2A04  7C DC 33 78 */	mr r28, r6
/* 802F6DA8 002F2A08  7C FD 3B 78 */	mr r29, r7
/* 802F6DAC 002F2A0C  7D 1E 43 78 */	mr r30, r8
/* 802F6DB0 002F2A10  38 81 00 08 */	addi r4, r1, 8
/* 802F6DB4 002F2A14  4B FF EE 11 */	bl SOiPrepare
/* 802F6DB8 002F2A18  2C 03 00 00 */	cmpwi r3, 0
/* 802F6DBC 002F2A1C  40 82 02 50 */	bne lbl_802F700C
/* 802F6DC0 002F2A20  2C 1E 00 00 */	cmpwi r30, 0
/* 802F6DC4 002F2A24  41 82 00 1C */	beq lbl_802F6DE0
/* 802F6DC8 002F2A28  88 1E 00 00 */	lbz r0, 0(r30)
/* 802F6DCC 002F2A2C  28 00 00 08 */	cmplwi r0, 8
/* 802F6DD0 002F2A30  41 81 00 08 */	bgt lbl_802F6DD8
/* 802F6DD4 002F2A34  40 80 00 0C */	bge lbl_802F6DE0
lbl_802F6DD8:
/* 802F6DD8 002F2A38  3B 40 FF E4 */	li r26, -28
/* 802F6DDC 002F2A3C  48 00 02 24 */	b lbl_802F7000
lbl_802F6DE0:
/* 802F6DE0 002F2A40  2C 1C 00 00 */	cmpwi r28, 0
/* 802F6DE4 002F2A44  41 80 00 10 */	blt lbl_802F6DF4
/* 802F6DE8 002F2A48  40 81 00 14 */	ble lbl_802F6DFC
/* 802F6DEC 002F2A4C  2C 1B 00 00 */	cmpwi r27, 0
/* 802F6DF0 002F2A50  40 82 00 0C */	bne lbl_802F6DFC
lbl_802F6DF4:
/* 802F6DF4 002F2A54  3B 40 FF E4 */	li r26, -28
/* 802F6DF8 002F2A58  48 00 02 08 */	b lbl_802F7000
lbl_802F6DFC:
/* 802F6DFC 002F2A5C  2C 1C 00 00 */	cmpwi r28, 0
/* 802F6E00 002F2A60  3B E0 00 01 */	li r31, 1
/* 802F6E04 002F2A64  41 82 00 90 */	beq lbl_802F6E94
/* 802F6E08 002F2A68  57 60 06 FF */	clrlwi. r0, r27, 0x1b
/* 802F6E0C 002F2A6C  3B 00 00 00 */	li r24, 0
/* 802F6E10 002F2A70  38 80 00 00 */	li r4, 0
/* 802F6E14 002F2A74  40 82 00 20 */	bne lbl_802F6E34
/* 802F6E18 002F2A78  57 80 D8 08 */	slwi r0, r28, 0x1b
/* 802F6E1C 002F2A7C  57 83 0F FE */	srwi r3, r28, 0x1f
/* 802F6E20 002F2A80  7C 03 00 50 */	subf r0, r3, r0
/* 802F6E24 002F2A84  54 00 28 3E */	rotlwi r0, r0, 5
/* 802F6E28 002F2A88  7C 00 1A 15 */	add. r0, r0, r3
/* 802F6E2C 002F2A8C  40 82 00 08 */	bne lbl_802F6E34
/* 802F6E30 002F2A90  38 80 00 01 */	li r4, 1
lbl_802F6E34:
/* 802F6E34 002F2A94  2C 04 00 00 */	cmpwi r4, 0
/* 802F6E38 002F2A98  41 82 00 50 */	beq lbl_802F6E88
/* 802F6E3C 002F2A9C  3A E0 00 01 */	li r23, 1
/* 802F6E40 002F2AA0  4B FF EC 11 */	bl SOiIsBufferAddrCheck
/* 802F6E44 002F2AA4  2C 03 00 00 */	cmpwi r3, 0
/* 802F6E48 002F2AA8  41 82 00 34 */	beq lbl_802F6E7C
/* 802F6E4C 002F2AAC  57 64 00 FE */	clrlwi r4, r27, 3
/* 802F6E50 002F2AB0  3C 00 10 00 */	lis r0, 0x1000
/* 802F6E54 002F2AB4  7C 04 00 40 */	cmplw r4, r0
/* 802F6E58 002F2AB8  38 60 00 00 */	li r3, 0
/* 802F6E5C 002F2ABC  41 80 00 14 */	blt lbl_802F6E70
/* 802F6E60 002F2AC0  3C 00 18 00 */	lis r0, 0x1800
/* 802F6E64 002F2AC4  7C 04 00 40 */	cmplw r4, r0
/* 802F6E68 002F2AC8  40 80 00 08 */	bge lbl_802F6E70
/* 802F6E6C 002F2ACC  38 60 00 01 */	li r3, 1
lbl_802F6E70:
/* 802F6E70 002F2AD0  2C 03 00 00 */	cmpwi r3, 0
/* 802F6E74 002F2AD4  40 82 00 08 */	bne lbl_802F6E7C
/* 802F6E78 002F2AD8  3A E0 00 00 */	li r23, 0
lbl_802F6E7C:
/* 802F6E7C 002F2ADC  2C 17 00 00 */	cmpwi r23, 0
/* 802F6E80 002F2AE0  41 82 00 08 */	beq lbl_802F6E88
/* 802F6E84 002F2AE4  3B 00 00 01 */	li r24, 1
lbl_802F6E88:
/* 802F6E88 002F2AE8  2C 18 00 00 */	cmpwi r24, 0
/* 802F6E8C 002F2AEC  40 82 00 08 */	bne lbl_802F6E94
/* 802F6E90 002F2AF0  3B E0 00 00 */	li r31, 0
lbl_802F6E94:
/* 802F6E94 002F2AF4  2C 1E 00 00 */	cmpwi r30, 0
/* 802F6E98 002F2AF8  40 82 00 0C */	bne lbl_802F6EA4
/* 802F6E9C 002F2AFC  38 60 00 00 */	li r3, 0
/* 802F6EA0 002F2B00  48 00 00 08 */	b lbl_802F6EA8
lbl_802F6EA4:
/* 802F6EA4 002F2B04  88 7E 00 00 */	lbz r3, 0(r30)
lbl_802F6EA8:
/* 802F6EA8 002F2B08  38 03 00 5F */	addi r0, r3, 0x5f
/* 802F6EAC 002F2B0C  38 60 00 0C */	li r3, 0xc
/* 802F6EB0 002F2B10  54 18 00 34 */	rlwinm r24, r0, 0, 0, 0x1a
/* 802F6EB4 002F2B14  7F 04 C3 78 */	mr r4, r24
/* 802F6EB8 002F2B18  4B FF EB F1 */	bl SOiAlloc
/* 802F6EBC 002F2B1C  2C 1F 00 00 */	cmpwi r31, 0
/* 802F6EC0 002F2B20  7C 76 1B 78 */	mr r22, r3
/* 802F6EC4 002F2B24  40 82 00 18 */	bne lbl_802F6EDC
/* 802F6EC8 002F2B28  38 1C 00 1F */	addi r0, r28, 0x1f
/* 802F6ECC 002F2B2C  38 60 00 0D */	li r3, 0xd
/* 802F6ED0 002F2B30  54 04 00 34 */	rlwinm r4, r0, 0, 0, 0x1a
/* 802F6ED4 002F2B34  4B FF EB D5 */	bl SOiAlloc
/* 802F6ED8 002F2B38  48 00 00 08 */	b lbl_802F6EE0
lbl_802F6EDC:
/* 802F6EDC 002F2B3C  7F 63 DB 78 */	mr r3, r27
lbl_802F6EE0:
/* 802F6EE0 002F2B40  2C 16 00 00 */	cmpwi r22, 0
/* 802F6EE4 002F2B44  7C 77 1B 78 */	mr r23, r3
/* 802F6EE8 002F2B48  41 82 00 0C */	beq lbl_802F6EF4
/* 802F6EEC 002F2B4C  2C 03 00 00 */	cmpwi r3, 0
/* 802F6EF0 002F2B50  40 82 00 0C */	bne lbl_802F6EFC
lbl_802F6EF4:
/* 802F6EF4 002F2B54  3B 40 FF CF */	li r26, -49
/* 802F6EF8 002F2B58  48 00 00 DC */	b lbl_802F6FD4
lbl_802F6EFC:
/* 802F6EFC 002F2B5C  93 56 00 20 */	stw r26, 0x20(r22)
/* 802F6F00 002F2B60  38 96 00 20 */	addi r4, r22, 0x20
/* 802F6F04 002F2B64  38 00 00 08 */	li r0, 8
/* 802F6F08 002F2B68  2C 1E 00 00 */	cmpwi r30, 0
/* 802F6F0C 002F2B6C  93 B6 00 24 */	stw r29, 0x24(r22)
/* 802F6F10 002F2B70  3A A4 00 20 */	addi r21, r4, 0x20
/* 802F6F14 002F2B74  90 96 00 00 */	stw r4, 0(r22)
/* 802F6F18 002F2B78  90 16 00 04 */	stw r0, 4(r22)
/* 802F6F1C 002F2B7C  90 76 00 08 */	stw r3, 8(r22)
/* 802F6F20 002F2B80  93 96 00 0C */	stw r28, 0xc(r22)
/* 802F6F24 002F2B84  40 82 00 30 */	bne lbl_802F6F54
/* 802F6F28 002F2B88  38 00 00 00 */	li r0, 0
/* 802F6F2C 002F2B8C  7E C7 B3 78 */	mr r7, r22
/* 802F6F30 002F2B90  90 16 00 10 */	stw r0, 0x10(r22)
/* 802F6F34 002F2B94  38 80 00 0C */	li r4, 0xc
/* 802F6F38 002F2B98  38 A0 00 01 */	li r5, 1
/* 802F6F3C 002F2B9C  38 C0 00 02 */	li r6, 2
/* 802F6F40 002F2BA0  90 16 00 14 */	stw r0, 0x14(r22)
/* 802F6F44 002F2BA4  80 61 00 08 */	lwz r3, 8(r1)
/* 802F6F48 002F2BA8  4B FA CE F9 */	bl IOS_Ioctlv
/* 802F6F4C 002F2BAC  7C 7A 1B 78 */	mr r26, r3
/* 802F6F50 002F2BB0  48 00 00 64 */	b lbl_802F6FB4
lbl_802F6F54:
/* 802F6F54 002F2BB4  88 BE 00 00 */	lbz r5, 0(r30)
/* 802F6F58 002F2BB8  7E A3 AB 78 */	mr r3, r21
/* 802F6F5C 002F2BBC  7F C4 F3 78 */	mr r4, r30
/* 802F6F60 002F2BC0  4B D0 D0 A1 */	bl memcpy
/* 802F6F64 002F2BC4  92 B6 00 10 */	stw r21, 0x10(r22)
/* 802F6F68 002F2BC8  7E C7 B3 78 */	mr r7, r22
/* 802F6F6C 002F2BCC  38 80 00 0C */	li r4, 0xc
/* 802F6F70 002F2BD0  38 A0 00 01 */	li r5, 1
/* 802F6F74 002F2BD4  88 1E 00 00 */	lbz r0, 0(r30)
/* 802F6F78 002F2BD8  38 C0 00 02 */	li r6, 2
/* 802F6F7C 002F2BDC  90 16 00 14 */	stw r0, 0x14(r22)
/* 802F6F80 002F2BE0  80 61 00 08 */	lwz r3, 8(r1)
/* 802F6F84 002F2BE4  4B FA CE BD */	bl IOS_Ioctlv
/* 802F6F88 002F2BE8  2C 03 00 00 */	cmpwi r3, 0
/* 802F6F8C 002F2BEC  7C 7A 1B 78 */	mr r26, r3
/* 802F6F90 002F2BF0  41 80 00 24 */	blt lbl_802F6FB4
/* 802F6F94 002F2BF4  88 BE 00 00 */	lbz r5, 0(r30)
/* 802F6F98 002F2BF8  7F C3 F3 78 */	mr r3, r30
/* 802F6F9C 002F2BFC  88 15 00 00 */	lbz r0, 0(r21)
/* 802F6FA0 002F2C00  7E A4 AB 78 */	mr r4, r21
/* 802F6FA4 002F2C04  7C 05 00 40 */	cmplw r5, r0
/* 802F6FA8 002F2C08  40 81 00 08 */	ble lbl_802F6FB0
/* 802F6FAC 002F2C0C  7C 05 03 78 */	mr r5, r0
lbl_802F6FB0:
/* 802F6FB0 002F2C10  4B D0 D0 51 */	bl memcpy
lbl_802F6FB4:
/* 802F6FB4 002F2C14  2C 1A 00 00 */	cmpwi r26, 0
/* 802F6FB8 002F2C18  41 80 00 1C */	blt lbl_802F6FD4
/* 802F6FBC 002F2C1C  2C 1F 00 00 */	cmpwi r31, 0
/* 802F6FC0 002F2C20  40 82 00 14 */	bne lbl_802F6FD4
/* 802F6FC4 002F2C24  7F 63 DB 78 */	mr r3, r27
/* 802F6FC8 002F2C28  7E E4 BB 78 */	mr r4, r23
/* 802F6FCC 002F2C2C  7F 85 E3 78 */	mr r5, r28
/* 802F6FD0 002F2C30  4B D0 D0 31 */	bl memcpy
lbl_802F6FD4:
/* 802F6FD4 002F2C34  2C 1F 00 00 */	cmpwi r31, 0
/* 802F6FD8 002F2C38  40 82 00 18 */	bne lbl_802F6FF0
/* 802F6FDC 002F2C3C  38 1C 00 1F */	addi r0, r28, 0x1f
/* 802F6FE0 002F2C40  7E E4 BB 78 */	mr r4, r23
/* 802F6FE4 002F2C44  54 05 00 34 */	rlwinm r5, r0, 0, 0, 0x1a
/* 802F6FE8 002F2C48  38 60 00 0D */	li r3, 0xd
/* 802F6FEC 002F2C4C  4B FF EB A5 */	bl SOiFree
lbl_802F6FF0:
/* 802F6FF0 002F2C50  7E C4 B3 78 */	mr r4, r22
/* 802F6FF4 002F2C54  7F 05 C3 78 */	mr r5, r24
/* 802F6FF8 002F2C58  38 60 00 0C */	li r3, 0xc
/* 802F6FFC 002F2C5C  4B FF EB 95 */	bl SOiFree
lbl_802F7000:
/* 802F7000 002F2C60  7F 23 CB 78 */	mr r3, r25
/* 802F7004 002F2C64  7F 44 D3 78 */	mr r4, r26
/* 802F7008 002F2C68  4B FF EC A5 */	bl SOiConclude
lbl_802F700C:
/* 802F700C 002F2C6C  39 61 00 40 */	addi r11, r1, 0x40
/* 802F7010 002F2C70  4B ED 01 4D */	bl _restgpr_21
/* 802F7014 002F2C74  80 01 00 44 */	lwz r0, 0x44(r1)
/* 802F7018 002F2C78  7C 08 03 A6 */	mtlr r0
/* 802F701C 002F2C7C  38 21 00 40 */	addi r1, r1, 0x40
/* 802F7020 002F2C80  4E 80 00 20 */	blr

SendTo:
/* 802F7024 002F2C84  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 802F7028 002F2C88  7C 08 02 A6 */	mflr r0
/* 802F702C 002F2C8C  90 01 00 44 */	stw r0, 0x44(r1)
/* 802F7030 002F2C90  39 61 00 40 */	addi r11, r1, 0x40
/* 802F7034 002F2C94  4B ED 00 E1 */	bl _savegpr_22
/* 802F7038 002F2C98  7C 9A 23 78 */	mr r26, r4
/* 802F703C 002F2C9C  7C 79 1B 78 */	mr r25, r3
/* 802F7040 002F2CA0  7C BB 2B 78 */	mr r27, r5
/* 802F7044 002F2CA4  7C DC 33 78 */	mr r28, r6
/* 802F7048 002F2CA8  7C FD 3B 78 */	mr r29, r7
/* 802F704C 002F2CAC  7D 1E 43 78 */	mr r30, r8
/* 802F7050 002F2CB0  38 81 00 08 */	addi r4, r1, 8
/* 802F7054 002F2CB4  4B FF EB 71 */	bl SOiPrepare
/* 802F7058 002F2CB8  2C 03 00 00 */	cmpwi r3, 0
/* 802F705C 002F2CBC  40 82 01 DC */	bne lbl_802F7238
/* 802F7060 002F2CC0  2C 1E 00 00 */	cmpwi r30, 0
/* 802F7064 002F2CC4  41 82 00 1C */	beq lbl_802F7080
/* 802F7068 002F2CC8  88 1E 00 00 */	lbz r0, 0(r30)
/* 802F706C 002F2CCC  28 00 00 08 */	cmplwi r0, 8
/* 802F7070 002F2CD0  41 81 00 08 */	bgt lbl_802F7078
/* 802F7074 002F2CD4  40 80 00 0C */	bge lbl_802F7080
lbl_802F7078:
/* 802F7078 002F2CD8  3B 00 FF E4 */	li r24, -28
/* 802F707C 002F2CDC  48 00 01 B0 */	b lbl_802F722C
lbl_802F7080:
/* 802F7080 002F2CE0  2C 1C 00 00 */	cmpwi r28, 0
/* 802F7084 002F2CE4  41 80 00 10 */	blt lbl_802F7094
/* 802F7088 002F2CE8  40 81 00 14 */	ble lbl_802F709C
/* 802F708C 002F2CEC  2C 1B 00 00 */	cmpwi r27, 0
/* 802F7090 002F2CF0  40 82 00 0C */	bne lbl_802F709C
lbl_802F7094:
/* 802F7094 002F2CF4  3B 00 FF E4 */	li r24, -28
/* 802F7098 002F2CF8  48 00 01 94 */	b lbl_802F722C
lbl_802F709C:
/* 802F709C 002F2CFC  2C 1C 00 00 */	cmpwi r28, 0
/* 802F70A0 002F2D00  3B E0 00 01 */	li r31, 1
/* 802F70A4 002F2D04  41 82 00 90 */	beq lbl_802F7134
/* 802F70A8 002F2D08  57 60 06 FF */	clrlwi. r0, r27, 0x1b
/* 802F70AC 002F2D0C  3B 00 00 00 */	li r24, 0
/* 802F70B0 002F2D10  38 80 00 00 */	li r4, 0
/* 802F70B4 002F2D14  40 82 00 20 */	bne lbl_802F70D4
/* 802F70B8 002F2D18  57 80 D8 08 */	slwi r0, r28, 0x1b
/* 802F70BC 002F2D1C  57 83 0F FE */	srwi r3, r28, 0x1f
/* 802F70C0 002F2D20  7C 03 00 50 */	subf r0, r3, r0
/* 802F70C4 002F2D24  54 00 28 3E */	rotlwi r0, r0, 5
/* 802F70C8 002F2D28  7C 00 1A 15 */	add. r0, r0, r3
/* 802F70CC 002F2D2C  40 82 00 08 */	bne lbl_802F70D4
/* 802F70D0 002F2D30  38 80 00 01 */	li r4, 1
lbl_802F70D4:
/* 802F70D4 002F2D34  2C 04 00 00 */	cmpwi r4, 0
/* 802F70D8 002F2D38  41 82 00 50 */	beq lbl_802F7128
/* 802F70DC 002F2D3C  3A E0 00 01 */	li r23, 1
/* 802F70E0 002F2D40  4B FF E9 71 */	bl SOiIsBufferAddrCheck
/* 802F70E4 002F2D44  2C 03 00 00 */	cmpwi r3, 0
/* 802F70E8 002F2D48  41 82 00 34 */	beq lbl_802F711C
/* 802F70EC 002F2D4C  57 64 00 FE */	clrlwi r4, r27, 3
/* 802F70F0 002F2D50  3C 00 10 00 */	lis r0, 0x1000
/* 802F70F4 002F2D54  7C 04 00 40 */	cmplw r4, r0
/* 802F70F8 002F2D58  38 60 00 00 */	li r3, 0
/* 802F70FC 002F2D5C  41 80 00 14 */	blt lbl_802F7110
/* 802F7100 002F2D60  3C 00 18 00 */	lis r0, 0x1800
/* 802F7104 002F2D64  7C 04 00 40 */	cmplw r4, r0
/* 802F7108 002F2D68  40 80 00 08 */	bge lbl_802F7110
/* 802F710C 002F2D6C  38 60 00 01 */	li r3, 1
lbl_802F7110:
/* 802F7110 002F2D70  2C 03 00 00 */	cmpwi r3, 0
/* 802F7114 002F2D74  40 82 00 08 */	bne lbl_802F711C
/* 802F7118 002F2D78  3A E0 00 00 */	li r23, 0
lbl_802F711C:
/* 802F711C 002F2D7C  2C 17 00 00 */	cmpwi r23, 0
/* 802F7120 002F2D80  41 82 00 08 */	beq lbl_802F7128
/* 802F7124 002F2D84  3B 00 00 01 */	li r24, 1
lbl_802F7128:
/* 802F7128 002F2D88  2C 18 00 00 */	cmpwi r24, 0
/* 802F712C 002F2D8C  40 82 00 08 */	bne lbl_802F7134
/* 802F7130 002F2D90  3B E0 00 00 */	li r31, 0
lbl_802F7134:
/* 802F7134 002F2D94  38 60 00 0C */	li r3, 0xc
/* 802F7138 002F2D98  38 80 00 60 */	li r4, 0x60
/* 802F713C 002F2D9C  4B FF E9 6D */	bl SOiAlloc
/* 802F7140 002F2DA0  2C 1F 00 00 */	cmpwi r31, 0
/* 802F7144 002F2DA4  7C 76 1B 78 */	mr r22, r3
/* 802F7148 002F2DA8  40 82 00 1C */	bne lbl_802F7164
/* 802F714C 002F2DAC  38 1C 00 1F */	addi r0, r28, 0x1f
/* 802F7150 002F2DB0  38 60 00 0E */	li r3, 0xe
/* 802F7154 002F2DB4  54 04 00 34 */	rlwinm r4, r0, 0, 0, 0x1a
/* 802F7158 002F2DB8  4B FF E9 51 */	bl SOiAlloc
/* 802F715C 002F2DBC  7C 77 1B 78 */	mr r23, r3
/* 802F7160 002F2DC0  48 00 00 08 */	b lbl_802F7168
lbl_802F7164:
/* 802F7164 002F2DC4  7F 77 DB 78 */	mr r23, r27
lbl_802F7168:
/* 802F7168 002F2DC8  2C 16 00 00 */	cmpwi r22, 0
/* 802F716C 002F2DCC  41 82 00 0C */	beq lbl_802F7178
/* 802F7170 002F2DD0  2C 17 00 00 */	cmpwi r23, 0
/* 802F7174 002F2DD4  40 82 00 0C */	bne lbl_802F7180
lbl_802F7178:
/* 802F7178 002F2DD8  3B 00 FF CF */	li r24, -49
/* 802F717C 002F2DDC  48 00 00 84 */	b lbl_802F7200
lbl_802F7180:
/* 802F7180 002F2DE0  93 56 00 20 */	stw r26, 0x20(r22)
/* 802F7184 002F2DE4  2C 1E 00 00 */	cmpwi r30, 0
/* 802F7188 002F2DE8  3B 16 00 20 */	addi r24, r22, 0x20
/* 802F718C 002F2DEC  93 B6 00 24 */	stw r29, 0x24(r22)
/* 802F7190 002F2DF0  40 82 00 10 */	bne lbl_802F71A0
/* 802F7194 002F2DF4  38 00 00 00 */	li r0, 0
/* 802F7198 002F2DF8  90 18 00 08 */	stw r0, 8(r24)
/* 802F719C 002F2DFC  48 00 00 1C */	b lbl_802F71B8
lbl_802F71A0:
/* 802F71A0 002F2E00  38 00 00 01 */	li r0, 1
/* 802F71A4 002F2E04  7F C4 F3 78 */	mr r4, r30
/* 802F71A8 002F2E08  90 18 00 08 */	stw r0, 8(r24)
/* 802F71AC 002F2E0C  38 78 00 0C */	addi r3, r24, 0xc
/* 802F71B0 002F2E10  88 BE 00 00 */	lbz r5, 0(r30)
/* 802F71B4 002F2E14  4B D0 CE 4D */	bl memcpy
lbl_802F71B8:
/* 802F71B8 002F2E18  2C 1F 00 00 */	cmpwi r31, 0
/* 802F71BC 002F2E1C  40 82 00 14 */	bne lbl_802F71D0
/* 802F71C0 002F2E20  7E E3 BB 78 */	mr r3, r23
/* 802F71C4 002F2E24  7F 64 DB 78 */	mr r4, r27
/* 802F71C8 002F2E28  7F 85 E3 78 */	mr r5, r28
/* 802F71CC 002F2E2C  4B D0 CE 35 */	bl memcpy
lbl_802F71D0:
/* 802F71D0 002F2E30  92 F6 00 00 */	stw r23, 0(r22)
/* 802F71D4 002F2E34  38 00 00 28 */	li r0, 0x28
/* 802F71D8 002F2E38  7E C7 B3 78 */	mr r7, r22
/* 802F71DC 002F2E3C  38 80 00 0D */	li r4, 0xd
/* 802F71E0 002F2E40  93 96 00 04 */	stw r28, 4(r22)
/* 802F71E4 002F2E44  38 A0 00 02 */	li r5, 2
/* 802F71E8 002F2E48  38 C0 00 00 */	li r6, 0
/* 802F71EC 002F2E4C  93 16 00 08 */	stw r24, 8(r22)
/* 802F71F0 002F2E50  90 16 00 0C */	stw r0, 0xc(r22)
/* 802F71F4 002F2E54  80 61 00 08 */	lwz r3, 8(r1)
/* 802F71F8 002F2E58  4B FA CC 49 */	bl IOS_Ioctlv
/* 802F71FC 002F2E5C  7C 78 1B 78 */	mr r24, r3
lbl_802F7200:
/* 802F7200 002F2E60  2C 1F 00 00 */	cmpwi r31, 0
/* 802F7204 002F2E64  40 82 00 18 */	bne lbl_802F721C
/* 802F7208 002F2E68  38 1C 00 1F */	addi r0, r28, 0x1f
/* 802F720C 002F2E6C  7E E4 BB 78 */	mr r4, r23
/* 802F7210 002F2E70  54 05 00 34 */	rlwinm r5, r0, 0, 0, 0x1a
/* 802F7214 002F2E74  38 60 00 0E */	li r3, 0xe
/* 802F7218 002F2E78  4B FF E9 79 */	bl SOiFree
lbl_802F721C:
/* 802F721C 002F2E7C  7E C4 B3 78 */	mr r4, r22
/* 802F7220 002F2E80  38 60 00 0C */	li r3, 0xc
/* 802F7224 002F2E84  38 A0 00 60 */	li r5, 0x60
/* 802F7228 002F2E88  4B FF E9 69 */	bl SOiFree
lbl_802F722C:
/* 802F722C 002F2E8C  7F 23 CB 78 */	mr r3, r25
/* 802F7230 002F2E90  7F 04 C3 78 */	mr r4, r24
/* 802F7234 002F2E94  4B FF EA 79 */	bl SOiConclude
lbl_802F7238:
/* 802F7238 002F2E98  39 61 00 40 */	addi r11, r1, 0x40
/* 802F723C 002F2E9C  4B EC FF 25 */	bl _restgpr_22
/* 802F7240 002F2EA0  80 01 00 44 */	lwz r0, 0x44(r1)
/* 802F7244 002F2EA4  7C 08 03 A6 */	mtlr r0
/* 802F7248 002F2EA8  38 21 00 40 */	addi r1, r1, 0x40
/* 802F724C 002F2EAC  4E 80 00 20 */	blr