summaryrefslogtreecommitdiff
path: root/asm/SDK/SO
diff options
context:
space:
mode:
Diffstat (limited to 'asm/SDK/SO')
-rw-r--r--asm/SDK/SO/SOBasic.s1209
-rw-r--r--asm/SDK/SO/SOCommon.s1219
-rw-r--r--asm/SDK/SO/SOInformation.s375
-rw-r--r--asm/SDK/SO/SOOption.s293
4 files changed, 3096 insertions, 0 deletions
diff --git a/asm/SDK/SO/SOBasic.s b/asm/SDK/SO/SOBasic.s
new file mode 100644
index 0000000..0a84db6
--- /dev/null
+++ b/asm/SDK/SO/SOBasic.s
@@ -0,0 +1,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
diff --git a/asm/SDK/SO/SOCommon.s b/asm/SDK/SO/SOCommon.s
new file mode 100644
index 0000000..4335984
--- /dev/null
+++ b/asm/SDK/SO/SOCommon.s
@@ -0,0 +1,1219 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global SOInit
+SOInit:
+/* 802F519C 002F0DFC 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F51A0 002F0E00 7C 08 02 A6 */ mflr r0
+/* 802F51A4 002F0E04 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F51A8 002F0E08 39 61 00 20 */ addi r11, r1, 0x20
+/* 802F51AC 002F0E0C 4B ED 1F 7D */ bl _savegpr_27
+/* 802F51B0 002F0E10 7C 7B 1B 78 */ mr r27, r3
+/* 802F51B4 002F0E14 3B E0 00 00 */ li r31, 0
+/* 802F51B8 002F0E18 4B F7 95 A5 */ bl OSDisableInterrupts
+/* 802F51BC 002F0E1C 80 0D AF 60 */ lwz r0, lbl_80640220-_SDA_BASE_(r13)
+/* 802F51C0 002F0E20 7C 7E 1B 78 */ mr r30, r3
+/* 802F51C4 002F0E24 2C 00 00 00 */ cmpwi r0, 0
+/* 802F51C8 002F0E28 40 82 00 14 */ bne lbl_802F51DC
+/* 802F51CC 002F0E2C 80 6D 8C 08 */ lwz r3, lbl_8063DEC8-_SDA_BASE_(r13)
+/* 802F51D0 002F0E30 4B F7 44 81 */ bl OSRegisterVersion
+/* 802F51D4 002F0E34 38 00 00 01 */ li r0, 1
+/* 802F51D8 002F0E38 90 0D AF 60 */ stw r0, lbl_80640220-_SDA_BASE_(r13)
+lbl_802F51DC:
+/* 802F51DC 002F0E3C 88 0D AF 58 */ lbz r0, lbl_80640218-_SDA_BASE_(r13)
+/* 802F51E0 002F0E40 2C 00 00 00 */ cmpwi r0, 0
+/* 802F51E4 002F0E44 41 82 00 18 */ beq lbl_802F51FC
+/* 802F51E8 002F0E48 41 80 00 14 */ blt lbl_802F51FC
+/* 802F51EC 002F0E4C 2C 00 00 03 */ cmpwi r0, 3
+/* 802F51F0 002F0E50 40 80 00 0C */ bge lbl_802F51FC
+/* 802F51F4 002F0E54 3B E0 FF F9 */ li r31, -7
+/* 802F51F8 002F0E58 48 00 01 30 */ b lbl_802F5328
+lbl_802F51FC:
+/* 802F51FC 002F0E5C 2C 1B 00 00 */ cmpwi r27, 0
+/* 802F5200 002F0E60 41 82 00 1C */ beq lbl_802F521C
+/* 802F5204 002F0E64 80 1B 00 00 */ lwz r0, 0(r27)
+/* 802F5208 002F0E68 2C 00 00 00 */ cmpwi r0, 0
+/* 802F520C 002F0E6C 41 82 00 10 */ beq lbl_802F521C
+/* 802F5210 002F0E70 80 1B 00 04 */ lwz r0, 4(r27)
+/* 802F5214 002F0E74 2C 00 00 00 */ cmpwi r0, 0
+/* 802F5218 002F0E78 40 82 00 0C */ bne lbl_802F5224
+lbl_802F521C:
+/* 802F521C 002F0E7C 3B E0 FF E4 */ li r31, -28
+/* 802F5220 002F0E80 48 00 01 08 */ b lbl_802F5328
+lbl_802F5224:
+/* 802F5224 002F0E84 3F 80 80 58 */ lis r28, lbl_8057AAB8@ha
+/* 802F5228 002F0E88 38 80 00 00 */ li r4, 0
+/* 802F522C 002F0E8C 38 7C AA B8 */ addi r3, r28, lbl_8057AAB8@l
+/* 802F5230 002F0E90 38 A0 00 18 */ li r5, 0x18
+/* 802F5234 002F0E94 4B D0 EE D1 */ bl memset
+/* 802F5238 002F0E98 81 9B 00 00 */ lwz r12, 0(r27)
+/* 802F523C 002F0E9C 3B BC AA B8 */ addi r29, r28, -21832
+/* 802F5240 002F0EA0 38 80 00 00 */ li r4, 0
+/* 802F5244 002F0EA4 38 60 FF FE */ li r3, -2
+/* 802F5248 002F0EA8 91 9C AA B8 */ stw r12, -0x5548(r28)
+/* 802F524C 002F0EAC 2C 0C 00 00 */ cmpwi r12, 0
+/* 802F5250 002F0EB0 38 00 FF FF */ li r0, -1
+/* 802F5254 002F0EB4 80 BB 00 04 */ lwz r5, 4(r27)
+/* 802F5258 002F0EB8 90 BD 00 04 */ stw r5, 4(r29)
+/* 802F525C 002F0EBC 90 9D 00 14 */ stw r4, 0x14(r29)
+/* 802F5260 002F0EC0 90 7D 00 08 */ stw r3, 8(r29)
+/* 802F5264 002F0EC4 90 1D 00 0C */ stw r0, 0xc(r29)
+/* 802F5268 002F0EC8 41 82 00 94 */ beq lbl_802F52FC
+/* 802F526C 002F0ECC 38 60 00 0B */ li r3, 0xb
+/* 802F5270 002F0ED0 38 80 04 60 */ li r4, 0x460
+/* 802F5274 002F0ED4 7D 89 03 A6 */ mtctr r12
+/* 802F5278 002F0ED8 4E 80 04 21 */ bctrl
+/* 802F527C 002F0EDC 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5280 002F0EE0 41 82 00 80 */ beq lbl_802F5300
+/* 802F5284 002F0EE4 80 9D 00 14 */ lwz r4, 0x14(r29)
+/* 802F5288 002F0EE8 80 0D 8C 0C */ lwz r0, lbl_8063DECC-_SDA_BASE_(r13)
+/* 802F528C 002F0EEC 38 84 00 01 */ addi r4, r4, 1
+/* 802F5290 002F0EF0 2C 00 00 00 */ cmpwi r0, 0
+/* 802F5294 002F0EF4 90 9D 00 14 */ stw r4, 0x14(r29)
+/* 802F5298 002F0EF8 41 82 00 68 */ beq lbl_802F5300
+/* 802F529C 002F0EFC 54 64 00 FE */ clrlwi r4, r3, 3
+/* 802F52A0 002F0F00 3C 00 10 00 */ lis r0, 0x1000
+/* 802F52A4 002F0F04 7C 04 00 40 */ cmplw r4, r0
+/* 802F52A8 002F0F08 41 80 00 10 */ blt lbl_802F52B8
+/* 802F52AC 002F0F0C 3C 00 18 00 */ lis r0, 0x1800
+/* 802F52B0 002F0F10 7C 04 00 40 */ cmplw r4, r0
+/* 802F52B4 002F0F14 41 80 00 4C */ blt lbl_802F5300
+lbl_802F52B8:
+/* 802F52B8 002F0F18 2C 03 00 00 */ cmpwi r3, 0
+/* 802F52BC 002F0F1C 41 82 00 38 */ beq lbl_802F52F4
+/* 802F52C0 002F0F20 3C C0 80 58 */ lis r6, lbl_8057AAB8@ha
+/* 802F52C4 002F0F24 38 C6 AA B8 */ addi r6, r6, lbl_8057AAB8@l
+/* 802F52C8 002F0F28 81 86 00 04 */ lwz r12, 4(r6)
+/* 802F52CC 002F0F2C 2C 0C 00 00 */ cmpwi r12, 0
+/* 802F52D0 002F0F30 41 82 00 24 */ beq lbl_802F52F4
+/* 802F52D4 002F0F34 80 A6 00 14 */ lwz r5, 0x14(r6)
+/* 802F52D8 002F0F38 7C 64 1B 78 */ mr r4, r3
+/* 802F52DC 002F0F3C 38 60 00 0B */ li r3, 0xb
+/* 802F52E0 002F0F40 38 05 FF FF */ addi r0, r5, -1
+/* 802F52E4 002F0F44 38 A0 04 60 */ li r5, 0x460
+/* 802F52E8 002F0F48 90 06 00 14 */ stw r0, 0x14(r6)
+/* 802F52EC 002F0F4C 7D 89 03 A6 */ mtctr r12
+/* 802F52F0 002F0F50 4E 80 04 21 */ bctrl
+lbl_802F52F4:
+/* 802F52F4 002F0F54 38 60 00 00 */ li r3, 0
+/* 802F52F8 002F0F58 48 00 00 08 */ b lbl_802F5300
+lbl_802F52FC:
+/* 802F52FC 002F0F5C 38 60 00 00 */ li r3, 0
+lbl_802F5300:
+/* 802F5300 002F0F60 3C 80 80 58 */ lis r4, lbl_8057AAB8@ha
+/* 802F5304 002F0F64 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5308 002F0F68 38 84 AA B8 */ addi r4, r4, lbl_8057AAB8@l
+/* 802F530C 002F0F6C 90 64 00 10 */ stw r3, 0x10(r4)
+/* 802F5310 002F0F70 40 82 00 08 */ bne lbl_802F5318
+/* 802F5314 002F0F74 3B E0 FF CF */ li r31, -49
+lbl_802F5318:
+/* 802F5318 002F0F78 2C 03 00 00 */ cmpwi r3, 0
+/* 802F531C 002F0F7C 41 82 00 0C */ beq lbl_802F5328
+/* 802F5320 002F0F80 38 00 00 01 */ li r0, 1
+/* 802F5324 002F0F84 98 0D AF 58 */ stb r0, lbl_80640218-_SDA_BASE_(r13)
+lbl_802F5328:
+/* 802F5328 002F0F88 4B F7 BF D1 */ bl OSGetCurrentThread
+/* 802F532C 002F0F8C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5330 002F0F90 41 82 00 0C */ beq lbl_802F533C
+/* 802F5334 002F0F94 93 E3 03 0C */ stw r31, 0x30c(r3)
+/* 802F5338 002F0F98 48 00 00 08 */ b lbl_802F5340
+lbl_802F533C:
+/* 802F533C 002F0F9C 93 ED AF 5C */ stw r31, lbl_8064021C-_SDA_BASE_(r13)
+lbl_802F5340:
+/* 802F5340 002F0FA0 7F C3 F3 78 */ mr r3, r30
+/* 802F5344 002F0FA4 4B F7 94 41 */ bl OSRestoreInterrupts
+/* 802F5348 002F0FA8 39 61 00 20 */ addi r11, r1, 0x20
+/* 802F534C 002F0FAC 7F E3 FB 78 */ mr r3, r31
+/* 802F5350 002F0FB0 4B ED 1E 25 */ bl _restgpr_27
+/* 802F5354 002F0FB4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F5358 002F0FB8 7C 08 03 A6 */ mtlr r0
+/* 802F535C 002F0FBC 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F5360 002F0FC0 4E 80 00 20 */ blr
+
+.global SOFinish
+SOFinish:
+/* 802F5364 002F0FC4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F5368 002F0FC8 7C 08 02 A6 */ mflr r0
+/* 802F536C 002F0FCC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F5370 002F0FD0 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F5374 002F0FD4 3B E0 00 00 */ li r31, 0
+/* 802F5378 002F0FD8 93 C1 00 08 */ stw r30, 8(r1)
+/* 802F537C 002F0FDC 4B F7 93 E1 */ bl OSDisableInterrupts
+/* 802F5380 002F0FE0 88 0D AF 58 */ lbz r0, lbl_80640218-_SDA_BASE_(r13)
+/* 802F5384 002F0FE4 7C 7E 1B 78 */ mr r30, r3
+/* 802F5388 002F0FE8 2C 00 00 01 */ cmpwi r0, 1
+/* 802F538C 002F0FEC 41 82 00 28 */ beq lbl_802F53B4
+/* 802F5390 002F0FF0 40 80 00 10 */ bge lbl_802F53A0
+/* 802F5394 002F0FF4 2C 00 00 00 */ cmpwi r0, 0
+/* 802F5398 002F0FF8 40 80 00 14 */ bge lbl_802F53AC
+/* 802F539C 002F0FFC 48 00 00 88 */ b lbl_802F5424
+lbl_802F53A0:
+/* 802F53A0 002F1000 2C 00 00 03 */ cmpwi r0, 3
+/* 802F53A4 002F1004 40 80 00 80 */ bge lbl_802F5424
+/* 802F53A8 002F1008 48 00 00 78 */ b lbl_802F5420
+lbl_802F53AC:
+/* 802F53AC 002F100C 3B E0 FF F9 */ li r31, -7
+/* 802F53B0 002F1010 48 00 00 74 */ b lbl_802F5424
+lbl_802F53B4:
+/* 802F53B4 002F1014 3C A0 80 58 */ lis r5, lbl_8057AAB8@ha
+/* 802F53B8 002F1018 38 A5 AA B8 */ addi r5, r5, lbl_8057AAB8@l
+/* 802F53BC 002F101C 80 05 00 08 */ lwz r0, 8(r5)
+/* 802F53C0 002F1020 2C 00 FF FE */ cmpwi r0, -2
+/* 802F53C4 002F1024 40 81 00 0C */ ble lbl_802F53D0
+/* 802F53C8 002F1028 3B E0 FF F6 */ li r31, -10
+/* 802F53CC 002F102C 48 00 00 58 */ b lbl_802F5424
+lbl_802F53D0:
+/* 802F53D0 002F1030 80 65 00 14 */ lwz r3, 0x14(r5)
+/* 802F53D4 002F1034 2C 03 00 01 */ cmpwi r3, 1
+/* 802F53D8 002F1038 40 81 00 0C */ ble lbl_802F53E4
+/* 802F53DC 002F103C 3B E0 FF FA */ li r31, -6
+/* 802F53E0 002F1040 48 00 00 44 */ b lbl_802F5424
+lbl_802F53E4:
+/* 802F53E4 002F1044 80 85 00 10 */ lwz r4, 0x10(r5)
+/* 802F53E8 002F1048 38 00 00 00 */ li r0, 0
+/* 802F53EC 002F104C 98 0D AF 58 */ stb r0, lbl_80640218-_SDA_BASE_(r13)
+/* 802F53F0 002F1050 2C 04 00 00 */ cmpwi r4, 0
+/* 802F53F4 002F1054 41 82 00 30 */ beq lbl_802F5424
+/* 802F53F8 002F1058 81 85 00 04 */ lwz r12, 4(r5)
+/* 802F53FC 002F105C 2C 0C 00 00 */ cmpwi r12, 0
+/* 802F5400 002F1060 41 82 00 24 */ beq lbl_802F5424
+/* 802F5404 002F1064 38 03 FF FF */ addi r0, r3, -1
+/* 802F5408 002F1068 38 60 00 0B */ li r3, 0xb
+/* 802F540C 002F106C 90 05 00 14 */ stw r0, 0x14(r5)
+/* 802F5410 002F1070 38 A0 04 60 */ li r5, 0x460
+/* 802F5414 002F1074 7D 89 03 A6 */ mtctr r12
+/* 802F5418 002F1078 4E 80 04 21 */ bctrl
+/* 802F541C 002F107C 48 00 00 08 */ b lbl_802F5424
+lbl_802F5420:
+/* 802F5420 002F1080 3B E0 FF E6 */ li r31, -26
+lbl_802F5424:
+/* 802F5424 002F1084 4B F7 BE D5 */ bl OSGetCurrentThread
+/* 802F5428 002F1088 2C 03 00 00 */ cmpwi r3, 0
+/* 802F542C 002F108C 41 82 00 0C */ beq lbl_802F5438
+/* 802F5430 002F1090 93 E3 03 0C */ stw r31, 0x30c(r3)
+/* 802F5434 002F1094 48 00 00 08 */ b lbl_802F543C
+lbl_802F5438:
+/* 802F5438 002F1098 93 ED AF 5C */ stw r31, lbl_8064021C-_SDA_BASE_(r13)
+lbl_802F543C:
+/* 802F543C 002F109C 7F C3 F3 78 */ mr r3, r30
+/* 802F5440 002F10A0 4B F7 93 45 */ bl OSRestoreInterrupts
+/* 802F5444 002F10A4 7F E3 FB 78 */ mr r3, r31
+/* 802F5448 002F10A8 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F544C 002F10AC 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802F5450 002F10B0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F5454 002F10B4 7C 08 03 A6 */ mtlr r0
+/* 802F5458 002F10B8 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F545C 002F10BC 4E 80 00 20 */ blr
+
+.global SOStartup
+SOStartup:
+/* 802F5460 002F10C0 3C 60 00 09 */ lis r3, 0x000927C0@ha
+/* 802F5464 002F10C4 38 63 27 C0 */ addi r3, r3, 0x000927C0@l
+/* 802F5468 002F10C8 48 00 00 04 */ b SOStartupEx
+
+SOStartupEx:
+/* 802F546C 002F10CC 94 21 FF A0 */ stwu r1, -0x60(r1)
+/* 802F5470 002F10D0 7C 08 02 A6 */ mflr r0
+/* 802F5474 002F10D4 90 01 00 64 */ stw r0, 0x64(r1)
+/* 802F5478 002F10D8 39 61 00 60 */ addi r11, r1, 0x60
+/* 802F547C 002F10DC 4B ED 1C 79 */ bl __save_gpr
+/* 802F5480 002F10E0 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5484 002F10E4 7C 6E 1B 78 */ mr r14, r3
+/* 802F5488 002F10E8 3A 00 00 00 */ li r16, 0
+/* 802F548C 002F10EC 3A 20 00 00 */ li r17, 0
+/* 802F5490 002F10F0 41 82 00 34 */ beq lbl_802F54C4
+/* 802F5494 002F10F4 4B F7 D3 45 */ bl __OSGetSystemTime
+/* 802F5498 002F10F8 3C C0 80 00 */ lis r6, 0x800000F8@ha
+/* 802F549C 002F10FC 3C A0 10 62 */ lis r5, 0x10624DD3@ha
+/* 802F54A0 002F1100 80 C6 00 F8 */ lwz r6, 0x800000F8@l(r6)
+/* 802F54A4 002F1104 38 E5 4D D3 */ addi r7, r5, 0x10624DD3@l
+/* 802F54A8 002F1108 38 00 00 00 */ li r0, 0
+/* 802F54AC 002F110C 54 C5 F0 BE */ srwi r5, r6, 2
+/* 802F54B0 002F1110 7C A7 28 16 */ mulhwu r5, r7, r5
+/* 802F54B4 002F1114 54 A5 D1 BE */ srwi r5, r5, 6
+/* 802F54B8 002F1118 7C AE 29 D6 */ mullw r5, r14, r5
+/* 802F54BC 002F111C 7E 05 20 14 */ addc r16, r5, r4
+/* 802F54C0 002F1120 7E 20 19 14 */ adde r17, r0, r3
+lbl_802F54C4:
+/* 802F54C4 002F1124 3C 60 80 58 */ lis r3, lbl_8057AAB8@ha
+/* 802F54C8 002F1128 39 E0 00 04 */ li r15, 4
+/* 802F54CC 002F112C 3E 80 80 00 */ lis r20, 0x8000
+/* 802F54D0 002F1130 3E A0 10 62 */ lis r21, 0x1062
+/* 802F54D4 002F1134 3B 23 AA B8 */ addi r25, r3, lbl_8057AAB8@l
+/* 802F54D8 002F1138 3A C0 00 00 */ li r22, 0
+/* 802F54DC 002F113C 3A E0 00 64 */ li r23, 0x64
+/* 802F54E0 002F1140 3F 00 80 44 */ lis r24, 0x8044
+/* 802F54E4 002F1144 3A 60 FF FF */ li r19, -1
+/* 802F54E8 002F1148 3F E0 80 44 */ lis r31, 0x8044
+/* 802F54EC 002F114C 39 C0 00 02 */ li r14, 2
+lbl_802F54F0:
+/* 802F54F0 002F1150 4B F7 92 6D */ bl OSDisableInterrupts
+/* 802F54F4 002F1154 88 0D AF 58 */ lbz r0, lbl_80640218-_SDA_BASE_(r13)
+/* 802F54F8 002F1158 7C 7A 1B 78 */ mr r26, r3
+/* 802F54FC 002F115C 2C 00 00 01 */ cmpwi r0, 1
+/* 802F5500 002F1160 41 82 00 28 */ beq lbl_802F5528
+/* 802F5504 002F1164 40 80 00 08 */ bge lbl_802F550C
+/* 802F5508 002F1168 48 00 00 10 */ b lbl_802F5518
+lbl_802F550C:
+/* 802F550C 002F116C 2C 00 00 03 */ cmpwi r0, 3
+/* 802F5510 002F1170 40 80 00 08 */ bge lbl_802F5518
+/* 802F5514 002F1174 48 00 00 0C */ b lbl_802F5520
+lbl_802F5518:
+/* 802F5518 002F1178 3A 40 FF D9 */ li r18, -39
+/* 802F551C 002F117C 48 00 02 8C */ b lbl_802F57A8
+lbl_802F5520:
+/* 802F5520 002F1180 3A 40 FF F9 */ li r18, -7
+/* 802F5524 002F1184 48 00 02 84 */ b lbl_802F57A8
+lbl_802F5528:
+/* 802F5528 002F1188 80 19 00 08 */ lwz r0, 8(r25)
+/* 802F552C 002F118C 2C 00 FF FE */ cmpwi r0, -2
+/* 802F5530 002F1190 40 81 00 0C */ ble lbl_802F553C
+/* 802F5534 002F1194 3A 40 FF F6 */ li r18, -10
+/* 802F5538 002F1198 48 00 02 70 */ b lbl_802F57A8
+lbl_802F553C:
+/* 802F553C 002F119C 4B F7 BD BD */ bl OSGetCurrentThread
+/* 802F5540 002F11A0 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5544 002F11A4 40 82 00 0C */ bne lbl_802F5550
+/* 802F5548 002F11A8 3E 40 80 00 */ lis r18, 0x8000
+/* 802F554C 002F11AC 48 00 02 5C */ b lbl_802F57A8
+lbl_802F5550:
+/* 802F5550 002F11B0 92 79 00 08 */ stw r19, 8(r25)
+/* 802F5554 002F11B4 7F 43 D3 78 */ mr r3, r26
+/* 802F5558 002F11B8 4B F7 92 2D */ bl OSRestoreInterrupts
+/* 802F555C 002F11BC 7F 56 B9 D6 */ mullw r26, r22, r23
+/* 802F5560 002F11C0 3B 75 4D D3 */ addi r27, r21, 0x4dd3
+/* 802F5564 002F11C4 7E 12 8B 78 */ or r18, r16, r17
+/* 802F5568 002F11C8 6E 3D 80 00 */ xoris r29, r17, 0x8000
+lbl_802F556C:
+/* 802F556C 002F11CC 4B FF 7F B9 */ bl NCDGetLinkStatus
+/* 802F5570 002F11D0 2C 03 FF F8 */ cmpwi r3, -8
+/* 802F5574 002F11D4 7C 7C 1B 78 */ mr r28, r3
+/* 802F5578 002F11D8 41 82 00 0C */ beq lbl_802F5584
+/* 802F557C 002F11DC 2C 03 00 01 */ cmpwi r3, 1
+/* 802F5580 002F11E0 40 82 00 60 */ bne lbl_802F55E0
+lbl_802F5584:
+/* 802F5584 002F11E4 80 14 00 F8 */ lwz r0, 0xf8(r20)
+/* 802F5588 002F11E8 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F558C 002F11EC 7C 1B 00 16 */ mulhwu r0, r27, r0
+/* 802F5590 002F11F0 54 03 D1 BE */ srwi r3, r0, 6
+/* 802F5594 002F11F4 7C 03 B8 16 */ mulhwu r0, r3, r23
+/* 802F5598 002F11F8 1C 83 00 64 */ mulli r4, r3, 0x64
+/* 802F559C 002F11FC 7C 60 D2 14 */ add r3, r0, r26
+/* 802F55A0 002F1200 4B F7 D1 65 */ bl OSSleepTicks
+/* 802F55A4 002F1204 2C 12 00 00 */ cmpwi r18, 0
+/* 802F55A8 002F1208 41 82 FF C4 */ beq lbl_802F556C
+/* 802F55AC 002F120C 4B F7 D2 2D */ bl __OSGetSystemTime
+/* 802F55B0 002F1210 6C 63 80 00 */ xoris r3, r3, 0x8000
+/* 802F55B4 002F1214 7C 04 80 10 */ subfc r0, r4, r16
+/* 802F55B8 002F1218 7C 63 E9 10 */ subfe r3, r3, r29
+/* 802F55BC 002F121C 7C 7D E9 10 */ subfe r3, r29, r29
+/* 802F55C0 002F1220 7C 63 00 D1 */ neg. r3, r3
+/* 802F55C4 002F1224 41 82 FF A8 */ beq lbl_802F556C
+/* 802F55C8 002F1228 2C 1C 00 01 */ cmpwi r28, 1
+/* 802F55CC 002F122C 40 82 00 0C */ bne lbl_802F55D8
+/* 802F55D0 002F1230 3A 40 FF 87 */ li r18, -121
+/* 802F55D4 002F1234 48 00 01 9C */ b lbl_802F5770
+lbl_802F55D8:
+/* 802F55D8 002F1238 3E 40 80 00 */ lis r18, 0x8000
+/* 802F55DC 002F123C 48 00 01 94 */ b lbl_802F5770
+lbl_802F55E0:
+/* 802F55E0 002F1240 2C 03 00 00 */ cmpwi r3, 0
+/* 802F55E4 002F1244 40 80 00 0C */ bge lbl_802F55F0
+/* 802F55E8 002F1248 3E 40 80 00 */ lis r18, 0x8000
+/* 802F55EC 002F124C 48 00 01 84 */ b lbl_802F5770
+lbl_802F55F0:
+/* 802F55F0 002F1250 2C 03 00 02 */ cmpwi r3, 2
+/* 802F55F4 002F1254 40 82 00 0C */ bne lbl_802F5600
+/* 802F55F8 002F1258 3A 40 FF D3 */ li r18, -45
+/* 802F55FC 002F125C 48 00 01 74 */ b lbl_802F5770
+lbl_802F5600:
+/* 802F5600 002F1260 7F 56 B9 D6 */ mullw r26, r22, r23
+/* 802F5604 002F1264 3B 75 4D D3 */ addi r27, r21, 0x4dd3
+/* 802F5608 002F1268 7E 12 8B 78 */ or r18, r16, r17
+/* 802F560C 002F126C 6E 3C 80 00 */ xoris r28, r17, 0x8000
+lbl_802F5610:
+/* 802F5610 002F1270 38 78 5E 48 */ addi r3, r24, 0x5e48
+/* 802F5614 002F1274 38 80 00 00 */ li r4, 0
+/* 802F5618 002F1278 4B FA DB 41 */ bl IOS_Open
+/* 802F561C 002F127C 2C 03 FF FA */ cmpwi r3, -6
+/* 802F5620 002F1280 90 79 00 0C */ stw r3, 0xc(r25)
+/* 802F5624 002F1284 40 82 00 50 */ bne lbl_802F5674
+/* 802F5628 002F1288 80 14 00 F8 */ lwz r0, 0xf8(r20)
+/* 802F562C 002F128C 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F5630 002F1290 7C 1B 00 16 */ mulhwu r0, r27, r0
+/* 802F5634 002F1294 54 03 D1 BE */ srwi r3, r0, 6
+/* 802F5638 002F1298 7C 03 B8 16 */ mulhwu r0, r3, r23
+/* 802F563C 002F129C 1C 83 00 64 */ mulli r4, r3, 0x64
+/* 802F5640 002F12A0 7C 60 D2 14 */ add r3, r0, r26
+/* 802F5644 002F12A4 4B F7 D0 C1 */ bl OSSleepTicks
+/* 802F5648 002F12A8 2C 12 00 00 */ cmpwi r18, 0
+/* 802F564C 002F12AC 41 82 FF C4 */ beq lbl_802F5610
+/* 802F5650 002F12B0 4B F7 D1 89 */ bl __OSGetSystemTime
+/* 802F5654 002F12B4 6C 63 80 00 */ xoris r3, r3, 0x8000
+/* 802F5658 002F12B8 7C 04 80 10 */ subfc r0, r4, r16
+/* 802F565C 002F12BC 7C 63 E1 10 */ subfe r3, r3, r28
+/* 802F5660 002F12C0 7C 7C E1 10 */ subfe r3, r28, r28
+/* 802F5664 002F12C4 7C 63 00 D1 */ neg. r3, r3
+/* 802F5668 002F12C8 41 82 FF A8 */ beq lbl_802F5610
+/* 802F566C 002F12CC 3E 40 80 00 */ lis r18, 0x8000
+/* 802F5670 002F12D0 48 00 01 00 */ b lbl_802F5770
+lbl_802F5674:
+/* 802F5674 002F12D4 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5678 002F12D8 40 80 00 0C */ bge lbl_802F5684
+/* 802F567C 002F12DC 3E 40 80 00 */ lis r18, 0x8000
+/* 802F5680 002F12E0 48 00 00 F0 */ b lbl_802F5770
+lbl_802F5684:
+/* 802F5684 002F12E4 7F 96 B9 D6 */ mullw r28, r22, r23
+/* 802F5688 002F12E8 3A 40 00 00 */ li r18, 0
+/* 802F568C 002F12EC 92 41 00 08 */ stw r18, 8(r1)
+/* 802F5690 002F12F0 3B 75 4D D3 */ addi r27, r21, 0x4dd3
+/* 802F5694 002F12F4 7E 1D 8B 78 */ or r29, r16, r17
+/* 802F5698 002F12F8 6E 3E 80 00 */ xoris r30, r17, 0x8000
+lbl_802F569C:
+/* 802F569C 002F12FC 38 61 00 08 */ addi r3, r1, 8
+/* 802F56A0 002F1300 48 00 E6 D1 */ bl func_80303D70
+/* 802F56A4 002F1304 2C 03 FF E3 */ cmpwi r3, -29
+/* 802F56A8 002F1308 7C 7A 1B 78 */ mr r26, r3
+/* 802F56AC 002F130C 40 82 00 4C */ bne lbl_802F56F8
+/* 802F56B0 002F1310 80 14 00 F8 */ lwz r0, 0xf8(r20)
+/* 802F56B4 002F1314 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F56B8 002F1318 7C 1B 00 16 */ mulhwu r0, r27, r0
+/* 802F56BC 002F131C 54 03 D1 BE */ srwi r3, r0, 6
+/* 802F56C0 002F1320 7C 03 B8 16 */ mulhwu r0, r3, r23
+/* 802F56C4 002F1324 1C 83 00 64 */ mulli r4, r3, 0x64
+/* 802F56C8 002F1328 7C 60 E2 14 */ add r3, r0, r28
+/* 802F56CC 002F132C 4B F7 D0 39 */ bl OSSleepTicks
+/* 802F56D0 002F1330 2C 1D 00 00 */ cmpwi r29, 0
+/* 802F56D4 002F1334 41 82 FF C8 */ beq lbl_802F569C
+/* 802F56D8 002F1338 4B F7 D1 01 */ bl __OSGetSystemTime
+/* 802F56DC 002F133C 6C 63 80 00 */ xoris r3, r3, 0x8000
+/* 802F56E0 002F1340 7C 04 80 10 */ subfc r0, r4, r16
+/* 802F56E4 002F1344 7C 63 F1 10 */ subfe r3, r3, r30
+/* 802F56E8 002F1348 7C 7E F1 10 */ subfe r3, r30, r30
+/* 802F56EC 002F134C 7C 63 00 D1 */ neg. r3, r3
+/* 802F56F0 002F1350 41 82 FF AC */ beq lbl_802F569C
+/* 802F56F4 002F1354 3E 40 80 00 */ lis r18, 0x8000
+lbl_802F56F8:
+/* 802F56F8 002F1358 2C 12 00 00 */ cmpwi r18, 0
+/* 802F56FC 002F135C 40 82 00 50 */ bne lbl_802F574C
+/* 802F5700 002F1360 38 1A 00 21 */ addi r0, r26, 0x21
+/* 802F5704 002F1364 80 81 00 08 */ lwz r4, 8(r1)
+/* 802F5708 002F1368 28 00 00 21 */ cmplwi r0, 0x21
+/* 802F570C 002F136C 3A 40 FF E4 */ li r18, -28
+/* 802F5710 002F1370 41 81 00 3C */ bgt lbl_802F574C
+/* 802F5714 002F1374 38 7F 5E 58 */ addi r3, r31, 0x5e58
+/* 802F5718 002F1378 54 00 10 3A */ slwi r0, r0, 2
+/* 802F571C 002F137C 7C 63 00 2E */ lwzx r3, r3, r0
+/* 802F5720 002F1380 7C 69 03 A6 */ mtctr r3
+/* 802F5724 002F1384 4E 80 04 20 */ bctr
+/* 802F5728 002F1388 3A 40 00 00 */ li r18, 0
+/* 802F572C 002F138C 48 00 00 20 */ b lbl_802F574C
+/* 802F5730 002F1390 3A 40 FF D0 */ li r18, -48
+/* 802F5734 002F1394 48 00 00 18 */ b lbl_802F574C
+/* 802F5738 002F1398 7C 92 23 78 */ mr r18, r4
+/* 802F573C 002F139C 48 00 00 10 */ b lbl_802F574C
+/* 802F5740 002F13A0 3E 40 80 00 */ lis r18, 0x8000
+/* 802F5744 002F13A4 48 00 00 08 */ b lbl_802F574C
+/* 802F5748 002F13A8 3A 40 FF E6 */ li r18, -26
+lbl_802F574C:
+/* 802F574C 002F13AC 2C 12 00 00 */ cmpwi r18, 0
+/* 802F5750 002F13B0 41 82 00 20 */ beq lbl_802F5770
+/* 802F5754 002F13B4 80 79 00 0C */ lwz r3, 0xc(r25)
+/* 802F5758 002F13B8 4B FA DB E1 */ bl IOS_Close
+/* 802F575C 002F13BC 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5760 002F13C0 40 80 00 0C */ bge lbl_802F576C
+/* 802F5764 002F13C4 3E 40 80 00 */ lis r18, 0x8000
+/* 802F5768 002F13C8 48 00 00 08 */ b lbl_802F5770
+lbl_802F576C:
+/* 802F576C 002F13CC 92 79 00 0C */ stw r19, 0xc(r25)
+lbl_802F5770:
+/* 802F5770 002F13D0 4B F7 8F ED */ bl OSDisableInterrupts
+/* 802F5774 002F13D4 2C 12 00 00 */ cmpwi r18, 0
+/* 802F5778 002F13D8 7C 7A 1B 78 */ mr r26, r3
+/* 802F577C 002F13DC 40 82 00 10 */ bne lbl_802F578C
+/* 802F5780 002F13E0 99 CD AF 58 */ stb r14, lbl_80640218-_SDA_BASE_(r13)
+/* 802F5784 002F13E4 92 D9 00 08 */ stw r22, 8(r25)
+/* 802F5788 002F13E8 48 00 00 20 */ b lbl_802F57A8
+lbl_802F578C:
+/* 802F578C 002F13EC 3C 72 80 00 */ addis r3, r18, 0x8000
+/* 802F5790 002F13F0 38 00 00 01 */ li r0, 1
+/* 802F5794 002F13F4 28 03 00 00 */ cmplwi r3, 0
+/* 802F5798 002F13F8 98 0D AF 58 */ stb r0, lbl_80640218-_SDA_BASE_(r13)
+/* 802F579C 002F13FC 41 82 00 0C */ beq lbl_802F57A8
+/* 802F57A0 002F1400 38 00 FF FE */ li r0, -2
+/* 802F57A4 002F1404 90 19 00 08 */ stw r0, 8(r25)
+lbl_802F57A8:
+/* 802F57A8 002F1408 4B F7 BB 51 */ bl OSGetCurrentThread
+/* 802F57AC 002F140C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F57B0 002F1410 41 82 00 0C */ beq lbl_802F57BC
+/* 802F57B4 002F1414 92 43 03 0C */ stw r18, 0x30c(r3)
+/* 802F57B8 002F1418 48 00 00 08 */ b lbl_802F57C0
+lbl_802F57BC:
+/* 802F57BC 002F141C 92 4D AF 5C */ stw r18, lbl_8064021C-_SDA_BASE_(r13)
+lbl_802F57C0:
+/* 802F57C0 002F1420 7F 43 D3 78 */ mr r3, r26
+/* 802F57C4 002F1424 4B F7 8F C1 */ bl OSRestoreInterrupts
+/* 802F57C8 002F1428 2C 12 00 00 */ cmpwi r18, 0
+/* 802F57CC 002F142C 40 82 00 84 */ bne lbl_802F5850
+/* 802F57D0 002F1430 7E 00 8B 79 */ or. r0, r16, r17
+/* 802F57D4 002F1434 41 82 00 14 */ beq lbl_802F57E8
+/* 802F57D8 002F1438 4B F7 D0 01 */ bl __OSGetSystemTime
+/* 802F57DC 002F143C 7C 84 80 10 */ subfc r4, r4, r16
+/* 802F57E0 002F1440 7C 63 89 10 */ subfe r3, r3, r17
+/* 802F57E4 002F1444 48 00 00 0C */ b lbl_802F57F0
+lbl_802F57E8:
+/* 802F57E8 002F1448 38 80 00 00 */ li r4, 0
+/* 802F57EC 002F144C 7C 83 23 78 */ mr r3, r4
+lbl_802F57F0:
+/* 802F57F0 002F1450 7E 00 8B 79 */ or. r0, r16, r17
+/* 802F57F4 002F1454 41 82 00 28 */ beq lbl_802F581C
+/* 802F57F8 002F1458 6E C0 80 00 */ xoris r0, r22, 0x8000
+/* 802F57FC 002F145C 6C 66 80 00 */ xoris r6, r3, 0x8000
+/* 802F5800 002F1460 7C A4 B0 10 */ subfc r5, r4, r22
+/* 802F5804 002F1464 7C C6 01 10 */ subfe r6, r6, r0
+/* 802F5808 002F1468 7C C0 01 10 */ subfe r6, r0, r0
+/* 802F580C 002F146C 7C C6 00 D1 */ neg. r6, r6
+/* 802F5810 002F1470 40 82 00 0C */ bne lbl_802F581C
+/* 802F5814 002F1474 3A 40 FF B4 */ li r18, -76
+/* 802F5818 002F1478 48 00 00 2C */ b lbl_802F5844
+lbl_802F581C:
+/* 802F581C 002F147C 80 14 00 F8 */ lwz r0, 0xf8(r20)
+/* 802F5820 002F1480 38 D5 4D D3 */ addi r6, r21, 0x4dd3
+/* 802F5824 002F1484 38 A0 00 00 */ li r5, 0
+/* 802F5828 002F1488 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F582C 002F148C 7C 06 00 16 */ mulhwu r0, r6, r0
+/* 802F5830 002F1490 54 06 D1 BE */ srwi r6, r0, 6
+/* 802F5834 002F1494 4B ED 1A 45 */ bl __div2i
+/* 802F5838 002F1498 7C 83 23 78 */ mr r3, r4
+/* 802F583C 002F149C 48 00 08 89 */ bl SOiWaitForDHCPEx
+/* 802F5840 002F14A0 7C 72 1B 78 */ mr r18, r3
+lbl_802F5844:
+/* 802F5844 002F14A4 2C 12 00 00 */ cmpwi r18, 0
+/* 802F5848 002F14A8 41 82 00 08 */ beq lbl_802F5850
+/* 802F584C 002F14AC 48 00 00 49 */ bl SOCleanup
+lbl_802F5850:
+/* 802F5850 002F14B0 4B F7 BA A9 */ bl OSGetCurrentThread
+/* 802F5854 002F14B4 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5858 002F14B8 41 82 00 0C */ beq lbl_802F5864
+/* 802F585C 002F14BC 92 43 03 0C */ stw r18, 0x30c(r3)
+/* 802F5860 002F14C0 48 00 00 08 */ b lbl_802F5868
+lbl_802F5864:
+/* 802F5864 002F14C4 92 4D AF 5C */ stw r18, lbl_8064021C-_SDA_BASE_(r13)
+lbl_802F5868:
+/* 802F5868 002F14C8 2C 12 FF 90 */ cmpwi r18, -112
+/* 802F586C 002F14CC 40 82 00 0C */ bne lbl_802F5878
+/* 802F5870 002F14D0 35 EF FF FF */ addic. r15, r15, -1
+/* 802F5874 002F14D4 40 80 FC 7C */ bge lbl_802F54F0
+lbl_802F5878:
+/* 802F5878 002F14D8 39 61 00 60 */ addi r11, r1, 0x60
+/* 802F587C 002F14DC 7E 43 93 78 */ mr r3, r18
+/* 802F5880 002F14E0 4B ED 18 C1 */ bl __restore_gpr
+/* 802F5884 002F14E4 80 01 00 64 */ lwz r0, 0x64(r1)
+/* 802F5888 002F14E8 7C 08 03 A6 */ mtlr r0
+/* 802F588C 002F14EC 38 21 00 60 */ addi r1, r1, 0x60
+/* 802F5890 002F14F0 4E 80 00 20 */ blr
+
+.global SOCleanup
+SOCleanup:
+/* 802F5894 002F14F4 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F5898 002F14F8 7C 08 02 A6 */ mflr r0
+/* 802F589C 002F14FC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F58A0 002F1500 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F58A4 002F1504 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F58A8 002F1508 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F58AC 002F150C 4B F7 8E B1 */ bl OSDisableInterrupts
+/* 802F58B0 002F1510 88 0D AF 58 */ lbz r0, lbl_80640218-_SDA_BASE_(r13)
+/* 802F58B4 002F1514 38 80 00 00 */ li r4, 0
+/* 802F58B8 002F1518 90 81 00 08 */ stw r4, 8(r1)
+/* 802F58BC 002F151C 7C 7D 1B 78 */ mr r29, r3
+/* 802F58C0 002F1520 2C 00 00 01 */ cmpwi r0, 1
+/* 802F58C4 002F1524 41 82 00 20 */ beq lbl_802F58E4
+/* 802F58C8 002F1528 40 80 00 08 */ bge lbl_802F58D0
+/* 802F58CC 002F152C 48 00 00 10 */ b lbl_802F58DC
+lbl_802F58D0:
+/* 802F58D0 002F1530 2C 00 00 03 */ cmpwi r0, 3
+/* 802F58D4 002F1534 40 80 00 08 */ bge lbl_802F58DC
+/* 802F58D8 002F1538 48 00 00 14 */ b lbl_802F58EC
+lbl_802F58DC:
+/* 802F58DC 002F153C 3B C0 FF D9 */ li r30, -39
+/* 802F58E0 002F1540 48 00 01 24 */ b lbl_802F5A04
+lbl_802F58E4:
+/* 802F58E4 002F1544 3B C0 FF F9 */ li r30, -7
+/* 802F58E8 002F1548 48 00 01 1C */ b lbl_802F5A04
+lbl_802F58EC:
+/* 802F58EC 002F154C 3F E0 80 58 */ lis r31, lbl_8057AAB8@ha
+/* 802F58F0 002F1550 3B FF AA B8 */ addi r31, r31, lbl_8057AAB8@l
+/* 802F58F4 002F1554 80 1F 00 08 */ lwz r0, 8(r31)
+/* 802F58F8 002F1558 2C 00 00 00 */ cmpwi r0, 0
+/* 802F58FC 002F155C 40 80 00 0C */ bge lbl_802F5908
+/* 802F5900 002F1560 3B C0 FF F6 */ li r30, -10
+/* 802F5904 002F1564 48 00 01 00 */ b lbl_802F5A04
+lbl_802F5908:
+/* 802F5908 002F1568 4B F7 B9 F1 */ bl OSGetCurrentThread
+/* 802F590C 002F156C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5910 002F1570 40 82 00 0C */ bne lbl_802F591C
+/* 802F5914 002F1574 3F C0 80 00 */ lis r30, 0x8000
+/* 802F5918 002F1578 48 00 00 EC */ b lbl_802F5A04
+lbl_802F591C:
+/* 802F591C 002F157C 38 00 FF FF */ li r0, -1
+/* 802F5920 002F1580 7F A3 EB 78 */ mr r3, r29
+/* 802F5924 002F1584 90 1F 00 08 */ stw r0, 8(r31)
+/* 802F5928 002F1588 4B F7 8E 5D */ bl OSRestoreInterrupts
+/* 802F592C 002F158C 38 61 00 08 */ addi r3, r1, 8
+/* 802F5930 002F1590 48 00 E4 51 */ bl func_80303D80
+/* 802F5934 002F1594 38 03 00 21 */ addi r0, r3, 0x21
+/* 802F5938 002F1598 80 81 00 08 */ lwz r4, 8(r1)
+/* 802F593C 002F159C 28 00 00 21 */ cmplwi r0, 0x21
+/* 802F5940 002F15A0 3B C0 FF E4 */ li r30, -28
+/* 802F5944 002F15A4 41 81 00 40 */ bgt lbl_802F5984
+/* 802F5948 002F15A8 3C 60 80 44 */ lis r3, lbl_80445EE0@ha
+/* 802F594C 002F15AC 54 00 10 3A */ slwi r0, r0, 2
+/* 802F5950 002F15B0 38 63 5E E0 */ addi r3, r3, lbl_80445EE0@l
+/* 802F5954 002F15B4 7C 63 00 2E */ lwzx r3, r3, r0
+/* 802F5958 002F15B8 7C 69 03 A6 */ mtctr r3
+/* 802F595C 002F15BC 4E 80 04 20 */ bctr
+/* 802F5960 002F15C0 3B C0 00 00 */ li r30, 0
+/* 802F5964 002F15C4 48 00 00 20 */ b lbl_802F5984
+/* 802F5968 002F15C8 3B C0 FF D0 */ li r30, -48
+/* 802F596C 002F15CC 48 00 00 18 */ b lbl_802F5984
+/* 802F5970 002F15D0 7C 9E 23 78 */ mr r30, r4
+/* 802F5974 002F15D4 48 00 00 10 */ b lbl_802F5984
+/* 802F5978 002F15D8 3F C0 80 00 */ lis r30, 0x8000
+/* 802F597C 002F15DC 48 00 00 08 */ b lbl_802F5984
+/* 802F5980 002F15E0 3B C0 FF E6 */ li r30, -26
+lbl_802F5984:
+/* 802F5984 002F15E4 2C 1E 00 00 */ cmpwi r30, 0
+/* 802F5988 002F15E8 40 82 00 2C */ bne lbl_802F59B4
+/* 802F598C 002F15EC 3F E0 80 58 */ lis r31, lbl_8057AAB8@ha
+/* 802F5990 002F15F0 3B FF AA B8 */ addi r31, r31, lbl_8057AAB8@l
+/* 802F5994 002F15F4 80 7F 00 0C */ lwz r3, 0xc(r31)
+/* 802F5998 002F15F8 4B FA D9 A1 */ bl IOS_Close
+/* 802F599C 002F15FC 2C 03 00 00 */ cmpwi r3, 0
+/* 802F59A0 002F1600 40 80 00 0C */ bge lbl_802F59AC
+/* 802F59A4 002F1604 3F C0 80 00 */ lis r30, 0x8000
+/* 802F59A8 002F1608 48 00 00 0C */ b lbl_802F59B4
+lbl_802F59AC:
+/* 802F59AC 002F160C 38 00 FF FF */ li r0, -1
+/* 802F59B0 002F1610 90 1F 00 0C */ stw r0, 0xc(r31)
+lbl_802F59B4:
+/* 802F59B4 002F1614 4B F7 8D A9 */ bl OSDisableInterrupts
+/* 802F59B8 002F1618 2C 1E 00 00 */ cmpwi r30, 0
+/* 802F59BC 002F161C 7C 7D 1B 78 */ mr r29, r3
+/* 802F59C0 002F1620 40 82 00 20 */ bne lbl_802F59E0
+/* 802F59C4 002F1624 3C 60 80 58 */ lis r3, lbl_8057AAB8@ha
+/* 802F59C8 002F1628 38 80 00 01 */ li r4, 1
+/* 802F59CC 002F162C 38 63 AA B8 */ addi r3, r3, lbl_8057AAB8@l
+/* 802F59D0 002F1630 38 00 FF FE */ li r0, -2
+/* 802F59D4 002F1634 98 8D AF 58 */ stb r4, lbl_80640218-_SDA_BASE_(r13)
+/* 802F59D8 002F1638 90 03 00 08 */ stw r0, 8(r3)
+/* 802F59DC 002F163C 48 00 00 28 */ b lbl_802F5A04
+lbl_802F59E0:
+/* 802F59E0 002F1640 3C 1E 80 00 */ addis r0, r30, 0x8000
+/* 802F59E4 002F1644 28 00 00 00 */ cmplwi r0, 0
+/* 802F59E8 002F1648 41 82 00 1C */ beq lbl_802F5A04
+/* 802F59EC 002F164C 3C 60 80 58 */ lis r3, lbl_8057AAB8@ha
+/* 802F59F0 002F1650 38 80 00 02 */ li r4, 2
+/* 802F59F4 002F1654 38 63 AA B8 */ addi r3, r3, lbl_8057AAB8@l
+/* 802F59F8 002F1658 38 00 00 00 */ li r0, 0
+/* 802F59FC 002F165C 98 8D AF 58 */ stb r4, lbl_80640218-_SDA_BASE_(r13)
+/* 802F5A00 002F1660 90 03 00 08 */ stw r0, 8(r3)
+lbl_802F5A04:
+/* 802F5A04 002F1664 4B F7 B8 F5 */ bl OSGetCurrentThread
+/* 802F5A08 002F1668 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5A0C 002F166C 41 82 00 0C */ beq lbl_802F5A18
+/* 802F5A10 002F1670 93 C3 03 0C */ stw r30, 0x30c(r3)
+/* 802F5A14 002F1674 48 00 00 08 */ b lbl_802F5A1C
+lbl_802F5A18:
+/* 802F5A18 002F1678 93 CD AF 5C */ stw r30, lbl_8064021C-_SDA_BASE_(r13)
+lbl_802F5A1C:
+/* 802F5A1C 002F167C 7F A3 EB 78 */ mr r3, r29
+/* 802F5A20 002F1680 4B F7 8D 65 */ bl OSRestoreInterrupts
+/* 802F5A24 002F1684 7F C3 F3 78 */ mr r3, r30
+/* 802F5A28 002F1688 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F5A2C 002F168C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F5A30 002F1690 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F5A34 002F1694 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F5A38 002F1698 7C 08 03 A6 */ mtlr r0
+/* 802F5A3C 002F169C 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F5A40 002F16A0 4E 80 00 20 */ blr
+
+.global SOiGetSysWork
+SOiGetSysWork:
+/* 802F5A44 002F16A4 3C 60 80 58 */ lis r3, lbl_8057AAB8@ha
+/* 802F5A48 002F16A8 38 63 AA B8 */ addi r3, r3, lbl_8057AAB8@l
+/* 802F5A4C 002F16AC 4E 80 00 20 */ blr
+
+.global SOiIsBufferAddrCheck
+SOiIsBufferAddrCheck:
+/* 802F5A50 002F16B0 80 6D 8C 0C */ lwz r3, lbl_8063DECC-_SDA_BASE_(r13)
+/* 802F5A54 002F16B4 4E 80 00 20 */ blr
+
+.global SOiIsInitialized
+SOiIsInitialized:
+/* 802F5A58 002F16B8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F5A5C 002F16BC 7C 08 02 A6 */ mflr r0
+/* 802F5A60 002F16C0 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F5A64 002F16C4 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F5A68 002F16C8 3B E0 00 00 */ li r31, 0
+/* 802F5A6C 002F16CC 4B F7 8C F1 */ bl OSDisableInterrupts
+/* 802F5A70 002F16D0 88 0D AF 58 */ lbz r0, lbl_80640218-_SDA_BASE_(r13)
+/* 802F5A74 002F16D4 2C 00 00 03 */ cmpwi r0, 3
+/* 802F5A78 002F16D8 40 80 00 14 */ bge lbl_802F5A8C
+/* 802F5A7C 002F16DC 2C 00 00 01 */ cmpwi r0, 1
+/* 802F5A80 002F16E0 40 80 00 08 */ bge lbl_802F5A88
+/* 802F5A84 002F16E4 48 00 00 08 */ b lbl_802F5A8C
+lbl_802F5A88:
+/* 802F5A88 002F16E8 3B E0 00 01 */ li r31, 1
+lbl_802F5A8C:
+/* 802F5A8C 002F16EC 4B F7 8C F9 */ bl OSRestoreInterrupts
+/* 802F5A90 002F16F0 7F E3 FB 78 */ mr r3, r31
+/* 802F5A94 002F16F4 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F5A98 002F16F8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F5A9C 002F16FC 7C 08 03 A6 */ mtlr r0
+/* 802F5AA0 002F1700 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F5AA4 002F1704 4E 80 00 20 */ blr
+
+.global SOiAlloc
+SOiAlloc:
+/* 802F5AA8 002F1708 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F5AAC 002F170C 7C 08 02 A6 */ mflr r0
+/* 802F5AB0 002F1710 2C 04 00 00 */ cmpwi r4, 0
+/* 802F5AB4 002F1714 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F5AB8 002F1718 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F5ABC 002F171C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F5AC0 002F1720 7C 9E 23 78 */ mr r30, r4
+/* 802F5AC4 002F1724 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F5AC8 002F1728 7C 7D 1B 78 */ mr r29, r3
+/* 802F5ACC 002F172C 40 81 00 A4 */ ble lbl_802F5B70
+/* 802F5AD0 002F1730 3F E0 80 58 */ lis r31, lbl_8057AAB8@ha
+/* 802F5AD4 002F1734 81 9F AA B8 */ lwz r12, lbl_8057AAB8@l(r31)
+/* 802F5AD8 002F1738 2C 0C 00 00 */ cmpwi r12, 0
+/* 802F5ADC 002F173C 41 82 00 94 */ beq lbl_802F5B70
+/* 802F5AE0 002F1740 7D 89 03 A6 */ mtctr r12
+/* 802F5AE4 002F1744 4E 80 04 21 */ bctrl
+/* 802F5AE8 002F1748 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5AEC 002F174C 7C 64 1B 78 */ mr r4, r3
+/* 802F5AF0 002F1750 41 82 00 78 */ beq lbl_802F5B68
+/* 802F5AF4 002F1754 38 DF AA B8 */ addi r6, r31, -21832
+/* 802F5AF8 002F1758 80 0D 8C 0C */ lwz r0, lbl_8063DECC-_SDA_BASE_(r13)
+/* 802F5AFC 002F175C 80 A6 00 14 */ lwz r5, 0x14(r6)
+/* 802F5B00 002F1760 2C 00 00 00 */ cmpwi r0, 0
+/* 802F5B04 002F1764 38 05 00 01 */ addi r0, r5, 1
+/* 802F5B08 002F1768 90 06 00 14 */ stw r0, 0x14(r6)
+/* 802F5B0C 002F176C 41 82 00 5C */ beq lbl_802F5B68
+/* 802F5B10 002F1770 54 65 00 FE */ clrlwi r5, r3, 3
+/* 802F5B14 002F1774 3C 00 10 00 */ lis r0, 0x1000
+/* 802F5B18 002F1778 7C 05 00 40 */ cmplw r5, r0
+/* 802F5B1C 002F177C 41 80 00 10 */ blt lbl_802F5B2C
+/* 802F5B20 002F1780 3C 00 18 00 */ lis r0, 0x1800
+/* 802F5B24 002F1784 7C 05 00 40 */ cmplw r5, r0
+/* 802F5B28 002F1788 41 80 00 40 */ blt lbl_802F5B68
+lbl_802F5B2C:
+/* 802F5B2C 002F178C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5B30 002F1790 41 82 00 34 */ beq lbl_802F5B64
+/* 802F5B34 002F1794 3C C0 80 58 */ lis r6, lbl_8057AAB8@ha
+/* 802F5B38 002F1798 38 C6 AA B8 */ addi r6, r6, lbl_8057AAB8@l
+/* 802F5B3C 002F179C 81 86 00 04 */ lwz r12, 4(r6)
+/* 802F5B40 002F17A0 2C 0C 00 00 */ cmpwi r12, 0
+/* 802F5B44 002F17A4 41 82 00 20 */ beq lbl_802F5B64
+/* 802F5B48 002F17A8 80 A6 00 14 */ lwz r5, 0x14(r6)
+/* 802F5B4C 002F17AC 7F A3 EB 78 */ mr r3, r29
+/* 802F5B50 002F17B0 38 05 FF FF */ addi r0, r5, -1
+/* 802F5B54 002F17B4 7F C5 F3 78 */ mr r5, r30
+/* 802F5B58 002F17B8 90 06 00 14 */ stw r0, 0x14(r6)
+/* 802F5B5C 002F17BC 7D 89 03 A6 */ mtctr r12
+/* 802F5B60 002F17C0 4E 80 04 21 */ bctrl
+lbl_802F5B64:
+/* 802F5B64 002F17C4 38 80 00 00 */ li r4, 0
+lbl_802F5B68:
+/* 802F5B68 002F17C8 7C 83 23 78 */ mr r3, r4
+/* 802F5B6C 002F17CC 48 00 00 08 */ b lbl_802F5B74
+lbl_802F5B70:
+/* 802F5B70 002F17D0 38 60 00 00 */ li r3, 0
+lbl_802F5B74:
+/* 802F5B74 002F17D4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F5B78 002F17D8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F5B7C 002F17DC 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F5B80 002F17E0 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F5B84 002F17E4 7C 08 03 A6 */ mtlr r0
+/* 802F5B88 002F17E8 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F5B8C 002F17EC 4E 80 00 20 */ blr
+
+.global SOiFree
+SOiFree:
+/* 802F5B90 002F17F0 2C 04 00 00 */ cmpwi r4, 0
+/* 802F5B94 002F17F4 4D 82 00 20 */ beqlr
+/* 802F5B98 002F17F8 3C E0 80 58 */ lis r7, lbl_8057AAB8@ha
+/* 802F5B9C 002F17FC 38 E7 AA B8 */ addi r7, r7, lbl_8057AAB8@l
+/* 802F5BA0 002F1800 81 87 00 04 */ lwz r12, 4(r7)
+/* 802F5BA4 002F1804 2C 0C 00 00 */ cmpwi r12, 0
+/* 802F5BA8 002F1808 4D 82 00 20 */ beqlr
+/* 802F5BAC 002F180C 80 C7 00 14 */ lwz r6, 0x14(r7)
+/* 802F5BB0 002F1810 38 06 FF FF */ addi r0, r6, -1
+/* 802F5BB4 002F1814 90 07 00 14 */ stw r0, 0x14(r7)
+/* 802F5BB8 002F1818 7D 89 03 A6 */ mtctr r12
+/* 802F5BBC 002F181C 4E 80 04 20 */ bctr
+/* 802F5BC0 002F1820 4E 80 00 20 */ blr
+
+.global SOiPrepare
+SOiPrepare:
+/* 802F5BC4 002F1824 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F5BC8 002F1828 7C 08 02 A6 */ mflr r0
+/* 802F5BCC 002F182C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F5BD0 002F1830 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F5BD4 002F1834 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F5BD8 002F1838 3B C0 00 00 */ li r30, 0
+/* 802F5BDC 002F183C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F5BE0 002F1840 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802F5BE4 002F1844 7C 9C 23 78 */ mr r28, r4
+/* 802F5BE8 002F1848 4B F7 8B 75 */ bl OSDisableInterrupts
+/* 802F5BEC 002F184C 88 0D AF 58 */ lbz r0, lbl_80640218-_SDA_BASE_(r13)
+/* 802F5BF0 002F1850 7C 7D 1B 78 */ mr r29, r3
+/* 802F5BF4 002F1854 2C 00 00 01 */ cmpwi r0, 1
+/* 802F5BF8 002F1858 41 82 00 28 */ beq lbl_802F5C20
+/* 802F5BFC 002F185C 40 80 00 10 */ bge lbl_802F5C0C
+/* 802F5C00 002F1860 2C 00 00 00 */ cmpwi r0, 0
+/* 802F5C04 002F1864 40 80 00 14 */ bge lbl_802F5C18
+/* 802F5C08 002F1868 48 00 00 18 */ b lbl_802F5C20
+lbl_802F5C0C:
+/* 802F5C0C 002F186C 2C 00 00 03 */ cmpwi r0, 3
+/* 802F5C10 002F1870 40 80 00 10 */ bge lbl_802F5C20
+/* 802F5C14 002F1874 48 00 00 14 */ b lbl_802F5C28
+lbl_802F5C18:
+/* 802F5C18 002F1878 3B C0 FF D9 */ li r30, -39
+/* 802F5C1C 002F187C 48 00 00 44 */ b lbl_802F5C60
+lbl_802F5C20:
+/* 802F5C20 002F1880 3B C0 FF E4 */ li r30, -28
+/* 802F5C24 002F1884 48 00 00 3C */ b lbl_802F5C60
+lbl_802F5C28:
+/* 802F5C28 002F1888 3F E0 80 58 */ lis r31, lbl_8057AAB8@ha
+/* 802F5C2C 002F188C 3B FF AA B8 */ addi r31, r31, lbl_8057AAB8@l
+/* 802F5C30 002F1890 80 1F 00 08 */ lwz r0, 8(r31)
+/* 802F5C34 002F1894 2C 00 00 00 */ cmpwi r0, 0
+/* 802F5C38 002F1898 40 80 00 0C */ bge lbl_802F5C44
+/* 802F5C3C 002F189C 3B C0 FF F6 */ li r30, -10
+/* 802F5C40 002F18A0 48 00 00 20 */ b lbl_802F5C60
+lbl_802F5C44:
+/* 802F5C44 002F18A4 4B F7 B6 B5 */ bl OSGetCurrentThread
+/* 802F5C48 002F18A8 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5C4C 002F18AC 40 82 00 0C */ bne lbl_802F5C58
+/* 802F5C50 002F18B0 3F C0 80 00 */ lis r30, 0x8000
+/* 802F5C54 002F18B4 48 00 00 0C */ b lbl_802F5C60
+lbl_802F5C58:
+/* 802F5C58 002F18B8 80 1F 00 0C */ lwz r0, 0xc(r31)
+/* 802F5C5C 002F18BC 90 1C 00 00 */ stw r0, 0(r28)
+lbl_802F5C60:
+/* 802F5C60 002F18C0 2C 1E 00 00 */ cmpwi r30, 0
+/* 802F5C64 002F18C4 41 82 00 1C */ beq lbl_802F5C80
+/* 802F5C68 002F18C8 4B F7 B6 91 */ bl OSGetCurrentThread
+/* 802F5C6C 002F18CC 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5C70 002F18D0 41 82 00 0C */ beq lbl_802F5C7C
+/* 802F5C74 002F18D4 93 C3 03 0C */ stw r30, 0x30c(r3)
+/* 802F5C78 002F18D8 48 00 00 08 */ b lbl_802F5C80
+lbl_802F5C7C:
+/* 802F5C7C 002F18DC 93 CD AF 5C */ stw r30, lbl_8064021C-_SDA_BASE_(r13)
+lbl_802F5C80:
+/* 802F5C80 002F18E0 7F A3 EB 78 */ mr r3, r29
+/* 802F5C84 002F18E4 4B F7 8B 01 */ bl OSRestoreInterrupts
+/* 802F5C88 002F18E8 7F C3 F3 78 */ mr r3, r30
+/* 802F5C8C 002F18EC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F5C90 002F18F0 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F5C94 002F18F4 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F5C98 002F18F8 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802F5C9C 002F18FC 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F5CA0 002F1900 7C 08 03 A6 */ mtlr r0
+/* 802F5CA4 002F1904 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F5CA8 002F1908 4E 80 00 20 */ blr
+
+.global SOiConclude
+SOiConclude:
+/* 802F5CAC 002F190C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F5CB0 002F1910 7C 08 02 A6 */ mflr r0
+/* 802F5CB4 002F1914 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F5CB8 002F1918 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F5CBC 002F191C 93 C1 00 08 */ stw r30, 8(r1)
+/* 802F5CC0 002F1920 7C 9E 23 78 */ mr r30, r4
+/* 802F5CC4 002F1924 4B F7 8A 99 */ bl OSDisableInterrupts
+/* 802F5CC8 002F1928 7C 7F 1B 78 */ mr r31, r3
+/* 802F5CCC 002F192C 4B F7 B6 2D */ bl OSGetCurrentThread
+/* 802F5CD0 002F1930 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5CD4 002F1934 41 82 00 0C */ beq lbl_802F5CE0
+/* 802F5CD8 002F1938 93 C3 03 0C */ stw r30, 0x30c(r3)
+/* 802F5CDC 002F193C 48 00 00 08 */ b lbl_802F5CE4
+lbl_802F5CE0:
+/* 802F5CE0 002F1940 93 CD AF 5C */ stw r30, lbl_8064021C-_SDA_BASE_(r13)
+lbl_802F5CE4:
+/* 802F5CE4 002F1944 7F E3 FB 78 */ mr r3, r31
+/* 802F5CE8 002F1948 4B F7 8A 9D */ bl OSRestoreInterrupts
+/* 802F5CEC 002F194C 7F C3 F3 78 */ mr r3, r30
+/* 802F5CF0 002F1950 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F5CF4 002F1954 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802F5CF8 002F1958 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F5CFC 002F195C 7C 08 03 A6 */ mtlr r0
+/* 802F5D00 002F1960 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F5D04 002F1964 4E 80 00 20 */ blr
+
+.global SOiPrepareTempRm
+SOiPrepareTempRm:
+/* 802F5D08 002F1968 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F5D0C 002F196C 7C 08 02 A6 */ mflr r0
+/* 802F5D10 002F1970 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F5D14 002F1974 39 61 00 20 */ addi r11, r1, 0x20
+/* 802F5D18 002F1978 4B ED 14 0D */ bl _savegpr_26
+/* 802F5D1C 002F197C 7C 7A 1B 78 */ mr r26, r3
+/* 802F5D20 002F1980 7C 9B 23 78 */ mr r27, r4
+/* 802F5D24 002F1984 7C BC 2B 78 */ mr r28, r5
+/* 802F5D28 002F1988 3B C0 00 00 */ li r30, 0
+/* 802F5D2C 002F198C 4B F7 8A 31 */ bl OSDisableInterrupts
+/* 802F5D30 002F1990 88 0D AF 58 */ lbz r0, lbl_80640218-_SDA_BASE_(r13)
+/* 802F5D34 002F1994 7C 7D 1B 78 */ mr r29, r3
+/* 802F5D38 002F1998 2C 00 00 01 */ cmpwi r0, 1
+/* 802F5D3C 002F199C 41 82 00 28 */ beq lbl_802F5D64
+/* 802F5D40 002F19A0 40 80 00 10 */ bge lbl_802F5D50
+/* 802F5D44 002F19A4 2C 00 00 00 */ cmpwi r0, 0
+/* 802F5D48 002F19A8 40 80 00 14 */ bge lbl_802F5D5C
+/* 802F5D4C 002F19AC 48 00 00 18 */ b lbl_802F5D64
+lbl_802F5D50:
+/* 802F5D50 002F19B0 2C 00 00 03 */ cmpwi r0, 3
+/* 802F5D54 002F19B4 40 80 00 10 */ bge lbl_802F5D64
+/* 802F5D58 002F19B8 48 00 02 04 */ b lbl_802F5F5C
+lbl_802F5D5C:
+/* 802F5D5C 002F19BC 3B C0 FF D9 */ li r30, -39
+/* 802F5D60 002F19C0 48 00 02 3C */ b lbl_802F5F9C
+lbl_802F5D64:
+/* 802F5D64 002F19C4 3F E0 80 58 */ lis r31, lbl_8057AAB8@ha
+/* 802F5D68 002F19C8 3B FF AA B8 */ addi r31, r31, lbl_8057AAB8@l
+/* 802F5D6C 002F19CC 80 1F 00 08 */ lwz r0, 8(r31)
+/* 802F5D70 002F19D0 2C 00 FF FE */ cmpwi r0, -2
+/* 802F5D74 002F19D4 40 81 00 0C */ ble lbl_802F5D80
+/* 802F5D78 002F19D8 3B C0 FF F6 */ li r30, -10
+/* 802F5D7C 002F19DC 48 00 02 20 */ b lbl_802F5F9C
+lbl_802F5D80:
+/* 802F5D80 002F19E0 4B F7 B5 79 */ bl OSGetCurrentThread
+/* 802F5D84 002F19E4 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5D88 002F19E8 40 82 00 0C */ bne lbl_802F5D94
+/* 802F5D8C 002F19EC 3F C0 80 00 */ lis r30, 0x8000
+/* 802F5D90 002F19F0 48 00 02 0C */ b lbl_802F5F9C
+lbl_802F5D94:
+/* 802F5D94 002F19F4 38 00 FF FF */ li r0, -1
+/* 802F5D98 002F19F8 7F A3 EB 78 */ mr r3, r29
+/* 802F5D9C 002F19FC 90 1F 00 08 */ stw r0, 8(r31)
+/* 802F5DA0 002F1A00 4B F7 89 E5 */ bl OSRestoreInterrupts
+/* 802F5DA4 002F1A04 3C 60 80 44 */ lis r3, lbl_80445E48@ha
+/* 802F5DA8 002F1A08 38 80 00 00 */ li r4, 0
+/* 802F5DAC 002F1A0C 38 63 5E 48 */ addi r3, r3, lbl_80445E48@l
+/* 802F5DB0 002F1A10 4B FA D3 A9 */ bl IOS_Open
+/* 802F5DB4 002F1A14 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5DB8 002F1A18 90 7F 00 0C */ stw r3, 0xc(r31)
+/* 802F5DBC 002F1A1C 40 80 00 30 */ bge lbl_802F5DEC
+/* 802F5DC0 002F1A20 4B F7 89 9D */ bl OSDisableInterrupts
+/* 802F5DC4 002F1A24 80 1F 00 0C */ lwz r0, 0xc(r31)
+/* 802F5DC8 002F1A28 7C 7D 1B 78 */ mr r29, r3
+/* 802F5DCC 002F1A2C 2C 00 FF FA */ cmpwi r0, -6
+/* 802F5DD0 002F1A30 40 82 00 14 */ bne lbl_802F5DE4
+/* 802F5DD4 002F1A34 38 00 FF FE */ li r0, -2
+/* 802F5DD8 002F1A38 3B C0 FF E6 */ li r30, -26
+/* 802F5DDC 002F1A3C 90 1F 00 08 */ stw r0, 8(r31)
+/* 802F5DE0 002F1A40 48 00 01 BC */ b lbl_802F5F9C
+lbl_802F5DE4:
+/* 802F5DE4 002F1A44 3F C0 80 00 */ lis r30, 0x8000
+/* 802F5DE8 002F1A48 48 00 01 B4 */ b lbl_802F5F9C
+lbl_802F5DEC:
+/* 802F5DEC 002F1A4C 90 7B 00 00 */ stw r3, 0(r27)
+/* 802F5DF0 002F1A50 48 00 DF A1 */ bl func_80303D90
+/* 802F5DF4 002F1A54 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5DF8 002F1A58 40 82 00 D8 */ bne lbl_802F5ED0
+/* 802F5DFC 002F1A5C 4B FF 77 29 */ bl NCDGetLinkStatus
+/* 802F5E00 002F1A60 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5E04 002F1A64 40 80 00 1C */ bge lbl_802F5E20
+/* 802F5E08 002F1A68 2C 03 FF F8 */ cmpwi r3, -8
+/* 802F5E0C 002F1A6C 41 82 00 74 */ beq lbl_802F5E80
+/* 802F5E10 002F1A70 41 80 00 A0 */ blt lbl_802F5EB0
+/* 802F5E14 002F1A74 2C 03 FF FE */ cmpwi r3, -2
+/* 802F5E18 002F1A78 40 80 00 80 */ bge lbl_802F5E98
+/* 802F5E1C 002F1A7C 48 00 00 94 */ b lbl_802F5EB0
+lbl_802F5E20:
+/* 802F5E20 002F1A80 2C 03 00 06 */ cmpwi r3, 6
+/* 802F5E24 002F1A84 40 80 00 8C */ bge lbl_802F5EB0
+/* 802F5E28 002F1A88 2C 03 00 03 */ cmpwi r3, 3
+/* 802F5E2C 002F1A8C 40 80 00 08 */ bge lbl_802F5E34
+/* 802F5E30 002F1A90 48 00 00 80 */ b lbl_802F5EB0
+lbl_802F5E34:
+/* 802F5E34 002F1A94 80 7F 00 0C */ lwz r3, 0xc(r31)
+/* 802F5E38 002F1A98 38 80 00 1F */ li r4, 0x1f
+/* 802F5E3C 002F1A9C 38 A0 00 00 */ li r5, 0
+/* 802F5E40 002F1AA0 38 C0 00 00 */ li r6, 0
+/* 802F5E44 002F1AA4 38 E0 00 00 */ li r7, 0
+/* 802F5E48 002F1AA8 39 00 00 00 */ li r8, 0
+/* 802F5E4C 002F1AAC 4B FA DC A5 */ bl IOS_Ioctl
+/* 802F5E50 002F1AB0 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5E54 002F1AB4 7C 7E 1B 78 */ mr r30, r3
+/* 802F5E58 002F1AB8 40 82 00 10 */ bne lbl_802F5E68
+/* 802F5E5C 002F1ABC 38 00 00 01 */ li r0, 1
+/* 802F5E60 002F1AC0 90 1C 00 00 */ stw r0, 0(r28)
+/* 802F5E64 002F1AC4 48 00 00 60 */ b lbl_802F5EC4
+lbl_802F5E68:
+/* 802F5E68 002F1AC8 7F 43 D3 78 */ mr r3, r26
+/* 802F5E6C 002F1ACC 7F C4 F3 78 */ mr r4, r30
+/* 802F5E70 002F1AD0 38 A0 00 01 */ li r5, 1
+/* 802F5E74 002F1AD4 48 00 01 6D */ bl SOiConcludeTempRm
+/* 802F5E78 002F1AD8 7C 7E 1B 78 */ mr r30, r3
+/* 802F5E7C 002F1ADC 48 00 00 48 */ b lbl_802F5EC4
+lbl_802F5E80:
+/* 802F5E80 002F1AE0 7F 43 D3 78 */ mr r3, r26
+/* 802F5E84 002F1AE4 38 80 FF E6 */ li r4, -26
+/* 802F5E88 002F1AE8 38 A0 00 01 */ li r5, 1
+/* 802F5E8C 002F1AEC 48 00 01 55 */ bl SOiConcludeTempRm
+/* 802F5E90 002F1AF0 7C 7E 1B 78 */ mr r30, r3
+/* 802F5E94 002F1AF4 48 00 00 30 */ b lbl_802F5EC4
+lbl_802F5E98:
+/* 802F5E98 002F1AF8 7F 43 D3 78 */ mr r3, r26
+/* 802F5E9C 002F1AFC 3C 80 80 00 */ lis r4, 0x8000
+/* 802F5EA0 002F1B00 38 A0 00 01 */ li r5, 1
+/* 802F5EA4 002F1B04 48 00 01 3D */ bl SOiConcludeTempRm
+/* 802F5EA8 002F1B08 7C 7E 1B 78 */ mr r30, r3
+/* 802F5EAC 002F1B0C 48 00 00 18 */ b lbl_802F5EC4
+lbl_802F5EB0:
+/* 802F5EB0 002F1B10 7F 43 D3 78 */ mr r3, r26
+/* 802F5EB4 002F1B14 38 80 FF D0 */ li r4, -48
+/* 802F5EB8 002F1B18 38 A0 00 01 */ li r5, 1
+/* 802F5EBC 002F1B1C 48 00 01 25 */ bl SOiConcludeTempRm
+/* 802F5EC0 002F1B20 7C 7E 1B 78 */ mr r30, r3
+lbl_802F5EC4:
+/* 802F5EC4 002F1B24 4B F7 88 99 */ bl OSDisableInterrupts
+/* 802F5EC8 002F1B28 7C 7D 1B 78 */ mr r29, r3
+/* 802F5ECC 002F1B2C 48 00 00 D0 */ b lbl_802F5F9C
+lbl_802F5ED0:
+/* 802F5ED0 002F1B30 38 03 00 1D */ addi r0, r3, 0x1d
+/* 802F5ED4 002F1B34 28 00 00 1C */ cmplwi r0, 0x1c
+/* 802F5ED8 002F1B38 41 81 00 34 */ bgt lbl_802F5F0C
+/* 802F5EDC 002F1B3C 3C 60 80 44 */ lis r3, lbl_80445F68@ha
+/* 802F5EE0 002F1B40 54 00 10 3A */ slwi r0, r0, 2
+/* 802F5EE4 002F1B44 38 63 5F 68 */ addi r3, r3, lbl_80445F68@l
+/* 802F5EE8 002F1B48 7C 63 00 2E */ lwzx r3, r3, r0
+/* 802F5EEC 002F1B4C 7C 69 03 A6 */ mtctr r3
+/* 802F5EF0 002F1B50 4E 80 04 20 */ bctr
+/* 802F5EF4 002F1B54 3B C0 FF E6 */ li r30, -26
+/* 802F5EF8 002F1B58 48 00 00 18 */ b lbl_802F5F10
+/* 802F5EFC 002F1B5C 3B C0 FF D9 */ li r30, -39
+/* 802F5F00 002F1B60 48 00 00 10 */ b lbl_802F5F10
+/* 802F5F04 002F1B64 3B C0 FF D0 */ li r30, -48
+/* 802F5F08 002F1B68 48 00 00 08 */ b lbl_802F5F10
+lbl_802F5F0C:
+/* 802F5F0C 002F1B6C 3F C0 80 00 */ lis r30, 0x8000
+lbl_802F5F10:
+/* 802F5F10 002F1B70 3C 60 80 58 */ lis r3, lbl_8057AAB8@ha
+/* 802F5F14 002F1B74 38 63 AA B8 */ addi r3, r3, lbl_8057AAB8@l
+/* 802F5F18 002F1B78 80 63 00 0C */ lwz r3, 0xc(r3)
+/* 802F5F1C 002F1B7C 4B FA D4 1D */ bl IOS_Close
+/* 802F5F20 002F1B80 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5F24 002F1B84 40 80 00 08 */ bge lbl_802F5F2C
+/* 802F5F28 002F1B88 3F C0 80 00 */ lis r30, 0x8000
+lbl_802F5F2C:
+/* 802F5F2C 002F1B8C 4B F7 88 31 */ bl OSDisableInterrupts
+/* 802F5F30 002F1B90 3C 1E 80 00 */ addis r0, r30, 0x8000
+/* 802F5F34 002F1B94 7C 7D 1B 78 */ mr r29, r3
+/* 802F5F38 002F1B98 28 00 00 00 */ cmplwi r0, 0
+/* 802F5F3C 002F1B9C 41 82 00 60 */ beq lbl_802F5F9C
+/* 802F5F40 002F1BA0 3C 60 80 58 */ lis r3, lbl_8057AAB8@ha
+/* 802F5F44 002F1BA4 38 80 FF FF */ li r4, -1
+/* 802F5F48 002F1BA8 38 63 AA B8 */ addi r3, r3, lbl_8057AAB8@l
+/* 802F5F4C 002F1BAC 38 00 FF FE */ li r0, -2
+/* 802F5F50 002F1BB0 90 83 00 0C */ stw r4, 0xc(r3)
+/* 802F5F54 002F1BB4 90 03 00 08 */ stw r0, 8(r3)
+/* 802F5F58 002F1BB8 48 00 00 44 */ b lbl_802F5F9C
+lbl_802F5F5C:
+/* 802F5F5C 002F1BBC 3F E0 80 58 */ lis r31, lbl_8057AAB8@ha
+/* 802F5F60 002F1BC0 3B FF AA B8 */ addi r31, r31, lbl_8057AAB8@l
+/* 802F5F64 002F1BC4 80 1F 00 08 */ lwz r0, 8(r31)
+/* 802F5F68 002F1BC8 2C 00 00 00 */ cmpwi r0, 0
+/* 802F5F6C 002F1BCC 40 80 00 0C */ bge lbl_802F5F78
+/* 802F5F70 002F1BD0 3B C0 FF F6 */ li r30, -10
+/* 802F5F74 002F1BD4 48 00 00 28 */ b lbl_802F5F9C
+lbl_802F5F78:
+/* 802F5F78 002F1BD8 4B F7 B3 81 */ bl OSGetCurrentThread
+/* 802F5F7C 002F1BDC 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5F80 002F1BE0 40 82 00 0C */ bne lbl_802F5F8C
+/* 802F5F84 002F1BE4 3F C0 80 00 */ lis r30, 0x8000
+/* 802F5F88 002F1BE8 48 00 00 14 */ b lbl_802F5F9C
+lbl_802F5F8C:
+/* 802F5F8C 002F1BEC 38 00 00 00 */ li r0, 0
+/* 802F5F90 002F1BF0 90 1C 00 00 */ stw r0, 0(r28)
+/* 802F5F94 002F1BF4 80 1F 00 0C */ lwz r0, 0xc(r31)
+/* 802F5F98 002F1BF8 90 1B 00 00 */ stw r0, 0(r27)
+lbl_802F5F9C:
+/* 802F5F9C 002F1BFC 2C 1E 00 00 */ cmpwi r30, 0
+/* 802F5FA0 002F1C00 41 82 00 1C */ beq lbl_802F5FBC
+/* 802F5FA4 002F1C04 4B F7 B3 55 */ bl OSGetCurrentThread
+/* 802F5FA8 002F1C08 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5FAC 002F1C0C 41 82 00 0C */ beq lbl_802F5FB8
+/* 802F5FB0 002F1C10 93 C3 03 0C */ stw r30, 0x30c(r3)
+/* 802F5FB4 002F1C14 48 00 00 08 */ b lbl_802F5FBC
+lbl_802F5FB8:
+/* 802F5FB8 002F1C18 93 CD AF 5C */ stw r30, lbl_8064021C-_SDA_BASE_(r13)
+lbl_802F5FBC:
+/* 802F5FBC 002F1C1C 7F A3 EB 78 */ mr r3, r29
+/* 802F5FC0 002F1C20 4B F7 87 C5 */ bl OSRestoreInterrupts
+/* 802F5FC4 002F1C24 39 61 00 20 */ addi r11, r1, 0x20
+/* 802F5FC8 002F1C28 7F C3 F3 78 */ mr r3, r30
+/* 802F5FCC 002F1C2C 4B ED 11 A5 */ bl _restgpr_26
+/* 802F5FD0 002F1C30 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F5FD4 002F1C34 7C 08 03 A6 */ mtlr r0
+/* 802F5FD8 002F1C38 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F5FDC 002F1C3C 4E 80 00 20 */ blr
+
+.global SOiConcludeTempRm
+SOiConcludeTempRm:
+/* 802F5FE0 002F1C40 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F5FE4 002F1C44 7C 08 02 A6 */ mflr r0
+/* 802F5FE8 002F1C48 2C 05 00 01 */ cmpwi r5, 1
+/* 802F5FEC 002F1C4C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F5FF0 002F1C50 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F5FF4 002F1C54 93 C1 00 08 */ stw r30, 8(r1)
+/* 802F5FF8 002F1C58 7C 9E 23 78 */ mr r30, r4
+/* 802F5FFC 002F1C5C 40 82 00 84 */ bne lbl_802F6080
+/* 802F6000 002F1C60 48 00 DD A1 */ bl func_80303DA0
+/* 802F6004 002F1C64 2C 03 FF FF */ cmpwi r3, -1
+/* 802F6008 002F1C68 41 82 00 28 */ beq lbl_802F6030
+/* 802F600C 002F1C6C 40 80 00 10 */ bge lbl_802F601C
+/* 802F6010 002F1C70 2C 03 FF E3 */ cmpwi r3, -29
+/* 802F6014 002F1C74 41 82 00 14 */ beq lbl_802F6028
+/* 802F6018 002F1C78 48 00 00 18 */ b lbl_802F6030
+lbl_802F601C:
+/* 802F601C 002F1C7C 2C 03 00 01 */ cmpwi r3, 1
+/* 802F6020 002F1C80 40 80 00 10 */ bge lbl_802F6030
+/* 802F6024 002F1C84 48 00 00 10 */ b lbl_802F6034
+lbl_802F6028:
+/* 802F6028 002F1C88 3B C0 FF E6 */ li r30, -26
+/* 802F602C 002F1C8C 48 00 00 08 */ b lbl_802F6034
+lbl_802F6030:
+/* 802F6030 002F1C90 3F C0 80 00 */ lis r30, 0x8000
+lbl_802F6034:
+/* 802F6034 002F1C94 3C 60 80 58 */ lis r3, lbl_8057AAB8@ha
+/* 802F6038 002F1C98 38 63 AA B8 */ addi r3, r3, lbl_8057AAB8@l
+/* 802F603C 002F1C9C 80 63 00 0C */ lwz r3, 0xc(r3)
+/* 802F6040 002F1CA0 4B FA D2 F9 */ bl IOS_Close
+/* 802F6044 002F1CA4 2C 03 00 00 */ cmpwi r3, 0
+/* 802F6048 002F1CA8 40 80 00 08 */ bge lbl_802F6050
+/* 802F604C 002F1CAC 3F C0 80 00 */ lis r30, 0x8000
+lbl_802F6050:
+/* 802F6050 002F1CB0 4B F7 87 0D */ bl OSDisableInterrupts
+/* 802F6054 002F1CB4 3C 1E 80 00 */ addis r0, r30, 0x8000
+/* 802F6058 002F1CB8 7C 7F 1B 78 */ mr r31, r3
+/* 802F605C 002F1CBC 28 00 00 00 */ cmplwi r0, 0
+/* 802F6060 002F1CC0 41 82 00 28 */ beq lbl_802F6088
+/* 802F6064 002F1CC4 3C 60 80 58 */ lis r3, lbl_8057AAB8@ha
+/* 802F6068 002F1CC8 38 80 FF FF */ li r4, -1
+/* 802F606C 002F1CCC 38 63 AA B8 */ addi r3, r3, lbl_8057AAB8@l
+/* 802F6070 002F1CD0 38 00 FF FE */ li r0, -2
+/* 802F6074 002F1CD4 90 83 00 0C */ stw r4, 0xc(r3)
+/* 802F6078 002F1CD8 90 03 00 08 */ stw r0, 8(r3)
+/* 802F607C 002F1CDC 48 00 00 0C */ b lbl_802F6088
+lbl_802F6080:
+/* 802F6080 002F1CE0 4B F7 86 DD */ bl OSDisableInterrupts
+/* 802F6084 002F1CE4 7C 7F 1B 78 */ mr r31, r3
+lbl_802F6088:
+/* 802F6088 002F1CE8 4B F7 B2 71 */ bl OSGetCurrentThread
+/* 802F608C 002F1CEC 2C 03 00 00 */ cmpwi r3, 0
+/* 802F6090 002F1CF0 41 82 00 0C */ beq lbl_802F609C
+/* 802F6094 002F1CF4 93 C3 03 0C */ stw r30, 0x30c(r3)
+/* 802F6098 002F1CF8 48 00 00 08 */ b lbl_802F60A0
+lbl_802F609C:
+/* 802F609C 002F1CFC 93 CD AF 5C */ stw r30, lbl_8064021C-_SDA_BASE_(r13)
+lbl_802F60A0:
+/* 802F60A0 002F1D00 7F E3 FB 78 */ mr r3, r31
+/* 802F60A4 002F1D04 4B F7 86 E1 */ bl OSRestoreInterrupts
+/* 802F60A8 002F1D08 7F C3 F3 78 */ mr r3, r30
+/* 802F60AC 002F1D0C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F60B0 002F1D10 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802F60B4 002F1D14 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F60B8 002F1D18 7C 08 03 A6 */ mtlr r0
+/* 802F60BC 002F1D1C 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F60C0 002F1D20 4E 80 00 20 */ blr
+
+.global SOiWaitForDHCPEx
+SOiWaitForDHCPEx:
+/* 802F60C4 002F1D24 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 802F60C8 002F1D28 7C 08 02 A6 */ mflr r0
+/* 802F60CC 002F1D2C 90 01 00 44 */ stw r0, 0x44(r1)
+/* 802F60D0 002F1D30 39 61 00 40 */ addi r11, r1, 0x40
+/* 802F60D4 002F1D34 4B ED 10 41 */ bl _savegpr_22
+/* 802F60D8 002F1D38 2C 03 00 00 */ cmpwi r3, 0
+/* 802F60DC 002F1D3C 7C 76 1B 78 */ mr r22, r3
+/* 802F60E0 002F1D40 3B E0 00 00 */ li r31, 0
+/* 802F60E4 002F1D44 3B A0 00 00 */ li r29, 0
+/* 802F60E8 002F1D48 3B C0 00 00 */ li r30, 0
+/* 802F60EC 002F1D4C 41 82 00 34 */ beq lbl_802F6120
+/* 802F60F0 002F1D50 4B F7 C6 E9 */ bl __OSGetSystemTime
+/* 802F60F4 002F1D54 3C C0 80 00 */ lis r6, 0x800000F8@ha
+/* 802F60F8 002F1D58 3C A0 10 62 */ lis r5, 0x10624DD3@ha
+/* 802F60FC 002F1D5C 80 C6 00 F8 */ lwz r6, 0x800000F8@l(r6)
+/* 802F6100 002F1D60 38 E5 4D D3 */ addi r7, r5, 0x10624DD3@l
+/* 802F6104 002F1D64 38 00 00 00 */ li r0, 0
+/* 802F6108 002F1D68 54 C5 F0 BE */ srwi r5, r6, 2
+/* 802F610C 002F1D6C 7C A7 28 16 */ mulhwu r5, r7, r5
+/* 802F6110 002F1D70 54 A5 D1 BE */ srwi r5, r5, 6
+/* 802F6114 002F1D74 7C B6 29 D6 */ mullw r5, r22, r5
+/* 802F6118 002F1D78 7F A5 20 14 */ addc r29, r5, r4
+/* 802F611C 002F1D7C 7F C0 19 14 */ adde r30, r0, r3
+lbl_802F6120:
+/* 802F6120 002F1D80 38 00 00 00 */ li r0, 0
+/* 802F6124 002F1D84 3B 00 00 0A */ li r24, 0xa
+/* 802F6128 002F1D88 7F 20 C1 D6 */ mullw r25, r0, r24
+/* 802F612C 002F1D8C 3C 60 10 62 */ lis r3, 0x10624DD3@ha
+/* 802F6130 002F1D90 7F BC F3 78 */ or r28, r29, r30
+/* 802F6134 002F1D94 3A C3 4D D3 */ addi r22, r3, 0x10624DD3@l
+/* 802F6138 002F1D98 3B 40 00 04 */ li r26, 4
+/* 802F613C 002F1D9C 3F 60 00 01 */ lis r27, 1
+/* 802F6140 002F1DA0 3E E0 80 00 */ lis r23, 0x800000F8@ha
+lbl_802F6144:
+/* 802F6144 002F1DA4 80 17 00 F8 */ lwz r0, 0x800000F8@l(r23)
+/* 802F6148 002F1DA8 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F614C 002F1DAC 7C 16 00 16 */ mulhwu r0, r22, r0
+/* 802F6150 002F1DB0 54 03 D1 BE */ srwi r3, r0, 6
+/* 802F6154 002F1DB4 7C 03 C0 16 */ mulhwu r0, r3, r24
+/* 802F6158 002F1DB8 1C 83 00 0A */ mulli r4, r3, 0xa
+/* 802F615C 002F1DBC 7C 60 CA 14 */ add r3, r0, r25
+/* 802F6160 002F1DC0 4B F7 C5 A5 */ bl OSSleepTicks
+/* 802F6164 002F1DC4 93 41 00 08 */ stw r26, 8(r1)
+/* 802F6168 002F1DC8 38 9B FF FE */ addi r4, r27, -2
+/* 802F616C 002F1DCC 38 C1 00 0C */ addi r6, r1, 0xc
+/* 802F6170 002F1DD0 38 E1 00 08 */ addi r7, r1, 8
+/* 802F6174 002F1DD4 38 60 00 00 */ li r3, 0
+/* 802F6178 002F1DD8 38 A0 10 03 */ li r5, 0x1003
+/* 802F617C 002F1DDC 48 00 17 DD */ bl SOGetInterfaceOpt
+/* 802F6180 002F1DE0 2C 03 00 00 */ cmpwi r3, 0
+/* 802F6184 002F1DE4 41 82 00 0C */ beq lbl_802F6190
+/* 802F6188 002F1DE8 7C 7F 1B 78 */ mr r31, r3
+/* 802F618C 002F1DEC 48 00 00 54 */ b lbl_802F61E0
+lbl_802F6190:
+/* 802F6190 002F1DF0 40 82 00 18 */ bne lbl_802F61A8
+/* 802F6194 002F1DF4 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 802F6198 002F1DF8 2C 00 00 00 */ cmpwi r0, 0
+/* 802F619C 002F1DFC 41 82 00 0C */ beq lbl_802F61A8
+/* 802F61A0 002F1E00 7C 1F 03 78 */ mr r31, r0
+/* 802F61A4 002F1E04 48 00 00 3C */ b lbl_802F61E0
+lbl_802F61A8:
+/* 802F61A8 002F1E08 48 00 10 A9 */ bl SOGetHostID
+/* 802F61AC 002F1E0C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F61B0 002F1E10 40 82 00 30 */ bne lbl_802F61E0
+/* 802F61B4 002F1E14 2C 1C 00 00 */ cmpwi r28, 0
+/* 802F61B8 002F1E18 41 82 FF 8C */ beq lbl_802F6144
+/* 802F61BC 002F1E1C 4B F7 C6 1D */ bl __OSGetSystemTime
+/* 802F61C0 002F1E20 6C 65 80 00 */ xoris r5, r3, 0x8000
+/* 802F61C4 002F1E24 6F C0 80 00 */ xoris r0, r30, 0x8000
+/* 802F61C8 002F1E28 7C 64 E8 10 */ subfc r3, r4, r29
+/* 802F61CC 002F1E2C 7C A5 01 10 */ subfe r5, r5, r0
+/* 802F61D0 002F1E30 7C A0 01 10 */ subfe r5, r0, r0
+/* 802F61D4 002F1E34 7C A5 00 D1 */ neg. r5, r5
+/* 802F61D8 002F1E38 41 82 FF 6C */ beq lbl_802F6144
+/* 802F61DC 002F1E3C 3B E0 FF B4 */ li r31, -76
+lbl_802F61E0:
+/* 802F61E0 002F1E40 39 61 00 40 */ addi r11, r1, 0x40
+/* 802F61E4 002F1E44 7F E3 FB 78 */ mr r3, r31
+/* 802F61E8 002F1E48 4B ED 0F 79 */ bl _restgpr_22
+/* 802F61EC 002F1E4C 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 802F61F0 002F1E50 7C 08 03 A6 */ mtlr r0
+/* 802F61F4 002F1E54 38 21 00 40 */ addi r1, r1, 0x40
+/* 802F61F8 002F1E58 4E 80 00 20 */ blr
diff --git a/asm/SDK/SO/SOInformation.s b/asm/SDK/SO/SOInformation.s
new file mode 100644
index 0000000..ec83a57
--- /dev/null
+++ b/asm/SDK/SO/SOInformation.s
@@ -0,0 +1,375 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global SOGetHostID
+SOGetHostID:
+/* 802F7250 002F2EB0 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F7254 002F2EB4 7C 08 02 A6 */ mflr r0
+/* 802F7258 002F2EB8 38 60 00 00 */ li r3, 0
+/* 802F725C 002F2EBC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F7260 002F2EC0 38 81 00 08 */ addi r4, r1, 8
+/* 802F7264 002F2EC4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F7268 002F2EC8 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F726C 002F2ECC 3B C0 00 00 */ li r30, 0
+/* 802F7270 002F2ED0 4B FF E9 55 */ bl SOiPrepare
+/* 802F7274 002F2ED4 2C 03 00 00 */ cmpwi r3, 0
+/* 802F7278 002F2ED8 7C 7F 1B 78 */ mr r31, r3
+/* 802F727C 002F2EDC 40 82 00 30 */ bne lbl_802F72AC
+/* 802F7280 002F2EE0 80 61 00 08 */ lwz r3, 8(r1)
+/* 802F7284 002F2EE4 38 80 00 10 */ li r4, 0x10
+/* 802F7288 002F2EE8 38 A0 00 00 */ li r5, 0
+/* 802F728C 002F2EEC 38 C0 00 00 */ li r6, 0
+/* 802F7290 002F2EF0 38 E0 00 00 */ li r7, 0
+/* 802F7294 002F2EF4 39 00 00 00 */ li r8, 0
+/* 802F7298 002F2EF8 4B FA C8 59 */ bl IOS_Ioctl
+/* 802F729C 002F2EFC 7C 7E 1B 78 */ mr r30, r3
+/* 802F72A0 002F2F00 7F E4 FB 78 */ mr r4, r31
+/* 802F72A4 002F2F04 38 60 00 00 */ li r3, 0
+/* 802F72A8 002F2F08 4B FF EA 05 */ bl SOiConclude
+lbl_802F72AC:
+/* 802F72AC 002F2F0C 7F C3 F3 78 */ mr r3, r30
+/* 802F72B0 002F2F10 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F72B4 002F2F14 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F72B8 002F2F18 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F72BC 002F2F1C 7C 08 03 A6 */ mtlr r0
+/* 802F72C0 002F2F20 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F72C4 002F2F24 4E 80 00 20 */ blr
+
+.global SOGetHostByName
+SOGetHostByName:
+/* 802F72C8 002F2F28 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802F72CC 002F2F2C 7C 08 02 A6 */ mflr r0
+/* 802F72D0 002F2F30 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802F72D4 002F2F34 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F72D8 002F2F38 4B EC FE 4D */ bl _savegpr_26
+/* 802F72DC 002F2F3C 7C 7A 1B 78 */ mr r26, r3
+/* 802F72E0 002F2F40 38 81 00 08 */ addi r4, r1, 8
+/* 802F72E4 002F2F44 3B 60 00 00 */ li r27, 0
+/* 802F72E8 002F2F48 38 60 00 00 */ li r3, 0
+/* 802F72EC 002F2F4C 4B FF E8 D9 */ bl SOiPrepare
+/* 802F72F0 002F2F50 2C 03 00 00 */ cmpwi r3, 0
+/* 802F72F4 002F2F54 40 82 00 F8 */ bne lbl_802F73EC
+/* 802F72F8 002F2F58 2C 1A 00 00 */ cmpwi r26, 0
+/* 802F72FC 002F2F5C 40 82 00 0C */ bne lbl_802F7308
+/* 802F7300 002F2F60 3B A0 FF E4 */ li r29, -28
+/* 802F7304 002F2F64 48 00 00 DC */ b lbl_802F73E0
+lbl_802F7308:
+/* 802F7308 002F2F68 7F 43 D3 78 */ mr r3, r26
+/* 802F730C 002F2F6C 4B EC F8 59 */ bl strlen
+/* 802F7310 002F2F70 38 03 00 20 */ addi r0, r3, 0x20
+/* 802F7314 002F2F74 7C 7D 1B 78 */ mr r29, r3
+/* 802F7318 002F2F78 54 1C 00 34 */ rlwinm r28, r0, 0, 0, 0x1a
+/* 802F731C 002F2F7C 38 60 00 0C */ li r3, 0xc
+/* 802F7320 002F2F80 7F 84 E3 78 */ mr r4, r28
+/* 802F7324 002F2F84 4B FF E7 85 */ bl SOiAlloc
+/* 802F7328 002F2F88 7C 7F 1B 78 */ mr r31, r3
+/* 802F732C 002F2F8C 4B FF E7 19 */ bl SOiGetSysWork
+/* 802F7330 002F2F90 2C 1F 00 00 */ cmpwi r31, 0
+/* 802F7334 002F2F94 83 C3 00 10 */ lwz r30, 0x10(r3)
+/* 802F7338 002F2F98 40 82 00 0C */ bne lbl_802F7344
+/* 802F733C 002F2F9C 3B A0 FF CF */ li r29, -49
+/* 802F7340 002F2FA0 48 00 00 A0 */ b lbl_802F73E0
+lbl_802F7344:
+/* 802F7344 002F2FA4 7F E3 FB 78 */ mr r3, r31
+/* 802F7348 002F2FA8 7F 44 D3 78 */ mr r4, r26
+/* 802F734C 002F2FAC 4B ED 6F 85 */ bl strcpy
+/* 802F7350 002F2FB0 80 61 00 08 */ lwz r3, 8(r1)
+/* 802F7354 002F2FB4 7F E5 FB 78 */ mr r5, r31
+/* 802F7358 002F2FB8 7F C7 F3 78 */ mr r7, r30
+/* 802F735C 002F2FBC 38 DD 00 01 */ addi r6, r29, 1
+/* 802F7360 002F2FC0 38 80 00 11 */ li r4, 0x11
+/* 802F7364 002F2FC4 39 00 04 60 */ li r8, 0x460
+/* 802F7368 002F2FC8 4B FA C7 89 */ bl IOS_Ioctl
+/* 802F736C 002F2FCC 2C 03 00 00 */ cmpwi r3, 0
+/* 802F7370 002F2FD0 7C 7D 1B 78 */ mr r29, r3
+/* 802F7374 002F2FD4 41 80 00 5C */ blt lbl_802F73D0
+/* 802F7378 002F2FD8 80 7E 00 00 */ lwz r3, 0(r30)
+/* 802F737C 002F2FDC 38 1E 00 10 */ addi r0, r30, 0x10
+/* 802F7380 002F2FE0 38 9E 03 40 */ addi r4, r30, 0x340
+/* 802F7384 002F2FE4 7C 63 00 50 */ subf r3, r3, r0
+/* 802F7388 002F2FE8 48 00 00 14 */ b lbl_802F739C
+lbl_802F738C:
+/* 802F738C 002F2FEC 80 04 00 00 */ lwz r0, 0(r4)
+/* 802F7390 002F2FF0 7C 00 1A 14 */ add r0, r0, r3
+/* 802F7394 002F2FF4 90 04 00 00 */ stw r0, 0(r4)
+/* 802F7398 002F2FF8 38 84 00 04 */ addi r4, r4, 4
+lbl_802F739C:
+/* 802F739C 002F2FFC 80 04 00 00 */ lwz r0, 0(r4)
+/* 802F73A0 002F3000 2C 00 00 00 */ cmpwi r0, 0
+/* 802F73A4 002F3004 40 82 FF E8 */ bne lbl_802F738C
+/* 802F73A8 002F3008 80 1E 00 04 */ lwz r0, 4(r30)
+/* 802F73AC 002F300C 7F DB F3 78 */ mr r27, r30
+/* 802F73B0 002F3010 7C 00 1A 14 */ add r0, r0, r3
+/* 802F73B4 002F3014 90 1E 00 04 */ stw r0, 4(r30)
+/* 802F73B8 002F3018 80 1E 00 00 */ lwz r0, 0(r30)
+/* 802F73BC 002F301C 7C 00 1A 14 */ add r0, r0, r3
+/* 802F73C0 002F3020 90 1E 00 00 */ stw r0, 0(r30)
+/* 802F73C4 002F3024 80 1E 00 0C */ lwz r0, 0xc(r30)
+/* 802F73C8 002F3028 7C 00 1A 14 */ add r0, r0, r3
+/* 802F73CC 002F302C 90 1E 00 0C */ stw r0, 0xc(r30)
+lbl_802F73D0:
+/* 802F73D0 002F3030 7F E4 FB 78 */ mr r4, r31
+/* 802F73D4 002F3034 7F 85 E3 78 */ mr r5, r28
+/* 802F73D8 002F3038 38 60 00 0C */ li r3, 0xc
+/* 802F73DC 002F303C 4B FF E7 B5 */ bl SOiFree
+lbl_802F73E0:
+/* 802F73E0 002F3040 7F A4 EB 78 */ mr r4, r29
+/* 802F73E4 002F3044 38 60 00 00 */ li r3, 0
+/* 802F73E8 002F3048 4B FF E8 C5 */ bl SOiConclude
+lbl_802F73EC:
+/* 802F73EC 002F304C 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F73F0 002F3050 7F 63 DB 78 */ mr r3, r27
+/* 802F73F4 002F3054 4B EC FD 7D */ bl _restgpr_26
+/* 802F73F8 002F3058 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802F73FC 002F305C 7C 08 03 A6 */ mtlr r0
+/* 802F7400 002F3060 38 21 00 30 */ addi r1, r1, 0x30
+/* 802F7404 002F3064 4E 80 00 20 */ blr
+
+.global SOGetAddrInfo
+SOGetAddrInfo:
+/* 802F7408 002F3068 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 802F740C 002F306C 7C 08 02 A6 */ mflr r0
+/* 802F7410 002F3070 90 01 00 44 */ stw r0, 0x44(r1)
+/* 802F7414 002F3074 39 61 00 40 */ addi r11, r1, 0x40
+/* 802F7418 002F3078 4B EC FC FD */ bl _savegpr_22
+/* 802F741C 002F307C 7C 79 1B 78 */ mr r25, r3
+/* 802F7420 002F3080 7C 9A 23 78 */ mr r26, r4
+/* 802F7424 002F3084 7C BB 2B 78 */ mr r27, r5
+/* 802F7428 002F3088 7C DC 33 78 */ mr r28, r6
+/* 802F742C 002F308C 38 81 00 08 */ addi r4, r1, 8
+/* 802F7430 002F3090 38 60 00 00 */ li r3, 0
+/* 802F7434 002F3094 4B FF E7 91 */ bl SOiPrepare
+/* 802F7438 002F3098 2C 03 00 00 */ cmpwi r3, 0
+/* 802F743C 002F309C 40 82 02 98 */ bne lbl_802F76D4
+/* 802F7440 002F30A0 2C 1A 00 00 */ cmpwi r26, 0
+/* 802F7444 002F30A4 40 82 00 0C */ bne lbl_802F7450
+/* 802F7448 002F30A8 3B A0 00 00 */ li r29, 0
+/* 802F744C 002F30AC 48 00 00 10 */ b lbl_802F745C
+lbl_802F7450:
+/* 802F7450 002F30B0 7F 23 CB 78 */ mr r3, r25
+/* 802F7454 002F30B4 4B EC F7 11 */ bl strlen
+/* 802F7458 002F30B8 3B A3 00 01 */ addi r29, r3, 1
+lbl_802F745C:
+/* 802F745C 002F30BC 2C 19 00 00 */ cmpwi r25, 0
+/* 802F7460 002F30C0 40 82 00 0C */ bne lbl_802F746C
+/* 802F7464 002F30C4 38 60 00 00 */ li r3, 0
+/* 802F7468 002F30C8 48 00 00 10 */ b lbl_802F7478
+lbl_802F746C:
+/* 802F746C 002F30CC 7F 23 CB 78 */ mr r3, r25
+/* 802F7470 002F30D0 4B EC F6 F5 */ bl strlen
+/* 802F7474 002F30D4 38 63 00 01 */ addi r3, r3, 1
+lbl_802F7478:
+/* 802F7478 002F30D8 38 63 00 1F */ addi r3, r3, 0x1f
+/* 802F747C 002F30DC 38 1D 00 1F */ addi r0, r29, 0x1f
+/* 802F7480 002F30E0 54 64 00 34 */ rlwinm r4, r3, 0, 0, 0x1a
+/* 802F7484 002F30E4 54 00 00 34 */ rlwinm r0, r0, 0, 0, 0x1a
+/* 802F7488 002F30E8 38 60 00 0C */ li r3, 0xc
+/* 802F748C 002F30EC 7C 84 02 14 */ add r4, r4, r0
+/* 802F7490 002F30F0 38 04 00 5F */ addi r0, r4, 0x5f
+/* 802F7494 002F30F4 54 1F 00 34 */ rlwinm r31, r0, 0, 0, 0x1a
+/* 802F7498 002F30F8 7F E4 FB 78 */ mr r4, r31
+/* 802F749C 002F30FC 4B FF E6 0D */ bl SOiAlloc
+/* 802F74A0 002F3100 2C 03 00 00 */ cmpwi r3, 0
+/* 802F74A4 002F3104 7C 7D 1B 78 */ mr r29, r3
+/* 802F74A8 002F3108 40 82 00 0C */ bne lbl_802F74B4
+/* 802F74AC 002F310C 3B 20 FF CF */ li r25, -49
+/* 802F74B0 002F3110 48 00 02 18 */ b lbl_802F76C8
+lbl_802F74B4:
+/* 802F74B4 002F3114 38 60 00 0A */ li r3, 0xa
+/* 802F74B8 002F3118 38 80 08 40 */ li r4, 0x840
+/* 802F74BC 002F311C 4B FF E5 ED */ bl SOiAlloc
+/* 802F74C0 002F3120 2C 03 00 00 */ cmpwi r3, 0
+/* 802F74C4 002F3124 7C 7E 1B 78 */ mr r30, r3
+/* 802F74C8 002F3128 40 82 00 1C */ bne lbl_802F74E4
+/* 802F74CC 002F312C 7F A4 EB 78 */ mr r4, r29
+/* 802F74D0 002F3130 7F E5 FB 78 */ mr r5, r31
+/* 802F74D4 002F3134 38 60 00 0C */ li r3, 0xc
+/* 802F74D8 002F3138 4B FF E6 B9 */ bl SOiFree
+/* 802F74DC 002F313C 3B 20 FF CF */ li r25, -49
+/* 802F74E0 002F3140 48 00 01 E8 */ b lbl_802F76C8
+lbl_802F74E4:
+/* 802F74E4 002F3144 2C 19 00 00 */ cmpwi r25, 0
+/* 802F74E8 002F3148 3B 1D 00 20 */ addi r24, r29, 0x20
+/* 802F74EC 002F314C 40 82 00 0C */ bne lbl_802F74F8
+/* 802F74F0 002F3150 38 60 00 00 */ li r3, 0
+/* 802F74F4 002F3154 48 00 00 10 */ b lbl_802F7504
+lbl_802F74F8:
+/* 802F74F8 002F3158 7F 23 CB 78 */ mr r3, r25
+/* 802F74FC 002F315C 4B EC F6 69 */ bl strlen
+/* 802F7500 002F3160 38 63 00 01 */ addi r3, r3, 1
+lbl_802F7504:
+/* 802F7504 002F3164 38 03 00 1F */ addi r0, r3, 0x1f
+/* 802F7508 002F3168 2C 1A 00 00 */ cmpwi r26, 0
+/* 802F750C 002F316C 54 00 00 34 */ rlwinm r0, r0, 0, 0, 0x1a
+/* 802F7510 002F3170 7E F8 02 14 */ add r23, r24, r0
+/* 802F7514 002F3174 40 82 00 0C */ bne lbl_802F7520
+/* 802F7518 002F3178 38 60 00 00 */ li r3, 0
+/* 802F751C 002F317C 48 00 00 10 */ b lbl_802F752C
+lbl_802F7520:
+/* 802F7520 002F3180 7F 23 CB 78 */ mr r3, r25
+/* 802F7524 002F3184 4B EC F6 41 */ bl strlen
+/* 802F7528 002F3188 38 63 00 01 */ addi r3, r3, 1
+lbl_802F752C:
+/* 802F752C 002F318C 38 03 00 1F */ addi r0, r3, 0x1f
+/* 802F7530 002F3190 2C 19 00 00 */ cmpwi r25, 0
+/* 802F7534 002F3194 54 00 00 34 */ rlwinm r0, r0, 0, 0, 0x1a
+/* 802F7538 002F3198 7E D7 02 14 */ add r22, r23, r0
+/* 802F753C 002F319C 41 82 00 10 */ beq lbl_802F754C
+/* 802F7540 002F31A0 7F 03 C3 78 */ mr r3, r24
+/* 802F7544 002F31A4 7F 24 CB 78 */ mr r4, r25
+/* 802F7548 002F31A8 4B ED 6D 89 */ bl strcpy
+lbl_802F754C:
+/* 802F754C 002F31AC 2C 19 00 00 */ cmpwi r25, 0
+/* 802F7550 002F31B0 41 82 00 08 */ beq lbl_802F7558
+/* 802F7554 002F31B4 48 00 00 08 */ b lbl_802F755C
+lbl_802F7558:
+/* 802F7558 002F31B8 3B 00 00 00 */ li r24, 0
+lbl_802F755C:
+/* 802F755C 002F31BC 2C 19 00 00 */ cmpwi r25, 0
+/* 802F7560 002F31C0 93 1D 00 00 */ stw r24, 0(r29)
+/* 802F7564 002F31C4 40 82 00 0C */ bne lbl_802F7570
+/* 802F7568 002F31C8 38 60 00 00 */ li r3, 0
+/* 802F756C 002F31CC 48 00 00 0C */ b lbl_802F7578
+lbl_802F7570:
+/* 802F7570 002F31D0 7F 23 CB 78 */ mr r3, r25
+/* 802F7574 002F31D4 4B EC F5 F1 */ bl strlen
+lbl_802F7578:
+/* 802F7578 002F31D8 2C 1A 00 00 */ cmpwi r26, 0
+/* 802F757C 002F31DC 90 7D 00 04 */ stw r3, 4(r29)
+/* 802F7580 002F31E0 41 82 00 10 */ beq lbl_802F7590
+/* 802F7584 002F31E4 7E E3 BB 78 */ mr r3, r23
+/* 802F7588 002F31E8 7F 44 D3 78 */ mr r4, r26
+/* 802F758C 002F31EC 4B ED 6D 45 */ bl strcpy
+lbl_802F7590:
+/* 802F7590 002F31F0 2C 1A 00 00 */ cmpwi r26, 0
+/* 802F7594 002F31F4 41 82 00 08 */ beq lbl_802F759C
+/* 802F7598 002F31F8 48 00 00 08 */ b lbl_802F75A0
+lbl_802F759C:
+/* 802F759C 002F31FC 3A E0 00 00 */ li r23, 0
+lbl_802F75A0:
+/* 802F75A0 002F3200 2C 1A 00 00 */ cmpwi r26, 0
+/* 802F75A4 002F3204 92 FD 00 08 */ stw r23, 8(r29)
+/* 802F75A8 002F3208 40 82 00 0C */ bne lbl_802F75B4
+/* 802F75AC 002F320C 38 60 00 00 */ li r3, 0
+/* 802F75B0 002F3210 48 00 00 0C */ b lbl_802F75BC
+lbl_802F75B4:
+/* 802F75B4 002F3214 7F 43 D3 78 */ mr r3, r26
+/* 802F75B8 002F3218 4B EC F5 AD */ bl strlen
+lbl_802F75BC:
+/* 802F75BC 002F321C 2C 1B 00 00 */ cmpwi r27, 0
+/* 802F75C0 002F3220 90 7D 00 0C */ stw r3, 0xc(r29)
+/* 802F75C4 002F3224 41 82 00 18 */ beq lbl_802F75DC
+/* 802F75C8 002F3228 7E C3 B3 78 */ mr r3, r22
+/* 802F75CC 002F322C 7F 64 DB 78 */ mr r4, r27
+/* 802F75D0 002F3230 38 A0 00 20 */ li r5, 0x20
+/* 802F75D4 002F3234 4B D0 CA 2D */ bl memcpy
+/* 802F75D8 002F3238 48 00 00 14 */ b lbl_802F75EC
+lbl_802F75DC:
+/* 802F75DC 002F323C 7E C3 B3 78 */ mr r3, r22
+/* 802F75E0 002F3240 38 80 00 00 */ li r4, 0
+/* 802F75E4 002F3244 38 A0 00 20 */ li r5, 0x20
+/* 802F75E8 002F3248 4B D0 CB 1D */ bl memset
+lbl_802F75EC:
+/* 802F75EC 002F324C 80 16 00 04 */ lwz r0, 4(r22)
+/* 802F75F0 002F3250 2C 00 00 00 */ cmpwi r0, 0
+/* 802F75F4 002F3254 40 82 00 0C */ bne lbl_802F7600
+/* 802F75F8 002F3258 38 00 00 02 */ li r0, 2
+/* 802F75FC 002F325C 90 16 00 04 */ stw r0, 4(r22)
+lbl_802F7600:
+/* 802F7600 002F3260 80 16 00 04 */ lwz r0, 4(r22)
+/* 802F7604 002F3264 2C 00 00 17 */ cmpwi r0, 0x17
+/* 802F7608 002F3268 40 82 00 24 */ bne lbl_802F762C
+/* 802F760C 002F326C 38 00 00 00 */ li r0, 0
+/* 802F7610 002F3270 7F C4 F3 78 */ mr r4, r30
+/* 802F7614 002F3274 90 1C 00 00 */ stw r0, 0(r28)
+/* 802F7618 002F3278 3B 20 FF BC */ li r25, -68
+/* 802F761C 002F327C 38 60 00 0A */ li r3, 0xa
+/* 802F7620 002F3280 38 A0 08 40 */ li r5, 0x840
+/* 802F7624 002F3284 4B FF E5 6D */ bl SOiFree
+/* 802F7628 002F3288 48 00 00 90 */ b lbl_802F76B8
+lbl_802F762C:
+/* 802F762C 002F328C 92 DD 00 10 */ stw r22, 0x10(r29)
+/* 802F7630 002F3290 38 60 00 20 */ li r3, 0x20
+/* 802F7634 002F3294 38 00 08 34 */ li r0, 0x834
+/* 802F7638 002F3298 7F A7 EB 78 */ mr r7, r29
+/* 802F763C 002F329C 90 7D 00 14 */ stw r3, 0x14(r29)
+/* 802F7640 002F32A0 38 80 00 18 */ li r4, 0x18
+/* 802F7644 002F32A4 38 A0 00 03 */ li r5, 3
+/* 802F7648 002F32A8 38 C0 00 01 */ li r6, 1
+/* 802F764C 002F32AC 93 DD 00 18 */ stw r30, 0x18(r29)
+/* 802F7650 002F32B0 90 1D 00 1C */ stw r0, 0x1c(r29)
+/* 802F7654 002F32B4 80 61 00 08 */ lwz r3, 8(r1)
+/* 802F7658 002F32B8 4B FA C7 E9 */ bl IOS_Ioctlv
+/* 802F765C 002F32BC 2C 03 00 00 */ cmpwi r3, 0
+/* 802F7660 002F32C0 7C 79 1B 78 */ mr r25, r3
+/* 802F7664 002F32C4 41 80 00 3C */ blt lbl_802F76A0
+/* 802F7668 002F32C8 93 DC 00 00 */ stw r30, 0(r28)
+/* 802F766C 002F32CC 38 7E 04 60 */ addi r3, r30, 0x460
+/* 802F7670 002F32D0 48 00 00 24 */ b lbl_802F7694
+lbl_802F7674:
+/* 802F7674 002F32D4 90 7E 00 18 */ stw r3, 0x18(r30)
+/* 802F7678 002F32D8 80 1E 00 1C */ lwz r0, 0x1c(r30)
+/* 802F767C 002F32DC 2C 00 00 00 */ cmpwi r0, 0
+/* 802F7680 002F32E0 41 82 00 0C */ beq lbl_802F768C
+/* 802F7684 002F32E4 38 1E 00 20 */ addi r0, r30, 0x20
+/* 802F7688 002F32E8 90 1E 00 1C */ stw r0, 0x1c(r30)
+lbl_802F768C:
+/* 802F768C 002F32EC 83 DE 00 1C */ lwz r30, 0x1c(r30)
+/* 802F7690 002F32F0 38 63 00 1C */ addi r3, r3, 0x1c
+lbl_802F7694:
+/* 802F7694 002F32F4 2C 1E 00 00 */ cmpwi r30, 0
+/* 802F7698 002F32F8 40 82 FF DC */ bne lbl_802F7674
+/* 802F769C 002F32FC 48 00 00 1C */ b lbl_802F76B8
+lbl_802F76A0:
+/* 802F76A0 002F3300 38 00 00 00 */ li r0, 0
+/* 802F76A4 002F3304 7F C4 F3 78 */ mr r4, r30
+/* 802F76A8 002F3308 90 1C 00 00 */ stw r0, 0(r28)
+/* 802F76AC 002F330C 38 60 00 0A */ li r3, 0xa
+/* 802F76B0 002F3310 38 A0 08 40 */ li r5, 0x840
+/* 802F76B4 002F3314 4B FF E4 DD */ bl SOiFree
+lbl_802F76B8:
+/* 802F76B8 002F3318 7F A4 EB 78 */ mr r4, r29
+/* 802F76BC 002F331C 7F E5 FB 78 */ mr r5, r31
+/* 802F76C0 002F3320 38 60 00 0C */ li r3, 0xc
+/* 802F76C4 002F3324 4B FF E4 CD */ bl SOiFree
+lbl_802F76C8:
+/* 802F76C8 002F3328 7F 24 CB 78 */ mr r4, r25
+/* 802F76CC 002F332C 38 60 00 00 */ li r3, 0
+/* 802F76D0 002F3330 4B FF E5 DD */ bl SOiConclude
+lbl_802F76D4:
+/* 802F76D4 002F3334 39 61 00 40 */ addi r11, r1, 0x40
+/* 802F76D8 002F3338 4B EC FA 89 */ bl _restgpr_22
+/* 802F76DC 002F333C 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 802F76E0 002F3340 7C 08 03 A6 */ mtlr r0
+/* 802F76E4 002F3344 38 21 00 40 */ addi r1, r1, 0x40
+/* 802F76E8 002F3348 4E 80 00 20 */ blr
+
+.global SOFreeAddrInfo
+SOFreeAddrInfo:
+/* 802F76EC 002F334C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F76F0 002F3350 7C 08 02 A6 */ mflr r0
+/* 802F76F4 002F3354 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F76F8 002F3358 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F76FC 002F335C 93 C1 00 08 */ stw r30, 8(r1)
+/* 802F7700 002F3360 7C 7E 1B 78 */ mr r30, r3
+/* 802F7704 002F3364 4B F7 70 59 */ bl OSDisableInterrupts
+/* 802F7708 002F3368 7C 7F 1B 78 */ mr r31, r3
+/* 802F770C 002F336C 4B FF E3 4D */ bl SOiIsInitialized
+/* 802F7710 002F3370 2C 03 00 01 */ cmpwi r3, 1
+/* 802F7714 002F3374 40 82 00 1C */ bne lbl_802F7730
+/* 802F7718 002F3378 2C 1E 00 00 */ cmpwi r30, 0
+/* 802F771C 002F337C 41 82 00 14 */ beq lbl_802F7730
+/* 802F7720 002F3380 7F C4 F3 78 */ mr r4, r30
+/* 802F7724 002F3384 38 60 00 0A */ li r3, 0xa
+/* 802F7728 002F3388 38 A0 08 40 */ li r5, 0x840
+/* 802F772C 002F338C 4B FF E4 65 */ bl SOiFree
+lbl_802F7730:
+/* 802F7730 002F3390 7F E3 FB 78 */ mr r3, r31
+/* 802F7734 002F3394 4B F7 70 51 */ bl OSRestoreInterrupts
+/* 802F7738 002F3398 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F773C 002F339C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F7740 002F33A0 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802F7744 002F33A4 7C 08 03 A6 */ mtlr r0
+/* 802F7748 002F33A8 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F774C 002F33AC 4E 80 00 20 */ blr
diff --git a/asm/SDK/SO/SOOption.s b/asm/SDK/SO/SOOption.s
new file mode 100644
index 0000000..49add9e
--- /dev/null
+++ b/asm/SDK/SO/SOOption.s
@@ -0,0 +1,293 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global SOGetSockOpt
+SOGetSockOpt:
+/* 802F7750 002F33B0 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802F7754 002F33B4 7C 08 02 A6 */ mflr r0
+/* 802F7758 002F33B8 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802F775C 002F33BC 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F7760 002F33C0 4B EC F9 C5 */ bl _savegpr_26
+/* 802F7764 002F33C4 7C 7A 1B 78 */ mr r26, r3
+/* 802F7768 002F33C8 7C 9B 23 78 */ mr r27, r4
+/* 802F776C 002F33CC 7C BF 2B 78 */ mr r31, r5
+/* 802F7770 002F33D0 7C DC 33 78 */ mr r28, r6
+/* 802F7774 002F33D4 7C FD 3B 78 */ mr r29, r7
+/* 802F7778 002F33D8 38 81 00 08 */ addi r4, r1, 8
+/* 802F777C 002F33DC 38 60 00 00 */ li r3, 0
+/* 802F7780 002F33E0 4B FF E4 45 */ bl SOiPrepare
+/* 802F7784 002F33E4 2C 03 00 00 */ cmpwi r3, 0
+/* 802F7788 002F33E8 40 82 00 B4 */ bne lbl_802F783C
+/* 802F778C 002F33EC 38 60 00 0C */ li r3, 0xc
+/* 802F7790 002F33F0 38 80 00 20 */ li r4, 0x20
+/* 802F7794 002F33F4 4B FF E3 15 */ bl SOiAlloc
+/* 802F7798 002F33F8 2C 03 00 00 */ cmpwi r3, 0
+/* 802F779C 002F33FC 7C 7E 1B 78 */ mr r30, r3
+/* 802F77A0 002F3400 40 82 00 0C */ bne lbl_802F77AC
+/* 802F77A4 002F3404 3B E0 FF CF */ li r31, -49
+/* 802F77A8 002F3408 48 00 00 88 */ b lbl_802F7830
+lbl_802F77AC:
+/* 802F77AC 002F340C 93 43 00 00 */ stw r26, 0(r3)
+/* 802F77B0 002F3410 7F C7 F3 78 */ mr r7, r30
+/* 802F77B4 002F3414 38 80 00 08 */ li r4, 8
+/* 802F77B8 002F3418 38 A0 00 00 */ li r5, 0
+/* 802F77BC 002F341C 93 63 00 04 */ stw r27, 4(r3)
+/* 802F77C0 002F3420 38 C0 00 00 */ li r6, 0
+/* 802F77C4 002F3424 39 00 00 18 */ li r8, 0x18
+/* 802F77C8 002F3428 93 E3 00 08 */ stw r31, 8(r3)
+/* 802F77CC 002F342C 80 61 00 08 */ lwz r3, 8(r1)
+/* 802F77D0 002F3430 4B FA C3 21 */ bl IOS_Ioctl
+/* 802F77D4 002F3434 2C 03 00 00 */ cmpwi r3, 0
+/* 802F77D8 002F3438 7C 7F 1B 78 */ mr r31, r3
+/* 802F77DC 002F343C 41 80 00 44 */ blt lbl_802F7820
+/* 802F77E0 002F3440 2C 1D 00 00 */ cmpwi r29, 0
+/* 802F77E4 002F3444 41 82 00 3C */ beq lbl_802F7820
+/* 802F77E8 002F3448 80 BE 00 0C */ lwz r5, 0xc(r30)
+/* 802F77EC 002F344C 80 1D 00 00 */ lwz r0, 0(r29)
+/* 802F77F0 002F3450 7C 00 28 00 */ cmpw r0, r5
+/* 802F77F4 002F3454 41 80 00 24 */ blt lbl_802F7818
+/* 802F77F8 002F3458 2C 1C 00 00 */ cmpwi r28, 0
+/* 802F77FC 002F345C 41 82 00 10 */ beq lbl_802F780C
+/* 802F7800 002F3460 7F 83 E3 78 */ mr r3, r28
+/* 802F7804 002F3464 38 9E 00 10 */ addi r4, r30, 0x10
+/* 802F7808 002F3468 4B D0 C7 F9 */ bl memcpy
+lbl_802F780C:
+/* 802F780C 002F346C 80 1E 00 0C */ lwz r0, 0xc(r30)
+/* 802F7810 002F3470 90 1D 00 00 */ stw r0, 0(r29)
+/* 802F7814 002F3474 48 00 00 0C */ b lbl_802F7820
+lbl_802F7818:
+/* 802F7818 002F3478 90 BD 00 00 */ stw r5, 0(r29)
+/* 802F781C 002F347C 3B E0 FF E4 */ li r31, -28
+lbl_802F7820:
+/* 802F7820 002F3480 7F C4 F3 78 */ mr r4, r30
+/* 802F7824 002F3484 38 60 00 0C */ li r3, 0xc
+/* 802F7828 002F3488 38 A0 00 20 */ li r5, 0x20
+/* 802F782C 002F348C 4B FF E3 65 */ bl SOiFree
+lbl_802F7830:
+/* 802F7830 002F3490 7F E4 FB 78 */ mr r4, r31
+/* 802F7834 002F3494 38 60 00 00 */ li r3, 0
+/* 802F7838 002F3498 4B FF E4 75 */ bl SOiConclude
+lbl_802F783C:
+/* 802F783C 002F349C 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F7840 002F34A0 4B EC F9 31 */ bl _restgpr_26
+/* 802F7844 002F34A4 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802F7848 002F34A8 7C 08 03 A6 */ mtlr r0
+/* 802F784C 002F34AC 38 21 00 30 */ addi r1, r1, 0x30
+/* 802F7850 002F34B0 4E 80 00 20 */ blr
+
+.global SOSetSockOpt
+SOSetSockOpt:
+/* 802F7854 002F34B4 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802F7858 002F34B8 7C 08 02 A6 */ mflr r0
+/* 802F785C 002F34BC 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802F7860 002F34C0 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F7864 002F34C4 4B EC F8 C1 */ bl _savegpr_26
+/* 802F7868 002F34C8 7C 7A 1B 78 */ mr r26, r3
+/* 802F786C 002F34CC 7C 9B 23 78 */ mr r27, r4
+/* 802F7870 002F34D0 7C BC 2B 78 */ mr r28, r5
+/* 802F7874 002F34D4 7C DD 33 78 */ mr r29, r6
+/* 802F7878 002F34D8 7C FF 3B 78 */ mr r31, r7
+/* 802F787C 002F34DC 38 81 00 08 */ addi r4, r1, 8
+/* 802F7880 002F34E0 38 60 00 00 */ li r3, 0
+/* 802F7884 002F34E4 4B FF E3 41 */ bl SOiPrepare
+/* 802F7888 002F34E8 2C 03 00 00 */ cmpwi r3, 0
+/* 802F788C 002F34EC 40 82 00 B4 */ bne lbl_802F7940
+/* 802F7890 002F34F0 2C 1F 00 00 */ cmpwi r31, 0
+/* 802F7894 002F34F4 41 80 00 0C */ blt lbl_802F78A0
+/* 802F7898 002F34F8 2C 1F 00 14 */ cmpwi r31, 0x14
+/* 802F789C 002F34FC 40 81 00 0C */ ble lbl_802F78A8
+lbl_802F78A0:
+/* 802F78A0 002F3500 3B E0 FF E4 */ li r31, -28
+/* 802F78A4 002F3504 48 00 00 90 */ b lbl_802F7934
+lbl_802F78A8:
+/* 802F78A8 002F3508 38 60 00 0C */ li r3, 0xc
+/* 802F78AC 002F350C 38 80 00 40 */ li r4, 0x40
+/* 802F78B0 002F3510 4B FF E1 F9 */ bl SOiAlloc
+/* 802F78B4 002F3514 2C 03 00 00 */ cmpwi r3, 0
+/* 802F78B8 002F3518 7C 7E 1B 78 */ mr r30, r3
+/* 802F78BC 002F351C 40 82 00 0C */ bne lbl_802F78C8
+/* 802F78C0 002F3520 3B E0 FF CF */ li r31, -49
+/* 802F78C4 002F3524 48 00 00 70 */ b lbl_802F7934
+lbl_802F78C8:
+/* 802F78C8 002F3528 93 43 00 00 */ stw r26, 0(r3)
+/* 802F78CC 002F352C 2C 1D 00 00 */ cmpwi r29, 0
+/* 802F78D0 002F3530 93 63 00 04 */ stw r27, 4(r3)
+/* 802F78D4 002F3534 93 83 00 08 */ stw r28, 8(r3)
+/* 802F78D8 002F3538 93 E3 00 0C */ stw r31, 0xc(r3)
+/* 802F78DC 002F353C 41 82 00 18 */ beq lbl_802F78F4
+/* 802F78E0 002F3540 7F A4 EB 78 */ mr r4, r29
+/* 802F78E4 002F3544 7F E5 FB 78 */ mr r5, r31
+/* 802F78E8 002F3548 38 63 00 10 */ addi r3, r3, 0x10
+/* 802F78EC 002F354C 4B D0 C7 15 */ bl memcpy
+/* 802F78F0 002F3550 48 00 00 14 */ b lbl_802F7904
+lbl_802F78F4:
+/* 802F78F4 002F3554 7F E5 FB 78 */ mr r5, r31
+/* 802F78F8 002F3558 38 80 00 00 */ li r4, 0
+/* 802F78FC 002F355C 38 63 00 10 */ addi r3, r3, 0x10
+/* 802F7900 002F3560 4B D0 C8 05 */ bl memset
+lbl_802F7904:
+/* 802F7904 002F3564 80 61 00 08 */ lwz r3, 8(r1)
+/* 802F7908 002F3568 7F C5 F3 78 */ mr r5, r30
+/* 802F790C 002F356C 38 80 00 09 */ li r4, 9
+/* 802F7910 002F3570 38 C0 00 24 */ li r6, 0x24
+/* 802F7914 002F3574 38 E0 00 00 */ li r7, 0
+/* 802F7918 002F3578 39 00 00 00 */ li r8, 0
+/* 802F791C 002F357C 4B FA C1 D5 */ bl IOS_Ioctl
+/* 802F7920 002F3580 7C 7F 1B 78 */ mr r31, r3
+/* 802F7924 002F3584 7F C4 F3 78 */ mr r4, r30
+/* 802F7928 002F3588 38 60 00 0C */ li r3, 0xc
+/* 802F792C 002F358C 38 A0 00 40 */ li r5, 0x40
+/* 802F7930 002F3590 4B FF E2 61 */ bl SOiFree
+lbl_802F7934:
+/* 802F7934 002F3594 7F E4 FB 78 */ mr r4, r31
+/* 802F7938 002F3598 38 60 00 00 */ li r3, 0
+/* 802F793C 002F359C 4B FF E3 71 */ bl SOiConclude
+lbl_802F7940:
+/* 802F7940 002F35A0 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F7944 002F35A4 4B EC F8 2D */ bl _restgpr_26
+/* 802F7948 002F35A8 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802F794C 002F35AC 7C 08 03 A6 */ mtlr r0
+/* 802F7950 002F35B0 38 21 00 30 */ addi r1, r1, 0x30
+/* 802F7954 002F35B4 4E 80 00 20 */ blr
+
+.global SOGetInterfaceOpt
+SOGetInterfaceOpt:
+/* 802F7958 002F35B8 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802F795C 002F35BC 7C 08 02 A6 */ mflr r0
+/* 802F7960 002F35C0 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802F7964 002F35C4 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F7968 002F35C8 4B EC F7 B9 */ bl _savegpr_25
+/* 802F796C 002F35CC 7C 9A 23 78 */ mr r26, r4
+/* 802F7970 002F35D0 7C B9 2B 78 */ mr r25, r5
+/* 802F7974 002F35D4 7C DE 33 78 */ mr r30, r6
+/* 802F7978 002F35D8 7C FF 3B 78 */ mr r31, r7
+/* 802F797C 002F35DC 38 81 00 0C */ addi r4, r1, 0xc
+/* 802F7980 002F35E0 38 A1 00 08 */ addi r5, r1, 8
+/* 802F7984 002F35E4 38 60 00 00 */ li r3, 0
+/* 802F7988 002F35E8 4B FF E3 81 */ bl SOiPrepareTempRm
+/* 802F798C 002F35EC 2C 03 00 00 */ cmpwi r3, 0
+/* 802F7990 002F35F0 40 82 01 8C */ bne lbl_802F7B1C
+/* 802F7994 002F35F4 38 19 EF FF */ addi r0, r25, -4097
+/* 802F7998 002F35F8 28 00 00 01 */ cmplwi r0, 1
+/* 802F799C 002F35FC 41 81 00 0C */ bgt lbl_802F79A8
+/* 802F79A0 002F3600 3B 80 FF E4 */ li r28, -28
+/* 802F79A4 002F3604 48 00 01 68 */ b lbl_802F7B0C
+lbl_802F79A8:
+/* 802F79A8 002F3608 2C 1F 00 00 */ cmpwi r31, 0
+/* 802F79AC 002F360C 38 60 00 00 */ li r3, 0
+/* 802F79B0 002F3610 41 82 00 10 */ beq lbl_802F79C0
+/* 802F79B4 002F3614 80 1F 00 00 */ lwz r0, 0(r31)
+/* 802F79B8 002F3618 2C 00 00 00 */ cmpwi r0, 0
+/* 802F79BC 002F361C 40 80 00 08 */ bge lbl_802F79C4
+lbl_802F79C0:
+/* 802F79C0 002F3620 38 60 00 01 */ li r3, 1
+lbl_802F79C4:
+/* 802F79C4 002F3624 2C 03 00 00 */ cmpwi r3, 0
+/* 802F79C8 002F3628 41 82 00 0C */ beq lbl_802F79D4
+/* 802F79CC 002F362C 38 60 00 00 */ li r3, 0
+/* 802F79D0 002F3630 48 00 00 08 */ b lbl_802F79D8
+lbl_802F79D4:
+/* 802F79D4 002F3634 80 7F 00 00 */ lwz r3, 0(r31)
+lbl_802F79D8:
+/* 802F79D8 002F3638 38 03 00 7F */ addi r0, r3, 0x7f
+/* 802F79DC 002F363C 38 60 00 0C */ li r3, 0xc
+/* 802F79E0 002F3640 54 1D 00 34 */ rlwinm r29, r0, 0, 0, 0x1a
+/* 802F79E4 002F3644 7F A4 EB 78 */ mr r4, r29
+/* 802F79E8 002F3648 4B FF E0 C1 */ bl SOiAlloc
+/* 802F79EC 002F364C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F79F0 002F3650 7C 7B 1B 78 */ mr r27, r3
+/* 802F79F4 002F3654 40 82 00 0C */ bne lbl_802F7A00
+/* 802F79F8 002F3658 3B 80 FF CF */ li r28, -49
+/* 802F79FC 002F365C 48 00 01 10 */ b lbl_802F7B0C
+lbl_802F7A00:
+/* 802F7A00 002F3660 93 43 00 20 */ stw r26, 0x20(r3)
+/* 802F7A04 002F3664 38 A3 00 20 */ addi r5, r3, 0x20
+/* 802F7A08 002F3668 2C 1F 00 00 */ cmpwi r31, 0
+/* 802F7A0C 002F366C 38 80 00 00 */ li r4, 0
+/* 802F7A10 002F3670 3B 45 00 20 */ addi r26, r5, 0x20
+/* 802F7A14 002F3674 93 23 00 24 */ stw r25, 0x24(r3)
+/* 802F7A18 002F3678 3B 3A 00 20 */ addi r25, r26, 0x20
+/* 802F7A1C 002F367C 41 82 00 10 */ beq lbl_802F7A2C
+/* 802F7A20 002F3680 80 1F 00 00 */ lwz r0, 0(r31)
+/* 802F7A24 002F3684 2C 00 00 00 */ cmpwi r0, 0
+/* 802F7A28 002F3688 40 80 00 08 */ bge lbl_802F7A30
+lbl_802F7A2C:
+/* 802F7A2C 002F368C 38 80 00 01 */ li r4, 1
+lbl_802F7A30:
+/* 802F7A30 002F3690 2C 04 00 00 */ cmpwi r4, 0
+/* 802F7A34 002F3694 41 82 00 0C */ beq lbl_802F7A40
+/* 802F7A38 002F3698 38 00 00 00 */ li r0, 0
+/* 802F7A3C 002F369C 48 00 00 08 */ b lbl_802F7A44
+lbl_802F7A40:
+/* 802F7A40 002F36A0 80 1F 00 00 */ lwz r0, 0(r31)
+lbl_802F7A44:
+/* 802F7A44 002F36A4 90 1A 00 00 */ stw r0, 0(r26)
+/* 802F7A48 002F36A8 38 00 00 08 */ li r0, 8
+/* 802F7A4C 002F36AC 2C 1F 00 00 */ cmpwi r31, 0
+/* 802F7A50 002F36B0 38 80 00 00 */ li r4, 0
+/* 802F7A54 002F36B4 90 A3 00 00 */ stw r5, 0(r3)
+/* 802F7A58 002F36B8 90 03 00 04 */ stw r0, 4(r3)
+/* 802F7A5C 002F36BC 93 23 00 08 */ stw r25, 8(r3)
+/* 802F7A60 002F36C0 41 82 00 10 */ beq lbl_802F7A70
+/* 802F7A64 002F36C4 80 1F 00 00 */ lwz r0, 0(r31)
+/* 802F7A68 002F36C8 2C 00 00 00 */ cmpwi r0, 0
+/* 802F7A6C 002F36CC 40 80 00 08 */ bge lbl_802F7A74
+lbl_802F7A70:
+/* 802F7A70 002F36D0 38 80 00 01 */ li r4, 1
+lbl_802F7A74:
+/* 802F7A74 002F36D4 2C 04 00 00 */ cmpwi r4, 0
+/* 802F7A78 002F36D8 41 82 00 0C */ beq lbl_802F7A84
+/* 802F7A7C 002F36DC 38 00 00 00 */ li r0, 0
+/* 802F7A80 002F36E0 48 00 00 08 */ b lbl_802F7A88
+lbl_802F7A84:
+/* 802F7A84 002F36E4 80 1F 00 00 */ lwz r0, 0(r31)
+lbl_802F7A88:
+/* 802F7A88 002F36E8 90 03 00 0C */ stw r0, 0xc(r3)
+/* 802F7A8C 002F36EC 38 00 00 04 */ li r0, 4
+/* 802F7A90 002F36F0 7F 67 DB 78 */ mr r7, r27
+/* 802F7A94 002F36F4 38 80 00 1C */ li r4, 0x1c
+/* 802F7A98 002F36F8 93 43 00 10 */ stw r26, 0x10(r3)
+/* 802F7A9C 002F36FC 38 A0 00 01 */ li r5, 1
+/* 802F7AA0 002F3700 38 C0 00 02 */ li r6, 2
+/* 802F7AA4 002F3704 90 03 00 14 */ stw r0, 0x14(r3)
+/* 802F7AA8 002F3708 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 802F7AAC 002F370C 4B FA C3 95 */ bl IOS_Ioctlv
+/* 802F7AB0 002F3710 2C 03 00 00 */ cmpwi r3, 0
+/* 802F7AB4 002F3714 7C 7C 1B 78 */ mr r28, r3
+/* 802F7AB8 002F3718 41 80 00 44 */ blt lbl_802F7AFC
+/* 802F7ABC 002F371C 2C 1F 00 00 */ cmpwi r31, 0
+/* 802F7AC0 002F3720 41 82 00 3C */ beq lbl_802F7AFC
+/* 802F7AC4 002F3724 80 BA 00 00 */ lwz r5, 0(r26)
+/* 802F7AC8 002F3728 80 1F 00 00 */ lwz r0, 0(r31)
+/* 802F7ACC 002F372C 7C 00 28 00 */ cmpw r0, r5
+/* 802F7AD0 002F3730 41 80 00 24 */ blt lbl_802F7AF4
+/* 802F7AD4 002F3734 2C 1E 00 00 */ cmpwi r30, 0
+/* 802F7AD8 002F3738 41 82 00 10 */ beq lbl_802F7AE8
+/* 802F7ADC 002F373C 7F C3 F3 78 */ mr r3, r30
+/* 802F7AE0 002F3740 7F 24 CB 78 */ mr r4, r25
+/* 802F7AE4 002F3744 4B D0 C5 1D */ bl memcpy
+lbl_802F7AE8:
+/* 802F7AE8 002F3748 80 1A 00 00 */ lwz r0, 0(r26)
+/* 802F7AEC 002F374C 90 1F 00 00 */ stw r0, 0(r31)
+/* 802F7AF0 002F3750 48 00 00 0C */ b lbl_802F7AFC
+lbl_802F7AF4:
+/* 802F7AF4 002F3754 90 BF 00 00 */ stw r5, 0(r31)
+/* 802F7AF8 002F3758 3B 80 FF E4 */ li r28, -28
+lbl_802F7AFC:
+/* 802F7AFC 002F375C 7F 64 DB 78 */ mr r4, r27
+/* 802F7B00 002F3760 7F A5 EB 78 */ mr r5, r29
+/* 802F7B04 002F3764 38 60 00 0C */ li r3, 0xc
+/* 802F7B08 002F3768 4B FF E0 89 */ bl SOiFree
+lbl_802F7B0C:
+/* 802F7B0C 002F376C 80 A1 00 08 */ lwz r5, 8(r1)
+/* 802F7B10 002F3770 7F 84 E3 78 */ mr r4, r28
+/* 802F7B14 002F3774 38 60 00 00 */ li r3, 0
+/* 802F7B18 002F3778 4B FF E4 C9 */ bl SOiConcludeTempRm
+lbl_802F7B1C:
+/* 802F7B1C 002F377C 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F7B20 002F3780 4B EC F6 4D */ bl _restgpr_25
+/* 802F7B24 002F3784 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802F7B28 002F3788 7C 08 03 A6 */ mtlr r0
+/* 802F7B2C 002F378C 38 21 00 30 */ addi r1, r1, 0x30
+/* 802F7B30 002F3790 4E 80 00 20 */ blr