summaryrefslogtreecommitdiff
path: root/asm/SDK/WD
diff options
context:
space:
mode:
Diffstat (limited to 'asm/SDK/WD')
-rw-r--r--asm/SDK/WD/wd_init.s99
-rw-r--r--asm/SDK/WD/wd_misc.s81
-rw-r--r--asm/SDK/WD/wd_receive.s98
-rw-r--r--asm/SDK/WD/wd_request.s367
4 files changed, 645 insertions, 0 deletions
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