diff options
Diffstat (limited to 'asm/SDK')
-rw-r--r-- | asm/SDK/NCD/ncdsystem.s | 838 | ||||
-rw-r--r-- | asm/SDK/NTR/crc.s | 254 | ||||
-rw-r--r-- | asm/SDK/NTR/math.s | 28 | ||||
-rw-r--r-- | asm/SDK/NTR/wdp_common.s | 421 | ||||
-rw-r--r-- | asm/SDK/NTR/wdp_parent.s | 1539 | ||||
-rw-r--r-- | asm/SDK/SO/SOBasic.s | 1209 | ||||
-rw-r--r-- | asm/SDK/SO/SOCommon.s | 1219 | ||||
-rw-r--r-- | asm/SDK/SO/SOInformation.s | 375 | ||||
-rw-r--r-- | asm/SDK/SO/SOOption.s | 293 | ||||
-rw-r--r-- | asm/SDK/WD/wd_init.s | 99 | ||||
-rw-r--r-- | asm/SDK/WD/wd_misc.s | 81 | ||||
-rw-r--r-- | asm/SDK/WD/wd_receive.s | 98 | ||||
-rw-r--r-- | asm/SDK/WD/wd_request.s | 367 |
13 files changed, 6821 insertions, 0 deletions
diff --git a/asm/SDK/NCD/ncdsystem.s b/asm/SDK/NCD/ncdsystem.s new file mode 100644 index 0000000..f97174b --- /dev/null +++ b/asm/SDK/NCD/ncdsystem.s @@ -0,0 +1,838 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global NCDSetNwc24Permission
+NCDSetNwc24Permission:
+/* 802ED204 002E8E64 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802ED208 002E8E68 7C 08 02 A6 */ mflr r0
+/* 802ED20C 002E8E6C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802ED210 002E8E70 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802ED214 002E8E74 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802ED218 002E8E78 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802ED21C 002E8E7C 7C 7D 1B 78 */ mr r29, r3
+/* 802ED220 002E8E80 4B F8 40 D9 */ bl OSGetCurrentThread
+/* 802ED224 002E8E84 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED228 002E8E88 40 82 00 0C */ bne lbl_802ED234
+/* 802ED22C 002E8E8C 38 60 FF FB */ li r3, -5
+/* 802ED230 002E8E90 48 00 00 88 */ b lbl_802ED2B8
+lbl_802ED234:
+/* 802ED234 002E8E94 48 00 0A 39 */ bl LockRight
+/* 802ED238 002E8E98 48 01 6B 59 */ bl func_80303D90
+/* 802ED23C 002E8E9C 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED240 002E8EA0 40 82 00 48 */ bne lbl_802ED288
+/* 802ED244 002E8EA4 3F E0 80 44 */ lis r31, lbl_80445AF0@ha
+/* 802ED248 002E8EA8 38 80 00 00 */ li r4, 0
+/* 802ED24C 002E8EAC 38 7F 5A F0 */ addi r3, r31, lbl_80445AF0@l
+/* 802ED250 002E8EB0 38 A0 00 03 */ li r5, 3
+/* 802ED254 002E8EB4 48 00 08 85 */ bl ExecConfigCommand
+/* 802ED258 002E8EB8 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED25C 002E8EBC 7C 7E 1B 78 */ mr r30, r3
+/* 802ED260 002E8EC0 40 82 00 20 */ bne lbl_802ED280
+/* 802ED264 002E8EC4 80 CD AF 34 */ lwz r6, lbl_806401F4-_SDA_BASE_(r13)
+/* 802ED268 002E8EC8 38 7F 5A F0 */ addi r3, r31, 0x5af0
+/* 802ED26C 002E8ECC 38 80 00 00 */ li r4, 0
+/* 802ED270 002E8ED0 38 A0 00 04 */ li r5, 4
+/* 802ED274 002E8ED4 9B A6 00 05 */ stb r29, 5(r6)
+/* 802ED278 002E8ED8 48 00 08 61 */ bl ExecConfigCommand
+/* 802ED27C 002E8EDC 7C 7E 1B 78 */ mr r30, r3
+lbl_802ED280:
+/* 802ED280 002E8EE0 48 01 6B 21 */ bl func_80303DA0
+/* 802ED284 002E8EE4 48 00 00 24 */ b lbl_802ED2A8
+lbl_802ED288:
+/* 802ED288 002E8EE8 2C 03 FF EA */ cmpwi r3, -22
+/* 802ED28C 002E8EEC 40 82 00 0C */ bne lbl_802ED298
+/* 802ED290 002E8EF0 3B C0 FF FC */ li r30, -4
+/* 802ED294 002E8EF4 48 00 00 14 */ b lbl_802ED2A8
+lbl_802ED298:
+/* 802ED298 002E8EF8 2C 03 FF E3 */ cmpwi r3, -29
+/* 802ED29C 002E8EFC 3B C0 FF FE */ li r30, -2
+/* 802ED2A0 002E8F00 40 82 00 08 */ bne lbl_802ED2A8
+/* 802ED2A4 002E8F04 3B C0 FF F8 */ li r30, -8
+lbl_802ED2A8:
+/* 802ED2A8 002E8F08 3C 60 80 58 */ lis r3, lbl_80579060@ha
+/* 802ED2AC 002E8F0C 38 63 90 60 */ addi r3, r3, lbl_80579060@l
+/* 802ED2B0 002E8F10 4B F8 27 75 */ bl OSUnlockMutex
+/* 802ED2B4 002E8F14 7F C3 F3 78 */ mr r3, r30
+lbl_802ED2B8:
+/* 802ED2B8 002E8F18 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802ED2BC 002E8F1C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802ED2C0 002E8F20 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802ED2C4 002E8F24 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802ED2C8 002E8F28 7C 08 03 A6 */ mtlr r0
+/* 802ED2CC 002E8F2C 38 21 00 20 */ addi r1, r1, 0x20
+/* 802ED2D0 002E8F30 4E 80 00 20 */ blr
+
+.global NCDGetCurrentIfConfig
+NCDGetCurrentIfConfig:
+/* 802ED2D4 002E8F34 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802ED2D8 002E8F38 7C 08 02 A6 */ mflr r0
+/* 802ED2DC 002E8F3C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802ED2E0 002E8F40 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802ED2E4 002E8F44 3B E0 00 00 */ li r31, 0
+/* 802ED2E8 002E8F48 7C 03 F8 40 */ cmplw r3, r31
+/* 802ED2EC 002E8F4C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802ED2F0 002E8F50 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802ED2F4 002E8F54 7C 7D 1B 78 */ mr r29, r3
+/* 802ED2F8 002E8F58 40 82 00 0C */ bne lbl_802ED304
+/* 802ED2FC 002E8F5C 38 60 FF FD */ li r3, -3
+/* 802ED300 002E8F60 48 00 00 B0 */ b lbl_802ED3B0
+lbl_802ED304:
+/* 802ED304 002E8F64 48 00 09 69 */ bl LockRight
+/* 802ED308 002E8F68 3C 60 80 44 */ lis r3, lbl_80445B08@ha
+/* 802ED30C 002E8F6C 38 80 00 00 */ li r4, 0
+/* 802ED310 002E8F70 38 63 5B 08 */ addi r3, r3, lbl_80445B08@l
+/* 802ED314 002E8F74 38 A0 00 03 */ li r5, 3
+/* 802ED318 002E8F78 48 00 07 C1 */ bl ExecConfigCommand
+/* 802ED31C 002E8F7C 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED320 002E8F80 7C 7F 1B 78 */ mr r31, r3
+/* 802ED324 002E8F84 40 82 00 7C */ bne lbl_802ED3A0
+/* 802ED328 002E8F88 3C 60 80 58 */ lis r3, lbl_80579080@ha
+/* 802ED32C 002E8F8C 83 CD AF 34 */ lwz r30, lbl_806401F4-_SDA_BASE_(r13)
+/* 802ED330 002E8F90 38 63 90 80 */ addi r3, r3, lbl_80579080@l
+/* 802ED334 002E8F94 80 03 00 04 */ lwz r0, 4(r3)
+/* 802ED338 002E8F98 2C 00 00 00 */ cmpwi r0, 0
+/* 802ED33C 002E8F9C 41 80 00 0C */ blt lbl_802ED348
+/* 802ED340 002E8FA0 2C 00 00 03 */ cmpwi r0, 3
+/* 802ED344 002E8FA4 41 80 00 0C */ blt lbl_802ED350
+lbl_802ED348:
+/* 802ED348 002E8FA8 3B E0 FF F9 */ li r31, -7
+/* 802ED34C 002E8FAC 48 00 00 54 */ b lbl_802ED3A0
+lbl_802ED350:
+/* 802ED350 002E8FB0 1C 00 09 1C */ mulli r0, r0, 0x91c
+/* 802ED354 002E8FB4 7C 9E 02 14 */ add r4, r30, r0
+/* 802ED358 002E8FB8 88 04 00 08 */ lbz r0, 8(r4)
+/* 802ED35C 002E8FBC 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 802ED360 002E8FC0 41 82 00 20 */ beq lbl_802ED380
+/* 802ED364 002E8FC4 38 00 00 02 */ li r0, 2
+/* 802ED368 002E8FC8 38 7D 00 02 */ addi r3, r29, 2
+/* 802ED36C 002E8FCC 98 1D 00 00 */ stb r0, 0(r29)
+/* 802ED370 002E8FD0 38 84 07 C8 */ addi r4, r4, 0x7c8
+/* 802ED374 002E8FD4 38 A0 00 04 */ li r5, 4
+/* 802ED378 002E8FD8 4B D1 6C 89 */ bl memcpy
+/* 802ED37C 002E8FDC 48 00 00 1C */ b lbl_802ED398
+lbl_802ED380:
+/* 802ED380 002E8FE0 38 00 00 01 */ li r0, 1
+/* 802ED384 002E8FE4 38 7D 00 02 */ addi r3, r29, 2
+/* 802ED388 002E8FE8 98 1D 00 00 */ stb r0, 0(r29)
+/* 802ED38C 002E8FEC 38 84 07 C8 */ addi r4, r4, 0x7c8
+/* 802ED390 002E8FF0 38 A0 01 5C */ li r5, 0x15c
+/* 802ED394 002E8FF4 4B D1 6C 6D */ bl memcpy
+lbl_802ED398:
+/* 802ED398 002E8FF8 88 1E 00 06 */ lbz r0, 6(r30)
+/* 802ED39C 002E8FFC 98 1D 00 01 */ stb r0, 1(r29)
+lbl_802ED3A0:
+/* 802ED3A0 002E9000 3C 60 80 58 */ lis r3, lbl_80579060@ha
+/* 802ED3A4 002E9004 38 63 90 60 */ addi r3, r3, lbl_80579060@l
+/* 802ED3A8 002E9008 4B F8 26 7D */ bl OSUnlockMutex
+/* 802ED3AC 002E900C 7F E3 FB 78 */ mr r3, r31
+lbl_802ED3B0:
+/* 802ED3B0 002E9010 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802ED3B4 002E9014 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802ED3B8 002E9018 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802ED3BC 002E901C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802ED3C0 002E9020 7C 08 03 A6 */ mtlr r0
+/* 802ED3C4 002E9024 38 21 00 20 */ addi r1, r1, 0x20
+/* 802ED3C8 002E9028 4E 80 00 20 */ blr
+
+.global NCDGetCurrentIpConfig
+NCDGetCurrentIpConfig:
+/* 802ED3CC 002E902C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802ED3D0 002E9030 7C 08 02 A6 */ mflr r0
+/* 802ED3D4 002E9034 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802ED3D8 002E9038 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802ED3DC 002E903C 7C 7F 1B 78 */ mr r31, r3
+/* 802ED3E0 002E9040 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802ED3E4 002E9044 3B C0 00 00 */ li r30, 0
+/* 802ED3E8 002E9048 7C 03 F0 40 */ cmplw r3, r30
+/* 802ED3EC 002E904C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802ED3F0 002E9050 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802ED3F4 002E9054 40 82 00 0C */ bne lbl_802ED400
+/* 802ED3F8 002E9058 38 60 FF FD */ li r3, -3
+/* 802ED3FC 002E905C 48 00 01 08 */ b lbl_802ED504
+lbl_802ED400:
+/* 802ED400 002E9060 48 00 08 6D */ bl LockRight
+/* 802ED404 002E9064 3C 60 80 44 */ lis r3, lbl_80445B20@ha
+/* 802ED408 002E9068 38 80 00 00 */ li r4, 0
+/* 802ED40C 002E906C 38 63 5B 20 */ addi r3, r3, lbl_80445B20@l
+/* 802ED410 002E9070 38 A0 00 03 */ li r5, 3
+/* 802ED414 002E9074 48 00 06 C5 */ bl ExecConfigCommand
+/* 802ED418 002E9078 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED41C 002E907C 7C 7E 1B 78 */ mr r30, r3
+/* 802ED420 002E9080 40 82 00 D4 */ bne lbl_802ED4F4
+/* 802ED424 002E9084 3C 60 80 58 */ lis r3, lbl_80579080@ha
+/* 802ED428 002E9088 83 AD AF 34 */ lwz r29, lbl_806401F4-_SDA_BASE_(r13)
+/* 802ED42C 002E908C 38 63 90 80 */ addi r3, r3, lbl_80579080@l
+/* 802ED430 002E9090 83 83 00 04 */ lwz r28, 4(r3)
+/* 802ED434 002E9094 2C 1C 00 00 */ cmpwi r28, 0
+/* 802ED438 002E9098 41 80 00 0C */ blt lbl_802ED444
+/* 802ED43C 002E909C 2C 1C 00 03 */ cmpwi r28, 3
+/* 802ED440 002E90A0 41 80 00 0C */ blt lbl_802ED44C
+lbl_802ED444:
+/* 802ED444 002E90A4 3B C0 FF F9 */ li r30, -7
+/* 802ED448 002E90A8 48 00 00 AC */ b lbl_802ED4F4
+lbl_802ED44C:
+/* 802ED44C 002E90AC 1C 1C 09 1C */ mulli r0, r28, 0x91c
+/* 802ED450 002E90B0 38 7F 00 1C */ addi r3, r31, 0x1c
+/* 802ED454 002E90B4 38 A0 00 0C */ li r5, 0xc
+/* 802ED458 002E90B8 7C 9D 02 14 */ add r4, r29, r0
+/* 802ED45C 002E90BC 38 84 00 20 */ addi r4, r4, 0x20
+/* 802ED460 002E90C0 4B D1 6B A1 */ bl memcpy
+/* 802ED464 002E90C4 1C 1C 09 1C */ mulli r0, r28, 0x91c
+/* 802ED468 002E90C8 7C 9D 02 14 */ add r4, r29, r0
+/* 802ED46C 002E90CC 88 04 00 08 */ lbz r0, 8(r4)
+/* 802ED470 002E90D0 54 00 07 7D */ rlwinm. r0, r0, 0, 0x1d, 0x1e
+/* 802ED474 002E90D4 41 82 00 20 */ beq lbl_802ED494
+/* 802ED478 002E90D8 38 00 00 01 */ li r0, 1
+/* 802ED47C 002E90DC 38 7F 00 08 */ addi r3, r31, 8
+/* 802ED480 002E90E0 90 1F 00 00 */ stw r0, 0(r31)
+/* 802ED484 002E90E4 38 84 00 0C */ addi r4, r4, 0xc
+/* 802ED488 002E90E8 38 A0 00 14 */ li r5, 0x14
+/* 802ED48C 002E90EC 4B D1 6B 75 */ bl memcpy
+/* 802ED490 002E90F0 48 00 00 1C */ b lbl_802ED4AC
+lbl_802ED494:
+/* 802ED494 002E90F4 38 00 00 00 */ li r0, 0
+/* 802ED498 002E90F8 38 7F 00 08 */ addi r3, r31, 8
+/* 802ED49C 002E90FC 90 1F 00 00 */ stw r0, 0(r31)
+/* 802ED4A0 002E9100 38 84 00 0C */ addi r4, r4, 0xc
+/* 802ED4A4 002E9104 38 A0 00 14 */ li r5, 0x14
+/* 802ED4A8 002E9108 4B D1 6B 59 */ bl memcpy
+lbl_802ED4AC:
+/* 802ED4AC 002E910C 1C 1C 09 1C */ mulli r0, r28, 0x91c
+/* 802ED4B0 002E9110 7C 9D 02 14 */ add r4, r29, r0
+/* 802ED4B4 002E9114 88 04 00 08 */ lbz r0, 8(r4)
+/* 802ED4B8 002E9118 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
+/* 802ED4BC 002E911C 41 82 00 20 */ beq lbl_802ED4DC
+/* 802ED4C0 002E9120 38 00 00 01 */ li r0, 1
+/* 802ED4C4 002E9124 38 7F 00 28 */ addi r3, r31, 0x28
+/* 802ED4C8 002E9128 90 1F 00 04 */ stw r0, 4(r31)
+/* 802ED4CC 002E912C 38 84 00 2C */ addi r4, r4, 0x2c
+/* 802ED4D0 002E9130 38 A0 07 9C */ li r5, 0x79c
+/* 802ED4D4 002E9134 4B D1 6B 2D */ bl memcpy
+/* 802ED4D8 002E9138 48 00 00 1C */ b lbl_802ED4F4
+lbl_802ED4DC:
+/* 802ED4DC 002E913C 38 00 00 00 */ li r0, 0
+/* 802ED4E0 002E9140 38 7F 00 28 */ addi r3, r31, 0x28
+/* 802ED4E4 002E9144 90 1F 00 04 */ stw r0, 4(r31)
+/* 802ED4E8 002E9148 38 80 00 00 */ li r4, 0
+/* 802ED4EC 002E914C 38 A0 07 9C */ li r5, 0x79c
+/* 802ED4F0 002E9150 4B D1 6C 15 */ bl memset
+lbl_802ED4F4:
+/* 802ED4F4 002E9154 3C 60 80 58 */ lis r3, lbl_80579060@ha
+/* 802ED4F8 002E9158 38 63 90 60 */ addi r3, r3, lbl_80579060@l
+/* 802ED4FC 002E915C 4B F8 25 29 */ bl OSUnlockMutex
+/* 802ED500 002E9160 7F C3 F3 78 */ mr r3, r30
+lbl_802ED504:
+/* 802ED504 002E9164 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802ED508 002E9168 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802ED50C 002E916C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802ED510 002E9170 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802ED514 002E9174 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802ED518 002E9178 7C 08 03 A6 */ mtlr r0
+/* 802ED51C 002E917C 38 21 00 20 */ addi r1, r1, 0x20
+/* 802ED520 002E9180 4E 80 00 20 */ blr
+
+.global NCDGetLinkStatus
+NCDGetLinkStatus:
+/* 802ED524 002E9184 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802ED528 002E9188 7C 08 02 A6 */ mflr r0
+/* 802ED52C 002E918C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802ED530 002E9190 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802ED534 002E9194 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802ED538 002E9198 3F C0 80 58 */ lis r30, lbl_80579060@ha
+/* 802ED53C 002E919C 3B DE 90 60 */ addi r30, r30, lbl_80579060@l
+/* 802ED540 002E91A0 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802ED544 002E91A4 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802ED548 002E91A8 4B F8 3D B1 */ bl OSGetCurrentThread
+/* 802ED54C 002E91AC 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED550 002E91B0 40 82 00 0C */ bne lbl_802ED55C
+/* 802ED554 002E91B4 38 60 FF FB */ li r3, -5
+/* 802ED558 002E91B8 48 00 00 B0 */ b lbl_802ED608
+lbl_802ED55C:
+/* 802ED55C 002E91BC 48 00 07 11 */ bl LockRight
+/* 802ED560 002E91C0 3C 60 80 44 */ lis r3, lbl_80445B38@ha
+/* 802ED564 002E91C4 38 80 00 00 */ li r4, 0
+/* 802ED568 002E91C8 38 63 5B 38 */ addi r3, r3, lbl_80445B38@l
+/* 802ED56C 002E91CC 4B FB 5B ED */ bl IOS_Open
+/* 802ED570 002E91D0 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED574 002E91D4 7C 7C 1B 78 */ mr r28, r3
+/* 802ED578 002E91D8 40 80 00 1C */ bge lbl_802ED594
+/* 802ED57C 002E91DC 2C 03 FF FA */ cmpwi r3, -6
+/* 802ED580 002E91E0 40 82 00 0C */ bne lbl_802ED58C
+/* 802ED584 002E91E4 3B A0 FF F8 */ li r29, -8
+/* 802ED588 002E91E8 48 00 00 74 */ b lbl_802ED5FC
+lbl_802ED58C:
+/* 802ED58C 002E91EC 3B A0 FF FE */ li r29, -2
+/* 802ED590 002E91F0 48 00 00 6C */ b lbl_802ED5FC
+lbl_802ED594:
+/* 802ED594 002E91F4 3B FE 00 20 */ addi r31, r30, 0x20
+/* 802ED598 002E91F8 38 FE 00 40 */ addi r7, r30, 0x40
+/* 802ED59C 002E91FC 38 00 00 20 */ li r0, 0x20
+/* 802ED5A0 002E9200 93 FE 00 40 */ stw r31, 0x40(r30)
+/* 802ED5A4 002E9204 38 80 00 07 */ li r4, 7
+/* 802ED5A8 002E9208 38 A0 00 00 */ li r5, 0
+/* 802ED5AC 002E920C 90 07 00 04 */ stw r0, 4(r7)
+/* 802ED5B0 002E9210 38 C0 00 01 */ li r6, 1
+/* 802ED5B4 002E9214 4B FB 68 8D */ bl IOS_Ioctlv
+/* 802ED5B8 002E9218 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED5BC 002E921C 40 80 00 0C */ bge lbl_802ED5C8
+/* 802ED5C0 002E9220 3B A0 FF FE */ li r29, -2
+/* 802ED5C4 002E9224 48 00 00 24 */ b lbl_802ED5E8
+lbl_802ED5C8:
+/* 802ED5C8 002E9228 83 BE 00 20 */ lwz r29, 0x20(r30)
+/* 802ED5CC 002E922C 2C 1D 00 00 */ cmpwi r29, 0
+/* 802ED5D0 002E9230 40 82 00 18 */ bne lbl_802ED5E8
+/* 802ED5D4 002E9234 83 BF 00 04 */ lwz r29, 4(r31)
+/* 802ED5D8 002E9238 2C 1D 00 00 */ cmpwi r29, 0
+/* 802ED5DC 002E923C 41 80 00 08 */ blt lbl_802ED5E4
+/* 802ED5E0 002E9240 48 00 00 08 */ b lbl_802ED5E8
+lbl_802ED5E4:
+/* 802ED5E4 002E9244 3B A0 FF FF */ li r29, -1
+lbl_802ED5E8:
+/* 802ED5E8 002E9248 7F 83 E3 78 */ mr r3, r28
+/* 802ED5EC 002E924C 4B FB 5D 4D */ bl IOS_Close
+/* 802ED5F0 002E9250 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED5F4 002E9254 40 80 00 08 */ bge lbl_802ED5FC
+/* 802ED5F8 002E9258 3B A0 FF FF */ li r29, -1
+lbl_802ED5FC:
+/* 802ED5FC 002E925C 38 7E 00 00 */ addi r3, r30, 0
+/* 802ED600 002E9260 4B F8 24 25 */ bl OSUnlockMutex
+/* 802ED604 002E9264 7F A3 EB 78 */ mr r3, r29
+lbl_802ED608:
+/* 802ED608 002E9268 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802ED60C 002E926C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802ED610 002E9270 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802ED614 002E9274 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802ED618 002E9278 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802ED61C 002E927C 7C 08 03 A6 */ mtlr r0
+/* 802ED620 002E9280 38 21 00 20 */ addi r1, r1, 0x20
+/* 802ED624 002E9284 4E 80 00 20 */ blr
+
+.global NCDiGetWirelessMacAddress
+NCDiGetWirelessMacAddress:
+/* 802ED628 002E9288 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802ED62C 002E928C 7C 08 02 A6 */ mflr r0
+/* 802ED630 002E9290 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802ED634 002E9294 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802ED638 002E9298 3F E0 80 58 */ lis r31, lbl_80579060@ha
+/* 802ED63C 002E929C 3B FF 90 60 */ addi r31, r31, lbl_80579060@l
+/* 802ED640 002E92A0 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802ED644 002E92A4 3B C0 00 00 */ li r30, 0
+/* 802ED648 002E92A8 7C 03 F0 40 */ cmplw r3, r30
+/* 802ED64C 002E92AC 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802ED650 002E92B0 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802ED654 002E92B4 7C 7C 1B 78 */ mr r28, r3
+/* 802ED658 002E92B8 40 82 00 0C */ bne lbl_802ED664
+/* 802ED65C 002E92BC 38 60 FF FD */ li r3, -3
+/* 802ED660 002E92C0 48 00 00 D0 */ b lbl_802ED730
+lbl_802ED664:
+/* 802ED664 002E92C4 4B F8 3C 95 */ bl OSGetCurrentThread
+/* 802ED668 002E92C8 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED66C 002E92CC 40 82 00 0C */ bne lbl_802ED678
+/* 802ED670 002E92D0 38 60 FF FB */ li r3, -5
+/* 802ED674 002E92D4 48 00 00 BC */ b lbl_802ED730
+lbl_802ED678:
+/* 802ED678 002E92D8 48 00 05 F5 */ bl LockRight
+/* 802ED67C 002E92DC 3C 60 80 44 */ lis r3, lbl_80445B38@ha
+/* 802ED680 002E92E0 38 80 00 00 */ li r4, 0
+/* 802ED684 002E92E4 38 63 5B 38 */ addi r3, r3, lbl_80445B38@l
+/* 802ED688 002E92E8 4B FB 5A D1 */ bl IOS_Open
+/* 802ED68C 002E92EC 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED690 002E92F0 7C 7D 1B 78 */ mr r29, r3
+/* 802ED694 002E92F4 40 80 00 1C */ bge lbl_802ED6B0
+/* 802ED698 002E92F8 2C 03 FF FA */ cmpwi r3, -6
+/* 802ED69C 002E92FC 40 82 00 0C */ bne lbl_802ED6A8
+/* 802ED6A0 002E9300 3B C0 FF F8 */ li r30, -8
+/* 802ED6A4 002E9304 48 00 00 80 */ b lbl_802ED724
+lbl_802ED6A8:
+/* 802ED6A8 002E9308 3B C0 FF FE */ li r30, -2
+/* 802ED6AC 002E930C 48 00 00 78 */ b lbl_802ED724
+lbl_802ED6B0:
+/* 802ED6B0 002E9310 81 0D AF 34 */ lwz r8, lbl_806401F4-_SDA_BASE_(r13)
+/* 802ED6B4 002E9314 38 FF 00 40 */ addi r7, r31, 0x40
+/* 802ED6B8 002E9318 38 9F 00 20 */ addi r4, r31, 0x20
+/* 802ED6BC 002E931C 38 A0 00 20 */ li r5, 0x20
+/* 802ED6C0 002E9320 38 00 00 06 */ li r0, 6
+/* 802ED6C4 002E9324 90 9F 00 40 */ stw r4, 0x40(r31)
+/* 802ED6C8 002E9328 38 80 00 08 */ li r4, 8
+/* 802ED6CC 002E932C 38 C0 00 02 */ li r6, 2
+/* 802ED6D0 002E9330 90 A7 00 04 */ stw r5, 4(r7)
+/* 802ED6D4 002E9334 38 A0 00 00 */ li r5, 0
+/* 802ED6D8 002E9338 91 07 00 08 */ stw r8, 8(r7)
+/* 802ED6DC 002E933C 90 07 00 0C */ stw r0, 0xc(r7)
+/* 802ED6E0 002E9340 4B FB 67 61 */ bl IOS_Ioctlv
+/* 802ED6E4 002E9344 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED6E8 002E9348 40 80 00 0C */ bge lbl_802ED6F4
+/* 802ED6EC 002E934C 3B C0 FF FE */ li r30, -2
+/* 802ED6F0 002E9350 48 00 00 20 */ b lbl_802ED710
+lbl_802ED6F4:
+/* 802ED6F4 002E9354 83 DF 00 20 */ lwz r30, 0x20(r31)
+/* 802ED6F8 002E9358 2C 1E 00 00 */ cmpwi r30, 0
+/* 802ED6FC 002E935C 40 82 00 14 */ bne lbl_802ED710
+/* 802ED700 002E9360 80 8D AF 34 */ lwz r4, lbl_806401F4-_SDA_BASE_(r13)
+/* 802ED704 002E9364 7F 83 E3 78 */ mr r3, r28
+/* 802ED708 002E9368 38 A0 00 06 */ li r5, 6
+/* 802ED70C 002E936C 4B D1 68 F5 */ bl memcpy
+lbl_802ED710:
+/* 802ED710 002E9370 7F A3 EB 78 */ mr r3, r29
+/* 802ED714 002E9374 4B FB 5C 25 */ bl IOS_Close
+/* 802ED718 002E9378 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED71C 002E937C 40 80 00 08 */ bge lbl_802ED724
+/* 802ED720 002E9380 3B C0 FF FF */ li r30, -1
+lbl_802ED724:
+/* 802ED724 002E9384 38 7F 00 00 */ addi r3, r31, 0
+/* 802ED728 002E9388 4B F8 22 FD */ bl OSUnlockMutex
+/* 802ED72C 002E938C 7F C3 F3 78 */ mr r3, r30
+lbl_802ED730:
+/* 802ED730 002E9390 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802ED734 002E9394 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802ED738 002E9398 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802ED73C 002E939C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802ED740 002E93A0 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802ED744 002E93A4 7C 08 03 A6 */ mtlr r0
+/* 802ED748 002E93A8 38 21 00 20 */ addi r1, r1, 0x20
+/* 802ED74C 002E93AC 4E 80 00 20 */ blr
+
+.global NCDLockWirelessDriver
+NCDLockWirelessDriver:
+/* 802ED750 002E93B0 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802ED754 002E93B4 7C 08 02 A6 */ mflr r0
+/* 802ED758 002E93B8 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802ED75C 002E93BC 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802ED760 002E93C0 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802ED764 002E93C4 3F C0 80 58 */ lis r30, lbl_80579060@ha
+/* 802ED768 002E93C8 3B DE 90 60 */ addi r30, r30, lbl_80579060@l
+/* 802ED76C 002E93CC 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802ED770 002E93D0 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802ED774 002E93D4 4B F8 3B 85 */ bl OSGetCurrentThread
+/* 802ED778 002E93D8 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED77C 002E93DC 40 82 00 0C */ bne lbl_802ED788
+/* 802ED780 002E93E0 38 60 FF FB */ li r3, -5
+/* 802ED784 002E93E4 48 00 00 B0 */ b lbl_802ED834
+lbl_802ED788:
+/* 802ED788 002E93E8 48 00 04 E5 */ bl LockRight
+/* 802ED78C 002E93EC 3C 60 80 44 */ lis r3, lbl_80445B38@ha
+/* 802ED790 002E93F0 38 80 00 00 */ li r4, 0
+/* 802ED794 002E93F4 38 63 5B 38 */ addi r3, r3, lbl_80445B38@l
+/* 802ED798 002E93F8 4B FB 59 C1 */ bl IOS_Open
+/* 802ED79C 002E93FC 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED7A0 002E9400 7C 7C 1B 78 */ mr r28, r3
+/* 802ED7A4 002E9404 40 80 00 1C */ bge lbl_802ED7C0
+/* 802ED7A8 002E9408 2C 03 FF FA */ cmpwi r3, -6
+/* 802ED7AC 002E940C 40 82 00 0C */ bne lbl_802ED7B8
+/* 802ED7B0 002E9410 3B A0 FF F8 */ li r29, -8
+/* 802ED7B4 002E9414 48 00 00 74 */ b lbl_802ED828
+lbl_802ED7B8:
+/* 802ED7B8 002E9418 3B A0 FF FE */ li r29, -2
+/* 802ED7BC 002E941C 48 00 00 6C */ b lbl_802ED828
+lbl_802ED7C0:
+/* 802ED7C0 002E9420 3B FE 00 20 */ addi r31, r30, 0x20
+/* 802ED7C4 002E9424 38 FE 00 40 */ addi r7, r30, 0x40
+/* 802ED7C8 002E9428 38 00 00 20 */ li r0, 0x20
+/* 802ED7CC 002E942C 93 FE 00 40 */ stw r31, 0x40(r30)
+/* 802ED7D0 002E9430 38 80 00 01 */ li r4, 1
+/* 802ED7D4 002E9434 38 A0 00 00 */ li r5, 0
+/* 802ED7D8 002E9438 90 07 00 04 */ stw r0, 4(r7)
+/* 802ED7DC 002E943C 38 C0 00 01 */ li r6, 1
+/* 802ED7E0 002E9440 4B FB 66 61 */ bl IOS_Ioctlv
+/* 802ED7E4 002E9444 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED7E8 002E9448 40 80 00 0C */ bge lbl_802ED7F4
+/* 802ED7EC 002E944C 3B A0 FF FE */ li r29, -2
+/* 802ED7F0 002E9450 48 00 00 24 */ b lbl_802ED814
+lbl_802ED7F4:
+/* 802ED7F4 002E9454 83 BE 00 20 */ lwz r29, 0x20(r30)
+/* 802ED7F8 002E9458 2C 1D 00 00 */ cmpwi r29, 0
+/* 802ED7FC 002E945C 40 82 00 18 */ bne lbl_802ED814
+/* 802ED800 002E9460 83 BF 00 04 */ lwz r29, 4(r31)
+/* 802ED804 002E9464 2C 1D 00 00 */ cmpwi r29, 0
+/* 802ED808 002E9468 40 81 00 08 */ ble lbl_802ED810
+/* 802ED80C 002E946C 48 00 00 08 */ b lbl_802ED814
+lbl_802ED810:
+/* 802ED810 002E9470 3B A0 FF FF */ li r29, -1
+lbl_802ED814:
+/* 802ED814 002E9474 7F 83 E3 78 */ mr r3, r28
+/* 802ED818 002E9478 4B FB 5B 21 */ bl IOS_Close
+/* 802ED81C 002E947C 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED820 002E9480 40 80 00 08 */ bge lbl_802ED828
+/* 802ED824 002E9484 3B A0 FF FF */ li r29, -1
+lbl_802ED828:
+/* 802ED828 002E9488 38 7E 00 00 */ addi r3, r30, 0
+/* 802ED82C 002E948C 4B F8 21 F9 */ bl OSUnlockMutex
+/* 802ED830 002E9490 7F A3 EB 78 */ mr r3, r29
+lbl_802ED834:
+/* 802ED834 002E9494 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802ED838 002E9498 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802ED83C 002E949C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802ED840 002E94A0 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802ED844 002E94A4 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802ED848 002E94A8 7C 08 03 A6 */ mtlr r0
+/* 802ED84C 002E94AC 38 21 00 20 */ addi r1, r1, 0x20
+/* 802ED850 002E94B0 4E 80 00 20 */ blr
+
+.global NCDUnlockWirelessDriver
+NCDUnlockWirelessDriver:
+/* 802ED854 002E94B4 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802ED858 002E94B8 7C 08 02 A6 */ mflr r0
+/* 802ED85C 002E94BC 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED860 002E94C0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802ED864 002E94C4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802ED868 002E94C8 3F E0 80 58 */ lis r31, lbl_80579060@ha
+/* 802ED86C 002E94CC 3B FF 90 60 */ addi r31, r31, lbl_80579060@l
+/* 802ED870 002E94D0 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802ED874 002E94D4 7C 7E 1B 78 */ mr r30, r3
+/* 802ED878 002E94D8 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802ED87C 002E94DC 41 81 00 0C */ bgt lbl_802ED888
+/* 802ED880 002E94E0 38 60 FF FD */ li r3, -3
+/* 802ED884 002E94E4 48 00 00 BC */ b lbl_802ED940
+lbl_802ED888:
+/* 802ED888 002E94E8 4B F8 3A 71 */ bl OSGetCurrentThread
+/* 802ED88C 002E94EC 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED890 002E94F0 40 82 00 0C */ bne lbl_802ED89C
+/* 802ED894 002E94F4 38 60 FF FB */ li r3, -5
+/* 802ED898 002E94F8 48 00 00 A8 */ b lbl_802ED940
+lbl_802ED89C:
+/* 802ED89C 002E94FC 48 00 03 D1 */ bl LockRight
+/* 802ED8A0 002E9500 3C 60 80 44 */ lis r3, lbl_80445B38@ha
+/* 802ED8A4 002E9504 38 80 00 00 */ li r4, 0
+/* 802ED8A8 002E9508 38 63 5B 38 */ addi r3, r3, lbl_80445B38@l
+/* 802ED8AC 002E950C 4B FB 58 AD */ bl IOS_Open
+/* 802ED8B0 002E9510 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED8B4 002E9514 7C 7D 1B 78 */ mr r29, r3
+/* 802ED8B8 002E9518 40 80 00 1C */ bge lbl_802ED8D4
+/* 802ED8BC 002E951C 2C 03 FF FA */ cmpwi r3, -6
+/* 802ED8C0 002E9520 40 82 00 0C */ bne lbl_802ED8CC
+/* 802ED8C4 002E9524 3B C0 FF F8 */ li r30, -8
+/* 802ED8C8 002E9528 48 00 00 6C */ b lbl_802ED934
+lbl_802ED8CC:
+/* 802ED8CC 002E952C 3B C0 FF FE */ li r30, -2
+/* 802ED8D0 002E9530 48 00 00 64 */ b lbl_802ED934
+lbl_802ED8D4:
+/* 802ED8D4 002E9534 81 2D AF 34 */ lwz r9, lbl_806401F4-_SDA_BASE_(r13)
+/* 802ED8D8 002E9538 38 FF 00 40 */ addi r7, r31, 0x40
+/* 802ED8DC 002E953C 39 1F 00 20 */ addi r8, r31, 0x20
+/* 802ED8E0 002E9540 38 A0 00 04 */ li r5, 4
+/* 802ED8E4 002E9544 38 00 00 20 */ li r0, 0x20
+/* 802ED8E8 002E9548 90 A7 00 04 */ stw r5, 4(r7)
+/* 802ED8EC 002E954C 38 80 00 02 */ li r4, 2
+/* 802ED8F0 002E9550 38 A0 00 01 */ li r5, 1
+/* 802ED8F4 002E9554 91 3F 00 40 */ stw r9, 0x40(r31)
+/* 802ED8F8 002E9558 38 C0 00 01 */ li r6, 1
+/* 802ED8FC 002E955C 91 07 00 08 */ stw r8, 8(r7)
+/* 802ED900 002E9560 90 07 00 0C */ stw r0, 0xc(r7)
+/* 802ED904 002E9564 93 C9 00 00 */ stw r30, 0(r9)
+/* 802ED908 002E9568 4B FB 65 39 */ bl IOS_Ioctlv
+/* 802ED90C 002E956C 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED910 002E9570 40 80 00 0C */ bge lbl_802ED91C
+/* 802ED914 002E9574 3B C0 FF FE */ li r30, -2
+/* 802ED918 002E9578 48 00 00 08 */ b lbl_802ED920
+lbl_802ED91C:
+/* 802ED91C 002E957C 83 DF 00 20 */ lwz r30, 0x20(r31)
+lbl_802ED920:
+/* 802ED920 002E9580 7F A3 EB 78 */ mr r3, r29
+/* 802ED924 002E9584 4B FB 5A 15 */ bl IOS_Close
+/* 802ED928 002E9588 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED92C 002E958C 40 80 00 08 */ bge lbl_802ED934
+/* 802ED930 002E9590 3B C0 FF FF */ li r30, -1
+lbl_802ED934:
+/* 802ED934 002E9594 38 7F 00 00 */ addi r3, r31, 0
+/* 802ED938 002E9598 4B F8 20 ED */ bl OSUnlockMutex
+/* 802ED93C 002E959C 7F C3 F3 78 */ mr r3, r30
+lbl_802ED940:
+/* 802ED940 002E95A0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802ED944 002E95A4 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802ED948 002E95A8 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802ED94C 002E95AC 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802ED950 002E95B0 7C 08 03 A6 */ mtlr r0
+/* 802ED954 002E95B4 38 21 00 20 */ addi r1, r1, 0x20
+/* 802ED958 002E95B8 4E 80 00 20 */ blr
+
+.global NCDiGetEnabledConfigList
+NCDiGetEnabledConfigList:
+/* 802ED95C 002E95BC 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802ED960 002E95C0 7C 08 02 A6 */ mflr r0
+/* 802ED964 002E95C4 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802ED968 002E95C8 39 61 00 30 */ addi r11, r1, 0x30
+/* 802ED96C 002E95CC 4B ED 97 B5 */ bl _savegpr_25
+/* 802ED970 002E95D0 7C 7D 1B 78 */ mr r29, r3
+/* 802ED974 002E95D4 7C 9E 23 78 */ mr r30, r4
+/* 802ED978 002E95D8 7C BF 2B 78 */ mr r31, r5
+/* 802ED97C 002E95DC 3B 60 00 00 */ li r27, 0
+/* 802ED980 002E95E0 3B 40 00 00 */ li r26, 0
+/* 802ED984 002E95E4 3B 20 00 00 */ li r25, 0
+/* 802ED988 002E95E8 48 00 02 E5 */ bl LockRight
+/* 802ED98C 002E95EC 3C 60 80 44 */ lis r3, lbl_80445B4C@ha
+/* 802ED990 002E95F0 38 80 00 00 */ li r4, 0
+/* 802ED994 002E95F4 38 63 5B 4C */ addi r3, r3, lbl_80445B4C@l
+/* 802ED998 002E95F8 38 A0 00 03 */ li r5, 3
+/* 802ED99C 002E95FC 48 00 01 3D */ bl ExecConfigCommand
+/* 802ED9A0 002E9600 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED9A4 002E9604 7C 7C 1B 78 */ mr r28, r3
+/* 802ED9A8 002E9608 40 82 00 E4 */ bne lbl_802EDA8C
+/* 802ED9AC 002E960C 80 8D AF 34 */ lwz r4, lbl_806401F4-_SDA_BASE_(r13)
+/* 802ED9B0 002E9610 38 C0 00 00 */ li r6, 0
+/* 802ED9B4 002E9614 38 60 00 01 */ li r3, 1
+/* 802ED9B8 002E9618 88 A4 00 08 */ lbz r5, 8(r4)
+/* 802ED9BC 002E961C 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 802ED9C0 002E9620 41 82 00 34 */ beq lbl_802ED9F4
+/* 802ED9C4 002E9624 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
+/* 802ED9C8 002E9628 41 82 00 0C */ beq lbl_802ED9D4
+/* 802ED9CC 002E962C 7C 7B 30 30 */ slw r27, r3, r6
+/* 802ED9D0 002E9630 48 00 00 24 */ b lbl_802ED9F4
+lbl_802ED9D4:
+/* 802ED9D4 002E9634 88 04 07 CA */ lbz r0, 0x7ca(r4)
+/* 802ED9D8 002E9638 28 00 00 01 */ cmplwi r0, 1
+/* 802ED9DC 002E963C 41 82 00 08 */ beq lbl_802ED9E4
+/* 802ED9E0 002E9640 7C 7A 30 30 */ slw r26, r3, r6
+lbl_802ED9E4:
+/* 802ED9E4 002E9644 88 04 07 CA */ lbz r0, 0x7ca(r4)
+/* 802ED9E8 002E9648 28 00 00 01 */ cmplwi r0, 1
+/* 802ED9EC 002E964C 40 82 00 08 */ bne lbl_802ED9F4
+/* 802ED9F0 002E9650 7C 79 30 30 */ slw r25, r3, r6
+lbl_802ED9F4:
+/* 802ED9F4 002E9654 88 A4 09 24 */ lbz r5, 0x924(r4)
+/* 802ED9F8 002E9658 38 C0 00 01 */ li r6, 1
+/* 802ED9FC 002E965C 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 802EDA00 002E9660 41 82 00 40 */ beq lbl_802EDA40
+/* 802EDA04 002E9664 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
+/* 802EDA08 002E9668 41 82 00 10 */ beq lbl_802EDA18
+/* 802EDA0C 002E966C 7C 60 30 30 */ slw r0, r3, r6
+/* 802EDA10 002E9670 7F 7B 03 78 */ or r27, r27, r0
+/* 802EDA14 002E9674 48 00 00 2C */ b lbl_802EDA40
+lbl_802EDA18:
+/* 802EDA18 002E9678 88 04 10 E6 */ lbz r0, 0x10e6(r4)
+/* 802EDA1C 002E967C 28 00 00 01 */ cmplwi r0, 1
+/* 802EDA20 002E9680 41 82 00 0C */ beq lbl_802EDA2C
+/* 802EDA24 002E9684 7C 60 30 30 */ slw r0, r3, r6
+/* 802EDA28 002E9688 7F 5A 03 78 */ or r26, r26, r0
+lbl_802EDA2C:
+/* 802EDA2C 002E968C 88 04 10 E6 */ lbz r0, 0x10e6(r4)
+/* 802EDA30 002E9690 28 00 00 01 */ cmplwi r0, 1
+/* 802EDA34 002E9694 40 82 00 0C */ bne lbl_802EDA40
+/* 802EDA38 002E9698 7C 60 30 30 */ slw r0, r3, r6
+/* 802EDA3C 002E969C 7F 39 03 78 */ or r25, r25, r0
+lbl_802EDA40:
+/* 802EDA40 002E96A0 88 A4 12 40 */ lbz r5, 0x1240(r4)
+/* 802EDA44 002E96A4 38 C0 00 02 */ li r6, 2
+/* 802EDA48 002E96A8 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 802EDA4C 002E96AC 41 82 00 40 */ beq lbl_802EDA8C
+/* 802EDA50 002E96B0 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
+/* 802EDA54 002E96B4 41 82 00 10 */ beq lbl_802EDA64
+/* 802EDA58 002E96B8 7C 60 30 30 */ slw r0, r3, r6
+/* 802EDA5C 002E96BC 7F 7B 03 78 */ or r27, r27, r0
+/* 802EDA60 002E96C0 48 00 00 2C */ b lbl_802EDA8C
+lbl_802EDA64:
+/* 802EDA64 002E96C4 88 04 1A 02 */ lbz r0, 0x1a02(r4)
+/* 802EDA68 002E96C8 28 00 00 01 */ cmplwi r0, 1
+/* 802EDA6C 002E96CC 41 82 00 0C */ beq lbl_802EDA78
+/* 802EDA70 002E96D0 7C 60 30 30 */ slw r0, r3, r6
+/* 802EDA74 002E96D4 7F 5A 03 78 */ or r26, r26, r0
+lbl_802EDA78:
+/* 802EDA78 002E96D8 88 04 1A 02 */ lbz r0, 0x1a02(r4)
+/* 802EDA7C 002E96DC 28 00 00 01 */ cmplwi r0, 1
+/* 802EDA80 002E96E0 40 82 00 0C */ bne lbl_802EDA8C
+/* 802EDA84 002E96E4 7C 60 30 30 */ slw r0, r3, r6
+/* 802EDA88 002E96E8 7F 39 03 78 */ or r25, r25, r0
+lbl_802EDA8C:
+/* 802EDA8C 002E96EC 3C 60 80 58 */ lis r3, lbl_80579060@ha
+/* 802EDA90 002E96F0 38 63 90 60 */ addi r3, r3, lbl_80579060@l
+/* 802EDA94 002E96F4 4B F8 1F 91 */ bl OSUnlockMutex
+/* 802EDA98 002E96F8 2C 1D 00 00 */ cmpwi r29, 0
+/* 802EDA9C 002E96FC 41 82 00 08 */ beq lbl_802EDAA4
+/* 802EDAA0 002E9700 93 7D 00 00 */ stw r27, 0(r29)
+lbl_802EDAA4:
+/* 802EDAA4 002E9704 2C 1E 00 00 */ cmpwi r30, 0
+/* 802EDAA8 002E9708 41 82 00 08 */ beq lbl_802EDAB0
+/* 802EDAAC 002E970C 93 5E 00 00 */ stw r26, 0(r30)
+lbl_802EDAB0:
+/* 802EDAB0 002E9710 2C 1F 00 00 */ cmpwi r31, 0
+/* 802EDAB4 002E9714 41 82 00 08 */ beq lbl_802EDABC
+/* 802EDAB8 002E9718 93 3F 00 00 */ stw r25, 0(r31)
+lbl_802EDABC:
+/* 802EDABC 002E971C 39 61 00 30 */ addi r11, r1, 0x30
+/* 802EDAC0 002E9720 7F 83 E3 78 */ mr r3, r28
+/* 802EDAC4 002E9724 4B ED 96 A9 */ bl _restgpr_25
+/* 802EDAC8 002E9728 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802EDACC 002E972C 7C 08 03 A6 */ mtlr r0
+/* 802EDAD0 002E9730 38 21 00 30 */ addi r1, r1, 0x30
+/* 802EDAD4 002E9734 4E 80 00 20 */ blr
+
+.global ExecConfigCommand
+ExecConfigCommand:
+/* 802EDAD8 002E9738 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802EDADC 002E973C 7C 08 02 A6 */ mflr r0
+/* 802EDAE0 002E9740 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802EDAE4 002E9744 39 61 00 20 */ addi r11, r1, 0x20
+/* 802EDAE8 002E9748 4B ED 96 41 */ bl _savegpr_27
+/* 802EDAEC 002E974C 3F E0 80 58 */ lis r31, lbl_80579060@ha
+/* 802EDAF0 002E9750 7C 9B 23 78 */ mr r27, r4
+/* 802EDAF4 002E9754 7C BC 2B 78 */ mr r28, r5
+/* 802EDAF8 002E9758 3B C0 00 00 */ li r30, 0
+/* 802EDAFC 002E975C 3B FF 90 60 */ addi r31, r31, lbl_80579060@l
+/* 802EDB00 002E9760 4B F8 37 F9 */ bl OSGetCurrentThread
+/* 802EDB04 002E9764 2C 03 00 00 */ cmpwi r3, 0
+/* 802EDB08 002E9768 40 82 00 0C */ bne lbl_802EDB14
+/* 802EDB0C 002E976C 38 60 FF FB */ li r3, -5
+/* 802EDB10 002E9770 48 00 01 44 */ b lbl_802EDC54
+lbl_802EDB14:
+/* 802EDB14 002E9774 48 00 01 59 */ bl LockRight
+/* 802EDB18 002E9778 3C 60 80 44 */ lis r3, lbl_80445B38@ha
+/* 802EDB1C 002E977C 38 80 00 00 */ li r4, 0
+/* 802EDB20 002E9780 38 63 5B 38 */ addi r3, r3, lbl_80445B38@l
+/* 802EDB24 002E9784 4B FB 56 35 */ bl IOS_Open
+/* 802EDB28 002E9788 2C 03 00 00 */ cmpwi r3, 0
+/* 802EDB2C 002E978C 7C 7D 1B 78 */ mr r29, r3
+/* 802EDB30 002E9790 40 80 00 1C */ bge lbl_802EDB4C
+/* 802EDB34 002E9794 2C 03 FF FA */ cmpwi r3, -6
+/* 802EDB38 002E9798 40 82 00 0C */ bne lbl_802EDB44
+/* 802EDB3C 002E979C 3B C0 FF F8 */ li r30, -8
+/* 802EDB40 002E97A0 48 00 01 08 */ b lbl_802EDC48
+lbl_802EDB44:
+/* 802EDB44 002E97A4 3B C0 FF FE */ li r30, -2
+/* 802EDB48 002E97A8 48 00 01 00 */ b lbl_802EDC48
+lbl_802EDB4C:
+/* 802EDB4C 002E97AC 80 CD AF 34 */ lwz r6, lbl_806401F4-_SDA_BASE_(r13)
+/* 802EDB50 002E97B0 2C 1C 00 05 */ cmpwi r28, 5
+/* 802EDB54 002E97B4 38 9F 00 40 */ addi r4, r31, 0x40
+/* 802EDB58 002E97B8 38 7F 00 20 */ addi r3, r31, 0x20
+/* 802EDB5C 002E97BC 38 A0 1B 5C */ li r5, 0x1b5c
+/* 802EDB60 002E97C0 38 00 00 20 */ li r0, 0x20
+/* 802EDB64 002E97C4 90 DF 00 40 */ stw r6, 0x40(r31)
+/* 802EDB68 002E97C8 90 A4 00 04 */ stw r5, 4(r4)
+/* 802EDB6C 002E97CC 90 64 00 08 */ stw r3, 8(r4)
+/* 802EDB70 002E97D0 90 04 00 0C */ stw r0, 0xc(r4)
+/* 802EDB74 002E97D4 41 82 00 24 */ beq lbl_802EDB98
+/* 802EDB78 002E97D8 40 80 00 14 */ bge lbl_802EDB8C
+/* 802EDB7C 002E97DC 2C 1C 00 03 */ cmpwi r28, 3
+/* 802EDB80 002E97E0 41 82 00 18 */ beq lbl_802EDB98
+/* 802EDB84 002E97E4 40 80 00 68 */ bge lbl_802EDBEC
+/* 802EDB88 002E97E8 48 00 00 AC */ b lbl_802EDC34
+lbl_802EDB8C:
+/* 802EDB8C 002E97EC 2C 1C 00 07 */ cmpwi r28, 7
+/* 802EDB90 002E97F0 40 80 00 A4 */ bge lbl_802EDC34
+/* 802EDB94 002E97F4 48 00 00 58 */ b lbl_802EDBEC
+lbl_802EDB98:
+/* 802EDB98 002E97F8 7F A3 EB 78 */ mr r3, r29
+/* 802EDB9C 002E97FC 7F 84 E3 78 */ mr r4, r28
+/* 802EDBA0 002E9800 38 FF 00 40 */ addi r7, r31, 0x40
+/* 802EDBA4 002E9804 38 A0 00 00 */ li r5, 0
+/* 802EDBA8 002E9808 38 C0 00 02 */ li r6, 2
+/* 802EDBAC 002E980C 4B FB 62 95 */ bl IOS_Ioctlv
+/* 802EDBB0 002E9810 2C 03 00 00 */ cmpwi r3, 0
+/* 802EDBB4 002E9814 40 80 00 0C */ bge lbl_802EDBC0
+/* 802EDBB8 002E9818 3B C0 FF FE */ li r30, -2
+/* 802EDBBC 002E981C 48 00 00 78 */ b lbl_802EDC34
+lbl_802EDBC0:
+/* 802EDBC0 002E9820 83 DF 00 20 */ lwz r30, 0x20(r31)
+/* 802EDBC4 002E9824 2C 1E 00 00 */ cmpwi r30, 0
+/* 802EDBC8 002E9828 40 82 00 6C */ bne lbl_802EDC34
+/* 802EDBCC 002E982C 38 00 00 00 */ li r0, 0
+/* 802EDBD0 002E9830 7C 1B 00 40 */ cmplw r27, r0
+/* 802EDBD4 002E9834 41 82 00 60 */ beq lbl_802EDC34
+/* 802EDBD8 002E9838 80 8D AF 34 */ lwz r4, lbl_806401F4-_SDA_BASE_(r13)
+/* 802EDBDC 002E983C 7F 63 DB 78 */ mr r3, r27
+/* 802EDBE0 002E9840 38 A0 1B 5C */ li r5, 0x1b5c
+/* 802EDBE4 002E9844 4B D1 64 1D */ bl memcpy
+/* 802EDBE8 002E9848 48 00 00 4C */ b lbl_802EDC34
+lbl_802EDBEC:
+/* 802EDBEC 002E984C 38 00 00 00 */ li r0, 0
+/* 802EDBF0 002E9850 7C 1B 00 40 */ cmplw r27, r0
+/* 802EDBF4 002E9854 41 82 00 14 */ beq lbl_802EDC08
+/* 802EDBF8 002E9858 80 6D AF 34 */ lwz r3, lbl_806401F4-_SDA_BASE_(r13)
+/* 802EDBFC 002E985C 7F 64 DB 78 */ mr r4, r27
+/* 802EDC00 002E9860 38 A0 1B 5C */ li r5, 0x1b5c
+/* 802EDC04 002E9864 4B D1 63 FD */ bl memcpy
+lbl_802EDC08:
+/* 802EDC08 002E9868 7F A3 EB 78 */ mr r3, r29
+/* 802EDC0C 002E986C 7F 84 E3 78 */ mr r4, r28
+/* 802EDC10 002E9870 38 FF 00 40 */ addi r7, r31, 0x40
+/* 802EDC14 002E9874 38 A0 00 01 */ li r5, 1
+/* 802EDC18 002E9878 38 C0 00 01 */ li r6, 1
+/* 802EDC1C 002E987C 4B FB 62 25 */ bl IOS_Ioctlv
+/* 802EDC20 002E9880 2C 03 00 00 */ cmpwi r3, 0
+/* 802EDC24 002E9884 40 80 00 0C */ bge lbl_802EDC30
+/* 802EDC28 002E9888 3B C0 FF FE */ li r30, -2
+/* 802EDC2C 002E988C 48 00 00 08 */ b lbl_802EDC34
+lbl_802EDC30:
+/* 802EDC30 002E9890 83 DF 00 20 */ lwz r30, 0x20(r31)
+lbl_802EDC34:
+/* 802EDC34 002E9894 7F A3 EB 78 */ mr r3, r29
+/* 802EDC38 002E9898 4B FB 57 01 */ bl IOS_Close
+/* 802EDC3C 002E989C 2C 03 00 00 */ cmpwi r3, 0
+/* 802EDC40 002E98A0 40 80 00 08 */ bge lbl_802EDC48
+/* 802EDC44 002E98A4 3B C0 FF FF */ li r30, -1
+lbl_802EDC48:
+/* 802EDC48 002E98A8 38 7F 00 00 */ addi r3, r31, 0
+/* 802EDC4C 002E98AC 4B F8 1D D9 */ bl OSUnlockMutex
+/* 802EDC50 002E98B0 7F C3 F3 78 */ mr r3, r30
+lbl_802EDC54:
+/* 802EDC54 002E98B4 39 61 00 20 */ addi r11, r1, 0x20
+/* 802EDC58 002E98B8 4B ED 95 1D */ bl _restgpr_27
+/* 802EDC5C 002E98BC 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802EDC60 002E98C0 7C 08 03 A6 */ mtlr r0
+/* 802EDC64 002E98C4 38 21 00 20 */ addi r1, r1, 0x20
+/* 802EDC68 002E98C8 4E 80 00 20 */ blr
+
+.global LockRight
+LockRight:
+/* 802EDC6C 002E98CC 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802EDC70 002E98D0 7C 08 02 A6 */ mflr r0
+/* 802EDC74 002E98D4 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802EDC78 002E98D8 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802EDC7C 002E98DC 3F E0 80 58 */ lis r31, lbl_80579060@ha
+/* 802EDC80 002E98E0 3B FF 90 60 */ addi r31, r31, lbl_80579060@l
+/* 802EDC84 002E98E4 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802EDC88 002E98E8 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802EDC8C 002E98EC 4B F8 0A D1 */ bl OSDisableInterrupts
+/* 802EDC90 002E98F0 80 0D AF 30 */ lwz r0, lbl_806401F0-_SDA_BASE_(r13)
+/* 802EDC94 002E98F4 7C 7E 1B 78 */ mr r30, r3
+/* 802EDC98 002E98F8 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 802EDC9C 002E98FC 40 82 00 94 */ bne lbl_802EDD30
+/* 802EDCA0 002E9900 80 6D 8B E8 */ lwz r3, lbl_8063DEA8-_SDA_BASE_(r13)
+/* 802EDCA4 002E9904 4B F7 B9 AD */ bl OSRegisterVersion
+/* 802EDCA8 002E9908 38 7F 00 00 */ addi r3, r31, 0
+/* 802EDCAC 002E990C 4B F8 1C 65 */ bl OSInitMutex
+/* 802EDCB0 002E9910 4B FB 4C 45 */ bl IPCGetBufferLo
+/* 802EDCB4 002E9914 38 03 00 1F */ addi r0, r3, 0x1f
+/* 802EDCB8 002E9918 54 1D 00 34 */ rlwinm r29, r0, 0, 0, 0x1a
+/* 802EDCBC 002E991C 4B FB 4C 31 */ bl IPCGetBufferHi
+/* 802EDCC0 002E9920 7C 1D 18 50 */ subf r0, r29, r3
+/* 802EDCC4 002E9924 28 00 1B 60 */ cmplwi r0, 0x1b60
+/* 802EDCC8 002E9928 40 80 00 20 */ bge lbl_802EDCE8
+/* 802EDCCC 002E992C 3C 60 80 44 */ lis r3, lbl_80445B68@ha
+/* 802EDCD0 002E9930 3C A0 80 44 */ lis r5, lbl_80445B74@ha
+/* 802EDCD4 002E9934 38 63 5B 68 */ addi r3, r3, lbl_80445B68@l
+/* 802EDCD8 002E9938 38 80 05 A8 */ li r4, 0x5a8
+/* 802EDCDC 002E993C 38 A5 5B 74 */ addi r5, r5, lbl_80445B74@l
+/* 802EDCE0 002E9940 4C C6 31 82 */ crclr 6
+/* 802EDCE4 002E9944 4B F7 D7 B9 */ bl OSPanic
+lbl_802EDCE8:
+/* 802EDCE8 002E9948 38 7D 1B 60 */ addi r3, r29, 0x1b60
+/* 802EDCEC 002E994C 4B FB 4C 11 */ bl IPCSetBufferLo
+/* 802EDCF0 002E9950 93 AD AF 34 */ stw r29, lbl_806401F4-_SDA_BASE_(r13)
+/* 802EDCF4 002E9954 7F A3 EB 78 */ mr r3, r29
+/* 802EDCF8 002E9958 38 80 00 00 */ li r4, 0
+/* 802EDCFC 002E995C 38 A0 1B 60 */ li r5, 0x1b60
+/* 802EDD00 002E9960 4B D1 64 05 */ bl memset
+/* 802EDD04 002E9964 38 7F 00 20 */ addi r3, r31, 0x20
+/* 802EDD08 002E9968 38 80 00 00 */ li r4, 0
+/* 802EDD0C 002E996C 38 A0 00 20 */ li r5, 0x20
+/* 802EDD10 002E9970 4B D1 63 F5 */ bl memset
+/* 802EDD14 002E9974 38 7F 00 40 */ addi r3, r31, 0x40
+/* 802EDD18 002E9978 38 80 00 00 */ li r4, 0
+/* 802EDD1C 002E997C 38 A0 00 20 */ li r5, 0x20
+/* 802EDD20 002E9980 4B D1 63 E5 */ bl memset
+/* 802EDD24 002E9984 80 0D AF 30 */ lwz r0, lbl_806401F0-_SDA_BASE_(r13)
+/* 802EDD28 002E9988 60 00 00 01 */ ori r0, r0, 1
+/* 802EDD2C 002E998C 90 0D AF 30 */ stw r0, lbl_806401F0-_SDA_BASE_(r13)
+lbl_802EDD30:
+/* 802EDD30 002E9990 7F C3 F3 78 */ mr r3, r30
+/* 802EDD34 002E9994 4B F8 0A 51 */ bl OSRestoreInterrupts
+/* 802EDD38 002E9998 38 7F 00 00 */ addi r3, r31, 0
+/* 802EDD3C 002E999C 4B F8 1C 0D */ bl OSLockMutex
+/* 802EDD40 002E99A0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802EDD44 002E99A4 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802EDD48 002E99A8 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802EDD4C 002E99AC 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802EDD50 002E99B0 7C 08 03 A6 */ mtlr r0
+/* 802EDD54 002E99B4 38 21 00 20 */ addi r1, r1, 0x20
+/* 802EDD58 002E99B8 4E 80 00 20 */ blr
diff --git a/asm/SDK/NTR/crc.s b/asm/SDK/NTR/crc.s new file mode 100644 index 0000000..fcb5dd8 --- /dev/null +++ b/asm/SDK/NTR/crc.s @@ -0,0 +1,254 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global MATHi_CRC8InitTable
+MATHi_CRC8InitTable:
+/* 802EE638 002EA298 38 00 01 00 */ li r0, 0x100
+/* 802EE63C 002EA29C 38 C0 00 00 */ li r6, 0
+/* 802EE640 002EA2A0 7C 09 03 A6 */ mtctr r0
+lbl_802EE644:
+/* 802EE644 002EA2A4 54 C0 06 31 */ rlwinm. r0, r6, 0, 0x18, 0x18
+/* 802EE648 002EA2A8 54 C5 08 3C */ slwi r5, r6, 1
+/* 802EE64C 002EA2AC 41 82 00 08 */ beq lbl_802EE654
+/* 802EE650 002EA2B0 7C A5 22 78 */ xor r5, r5, r4
+lbl_802EE654:
+/* 802EE654 002EA2B4 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 802EE658 002EA2B8 54 A5 08 3C */ slwi r5, r5, 1
+/* 802EE65C 002EA2BC 41 82 00 08 */ beq lbl_802EE664
+/* 802EE660 002EA2C0 7C A5 22 78 */ xor r5, r5, r4
+lbl_802EE664:
+/* 802EE664 002EA2C4 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 802EE668 002EA2C8 54 A5 08 3C */ slwi r5, r5, 1
+/* 802EE66C 002EA2CC 41 82 00 08 */ beq lbl_802EE674
+/* 802EE670 002EA2D0 7C A5 22 78 */ xor r5, r5, r4
+lbl_802EE674:
+/* 802EE674 002EA2D4 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 802EE678 002EA2D8 54 A5 08 3C */ slwi r5, r5, 1
+/* 802EE67C 002EA2DC 41 82 00 08 */ beq lbl_802EE684
+/* 802EE680 002EA2E0 7C A5 22 78 */ xor r5, r5, r4
+lbl_802EE684:
+/* 802EE684 002EA2E4 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 802EE688 002EA2E8 54 A5 08 3C */ slwi r5, r5, 1
+/* 802EE68C 002EA2EC 41 82 00 08 */ beq lbl_802EE694
+/* 802EE690 002EA2F0 7C A5 22 78 */ xor r5, r5, r4
+lbl_802EE694:
+/* 802EE694 002EA2F4 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 802EE698 002EA2F8 54 A5 08 3C */ slwi r5, r5, 1
+/* 802EE69C 002EA2FC 41 82 00 08 */ beq lbl_802EE6A4
+/* 802EE6A0 002EA300 7C A5 22 78 */ xor r5, r5, r4
+lbl_802EE6A4:
+/* 802EE6A4 002EA304 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 802EE6A8 002EA308 54 A5 08 3C */ slwi r5, r5, 1
+/* 802EE6AC 002EA30C 41 82 00 08 */ beq lbl_802EE6B4
+/* 802EE6B0 002EA310 7C A5 22 78 */ xor r5, r5, r4
+lbl_802EE6B4:
+/* 802EE6B4 002EA314 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 802EE6B8 002EA318 54 A5 08 3C */ slwi r5, r5, 1
+/* 802EE6BC 002EA31C 41 82 00 08 */ beq lbl_802EE6C4
+/* 802EE6C0 002EA320 7C A5 22 78 */ xor r5, r5, r4
+lbl_802EE6C4:
+/* 802EE6C4 002EA324 98 A3 00 00 */ stb r5, 0(r3)
+/* 802EE6C8 002EA328 38 C6 00 01 */ addi r6, r6, 1
+/* 802EE6CC 002EA32C 38 63 00 01 */ addi r3, r3, 1
+/* 802EE6D0 002EA330 42 00 FF 74 */ bdnz lbl_802EE644
+/* 802EE6D4 002EA334 4E 80 00 20 */ blr
+
+.global MATHi_CRC32InitTableRev
+MATHi_CRC32InitTableRev:
+/* 802EE6D8 002EA338 38 00 01 00 */ li r0, 0x100
+/* 802EE6DC 002EA33C 38 C0 00 00 */ li r6, 0
+/* 802EE6E0 002EA340 7C 09 03 A6 */ mtctr r0
+lbl_802EE6E4:
+/* 802EE6E4 002EA344 54 C0 07 FF */ clrlwi. r0, r6, 0x1f
+/* 802EE6E8 002EA348 54 C5 F8 7E */ srwi r5, r6, 1
+/* 802EE6EC 002EA34C 41 82 00 08 */ beq lbl_802EE6F4
+/* 802EE6F0 002EA350 7C A5 22 78 */ xor r5, r5, r4
+lbl_802EE6F4:
+/* 802EE6F4 002EA354 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
+/* 802EE6F8 002EA358 54 A5 F8 7E */ srwi r5, r5, 1
+/* 802EE6FC 002EA35C 41 82 00 08 */ beq lbl_802EE704
+/* 802EE700 002EA360 7C A5 22 78 */ xor r5, r5, r4
+lbl_802EE704:
+/* 802EE704 002EA364 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
+/* 802EE708 002EA368 54 A5 F8 7E */ srwi r5, r5, 1
+/* 802EE70C 002EA36C 41 82 00 08 */ beq lbl_802EE714
+/* 802EE710 002EA370 7C A5 22 78 */ xor r5, r5, r4
+lbl_802EE714:
+/* 802EE714 002EA374 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
+/* 802EE718 002EA378 54 A5 F8 7E */ srwi r5, r5, 1
+/* 802EE71C 002EA37C 41 82 00 08 */ beq lbl_802EE724
+/* 802EE720 002EA380 7C A5 22 78 */ xor r5, r5, r4
+lbl_802EE724:
+/* 802EE724 002EA384 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
+/* 802EE728 002EA388 54 A5 F8 7E */ srwi r5, r5, 1
+/* 802EE72C 002EA38C 41 82 00 08 */ beq lbl_802EE734
+/* 802EE730 002EA390 7C A5 22 78 */ xor r5, r5, r4
+lbl_802EE734:
+/* 802EE734 002EA394 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
+/* 802EE738 002EA398 54 A5 F8 7E */ srwi r5, r5, 1
+/* 802EE73C 002EA39C 41 82 00 08 */ beq lbl_802EE744
+/* 802EE740 002EA3A0 7C A5 22 78 */ xor r5, r5, r4
+lbl_802EE744:
+/* 802EE744 002EA3A4 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
+/* 802EE748 002EA3A8 54 A5 F8 7E */ srwi r5, r5, 1
+/* 802EE74C 002EA3AC 41 82 00 08 */ beq lbl_802EE754
+/* 802EE750 002EA3B0 7C A5 22 78 */ xor r5, r5, r4
+lbl_802EE754:
+/* 802EE754 002EA3B4 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
+/* 802EE758 002EA3B8 54 A5 F8 7E */ srwi r5, r5, 1
+/* 802EE75C 002EA3BC 41 82 00 08 */ beq lbl_802EE764
+/* 802EE760 002EA3C0 7C A5 22 78 */ xor r5, r5, r4
+lbl_802EE764:
+/* 802EE764 002EA3C4 90 A3 00 00 */ stw r5, 0(r3)
+/* 802EE768 002EA3C8 38 63 00 04 */ addi r3, r3, 4
+/* 802EE76C 002EA3CC 38 C6 00 01 */ addi r6, r6, 1
+/* 802EE770 002EA3D0 42 00 FF 74 */ bdnz lbl_802EE6E4
+/* 802EE774 002EA3D4 4E 80 00 20 */ blr
+
+.global MATH_CalcCRC8
+MATH_CalcCRC8:
+/* 802EE778 002EA3D8 2C 05 00 00 */ cmpwi r5, 0
+/* 802EE77C 002EA3DC 38 E0 00 00 */ li r7, 0
+/* 802EE780 002EA3E0 39 60 00 00 */ li r11, 0
+/* 802EE784 002EA3E4 41 82 00 BC */ beq lbl_802EE840
+/* 802EE788 002EA3E8 28 05 00 08 */ cmplwi r5, 8
+/* 802EE78C 002EA3EC 38 C5 FF F8 */ addi r6, r5, -8
+/* 802EE790 002EA3F0 40 81 00 88 */ ble lbl_802EE818
+/* 802EE794 002EA3F4 38 06 00 07 */ addi r0, r6, 7
+/* 802EE798 002EA3F8 54 00 E8 FE */ srwi r0, r0, 3
+/* 802EE79C 002EA3FC 7C 09 03 A6 */ mtctr r0
+/* 802EE7A0 002EA400 28 06 00 00 */ cmplwi r6, 0
+/* 802EE7A4 002EA404 40 81 00 74 */ ble lbl_802EE818
+lbl_802EE7A8:
+/* 802EE7A8 002EA408 88 04 00 00 */ lbz r0, 0(r4)
+/* 802EE7AC 002EA40C 39 6B 00 08 */ addi r11, r11, 8
+/* 802EE7B0 002EA410 88 C4 00 01 */ lbz r6, 1(r4)
+/* 802EE7B4 002EA414 7C E7 02 78 */ xor r7, r7, r0
+/* 802EE7B8 002EA418 88 04 00 02 */ lbz r0, 2(r4)
+/* 802EE7BC 002EA41C 54 E7 06 3E */ clrlwi r7, r7, 0x18
+/* 802EE7C0 002EA420 89 24 00 03 */ lbz r9, 3(r4)
+/* 802EE7C4 002EA424 7C E3 38 AE */ lbzx r7, r3, r7
+/* 802EE7C8 002EA428 89 04 00 04 */ lbz r8, 4(r4)
+/* 802EE7CC 002EA42C 7C E6 32 78 */ xor r6, r7, r6
+/* 802EE7D0 002EA430 88 E4 00 05 */ lbz r7, 5(r4)
+/* 802EE7D4 002EA434 7D 43 30 AE */ lbzx r10, r3, r6
+/* 802EE7D8 002EA438 88 C4 00 06 */ lbz r6, 6(r4)
+/* 802EE7DC 002EA43C 7D 4A 02 78 */ xor r10, r10, r0
+/* 802EE7E0 002EA440 88 04 00 07 */ lbz r0, 7(r4)
+/* 802EE7E4 002EA444 7D 43 50 AE */ lbzx r10, r3, r10
+/* 802EE7E8 002EA448 38 84 00 08 */ addi r4, r4, 8
+/* 802EE7EC 002EA44C 7D 49 4A 78 */ xor r9, r10, r9
+/* 802EE7F0 002EA450 7D 23 48 AE */ lbzx r9, r3, r9
+/* 802EE7F4 002EA454 7D 28 42 78 */ xor r8, r9, r8
+/* 802EE7F8 002EA458 7D 03 40 AE */ lbzx r8, r3, r8
+/* 802EE7FC 002EA45C 7D 07 3A 78 */ xor r7, r8, r7
+/* 802EE800 002EA460 7C E3 38 AE */ lbzx r7, r3, r7
+/* 802EE804 002EA464 7C E6 32 78 */ xor r6, r7, r6
+/* 802EE808 002EA468 7C C3 30 AE */ lbzx r6, r3, r6
+/* 802EE80C 002EA46C 7C C0 02 78 */ xor r0, r6, r0
+/* 802EE810 002EA470 7C E3 00 AE */ lbzx r7, r3, r0
+/* 802EE814 002EA474 42 00 FF 94 */ bdnz lbl_802EE7A8
+lbl_802EE818:
+/* 802EE818 002EA478 7C 0B 28 50 */ subf r0, r11, r5
+/* 802EE81C 002EA47C 7C 09 03 A6 */ mtctr r0
+/* 802EE820 002EA480 7C 0B 28 40 */ cmplw r11, r5
+/* 802EE824 002EA484 40 80 00 1C */ bge lbl_802EE840
+lbl_802EE828:
+/* 802EE828 002EA488 88 04 00 00 */ lbz r0, 0(r4)
+/* 802EE82C 002EA48C 38 84 00 01 */ addi r4, r4, 1
+/* 802EE830 002EA490 7C E0 02 78 */ xor r0, r7, r0
+/* 802EE834 002EA494 54 00 06 3E */ clrlwi r0, r0, 0x18
+/* 802EE838 002EA498 7C E3 00 AE */ lbzx r7, r3, r0
+/* 802EE83C 002EA49C 42 00 FF EC */ bdnz lbl_802EE828
+lbl_802EE840:
+/* 802EE840 002EA4A0 7C E3 3B 78 */ mr r3, r7
+/* 802EE844 002EA4A4 4E 80 00 20 */ blr
+
+.global MATH_CalcCRC32
+MATH_CalcCRC32:
+/* 802EE848 002EA4A8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EE84C 002EA4AC 2C 05 00 00 */ cmpwi r5, 0
+/* 802EE850 002EA4B0 39 20 FF FF */ li r9, -1
+/* 802EE854 002EA4B4 38 C0 00 00 */ li r6, 0
+/* 802EE858 002EA4B8 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802EE85C 002EA4BC 41 82 01 20 */ beq lbl_802EE97C
+/* 802EE860 002EA4C0 28 05 00 08 */ cmplwi r5, 8
+/* 802EE864 002EA4C4 38 E5 FF F8 */ addi r7, r5, -8
+/* 802EE868 002EA4C8 40 81 00 E4 */ ble lbl_802EE94C
+/* 802EE86C 002EA4CC 38 07 00 07 */ addi r0, r7, 7
+/* 802EE870 002EA4D0 54 00 E8 FE */ srwi r0, r0, 3
+/* 802EE874 002EA4D4 7C 09 03 A6 */ mtctr r0
+/* 802EE878 002EA4D8 28 07 00 00 */ cmplwi r7, 0
+/* 802EE87C 002EA4DC 40 81 00 D0 */ ble lbl_802EE94C
+lbl_802EE880:
+/* 802EE880 002EA4E0 88 E4 00 00 */ lbz r7, 0(r4)
+/* 802EE884 002EA4E4 55 28 C2 3E */ srwi r8, r9, 8
+/* 802EE888 002EA4E8 88 04 00 01 */ lbz r0, 1(r4)
+/* 802EE88C 002EA4EC 38 C6 00 08 */ addi r6, r6, 8
+/* 802EE890 002EA4F0 7D 27 3A 78 */ xor r7, r9, r7
+/* 802EE894 002EA4F4 89 64 00 02 */ lbz r11, 2(r4)
+/* 802EE898 002EA4F8 54 E7 15 BA */ rlwinm r7, r7, 2, 0x16, 0x1d
+/* 802EE89C 002EA4FC 89 44 00 03 */ lbz r10, 3(r4)
+/* 802EE8A0 002EA500 7C E3 38 2E */ lwzx r7, r3, r7
+/* 802EE8A4 002EA504 89 24 00 04 */ lbz r9, 4(r4)
+/* 802EE8A8 002EA508 7D 1F 3A 78 */ xor r31, r8, r7
+/* 802EE8AC 002EA50C 89 04 00 05 */ lbz r8, 5(r4)
+/* 802EE8B0 002EA510 7F E0 02 78 */ xor r0, r31, r0
+/* 802EE8B4 002EA514 88 E4 00 06 */ lbz r7, 6(r4)
+/* 802EE8B8 002EA518 54 0C 15 BA */ rlwinm r12, r0, 2, 0x16, 0x1d
+/* 802EE8BC 002EA51C 88 04 00 07 */ lbz r0, 7(r4)
+/* 802EE8C0 002EA520 7D 83 60 2E */ lwzx r12, r3, r12
+/* 802EE8C4 002EA524 57 FF C2 3E */ srwi r31, r31, 8
+/* 802EE8C8 002EA528 38 84 00 08 */ addi r4, r4, 8
+/* 802EE8CC 002EA52C 7F EC 62 78 */ xor r12, r31, r12
+/* 802EE8D0 002EA530 7D 8B 5A 78 */ xor r11, r12, r11
+/* 802EE8D4 002EA534 55 6B 15 BA */ rlwinm r11, r11, 2, 0x16, 0x1d
+/* 802EE8D8 002EA538 55 8C C2 3E */ srwi r12, r12, 8
+/* 802EE8DC 002EA53C 7D 63 58 2E */ lwzx r11, r3, r11
+/* 802EE8E0 002EA540 7D 8B 5A 78 */ xor r11, r12, r11
+/* 802EE8E4 002EA544 7D 6A 52 78 */ xor r10, r11, r10
+/* 802EE8E8 002EA548 55 4A 15 BA */ rlwinm r10, r10, 2, 0x16, 0x1d
+/* 802EE8EC 002EA54C 55 6B C2 3E */ srwi r11, r11, 8
+/* 802EE8F0 002EA550 7D 43 50 2E */ lwzx r10, r3, r10
+/* 802EE8F4 002EA554 7D 6A 52 78 */ xor r10, r11, r10
+/* 802EE8F8 002EA558 7D 49 4A 78 */ xor r9, r10, r9
+/* 802EE8FC 002EA55C 55 29 15 BA */ rlwinm r9, r9, 2, 0x16, 0x1d
+/* 802EE900 002EA560 55 4A C2 3E */ srwi r10, r10, 8
+/* 802EE904 002EA564 7D 23 48 2E */ lwzx r9, r3, r9
+/* 802EE908 002EA568 7D 49 4A 78 */ xor r9, r10, r9
+/* 802EE90C 002EA56C 7D 28 42 78 */ xor r8, r9, r8
+/* 802EE910 002EA570 55 08 15 BA */ rlwinm r8, r8, 2, 0x16, 0x1d
+/* 802EE914 002EA574 55 29 C2 3E */ srwi r9, r9, 8
+/* 802EE918 002EA578 7D 03 40 2E */ lwzx r8, r3, r8
+/* 802EE91C 002EA57C 7D 28 42 78 */ xor r8, r9, r8
+/* 802EE920 002EA580 7D 07 3A 78 */ xor r7, r8, r7
+/* 802EE924 002EA584 54 E7 15 BA */ rlwinm r7, r7, 2, 0x16, 0x1d
+/* 802EE928 002EA588 55 08 C2 3E */ srwi r8, r8, 8
+/* 802EE92C 002EA58C 7C E3 38 2E */ lwzx r7, r3, r7
+/* 802EE930 002EA590 7D 07 3A 78 */ xor r7, r8, r7
+/* 802EE934 002EA594 7C E0 02 78 */ xor r0, r7, r0
+/* 802EE938 002EA598 54 00 15 BA */ rlwinm r0, r0, 2, 0x16, 0x1d
+/* 802EE93C 002EA59C 54 E7 C2 3E */ srwi r7, r7, 8
+/* 802EE940 002EA5A0 7C 03 00 2E */ lwzx r0, r3, r0
+/* 802EE944 002EA5A4 7C E9 02 78 */ xor r9, r7, r0
+/* 802EE948 002EA5A8 42 00 FF 38 */ bdnz lbl_802EE880
+lbl_802EE94C:
+/* 802EE94C 002EA5AC 7C 06 28 50 */ subf r0, r6, r5
+/* 802EE950 002EA5B0 7C 09 03 A6 */ mtctr r0
+/* 802EE954 002EA5B4 7C 06 28 40 */ cmplw r6, r5
+/* 802EE958 002EA5B8 40 80 00 24 */ bge lbl_802EE97C
+lbl_802EE95C:
+/* 802EE95C 002EA5BC 88 04 00 00 */ lbz r0, 0(r4)
+/* 802EE960 002EA5C0 55 25 C2 3E */ srwi r5, r9, 8
+/* 802EE964 002EA5C4 38 84 00 01 */ addi r4, r4, 1
+/* 802EE968 002EA5C8 7D 20 02 78 */ xor r0, r9, r0
+/* 802EE96C 002EA5CC 54 00 15 BA */ rlwinm r0, r0, 2, 0x16, 0x1d
+/* 802EE970 002EA5D0 7C 03 00 2E */ lwzx r0, r3, r0
+/* 802EE974 002EA5D4 7C A9 02 78 */ xor r9, r5, r0
+/* 802EE978 002EA5D8 42 00 FF E4 */ bdnz lbl_802EE95C
+lbl_802EE97C:
+/* 802EE97C 002EA5DC 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802EE980 002EA5E0 7D 23 48 F8 */ nor r3, r9, r9
+/* 802EE984 002EA5E4 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EE988 002EA5E8 4E 80 00 20 */ blr
diff --git a/asm/SDK/NTR/math.s b/asm/SDK/NTR/math.s new file mode 100644 index 0000000..7daffd2 --- /dev/null +++ b/asm/SDK/NTR/math.s @@ -0,0 +1,28 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global MATH_CountPopulation
+MATH_CountPopulation:
+/* 802EE98C 002EA5EC 3C C0 55 55 */ lis r6, 0x55555555@ha
+/* 802EE990 002EA5F0 3C A0 33 33 */ lis r5, 0x33333333@ha
+/* 802EE994 002EA5F4 54 67 F8 7E */ srwi r7, r3, 1
+/* 802EE998 002EA5F8 3C 80 0F 0F */ lis r4, 0x0F0F0F0F@ha
+/* 802EE99C 002EA5FC 38 06 55 55 */ addi r0, r6, 0x55555555@l
+/* 802EE9A0 002EA600 38 A5 33 33 */ addi r5, r5, 0x33333333@l
+/* 802EE9A4 002EA604 7C E6 00 38 */ and r6, r7, r0
+/* 802EE9A8 002EA608 38 04 0F 0F */ addi r0, r4, 0x0F0F0F0F@l
+/* 802EE9AC 002EA60C 7C 86 18 50 */ subf r4, r6, r3
+/* 802EE9B0 002EA610 54 83 F0 BE */ srwi r3, r4, 2
+/* 802EE9B4 002EA614 7C 84 28 38 */ and r4, r4, r5
+/* 802EE9B8 002EA618 7C 63 28 38 */ and r3, r3, r5
+/* 802EE9BC 002EA61C 7C 84 1A 14 */ add r4, r4, r3
+/* 802EE9C0 002EA620 54 83 E1 3E */ srwi r3, r4, 4
+/* 802EE9C4 002EA624 7C 84 1A 14 */ add r4, r4, r3
+/* 802EE9C8 002EA628 7C 84 00 38 */ and r4, r4, r0
+/* 802EE9CC 002EA62C 54 80 C2 3E */ srwi r0, r4, 8
+/* 802EE9D0 002EA630 7C 84 02 14 */ add r4, r4, r0
+/* 802EE9D4 002EA634 54 80 84 3E */ srwi r0, r4, 0x10
+/* 802EE9D8 002EA638 7C 84 02 14 */ add r4, r4, r0
+/* 802EE9DC 002EA63C 54 83 06 3E */ clrlwi r3, r4, 0x18
+/* 802EE9E0 002EA640 4E 80 00 20 */ blr
diff --git a/asm/SDK/NTR/wdp_common.s b/asm/SDK/NTR/wdp_common.s new file mode 100644 index 0000000..d780c6f --- /dev/null +++ b/asm/SDK/NTR/wdp_common.s @@ -0,0 +1,421 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global WDPi_GetBeaconCheckSum
+WDPi_GetBeaconCheckSum:
+/* 802EE9E4 002EA644 38 00 00 03 */ li r0, 3
+/* 802EE9E8 002EA648 38 C0 00 00 */ li r6, 0
+/* 802EE9EC 002EA64C 7C 09 03 A6 */ mtctr r0
+lbl_802EE9F0:
+/* 802EE9F0 002EA650 88 83 00 01 */ lbz r4, 1(r3)
+/* 802EE9F4 002EA654 88 03 00 03 */ lbz r0, 3(r3)
+/* 802EE9F8 002EA658 88 A3 00 00 */ lbz r5, 0(r3)
+/* 802EE9FC 002EA65C 50 85 44 2E */ rlwimi r5, r4, 8, 0x10, 0x17
+/* 802EEA00 002EA660 88 83 00 02 */ lbz r4, 2(r3)
+/* 802EEA04 002EA664 50 04 44 2E */ rlwimi r4, r0, 8, 0x10, 0x17
+/* 802EEA08 002EA668 7C C6 2A 14 */ add r6, r6, r5
+/* 802EEA0C 002EA66C 88 03 00 05 */ lbz r0, 5(r3)
+/* 802EEA10 002EA670 88 A3 00 04 */ lbz r5, 4(r3)
+/* 802EEA14 002EA674 7C C6 22 14 */ add r6, r6, r4
+/* 802EEA18 002EA678 50 05 44 2E */ rlwimi r5, r0, 8, 0x10, 0x17
+/* 802EEA1C 002EA67C 88 03 00 07 */ lbz r0, 7(r3)
+/* 802EEA20 002EA680 88 83 00 06 */ lbz r4, 6(r3)
+/* 802EEA24 002EA684 7C C6 2A 14 */ add r6, r6, r5
+/* 802EEA28 002EA688 50 04 44 2E */ rlwimi r4, r0, 8, 0x10, 0x17
+/* 802EEA2C 002EA68C 88 03 00 09 */ lbz r0, 9(r3)
+/* 802EEA30 002EA690 88 A3 00 08 */ lbz r5, 8(r3)
+/* 802EEA34 002EA694 7C C6 22 14 */ add r6, r6, r4
+/* 802EEA38 002EA698 50 05 44 2E */ rlwimi r5, r0, 8, 0x10, 0x17
+/* 802EEA3C 002EA69C 88 03 00 0B */ lbz r0, 0xb(r3)
+/* 802EEA40 002EA6A0 88 83 00 0A */ lbz r4, 0xa(r3)
+/* 802EEA44 002EA6A4 7C C6 2A 14 */ add r6, r6, r5
+/* 802EEA48 002EA6A8 50 04 44 2E */ rlwimi r4, r0, 8, 0x10, 0x17
+/* 802EEA4C 002EA6AC 88 03 00 0D */ lbz r0, 0xd(r3)
+/* 802EEA50 002EA6B0 88 A3 00 0C */ lbz r5, 0xc(r3)
+/* 802EEA54 002EA6B4 7C C6 22 14 */ add r6, r6, r4
+/* 802EEA58 002EA6B8 50 05 44 2E */ rlwimi r5, r0, 8, 0x10, 0x17
+/* 802EEA5C 002EA6BC 88 83 00 0F */ lbz r4, 0xf(r3)
+/* 802EEA60 002EA6C0 88 03 00 0E */ lbz r0, 0xe(r3)
+/* 802EEA64 002EA6C4 7C C6 2A 14 */ add r6, r6, r5
+/* 802EEA68 002EA6C8 50 80 44 2E */ rlwimi r0, r4, 8, 0x10, 0x17
+/* 802EEA6C 002EA6CC 88 83 00 11 */ lbz r4, 0x11(r3)
+/* 802EEA70 002EA6D0 7C C6 02 14 */ add r6, r6, r0
+/* 802EEA74 002EA6D4 88 A3 00 10 */ lbz r5, 0x10(r3)
+/* 802EEA78 002EA6D8 50 85 44 2E */ rlwimi r5, r4, 8, 0x10, 0x17
+/* 802EEA7C 002EA6DC 88 03 00 13 */ lbz r0, 0x13(r3)
+/* 802EEA80 002EA6E0 88 83 00 12 */ lbz r4, 0x12(r3)
+/* 802EEA84 002EA6E4 7C C6 2A 14 */ add r6, r6, r5
+/* 802EEA88 002EA6E8 50 04 44 2E */ rlwimi r4, r0, 8, 0x10, 0x17
+/* 802EEA8C 002EA6EC 88 03 00 15 */ lbz r0, 0x15(r3)
+/* 802EEA90 002EA6F0 88 A3 00 14 */ lbz r5, 0x14(r3)
+/* 802EEA94 002EA6F4 7C C6 22 14 */ add r6, r6, r4
+/* 802EEA98 002EA6F8 50 05 44 2E */ rlwimi r5, r0, 8, 0x10, 0x17
+/* 802EEA9C 002EA6FC 88 03 00 17 */ lbz r0, 0x17(r3)
+/* 802EEAA0 002EA700 88 83 00 16 */ lbz r4, 0x16(r3)
+/* 802EEAA4 002EA704 7C C6 2A 14 */ add r6, r6, r5
+/* 802EEAA8 002EA708 50 04 44 2E */ rlwimi r4, r0, 8, 0x10, 0x17
+/* 802EEAAC 002EA70C 88 03 00 19 */ lbz r0, 0x19(r3)
+/* 802EEAB0 002EA710 88 A3 00 18 */ lbz r5, 0x18(r3)
+/* 802EEAB4 002EA714 7C C6 22 14 */ add r6, r6, r4
+/* 802EEAB8 002EA718 50 05 44 2E */ rlwimi r5, r0, 8, 0x10, 0x17
+/* 802EEABC 002EA71C 88 03 00 1B */ lbz r0, 0x1b(r3)
+/* 802EEAC0 002EA720 88 83 00 1A */ lbz r4, 0x1a(r3)
+/* 802EEAC4 002EA724 7C C6 2A 14 */ add r6, r6, r5
+/* 802EEAC8 002EA728 50 04 44 2E */ rlwimi r4, r0, 8, 0x10, 0x17
+/* 802EEACC 002EA72C 88 03 00 1D */ lbz r0, 0x1d(r3)
+/* 802EEAD0 002EA730 88 A3 00 1C */ lbz r5, 0x1c(r3)
+/* 802EEAD4 002EA734 7C C6 22 14 */ add r6, r6, r4
+/* 802EEAD8 002EA738 50 05 44 2E */ rlwimi r5, r0, 8, 0x10, 0x17
+/* 802EEADC 002EA73C 88 83 00 1F */ lbz r4, 0x1f(r3)
+/* 802EEAE0 002EA740 88 03 00 1E */ lbz r0, 0x1e(r3)
+/* 802EEAE4 002EA744 7C C6 2A 14 */ add r6, r6, r5
+/* 802EEAE8 002EA748 50 80 44 2E */ rlwimi r0, r4, 8, 0x10, 0x17
+/* 802EEAEC 002EA74C 38 63 00 20 */ addi r3, r3, 0x20
+/* 802EEAF0 002EA750 7C C6 02 14 */ add r6, r6, r0
+/* 802EEAF4 002EA754 42 00 FE FC */ bdnz lbl_802EE9F0
+/* 802EEAF8 002EA758 88 03 00 01 */ lbz r0, 1(r3)
+/* 802EEAFC 002EA75C 88 83 00 00 */ lbz r4, 0(r3)
+/* 802EEB00 002EA760 50 04 44 2E */ rlwimi r4, r0, 8, 0x10, 0x17
+/* 802EEB04 002EA764 88 03 00 03 */ lbz r0, 3(r3)
+/* 802EEB08 002EA768 88 A3 00 02 */ lbz r5, 2(r3)
+/* 802EEB0C 002EA76C 7C C6 22 14 */ add r6, r6, r4
+/* 802EEB10 002EA770 50 05 44 2E */ rlwimi r5, r0, 8, 0x10, 0x17
+/* 802EEB14 002EA774 88 83 00 05 */ lbz r4, 5(r3)
+/* 802EEB18 002EA778 88 03 00 04 */ lbz r0, 4(r3)
+/* 802EEB1C 002EA77C 7C C6 2A 14 */ add r6, r6, r5
+/* 802EEB20 002EA780 50 80 44 2E */ rlwimi r0, r4, 8, 0x10, 0x17
+/* 802EEB24 002EA784 7C C6 02 14 */ add r6, r6, r0
+/* 802EEB28 002EA788 54 C3 84 3E */ srwi r3, r6, 0x10
+/* 802EEB2C 002EA78C 54 C0 04 3E */ clrlwi r0, r6, 0x10
+/* 802EEB30 002EA790 7C 03 02 14 */ add r0, r3, r0
+/* 802EEB34 002EA794 54 03 84 3E */ srwi r3, r0, 0x10
+/* 802EEB38 002EA798 54 00 04 3E */ clrlwi r0, r0, 0x10
+/* 802EEB3C 002EA79C 7C 03 02 14 */ add r0, r3, r0
+/* 802EEB40 002EA7A0 7C 00 00 F8 */ nor r0, r0, r0
+/* 802EEB44 002EA7A4 54 03 04 3E */ clrlwi r3, r0, 0x10
+/* 802EEB48 002EA7A8 4E 80 00 20 */ blr
+
+.global WDP_CompareMemory
+WDP_CompareMemory:
+/* 802EEB4C 002EA7AC 38 00 00 00 */ li r0, 0
+/* 802EEB50 002EA7B0 38 E0 00 00 */ li r7, 0
+/* 802EEB54 002EA7B4 48 00 00 1C */ b lbl_802EEB70
+lbl_802EEB58:
+/* 802EEB58 002EA7B8 88 C4 00 00 */ lbz r6, 0(r4)
+/* 802EEB5C 002EA7BC 38 E7 00 01 */ addi r7, r7, 1
+/* 802EEB60 002EA7C0 88 03 00 00 */ lbz r0, 0(r3)
+/* 802EEB64 002EA7C4 38 63 00 01 */ addi r3, r3, 1
+/* 802EEB68 002EA7C8 38 84 00 01 */ addi r4, r4, 1
+/* 802EEB6C 002EA7CC 7C 06 00 50 */ subf r0, r6, r0
+lbl_802EEB70:
+/* 802EEB70 002EA7D0 2C 00 00 00 */ cmpwi r0, 0
+/* 802EEB74 002EA7D4 40 82 00 0C */ bne lbl_802EEB80
+/* 802EEB78 002EA7D8 7C 07 28 40 */ cmplw r7, r5
+/* 802EEB7C 002EA7DC 41 80 FF DC */ blt lbl_802EEB58
+lbl_802EEB80:
+/* 802EEB80 002EA7E0 7C 03 03 78 */ mr r3, r0
+/* 802EEB84 002EA7E4 4E 80 00 20 */ blr
+
+.global WDP_CopyString
+WDP_CopyString:
+/* 802EEB88 002EA7E8 54 84 F8 7E */ srwi r4, r4, 1
+/* 802EEB8C 002EA7EC 38 C0 00 00 */ li r6, 0
+/* 802EEB90 002EA7F0 7C 89 03 A6 */ mtctr r4
+/* 802EEB94 002EA7F4 28 04 00 00 */ cmplwi r4, 0
+/* 802EEB98 002EA7F8 40 81 00 2C */ ble lbl_802EEBC4
+lbl_802EEB9C:
+/* 802EEB9C 002EA7FC A0 05 00 00 */ lhz r0, 0(r5)
+/* 802EEBA0 002EA800 38 A5 00 02 */ addi r5, r5, 2
+/* 802EEBA4 002EA804 2C 00 00 00 */ cmpwi r0, 0
+/* 802EEBA8 002EA808 41 82 00 1C */ beq lbl_802EEBC4
+/* 802EEBAC 002EA80C 98 03 00 00 */ stb r0, 0(r3)
+/* 802EEBB0 002EA810 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
+/* 802EEBB4 002EA814 38 C6 00 01 */ addi r6, r6, 1
+/* 802EEBB8 002EA818 98 03 00 01 */ stb r0, 1(r3)
+/* 802EEBBC 002EA81C 38 63 00 02 */ addi r3, r3, 2
+/* 802EEBC0 002EA820 42 00 FF DC */ bdnz lbl_802EEB9C
+lbl_802EEBC4:
+/* 802EEBC4 002EA824 7C 06 20 40 */ cmplw r6, r4
+/* 802EEBC8 002EA828 7C 86 20 50 */ subf r4, r6, r4
+/* 802EEBCC 002EA82C 38 A0 00 00 */ li r5, 0
+/* 802EEBD0 002EA830 40 80 00 74 */ bge lbl_802EEC44
+/* 802EEBD4 002EA834 54 80 E8 FF */ rlwinm. r0, r4, 0x1d, 3, 0x1f
+/* 802EEBD8 002EA838 7C 09 03 A6 */ mtctr r0
+/* 802EEBDC 002EA83C 41 82 00 54 */ beq lbl_802EEC30
+lbl_802EEBE0:
+/* 802EEBE0 002EA840 98 A3 00 00 */ stb r5, 0(r3)
+/* 802EEBE4 002EA844 98 A3 00 01 */ stb r5, 1(r3)
+/* 802EEBE8 002EA848 98 A3 00 02 */ stb r5, 2(r3)
+/* 802EEBEC 002EA84C 98 A3 00 03 */ stb r5, 3(r3)
+/* 802EEBF0 002EA850 98 A3 00 04 */ stb r5, 4(r3)
+/* 802EEBF4 002EA854 98 A3 00 05 */ stb r5, 5(r3)
+/* 802EEBF8 002EA858 98 A3 00 06 */ stb r5, 6(r3)
+/* 802EEBFC 002EA85C 98 A3 00 07 */ stb r5, 7(r3)
+/* 802EEC00 002EA860 98 A3 00 08 */ stb r5, 8(r3)
+/* 802EEC04 002EA864 98 A3 00 09 */ stb r5, 9(r3)
+/* 802EEC08 002EA868 98 A3 00 0A */ stb r5, 0xa(r3)
+/* 802EEC0C 002EA86C 98 A3 00 0B */ stb r5, 0xb(r3)
+/* 802EEC10 002EA870 98 A3 00 0C */ stb r5, 0xc(r3)
+/* 802EEC14 002EA874 98 A3 00 0D */ stb r5, 0xd(r3)
+/* 802EEC18 002EA878 98 A3 00 0E */ stb r5, 0xe(r3)
+/* 802EEC1C 002EA87C 98 A3 00 0F */ stb r5, 0xf(r3)
+/* 802EEC20 002EA880 38 63 00 10 */ addi r3, r3, 0x10
+/* 802EEC24 002EA884 42 00 FF BC */ bdnz lbl_802EEBE0
+/* 802EEC28 002EA888 70 84 00 07 */ andi. r4, r4, 7
+/* 802EEC2C 002EA88C 41 82 00 18 */ beq lbl_802EEC44
+lbl_802EEC30:
+/* 802EEC30 002EA890 7C 89 03 A6 */ mtctr r4
+lbl_802EEC34:
+/* 802EEC34 002EA894 98 A3 00 00 */ stb r5, 0(r3)
+/* 802EEC38 002EA898 98 A3 00 01 */ stb r5, 1(r3)
+/* 802EEC3C 002EA89C 38 63 00 02 */ addi r3, r3, 2
+/* 802EEC40 002EA8A0 42 00 FF F4 */ bdnz lbl_802EEC34
+lbl_802EEC44:
+/* 802EEC44 002EA8A4 7C C3 33 78 */ mr r3, r6
+/* 802EEC48 002EA8A8 4E 80 00 20 */ blr
+
+.global WDPi_IsValidSegmentRegion
+WDPi_IsValidSegmentRegion:
+/* 802EEC4C 002EA8AC 2C 07 00 00 */ cmpwi r7, 0
+/* 802EEC50 002EA8B0 38 00 00 00 */ li r0, 0
+/* 802EEC54 002EA8B4 41 82 00 0C */ beq lbl_802EEC60
+/* 802EEC58 002EA8B8 39 00 00 00 */ li r8, 0
+/* 802EEC5C 002EA8BC 91 07 00 00 */ stw r8, 0(r7)
+lbl_802EEC60:
+/* 802EEC60 002EA8C0 2C 83 00 03 */ cmpwi cr1, r3, 3
+/* 802EEC64 002EA8C4 40 84 01 5C */ bge cr1, lbl_802EEDC0
+/* 802EEC68 002EA8C8 7C 88 2B 78 */ or r8, r4, r5
+/* 802EEC6C 002EA8CC 55 08 00 01 */ rlwinm. r8, r8, 0, 0, 0
+/* 802EEC70 002EA8D0 40 82 01 50 */ bne lbl_802EEDC0
+/* 802EEC74 002EA8D4 2C 03 00 01 */ cmpwi r3, 1
+/* 802EEC78 002EA8D8 41 82 00 48 */ beq lbl_802EECC0
+/* 802EEC7C 002EA8DC 40 80 00 10 */ bge lbl_802EEC8C
+/* 802EEC80 002EA8E0 2C 03 00 00 */ cmpwi r3, 0
+/* 802EEC84 002EA8E4 40 80 00 10 */ bge lbl_802EEC94
+/* 802EEC88 002EA8E8 48 00 01 38 */ b lbl_802EEDC0
+lbl_802EEC8C:
+/* 802EEC8C 002EA8EC 40 84 01 34 */ bge cr1, lbl_802EEDC0
+/* 802EEC90 002EA8F0 48 00 00 58 */ b lbl_802EECE8
+lbl_802EEC94:
+/* 802EEC94 002EA8F4 3C 60 02 80 */ lis r3, 0x027FFE00@ha
+/* 802EEC98 002EA8F8 38 00 00 00 */ li r0, 0
+/* 802EEC9C 002EA8FC 38 C3 FE 00 */ addi r6, r3, 0x027FFE00@l
+/* 802EECA0 002EA900 7C 04 30 40 */ cmplw r4, r6
+/* 802EECA4 002EA904 41 80 01 1C */ blt lbl_802EEDC0
+/* 802EECA8 002EA908 7C 84 2A 14 */ add r4, r4, r5
+/* 802EECAC 002EA90C 38 63 FF 60 */ addi r3, r3, -160
+/* 802EECB0 002EA910 7C 04 18 40 */ cmplw r4, r3
+/* 802EECB4 002EA914 41 81 01 0C */ bgt lbl_802EEDC0
+/* 802EECB8 002EA918 38 00 00 01 */ li r0, 1
+/* 802EECBC 002EA91C 48 00 01 04 */ b lbl_802EEDC0
+lbl_802EECC0:
+/* 802EECC0 002EA920 3C 60 02 00 */ lis r3, 0x200
+/* 802EECC4 002EA924 38 00 00 00 */ li r0, 0
+/* 802EECC8 002EA928 7C 04 18 40 */ cmplw r4, r3
+/* 802EECCC 002EA92C 41 80 00 F4 */ blt lbl_802EEDC0
+/* 802EECD0 002EA930 7C 84 2A 14 */ add r4, r4, r5
+/* 802EECD4 002EA934 3C 60 02 2C */ lis r3, 0x22c
+/* 802EECD8 002EA938 7C 04 18 40 */ cmplw r4, r3
+/* 802EECDC 002EA93C 41 81 00 E4 */ bgt lbl_802EEDC0
+/* 802EECE0 002EA940 38 00 00 01 */ li r0, 1
+/* 802EECE4 002EA944 48 00 00 DC */ b lbl_802EEDC0
+lbl_802EECE8:
+/* 802EECE8 002EA948 3C 60 02 00 */ lis r3, 0x200
+/* 802EECEC 002EA94C 39 20 00 00 */ li r9, 0
+/* 802EECF0 002EA950 7C 04 18 40 */ cmplw r4, r3
+/* 802EECF4 002EA954 41 80 00 18 */ blt lbl_802EED0C
+/* 802EECF8 002EA958 7D 04 2A 14 */ add r8, r4, r5
+/* 802EECFC 002EA95C 3C 60 02 30 */ lis r3, 0x230
+/* 802EED00 002EA960 7C 08 18 40 */ cmplw r8, r3
+/* 802EED04 002EA964 41 81 00 08 */ bgt lbl_802EED0C
+/* 802EED08 002EA968 39 20 00 01 */ li r9, 1
+lbl_802EED0C:
+/* 802EED0C 002EA96C 2C 09 00 00 */ cmpwi r9, 0
+/* 802EED10 002EA970 41 82 00 0C */ beq lbl_802EED1C
+/* 802EED14 002EA974 38 00 00 01 */ li r0, 1
+/* 802EED18 002EA978 48 00 00 A8 */ b lbl_802EEDC0
+lbl_802EED1C:
+/* 802EED1C 002EA97C 2C 06 00 00 */ cmpwi r6, 0
+/* 802EED20 002EA980 41 82 00 A0 */ beq lbl_802EEDC0
+/* 802EED24 002EA984 3C 60 02 30 */ lis r3, 0x230
+/* 802EED28 002EA988 39 00 00 00 */ li r8, 0
+/* 802EED2C 002EA98C 7C 04 18 40 */ cmplw r4, r3
+/* 802EED30 002EA990 41 80 00 1C */ blt lbl_802EED4C
+/* 802EED34 002EA994 3C 60 02 40 */ lis r3, 0x023FE800@ha
+/* 802EED38 002EA998 7C C4 2A 14 */ add r6, r4, r5
+/* 802EED3C 002EA99C 38 63 E8 00 */ addi r3, r3, 0x023FE800@l
+/* 802EED40 002EA9A0 7C 06 18 40 */ cmplw r6, r3
+/* 802EED44 002EA9A4 41 81 00 08 */ bgt lbl_802EED4C
+/* 802EED48 002EA9A8 39 00 00 01 */ li r8, 1
+lbl_802EED4C:
+/* 802EED4C 002EA9AC 2C 08 00 00 */ cmpwi r8, 0
+/* 802EED50 002EA9B0 41 82 00 28 */ beq lbl_802EED78
+/* 802EED54 002EA9B4 3C 60 00 04 */ lis r3, 4
+/* 802EED58 002EA9B8 7C 05 18 40 */ cmplw r5, r3
+/* 802EED5C 002EA9BC 41 81 00 1C */ bgt lbl_802EED78
+/* 802EED60 002EA9C0 2C 07 00 00 */ cmpwi r7, 0
+/* 802EED64 002EA9C4 38 00 00 01 */ li r0, 1
+/* 802EED68 002EA9C8 41 82 00 58 */ beq lbl_802EEDC0
+/* 802EED6C 002EA9CC 38 60 00 01 */ li r3, 1
+/* 802EED70 002EA9D0 90 67 00 00 */ stw r3, 0(r7)
+/* 802EED74 002EA9D4 48 00 00 4C */ b lbl_802EEDC0
+lbl_802EED78:
+/* 802EED78 002EA9D8 3C 60 03 80 */ lis r3, 0x037F8000@ha
+/* 802EED7C 002EA9DC 38 C0 00 00 */ li r6, 0
+/* 802EED80 002EA9E0 38 63 80 00 */ addi r3, r3, 0x037F8000@l
+/* 802EED84 002EA9E4 7C 04 18 40 */ cmplw r4, r3
+/* 802EED88 002EA9E8 41 80 00 1C */ blt lbl_802EEDA4
+/* 802EED8C 002EA9EC 3C 60 03 81 */ lis r3, 0x0380F000@ha
+/* 802EED90 002EA9F0 7C 84 2A 14 */ add r4, r4, r5
+/* 802EED94 002EA9F4 38 63 F0 00 */ addi r3, r3, 0x0380F000@l
+/* 802EED98 002EA9F8 7C 04 18 40 */ cmplw r4, r3
+/* 802EED9C 002EA9FC 41 81 00 08 */ bgt lbl_802EEDA4
+/* 802EEDA0 002EAA00 38 C0 00 01 */ li r6, 1
+lbl_802EEDA4:
+/* 802EEDA4 002EAA04 2C 06 00 00 */ cmpwi r6, 0
+/* 802EEDA8 002EAA08 41 82 00 18 */ beq lbl_802EEDC0
+/* 802EEDAC 002EAA0C 2C 07 00 00 */ cmpwi r7, 0
+/* 802EEDB0 002EAA10 38 00 00 01 */ li r0, 1
+/* 802EEDB4 002EAA14 41 82 00 0C */ beq lbl_802EEDC0
+/* 802EEDB8 002EAA18 38 60 00 01 */ li r3, 1
+/* 802EEDBC 002EAA1C 90 67 00 00 */ stw r3, 0(r7)
+lbl_802EEDC0:
+/* 802EEDC0 002EAA20 7C 03 03 78 */ mr r3, r0
+/* 802EEDC4 002EAA24 4E 80 00 20 */ blr
+
+.global WDPi_InitSegmentMapper
+WDPi_InitSegmentMapper:
+/* 802EEDC8 002EAA28 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802EEDCC 002EAA2C 7C 08 02 A6 */ mflr r0
+/* 802EEDD0 002EAA30 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802EEDD4 002EAA34 39 61 00 30 */ addi r11, r1, 0x30
+/* 802EEDD8 002EAA38 4B ED 83 45 */ bl _savegpr_24
+/* 802EEDDC 002EAA3C 7C 7B 1B 78 */ mr r27, r3
+/* 802EEDE0 002EAA40 7C 9C 23 78 */ mr r28, r4
+/* 802EEDE4 002EAA44 3B A5 FF FA */ addi r29, r5, -6
+/* 802EEDE8 002EAA48 3B C0 00 00 */ li r30, 0
+/* 802EEDEC 002EAA4C 3B E0 00 00 */ li r31, 0
+/* 802EEDF0 002EAA50 3B 40 00 00 */ li r26, 0
+/* 802EEDF4 002EAA54 3B 20 00 00 */ li r25, 0
+lbl_802EEDF8:
+/* 802EEDF8 002EAA58 7D 3C D2 14 */ add r9, r28, r26
+/* 802EEDFC 002EAA5C 7F E3 FB 78 */ mr r3, r31
+/* 802EEE00 002EAA60 88 09 00 15 */ lbz r0, 0x15(r9)
+/* 802EEE04 002EAA64 38 C0 00 01 */ li r6, 1
+/* 802EEE08 002EAA68 8B 09 00 14 */ lbz r24, 0x14(r9)
+/* 802EEE0C 002EAA6C 38 E0 00 00 */ li r7, 0
+/* 802EEE10 002EAA70 50 18 44 2E */ rlwimi r24, r0, 8, 0x10, 0x17
+/* 802EEE14 002EAA74 88 89 00 16 */ lbz r4, 0x16(r9)
+/* 802EEE18 002EAA78 88 09 00 11 */ lbz r0, 0x11(r9)
+/* 802EEE1C 002EAA7C 50 98 82 1E */ rlwimi r24, r4, 0x10, 8, 0xf
+/* 802EEE20 002EAA80 88 A9 00 17 */ lbz r5, 0x17(r9)
+/* 802EEE24 002EAA84 88 89 00 10 */ lbz r4, 0x10(r9)
+/* 802EEE28 002EAA88 50 04 44 2E */ rlwimi r4, r0, 8, 0x10, 0x17
+/* 802EEE2C 002EAA8C 89 09 00 12 */ lbz r8, 0x12(r9)
+/* 802EEE30 002EAA90 50 B8 C0 0E */ rlwimi r24, r5, 0x18, 0, 7
+/* 802EEE34 002EAA94 88 09 00 13 */ lbz r0, 0x13(r9)
+/* 802EEE38 002EAA98 7F 05 C3 78 */ mr r5, r24
+/* 802EEE3C 002EAA9C 51 04 82 1E */ rlwimi r4, r8, 0x10, 8, 0xf
+/* 802EEE40 002EAAA0 50 04 C0 0E */ rlwimi r4, r0, 0x18, 0, 7
+/* 802EEE44 002EAAA4 4B FF FE 09 */ bl WDPi_IsValidSegmentRegion
+/* 802EEE48 002EAAA8 2C 03 00 00 */ cmpwi r3, 0
+/* 802EEE4C 002EAAAC 40 82 00 0C */ bne lbl_802EEE58
+/* 802EEE50 002EAAB0 3B C0 00 00 */ li r30, 0
+/* 802EEE54 002EAAB4 48 00 00 30 */ b lbl_802EEE84
+lbl_802EEE58:
+/* 802EEE58 002EAAB8 7C 78 EA 14 */ add r3, r24, r29
+/* 802EEE5C 002EAABC 7C 9B CA 14 */ add r4, r27, r25
+/* 802EEE60 002EAAC0 38 03 FF FF */ addi r0, r3, -1
+/* 802EEE64 002EAAC4 3B FF 00 01 */ addi r31, r31, 1
+/* 802EEE68 002EAAC8 7C 00 EB 96 */ divwu r0, r0, r29
+/* 802EEE6C 002EAACC B3 C4 00 06 */ sth r30, 6(r4)
+/* 802EEE70 002EAAD0 2C 1F 00 03 */ cmpwi r31, 3
+/* 802EEE74 002EAAD4 3B 5A 00 10 */ addi r26, r26, 0x10
+/* 802EEE78 002EAAD8 3B 39 00 02 */ addi r25, r25, 2
+/* 802EEE7C 002EAADC 7F DE 02 14 */ add r30, r30, r0
+/* 802EEE80 002EAAE0 41 80 FF 78 */ blt lbl_802EEDF8
+lbl_802EEE84:
+/* 802EEE84 002EAAE4 28 1E 30 00 */ cmplwi r30, 0x3000
+/* 802EEE88 002EAAE8 41 80 00 08 */ blt lbl_802EEE90
+/* 802EEE8C 002EAAEC 3B C0 00 00 */ li r30, 0
+lbl_802EEE90:
+/* 802EEE90 002EAAF0 57 A0 04 3E */ clrlwi r0, r29, 0x10
+/* 802EEE94 002EAAF4 B3 DB 00 04 */ sth r30, 4(r27)
+/* 802EEE98 002EAAF8 7F 83 E3 78 */ mr r3, r28
+/* 802EEE9C 002EAAFC 38 9B 00 0C */ addi r4, r27, 0xc
+/* 802EEEA0 002EAB00 90 1B 00 00 */ stw r0, 0(r27)
+/* 802EEEA4 002EAB04 38 A0 00 E4 */ li r5, 0xe4
+/* 802EEEA8 002EAB08 48 00 51 65 */ bl func_802F400C
+/* 802EEEAC 002EAB0C 39 61 00 30 */ addi r11, r1, 0x30
+/* 802EEEB0 002EAB10 7F C3 F3 78 */ mr r3, r30
+/* 802EEEB4 002EAB14 4B ED 82 B5 */ bl _restgpr_24
+/* 802EEEB8 002EAB18 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802EEEBC 002EAB1C 7C 08 03 A6 */ mtlr r0
+/* 802EEEC0 002EAB20 38 21 00 30 */ addi r1, r1, 0x30
+/* 802EEEC4 002EAB24 4E 80 00 20 */ blr
+
+.global WDPi_GetSegmentRegion
+WDPi_GetSegmentRegion:
+/* 802EEEC8 002EAB28 A0 03 00 04 */ lhz r0, 4(r3)
+/* 802EEECC 002EAB2C 38 E0 00 00 */ li r7, 0
+/* 802EEED0 002EAB30 7C 04 00 40 */ cmplw r4, r0
+/* 802EEED4 002EAB34 40 80 00 78 */ bge lbl_802EEF4C
+/* 802EEED8 002EAB38 38 C3 00 06 */ addi r6, r3, 6
+/* 802EEEDC 002EAB3C 39 00 00 03 */ li r8, 3
+/* 802EEEE0 002EAB40 48 00 00 60 */ b lbl_802EEF40
+lbl_802EEEE4:
+/* 802EEEE4 002EAB44 A0 06 00 06 */ lhz r0, 6(r6)
+/* 802EEEE8 002EAB48 7D 20 20 51 */ subf. r9, r0, r4
+/* 802EEEEC 002EAB4C 41 80 00 54 */ blt lbl_802EEF40
+/* 802EEEF0 002EAB50 55 00 20 36 */ slwi r0, r8, 4
+/* 802EEEF4 002EAB54 80 83 00 00 */ lwz r4, 0(r3)
+/* 802EEEF8 002EAB58 7C E3 02 14 */ add r7, r3, r0
+/* 802EEEFC 002EAB5C 91 05 00 00 */ stw r8, 0(r5)
+/* 802EEF00 002EAB60 7C 09 21 D6 */ mullw r0, r9, r4
+/* 802EEF04 002EAB64 88 67 00 21 */ lbz r3, 0x21(r7)
+/* 802EEF08 002EAB68 89 07 00 20 */ lbz r8, 0x20(r7)
+/* 802EEF0C 002EAB6C 50 68 44 2E */ rlwimi r8, r3, 8, 0x10, 0x17
+/* 802EEF10 002EAB70 88 C7 00 22 */ lbz r6, 0x22(r7)
+/* 802EEF14 002EAB74 88 67 00 23 */ lbz r3, 0x23(r7)
+/* 802EEF18 002EAB78 50 C8 82 1E */ rlwimi r8, r6, 0x10, 8, 0xf
+/* 802EEF1C 002EAB7C 90 05 00 04 */ stw r0, 4(r5)
+/* 802EEF20 002EAB80 50 68 C0 0E */ rlwimi r8, r3, 0x18, 0, 7
+/* 802EEF24 002EAB84 7C 00 40 50 */ subf r0, r0, r8
+/* 802EEF28 002EAB88 7C 00 20 40 */ cmplw r0, r4
+/* 802EEF2C 002EAB8C 90 05 00 08 */ stw r0, 8(r5)
+/* 802EEF30 002EAB90 40 81 00 08 */ ble lbl_802EEF38
+/* 802EEF34 002EAB94 90 85 00 08 */ stw r4, 8(r5)
+lbl_802EEF38:
+/* 802EEF38 002EAB98 38 E0 00 01 */ li r7, 1
+/* 802EEF3C 002EAB9C 48 00 00 10 */ b lbl_802EEF4C
+lbl_802EEF40:
+/* 802EEF40 002EABA0 35 08 FF FF */ addic. r8, r8, -1
+/* 802EEF44 002EABA4 38 C6 FF FE */ addi r6, r6, -2
+/* 802EEF48 002EABA8 40 80 FF 9C */ bge lbl_802EEEE4
+lbl_802EEF4C:
+/* 802EEF4C 002EABAC 7C E3 3B 78 */ mr r3, r7
+/* 802EEF50 002EABB0 4E 80 00 20 */ blr
+
+.global WDP_MergeBitset
+WDP_MergeBitset:
+/* 802EEF54 002EABB4 7C 03 00 D0 */ neg r0, r3
+/* 802EEF58 002EABB8 7C 00 00 34 */ cntlzw r0, r0
+/* 802EEF5C 002EABBC 54 07 D9 7F */ rlwinm. r7, r0, 0x1b, 5, 0x1f
+/* 802EEF60 002EABC0 40 82 00 38 */ bne lbl_802EEF98
+/* 802EEF64 002EABC4 7C 05 20 40 */ cmplw r5, r4
+/* 802EEF68 002EABC8 40 80 00 30 */ bge lbl_802EEF98
+/* 802EEF6C 002EABCC 54 A6 E8 FA */ rlwinm r6, r5, 0x1d, 3, 0x1d
+/* 802EEF70 002EABD0 54 A0 06 FE */ clrlwi r0, r5, 0x1b
+/* 802EEF74 002EABD4 38 A0 00 01 */ li r5, 1
+/* 802EEF78 002EABD8 7C 83 30 2E */ lwzx r4, r3, r6
+/* 802EEF7C 002EABDC 7C A5 00 30 */ slw r5, r5, r0
+/* 802EEF80 002EABE0 7C A0 20 38 */ and r0, r5, r4
+/* 802EEF84 002EABE4 7C 00 00 34 */ cntlzw r0, r0
+/* 802EEF88 002EABE8 54 07 D9 7F */ rlwinm. r7, r0, 0x1b, 5, 0x1f
+/* 802EEF8C 002EABEC 41 82 00 0C */ beq lbl_802EEF98
+/* 802EEF90 002EABF0 7C 80 2B 78 */ or r0, r4, r5
+/* 802EEF94 002EABF4 7C 03 31 2E */ stwx r0, r3, r6
+lbl_802EEF98:
+/* 802EEF98 002EABF8 7C E3 3B 78 */ mr r3, r7
+/* 802EEF9C 002EABFC 4E 80 00 20 */ blr
diff --git a/asm/SDK/NTR/wdp_parent.s b/asm/SDK/NTR/wdp_parent.s new file mode 100644 index 0000000..5a93eb0 --- /dev/null +++ b/asm/SDK/NTR/wdp_parent.s @@ -0,0 +1,1539 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global WDPi_SwitchActiveSession
+WDPi_SwitchActiveSession:
+/* 802EEFA0 002EAC00 80 03 00 04 */ lwz r0, 4(r3)
+/* 802EEFA4 002EAC04 38 C0 00 00 */ li r6, 0
+/* 802EEFA8 002EAC08 2C 00 00 00 */ cmpwi r0, 0
+/* 802EEFAC 002EAC0C 40 82 00 10 */ bne lbl_802EEFBC
+/* 802EEFB0 002EAC10 38 00 00 00 */ li r0, 0
+/* 802EEFB4 002EAC14 90 03 00 10 */ stw r0, 0x10(r3)
+/* 802EEFB8 002EAC18 48 00 00 44 */ b lbl_802EEFFC
+lbl_802EEFBC:
+/* 802EEFBC 002EAC1C 80 83 00 10 */ lwz r4, 0x10(r3)
+/* 802EEFC0 002EAC20 2C 04 00 00 */ cmpwi r4, 0
+/* 802EEFC4 002EAC24 41 82 00 14 */ beq lbl_802EEFD8
+/* 802EEFC8 002EAC28 80 A4 00 00 */ lwz r5, 0(r4)
+/* 802EEFCC 002EAC2C 2C 05 00 00 */ cmpwi r5, 0
+/* 802EEFD0 002EAC30 41 82 00 08 */ beq lbl_802EEFD8
+/* 802EEFD4 002EAC34 48 00 00 08 */ b lbl_802EEFDC
+lbl_802EEFD8:
+/* 802EEFD8 002EAC38 7C 05 03 78 */ mr r5, r0
+lbl_802EEFDC:
+/* 802EEFDC 002EAC3C 38 80 00 00 */ li r4, 0
+/* 802EEFE0 002EAC40 90 A3 00 10 */ stw r5, 0x10(r3)
+/* 802EEFE4 002EAC44 38 00 00 01 */ li r0, 1
+/* 802EEFE8 002EAC48 38 C0 00 01 */ li r6, 1
+/* 802EEFEC 002EAC4C 98 83 00 16 */ stb r4, 0x16(r3)
+/* 802EEFF0 002EAC50 88 85 03 6A */ lbz r4, 0x36a(r5)
+/* 802EEFF4 002EAC54 98 83 00 17 */ stb r4, 0x17(r3)
+/* 802EEFF8 002EAC58 B0 03 00 14 */ sth r0, 0x14(r3)
+lbl_802EEFFC:
+/* 802EEFFC 002EAC5C 7C C3 33 78 */ mr r3, r6
+/* 802EF000 002EAC60 4E 80 00 20 */ blr
+
+.global WDPi_UpdateStatus
+WDPi_UpdateStatus:
+/* 802EF004 002EAC64 1C C4 00 34 */ mulli r6, r4, 0x34
+/* 802EF008 002EAC68 38 00 00 01 */ li r0, 1
+/* 802EF00C 002EAC6C 7C 09 20 30 */ slw r9, r0, r4
+/* 802EF010 002EAC70 7C E3 32 14 */ add r7, r3, r6
+/* 802EF014 002EAC74 80 07 00 28 */ lwz r0, 0x28(r7)
+/* 802EF018 002EAC78 55 2A 04 3E */ clrlwi r10, r9, 0x10
+/* 802EF01C 002EAC7C 80 C7 00 2C */ lwz r6, 0x2c(r7)
+/* 802EF020 002EAC80 2C 00 00 06 */ cmpwi r0, 6
+/* 802EF024 002EAC84 41 82 00 50 */ beq lbl_802EF074
+/* 802EF028 002EAC88 40 80 00 10 */ bge lbl_802EF038
+/* 802EF02C 002EAC8C 2C 00 00 01 */ cmpwi r0, 1
+/* 802EF030 002EAC90 41 82 00 14 */ beq lbl_802EF044
+/* 802EF034 002EAC94 48 00 00 4C */ b lbl_802EF080
+lbl_802EF038:
+/* 802EF038 002EAC98 2C 00 00 08 */ cmpwi r0, 8
+/* 802EF03C 002EAC9C 40 80 00 44 */ bge lbl_802EF080
+/* 802EF040 002EACA0 48 00 00 14 */ b lbl_802EF054
+lbl_802EF044:
+/* 802EF044 002EACA4 A0 03 03 68 */ lhz r0, 0x368(r3)
+/* 802EF048 002EACA8 7C 00 50 78 */ andc r0, r0, r10
+/* 802EF04C 002EACAC B0 03 03 68 */ sth r0, 0x368(r3)
+/* 802EF050 002EACB0 48 00 00 30 */ b lbl_802EF080
+lbl_802EF054:
+/* 802EF054 002EACB4 A0 06 05 D4 */ lhz r0, 0x5d4(r6)
+/* 802EF058 002EACB8 7D 48 50 F8 */ nor r8, r10, r10
+/* 802EF05C 002EACBC 7C 00 40 38 */ and r0, r0, r8
+/* 802EF060 002EACC0 B0 06 05 D4 */ sth r0, 0x5d4(r6)
+/* 802EF064 002EACC4 A0 03 03 6A */ lhz r0, 0x36a(r3)
+/* 802EF068 002EACC8 7C 00 40 38 */ and r0, r0, r8
+/* 802EF06C 002EACCC B0 03 03 6A */ sth r0, 0x36a(r3)
+/* 802EF070 002EACD0 48 00 00 10 */ b lbl_802EF080
+lbl_802EF074:
+/* 802EF074 002EACD4 A0 03 03 6E */ lhz r0, 0x36e(r3)
+/* 802EF078 002EACD8 7C 00 50 78 */ andc r0, r0, r10
+/* 802EF07C 002EACDC B0 03 03 6E */ sth r0, 0x36e(r3)
+lbl_802EF080:
+/* 802EF080 002EACE0 2C 05 00 05 */ cmpwi r5, 5
+/* 802EF084 002EACE4 90 A7 00 28 */ stw r5, 0x28(r7)
+/* 802EF088 002EACE8 41 82 00 A8 */ beq lbl_802EF130
+/* 802EF08C 002EACEC 40 80 00 1C */ bge lbl_802EF0A8
+/* 802EF090 002EACF0 2C 05 00 01 */ cmpwi r5, 1
+/* 802EF094 002EACF4 41 82 00 24 */ beq lbl_802EF0B8
+/* 802EF098 002EACF8 41 80 00 98 */ blt lbl_802EF130
+/* 802EF09C 002EACFC 2C 05 00 04 */ cmpwi r5, 4
+/* 802EF0A0 002EAD00 40 80 00 6C */ bge lbl_802EF10C
+/* 802EF0A4 002EAD04 48 00 00 8C */ b lbl_802EF130
+lbl_802EF0A8:
+/* 802EF0A8 002EAD08 2C 05 00 07 */ cmpwi r5, 7
+/* 802EF0AC 002EAD0C 41 82 00 1C */ beq lbl_802EF0C8
+/* 802EF0B0 002EAD10 40 80 00 80 */ bge lbl_802EF130
+/* 802EF0B4 002EAD14 48 00 00 70 */ b lbl_802EF124
+lbl_802EF0B8:
+/* 802EF0B8 002EAD18 A0 03 03 68 */ lhz r0, 0x368(r3)
+/* 802EF0BC 002EAD1C 7C 00 53 78 */ or r0, r0, r10
+/* 802EF0C0 002EAD20 B0 03 03 68 */ sth r0, 0x368(r3)
+/* 802EF0C4 002EAD24 48 00 00 6C */ b lbl_802EF130
+lbl_802EF0C8:
+/* 802EF0C8 002EAD28 A0 A6 05 D4 */ lhz r5, 0x5d4(r6)
+/* 802EF0CC 002EAD2C 55 20 04 3E */ clrlwi r0, r9, 0x10
+/* 802EF0D0 002EAD30 7C A5 53 78 */ or r5, r5, r10
+/* 802EF0D4 002EAD34 B0 A6 05 D4 */ sth r5, 0x5d4(r6)
+/* 802EF0D8 002EAD38 A0 A3 03 6A */ lhz r5, 0x36a(r3)
+/* 802EF0DC 002EAD3C 7C A5 53 78 */ or r5, r5, r10
+/* 802EF0E0 002EAD40 B0 A3 03 6A */ sth r5, 0x36a(r3)
+/* 802EF0E4 002EAD44 A0 A6 04 D8 */ lhz r5, 0x4d8(r6)
+/* 802EF0E8 002EAD48 7C A5 4B 78 */ or r5, r5, r9
+/* 802EF0EC 002EAD4C B0 A6 04 D8 */ sth r5, 0x4d8(r6)
+/* 802EF0F0 002EAD50 A0 A6 04 DA */ lhz r5, 0x4da(r6)
+/* 802EF0F4 002EAD54 7C A5 4B 78 */ or r5, r5, r9
+/* 802EF0F8 002EAD58 B0 A6 04 DA */ sth r5, 0x4da(r6)
+/* 802EF0FC 002EAD5C A0 A6 05 D2 */ lhz r5, 0x5d2(r6)
+/* 802EF100 002EAD60 7C A0 03 78 */ or r0, r5, r0
+/* 802EF104 002EAD64 B0 06 05 D2 */ sth r0, 0x5d2(r6)
+/* 802EF108 002EAD68 48 00 00 28 */ b lbl_802EF130
+lbl_802EF10C:
+/* 802EF10C 002EAD6C A0 A6 05 D0 */ lhz r5, 0x5d0(r6)
+/* 802EF110 002EAD70 38 00 00 00 */ li r0, 0
+/* 802EF114 002EAD74 7C A5 4B 78 */ or r5, r5, r9
+/* 802EF118 002EAD78 B0 A6 05 D0 */ sth r5, 0x5d0(r6)
+/* 802EF11C 002EAD7C B0 06 05 CC */ sth r0, 0x5cc(r6)
+/* 802EF120 002EAD80 48 00 00 10 */ b lbl_802EF130
+lbl_802EF124:
+/* 802EF124 002EAD84 A0 03 03 6E */ lhz r0, 0x36e(r3)
+/* 802EF128 002EAD88 7C 00 53 78 */ or r0, r0, r10
+/* 802EF12C 002EAD8C B0 03 03 6E */ sth r0, 0x36e(r3)
+lbl_802EF130:
+/* 802EF130 002EAD90 81 83 00 00 */ lwz r12, 0(r3)
+/* 802EF134 002EAD94 2C 0C 00 00 */ cmpwi r12, 0
+/* 802EF138 002EAD98 4D 82 00 20 */ beqlr
+/* 802EF13C 002EAD9C 7C 85 23 78 */ mr r5, r4
+/* 802EF140 002EADA0 38 80 00 00 */ li r4, 0
+/* 802EF144 002EADA4 7D 89 03 A6 */ mtctr r12
+/* 802EF148 002EADA8 4E 80 04 20 */ bctr
+/* 802EF14C 002EADAC 4E 80 00 20 */ blr
+
+.global WDP_InitParentContext
+WDP_InitParentContext:
+/* 802EF150 002EADB0 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802EF154 002EADB4 7C 08 02 A6 */ mflr r0
+/* 802EF158 002EADB8 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802EF15C 002EADBC 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802EF160 002EADC0 3B E0 00 00 */ li r31, 0
+/* 802EF164 002EADC4 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802EF168 002EADC8 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802EF16C 002EADCC 7C DD 33 78 */ mr r29, r6
+/* 802EF170 002EADD0 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802EF174 002EADD4 7C 7C 1B 78 */ mr r28, r3
+/* 802EF178 002EADD8 90 83 00 00 */ stw r4, 0(r3)
+/* 802EF17C 002EADDC 38 80 00 14 */ li r4, 0x14
+/* 802EF180 002EADE0 90 E3 00 24 */ stw r7, 0x24(r3)
+/* 802EF184 002EADE4 93 E3 00 04 */ stw r31, 4(r3)
+/* 802EF188 002EADE8 93 E3 00 10 */ stw r31, 0x10(r3)
+/* 802EF18C 002EADEC 93 E3 00 18 */ stw r31, 0x18(r3)
+/* 802EF190 002EADF0 93 E3 00 1C */ stw r31, 0x1c(r3)
+/* 802EF194 002EADF4 9B E3 00 17 */ stb r31, 0x17(r3)
+/* 802EF198 002EADF8 93 E3 00 20 */ stw r31, 0x20(r3)
+/* 802EF19C 002EADFC B3 E3 03 68 */ sth r31, 0x368(r3)
+/* 802EF1A0 002EAE00 B3 E3 03 6A */ sth r31, 0x36a(r3)
+/* 802EF1A4 002EAE04 B3 E3 03 6C */ sth r31, 0x36c(r3)
+/* 802EF1A8 002EAE08 B3 E3 03 6E */ sth r31, 0x36e(r3)
+/* 802EF1AC 002EAE0C B3 E3 03 70 */ sth r31, 0x370(r3)
+/* 802EF1B0 002EAE10 B3 E3 03 72 */ sth r31, 0x372(r3)
+/* 802EF1B4 002EAE14 93 E3 00 08 */ stw r31, 8(r3)
+/* 802EF1B8 002EAE18 38 63 00 36 */ addi r3, r3, 0x36
+/* 802EF1BC 002EAE1C 4B FF F9 CD */ bl WDP_CopyString
+/* 802EF1C0 002EAE20 88 1C 00 34 */ lbz r0, 0x34(r28)
+/* 802EF1C4 002EAE24 53 A0 07 3E */ rlwimi r0, r29, 0, 0x1c, 0x1f
+/* 802EF1C8 002EAE28 98 7C 00 35 */ stb r3, 0x35(r28)
+/* 802EF1CC 002EAE2C 3B DC 00 5C */ addi r30, r28, 0x5c
+/* 802EF1D0 002EAE30 3B A0 00 01 */ li r29, 1
+/* 802EF1D4 002EAE34 98 1C 00 34 */ stb r0, 0x34(r28)
+lbl_802EF1D8:
+/* 802EF1D8 002EAE38 7F 83 E3 78 */ mr r3, r28
+/* 802EF1DC 002EAE3C 7F A4 EB 78 */ mr r4, r29
+/* 802EF1E0 002EAE40 38 A0 00 00 */ li r5, 0
+/* 802EF1E4 002EAE44 4B FF FE 21 */ bl WDPi_UpdateStatus
+/* 802EF1E8 002EAE48 93 FE 00 04 */ stw r31, 4(r30)
+/* 802EF1EC 002EAE4C 38 7E 00 08 */ addi r3, r30, 8
+/* 802EF1F0 002EAE50 38 80 00 00 */ li r4, 0
+/* 802EF1F4 002EAE54 38 A0 00 20 */ li r5, 0x20
+/* 802EF1F8 002EAE58 48 00 4E 11 */ bl func_802F4008
+/* 802EF1FC 002EAE5C 38 7E 00 28 */ addi r3, r30, 0x28
+/* 802EF200 002EAE60 38 80 00 00 */ li r4, 0
+/* 802EF204 002EAE64 38 A0 00 04 */ li r5, 4
+/* 802EF208 002EAE68 48 00 4E 01 */ bl func_802F4008
+/* 802EF20C 002EAE6C 93 FE 00 2C */ stw r31, 0x2c(r30)
+/* 802EF210 002EAE70 3B BD 00 01 */ addi r29, r29, 1
+/* 802EF214 002EAE74 2C 1D 00 10 */ cmpwi r29, 0x10
+/* 802EF218 002EAE78 93 FE 00 30 */ stw r31, 0x30(r30)
+/* 802EF21C 002EAE7C 3B DE 00 34 */ addi r30, r30, 0x34
+/* 802EF220 002EAE80 41 80 FF B8 */ blt lbl_802EF1D8
+/* 802EF224 002EAE84 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802EF228 002EAE88 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802EF22C 002EAE8C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802EF230 002EAE90 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802EF234 002EAE94 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802EF238 002EAE98 7C 08 03 A6 */ mtlr r0
+/* 802EF23C 002EAE9C 38 21 00 20 */ addi r1, r1, 0x20
+/* 802EF240 002EAEA0 4E 80 00 20 */ blr
+
+.global WDP_CallBeaconSendHook
+WDP_CallBeaconSendHook:
+/* 802EF244 002EAEA4 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802EF248 002EAEA8 7C 08 02 A6 */ mflr r0
+/* 802EF24C 002EAEAC 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802EF250 002EAEB0 39 61 00 30 */ addi r11, r1, 0x30
+/* 802EF254 002EAEB4 4B ED 7E C5 */ bl _savegpr_23
+/* 802EF258 002EAEB8 7C 7A 1B 78 */ mr r26, r3
+/* 802EF25C 002EAEBC 7C 9B 23 78 */ mr r27, r4
+/* 802EF260 002EAEC0 3B E0 FF FF */ li r31, -1
+/* 802EF264 002EAEC4 4B F7 F4 F9 */ bl OSDisableInterrupts
+/* 802EF268 002EAEC8 80 9A 00 08 */ lwz r4, 8(r26)
+/* 802EF26C 002EAECC 38 04 00 01 */ addi r0, r4, 1
+/* 802EF270 002EAED0 2C 00 00 01 */ cmpwi r0, 1
+/* 802EF274 002EAED4 90 1A 00 08 */ stw r0, 8(r26)
+/* 802EF278 002EAED8 40 82 00 08 */ bne lbl_802EF280
+/* 802EF27C 002EAEDC 90 7A 00 0C */ stw r3, 0xc(r26)
+lbl_802EF280:
+/* 802EF280 002EAEE0 80 BA 00 04 */ lwz r5, 4(r26)
+/* 802EF284 002EAEE4 38 C0 00 00 */ li r6, 0
+/* 802EF288 002EAEE8 38 00 00 03 */ li r0, 3
+/* 802EF28C 002EAEEC 48 00 02 08 */ b lbl_802EF494
+lbl_802EF290:
+/* 802EF290 002EAEF0 A0 65 04 DA */ lhz r3, 0x4da(r5)
+/* 802EF294 002EAEF4 2C 03 00 00 */ cmpwi r3, 0
+/* 802EF298 002EAEF8 41 82 01 F8 */ beq lbl_802EF490
+/* 802EF29C 002EAEFC 38 7A 00 34 */ addi r3, r26, 0x34
+/* 802EF2A0 002EAF00 38 85 00 22 */ addi r4, r5, 0x22
+/* 802EF2A4 002EAF04 7C 09 03 A6 */ mtctr r0
+lbl_802EF2A8:
+/* 802EF2A8 002EAF08 A1 03 00 34 */ lhz r8, 0x34(r3)
+/* 802EF2AC 002EAF0C A0 E3 00 36 */ lhz r7, 0x36(r3)
+/* 802EF2B0 002EAF10 B1 04 03 64 */ sth r8, 0x364(r4)
+/* 802EF2B4 002EAF14 B0 E4 03 66 */ sth r7, 0x366(r4)
+/* 802EF2B8 002EAF18 A1 03 00 38 */ lhz r8, 0x38(r3)
+/* 802EF2BC 002EAF1C A0 E3 00 3A */ lhz r7, 0x3a(r3)
+/* 802EF2C0 002EAF20 B1 04 03 68 */ sth r8, 0x368(r4)
+/* 802EF2C4 002EAF24 B0 E4 03 6A */ sth r7, 0x36a(r4)
+/* 802EF2C8 002EAF28 A1 03 00 3C */ lhz r8, 0x3c(r3)
+/* 802EF2CC 002EAF2C A0 E3 00 3E */ lhz r7, 0x3e(r3)
+/* 802EF2D0 002EAF30 B1 04 03 6C */ sth r8, 0x36c(r4)
+/* 802EF2D4 002EAF34 B0 E4 03 6E */ sth r7, 0x36e(r4)
+/* 802EF2D8 002EAF38 A1 03 00 40 */ lhz r8, 0x40(r3)
+/* 802EF2DC 002EAF3C A0 E3 00 42 */ lhz r7, 0x42(r3)
+/* 802EF2E0 002EAF40 B1 04 03 70 */ sth r8, 0x370(r4)
+/* 802EF2E4 002EAF44 B0 E4 03 72 */ sth r7, 0x372(r4)
+/* 802EF2E8 002EAF48 A0 E3 00 44 */ lhz r7, 0x44(r3)
+/* 802EF2EC 002EAF4C B0 E4 03 74 */ sth r7, 0x374(r4)
+/* 802EF2F0 002EAF50 A0 E3 00 46 */ lhz r7, 0x46(r3)
+/* 802EF2F4 002EAF54 B0 E4 03 76 */ sth r7, 0x376(r4)
+/* 802EF2F8 002EAF58 A0 E3 00 48 */ lhz r7, 0x48(r3)
+/* 802EF2FC 002EAF5C B0 E4 03 78 */ sth r7, 0x378(r4)
+/* 802EF300 002EAF60 A1 03 00 68 */ lhz r8, 0x68(r3)
+/* 802EF304 002EAF64 A0 E3 00 6A */ lhz r7, 0x6a(r3)
+/* 802EF308 002EAF68 B1 04 03 7A */ sth r8, 0x37a(r4)
+/* 802EF30C 002EAF6C B0 E4 03 7C */ sth r7, 0x37c(r4)
+/* 802EF310 002EAF70 A1 03 00 6C */ lhz r8, 0x6c(r3)
+/* 802EF314 002EAF74 A0 E3 00 6E */ lhz r7, 0x6e(r3)
+/* 802EF318 002EAF78 B1 04 03 7E */ sth r8, 0x37e(r4)
+/* 802EF31C 002EAF7C B0 E4 03 80 */ sth r7, 0x380(r4)
+/* 802EF320 002EAF80 A1 03 00 70 */ lhz r8, 0x70(r3)
+/* 802EF324 002EAF84 A0 E3 00 72 */ lhz r7, 0x72(r3)
+/* 802EF328 002EAF88 B1 04 03 82 */ sth r8, 0x382(r4)
+/* 802EF32C 002EAF8C B0 E4 03 84 */ sth r7, 0x384(r4)
+/* 802EF330 002EAF90 A1 03 00 74 */ lhz r8, 0x74(r3)
+/* 802EF334 002EAF94 A0 E3 00 76 */ lhz r7, 0x76(r3)
+/* 802EF338 002EAF98 B1 04 03 86 */ sth r8, 0x386(r4)
+/* 802EF33C 002EAF9C B0 E4 03 88 */ sth r7, 0x388(r4)
+/* 802EF340 002EAFA0 A0 E3 00 78 */ lhz r7, 0x78(r3)
+/* 802EF344 002EAFA4 B0 E4 03 8A */ sth r7, 0x38a(r4)
+/* 802EF348 002EAFA8 A0 E3 00 7A */ lhz r7, 0x7a(r3)
+/* 802EF34C 002EAFAC B0 E4 03 8C */ sth r7, 0x38c(r4)
+/* 802EF350 002EAFB0 A0 E3 00 7C */ lhz r7, 0x7c(r3)
+/* 802EF354 002EAFB4 B0 E4 03 8E */ sth r7, 0x38e(r4)
+/* 802EF358 002EAFB8 A1 03 00 9C */ lhz r8, 0x9c(r3)
+/* 802EF35C 002EAFBC A0 E3 00 9E */ lhz r7, 0x9e(r3)
+/* 802EF360 002EAFC0 B1 04 03 90 */ sth r8, 0x390(r4)
+/* 802EF364 002EAFC4 B0 E4 03 92 */ sth r7, 0x392(r4)
+/* 802EF368 002EAFC8 A1 03 00 A0 */ lhz r8, 0xa0(r3)
+/* 802EF36C 002EAFCC A0 E3 00 A2 */ lhz r7, 0xa2(r3)
+/* 802EF370 002EAFD0 B1 04 03 94 */ sth r8, 0x394(r4)
+/* 802EF374 002EAFD4 B0 E4 03 96 */ sth r7, 0x396(r4)
+/* 802EF378 002EAFD8 A1 03 00 A4 */ lhz r8, 0xa4(r3)
+/* 802EF37C 002EAFDC A0 E3 00 A6 */ lhz r7, 0xa6(r3)
+/* 802EF380 002EAFE0 B1 04 03 98 */ sth r8, 0x398(r4)
+/* 802EF384 002EAFE4 B0 E4 03 9A */ sth r7, 0x39a(r4)
+/* 802EF388 002EAFE8 A1 03 00 A8 */ lhz r8, 0xa8(r3)
+/* 802EF38C 002EAFEC A0 E3 00 AA */ lhz r7, 0xaa(r3)
+/* 802EF390 002EAFF0 B1 04 03 9C */ sth r8, 0x39c(r4)
+/* 802EF394 002EAFF4 B0 E4 03 9E */ sth r7, 0x39e(r4)
+/* 802EF398 002EAFF8 A0 E3 00 AC */ lhz r7, 0xac(r3)
+/* 802EF39C 002EAFFC B0 E4 03 A0 */ sth r7, 0x3a0(r4)
+/* 802EF3A0 002EB000 A0 E3 00 AE */ lhz r7, 0xae(r3)
+/* 802EF3A4 002EB004 B0 E4 03 A2 */ sth r7, 0x3a2(r4)
+/* 802EF3A8 002EB008 A0 E3 00 B0 */ lhz r7, 0xb0(r3)
+/* 802EF3AC 002EB00C B0 E4 03 A4 */ sth r7, 0x3a4(r4)
+/* 802EF3B0 002EB010 A1 03 00 D0 */ lhz r8, 0xd0(r3)
+/* 802EF3B4 002EB014 A0 E3 00 D2 */ lhz r7, 0xd2(r3)
+/* 802EF3B8 002EB018 B1 04 03 A6 */ sth r8, 0x3a6(r4)
+/* 802EF3BC 002EB01C B0 E4 03 A8 */ sth r7, 0x3a8(r4)
+/* 802EF3C0 002EB020 A1 03 00 D4 */ lhz r8, 0xd4(r3)
+/* 802EF3C4 002EB024 A0 E3 00 D6 */ lhz r7, 0xd6(r3)
+/* 802EF3C8 002EB028 B1 04 03 AA */ sth r8, 0x3aa(r4)
+/* 802EF3CC 002EB02C B0 E4 03 AC */ sth r7, 0x3ac(r4)
+/* 802EF3D0 002EB030 A1 03 00 D8 */ lhz r8, 0xd8(r3)
+/* 802EF3D4 002EB034 A0 E3 00 DA */ lhz r7, 0xda(r3)
+/* 802EF3D8 002EB038 B1 04 03 AE */ sth r8, 0x3ae(r4)
+/* 802EF3DC 002EB03C B0 E4 03 B0 */ sth r7, 0x3b0(r4)
+/* 802EF3E0 002EB040 A1 03 00 DC */ lhz r8, 0xdc(r3)
+/* 802EF3E4 002EB044 A0 E3 00 DE */ lhz r7, 0xde(r3)
+/* 802EF3E8 002EB048 B1 04 03 B2 */ sth r8, 0x3b2(r4)
+/* 802EF3EC 002EB04C B0 E4 03 B4 */ sth r7, 0x3b4(r4)
+/* 802EF3F0 002EB050 A0 E3 00 E0 */ lhz r7, 0xe0(r3)
+/* 802EF3F4 002EB054 B0 E4 03 B6 */ sth r7, 0x3b6(r4)
+/* 802EF3F8 002EB058 A0 E3 00 E2 */ lhz r7, 0xe2(r3)
+/* 802EF3FC 002EB05C B0 E4 03 B8 */ sth r7, 0x3b8(r4)
+/* 802EF400 002EB060 A0 E3 00 E4 */ lhz r7, 0xe4(r3)
+/* 802EF404 002EB064 B0 E4 03 BA */ sth r7, 0x3ba(r4)
+/* 802EF408 002EB068 A1 03 01 04 */ lhz r8, 0x104(r3)
+/* 802EF40C 002EB06C A0 E3 01 06 */ lhz r7, 0x106(r3)
+/* 802EF410 002EB070 B1 04 03 BC */ sth r8, 0x3bc(r4)
+/* 802EF414 002EB074 B0 E4 03 BE */ sth r7, 0x3be(r4)
+/* 802EF418 002EB078 A1 03 01 08 */ lhz r8, 0x108(r3)
+/* 802EF41C 002EB07C A0 E3 01 0A */ lhz r7, 0x10a(r3)
+/* 802EF420 002EB080 B1 04 03 C0 */ sth r8, 0x3c0(r4)
+/* 802EF424 002EB084 B0 E4 03 C2 */ sth r7, 0x3c2(r4)
+/* 802EF428 002EB088 A1 03 01 0C */ lhz r8, 0x10c(r3)
+/* 802EF42C 002EB08C A0 E3 01 0E */ lhz r7, 0x10e(r3)
+/* 802EF430 002EB090 B1 04 03 C4 */ sth r8, 0x3c4(r4)
+/* 802EF434 002EB094 B0 E4 03 C6 */ sth r7, 0x3c6(r4)
+/* 802EF438 002EB098 A1 03 01 10 */ lhz r8, 0x110(r3)
+/* 802EF43C 002EB09C A0 E3 01 12 */ lhz r7, 0x112(r3)
+/* 802EF440 002EB0A0 B1 04 03 C8 */ sth r8, 0x3c8(r4)
+/* 802EF444 002EB0A4 B0 E4 03 CA */ sth r7, 0x3ca(r4)
+/* 802EF448 002EB0A8 A0 E3 01 14 */ lhz r7, 0x114(r3)
+/* 802EF44C 002EB0AC B0 E4 03 CC */ sth r7, 0x3cc(r4)
+/* 802EF450 002EB0B0 A0 E3 01 16 */ lhz r7, 0x116(r3)
+/* 802EF454 002EB0B4 B0 E4 03 CE */ sth r7, 0x3ce(r4)
+/* 802EF458 002EB0B8 A0 E3 01 18 */ lhz r7, 0x118(r3)
+/* 802EF45C 002EB0BC B0 E4 03 D0 */ sth r7, 0x3d0(r4)
+/* 802EF460 002EB0C0 38 63 01 04 */ addi r3, r3, 0x104
+/* 802EF464 002EB0C4 38 84 00 6E */ addi r4, r4, 0x6e
+/* 802EF468 002EB0C8 42 00 FE 40 */ bdnz lbl_802EF2A8
+/* 802EF46C 002EB0CC A0 65 04 D8 */ lhz r3, 0x4d8(r5)
+/* 802EF470 002EB0D0 60 63 00 01 */ ori r3, r3, 1
+/* 802EF474 002EB0D4 B0 65 03 6C */ sth r3, 0x36c(r5)
+/* 802EF478 002EB0D8 A0 65 04 DA */ lhz r3, 0x4da(r5)
+/* 802EF47C 002EB0DC B0 65 03 6E */ sth r3, 0x36e(r5)
+/* 802EF480 002EB0E0 88 65 03 6A */ lbz r3, 0x36a(r5)
+/* 802EF484 002EB0E4 38 63 00 01 */ addi r3, r3, 1
+/* 802EF488 002EB0E8 98 65 03 6A */ stb r3, 0x36a(r5)
+/* 802EF48C 002EB0EC B0 C5 04 DA */ sth r6, 0x4da(r5)
+lbl_802EF490:
+/* 802EF490 002EB0F0 80 A5 00 00 */ lwz r5, 0(r5)
+lbl_802EF494:
+/* 802EF494 002EB0F4 2C 05 00 00 */ cmpwi r5, 0
+/* 802EF498 002EB0F8 40 82 FD F8 */ bne lbl_802EF290
+/* 802EF49C 002EB0FC 80 1A 00 10 */ lwz r0, 0x10(r26)
+/* 802EF4A0 002EB100 2C 00 00 00 */ cmpwi r0, 0
+/* 802EF4A4 002EB104 40 82 00 14 */ bne lbl_802EF4B8
+/* 802EF4A8 002EB108 7F 43 D3 78 */ mr r3, r26
+/* 802EF4AC 002EB10C 4B FF FA F5 */ bl WDPi_SwitchActiveSession
+/* 802EF4B0 002EB110 2C 03 00 00 */ cmpwi r3, 0
+/* 802EF4B4 002EB114 41 82 02 84 */ beq lbl_802EF738
+lbl_802EF4B8:
+/* 802EF4B8 002EB118 83 FA 00 10 */ lwz r31, 0x10(r26)
+/* 802EF4BC 002EB11C 3C 60 53 98 */ lis r3, 0x5397829D@ha
+/* 802EF4C0 002EB120 38 00 02 20 */ li r0, 0x220
+/* 802EF4C4 002EB124 88 BA 00 16 */ lbz r5, 0x16(r26)
+/* 802EF4C8 002EB128 88 9F 03 68 */ lbz r4, 0x368(r31)
+/* 802EF4CC 002EB12C 38 63 82 9D */ addi r3, r3, 0x5397829D@l
+/* 802EF4D0 002EB130 3B DB 00 50 */ addi r30, r27, 0x50
+/* 802EF4D4 002EB134 3B BF 00 0C */ addi r29, r31, 0xc
+/* 802EF4D8 002EB138 54 84 07 BE */ clrlwi r4, r4, 0x1e
+/* 802EF4DC 002EB13C 7C 84 00 34 */ cntlzw r4, r4
+/* 802EF4E0 002EB140 54 84 DF FE */ rlwinm r4, r4, 0x1b, 0x1f, 0x1f
+/* 802EF4E4 002EB144 7C 84 00 D0 */ neg r4, r4
+/* 802EF4E8 002EB148 7C 04 20 78 */ andc r4, r0, r4
+/* 802EF4EC 002EB14C 20 C4 03 58 */ subfic r6, r4, 0x358
+/* 802EF4F0 002EB150 38 06 00 61 */ addi r0, r6, 0x61
+/* 802EF4F4 002EB154 7C 03 00 16 */ mulhwu r0, r3, r0
+/* 802EF4F8 002EB158 54 18 D9 7E */ srwi r24, r0, 5
+/* 802EF4FC 002EB15C 7F 00 2A 78 */ xor r0, r24, r5
+/* 802EF500 002EB160 7C 00 00 34 */ cntlzw r0, r0
+/* 802EF504 002EB164 7F 00 00 30 */ slw r0, r24, r0
+/* 802EF508 002EB168 54 1C 0F FF */ rlwinm. r28, r0, 1, 0x1f, 0x1f
+/* 802EF50C 002EB16C 41 82 00 5C */ beq lbl_802EF568
+/* 802EF510 002EB170 1C E5 00 62 */ mulli r7, r5, 0x62
+/* 802EF514 002EB174 7C 7F 22 14 */ add r3, r31, r4
+/* 802EF518 002EB178 38 9E 00 0E */ addi r4, r30, 0xe
+/* 802EF51C 002EB17C 38 63 00 0C */ addi r3, r3, 0xc
+/* 802EF520 002EB180 7C 07 30 50 */ subf r0, r7, r6
+/* 802EF524 002EB184 3B 20 00 62 */ li r25, 0x62
+/* 802EF528 002EB188 28 00 00 62 */ cmplwi r0, 0x62
+/* 802EF52C 002EB18C 40 80 00 08 */ bge lbl_802EF534
+/* 802EF530 002EB190 7C 19 03 78 */ mr r25, r0
+lbl_802EF534:
+/* 802EF534 002EB194 7F 25 CB 78 */ mr r5, r25
+/* 802EF538 002EB198 7C 63 3A 14 */ add r3, r3, r7
+/* 802EF53C 002EB19C 48 00 4A D1 */ bl func_802F400C
+/* 802EF540 002EB1A0 7C 7E CA 14 */ add r3, r30, r25
+/* 802EF544 002EB1A4 20 B9 00 62 */ subfic r5, r25, 0x62
+/* 802EF548 002EB1A8 38 63 00 0E */ addi r3, r3, 0xe
+/* 802EF54C 002EB1AC 38 80 00 00 */ li r4, 0
+/* 802EF550 002EB1B0 48 00 4A B9 */ bl func_802F4008
+/* 802EF554 002EB1B4 9B 3E 00 0C */ stb r25, 0xc(r30)
+/* 802EF558 002EB1B8 88 1A 00 16 */ lbz r0, 0x16(r26)
+/* 802EF55C 002EB1BC 98 1E 00 0A */ stb r0, 0xa(r30)
+/* 802EF560 002EB1C0 9B 1E 00 0B */ stb r24, 0xb(r30)
+/* 802EF564 002EB1C4 48 00 01 38 */ b lbl_802EF69C
+lbl_802EF568:
+/* 802EF568 002EB1C8 88 7D 03 5E */ lbz r3, 0x35e(r29)
+/* 802EF56C 002EB1CC 88 1A 00 17 */ lbz r0, 0x17(r26)
+/* 802EF570 002EB1D0 7C 00 18 40 */ cmplw r0, r3
+/* 802EF574 002EB1D4 41 82 00 10 */ beq lbl_802EF584
+/* 802EF578 002EB1D8 38 00 00 01 */ li r0, 1
+/* 802EF57C 002EB1DC 98 7A 00 17 */ stb r3, 0x17(r26)
+/* 802EF580 002EB1E0 B0 1A 00 14 */ sth r0, 0x14(r26)
+lbl_802EF584:
+/* 802EF584 002EB1E4 A0 7F 03 6C */ lhz r3, 0x36c(r31)
+/* 802EF588 002EB1E8 4B FF F4 05 */ bl MATH_CountPopulation
+/* 802EF58C 002EB1EC 54 60 06 3E */ clrlwi r0, r3, 0x18
+/* 802EF590 002EB1F0 98 7E 00 0A */ stb r3, 0xa(r30)
+/* 802EF594 002EB1F4 7C 00 46 70 */ srawi r0, r0, 8
+/* 802EF598 002EB1F8 98 1E 00 0B */ stb r0, 0xb(r30)
+/* 802EF59C 002EB1FC A0 7D 03 60 */ lhz r3, 0x360(r29)
+/* 802EF5A0 002EB200 7C 60 46 70 */ srawi r0, r3, 8
+/* 802EF5A4 002EB204 98 7E 00 0C */ stb r3, 0xc(r30)
+/* 802EF5A8 002EB208 98 1E 00 0D */ stb r0, 0xd(r30)
+/* 802EF5AC 002EB20C A0 7D 03 62 */ lhz r3, 0x362(r29)
+/* 802EF5B0 002EB210 7C 60 46 70 */ srawi r0, r3, 8
+/* 802EF5B4 002EB214 98 7E 00 0E */ stb r3, 0xe(r30)
+/* 802EF5B8 002EB218 98 1E 00 0F */ stb r0, 0xf(r30)
+/* 802EF5BC 002EB21C 81 9A 00 00 */ lwz r12, 0(r26)
+/* 802EF5C0 002EB220 2C 0C 00 00 */ cmpwi r12, 0
+/* 802EF5C4 002EB224 41 82 00 18 */ beq lbl_802EF5DC
+/* 802EF5C8 002EB228 7F 43 D3 78 */ mr r3, r26
+/* 802EF5CC 002EB22C 7F E5 FB 78 */ mr r5, r31
+/* 802EF5D0 002EB230 38 80 00 02 */ li r4, 2
+/* 802EF5D4 002EB234 7D 89 03 A6 */ mtctr r12
+/* 802EF5D8 002EB238 4E 80 04 21 */ bctrl
+lbl_802EF5DC:
+/* 802EF5DC 002EB23C 38 7D 04 C4 */ addi r3, r29, 0x4c4
+/* 802EF5E0 002EB240 38 9E 00 68 */ addi r4, r30, 0x68
+/* 802EF5E4 002EB244 38 A0 00 08 */ li r5, 8
+/* 802EF5E8 002EB248 48 00 4A 25 */ bl func_802F400C
+/* 802EF5EC 002EB24C 81 9A 00 00 */ lwz r12, 0(r26)
+/* 802EF5F0 002EB250 2C 0C 00 00 */ cmpwi r12, 0
+/* 802EF5F4 002EB254 41 82 00 18 */ beq lbl_802EF60C
+/* 802EF5F8 002EB258 7F 43 D3 78 */ mr r3, r26
+/* 802EF5FC 002EB25C 7F E5 FB 78 */ mr r5, r31
+/* 802EF600 002EB260 38 80 00 03 */ li r4, 3
+/* 802EF604 002EB264 7D 89 03 A6 */ mtctr r12
+/* 802EF608 002EB268 4E 80 04 21 */ bctrl
+lbl_802EF60C:
+/* 802EF60C 002EB26C A0 7A 00 14 */ lhz r3, 0x14(r26)
+/* 802EF610 002EB270 3B FE 00 10 */ addi r31, r30, 0x10
+/* 802EF614 002EB274 A0 1D 03 60 */ lhz r0, 0x360(r29)
+/* 802EF618 002EB278 3B 60 00 00 */ li r27, 0
+/* 802EF61C 002EB27C 3B 20 00 01 */ li r25, 1
+/* 802EF620 002EB280 7C 60 02 78 */ xor r0, r3, r0
+/* 802EF624 002EB284 54 17 00 3C */ rlwinm r23, r0, 0, 0, 0x1e
+/* 802EF628 002EB288 48 00 00 48 */ b lbl_802EF670
+lbl_802EF62C:
+/* 802EF62C 002EB28C 38 17 FF FF */ addi r0, r23, -1
+/* 802EF630 002EB290 7F E4 FB 78 */ mr r4, r31
+/* 802EF634 002EB294 7C 00 B8 78 */ andc r0, r0, r23
+/* 802EF638 002EB298 38 A0 00 16 */ li r5, 0x16
+/* 802EF63C 002EB29C 7C 00 00 34 */ cntlzw r0, r0
+/* 802EF640 002EB2A0 23 00 00 20 */ subfic r24, r0, 0x20
+/* 802EF644 002EB2A4 1C 18 00 16 */ mulli r0, r24, 0x16
+/* 802EF648 002EB2A8 7C 7D 02 14 */ add r3, r29, r0
+/* 802EF64C 002EB2AC 38 63 03 64 */ addi r3, r3, 0x364
+/* 802EF650 002EB2B0 48 00 49 BD */ bl func_802F400C
+/* 802EF654 002EB2B4 A0 1A 00 14 */ lhz r0, 0x14(r26)
+/* 802EF658 002EB2B8 7F 23 C0 30 */ slw r3, r25, r24
+/* 802EF65C 002EB2BC 7E F7 18 78 */ andc r23, r23, r3
+/* 802EF660 002EB2C0 3B FF 00 16 */ addi r31, r31, 0x16
+/* 802EF664 002EB2C4 7C 00 1B 78 */ or r0, r0, r3
+/* 802EF668 002EB2C8 3B 7B 00 01 */ addi r27, r27, 1
+/* 802EF66C 002EB2CC B0 1A 00 14 */ sth r0, 0x14(r26)
+lbl_802EF670:
+/* 802EF670 002EB2D0 2C 1B 00 04 */ cmpwi r27, 4
+/* 802EF674 002EB2D4 40 80 00 0C */ bge lbl_802EF680
+/* 802EF678 002EB2D8 2C 17 00 00 */ cmpwi r23, 0
+/* 802EF67C 002EB2DC 40 82 FF B0 */ bne lbl_802EF62C
+lbl_802EF680:
+/* 802EF680 002EB2E0 1C 7B 00 16 */ mulli r3, r27, 0x16
+/* 802EF684 002EB2E4 20 1B 00 04 */ subfic r0, r27, 4
+/* 802EF688 002EB2E8 38 80 00 00 */ li r4, 0
+/* 802EF68C 002EB2EC 7C 7E 1A 14 */ add r3, r30, r3
+/* 802EF690 002EB2F0 1C A0 00 16 */ mulli r5, r0, 0x16
+/* 802EF694 002EB2F4 38 63 00 10 */ addi r3, r3, 0x10
+/* 802EF698 002EB2F8 48 00 49 71 */ bl func_802F4008
+lbl_802EF69C:
+/* 802EF69C 002EB2FC 88 7D 03 58 */ lbz r3, 0x358(r29)
+/* 802EF6A0 002EB300 2C 1C 00 00 */ cmpwi r28, 0
+/* 802EF6A4 002EB304 88 1D 03 59 */ lbz r0, 0x359(r29)
+/* 802EF6A8 002EB308 98 7E 00 00 */ stb r3, 0(r30)
+/* 802EF6AC 002EB30C 98 1E 00 01 */ stb r0, 1(r30)
+/* 802EF6B0 002EB310 88 7D 03 5A */ lbz r3, 0x35a(r29)
+/* 802EF6B4 002EB314 88 1D 03 5B */ lbz r0, 0x35b(r29)
+/* 802EF6B8 002EB318 98 7E 00 02 */ stb r3, 2(r30)
+/* 802EF6BC 002EB31C 98 1E 00 03 */ stb r0, 3(r30)
+/* 802EF6C0 002EB320 88 9D 03 5C */ lbz r4, 0x35c(r29)
+/* 802EF6C4 002EB324 88 1D 03 5D */ lbz r0, 0x35d(r29)
+/* 802EF6C8 002EB328 98 9E 00 04 */ stb r4, 4(r30)
+/* 802EF6CC 002EB32C 98 1E 00 05 */ stb r0, 5(r30)
+/* 802EF6D0 002EB330 88 7D 03 5E */ lbz r3, 0x35e(r29)
+/* 802EF6D4 002EB334 88 1D 03 5F */ lbz r0, 0x35f(r29)
+/* 802EF6D8 002EB338 98 7E 00 06 */ stb r3, 6(r30)
+/* 802EF6DC 002EB33C 98 1E 00 07 */ stb r0, 7(r30)
+/* 802EF6E0 002EB340 40 82 00 10 */ bne lbl_802EF6F0
+/* 802EF6E4 002EB344 38 00 00 02 */ li r0, 2
+/* 802EF6E8 002EB348 50 04 07 BE */ rlwimi r4, r0, 0, 0x1e, 0x1f
+/* 802EF6EC 002EB34C 98 9E 00 04 */ stb r4, 4(r30)
+lbl_802EF6F0:
+/* 802EF6F0 002EB350 88 9A 00 16 */ lbz r4, 0x16(r26)
+/* 802EF6F4 002EB354 38 7E 00 0A */ addi r3, r30, 0xa
+/* 802EF6F8 002EB358 98 9E 00 07 */ stb r4, 7(r30)
+/* 802EF6FC 002EB35C 38 04 00 01 */ addi r0, r4, 1
+/* 802EF700 002EB360 98 1A 00 16 */ stb r0, 0x16(r26)
+/* 802EF704 002EB364 4B FF F2 E1 */ bl WDPi_GetBeaconCheckSum
+/* 802EF708 002EB368 54 60 C6 3E */ rlwinm r0, r3, 0x18, 0x18, 0x1f
+/* 802EF70C 002EB36C 2C 1C 00 00 */ cmpwi r28, 0
+/* 802EF710 002EB370 98 7E 00 08 */ stb r3, 8(r30)
+/* 802EF714 002EB374 98 1E 00 09 */ stb r0, 9(r30)
+/* 802EF718 002EB378 40 82 00 1C */ bne lbl_802EF734
+/* 802EF71C 002EB37C A0 7A 00 14 */ lhz r3, 0x14(r26)
+/* 802EF720 002EB380 A0 1D 03 60 */ lhz r0, 0x360(r29)
+/* 802EF724 002EB384 7C 03 00 40 */ cmplw r3, r0
+/* 802EF728 002EB388 40 82 00 0C */ bne lbl_802EF734
+/* 802EF72C 002EB38C 7F 43 D3 78 */ mr r3, r26
+/* 802EF730 002EB390 4B FF F8 71 */ bl WDPi_SwitchActiveSession
+lbl_802EF734:
+/* 802EF734 002EB394 3B E0 00 70 */ li r31, 0x70
+lbl_802EF738:
+/* 802EF738 002EB398 80 1A 00 08 */ lwz r0, 8(r26)
+/* 802EF73C 002EB39C 34 00 FF FF */ addic. r0, r0, -1
+/* 802EF740 002EB3A0 90 1A 00 08 */ stw r0, 8(r26)
+/* 802EF744 002EB3A4 40 82 00 0C */ bne lbl_802EF750
+/* 802EF748 002EB3A8 80 7A 00 0C */ lwz r3, 0xc(r26)
+/* 802EF74C 002EB3AC 4B F7 F0 39 */ bl OSRestoreInterrupts
+lbl_802EF750:
+/* 802EF750 002EB3B0 39 61 00 30 */ addi r11, r1, 0x30
+/* 802EF754 002EB3B4 7F E3 FB 78 */ mr r3, r31
+/* 802EF758 002EB3B8 4B ED 7A 0D */ bl _restgpr_23
+/* 802EF75C 002EB3BC 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802EF760 002EB3C0 7C 08 03 A6 */ mtlr r0
+/* 802EF764 002EB3C4 38 21 00 30 */ addi r1, r1, 0x30
+/* 802EF768 002EB3C8 4E 80 00 20 */ blr
+
+.global WDP_CallParentConnectedHook
+WDP_CallParentConnectedHook:
+/* 802EF76C 002EB3CC 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802EF770 002EB3D0 7C 08 02 A6 */ mflr r0
+/* 802EF774 002EB3D4 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802EF778 002EB3D8 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802EF77C 002EB3DC 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802EF780 002EB3E0 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802EF784 002EB3E4 7C 9D 23 78 */ mr r29, r4
+/* 802EF788 002EB3E8 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802EF78C 002EB3EC 7C 7C 1B 78 */ mr r28, r3
+/* 802EF790 002EB3F0 4B F7 EF CD */ bl OSDisableInterrupts
+/* 802EF794 002EB3F4 80 9C 00 08 */ lwz r4, 8(r28)
+/* 802EF798 002EB3F8 38 04 00 01 */ addi r0, r4, 1
+/* 802EF79C 002EB3FC 2C 00 00 01 */ cmpwi r0, 1
+/* 802EF7A0 002EB400 90 1C 00 08 */ stw r0, 8(r28)
+/* 802EF7A4 002EB404 40 82 00 08 */ bne lbl_802EF7AC
+/* 802EF7A8 002EB408 90 7C 00 0C */ stw r3, 0xc(r28)
+lbl_802EF7AC:
+/* 802EF7AC 002EB40C 1C 1D 00 34 */ mulli r0, r29, 0x34
+/* 802EF7B0 002EB410 7F 83 E3 78 */ mr r3, r28
+/* 802EF7B4 002EB414 7F A4 EB 78 */ mr r4, r29
+/* 802EF7B8 002EB418 38 A0 00 00 */ li r5, 0
+/* 802EF7BC 002EB41C 7F DC 02 14 */ add r30, r28, r0
+/* 802EF7C0 002EB420 4B FF F8 45 */ bl WDPi_UpdateStatus
+/* 802EF7C4 002EB424 3B E0 00 00 */ li r31, 0
+/* 802EF7C8 002EB428 38 7E 00 30 */ addi r3, r30, 0x30
+/* 802EF7CC 002EB42C 93 FE 00 2C */ stw r31, 0x2c(r30)
+/* 802EF7D0 002EB430 38 80 00 00 */ li r4, 0
+/* 802EF7D4 002EB434 38 A0 00 20 */ li r5, 0x20
+/* 802EF7D8 002EB438 48 00 48 31 */ bl func_802F4008
+/* 802EF7DC 002EB43C 38 7E 00 50 */ addi r3, r30, 0x50
+/* 802EF7E0 002EB440 38 80 00 00 */ li r4, 0
+/* 802EF7E4 002EB444 38 A0 00 04 */ li r5, 4
+/* 802EF7E8 002EB448 48 00 48 21 */ bl func_802F4008
+/* 802EF7EC 002EB44C 93 FE 00 54 */ stw r31, 0x54(r30)
+/* 802EF7F0 002EB450 38 00 00 01 */ li r0, 1
+/* 802EF7F4 002EB454 7C 00 E8 30 */ slw r0, r0, r29
+/* 802EF7F8 002EB458 7F 83 E3 78 */ mr r3, r28
+/* 802EF7FC 002EB45C 93 FE 00 58 */ stw r31, 0x58(r30)
+/* 802EF800 002EB460 7F A4 EB 78 */ mr r4, r29
+/* 802EF804 002EB464 38 A0 00 01 */ li r5, 1
+/* 802EF808 002EB468 80 DC 00 20 */ lwz r6, 0x20(r28)
+/* 802EF80C 002EB46C 7C C0 03 78 */ or r0, r6, r0
+/* 802EF810 002EB470 90 1C 00 20 */ stw r0, 0x20(r28)
+/* 802EF814 002EB474 4B FF F7 F1 */ bl WDPi_UpdateStatus
+/* 802EF818 002EB478 80 1C 00 08 */ lwz r0, 8(r28)
+/* 802EF81C 002EB47C 34 00 FF FF */ addic. r0, r0, -1
+/* 802EF820 002EB480 90 1C 00 08 */ stw r0, 8(r28)
+/* 802EF824 002EB484 40 82 00 0C */ bne lbl_802EF830
+/* 802EF828 002EB488 80 7C 00 0C */ lwz r3, 0xc(r28)
+/* 802EF82C 002EB48C 4B F7 EF 59 */ bl OSRestoreInterrupts
+lbl_802EF830:
+/* 802EF830 002EB490 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802EF834 002EB494 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802EF838 002EB498 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802EF83C 002EB49C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802EF840 002EB4A0 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802EF844 002EB4A4 7C 08 03 A6 */ mtlr r0
+/* 802EF848 002EB4A8 38 21 00 20 */ addi r1, r1, 0x20
+/* 802EF84C 002EB4AC 4E 80 00 20 */ blr
+
+.global WDP_CallParentDisconnectedHook
+WDP_CallParentDisconnectedHook:
+/* 802EF850 002EB4B0 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802EF854 002EB4B4 7C 08 02 A6 */ mflr r0
+/* 802EF858 002EB4B8 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802EF85C 002EB4BC 39 61 00 20 */ addi r11, r1, 0x20
+/* 802EF860 002EB4C0 4B ED 78 C5 */ bl _savegpr_26
+/* 802EF864 002EB4C4 1F C4 00 34 */ mulli r30, r4, 0x34
+/* 802EF868 002EB4C8 38 00 00 01 */ li r0, 1
+/* 802EF86C 002EB4CC 7C 7B 1B 78 */ mr r27, r3
+/* 802EF870 002EB4D0 7C 9C 23 78 */ mr r28, r4
+/* 802EF874 002EB4D4 7C 1D 20 30 */ slw r29, r0, r4
+/* 802EF878 002EB4D8 7F E3 F2 14 */ add r31, r3, r30
+/* 802EF87C 002EB4DC 4B F7 EE E1 */ bl OSDisableInterrupts
+/* 802EF880 002EB4E0 80 9B 00 08 */ lwz r4, 8(r27)
+/* 802EF884 002EB4E4 38 04 00 01 */ addi r0, r4, 1
+/* 802EF888 002EB4E8 2C 00 00 01 */ cmpwi r0, 1
+/* 802EF88C 002EB4EC 90 1B 00 08 */ stw r0, 8(r27)
+/* 802EF890 002EB4F0 40 82 00 08 */ bne lbl_802EF898
+/* 802EF894 002EB4F4 90 7B 00 0C */ stw r3, 0xc(r27)
+lbl_802EF898:
+/* 802EF898 002EB4F8 A0 9B 03 6C */ lhz r4, 0x36c(r27)
+/* 802EF89C 002EB4FC 7F BA E8 F8 */ nor r26, r29, r29
+/* 802EF8A0 002EB500 A0 1B 03 70 */ lhz r0, 0x370(r27)
+/* 802EF8A4 002EB504 38 7F 00 34 */ addi r3, r31, 0x34
+/* 802EF8A8 002EB508 7C 85 D0 38 */ and r5, r4, r26
+/* 802EF8AC 002EB50C 38 80 00 00 */ li r4, 0
+/* 802EF8B0 002EB510 7C 00 D0 38 */ and r0, r0, r26
+/* 802EF8B4 002EB514 B0 BB 03 6C */ sth r5, 0x36c(r27)
+/* 802EF8B8 002EB518 38 A0 00 16 */ li r5, 0x16
+/* 802EF8BC 002EB51C B0 1B 03 70 */ sth r0, 0x370(r27)
+/* 802EF8C0 002EB520 48 00 47 49 */ bl func_802F4008
+/* 802EF8C4 002EB524 80 7F 00 2C */ lwz r3, 0x2c(r31)
+/* 802EF8C8 002EB528 2C 03 00 00 */ cmpwi r3, 0
+/* 802EF8CC 002EB52C 41 82 00 34 */ beq lbl_802EF900
+/* 802EF8D0 002EB530 A0 03 04 D8 */ lhz r0, 0x4d8(r3)
+/* 802EF8D4 002EB534 7C 00 D0 38 */ and r0, r0, r26
+/* 802EF8D8 002EB538 B0 03 04 D8 */ sth r0, 0x4d8(r3)
+/* 802EF8DC 002EB53C A0 03 05 D2 */ lhz r0, 0x5d2(r3)
+/* 802EF8E0 002EB540 7C 00 D0 38 */ and r0, r0, r26
+/* 802EF8E4 002EB544 B0 03 05 D2 */ sth r0, 0x5d2(r3)
+/* 802EF8E8 002EB548 A0 03 05 D0 */ lhz r0, 0x5d0(r3)
+/* 802EF8EC 002EB54C 7C 00 D0 38 */ and r0, r0, r26
+/* 802EF8F0 002EB550 B0 03 05 D0 */ sth r0, 0x5d0(r3)
+/* 802EF8F4 002EB554 A0 03 04 DA */ lhz r0, 0x4da(r3)
+/* 802EF8F8 002EB558 7C 00 EB 78 */ or r0, r0, r29
+/* 802EF8FC 002EB55C B0 03 04 DA */ sth r0, 0x4da(r3)
+lbl_802EF900:
+/* 802EF900 002EB560 7C 7B F2 14 */ add r3, r27, r30
+/* 802EF904 002EB564 80 03 00 28 */ lwz r0, 0x28(r3)
+/* 802EF908 002EB568 2C 00 00 06 */ cmpwi r0, 6
+/* 802EF90C 002EB56C 40 82 00 24 */ bne lbl_802EF930
+/* 802EF910 002EB570 81 9B 00 00 */ lwz r12, 0(r27)
+/* 802EF914 002EB574 2C 0C 00 00 */ cmpwi r12, 0
+/* 802EF918 002EB578 41 82 00 18 */ beq lbl_802EF930
+/* 802EF91C 002EB57C 7F 63 DB 78 */ mr r3, r27
+/* 802EF920 002EB580 7F 85 E3 78 */ mr r5, r28
+/* 802EF924 002EB584 38 80 00 08 */ li r4, 8
+/* 802EF928 002EB588 7D 89 03 A6 */ mtctr r12
+/* 802EF92C 002EB58C 4E 80 04 21 */ bctrl
+lbl_802EF930:
+/* 802EF930 002EB590 7F 63 DB 78 */ mr r3, r27
+/* 802EF934 002EB594 7F 84 E3 78 */ mr r4, r28
+/* 802EF938 002EB598 38 A0 00 00 */ li r5, 0
+/* 802EF93C 002EB59C 4B FF F6 C9 */ bl WDPi_UpdateStatus
+/* 802EF940 002EB5A0 3B 80 00 00 */ li r28, 0
+/* 802EF944 002EB5A4 38 7F 00 30 */ addi r3, r31, 0x30
+/* 802EF948 002EB5A8 93 9F 00 2C */ stw r28, 0x2c(r31)
+/* 802EF94C 002EB5AC 38 80 00 00 */ li r4, 0
+/* 802EF950 002EB5B0 38 A0 00 20 */ li r5, 0x20
+/* 802EF954 002EB5B4 48 00 46 B5 */ bl func_802F4008
+/* 802EF958 002EB5B8 38 7F 00 50 */ addi r3, r31, 0x50
+/* 802EF95C 002EB5BC 38 80 00 00 */ li r4, 0
+/* 802EF960 002EB5C0 38 A0 00 04 */ li r5, 4
+/* 802EF964 002EB5C4 48 00 46 A5 */ bl func_802F4008
+/* 802EF968 002EB5C8 93 9F 00 54 */ stw r28, 0x54(r31)
+/* 802EF96C 002EB5CC 93 9F 00 58 */ stw r28, 0x58(r31)
+/* 802EF970 002EB5D0 80 1B 00 08 */ lwz r0, 8(r27)
+/* 802EF974 002EB5D4 34 00 FF FF */ addic. r0, r0, -1
+/* 802EF978 002EB5D8 90 1B 00 08 */ stw r0, 8(r27)
+/* 802EF97C 002EB5DC 40 82 00 0C */ bne lbl_802EF988
+/* 802EF980 002EB5E0 80 7B 00 0C */ lwz r3, 0xc(r27)
+/* 802EF984 002EB5E4 4B F7 EE 01 */ bl OSRestoreInterrupts
+lbl_802EF988:
+/* 802EF988 002EB5E8 39 61 00 20 */ addi r11, r1, 0x20
+/* 802EF98C 002EB5EC 4B ED 77 E5 */ bl _restgpr_26
+/* 802EF990 002EB5F0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802EF994 002EB5F4 7C 08 03 A6 */ mtlr r0
+/* 802EF998 002EB5F8 38 21 00 20 */ addi r1, r1, 0x20
+/* 802EF99C 002EB5FC 4E 80 00 20 */ blr
+
+.global WDP_CallParentSendHook
+WDP_CallParentSendHook:
+/* 802EF9A0 002EB600 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802EF9A4 002EB604 7C 08 02 A6 */ mflr r0
+/* 802EF9A8 002EB608 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802EF9AC 002EB60C 39 61 00 30 */ addi r11, r1, 0x30
+/* 802EF9B0 002EB610 4B ED 77 79 */ bl _savegpr_27
+/* 802EF9B4 002EB614 83 E4 00 00 */ lwz r31, 0(r4)
+/* 802EF9B8 002EB618 7C 7C 1B 78 */ mr r28, r3
+/* 802EF9BC 002EB61C 7C 9D 23 78 */ mr r29, r4
+/* 802EF9C0 002EB620 4B F7 ED 9D */ bl OSDisableInterrupts
+/* 802EF9C4 002EB624 80 9C 00 08 */ lwz r4, 8(r28)
+/* 802EF9C8 002EB628 38 04 00 01 */ addi r0, r4, 1
+/* 802EF9CC 002EB62C 2C 00 00 01 */ cmpwi r0, 1
+/* 802EF9D0 002EB630 90 1C 00 08 */ stw r0, 8(r28)
+/* 802EF9D4 002EB634 40 82 00 08 */ bne lbl_802EF9DC
+/* 802EF9D8 002EB638 90 7C 00 0C */ stw r3, 0xc(r28)
+lbl_802EF9DC:
+/* 802EF9DC 002EB63C 38 00 00 00 */ li r0, 0
+/* 802EF9E0 002EB640 3C 60 00 01 */ lis r3, 0x0000FFFF@ha
+/* 802EF9E4 002EB644 98 1F 00 00 */ stb r0, 0(r31)
+/* 802EF9E8 002EB648 38 03 FF FF */ addi r0, r3, 0x0000FFFF@l
+/* 802EF9EC 002EB64C 38 60 00 01 */ li r3, 1
+/* 802EF9F0 002EB650 B0 7D 00 04 */ sth r3, 4(r29)
+/* 802EF9F4 002EB654 B0 1D 00 06 */ sth r0, 6(r29)
+/* 802EF9F8 002EB658 A0 1C 03 6E */ lhz r0, 0x36e(r28)
+/* 802EF9FC 002EB65C 2C 00 00 00 */ cmpwi r0, 0
+/* 802EFA00 002EB660 41 82 00 18 */ beq lbl_802EFA18
+/* 802EFA04 002EB664 38 00 00 05 */ li r0, 5
+/* 802EFA08 002EB668 98 1F 00 00 */ stb r0, 0(r31)
+/* 802EFA0C 002EB66C A0 1C 03 6E */ lhz r0, 0x36e(r28)
+/* 802EFA10 002EB670 B0 1D 00 06 */ sth r0, 6(r29)
+/* 802EFA14 002EB674 48 00 02 58 */ b lbl_802EFC6C
+lbl_802EFA18:
+/* 802EFA18 002EB678 A0 1C 03 68 */ lhz r0, 0x368(r28)
+/* 802EFA1C 002EB67C 2C 00 00 00 */ cmpwi r0, 0
+/* 802EFA20 002EB680 41 82 00 14 */ beq lbl_802EFA34
+/* 802EFA24 002EB684 98 7F 00 00 */ stb r3, 0(r31)
+/* 802EFA28 002EB688 A0 1C 03 68 */ lhz r0, 0x368(r28)
+/* 802EFA2C 002EB68C B0 1D 00 06 */ sth r0, 6(r29)
+/* 802EFA30 002EB690 48 00 02 3C */ b lbl_802EFC6C
+lbl_802EFA34:
+/* 802EFA34 002EB694 A0 1C 03 70 */ lhz r0, 0x370(r28)
+/* 802EFA38 002EB698 2C 00 00 00 */ cmpwi r0, 0
+/* 802EFA3C 002EB69C 41 82 00 18 */ beq lbl_802EFA54
+/* 802EFA40 002EB6A0 38 00 00 06 */ li r0, 6
+/* 802EFA44 002EB6A4 98 1F 00 00 */ stb r0, 0(r31)
+/* 802EFA48 002EB6A8 A0 1C 03 70 */ lhz r0, 0x370(r28)
+/* 802EFA4C 002EB6AC B0 1D 00 06 */ sth r0, 6(r29)
+/* 802EFA50 002EB6B0 48 00 02 1C */ b lbl_802EFC6C
+lbl_802EFA54:
+/* 802EFA54 002EB6B4 A0 1C 03 6C */ lhz r0, 0x36c(r28)
+/* 802EFA58 002EB6B8 2C 00 00 00 */ cmpwi r0, 0
+/* 802EFA5C 002EB6BC 41 82 00 18 */ beq lbl_802EFA74
+/* 802EFA60 002EB6C0 38 00 00 02 */ li r0, 2
+/* 802EFA64 002EB6C4 98 1F 00 00 */ stb r0, 0(r31)
+/* 802EFA68 002EB6C8 A0 1C 03 6C */ lhz r0, 0x36c(r28)
+/* 802EFA6C 002EB6CC B0 1D 00 06 */ sth r0, 6(r29)
+/* 802EFA70 002EB6D0 48 00 01 FC */ b lbl_802EFC6C
+lbl_802EFA74:
+/* 802EFA74 002EB6D4 A0 BC 03 6A */ lhz r5, 0x36a(r28)
+/* 802EFA78 002EB6D8 2C 05 00 00 */ cmpwi r5, 0
+/* 802EFA7C 002EB6DC 41 82 00 C0 */ beq lbl_802EFB3C
+/* 802EFA80 002EB6E0 83 DC 00 18 */ lwz r30, 0x18(r28)
+/* 802EFA84 002EB6E4 2C 1E 00 00 */ cmpwi r30, 0
+/* 802EFA88 002EB6E8 41 82 00 08 */ beq lbl_802EFA90
+/* 802EFA8C 002EB6EC 48 00 00 08 */ b lbl_802EFA94
+lbl_802EFA90:
+/* 802EFA90 002EB6F0 83 DC 00 04 */ lwz r30, 4(r28)
+lbl_802EFA94:
+/* 802EFA94 002EB6F4 38 00 00 0F */ li r0, 0xf
+/* 802EFA98 002EB6F8 38 9C 00 5C */ addi r4, r28, 0x5c
+/* 802EFA9C 002EB6FC 38 E0 00 00 */ li r7, 0
+/* 802EFAA0 002EB700 38 C0 00 01 */ li r6, 1
+/* 802EFAA4 002EB704 38 60 00 01 */ li r3, 1
+/* 802EFAA8 002EB708 7C 09 03 A6 */ mtctr r0
+lbl_802EFAAC:
+/* 802EFAAC 002EB70C 7C 60 30 30 */ slw r0, r3, r6
+/* 802EFAB0 002EB710 7C A0 00 39 */ and. r0, r5, r0
+/* 802EFAB4 002EB714 41 82 00 14 */ beq lbl_802EFAC8
+/* 802EFAB8 002EB718 88 04 00 24 */ lbz r0, 0x24(r4)
+/* 802EFABC 002EB71C 38 60 00 01 */ li r3, 1
+/* 802EFAC0 002EB720 7C 67 00 30 */ slw r7, r3, r0
+/* 802EFAC4 002EB724 48 00 00 10 */ b lbl_802EFAD4
+lbl_802EFAC8:
+/* 802EFAC8 002EB728 38 84 00 34 */ addi r4, r4, 0x34
+/* 802EFACC 002EB72C 38 C6 00 01 */ addi r6, r6, 1
+/* 802EFAD0 002EB730 42 00 FF DC */ bdnz lbl_802EFAAC
+lbl_802EFAD4:
+/* 802EFAD4 002EB734 2C 1E 00 00 */ cmpwi r30, 0
+/* 802EFAD8 002EB738 41 82 01 94 */ beq lbl_802EFC6C
+/* 802EFADC 002EB73C 38 60 00 01 */ li r3, 1
+lbl_802EFAE0:
+/* 802EFAE0 002EB740 83 DE 00 00 */ lwz r30, 0(r30)
+/* 802EFAE4 002EB744 2C 1E 00 00 */ cmpwi r30, 0
+/* 802EFAE8 002EB748 41 82 00 08 */ beq lbl_802EFAF0
+/* 802EFAEC 002EB74C 48 00 00 08 */ b lbl_802EFAF4
+lbl_802EFAF0:
+/* 802EFAF0 002EB750 83 DC 00 04 */ lwz r30, 4(r28)
+lbl_802EFAF4:
+/* 802EFAF4 002EB754 88 1E 03 68 */ lbz r0, 0x368(r30)
+/* 802EFAF8 002EB758 54 00 F6 BE */ rlwinm r0, r0, 0x1e, 0x1a, 0x1f
+/* 802EFAFC 002EB75C 7C 60 00 30 */ slw r0, r3, r0
+/* 802EFB00 002EB760 7C E0 00 39 */ and. r0, r7, r0
+/* 802EFB04 002EB764 41 82 FF DC */ beq lbl_802EFAE0
+/* 802EFB08 002EB768 93 DC 00 18 */ stw r30, 0x18(r28)
+/* 802EFB0C 002EB76C 38 00 00 03 */ li r0, 3
+/* 802EFB10 002EB770 38 7E 04 E8 */ addi r3, r30, 0x4e8
+/* 802EFB14 002EB774 38 9F 00 01 */ addi r4, r31, 1
+/* 802EFB18 002EB778 98 1F 00 00 */ stb r0, 0(r31)
+/* 802EFB1C 002EB77C 38 A0 00 E4 */ li r5, 0xe4
+/* 802EFB20 002EB780 48 00 44 ED */ bl func_802F400C
+/* 802EFB24 002EB784 A0 7D 00 04 */ lhz r3, 4(r29)
+/* 802EFB28 002EB788 38 03 00 E4 */ addi r0, r3, 0xe4
+/* 802EFB2C 002EB78C B0 1D 00 04 */ sth r0, 4(r29)
+/* 802EFB30 002EB790 A0 1E 05 D4 */ lhz r0, 0x5d4(r30)
+/* 802EFB34 002EB794 B0 1D 00 06 */ sth r0, 6(r29)
+/* 802EFB38 002EB798 48 00 01 34 */ b lbl_802EFC6C
+lbl_802EFB3C:
+/* 802EFB3C 002EB79C 80 1C 00 1C */ lwz r0, 0x1c(r28)
+/* 802EFB40 002EB7A0 2C 00 00 00 */ cmpwi r0, 0
+/* 802EFB44 002EB7A4 41 82 00 08 */ beq lbl_802EFB4C
+/* 802EFB48 002EB7A8 48 00 00 08 */ b lbl_802EFB50
+lbl_802EFB4C:
+/* 802EFB4C 002EB7AC 80 1C 00 04 */ lwz r0, 4(r28)
+lbl_802EFB50:
+/* 802EFB50 002EB7B0 2C 00 00 00 */ cmpwi r0, 0
+/* 802EFB54 002EB7B4 7C 1E 03 78 */ mr r30, r0
+/* 802EFB58 002EB7B8 41 82 01 14 */ beq lbl_802EFC6C
+lbl_802EFB5C:
+/* 802EFB5C 002EB7BC 83 DE 00 00 */ lwz r30, 0(r30)
+/* 802EFB60 002EB7C0 2C 1E 00 00 */ cmpwi r30, 0
+/* 802EFB64 002EB7C4 41 82 00 08 */ beq lbl_802EFB6C
+/* 802EFB68 002EB7C8 48 00 00 08 */ b lbl_802EFB70
+lbl_802EFB6C:
+/* 802EFB6C 002EB7CC 83 DC 00 04 */ lwz r30, 4(r28)
+lbl_802EFB70:
+/* 802EFB70 002EB7D0 A0 7E 05 D0 */ lhz r3, 0x5d0(r30)
+/* 802EFB74 002EB7D4 2C 03 00 00 */ cmpwi r3, 0
+/* 802EFB78 002EB7D8 40 82 00 0C */ bne lbl_802EFB84
+/* 802EFB7C 002EB7DC 7C 1E 00 40 */ cmplw r30, r0
+/* 802EFB80 002EB7E0 40 82 FF DC */ bne lbl_802EFB5C
+lbl_802EFB84:
+/* 802EFB84 002EB7E4 2C 03 00 00 */ cmpwi r3, 0
+/* 802EFB88 002EB7E8 41 82 00 E4 */ beq lbl_802EFC6C
+/* 802EFB8C 002EB7EC 93 DC 00 1C */ stw r30, 0x1c(r28)
+/* 802EFB90 002EB7F0 38 60 00 01 */ li r3, 1
+/* 802EFB94 002EB7F4 A0 9C 03 72 */ lhz r4, 0x372(r28)
+/* 802EFB98 002EB7F8 88 1E 03 68 */ lbz r0, 0x368(r30)
+/* 802EFB9C 002EB7FC 54 00 F6 BE */ rlwinm r0, r0, 0x1e, 0x1a, 0x1f
+/* 802EFBA0 002EB800 7C 60 00 30 */ slw r0, r3, r0
+/* 802EFBA4 002EB804 7C 80 00 39 */ and. r0, r4, r0
+/* 802EFBA8 002EB808 41 82 00 44 */ beq lbl_802EFBEC
+/* 802EFBAC 002EB80C A0 1E 05 CE */ lhz r0, 0x5ce(r30)
+/* 802EFBB0 002EB810 A0 7E 05 CC */ lhz r3, 0x5cc(r30)
+/* 802EFBB4 002EB814 7C 80 18 51 */ subf. r4, r0, r3
+/* 802EFBB8 002EB818 41 80 00 30 */ blt lbl_802EFBE8
+/* 802EFBBC 002EB81C 2C 04 00 02 */ cmpwi r4, 2
+/* 802EFBC0 002EB820 41 81 00 28 */ bgt lbl_802EFBE8
+/* 802EFBC4 002EB824 38 03 00 01 */ addi r0, r3, 1
+/* 802EFBC8 002EB828 B0 1E 05 CC */ sth r0, 0x5cc(r30)
+/* 802EFBCC 002EB82C 54 03 04 3E */ clrlwi r3, r0, 0x10
+/* 802EFBD0 002EB830 A0 1E 04 E0 */ lhz r0, 0x4e0(r30)
+/* 802EFBD4 002EB834 7C 03 00 40 */ cmplw r3, r0
+/* 802EFBD8 002EB838 41 80 00 14 */ blt lbl_802EFBEC
+/* 802EFBDC 002EB83C A0 1E 05 CE */ lhz r0, 0x5ce(r30)
+/* 802EFBE0 002EB840 B0 1E 05 CC */ sth r0, 0x5cc(r30)
+/* 802EFBE4 002EB844 48 00 00 08 */ b lbl_802EFBEC
+lbl_802EFBE8:
+/* 802EFBE8 002EB848 B0 1E 05 CC */ sth r0, 0x5cc(r30)
+lbl_802EFBEC:
+/* 802EFBEC 002EB84C A3 7E 05 CC */ lhz r27, 0x5cc(r30)
+/* 802EFBF0 002EB850 38 7E 04 DC */ addi r3, r30, 0x4dc
+/* 802EFBF4 002EB854 38 A1 00 08 */ addi r5, r1, 8
+/* 802EFBF8 002EB858 7F 64 DB 78 */ mr r4, r27
+/* 802EFBFC 002EB85C 4B FF F2 CD */ bl WDPi_GetSegmentRegion
+/* 802EFC00 002EB860 2C 03 00 00 */ cmpwi r3, 0
+/* 802EFC04 002EB864 41 82 00 68 */ beq lbl_802EFC6C
+/* 802EFC08 002EB868 81 9E 00 08 */ lwz r12, 8(r30)
+/* 802EFC0C 002EB86C 7F C3 F3 78 */ mr r3, r30
+/* 802EFC10 002EB870 38 9F 00 05 */ addi r4, r31, 5
+/* 802EFC14 002EB874 38 A1 00 08 */ addi r5, r1, 8
+/* 802EFC18 002EB878 7D 89 03 A6 */ mtctr r12
+/* 802EFC1C 002EB87C 4E 80 04 21 */ bctrl
+/* 802EFC20 002EB880 2C 03 00 00 */ cmpwi r3, 0
+/* 802EFC24 002EB884 41 82 00 48 */ beq lbl_802EFC6C
+/* 802EFC28 002EB888 38 60 00 04 */ li r3, 4
+/* 802EFC2C 002EB88C 57 60 C6 3E */ rlwinm r0, r27, 0x18, 0x18, 0x1f
+/* 802EFC30 002EB890 98 7F 00 00 */ stb r3, 0(r31)
+/* 802EFC34 002EB894 88 7E 03 68 */ lbz r3, 0x368(r30)
+/* 802EFC38 002EB898 54 63 F6 BE */ rlwinm r3, r3, 0x1e, 0x1a, 0x1f
+/* 802EFC3C 002EB89C 98 7F 00 01 */ stb r3, 1(r31)
+/* 802EFC40 002EB8A0 7C 63 46 70 */ srawi r3, r3, 8
+/* 802EFC44 002EB8A4 98 7F 00 02 */ stb r3, 2(r31)
+/* 802EFC48 002EB8A8 9B 7F 00 03 */ stb r27, 3(r31)
+/* 802EFC4C 002EB8AC 98 1F 00 04 */ stb r0, 4(r31)
+/* 802EFC50 002EB8B0 A0 7D 00 04 */ lhz r3, 4(r29)
+/* 802EFC54 002EB8B4 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 802EFC58 002EB8B8 7C 60 1A 14 */ add r3, r0, r3
+/* 802EFC5C 002EB8BC 38 03 00 04 */ addi r0, r3, 4
+/* 802EFC60 002EB8C0 B0 1D 00 04 */ sth r0, 4(r29)
+/* 802EFC64 002EB8C4 A0 1E 05 D0 */ lhz r0, 0x5d0(r30)
+/* 802EFC68 002EB8C8 B0 1D 00 06 */ sth r0, 6(r29)
+lbl_802EFC6C:
+/* 802EFC6C 002EB8CC A0 7D 00 04 */ lhz r3, 4(r29)
+/* 802EFC70 002EB8D0 38 00 00 00 */ li r0, 0
+/* 802EFC74 002EB8D4 38 63 00 01 */ addi r3, r3, 1
+/* 802EFC78 002EB8D8 54 63 04 3C */ rlwinm r3, r3, 0, 0x10, 0x1e
+/* 802EFC7C 002EB8DC B0 7D 00 04 */ sth r3, 4(r29)
+/* 802EFC80 002EB8E0 80 7C 00 04 */ lwz r3, 4(r28)
+/* 802EFC84 002EB8E4 48 00 00 0C */ b lbl_802EFC90
+lbl_802EFC88:
+/* 802EFC88 002EB8E8 B0 03 05 CE */ sth r0, 0x5ce(r3)
+/* 802EFC8C 002EB8EC 80 63 00 00 */ lwz r3, 0(r3)
+lbl_802EFC90:
+/* 802EFC90 002EB8F0 2C 03 00 00 */ cmpwi r3, 0
+/* 802EFC94 002EB8F4 40 82 FF F4 */ bne lbl_802EFC88
+/* 802EFC98 002EB8F8 80 1C 00 08 */ lwz r0, 8(r28)
+/* 802EFC9C 002EB8FC 38 60 00 00 */ li r3, 0
+/* 802EFCA0 002EB900 B0 7C 03 72 */ sth r3, 0x372(r28)
+/* 802EFCA4 002EB904 34 00 FF FF */ addic. r0, r0, -1
+/* 802EFCA8 002EB908 90 1C 00 08 */ stw r0, 8(r28)
+/* 802EFCAC 002EB90C 40 82 00 0C */ bne lbl_802EFCB8
+/* 802EFCB0 002EB910 80 7C 00 0C */ lwz r3, 0xc(r28)
+/* 802EFCB4 002EB914 4B F7 EA D1 */ bl OSRestoreInterrupts
+lbl_802EFCB8:
+/* 802EFCB8 002EB918 39 61 00 30 */ addi r11, r1, 0x30
+/* 802EFCBC 002EB91C 4B ED 74 B9 */ bl _restgpr_27
+/* 802EFCC0 002EB920 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802EFCC4 002EB924 7C 08 03 A6 */ mtlr r0
+/* 802EFCC8 002EB928 38 21 00 30 */ addi r1, r1, 0x30
+/* 802EFCCC 002EB92C 4E 80 00 20 */ blr
+
+.global WDP_CallParentRecvHook
+WDP_CallParentRecvHook:
+/* 802EFCD0 002EB930 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802EFCD4 002EB934 7C 08 02 A6 */ mflr r0
+/* 802EFCD8 002EB938 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802EFCDC 002EB93C 39 61 00 30 */ addi r11, r1, 0x30
+/* 802EFCE0 002EB940 4B ED 74 49 */ bl _savegpr_27
+/* 802EFCE4 002EB944 1C 04 00 34 */ mulli r0, r4, 0x34
+/* 802EFCE8 002EB948 83 85 00 00 */ lwz r28, 0(r5)
+/* 802EFCEC 002EB94C 7C 7D 1B 78 */ mr r29, r3
+/* 802EFCF0 002EB950 7C 9E 23 78 */ mr r30, r4
+/* 802EFCF4 002EB954 7F E3 02 14 */ add r31, r3, r0
+/* 802EFCF8 002EB958 83 7F 00 28 */ lwz r27, 0x28(r31)
+/* 802EFCFC 002EB95C 4B F7 EA 61 */ bl OSDisableInterrupts
+/* 802EFD00 002EB960 80 9D 00 08 */ lwz r4, 8(r29)
+/* 802EFD04 002EB964 38 04 00 01 */ addi r0, r4, 1
+/* 802EFD08 002EB968 2C 00 00 01 */ cmpwi r0, 1
+/* 802EFD0C 002EB96C 90 1D 00 08 */ stw r0, 8(r29)
+/* 802EFD10 002EB970 40 82 00 08 */ bne lbl_802EFD18
+/* 802EFD14 002EB974 90 7D 00 0C */ stw r3, 0xc(r29)
+lbl_802EFD18:
+/* 802EFD18 002EB978 88 1C 00 00 */ lbz r0, 0(r28)
+/* 802EFD1C 002EB97C 2C 00 00 09 */ cmpwi r0, 9
+/* 802EFD20 002EB980 41 82 01 C4 */ beq lbl_802EFEE4
+/* 802EFD24 002EB984 40 80 00 14 */ bge lbl_802EFD38
+/* 802EFD28 002EB988 2C 00 00 07 */ cmpwi r0, 7
+/* 802EFD2C 002EB98C 41 82 00 18 */ beq lbl_802EFD44
+/* 802EFD30 002EB990 40 80 01 98 */ bge lbl_802EFEC8
+/* 802EFD34 002EB994 48 00 02 68 */ b lbl_802EFF9C
+lbl_802EFD38:
+/* 802EFD38 002EB998 2C 00 00 0B */ cmpwi r0, 0xb
+/* 802EFD3C 002EB99C 40 80 02 60 */ bge lbl_802EFF9C
+/* 802EFD40 002EB9A0 48 00 02 24 */ b lbl_802EFF64
+lbl_802EFD44:
+/* 802EFD44 002EB9A4 2C 1B 00 01 */ cmpwi r27, 1
+/* 802EFD48 002EB9A8 40 82 02 54 */ bne lbl_802EFF9C
+/* 802EFD4C 002EB9AC 8B 7C 00 01 */ lbz r27, 1(r28)
+/* 802EFD50 002EB9B0 38 7F 00 50 */ addi r3, r31, 0x50
+/* 802EFD54 002EB9B4 38 80 00 05 */ li r4, 5
+/* 802EFD58 002EB9B8 7F 65 DB 78 */ mr r5, r27
+/* 802EFD5C 002EB9BC 4B FF F1 F9 */ bl WDP_MergeBitset
+/* 802EFD60 002EB9C0 2C 03 00 00 */ cmpwi r3, 0
+/* 802EFD64 002EB9C4 41 82 02 38 */ beq lbl_802EFF9C
+/* 802EFD68 002EB9C8 1C DB 00 06 */ mulli r6, r27, 6
+/* 802EFD6C 002EB9CC 38 9F 00 30 */ addi r4, r31, 0x30
+/* 802EFD70 002EB9D0 38 7C 00 02 */ addi r3, r28, 2
+/* 802EFD74 002EB9D4 38 A0 00 06 */ li r5, 6
+/* 802EFD78 002EB9D8 20 06 00 1E */ subfic r0, r6, 0x1e
+/* 802EFD7C 002EB9DC 28 00 00 06 */ cmplwi r0, 6
+/* 802EFD80 002EB9E0 7C 84 32 14 */ add r4, r4, r6
+/* 802EFD84 002EB9E4 40 80 00 08 */ bge lbl_802EFD8C
+/* 802EFD88 002EB9E8 7C 05 03 78 */ mr r5, r0
+lbl_802EFD8C:
+/* 802EFD8C 002EB9EC 48 00 42 81 */ bl func_802F400C
+/* 802EFD90 002EB9F0 80 7F 00 54 */ lwz r3, 0x54(r31)
+/* 802EFD94 002EB9F4 38 03 00 01 */ addi r0, r3, 1
+/* 802EFD98 002EB9F8 28 00 00 05 */ cmplwi r0, 5
+/* 802EFD9C 002EB9FC 90 1F 00 54 */ stw r0, 0x54(r31)
+/* 802EFDA0 002EBA00 41 80 01 FC */ blt lbl_802EFF9C
+/* 802EFDA4 002EBA04 83 7D 00 04 */ lwz r27, 4(r29)
+/* 802EFDA8 002EBA08 48 00 00 08 */ b lbl_802EFDB0
+lbl_802EFDAC:
+/* 802EFDAC 002EBA0C 83 7B 00 00 */ lwz r27, 0(r27)
+lbl_802EFDB0:
+/* 802EFDB0 002EBA10 2C 1B 00 00 */ cmpwi r27, 0
+/* 802EFDB4 002EBA14 41 82 00 30 */ beq lbl_802EFDE4
+/* 802EFDB8 002EBA18 38 7B 03 64 */ addi r3, r27, 0x364
+/* 802EFDBC 002EBA1C 38 9F 00 30 */ addi r4, r31, 0x30
+/* 802EFDC0 002EBA20 38 A0 00 04 */ li r5, 4
+/* 802EFDC4 002EBA24 4B FF ED 89 */ bl WDP_CompareMemory
+/* 802EFDC8 002EBA28 2C 03 00 00 */ cmpwi r3, 0
+/* 802EFDCC 002EBA2C 40 82 FF E0 */ bne lbl_802EFDAC
+/* 802EFDD0 002EBA30 88 7B 03 68 */ lbz r3, 0x368(r27)
+/* 802EFDD4 002EBA34 88 1F 00 4C */ lbz r0, 0x4c(r31)
+/* 802EFDD8 002EBA38 54 63 F6 BE */ rlwinm r3, r3, 0x1e, 0x1a, 0x1f
+/* 802EFDDC 002EBA3C 7C 03 00 40 */ cmplw r3, r0
+/* 802EFDE0 002EBA40 40 82 FF CC */ bne lbl_802EFDAC
+lbl_802EFDE4:
+/* 802EFDE4 002EBA44 93 7F 00 2C */ stw r27, 0x2c(r31)
+/* 802EFDE8 002EBA48 2C 1B 00 00 */ cmpwi r27, 0
+/* 802EFDEC 002EBA4C 88 1F 00 34 */ lbz r0, 0x34(r31)
+/* 802EFDF0 002EBA50 53 C0 26 36 */ rlwimi r0, r30, 4, 0x18, 0x1b
+/* 802EFDF4 002EBA54 98 1F 00 34 */ stb r0, 0x34(r31)
+/* 802EFDF8 002EBA58 40 82 00 54 */ bne lbl_802EFE4C
+/* 802EFDFC 002EBA5C 38 60 00 05 */ li r3, 5
+/* 802EFE00 002EBA60 38 00 00 01 */ li r0, 1
+/* 802EFE04 002EBA64 93 C1 00 10 */ stw r30, 0x10(r1)
+/* 802EFE08 002EBA68 7C 04 F0 30 */ slw r4, r0, r30
+/* 802EFE0C 002EBA6C 90 61 00 14 */ stw r3, 0x14(r1)
+/* 802EFE10 002EBA70 A0 7D 03 6C */ lhz r3, 0x36c(r29)
+/* 802EFE14 002EBA74 A0 1D 03 68 */ lhz r0, 0x368(r29)
+/* 802EFE18 002EBA78 81 9D 00 00 */ lwz r12, 0(r29)
+/* 802EFE1C 002EBA7C 7C 63 23 78 */ or r3, r3, r4
+/* 802EFE20 002EBA80 7C 00 20 78 */ andc r0, r0, r4
+/* 802EFE24 002EBA84 B0 7D 03 6C */ sth r3, 0x36c(r29)
+/* 802EFE28 002EBA88 2C 0C 00 00 */ cmpwi r12, 0
+/* 802EFE2C 002EBA8C B0 1D 03 68 */ sth r0, 0x368(r29)
+/* 802EFE30 002EBA90 41 82 01 6C */ beq lbl_802EFF9C
+/* 802EFE34 002EBA94 7F A3 EB 78 */ mr r3, r29
+/* 802EFE38 002EBA98 38 A1 00 10 */ addi r5, r1, 0x10
+/* 802EFE3C 002EBA9C 38 80 00 01 */ li r4, 1
+/* 802EFE40 002EBAA0 7D 89 03 A6 */ mtctr r12
+/* 802EFE44 002EBAA4 4E 80 04 21 */ bctrl
+/* 802EFE48 002EBAA8 48 00 01 54 */ b lbl_802EFF9C
+lbl_802EFE4C:
+/* 802EFE4C 002EBAAC A0 7B 04 D8 */ lhz r3, 0x4d8(r27)
+/* 802EFE50 002EBAB0 4B FF EB 3D */ bl MATH_CountPopulation
+/* 802EFE54 002EBAB4 88 1B 02 42 */ lbz r0, 0x242(r27)
+/* 802EFE58 002EBAB8 54 63 06 3E */ clrlwi r3, r3, 0x18
+/* 802EFE5C 002EBABC 7C 03 00 40 */ cmplw r3, r0
+/* 802EFE60 002EBAC0 41 80 00 54 */ blt lbl_802EFEB4
+/* 802EFE64 002EBAC4 38 60 00 06 */ li r3, 6
+/* 802EFE68 002EBAC8 38 00 00 01 */ li r0, 1
+/* 802EFE6C 002EBACC 93 C1 00 08 */ stw r30, 8(r1)
+/* 802EFE70 002EBAD0 7C 04 F0 30 */ slw r4, r0, r30
+/* 802EFE74 002EBAD4 90 61 00 0C */ stw r3, 0xc(r1)
+/* 802EFE78 002EBAD8 A0 7D 03 70 */ lhz r3, 0x370(r29)
+/* 802EFE7C 002EBADC A0 1D 03 68 */ lhz r0, 0x368(r29)
+/* 802EFE80 002EBAE0 81 9D 00 00 */ lwz r12, 0(r29)
+/* 802EFE84 002EBAE4 7C 63 23 78 */ or r3, r3, r4
+/* 802EFE88 002EBAE8 7C 00 20 78 */ andc r0, r0, r4
+/* 802EFE8C 002EBAEC B0 7D 03 70 */ sth r3, 0x370(r29)
+/* 802EFE90 002EBAF0 2C 0C 00 00 */ cmpwi r12, 0
+/* 802EFE94 002EBAF4 B0 1D 03 68 */ sth r0, 0x368(r29)
+/* 802EFE98 002EBAF8 41 82 01 04 */ beq lbl_802EFF9C
+/* 802EFE9C 002EBAFC 7F A3 EB 78 */ mr r3, r29
+/* 802EFEA0 002EBB00 38 A1 00 08 */ addi r5, r1, 8
+/* 802EFEA4 002EBB04 38 80 00 01 */ li r4, 1
+/* 802EFEA8 002EBB08 7D 89 03 A6 */ mtctr r12
+/* 802EFEAC 002EBB0C 4E 80 04 21 */ bctrl
+/* 802EFEB0 002EBB10 48 00 00 EC */ b lbl_802EFF9C
+lbl_802EFEB4:
+/* 802EFEB4 002EBB14 7F A3 EB 78 */ mr r3, r29
+/* 802EFEB8 002EBB18 7F C4 F3 78 */ mr r4, r30
+/* 802EFEBC 002EBB1C 38 A0 00 02 */ li r5, 2
+/* 802EFEC0 002EBB20 4B FF F1 45 */ bl WDPi_UpdateStatus
+/* 802EFEC4 002EBB24 48 00 00 D8 */ b lbl_802EFF9C
+lbl_802EFEC8:
+/* 802EFEC8 002EBB28 2C 1B 00 07 */ cmpwi r27, 7
+/* 802EFECC 002EBB2C 40 82 00 D0 */ bne lbl_802EFF9C
+/* 802EFED0 002EBB30 7F A3 EB 78 */ mr r3, r29
+/* 802EFED4 002EBB34 7F C4 F3 78 */ mr r4, r30
+/* 802EFED8 002EBB38 38 A0 00 03 */ li r5, 3
+/* 802EFEDC 002EBB3C 4B FF F1 29 */ bl WDPi_UpdateStatus
+/* 802EFEE0 002EBB40 48 00 00 BC */ b lbl_802EFF9C
+lbl_802EFEE4:
+/* 802EFEE4 002EBB44 2C 1B 00 04 */ cmpwi r27, 4
+/* 802EFEE8 002EBB48 40 82 00 B4 */ bne lbl_802EFF9C
+/* 802EFEEC 002EBB4C 80 BF 00 2C */ lwz r5, 0x2c(r31)
+/* 802EFEF0 002EBB50 2C 05 00 00 */ cmpwi r5, 0
+/* 802EFEF4 002EBB54 41 82 00 A8 */ beq lbl_802EFF9C
+/* 802EFEF8 002EBB58 88 7C 00 04 */ lbz r3, 4(r28)
+/* 802EFEFC 002EBB5C 88 1C 00 03 */ lbz r0, 3(r28)
+/* 802EFF00 002EBB60 50 60 44 2E */ rlwimi r0, r3, 8, 0x10, 0x17
+/* 802EFF04 002EBB64 88 9C 00 01 */ lbz r4, 1(r28)
+/* 802EFF08 002EBB68 88 7C 00 02 */ lbz r3, 2(r28)
+/* 802EFF0C 002EBB6C 90 1F 00 58 */ stw r0, 0x58(r31)
+/* 802EFF10 002EBB70 50 64 44 2E */ rlwimi r4, r3, 8, 0x10, 0x17
+/* 802EFF14 002EBB74 A0 05 05 CE */ lhz r0, 0x5ce(r5)
+/* 802EFF18 002EBB78 7C 00 20 40 */ cmplw r0, r4
+/* 802EFF1C 002EBB7C 40 80 00 08 */ bge lbl_802EFF24
+/* 802EFF20 002EBB80 B0 85 05 CE */ sth r4, 0x5ce(r5)
+lbl_802EFF24:
+/* 802EFF24 002EBB84 88 05 03 68 */ lbz r0, 0x368(r5)
+/* 802EFF28 002EBB88 38 60 00 01 */ li r3, 1
+/* 802EFF2C 002EBB8C 81 9D 00 00 */ lwz r12, 0(r29)
+/* 802EFF30 002EBB90 54 00 F6 BE */ rlwinm r0, r0, 0x1e, 0x1a, 0x1f
+/* 802EFF34 002EBB94 A0 9D 03 72 */ lhz r4, 0x372(r29)
+/* 802EFF38 002EBB98 7C 60 00 30 */ slw r0, r3, r0
+/* 802EFF3C 002EBB9C 2C 0C 00 00 */ cmpwi r12, 0
+/* 802EFF40 002EBBA0 7C 80 03 78 */ or r0, r4, r0
+/* 802EFF44 002EBBA4 B0 1D 03 72 */ sth r0, 0x372(r29)
+/* 802EFF48 002EBBA8 41 82 00 54 */ beq lbl_802EFF9C
+/* 802EFF4C 002EBBAC 7F A3 EB 78 */ mr r3, r29
+/* 802EFF50 002EBBB0 7F C5 F3 78 */ mr r5, r30
+/* 802EFF54 002EBBB4 38 80 00 00 */ li r4, 0
+/* 802EFF58 002EBBB8 7D 89 03 A6 */ mtctr r12
+/* 802EFF5C 002EBBBC 4E 80 04 21 */ bctrl
+/* 802EFF60 002EBBC0 48 00 00 3C */ b lbl_802EFF9C
+lbl_802EFF64:
+/* 802EFF64 002EBBC4 2C 1B 00 04 */ cmpwi r27, 4
+/* 802EFF68 002EBBC8 40 82 00 34 */ bne lbl_802EFF9C
+/* 802EFF6C 002EBBCC 80 FF 00 2C */ lwz r7, 0x2c(r31)
+/* 802EFF70 002EBBD0 38 00 00 01 */ li r0, 1
+/* 802EFF74 002EBBD4 7C 00 F0 30 */ slw r0, r0, r30
+/* 802EFF78 002EBBD8 7F A3 EB 78 */ mr r3, r29
+/* 802EFF7C 002EBBDC A0 C7 05 D0 */ lhz r6, 0x5d0(r7)
+/* 802EFF80 002EBBE0 7F C4 F3 78 */ mr r4, r30
+/* 802EFF84 002EBBE4 38 A0 00 05 */ li r5, 5
+/* 802EFF88 002EBBE8 7C C0 00 78 */ andc r0, r6, r0
+/* 802EFF8C 002EBBEC B0 07 05 D0 */ sth r0, 0x5d0(r7)
+/* 802EFF90 002EBBF0 A0 07 04 E0 */ lhz r0, 0x4e0(r7)
+/* 802EFF94 002EBBF4 90 1F 00 58 */ stw r0, 0x58(r31)
+/* 802EFF98 002EBBF8 4B FF F0 6D */ bl WDPi_UpdateStatus
+lbl_802EFF9C:
+/* 802EFF9C 002EBBFC 80 1D 00 08 */ lwz r0, 8(r29)
+/* 802EFFA0 002EBC00 34 00 FF FF */ addic. r0, r0, -1
+/* 802EFFA4 002EBC04 90 1D 00 08 */ stw r0, 8(r29)
+/* 802EFFA8 002EBC08 40 82 00 0C */ bne lbl_802EFFB4
+/* 802EFFAC 002EBC0C 80 7D 00 0C */ lwz r3, 0xc(r29)
+/* 802EFFB0 002EBC10 4B F7 E7 D5 */ bl OSRestoreInterrupts
+lbl_802EFFB4:
+/* 802EFFB4 002EBC14 39 61 00 30 */ addi r11, r1, 0x30
+/* 802EFFB8 002EBC18 4B ED 71 BD */ bl _restgpr_27
+/* 802EFFBC 002EBC1C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802EFFC0 002EBC20 7C 08 03 A6 */ mtlr r0
+/* 802EFFC4 002EBC24 38 21 00 30 */ addi r1, r1, 0x30
+/* 802EFFC8 002EBC28 4E 80 00 20 */ blr
+
+.global WDP_RegisterSession
+WDP_RegisterSession:
+/* 802EFFCC 002EBC2C 94 21 FF 90 */ stwu r1, -0x70(r1)
+/* 802EFFD0 002EBC30 7C 08 02 A6 */ mflr r0
+/* 802EFFD4 002EBC34 90 01 00 74 */ stw r0, 0x74(r1)
+/* 802EFFD8 002EBC38 39 61 00 70 */ addi r11, r1, 0x70
+/* 802EFFDC 002EBC3C 4B ED 71 19 */ bl __save_gpr
+/* 802EFFE0 002EBC40 3E C0 80 44 */ lis r22, lbl_80445BD8@ha
+/* 802EFFE4 002EBC44 82 A1 00 7C */ lwz r21, 0x7c(r1)
+/* 802EFFE8 002EBC48 82 81 00 80 */ lwz r20, 0x80(r1)
+/* 802EFFEC 002EBC4C 7C 6F 1B 78 */ mr r15, r3
+/* 802EFFF0 002EBC50 82 41 00 84 */ lwz r18, 0x84(r1)
+/* 802EFFF4 002EBC54 7C 90 23 78 */ mr r16, r4
+/* 802EFFF8 002EBC58 90 C1 00 08 */ stw r6, 8(r1)
+/* 802EFFFC 002EBC5C 7C AE 2B 78 */ mr r14, r5
+/* 802F0000 002EBC60 7D 51 53 78 */ mr r17, r10
+/* 802F0004 002EBC64 3A D6 5B D8 */ addi r22, r22, lbl_80445BD8@l
+/* 802F0008 002EBC68 90 E1 00 0C */ stw r7, 0xc(r1)
+/* 802F000C 002EBC6C 3A 64 04 E8 */ addi r19, r4, 0x4e8
+/* 802F0010 002EBC70 91 01 00 10 */ stw r8, 0x10(r1)
+/* 802F0014 002EBC74 91 21 00 14 */ stw r9, 0x14(r1)
+/* 802F0018 002EBC78 4B F7 E7 45 */ bl OSDisableInterrupts
+/* 802F001C 002EBC7C 80 8F 00 08 */ lwz r4, 8(r15)
+/* 802F0020 002EBC80 38 04 00 01 */ addi r0, r4, 1
+/* 802F0024 002EBC84 2C 00 00 01 */ cmpwi r0, 1
+/* 802F0028 002EBC88 90 0F 00 08 */ stw r0, 8(r15)
+/* 802F002C 002EBC8C 40 82 00 08 */ bne lbl_802F0034
+/* 802F0030 002EBC90 90 6F 00 0C */ stw r3, 0xc(r15)
+lbl_802F0034:
+/* 802F0034 002EBC94 80 F2 00 24 */ lwz r7, 0x24(r18)
+/* 802F0038 002EBC98 38 73 00 08 */ addi r3, r19, 8
+/* 802F003C 002EBC9C 38 80 00 00 */ li r4, 0
+/* 802F0040 002EBCA0 38 A0 00 04 */ li r5, 4
+/* 802F0044 002EBCA4 54 E6 42 1E */ rlwinm r6, r7, 8, 8, 0xf
+/* 802F0048 002EBCA8 54 E0 C4 2E */ rlwinm r0, r7, 0x18, 0x10, 0x17
+/* 802F004C 002EBCAC 50 E6 C0 0E */ rlwimi r6, r7, 0x18, 0, 7
+/* 802F0050 002EBCB0 50 E0 46 3E */ rlwimi r0, r7, 8, 0x18, 0x1f
+/* 802F0054 002EBCB4 7C C0 03 78 */ or r0, r6, r0
+/* 802F0058 002EBCB8 54 07 C6 3E */ rlwinm r7, r0, 0x18, 0x18, 0x1f
+/* 802F005C 002EBCBC 98 13 00 00 */ stb r0, 0(r19)
+/* 802F0060 002EBCC0 54 06 86 3E */ rlwinm r6, r0, 0x10, 0x18, 0x1f
+/* 802F0064 002EBCC4 54 00 46 3E */ srwi r0, r0, 0x18
+/* 802F0068 002EBCC8 98 F3 00 01 */ stb r7, 1(r19)
+/* 802F006C 002EBCCC 98 D3 00 02 */ stb r6, 2(r19)
+/* 802F0070 002EBCD0 98 13 00 03 */ stb r0, 3(r19)
+/* 802F0074 002EBCD4 80 F2 00 34 */ lwz r7, 0x34(r18)
+/* 802F0078 002EBCD8 54 E6 42 1E */ rlwinm r6, r7, 8, 8, 0xf
+/* 802F007C 002EBCDC 54 E0 C4 2E */ rlwinm r0, r7, 0x18, 0x10, 0x17
+/* 802F0080 002EBCE0 50 E6 C0 0E */ rlwimi r6, r7, 0x18, 0, 7
+/* 802F0084 002EBCE4 50 E0 46 3E */ rlwimi r0, r7, 8, 0x18, 0x1f
+/* 802F0088 002EBCE8 7C C0 03 78 */ or r0, r6, r0
+/* 802F008C 002EBCEC 54 07 C6 3E */ rlwinm r7, r0, 0x18, 0x18, 0x1f
+/* 802F0090 002EBCF0 98 13 00 04 */ stb r0, 4(r19)
+/* 802F0094 002EBCF4 54 06 86 3E */ rlwinm r6, r0, 0x10, 0x18, 0x1f
+/* 802F0098 002EBCF8 54 00 46 3E */ srwi r0, r0, 0x18
+/* 802F009C 002EBCFC 98 F3 00 05 */ stb r7, 5(r19)
+/* 802F00A0 002EBD00 98 D3 00 06 */ stb r6, 6(r19)
+/* 802F00A4 002EBD04 98 13 00 07 */ stb r0, 7(r19)
+/* 802F00A8 002EBD08 48 00 3F 61 */ bl func_802F4008
+/* 802F00AC 002EBD0C 7E A3 AB 78 */ mr r3, r21
+/* 802F00B0 002EBD10 38 93 00 3C */ addi r4, r19, 0x3c
+/* 802F00B4 002EBD14 38 A0 00 88 */ li r5, 0x88
+/* 802F00B8 002EBD18 48 00 3F 55 */ bl func_802F400C
+/* 802F00BC 002EBD1C 7E 83 A3 78 */ mr r3, r20
+/* 802F00C0 002EBD20 38 93 00 C4 */ addi r4, r19, 0xc4
+/* 802F00C4 002EBD24 38 A0 00 20 */ li r5, 0x20
+/* 802F00C8 002EBD28 48 00 3F 45 */ bl func_802F400C
+/* 802F00CC 002EBD2C 38 72 00 28 */ addi r3, r18, 0x28
+/* 802F00D0 002EBD30 38 12 00 38 */ addi r0, r18, 0x38
+/* 802F00D4 002EBD34 3A 40 00 00 */ li r18, 0
+/* 802F00D8 002EBD38 38 82 A4 98 */ addi r4, r2, lbl_80642A98-_SDA2_BASE_
+/* 802F00DC 002EBD3C 3F 40 80 40 */ lis r26, lbl_803FE0F8@ha
+/* 802F00E0 002EBD40 90 81 00 1C */ stw r4, 0x1c(r1)
+/* 802F00E4 002EBD44 7E 59 93 78 */ mr r25, r18
+/* 802F00E8 002EBD48 7E 5B 93 78 */ mr r27, r18
+/* 802F00EC 002EBD4C 90 61 00 20 */ stw r3, 0x20(r1)
+/* 802F00F0 002EBD50 3A E1 00 1C */ addi r23, r1, 0x1c
+/* 802F00F4 002EBD54 3B 5A E0 F8 */ addi r26, r26, lbl_803FE0F8@l
+/* 802F00F8 002EBD58 3B E0 00 00 */ li r31, 0
+/* 802F00FC 002EBD5C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F0100 002EBD60 3B C0 00 00 */ li r30, 0
+/* 802F0104 002EBD64 3B 80 00 2C */ li r28, 0x2c
+/* 802F0108 002EBD68 3B A0 00 02 */ li r29, 2
+lbl_802F010C:
+/* 802F010C 002EBD6C 93 21 00 18 */ stw r25, 0x18(r1)
+/* 802F0110 002EBD70 7E 43 93 78 */ mr r3, r18
+/* 802F0114 002EBD74 7D 17 F0 2E */ lwzx r8, r23, r30
+/* 802F0118 002EBD78 7F 13 FA 14 */ add r24, r19, r31
+/* 802F011C 002EBD7C 38 E1 00 18 */ addi r7, r1, 0x18
+/* 802F0120 002EBD80 38 C0 00 01 */ li r6, 1
+/* 802F0124 002EBD84 88 08 00 01 */ lbz r0, 1(r8)
+/* 802F0128 002EBD88 8A A8 00 00 */ lbz r21, 0(r8)
+/* 802F012C 002EBD8C 50 15 44 2E */ rlwimi r21, r0, 8, 0x10, 0x17
+/* 802F0130 002EBD90 88 08 00 05 */ lbz r0, 5(r8)
+/* 802F0134 002EBD94 88 A8 00 02 */ lbz r5, 2(r8)
+/* 802F0138 002EBD98 8A 88 00 04 */ lbz r20, 4(r8)
+/* 802F013C 002EBD9C 50 14 44 2E */ rlwimi r20, r0, 8, 0x10, 0x17
+/* 802F0140 002EBDA0 88 88 00 06 */ lbz r4, 6(r8)
+/* 802F0144 002EBDA4 50 B5 82 1E */ rlwimi r21, r5, 0x10, 8, 0xf
+/* 802F0148 002EBDA8 88 08 00 03 */ lbz r0, 3(r8)
+/* 802F014C 002EBDAC 50 94 82 1E */ rlwimi r20, r4, 0x10, 8, 0xf
+/* 802F0150 002EBDB0 50 15 C0 0E */ rlwimi r21, r0, 0x18, 0, 7
+/* 802F0154 002EBDB4 88 08 00 07 */ lbz r0, 7(r8)
+/* 802F0158 002EBDB8 7E A4 AB 78 */ mr r4, r21
+/* 802F015C 002EBDBC 50 14 C0 0E */ rlwimi r20, r0, 0x18, 0, 7
+/* 802F0160 002EBDC0 7E 85 A3 78 */ mr r5, r20
+/* 802F0164 002EBDC4 4B FF EA E9 */ bl WDPi_IsValidSegmentRegion
+/* 802F0168 002EBDC8 2C 03 00 00 */ cmpwi r3, 0
+/* 802F016C 002EBDCC 40 82 00 20 */ bne lbl_802F018C
+/* 802F0170 002EBDD0 7E A6 AB 78 */ mr r6, r21
+/* 802F0174 002EBDD4 7E 87 A3 78 */ mr r7, r20
+/* 802F0178 002EBDD8 38 76 00 00 */ addi r3, r22, 0
+/* 802F017C 002EBDDC 38 B6 00 10 */ addi r5, r22, 0x10
+/* 802F0180 002EBDE0 38 80 03 9A */ li r4, 0x39a
+/* 802F0184 002EBDE4 4C C6 31 82 */ crclr 6
+/* 802F0188 002EBDE8 48 00 3E 95 */ bl func_802F401C
+lbl_802F018C:
+/* 802F018C 002EBDEC 9A 98 00 14 */ stb r20, 0x14(r24)
+/* 802F0190 002EBDF0 56 80 C6 3E */ rlwinm r0, r20, 0x18, 0x18, 0x1f
+/* 802F0194 002EBDF4 56 83 86 3E */ rlwinm r3, r20, 0x10, 0x18, 0x1f
+/* 802F0198 002EBDF8 56 87 46 3E */ srwi r7, r20, 0x18
+/* 802F019C 002EBDFC 98 18 00 15 */ stb r0, 0x15(r24)
+/* 802F01A0 002EBE00 56 A6 C6 3E */ rlwinm r6, r21, 0x18, 0x18, 0x1f
+/* 802F01A4 002EBE04 56 A0 86 3E */ rlwinm r0, r21, 0x10, 0x18, 0x1f
+/* 802F01A8 002EBE08 56 A8 46 3E */ srwi r8, r21, 0x18
+/* 802F01AC 002EBE0C 98 78 00 16 */ stb r3, 0x16(r24)
+/* 802F01B0 002EBE10 38 78 00 19 */ addi r3, r24, 0x19
+/* 802F01B4 002EBE14 38 80 00 00 */ li r4, 0
+/* 802F01B8 002EBE18 38 A0 00 03 */ li r5, 3
+/* 802F01BC 002EBE1C 98 F8 00 17 */ stb r7, 0x17(r24)
+/* 802F01C0 002EBE20 9A B8 00 10 */ stb r21, 0x10(r24)
+/* 802F01C4 002EBE24 98 D8 00 11 */ stb r6, 0x11(r24)
+/* 802F01C8 002EBE28 98 18 00 12 */ stb r0, 0x12(r24)
+/* 802F01CC 002EBE2C 99 18 00 13 */ stb r8, 0x13(r24)
+/* 802F01D0 002EBE30 9A B8 00 0C */ stb r21, 0xc(r24)
+/* 802F01D4 002EBE34 98 D8 00 0D */ stb r6, 0xd(r24)
+/* 802F01D8 002EBE38 98 18 00 0E */ stb r0, 0xe(r24)
+/* 802F01DC 002EBE3C 99 18 00 0F */ stb r8, 0xf(r24)
+/* 802F01E0 002EBE40 48 00 3E 29 */ bl func_802F4008
+/* 802F01E4 002EBE44 7C 7A F0 2E */ lwzx r3, r26, r30
+/* 802F01E8 002EBE48 88 18 00 18 */ lbz r0, 0x18(r24)
+/* 802F01EC 002EBE4C 50 60 07 FE */ rlwimi r0, r3, 0, 0x1f, 0x1f
+/* 802F01F0 002EBE50 54 00 07 EE */ rlwinm r0, r0, 0, 0x1f, 0x17
+/* 802F01F4 002EBE54 98 18 00 18 */ stb r0, 0x18(r24)
+/* 802F01F8 002EBE58 80 01 00 18 */ lwz r0, 0x18(r1)
+/* 802F01FC 002EBE5C 2C 00 00 00 */ cmpwi r0, 0
+/* 802F0200 002EBE60 41 82 00 14 */ beq lbl_802F0214
+/* 802F0204 002EBE64 9B 78 00 0C */ stb r27, 0xc(r24)
+/* 802F0208 002EBE68 9B 78 00 0D */ stb r27, 0xd(r24)
+/* 802F020C 002EBE6C 9B 98 00 0E */ stb r28, 0xe(r24)
+/* 802F0210 002EBE70 9B B8 00 0F */ stb r29, 0xf(r24)
+lbl_802F0214:
+/* 802F0214 002EBE74 3A 52 00 01 */ addi r18, r18, 1
+/* 802F0218 002EBE78 3B DE 00 04 */ addi r30, r30, 4
+/* 802F021C 002EBE7C 2C 12 00 03 */ cmpwi r18, 3
+/* 802F0220 002EBE80 3B FF 00 10 */ addi r31, r31, 0x10
+/* 802F0224 002EBE84 41 80 FE E8 */ blt lbl_802F010C
+/* 802F0228 002EBE88 80 AF 00 24 */ lwz r5, 0x24(r15)
+/* 802F022C 002EBE8C 7E 64 9B 78 */ mr r4, r19
+/* 802F0230 002EBE90 38 70 04 DC */ addi r3, r16, 0x4dc
+/* 802F0234 002EBE94 4B FF EB 95 */ bl WDPi_InitSegmentMapper
+/* 802F0238 002EBE98 2C 03 00 00 */ cmpwi r3, 0
+/* 802F023C 002EBE9C 40 82 00 1C */ bne lbl_802F0258
+/* 802F0240 002EBEA0 38 76 00 00 */ addi r3, r22, 0
+/* 802F0244 002EBEA4 38 B6 00 38 */ addi r5, r22, 0x38
+/* 802F0248 002EBEA8 38 80 03 AD */ li r4, 0x3ad
+/* 802F024C 002EBEAC 4C C6 31 82 */ crclr 6
+/* 802F0250 002EBEB0 48 00 3D CD */ bl func_802F401C
+/* 802F0254 002EBEB4 48 00 01 94 */ b lbl_802F03E8
+lbl_802F0258:
+/* 802F0258 002EBEB8 88 01 00 7B */ lbz r0, 0x7b(r1)
+/* 802F025C 002EBEBC 38 80 00 00 */ li r4, 0
+/* 802F0260 002EBEC0 88 70 03 68 */ lbz r3, 0x368(r16)
+/* 802F0264 002EBEC4 56 27 C6 3E */ rlwinm r7, r17, 0x18, 0x18, 0x1f
+/* 802F0268 002EBEC8 56 26 86 3E */ rlwinm r6, r17, 0x10, 0x18, 0x1f
+/* 802F026C 002EBECC 56 25 46 3E */ srwi r5, r17, 0x18
+/* 802F0270 002EBED0 50 03 16 3A */ rlwimi r3, r0, 2, 0x18, 0x1d
+/* 802F0274 002EBED4 2C 0E 00 00 */ cmpwi r14, 0
+/* 802F0278 002EBED8 9A 30 03 64 */ stb r17, 0x364(r16)
+/* 802F027C 002EBEDC 3A 50 00 0C */ addi r18, r16, 0xc
+/* 802F0280 002EBEE0 98 F0 03 65 */ stb r7, 0x365(r16)
+/* 802F0284 002EBEE4 98 D0 03 66 */ stb r6, 0x366(r16)
+/* 802F0288 002EBEE8 98 B0 03 67 */ stb r5, 0x367(r16)
+/* 802F028C 002EBEEC 98 70 03 68 */ stb r3, 0x368(r16)
+/* 802F0290 002EBEF0 98 90 03 69 */ stb r4, 0x369(r16)
+/* 802F0294 002EBEF4 98 90 03 6A */ stb r4, 0x36a(r16)
+/* 802F0298 002EBEF8 41 82 00 10 */ beq lbl_802F02A8
+/* 802F029C 002EBEFC 80 01 00 08 */ lwz r0, 8(r1)
+/* 802F02A0 002EBF00 2C 00 00 00 */ cmpwi r0, 0
+/* 802F02A4 002EBF04 40 82 00 08 */ bne lbl_802F02AC
+lbl_802F02A8:
+/* 802F02A8 002EBF08 38 80 00 01 */ li r4, 1
+lbl_802F02AC:
+/* 802F02AC 002EBF0C 88 72 03 5C */ lbz r3, 0x35c(r18)
+/* 802F02B0 002EBF10 50 83 07 BE */ rlwimi r3, r4, 0, 0x1e, 0x1f
+/* 802F02B4 002EBF14 54 60 07 BE */ clrlwi r0, r3, 0x1e
+/* 802F02B8 002EBF18 98 72 03 5C */ stb r3, 0x35c(r18)
+/* 802F02BC 002EBF1C 28 00 00 01 */ cmplwi r0, 1
+/* 802F02C0 002EBF20 40 82 00 18 */ bne lbl_802F02D8
+/* 802F02C4 002EBF24 7E 43 93 78 */ mr r3, r18
+/* 802F02C8 002EBF28 38 80 00 00 */ li r4, 0
+/* 802F02CC 002EBF2C 38 A0 02 20 */ li r5, 0x220
+/* 802F02D0 002EBF30 48 00 3D 39 */ bl func_802F4008
+/* 802F02D4 002EBF34 48 00 00 24 */ b lbl_802F02F8
+lbl_802F02D8:
+/* 802F02D8 002EBF38 7D C3 73 78 */ mr r3, r14
+/* 802F02DC 002EBF3C 38 92 00 20 */ addi r4, r18, 0x20
+/* 802F02E0 002EBF40 38 A0 02 00 */ li r5, 0x200
+/* 802F02E4 002EBF44 48 00 3D 29 */ bl func_802F400C
+/* 802F02E8 002EBF48 80 61 00 08 */ lwz r3, 8(r1)
+/* 802F02EC 002EBF4C 7E 44 93 78 */ mr r4, r18
+/* 802F02F0 002EBF50 38 A0 00 20 */ li r5, 0x20
+/* 802F02F4 002EBF54 48 00 3D 19 */ bl func_802F400C
+lbl_802F02F8:
+/* 802F02F8 002EBF58 A0 CF 00 34 */ lhz r6, 0x34(r15)
+/* 802F02FC 002EBF5C 38 72 02 38 */ addi r3, r18, 0x238
+/* 802F0300 002EBF60 A0 0F 00 36 */ lhz r0, 0x36(r15)
+/* 802F0304 002EBF64 38 80 00 60 */ li r4, 0x60
+/* 802F0308 002EBF68 80 A1 00 10 */ lwz r5, 0x10(r1)
+/* 802F030C 002EBF6C B0 D2 02 20 */ sth r6, 0x220(r18)
+/* 802F0310 002EBF70 B0 12 02 22 */ sth r0, 0x222(r18)
+/* 802F0314 002EBF74 A0 CF 00 38 */ lhz r6, 0x38(r15)
+/* 802F0318 002EBF78 A0 0F 00 3A */ lhz r0, 0x3a(r15)
+/* 802F031C 002EBF7C B0 D2 02 24 */ sth r6, 0x224(r18)
+/* 802F0320 002EBF80 B0 12 02 26 */ sth r0, 0x226(r18)
+/* 802F0324 002EBF84 A0 CF 00 3C */ lhz r6, 0x3c(r15)
+/* 802F0328 002EBF88 A0 0F 00 3E */ lhz r0, 0x3e(r15)
+/* 802F032C 002EBF8C B0 D2 02 28 */ sth r6, 0x228(r18)
+/* 802F0330 002EBF90 B0 12 02 2A */ sth r0, 0x22a(r18)
+/* 802F0334 002EBF94 A0 CF 00 40 */ lhz r6, 0x40(r15)
+/* 802F0338 002EBF98 A0 0F 00 42 */ lhz r0, 0x42(r15)
+/* 802F033C 002EBF9C B0 D2 02 2C */ sth r6, 0x22c(r18)
+/* 802F0340 002EBFA0 B0 12 02 2E */ sth r0, 0x22e(r18)
+/* 802F0344 002EBFA4 A0 0F 00 44 */ lhz r0, 0x44(r15)
+/* 802F0348 002EBFA8 B0 12 02 30 */ sth r0, 0x230(r18)
+/* 802F034C 002EBFAC A0 0F 00 46 */ lhz r0, 0x46(r15)
+/* 802F0350 002EBFB0 B0 12 02 32 */ sth r0, 0x232(r18)
+/* 802F0354 002EBFB4 A0 0F 00 48 */ lhz r0, 0x48(r15)
+/* 802F0358 002EBFB8 B0 12 02 34 */ sth r0, 0x234(r18)
+/* 802F035C 002EBFBC 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 802F0360 002EBFC0 98 12 02 36 */ stb r0, 0x236(r18)
+/* 802F0364 002EBFC4 4B FF E8 25 */ bl WDP_CopyString
+/* 802F0368 002EBFC8 80 A1 00 14 */ lwz r5, 0x14(r1)
+/* 802F036C 002EBFCC 38 72 02 98 */ addi r3, r18, 0x298
+/* 802F0370 002EBFD0 38 80 00 C0 */ li r4, 0xc0
+/* 802F0374 002EBFD4 4B FF E8 15 */ bl WDP_CopyString
+/* 802F0378 002EBFD8 38 72 03 64 */ addi r3, r18, 0x364
+/* 802F037C 002EBFDC 38 80 00 00 */ li r4, 0
+/* 802F0380 002EBFE0 38 A0 01 60 */ li r5, 0x160
+/* 802F0384 002EBFE4 48 00 3C 85 */ bl func_802F4008
+/* 802F0388 002EBFE8 38 72 04 C4 */ addi r3, r18, 0x4c4
+/* 802F038C 002EBFEC 38 80 00 00 */ li r4, 0
+/* 802F0390 002EBFF0 38 A0 00 08 */ li r5, 8
+/* 802F0394 002EBFF4 48 00 3C 75 */ bl func_802F4008
+/* 802F0398 002EBFF8 80 01 00 8C */ lwz r0, 0x8c(r1)
+/* 802F039C 002EBFFC 38 60 00 00 */ li r3, 0
+/* 802F03A0 002EC000 38 80 00 01 */ li r4, 1
+/* 802F03A4 002EC004 B0 72 03 62 */ sth r3, 0x362(r18)
+/* 802F03A8 002EC008 38 AF 00 04 */ addi r5, r15, 4
+/* 802F03AC 002EC00C 90 10 00 04 */ stw r0, 4(r16)
+/* 802F03B0 002EC010 80 01 00 88 */ lwz r0, 0x88(r1)
+/* 802F03B4 002EC014 B0 92 03 60 */ sth r4, 0x360(r18)
+/* 802F03B8 002EC018 90 10 00 08 */ stw r0, 8(r16)
+/* 802F03BC 002EC01C B0 90 04 D8 */ sth r4, 0x4d8(r16)
+/* 802F03C0 002EC020 B0 70 05 D2 */ sth r3, 0x5d2(r16)
+/* 802F03C4 002EC024 B0 70 05 D4 */ sth r3, 0x5d4(r16)
+/* 802F03C8 002EC028 48 00 00 08 */ b lbl_802F03D0
+lbl_802F03CC:
+/* 802F03CC 002EC02C 7C 05 03 78 */ mr r5, r0
+lbl_802F03D0:
+/* 802F03D0 002EC030 80 05 00 00 */ lwz r0, 0(r5)
+/* 802F03D4 002EC034 2C 00 00 00 */ cmpwi r0, 0
+/* 802F03D8 002EC038 40 82 FF F4 */ bne lbl_802F03CC
+/* 802F03DC 002EC03C 92 05 00 00 */ stw r16, 0(r5)
+/* 802F03E0 002EC040 38 00 00 00 */ li r0, 0
+/* 802F03E4 002EC044 90 10 00 00 */ stw r0, 0(r16)
+lbl_802F03E8:
+/* 802F03E8 002EC048 80 0F 00 08 */ lwz r0, 8(r15)
+/* 802F03EC 002EC04C 34 00 FF FF */ addic. r0, r0, -1
+/* 802F03F0 002EC050 90 0F 00 08 */ stw r0, 8(r15)
+/* 802F03F4 002EC054 40 82 00 0C */ bne lbl_802F0400
+/* 802F03F8 002EC058 80 6F 00 0C */ lwz r3, 0xc(r15)
+/* 802F03FC 002EC05C 4B F7 E3 89 */ bl OSRestoreInterrupts
+lbl_802F0400:
+/* 802F0400 002EC060 39 61 00 70 */ addi r11, r1, 0x70
+/* 802F0404 002EC064 4B ED 6D 3D */ bl __restore_gpr
+/* 802F0408 002EC068 80 01 00 74 */ lwz r0, 0x74(r1)
+/* 802F040C 002EC06C 7C 08 03 A6 */ mtlr r0
+/* 802F0410 002EC070 38 21 00 70 */ addi r1, r1, 0x70
+/* 802F0414 002EC074 4E 80 00 20 */ blr
+
+.global WDP_AllowChildStatus
+WDP_AllowChildStatus:
+/* 802F0418 002EC078 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F041C 002EC07C 7C 08 02 A6 */ mflr r0
+/* 802F0420 002EC080 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F0424 002EC084 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F0428 002EC088 7C 7F 1B 78 */ mr r31, r3
+/* 802F042C 002EC08C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F0430 002EC090 3B C0 00 00 */ li r30, 0
+/* 802F0434 002EC094 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F0438 002EC098 7C BD 2B 78 */ mr r29, r5
+/* 802F043C 002EC09C 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802F0440 002EC0A0 7C 9C 23 78 */ mr r28, r4
+/* 802F0444 002EC0A4 4B F7 E3 19 */ bl OSDisableInterrupts
+/* 802F0448 002EC0A8 80 9F 00 08 */ lwz r4, 8(r31)
+/* 802F044C 002EC0AC 38 04 00 01 */ addi r0, r4, 1
+/* 802F0450 002EC0B0 2C 00 00 01 */ cmpwi r0, 1
+/* 802F0454 002EC0B4 90 1F 00 08 */ stw r0, 8(r31)
+/* 802F0458 002EC0B8 40 82 00 08 */ bne lbl_802F0460
+/* 802F045C 002EC0BC 90 7F 00 0C */ stw r3, 0xc(r31)
+lbl_802F0460:
+/* 802F0460 002EC0C0 1C 1C 00 34 */ mulli r0, r28, 0x34
+/* 802F0464 002EC0C4 7C 7F 02 14 */ add r3, r31, r0
+/* 802F0468 002EC0C8 80 03 00 28 */ lwz r0, 0x28(r3)
+/* 802F046C 002EC0CC 2C 00 00 04 */ cmpwi r0, 4
+/* 802F0470 002EC0D0 41 82 00 DC */ beq lbl_802F054C
+/* 802F0474 002EC0D4 40 80 00 14 */ bge lbl_802F0488
+/* 802F0478 002EC0D8 2C 00 00 02 */ cmpwi r0, 2
+/* 802F047C 002EC0DC 41 82 00 18 */ beq lbl_802F0494
+/* 802F0480 002EC0E0 40 80 00 90 */ bge lbl_802F0510
+/* 802F0484 002EC0E4 48 00 00 C8 */ b lbl_802F054C
+lbl_802F0488:
+/* 802F0488 002EC0E8 2C 00 00 06 */ cmpwi r0, 6
+/* 802F048C 002EC0EC 40 80 00 C0 */ bge lbl_802F054C
+/* 802F0490 002EC0F0 48 00 00 A0 */ b lbl_802F0530
+lbl_802F0494:
+/* 802F0494 002EC0F4 2C 1D 00 03 */ cmpwi r29, 3
+/* 802F0498 002EC0F8 40 82 00 1C */ bne lbl_802F04B4
+/* 802F049C 002EC0FC 7F E3 FB 78 */ mr r3, r31
+/* 802F04A0 002EC100 7F 84 E3 78 */ mr r4, r28
+/* 802F04A4 002EC104 38 A0 00 07 */ li r5, 7
+/* 802F04A8 002EC108 4B FF EB 5D */ bl WDPi_UpdateStatus
+/* 802F04AC 002EC10C 3B C0 00 01 */ li r30, 1
+/* 802F04B0 002EC110 48 00 00 9C */ b lbl_802F054C
+lbl_802F04B4:
+/* 802F04B4 002EC114 2C 1D 00 00 */ cmpwi r29, 0
+/* 802F04B8 002EC118 40 82 00 94 */ bne lbl_802F054C
+/* 802F04BC 002EC11C 38 60 00 06 */ li r3, 6
+/* 802F04C0 002EC120 38 00 00 01 */ li r0, 1
+/* 802F04C4 002EC124 93 81 00 08 */ stw r28, 8(r1)
+/* 802F04C8 002EC128 7C 04 E0 30 */ slw r4, r0, r28
+/* 802F04CC 002EC12C 90 61 00 0C */ stw r3, 0xc(r1)
+/* 802F04D0 002EC130 A0 7F 03 6C */ lhz r3, 0x36c(r31)
+/* 802F04D4 002EC134 A0 1F 03 68 */ lhz r0, 0x368(r31)
+/* 802F04D8 002EC138 81 9F 00 00 */ lwz r12, 0(r31)
+/* 802F04DC 002EC13C 7C 63 23 78 */ or r3, r3, r4
+/* 802F04E0 002EC140 7C 00 20 78 */ andc r0, r0, r4
+/* 802F04E4 002EC144 B0 7F 03 6C */ sth r3, 0x36c(r31)
+/* 802F04E8 002EC148 2C 0C 00 00 */ cmpwi r12, 0
+/* 802F04EC 002EC14C B0 1F 03 68 */ sth r0, 0x368(r31)
+/* 802F04F0 002EC150 41 82 00 18 */ beq lbl_802F0508
+/* 802F04F4 002EC154 7F E3 FB 78 */ mr r3, r31
+/* 802F04F8 002EC158 38 A1 00 08 */ addi r5, r1, 8
+/* 802F04FC 002EC15C 38 80 00 01 */ li r4, 1
+/* 802F0500 002EC160 7D 89 03 A6 */ mtctr r12
+/* 802F0504 002EC164 4E 80 04 21 */ bctrl
+lbl_802F0508:
+/* 802F0508 002EC168 3B C0 00 01 */ li r30, 1
+/* 802F050C 002EC16C 48 00 00 40 */ b lbl_802F054C
+lbl_802F0510:
+/* 802F0510 002EC170 2C 1D 00 04 */ cmpwi r29, 4
+/* 802F0514 002EC174 40 82 00 38 */ bne lbl_802F054C
+/* 802F0518 002EC178 7F E3 FB 78 */ mr r3, r31
+/* 802F051C 002EC17C 7F 84 E3 78 */ mr r4, r28
+/* 802F0520 002EC180 38 A0 00 04 */ li r5, 4
+/* 802F0524 002EC184 4B FF EA E1 */ bl WDPi_UpdateStatus
+/* 802F0528 002EC188 3B C0 00 01 */ li r30, 1
+/* 802F052C 002EC18C 48 00 00 20 */ b lbl_802F054C
+lbl_802F0530:
+/* 802F0530 002EC190 2C 1D 00 06 */ cmpwi r29, 6
+/* 802F0534 002EC194 40 82 00 18 */ bne lbl_802F054C
+/* 802F0538 002EC198 7F E3 FB 78 */ mr r3, r31
+/* 802F053C 002EC19C 7F 84 E3 78 */ mr r4, r28
+/* 802F0540 002EC1A0 38 A0 00 06 */ li r5, 6
+/* 802F0544 002EC1A4 4B FF EA C1 */ bl WDPi_UpdateStatus
+/* 802F0548 002EC1A8 3B C0 00 01 */ li r30, 1
+lbl_802F054C:
+/* 802F054C 002EC1AC 80 1F 00 08 */ lwz r0, 8(r31)
+/* 802F0550 002EC1B0 34 00 FF FF */ addic. r0, r0, -1
+/* 802F0554 002EC1B4 90 1F 00 08 */ stw r0, 8(r31)
+/* 802F0558 002EC1B8 40 82 00 0C */ bne lbl_802F0564
+/* 802F055C 002EC1BC 80 7F 00 0C */ lwz r3, 0xc(r31)
+/* 802F0560 002EC1C0 4B F7 E2 25 */ bl OSRestoreInterrupts
+lbl_802F0564:
+/* 802F0564 002EC1C4 7F C3 F3 78 */ mr r3, r30
+/* 802F0568 002EC1C8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F056C 002EC1CC 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F0570 002EC1D0 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F0574 002EC1D4 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802F0578 002EC1D8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F057C 002EC1DC 7C 08 03 A6 */ mtlr r0
+/* 802F0580 002EC1E0 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F0584 002EC1E4 4E 80 00 20 */ blr
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
diff --git a/asm/SDK/WD/wd_init.s b/asm/SDK/WD/wd_init.s new file mode 100644 index 0000000..425cd21 --- /dev/null +++ b/asm/SDK/WD/wd_init.s @@ -0,0 +1,99 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global WD_Startup
+WD_Startup:
+/* 802EE4E8 002EA148 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802EE4EC 002EA14C 7C 08 02 A6 */ mflr r0
+/* 802EE4F0 002EA150 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802EE4F4 002EA154 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802EE4F8 002EA158 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802EE4FC 002EA15C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802EE500 002EA160 7C 7D 1B 78 */ mr r29, r3
+/* 802EE504 002EA164 4B F8 02 59 */ bl OSDisableInterrupts
+/* 802EE508 002EA168 7C 7E 1B 78 */ mr r30, r3
+/* 802EE50C 002EA16C 4B FF F8 51 */ bl WDi_GetWork
+/* 802EE510 002EA170 80 03 00 00 */ lwz r0, 0(r3)
+/* 802EE514 002EA174 2C 00 00 00 */ cmpwi r0, 0
+/* 802EE518 002EA178 41 80 00 10 */ blt lbl_802EE528
+/* 802EE51C 002EA17C 3C 60 80 01 */ lis r3, 0x80008006@ha
+/* 802EE520 002EA180 3B E3 80 06 */ addi r31, r3, 0x80008006@l
+/* 802EE524 002EA184 48 00 00 80 */ b lbl_802EE5A4
+lbl_802EE528:
+/* 802EE528 002EA188 4B FF F8 35 */ bl WDi_GetWork
+/* 802EE52C 002EA18C 80 03 00 04 */ lwz r0, 4(r3)
+/* 802EE530 002EA190 2C 00 00 00 */ cmpwi r0, 0
+/* 802EE534 002EA194 40 82 00 2C */ bne lbl_802EE560
+/* 802EE538 002EA198 4B FF F8 25 */ bl WDi_GetWork
+/* 802EE53C 002EA19C 38 80 00 00 */ li r4, 0
+/* 802EE540 002EA1A0 38 A0 00 0C */ li r5, 0xc
+/* 802EE544 002EA1A4 4B D1 5B C1 */ bl memset
+/* 802EE548 002EA1A8 3B E0 00 01 */ li r31, 1
+/* 802EE54C 002EA1AC 4B FF F8 11 */ bl WDi_GetWork
+/* 802EE550 002EA1B0 93 E3 00 04 */ stw r31, 4(r3)
+/* 802EE554 002EA1B4 3B E0 FF FF */ li r31, -1
+/* 802EE558 002EA1B8 4B FF F8 05 */ bl WDi_GetWork
+/* 802EE55C 002EA1BC 93 E3 00 08 */ stw r31, 8(r3)
+lbl_802EE560:
+/* 802EE560 002EA1C0 3C 60 80 44 */ lis r3, lbl_80445BC0@ha
+/* 802EE564 002EA1C4 67 A4 00 01 */ oris r4, r29, 1
+/* 802EE568 002EA1C8 38 63 5B C0 */ addi r3, r3, lbl_80445BC0@l
+/* 802EE56C 002EA1CC 4B FB 4B ED */ bl IOS_Open
+/* 802EE570 002EA1D0 7C 7F 1B 78 */ mr r31, r3
+/* 802EE574 002EA1D4 4B FF F7 E9 */ bl WDi_GetWork
+/* 802EE578 002EA1D8 93 E3 00 00 */ stw r31, 0(r3)
+/* 802EE57C 002EA1DC 4B FF F7 E1 */ bl WDi_GetWork
+/* 802EE580 002EA1E0 80 03 00 00 */ lwz r0, 0(r3)
+/* 802EE584 002EA1E4 2C 00 00 00 */ cmpwi r0, 0
+/* 802EE588 002EA1E8 40 80 00 10 */ bge lbl_802EE598
+/* 802EE58C 002EA1EC 4B FF F7 D1 */ bl WDi_GetWork
+/* 802EE590 002EA1F0 80 63 00 00 */ lwz r3, 0(r3)
+/* 802EE594 002EA1F4 48 00 00 0C */ b lbl_802EE5A0
+lbl_802EE598:
+/* 802EE598 002EA1F8 38 60 10 00 */ li r3, 0x1000
+/* 802EE59C 002EA1FC 4B FF F8 11 */ bl WDi_SetupHeap
+lbl_802EE5A0:
+/* 802EE5A0 002EA200 7C 7F 1B 78 */ mr r31, r3
+lbl_802EE5A4:
+/* 802EE5A4 002EA204 7F C3 F3 78 */ mr r3, r30
+/* 802EE5A8 002EA208 4B F8 01 DD */ bl OSRestoreInterrupts
+/* 802EE5AC 002EA20C 7F E3 FB 78 */ mr r3, r31
+/* 802EE5B0 002EA210 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802EE5B4 002EA214 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802EE5B8 002EA218 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802EE5BC 002EA21C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802EE5C0 002EA220 7C 08 03 A6 */ mtlr r0
+/* 802EE5C4 002EA224 38 21 00 20 */ addi r1, r1, 0x20
+/* 802EE5C8 002EA228 4E 80 00 20 */ blr
+
+.global WD_Cleanup
+WD_Cleanup:
+/* 802EE5CC 002EA22C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EE5D0 002EA230 7C 08 02 A6 */ mflr r0
+/* 802EE5D4 002EA234 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EE5D8 002EA238 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802EE5DC 002EA23C 93 C1 00 08 */ stw r30, 8(r1)
+/* 802EE5E0 002EA240 4B F8 01 7D */ bl OSDisableInterrupts
+/* 802EE5E4 002EA244 7C 7E 1B 78 */ mr r30, r3
+/* 802EE5E8 002EA248 4B FF F7 75 */ bl WDi_GetWork
+/* 802EE5EC 002EA24C 80 63 00 00 */ lwz r3, 0(r3)
+/* 802EE5F0 002EA250 4B FB 4D 49 */ bl IOS_Close
+/* 802EE5F4 002EA254 2C 03 00 00 */ cmpwi r3, 0
+/* 802EE5F8 002EA258 7C 7F 1B 78 */ mr r31, r3
+/* 802EE5FC 002EA25C 41 80 00 18 */ blt lbl_802EE614
+/* 802EE600 002EA260 3B E0 FF FF */ li r31, -1
+/* 802EE604 002EA264 4B FF F7 59 */ bl WDi_GetWork
+/* 802EE608 002EA268 93 E3 00 00 */ stw r31, 0(r3)
+/* 802EE60C 002EA26C 4B FF F8 3D */ bl WDi_CleanupHeap
+/* 802EE610 002EA270 7C 7F 1B 78 */ mr r31, r3
+lbl_802EE614:
+/* 802EE614 002EA274 7F C3 F3 78 */ mr r3, r30
+/* 802EE618 002EA278 4B F8 01 6D */ bl OSRestoreInterrupts
+/* 802EE61C 002EA27C 7F E3 FB 78 */ mr r3, r31
+/* 802EE620 002EA280 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802EE624 002EA284 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802EE628 002EA288 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EE62C 002EA28C 7C 08 03 A6 */ mtlr r0
+/* 802EE630 002EA290 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EE634 002EA294 4E 80 00 20 */ blr
diff --git a/asm/SDK/WD/wd_misc.s b/asm/SDK/WD/wd_misc.s new file mode 100644 index 0000000..0c5e375 --- /dev/null +++ b/asm/SDK/WD/wd_misc.s @@ -0,0 +1,81 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global WDi_GetWork
+WDi_GetWork:
+/* 802EDD5C 002E99BC 3C 60 80 44 */ lis r3, lbl_80445BB0@ha
+/* 802EDD60 002E99C0 38 63 5B B0 */ addi r3, r3, lbl_80445BB0@l
+/* 802EDD64 002E99C4 4E 80 00 20 */ blr
+
+.global WDi_Ioctlv
+WDi_Ioctlv:
+/* 802EDD68 002E99C8 3D 00 80 44 */ lis r8, lbl_80445BB0@ha
+/* 802EDD6C 002E99CC 7C 8A 23 78 */ mr r10, r4
+/* 802EDD70 002E99D0 80 08 5B B0 */ lwz r0, lbl_80445BB0@l(r8)
+/* 802EDD74 002E99D4 7C A9 2B 78 */ mr r9, r5
+/* 802EDD78 002E99D8 7C C7 33 78 */ mr r7, r6
+/* 802EDD7C 002E99DC 2C 00 00 00 */ cmpwi r0, 0
+/* 802EDD80 002E99E0 40 80 00 10 */ bge lbl_802EDD90
+/* 802EDD84 002E99E4 3C 60 80 01 */ lis r3, func_80008000@ha
+/* 802EDD88 002E99E8 38 63 80 00 */ addi r3, r3, func_80008000@l
+/* 802EDD8C 002E99EC 4E 80 00 20 */ blr
+lbl_802EDD90:
+/* 802EDD90 002E99F0 80 08 5B B0 */ lwz r0, 0x5bb0(r8)
+/* 802EDD94 002E99F4 7C 64 1B 78 */ mr r4, r3
+/* 802EDD98 002E99F8 7D 45 53 78 */ mr r5, r10
+/* 802EDD9C 002E99FC 7D 26 4B 78 */ mr r6, r9
+/* 802EDDA0 002E9A00 7C 03 03 78 */ mr r3, r0
+/* 802EDDA4 002E9A04 4B FB 60 9C */ b IOS_Ioctlv
+/* 802EDDA8 002E9A08 4E 80 00 20 */ blr
+
+.global WDi_SetupHeap
+WDi_SetupHeap:
+/* 802EDDAC 002E9A0C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802EDDB0 002E9A10 7C 08 02 A6 */ mflr r0
+/* 802EDDB4 002E9A14 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802EDDB8 002E9A18 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802EDDBC 002E9A1C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802EDDC0 002E9A20 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802EDDC4 002E9A24 7C 7D 1B 78 */ mr r29, r3
+/* 802EDDC8 002E9A28 4B FB 4B 2D */ bl IPCGetBufferLo
+/* 802EDDCC 002E9A2C 3F E0 80 44 */ lis r31, lbl_80445BB0@ha
+/* 802EDDD0 002E9A30 7C 7E 1B 78 */ mr r30, r3
+/* 802EDDD4 002E9A34 3B FF 5B B0 */ addi r31, r31, lbl_80445BB0@l
+/* 802EDDD8 002E9A38 80 1F 00 08 */ lwz r0, 8(r31)
+/* 802EDDDC 002E9A3C 2C 00 FF FF */ cmpwi r0, -1
+/* 802EDDE0 002E9A40 40 82 00 48 */ bne lbl_802EDE28
+/* 802EDDE4 002E9A44 4B FB 4B 09 */ bl IPCGetBufferHi
+/* 802EDDE8 002E9A48 7C 1E EA 14 */ add r0, r30, r29
+/* 802EDDEC 002E9A4C 7C 00 18 40 */ cmplw r0, r3
+/* 802EDDF0 002E9A50 40 81 00 0C */ ble lbl_802EDDFC
+/* 802EDDF4 002E9A54 38 60 FF EA */ li r3, -22
+/* 802EDDF8 002E9A58 48 00 00 34 */ b lbl_802EDE2C
+lbl_802EDDFC:
+/* 802EDDFC 002E9A5C 7F C3 F3 78 */ mr r3, r30
+/* 802EDE00 002E9A60 7F A4 EB 78 */ mr r4, r29
+/* 802EDE04 002E9A64 4B FB 62 01 */ bl iosCreateHeap
+/* 802EDE08 002E9A68 90 7F 00 08 */ stw r3, 8(r31)
+/* 802EDE0C 002E9A6C 80 1F 00 08 */ lwz r0, 8(r31)
+/* 802EDE10 002E9A70 2C 00 00 00 */ cmpwi r0, 0
+/* 802EDE14 002E9A74 40 80 00 0C */ bge lbl_802EDE20
+/* 802EDE18 002E9A78 80 7F 00 08 */ lwz r3, 8(r31)
+/* 802EDE1C 002E9A7C 48 00 00 10 */ b lbl_802EDE2C
+lbl_802EDE20:
+/* 802EDE20 002E9A80 7C 7E EA 14 */ add r3, r30, r29
+/* 802EDE24 002E9A84 4B FB 4A D9 */ bl IPCSetBufferLo
+lbl_802EDE28:
+/* 802EDE28 002E9A88 38 60 00 00 */ li r3, 0
+lbl_802EDE2C:
+/* 802EDE2C 002E9A8C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802EDE30 002E9A90 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802EDE34 002E9A94 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802EDE38 002E9A98 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802EDE3C 002E9A9C 7C 08 03 A6 */ mtlr r0
+/* 802EDE40 002E9AA0 38 21 00 20 */ addi r1, r1, 0x20
+/* 802EDE44 002E9AA4 4E 80 00 20 */ blr
+
+.global WDi_CleanupHeap
+WDi_CleanupHeap:
+/* 802EDE48 002E9AA8 38 60 00 00 */ li r3, 0
+/* 802EDE4C 002E9AAC 4E 80 00 20 */ blr
diff --git a/asm/SDK/WD/wd_receive.s b/asm/SDK/WD/wd_receive.s new file mode 100644 index 0000000..8f8a106 --- /dev/null +++ b/asm/SDK/WD/wd_receive.s @@ -0,0 +1,98 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global WD_ReceiveNotification
+WD_ReceiveNotification:
+/* 802EE38C 002E9FEC 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802EE390 002E9FF0 7C 08 02 A6 */ mflr r0
+/* 802EE394 002E9FF4 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802EE398 002E9FF8 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802EE39C 002E9FFC 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802EE3A0 002EA000 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802EE3A4 002EA004 7C 7D 1B 78 */ mr r29, r3
+/* 802EE3A8 002EA008 4B FF F9 B5 */ bl WDi_GetWork
+/* 802EE3AC 002EA00C 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EE3B0 002EA010 38 80 00 9C */ li r4, 0x9c
+/* 802EE3B4 002EA014 38 A0 00 20 */ li r5, 0x20
+/* 802EE3B8 002EA018 4B FB 5F 81 */ bl iosAllocAligned
+/* 802EE3BC 002EA01C 38 83 00 08 */ addi r4, r3, 8
+/* 802EE3C0 002EA020 38 00 00 4A */ li r0, 0x4a
+/* 802EE3C4 002EA024 7C 7E 1B 78 */ mr r30, r3
+/* 802EE3C8 002EA028 90 83 00 00 */ stw r4, 0(r3)
+/* 802EE3CC 002EA02C 38 C3 00 07 */ addi r6, r3, 7
+/* 802EE3D0 002EA030 38 BD FF FF */ addi r5, r29, -1
+/* 802EE3D4 002EA034 7C 09 03 A6 */ mtctr r0
+lbl_802EE3D8:
+/* 802EE3D8 002EA038 88 85 00 01 */ lbz r4, 1(r5)
+/* 802EE3DC 002EA03C 8C 05 00 02 */ lbzu r0, 2(r5)
+/* 802EE3E0 002EA040 98 86 00 01 */ stb r4, 1(r6)
+/* 802EE3E4 002EA044 9C 06 00 02 */ stbu r0, 2(r6)
+/* 802EE3E8 002EA048 42 00 FF F0 */ bdnz lbl_802EE3D8
+/* 802EE3EC 002EA04C 38 00 00 94 */ li r0, 0x94
+/* 802EE3F0 002EA050 3C 80 00 01 */ lis r4, 0x00008001@ha
+/* 802EE3F4 002EA054 90 03 00 04 */ stw r0, 4(r3)
+/* 802EE3F8 002EA058 38 64 80 01 */ addi r3, r4, 0x00008001@l
+/* 802EE3FC 002EA05C 7F C6 F3 78 */ mr r6, r30
+/* 802EE400 002EA060 38 80 00 00 */ li r4, 0
+/* 802EE404 002EA064 38 A0 00 01 */ li r5, 1
+/* 802EE408 002EA068 4B FF F9 61 */ bl WDi_Ioctlv
+/* 802EE40C 002EA06C 38 00 00 4A */ li r0, 0x4a
+/* 802EE410 002EA070 7C 7F 1B 78 */ mr r31, r3
+/* 802EE414 002EA074 38 BD FF FF */ addi r5, r29, -1
+/* 802EE418 002EA078 38 9E 00 07 */ addi r4, r30, 7
+/* 802EE41C 002EA07C 7C 09 03 A6 */ mtctr r0
+lbl_802EE420:
+/* 802EE420 002EA080 88 64 00 01 */ lbz r3, 1(r4)
+/* 802EE424 002EA084 8C 04 00 02 */ lbzu r0, 2(r4)
+/* 802EE428 002EA088 98 65 00 01 */ stb r3, 1(r5)
+/* 802EE42C 002EA08C 9C 05 00 02 */ stbu r0, 2(r5)
+/* 802EE430 002EA090 42 00 FF F0 */ bdnz lbl_802EE420
+/* 802EE434 002EA094 4B FF F9 29 */ bl WDi_GetWork
+/* 802EE438 002EA098 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EE43C 002EA09C 7F C4 F3 78 */ mr r4, r30
+/* 802EE440 002EA0A0 4B FB 5E FD */ bl iosFree
+/* 802EE444 002EA0A4 7F E3 FB 78 */ mr r3, r31
+/* 802EE448 002EA0A8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802EE44C 002EA0AC 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802EE450 002EA0B0 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802EE454 002EA0B4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802EE458 002EA0B8 7C 08 03 A6 */ mtlr r0
+/* 802EE45C 002EA0BC 38 21 00 20 */ addi r1, r1, 0x20
+/* 802EE460 002EA0C0 4E 80 00 20 */ blr
+
+.global WD_ReceiveFrame
+WD_ReceiveFrame:
+/* 802EE464 002EA0C4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EE468 002EA0C8 7C 08 02 A6 */ mflr r0
+/* 802EE46C 002EA0CC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EE470 002EA0D0 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802EE474 002EA0D4 7C 9F 23 78 */ mr r31, r4
+/* 802EE478 002EA0D8 93 C1 00 08 */ stw r30, 8(r1)
+/* 802EE47C 002EA0DC 7C 7E 1B 78 */ mr r30, r3
+/* 802EE480 002EA0E0 4B FF F8 DD */ bl WDi_GetWork
+/* 802EE484 002EA0E4 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EE488 002EA0E8 38 80 00 08 */ li r4, 8
+/* 802EE48C 002EA0EC 38 A0 00 20 */ li r5, 0x20
+/* 802EE490 002EA0F0 4B FB 5E A9 */ bl iosAllocAligned
+/* 802EE494 002EA0F4 93 C3 00 00 */ stw r30, 0(r3)
+/* 802EE498 002EA0F8 7C 7E 1B 78 */ mr r30, r3
+/* 802EE49C 002EA0FC 3C A0 00 01 */ lis r5, 0x00008000@ha
+/* 802EE4A0 002EA100 38 80 00 00 */ li r4, 0
+/* 802EE4A4 002EA104 93 E3 00 04 */ stw r31, 4(r3)
+/* 802EE4A8 002EA108 38 65 80 00 */ addi r3, r5, 0x00008000@l
+/* 802EE4AC 002EA10C 7F C6 F3 78 */ mr r6, r30
+/* 802EE4B0 002EA110 38 A0 00 01 */ li r5, 1
+/* 802EE4B4 002EA114 4B FF F8 B5 */ bl WDi_Ioctlv
+/* 802EE4B8 002EA118 7C 7F 1B 78 */ mr r31, r3
+/* 802EE4BC 002EA11C 4B FF F8 A1 */ bl WDi_GetWork
+/* 802EE4C0 002EA120 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EE4C4 002EA124 7F C4 F3 78 */ mr r4, r30
+/* 802EE4C8 002EA128 4B FB 5E 75 */ bl iosFree
+/* 802EE4CC 002EA12C 7F E3 FB 78 */ mr r3, r31
+/* 802EE4D0 002EA130 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802EE4D4 002EA134 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802EE4D8 002EA138 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EE4DC 002EA13C 7C 08 03 A6 */ mtlr r0
+/* 802EE4E0 002EA140 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EE4E4 002EA144 4E 80 00 20 */ blr
diff --git a/asm/SDK/WD/wd_request.s b/asm/SDK/WD/wd_request.s new file mode 100644 index 0000000..348e6f6 --- /dev/null +++ b/asm/SDK/WD/wd_request.s @@ -0,0 +1,367 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global WD_SetLinkState
+WD_SetLinkState:
+/* 802EDE50 002E9AB0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EDE54 002E9AB4 7C 08 02 A6 */ mflr r0
+/* 802EDE58 002E9AB8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EDE5C 002E9ABC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802EDE60 002E9AC0 7C 7F 1B 78 */ mr r31, r3
+/* 802EDE64 002E9AC4 93 C1 00 08 */ stw r30, 8(r1)
+/* 802EDE68 002E9AC8 4B FF FE F5 */ bl WDi_GetWork
+/* 802EDE6C 002E9ACC 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EDE70 002E9AD0 38 80 00 0C */ li r4, 0xc
+/* 802EDE74 002E9AD4 38 A0 00 20 */ li r5, 0x20
+/* 802EDE78 002E9AD8 4B FB 64 C1 */ bl iosAllocAligned
+/* 802EDE7C 002E9ADC 38 03 00 08 */ addi r0, r3, 8
+/* 802EDE80 002E9AE0 7C 7E 1B 78 */ mr r30, r3
+/* 802EDE84 002E9AE4 90 03 00 00 */ stw r0, 0(r3)
+/* 802EDE88 002E9AE8 38 00 00 04 */ li r0, 4
+/* 802EDE8C 002E9AEC 7F C6 F3 78 */ mr r6, r30
+/* 802EDE90 002E9AF0 38 80 00 01 */ li r4, 1
+/* 802EDE94 002E9AF4 93 E3 00 08 */ stw r31, 8(r3)
+/* 802EDE98 002E9AF8 38 A0 00 00 */ li r5, 0
+/* 802EDE9C 002E9AFC 90 03 00 04 */ stw r0, 4(r3)
+/* 802EDEA0 002E9B00 38 60 10 02 */ li r3, 0x1002
+/* 802EDEA4 002E9B04 4B FF FE C5 */ bl WDi_Ioctlv
+/* 802EDEA8 002E9B08 7C 7F 1B 78 */ mr r31, r3
+/* 802EDEAC 002E9B0C 4B FF FE B1 */ bl WDi_GetWork
+/* 802EDEB0 002E9B10 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EDEB4 002E9B14 7F C4 F3 78 */ mr r4, r30
+/* 802EDEB8 002E9B18 4B FB 64 85 */ bl iosFree
+/* 802EDEBC 002E9B1C 7F E3 FB 78 */ mr r3, r31
+/* 802EDEC0 002E9B20 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802EDEC4 002E9B24 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802EDEC8 002E9B28 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EDECC 002E9B2C 7C 08 03 A6 */ mtlr r0
+/* 802EDED0 002E9B30 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EDED4 002E9B34 4E 80 00 20 */ blr
+
+.global WD_GetLinkState
+WD_GetLinkState:
+/* 802EDED8 002E9B38 38 60 10 03 */ li r3, 0x1003
+/* 802EDEDC 002E9B3C 38 80 00 00 */ li r4, 0
+/* 802EDEE0 002E9B40 38 A0 00 00 */ li r5, 0
+/* 802EDEE4 002E9B44 38 C0 00 00 */ li r6, 0
+/* 802EDEE8 002E9B48 4B FF FE 80 */ b WDi_Ioctlv
+
+.global WD_SetConfig
+WD_SetConfig:
+/* 802EDEEC 002E9B4C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802EDEF0 002E9B50 7C 08 02 A6 */ mflr r0
+/* 802EDEF4 002E9B54 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802EDEF8 002E9B58 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802EDEFC 002E9B5C 7C BF 2B 78 */ mr r31, r5
+/* 802EDF00 002E9B60 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802EDF04 002E9B64 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802EDF08 002E9B68 7C DD 33 78 */ mr r29, r6
+/* 802EDF0C 002E9B6C 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802EDF10 002E9B70 7C 7C 1B 78 */ mr r28, r3
+/* 802EDF14 002E9B74 4B FF FE 49 */ bl WDi_GetWork
+/* 802EDF18 002E9B78 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EDF1C 002E9B7C 38 80 01 98 */ li r4, 0x198
+/* 802EDF20 002E9B80 38 A0 00 20 */ li r5, 0x20
+/* 802EDF24 002E9B84 4B FB 64 15 */ bl iosAllocAligned
+/* 802EDF28 002E9B88 38 03 00 10 */ addi r0, r3, 0x10
+/* 802EDF2C 002E9B8C 38 83 01 90 */ addi r4, r3, 0x190
+/* 802EDF30 002E9B90 90 03 00 00 */ stw r0, 0(r3)
+/* 802EDF34 002E9B94 38 00 00 C0 */ li r0, 0xc0
+/* 802EDF38 002E9B98 7C 7E 1B 78 */ mr r30, r3
+/* 802EDF3C 002E9B9C 38 C3 00 0F */ addi r6, r3, 0xf
+/* 802EDF40 002E9BA0 90 83 00 08 */ stw r4, 8(r3)
+/* 802EDF44 002E9BA4 38 BC FF FF */ addi r5, r28, -1
+/* 802EDF48 002E9BA8 7C 09 03 A6 */ mtctr r0
+lbl_802EDF4C:
+/* 802EDF4C 002E9BAC 88 85 00 01 */ lbz r4, 1(r5)
+/* 802EDF50 002E9BB0 8C 05 00 02 */ lbzu r0, 2(r5)
+/* 802EDF54 002E9BB4 98 86 00 01 */ stb r4, 1(r6)
+/* 802EDF58 002E9BB8 9C 06 00 02 */ stbu r0, 2(r6)
+/* 802EDF5C 002E9BBC 42 00 FF F0 */ bdnz lbl_802EDF4C
+/* 802EDF60 002E9BC0 93 A3 01 94 */ stw r29, 0x194(r3)
+/* 802EDF64 002E9BC4 38 E0 01 80 */ li r7, 0x180
+/* 802EDF68 002E9BC8 38 00 00 08 */ li r0, 8
+/* 802EDF6C 002E9BCC 7F C6 F3 78 */ mr r6, r30
+/* 802EDF70 002E9BD0 93 E3 01 90 */ stw r31, 0x190(r3)
+/* 802EDF74 002E9BD4 38 80 00 02 */ li r4, 2
+/* 802EDF78 002E9BD8 38 A0 00 00 */ li r5, 0
+/* 802EDF7C 002E9BDC 90 E3 00 04 */ stw r7, 4(r3)
+/* 802EDF80 002E9BE0 90 03 00 0C */ stw r0, 0xc(r3)
+/* 802EDF84 002E9BE4 38 60 10 04 */ li r3, 0x1004
+/* 802EDF88 002E9BE8 4B FF FD E1 */ bl WDi_Ioctlv
+/* 802EDF8C 002E9BEC 7C 7F 1B 78 */ mr r31, r3
+/* 802EDF90 002E9BF0 4B FF FD CD */ bl WDi_GetWork
+/* 802EDF94 002E9BF4 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EDF98 002E9BF8 7F C4 F3 78 */ mr r4, r30
+/* 802EDF9C 002E9BFC 4B FB 63 A1 */ bl iosFree
+/* 802EDFA0 002E9C00 7F E3 FB 78 */ mr r3, r31
+/* 802EDFA4 002E9C04 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802EDFA8 002E9C08 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802EDFAC 002E9C0C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802EDFB0 002E9C10 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802EDFB4 002E9C14 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802EDFB8 002E9C18 7C 08 03 A6 */ mtlr r0
+/* 802EDFBC 002E9C1C 38 21 00 20 */ addi r1, r1, 0x20
+/* 802EDFC0 002E9C20 4E 80 00 20 */ blr
+
+.global WD_ChangeBeacon
+WD_ChangeBeacon:
+/* 802EDFC4 002E9C24 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802EDFC8 002E9C28 7C 08 02 A6 */ mflr r0
+/* 802EDFCC 002E9C2C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802EDFD0 002E9C30 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802EDFD4 002E9C34 7C 9F 23 78 */ mr r31, r4
+/* 802EDFD8 002E9C38 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802EDFDC 002E9C3C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802EDFE0 002E9C40 7C 7D 1B 78 */ mr r29, r3
+/* 802EDFE4 002E9C44 4B FF FD 79 */ bl WDi_GetWork
+/* 802EDFE8 002E9C48 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EDFEC 002E9C4C 38 80 00 14 */ li r4, 0x14
+/* 802EDFF0 002E9C50 38 A0 00 20 */ li r5, 0x20
+/* 802EDFF4 002E9C54 4B FB 63 45 */ bl iosAllocAligned
+/* 802EDFF8 002E9C58 38 03 00 10 */ addi r0, r3, 0x10
+/* 802EDFFC 002E9C5C 7C 7E 1B 78 */ mr r30, r3
+/* 802EE000 002E9C60 90 03 00 00 */ stw r0, 0(r3)
+/* 802EE004 002E9C64 38 E0 00 02 */ li r7, 2
+/* 802EE008 002E9C68 38 00 00 80 */ li r0, 0x80
+/* 802EE00C 002E9C6C 7F C6 F3 78 */ mr r6, r30
+/* 802EE010 002E9C70 B3 A3 00 10 */ sth r29, 0x10(r3)
+/* 802EE014 002E9C74 38 80 00 02 */ li r4, 2
+/* 802EE018 002E9C78 38 A0 00 00 */ li r5, 0
+/* 802EE01C 002E9C7C 93 E3 00 08 */ stw r31, 8(r3)
+/* 802EE020 002E9C80 90 E3 00 04 */ stw r7, 4(r3)
+/* 802EE024 002E9C84 90 03 00 0C */ stw r0, 0xc(r3)
+/* 802EE028 002E9C88 38 60 10 06 */ li r3, 0x1006
+/* 802EE02C 002E9C8C 4B FF FD 3D */ bl WDi_Ioctlv
+/* 802EE030 002E9C90 7C 7F 1B 78 */ mr r31, r3
+/* 802EE034 002E9C94 4B FF FD 29 */ bl WDi_GetWork
+/* 802EE038 002E9C98 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EE03C 002E9C9C 7F C4 F3 78 */ mr r4, r30
+/* 802EE040 002E9CA0 4B FB 62 FD */ bl iosFree
+/* 802EE044 002E9CA4 7F E3 FB 78 */ mr r3, r31
+/* 802EE048 002E9CA8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802EE04C 002E9CAC 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802EE050 002E9CB0 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802EE054 002E9CB4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802EE058 002E9CB8 7C 08 03 A6 */ mtlr r0
+/* 802EE05C 002E9CBC 38 21 00 20 */ addi r1, r1, 0x20
+/* 802EE060 002E9CC0 4E 80 00 20 */ blr
+
+.global WD_ChangeVTSF
+WD_ChangeVTSF:
+/* 802EE064 002E9CC4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EE068 002E9CC8 7C 08 02 A6 */ mflr r0
+/* 802EE06C 002E9CCC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EE070 002E9CD0 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802EE074 002E9CD4 93 C1 00 08 */ stw r30, 8(r1)
+/* 802EE078 002E9CD8 7C 7E 1B 78 */ mr r30, r3
+/* 802EE07C 002E9CDC 4B FF FC E1 */ bl WDi_GetWork
+/* 802EE080 002E9CE0 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EE084 002E9CE4 38 80 00 0C */ li r4, 0xc
+/* 802EE088 002E9CE8 38 A0 00 20 */ li r5, 0x20
+/* 802EE08C 002E9CEC 4B FB 62 AD */ bl iosAllocAligned
+/* 802EE090 002E9CF0 B3 C3 00 08 */ sth r30, 8(r3)
+/* 802EE094 002E9CF4 38 83 00 08 */ addi r4, r3, 8
+/* 802EE098 002E9CF8 7C 7E 1B 78 */ mr r30, r3
+/* 802EE09C 002E9CFC 38 00 00 02 */ li r0, 2
+/* 802EE0A0 002E9D00 90 83 00 00 */ stw r4, 0(r3)
+/* 802EE0A4 002E9D04 7F C6 F3 78 */ mr r6, r30
+/* 802EE0A8 002E9D08 38 80 00 01 */ li r4, 1
+/* 802EE0AC 002E9D0C 38 A0 00 00 */ li r5, 0
+/* 802EE0B0 002E9D10 90 03 00 04 */ stw r0, 4(r3)
+/* 802EE0B4 002E9D14 38 60 10 10 */ li r3, 0x1010
+/* 802EE0B8 002E9D18 4B FF FC B1 */ bl WDi_Ioctlv
+/* 802EE0BC 002E9D1C 7C 7F 1B 78 */ mr r31, r3
+/* 802EE0C0 002E9D20 4B FF FC 9D */ bl WDi_GetWork
+/* 802EE0C4 002E9D24 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EE0C8 002E9D28 7F C4 F3 78 */ mr r4, r30
+/* 802EE0CC 002E9D2C 4B FB 62 71 */ bl iosFree
+/* 802EE0D0 002E9D30 7F E3 FB 78 */ mr r3, r31
+/* 802EE0D4 002E9D34 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802EE0D8 002E9D38 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802EE0DC 002E9D3C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EE0E0 002E9D40 7C 08 03 A6 */ mtlr r0
+/* 802EE0E4 002E9D44 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EE0E8 002E9D48 4E 80 00 20 */ blr
+
+.global WD_DisAssoc
+WD_DisAssoc:
+/* 802EE0EC 002E9D4C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EE0F0 002E9D50 7C 08 02 A6 */ mflr r0
+/* 802EE0F4 002E9D54 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EE0F8 002E9D58 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802EE0FC 002E9D5C 7C 7F 1B 78 */ mr r31, r3
+/* 802EE100 002E9D60 93 C1 00 08 */ stw r30, 8(r1)
+/* 802EE104 002E9D64 4B FF FC 59 */ bl WDi_GetWork
+/* 802EE108 002E9D68 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EE10C 002E9D6C 38 80 00 10 */ li r4, 0x10
+/* 802EE110 002E9D70 38 A0 00 20 */ li r5, 0x20
+/* 802EE114 002E9D74 4B FB 62 25 */ bl iosAllocAligned
+/* 802EE118 002E9D78 38 03 00 08 */ addi r0, r3, 8
+/* 802EE11C 002E9D7C 7C 7E 1B 78 */ mr r30, r3
+/* 802EE120 002E9D80 90 03 00 00 */ stw r0, 0(r3)
+/* 802EE124 002E9D84 7C 03 03 78 */ mr r3, r0
+/* 802EE128 002E9D88 7F E4 FB 78 */ mr r4, r31
+/* 802EE12C 002E9D8C 38 A0 00 06 */ li r5, 6
+/* 802EE130 002E9D90 4B D1 5E D1 */ bl memcpy
+/* 802EE134 002E9D94 38 00 00 06 */ li r0, 6
+/* 802EE138 002E9D98 7F C6 F3 78 */ mr r6, r30
+/* 802EE13C 002E9D9C 90 1E 00 04 */ stw r0, 4(r30)
+/* 802EE140 002E9DA0 38 60 10 07 */ li r3, 0x1007
+/* 802EE144 002E9DA4 38 80 00 01 */ li r4, 1
+/* 802EE148 002E9DA8 38 A0 00 00 */ li r5, 0
+/* 802EE14C 002E9DAC 4B FF FC 1D */ bl WDi_Ioctlv
+/* 802EE150 002E9DB0 7C 7F 1B 78 */ mr r31, r3
+/* 802EE154 002E9DB4 4B FF FC 09 */ bl WDi_GetWork
+/* 802EE158 002E9DB8 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EE15C 002E9DBC 7F C4 F3 78 */ mr r4, r30
+/* 802EE160 002E9DC0 4B FB 61 DD */ bl iosFree
+/* 802EE164 002E9DC4 7F E3 FB 78 */ mr r3, r31
+/* 802EE168 002E9DC8 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802EE16C 002E9DCC 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802EE170 002E9DD0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EE174 002E9DD4 7C 08 03 A6 */ mtlr r0
+/* 802EE178 002E9DD8 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EE17C 002E9DDC 4E 80 00 20 */ blr
+
+.global WD_MpSendFrame
+WD_MpSendFrame:
+/* 802EE180 002E9DE0 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802EE184 002E9DE4 7C 08 02 A6 */ mflr r0
+/* 802EE188 002E9DE8 28 04 02 02 */ cmplwi r4, 0x202
+/* 802EE18C 002E9DEC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802EE190 002E9DF0 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802EE194 002E9DF4 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802EE198 002E9DF8 7C BE 2B 78 */ mr r30, r5
+/* 802EE19C 002E9DFC 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802EE1A0 002E9E00 7C 9D 23 78 */ mr r29, r4
+/* 802EE1A4 002E9E04 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802EE1A8 002E9E08 7C 7C 1B 78 */ mr r28, r3
+/* 802EE1AC 002E9E0C 40 81 00 10 */ ble lbl_802EE1BC
+/* 802EE1B0 002E9E10 3C 60 80 01 */ lis r3, 0x80008001@ha
+/* 802EE1B4 002E9E14 38 63 80 01 */ addi r3, r3, 0x80008001@l
+/* 802EE1B8 002E9E18 48 00 00 E0 */ b lbl_802EE298
+lbl_802EE1BC:
+/* 802EE1BC 002E9E1C 4B FF FB A1 */ bl WDi_GetWork
+/* 802EE1C0 002E9E20 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EE1C4 002E9E24 38 80 00 20 */ li r4, 0x20
+/* 802EE1C8 002E9E28 38 A0 00 20 */ li r5, 0x20
+/* 802EE1CC 002E9E2C 4B FB 61 6D */ bl iosAllocAligned
+/* 802EE1D0 002E9E30 38 03 00 10 */ addi r0, r3, 0x10
+/* 802EE1D4 002E9E34 7C 7F 1B 78 */ mr r31, r3
+/* 802EE1D8 002E9E38 90 03 00 08 */ stw r0, 8(r3)
+/* 802EE1DC 002E9E3C 38 00 00 10 */ li r0, 0x10
+/* 802EE1E0 002E9E40 88 BE 00 00 */ lbz r5, 0(r30)
+/* 802EE1E4 002E9E44 7F E6 FB 78 */ mr r6, r31
+/* 802EE1E8 002E9E48 88 FE 00 01 */ lbz r7, 1(r30)
+/* 802EE1EC 002E9E4C 38 80 00 02 */ li r4, 2
+/* 802EE1F0 002E9E50 98 A3 00 10 */ stb r5, 0x10(r3)
+/* 802EE1F4 002E9E54 38 A0 00 00 */ li r5, 0
+/* 802EE1F8 002E9E58 89 1E 00 02 */ lbz r8, 2(r30)
+/* 802EE1FC 002E9E5C 98 E3 00 11 */ stb r7, 0x11(r3)
+/* 802EE200 002E9E60 88 FE 00 03 */ lbz r7, 3(r30)
+/* 802EE204 002E9E64 99 03 00 12 */ stb r8, 0x12(r3)
+/* 802EE208 002E9E68 89 1E 00 04 */ lbz r8, 4(r30)
+/* 802EE20C 002E9E6C 98 E3 00 13 */ stb r7, 0x13(r3)
+/* 802EE210 002E9E70 88 FE 00 05 */ lbz r7, 5(r30)
+/* 802EE214 002E9E74 99 03 00 14 */ stb r8, 0x14(r3)
+/* 802EE218 002E9E78 89 1E 00 06 */ lbz r8, 6(r30)
+/* 802EE21C 002E9E7C 98 E3 00 15 */ stb r7, 0x15(r3)
+/* 802EE220 002E9E80 88 FE 00 07 */ lbz r7, 7(r30)
+/* 802EE224 002E9E84 99 03 00 16 */ stb r8, 0x16(r3)
+/* 802EE228 002E9E88 89 1E 00 08 */ lbz r8, 8(r30)
+/* 802EE22C 002E9E8C 98 E3 00 17 */ stb r7, 0x17(r3)
+/* 802EE230 002E9E90 88 FE 00 09 */ lbz r7, 9(r30)
+/* 802EE234 002E9E94 99 03 00 18 */ stb r8, 0x18(r3)
+/* 802EE238 002E9E98 89 1E 00 0A */ lbz r8, 0xa(r30)
+/* 802EE23C 002E9E9C 98 E3 00 19 */ stb r7, 0x19(r3)
+/* 802EE240 002E9EA0 88 FE 00 0B */ lbz r7, 0xb(r30)
+/* 802EE244 002E9EA4 99 03 00 1A */ stb r8, 0x1a(r3)
+/* 802EE248 002E9EA8 89 1E 00 0C */ lbz r8, 0xc(r30)
+/* 802EE24C 002E9EAC 98 E3 00 1B */ stb r7, 0x1b(r3)
+/* 802EE250 002E9EB0 88 FE 00 0D */ lbz r7, 0xd(r30)
+/* 802EE254 002E9EB4 99 03 00 1C */ stb r8, 0x1c(r3)
+/* 802EE258 002E9EB8 89 1E 00 0E */ lbz r8, 0xe(r30)
+/* 802EE25C 002E9EBC 98 E3 00 1D */ stb r7, 0x1d(r3)
+/* 802EE260 002E9EC0 88 FE 00 0F */ lbz r7, 0xf(r30)
+/* 802EE264 002E9EC4 99 03 00 1E */ stb r8, 0x1e(r3)
+/* 802EE268 002E9EC8 98 E3 00 1F */ stb r7, 0x1f(r3)
+/* 802EE26C 002E9ECC 93 83 00 00 */ stw r28, 0(r3)
+/* 802EE270 002E9ED0 93 A3 00 04 */ stw r29, 4(r3)
+/* 802EE274 002E9ED4 90 03 00 0C */ stw r0, 0xc(r3)
+/* 802EE278 002E9ED8 38 60 10 08 */ li r3, 0x1008
+/* 802EE27C 002E9EDC 4B FF FA ED */ bl WDi_Ioctlv
+/* 802EE280 002E9EE0 7C 7C 1B 78 */ mr r28, r3
+/* 802EE284 002E9EE4 4B FF FA D9 */ bl WDi_GetWork
+/* 802EE288 002E9EE8 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EE28C 002E9EEC 7F E4 FB 78 */ mr r4, r31
+/* 802EE290 002E9EF0 4B FB 60 AD */ bl iosFree
+/* 802EE294 002E9EF4 7F 83 E3 78 */ mr r3, r28
+lbl_802EE298:
+/* 802EE298 002E9EF8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802EE29C 002E9EFC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802EE2A0 002E9F00 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802EE2A4 002E9F04 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802EE2A8 002E9F08 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802EE2AC 002E9F0C 7C 08 03 A6 */ mtlr r0
+/* 802EE2B0 002E9F10 38 21 00 20 */ addi r1, r1, 0x20
+/* 802EE2B4 002E9F14 4E 80 00 20 */ blr
+
+.global WD_GetInfo
+WD_GetInfo:
+/* 802EE2B8 002E9F18 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802EE2BC 002E9F1C 7C 08 02 A6 */ mflr r0
+/* 802EE2C0 002E9F20 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802EE2C4 002E9F24 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802EE2C8 002E9F28 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802EE2CC 002E9F2C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802EE2D0 002E9F30 7C 7D 1B 78 */ mr r29, r3
+/* 802EE2D4 002E9F34 4B FF FA 89 */ bl WDi_GetWork
+/* 802EE2D8 002E9F38 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EE2DC 002E9F3C 38 80 00 98 */ li r4, 0x98
+/* 802EE2E0 002E9F40 38 A0 00 20 */ li r5, 0x20
+/* 802EE2E4 002E9F44 4B FB 60 55 */ bl iosAllocAligned
+/* 802EE2E8 002E9F48 38 83 00 08 */ addi r4, r3, 8
+/* 802EE2EC 002E9F4C 38 00 00 48 */ li r0, 0x48
+/* 802EE2F0 002E9F50 7C 7E 1B 78 */ mr r30, r3
+/* 802EE2F4 002E9F54 90 83 00 00 */ stw r4, 0(r3)
+/* 802EE2F8 002E9F58 38 C3 00 07 */ addi r6, r3, 7
+/* 802EE2FC 002E9F5C 38 BD FF FF */ addi r5, r29, -1
+/* 802EE300 002E9F60 7C 09 03 A6 */ mtctr r0
+lbl_802EE304:
+/* 802EE304 002E9F64 88 85 00 01 */ lbz r4, 1(r5)
+/* 802EE308 002E9F68 8C 05 00 02 */ lbzu r0, 2(r5)
+/* 802EE30C 002E9F6C 98 86 00 01 */ stb r4, 1(r6)
+/* 802EE310 002E9F70 9C 06 00 02 */ stbu r0, 2(r6)
+/* 802EE314 002E9F74 42 00 FF F0 */ bdnz lbl_802EE304
+/* 802EE318 002E9F78 38 00 00 90 */ li r0, 0x90
+/* 802EE31C 002E9F7C 7F C6 F3 78 */ mr r6, r30
+/* 802EE320 002E9F80 90 03 00 04 */ stw r0, 4(r3)
+/* 802EE324 002E9F84 38 60 10 0E */ li r3, 0x100e
+/* 802EE328 002E9F88 38 80 00 00 */ li r4, 0
+/* 802EE32C 002E9F8C 38 A0 00 01 */ li r5, 1
+/* 802EE330 002E9F90 4B FF FA 39 */ bl WDi_Ioctlv
+/* 802EE334 002E9F94 38 00 00 48 */ li r0, 0x48
+/* 802EE338 002E9F98 7C 7F 1B 78 */ mr r31, r3
+/* 802EE33C 002E9F9C 38 BD FF FF */ addi r5, r29, -1
+/* 802EE340 002E9FA0 38 9E 00 07 */ addi r4, r30, 7
+/* 802EE344 002E9FA4 7C 09 03 A6 */ mtctr r0
+lbl_802EE348:
+/* 802EE348 002E9FA8 88 64 00 01 */ lbz r3, 1(r4)
+/* 802EE34C 002E9FAC 8C 04 00 02 */ lbzu r0, 2(r4)
+/* 802EE350 002E9FB0 98 65 00 01 */ stb r3, 1(r5)
+/* 802EE354 002E9FB4 9C 05 00 02 */ stbu r0, 2(r5)
+/* 802EE358 002E9FB8 42 00 FF F0 */ bdnz lbl_802EE348
+/* 802EE35C 002E9FBC 4B FF FA 01 */ bl WDi_GetWork
+/* 802EE360 002E9FC0 80 63 00 08 */ lwz r3, 8(r3)
+/* 802EE364 002E9FC4 7F C4 F3 78 */ mr r4, r30
+/* 802EE368 002E9FC8 4B FB 5F D5 */ bl iosFree
+/* 802EE36C 002E9FCC 7F E3 FB 78 */ mr r3, r31
+/* 802EE370 002E9FD0 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802EE374 002E9FD4 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802EE378 002E9FD8 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802EE37C 002E9FDC 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802EE380 002E9FE0 7C 08 03 A6 */ mtlr r0
+/* 802EE384 002E9FE4 38 21 00 20 */ addi r1, r1, 0x20
+/* 802EE388 002E9FE8 4E 80 00 20 */ blr
|