summaryrefslogtreecommitdiff
path: root/asm/SDK/DWC/gamespy/ghttpConnection.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/SDK/DWC/gamespy/ghttpConnection.s')
-rw-r--r--asm/SDK/DWC/gamespy/ghttpConnection.s535
1 files changed, 535 insertions, 0 deletions
diff --git a/asm/SDK/DWC/gamespy/ghttpConnection.s b/asm/SDK/DWC/gamespy/ghttpConnection.s
new file mode 100644
index 0000000..9c2685c
--- /dev/null
+++ b/asm/SDK/DWC/gamespy/ghttpConnection.s
@@ -0,0 +1,535 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global ghiFindFreeSlot
+ghiFindFreeSlot:
+/* 80351754 0034D3B4 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80351758 0034D3B8 7C 08 02 A6 */ mflr r0
+/* 8035175C 0034D3BC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80351760 0034D3C0 39 61 00 20 */ addi r11, r1, 0x20
+/* 80351764 0034D3C4 4B E7 59 C5 */ bl _savegpr_27
+/* 80351768 0034D3C8 80 CD B0 D4 */ lwz r6, lbl_80640394-_SDA_BASE_(r13)
+/* 8035176C 0034D3CC 38 60 00 00 */ li r3, 0
+/* 80351770 0034D3D0 80 0D B0 D0 */ lwz r0, lbl_80640390-_SDA_BASE_(r13)
+/* 80351774 0034D3D4 7C C5 33 78 */ mr r5, r6
+/* 80351778 0034D3D8 7C 09 03 A6 */ mtctr r0
+/* 8035177C 0034D3DC 2C 00 00 00 */ cmpwi r0, 0
+/* 80351780 0034D3E0 40 81 00 24 */ ble lbl_803517A4
+lbl_80351784:
+/* 80351784 0034D3E4 80 85 00 00 */ lwz r4, 0(r5)
+/* 80351788 0034D3E8 80 04 00 00 */ lwz r0, 0(r4)
+/* 8035178C 0034D3EC 2C 00 00 00 */ cmpwi r0, 0
+/* 80351790 0034D3F0 40 82 00 08 */ bne lbl_80351798
+/* 80351794 0034D3F4 48 00 00 B4 */ b lbl_80351848
+lbl_80351798:
+/* 80351798 0034D3F8 38 A5 00 04 */ addi r5, r5, 4
+/* 8035179C 0034D3FC 38 63 00 01 */ addi r3, r3, 1
+/* 803517A0 0034D400 42 00 FF E4 */ bdnz lbl_80351784
+lbl_803517A4:
+/* 803517A4 0034D404 83 AD B0 D0 */ lwz r29, lbl_80640390-_SDA_BASE_(r13)
+/* 803517A8 0034D408 7C C3 33 78 */ mr r3, r6
+/* 803517AC 0034D40C 3B 7D 00 04 */ addi r27, r29, 4
+/* 803517B0 0034D410 57 64 10 3A */ slwi r4, r27, 2
+/* 803517B4 0034D414 4B FE 7B 71 */ bl gsirealloc
+/* 803517B8 0034D418 2C 03 00 00 */ cmpwi r3, 0
+/* 803517BC 0034D41C 40 82 00 0C */ bne lbl_803517C8
+/* 803517C0 0034D420 38 60 FF FF */ li r3, -1
+/* 803517C4 0034D424 48 00 00 84 */ b lbl_80351848
+lbl_803517C8:
+/* 803517C8 0034D428 90 6D B0 D4 */ stw r3, lbl_80640394-_SDA_BASE_(r13)
+/* 803517CC 0034D42C 7F BC EB 78 */ mr r28, r29
+/* 803517D0 0034D430 57 BE 10 3A */ slwi r30, r29, 2
+/* 803517D4 0034D434 3B E0 00 00 */ li r31, 0
+/* 803517D8 0034D438 48 00 00 60 */ b lbl_80351838
+lbl_803517DC:
+/* 803517DC 0034D43C 38 60 01 B4 */ li r3, 0x1b4
+/* 803517E0 0034D440 4B FE 7B 35 */ bl gsimalloc
+/* 803517E4 0034D444 80 8D B0 D4 */ lwz r4, lbl_80640394-_SDA_BASE_(r13)
+/* 803517E8 0034D448 7C 64 F1 2E */ stwx r3, r4, r30
+/* 803517EC 0034D44C 80 6D B0 D4 */ lwz r3, lbl_80640394-_SDA_BASE_(r13)
+/* 803517F0 0034D450 7C 63 F0 2E */ lwzx r3, r3, r30
+/* 803517F4 0034D454 2C 03 00 00 */ cmpwi r3, 0
+/* 803517F8 0034D458 40 82 00 34 */ bne lbl_8035182C
+/* 803517FC 0034D45C 3B 9C FF FF */ addi r28, r28, -1
+/* 80351800 0034D460 57 9E 10 3A */ slwi r30, r28, 2
+/* 80351804 0034D464 48 00 00 18 */ b lbl_8035181C
+lbl_80351808:
+/* 80351808 0034D468 80 6D B0 D4 */ lwz r3, lbl_80640394-_SDA_BASE_(r13)
+/* 8035180C 0034D46C 7C 63 F0 2E */ lwzx r3, r3, r30
+/* 80351810 0034D470 4B FE 7B 29 */ bl gsifree
+/* 80351814 0034D474 3B DE FF FC */ addi r30, r30, -4
+/* 80351818 0034D478 3B 9C FF FF */ addi r28, r28, -1
+lbl_8035181C:
+/* 8035181C 0034D47C 7C 1C E8 00 */ cmpw r28, r29
+/* 80351820 0034D480 40 80 FF E8 */ bge lbl_80351808
+/* 80351824 0034D484 38 60 FF FF */ li r3, -1
+/* 80351828 0034D488 48 00 00 20 */ b lbl_80351848
+lbl_8035182C:
+/* 8035182C 0034D48C 93 E3 00 00 */ stw r31, 0(r3)
+/* 80351830 0034D490 3B DE 00 04 */ addi r30, r30, 4
+/* 80351834 0034D494 3B 9C 00 01 */ addi r28, r28, 1
+lbl_80351838:
+/* 80351838 0034D498 7C 1C D8 00 */ cmpw r28, r27
+/* 8035183C 0034D49C 41 80 FF A0 */ blt lbl_803517DC
+/* 80351840 0034D4A0 93 6D B0 D0 */ stw r27, lbl_80640390-_SDA_BASE_(r13)
+/* 80351844 0034D4A4 7F A3 EB 78 */ mr r3, r29
+lbl_80351848:
+/* 80351848 0034D4A8 39 61 00 20 */ addi r11, r1, 0x20
+/* 8035184C 0034D4AC 4B E7 59 29 */ bl _restgpr_27
+/* 80351850 0034D4B0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80351854 0034D4B4 7C 08 03 A6 */ mtlr r0
+/* 80351858 0034D4B8 38 21 00 20 */ addi r1, r1, 0x20
+/* 8035185C 0034D4BC 4E 80 00 20 */ blr
+
+.global ghiNewConnection
+ghiNewConnection:
+/* 80351860 0034D4C0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80351864 0034D4C4 7C 08 02 A6 */ mflr r0
+/* 80351868 0034D4C8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8035186C 0034D4CC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80351870 0034D4D0 93 C1 00 08 */ stw r30, 8(r1)
+/* 80351874 0034D4D4 4B FF FA 79 */ bl ghiLock
+/* 80351878 0034D4D8 4B FF FE DD */ bl ghiFindFreeSlot
+/* 8035187C 0034D4DC 2C 03 FF FF */ cmpwi r3, -1
+/* 80351880 0034D4E0 7C 7F 1B 78 */ mr r31, r3
+/* 80351884 0034D4E4 40 82 00 10 */ bne lbl_80351894
+/* 80351888 0034D4E8 4B FF FA 69 */ bl ghiUnlock
+/* 8035188C 0034D4EC 38 60 00 00 */ li r3, 0
+/* 80351890 0034D4F0 48 00 01 7C */ b lbl_80351A0C
+lbl_80351894:
+/* 80351894 0034D4F4 80 CD B0 D4 */ lwz r6, lbl_80640394-_SDA_BASE_(r13)
+/* 80351898 0034D4F8 54 60 10 3A */ slwi r0, r3, 2
+/* 8035189C 0034D4FC 38 80 00 00 */ li r4, 0
+/* 803518A0 0034D500 38 A0 01 B4 */ li r5, 0x1b4
+/* 803518A4 0034D504 7F C6 00 2E */ lwzx r30, r6, r0
+/* 803518A8 0034D508 7F C3 F3 78 */ mr r3, r30
+/* 803518AC 0034D50C 4B CB 28 59 */ bl memset
+/* 803518B0 0034D510 38 00 00 01 */ li r0, 1
+/* 803518B4 0034D514 39 20 00 00 */ li r9, 0
+/* 803518B8 0034D518 90 1E 00 00 */ stw r0, 0(r30)
+/* 803518BC 0034D51C 39 00 FF FF */ li r8, -1
+/* 803518C0 0034D520 38 E0 01 F4 */ li r7, 0x1f4
+/* 803518C4 0034D524 38 00 00 50 */ li r0, 0x50
+/* 803518C8 0034D528 93 FE 00 04 */ stw r31, 4(r30)
+/* 803518CC 0034D52C 7F C3 F3 78 */ mr r3, r30
+/* 803518D0 0034D530 38 9E 00 54 */ addi r4, r30, 0x54
+/* 803518D4 0034D534 38 A0 08 00 */ li r5, 0x800
+/* 803518D8 0034D538 81 4D B0 C8 */ lwz r10, lbl_80640388-_SDA_BASE_(r13)
+/* 803518DC 0034D53C 38 C0 10 00 */ li r6, 0x1000
+/* 803518E0 0034D540 91 5E 00 08 */ stw r10, 8(r30)
+/* 803518E4 0034D544 39 4A 00 01 */ addi r10, r10, 1
+/* 803518E8 0034D548 91 4D B0 C8 */ stw r10, lbl_80640388-_SDA_BASE_(r13)
+/* 803518EC 0034D54C 91 3E 00 0C */ stw r9, 0xc(r30)
+/* 803518F0 0034D550 91 3E 00 10 */ stw r9, 0x10(r30)
+/* 803518F4 0034D554 91 3E 00 14 */ stw r9, 0x14(r30)
+/* 803518F8 0034D558 91 3E 00 18 */ stw r9, 0x18(r30)
+/* 803518FC 0034D55C 91 3E 00 1C */ stw r9, 0x1c(r30)
+/* 80351900 0034D560 B1 3E 00 20 */ sth r9, 0x20(r30)
+/* 80351904 0034D564 91 3E 00 24 */ stw r9, 0x24(r30)
+/* 80351908 0034D568 91 3E 00 2C */ stw r9, 0x2c(r30)
+/* 8035190C 0034D56C 91 3E 00 30 */ stw r9, 0x30(r30)
+/* 80351910 0034D570 91 3E 00 34 */ stw r9, 0x34(r30)
+/* 80351914 0034D574 91 3E 00 38 */ stw r9, 0x38(r30)
+/* 80351918 0034D578 91 3E 00 3C */ stw r9, 0x3c(r30)
+/* 8035191C 0034D57C 91 3E 00 40 */ stw r9, 0x40(r30)
+/* 80351920 0034D580 91 3E 00 44 */ stw r9, 0x44(r30)
+/* 80351924 0034D584 91 3E 00 48 */ stw r9, 0x48(r30)
+/* 80351928 0034D588 91 1E 00 4C */ stw r8, 0x4c(r30)
+/* 8035192C 0034D58C 91 3E 00 50 */ stw r9, 0x50(r30)
+/* 80351930 0034D590 91 3E 01 08 */ stw r9, 0x108(r30)
+/* 80351934 0034D594 91 3E 01 0C */ stw r9, 0x10c(r30)
+/* 80351938 0034D598 91 3E 01 10 */ stw r9, 0x110(r30)
+/* 8035193C 0034D59C 91 3E 01 14 */ stw r9, 0x114(r30)
+/* 80351940 0034D5A0 91 3E 01 18 */ stw r9, 0x118(r30)
+/* 80351944 0034D5A4 91 3E 01 1C */ stw r9, 0x11c(r30)
+/* 80351948 0034D5A8 91 3E 01 20 */ stw r9, 0x120(r30)
+/* 8035194C 0034D5AC 91 3E 01 24 */ stw r9, 0x124(r30)
+/* 80351950 0034D5B0 91 1E 01 28 */ stw r8, 0x128(r30)
+/* 80351954 0034D5B4 91 3E 01 2C */ stw r9, 0x12c(r30)
+/* 80351958 0034D5B8 91 3E 01 30 */ stw r9, 0x130(r30)
+/* 8035195C 0034D5BC 91 3E 01 34 */ stw r9, 0x134(r30)
+/* 80351960 0034D5C0 91 3E 01 50 */ stw r9, 0x150(r30)
+/* 80351964 0034D5C4 91 3E 01 58 */ stw r9, 0x158(r30)
+/* 80351968 0034D5C8 91 3E 01 5C */ stw r9, 0x15c(r30)
+/* 8035196C 0034D5CC 91 3E 01 60 */ stw r9, 0x160(r30)
+/* 80351970 0034D5D0 90 FE 01 84 */ stw r7, 0x184(r30)
+/* 80351974 0034D5D4 B0 1E 01 8C */ sth r0, 0x18c(r30)
+/* 80351978 0034D5D8 91 3E 01 88 */ stw r9, 0x188(r30)
+/* 8035197C 0034D5DC 91 3E 01 90 */ stw r9, 0x190(r30)
+/* 80351980 0034D5E0 91 3E 01 B0 */ stw r9, 0x1b0(r30)
+/* 80351984 0034D5E4 4B FF EE F1 */ bl ghiInitBuffer
+/* 80351988 0034D5E8 2C 03 00 00 */ cmpwi r3, 0
+/* 8035198C 0034D5EC 41 82 00 18 */ beq lbl_803519A4
+/* 80351990 0034D5F0 7F C3 F3 78 */ mr r3, r30
+/* 80351994 0034D5F4 38 9E 00 78 */ addi r4, r30, 0x78
+/* 80351998 0034D5F8 38 A0 08 00 */ li r5, 0x800
+/* 8035199C 0034D5FC 38 C0 04 00 */ li r6, 0x400
+/* 803519A0 0034D600 4B FF EE D5 */ bl ghiInitBuffer
+lbl_803519A4:
+/* 803519A4 0034D604 2C 03 00 00 */ cmpwi r3, 0
+/* 803519A8 0034D608 41 82 00 18 */ beq lbl_803519C0
+/* 803519AC 0034D60C 7F C3 F3 78 */ mr r3, r30
+/* 803519B0 0034D610 38 9E 00 9C */ addi r4, r30, 0x9c
+/* 803519B4 0034D614 38 A0 08 00 */ li r5, 0x800
+/* 803519B8 0034D618 38 C0 08 00 */ li r6, 0x800
+/* 803519BC 0034D61C 4B FF EE B9 */ bl ghiInitBuffer
+lbl_803519C0:
+/* 803519C0 0034D620 2C 03 00 00 */ cmpwi r3, 0
+/* 803519C4 0034D624 41 82 00 18 */ beq lbl_803519DC
+/* 803519C8 0034D628 7F C3 F3 78 */ mr r3, r30
+/* 803519CC 0034D62C 38 9E 00 C0 */ addi r4, r30, 0xc0
+/* 803519D0 0034D630 38 A0 08 00 */ li r5, 0x800
+/* 803519D4 0034D634 38 C0 04 00 */ li r6, 0x400
+/* 803519D8 0034D638 4B FF EE 9D */ bl ghiInitBuffer
+lbl_803519DC:
+/* 803519DC 0034D63C 2C 03 00 00 */ cmpwi r3, 0
+/* 803519E0 0034D640 40 82 00 18 */ bne lbl_803519F8
+/* 803519E4 0034D644 7F C3 F3 78 */ mr r3, r30
+/* 803519E8 0034D648 48 00 00 3D */ bl ghiFreeConnection
+/* 803519EC 0034D64C 4B FF F9 05 */ bl ghiUnlock
+/* 803519F0 0034D650 38 60 00 00 */ li r3, 0
+/* 803519F4 0034D654 48 00 00 18 */ b lbl_80351A0C
+lbl_803519F8:
+/* 803519F8 0034D658 80 6D B0 CC */ lwz r3, lbl_8064038C-_SDA_BASE_(r13)
+/* 803519FC 0034D65C 38 03 00 01 */ addi r0, r3, 1
+/* 80351A00 0034D660 90 0D B0 CC */ stw r0, lbl_8064038C-_SDA_BASE_(r13)
+/* 80351A04 0034D664 4B FF F8 ED */ bl ghiUnlock
+/* 80351A08 0034D668 7F C3 F3 78 */ mr r3, r30
+lbl_80351A0C:
+/* 80351A0C 0034D66C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80351A10 0034D670 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80351A14 0034D674 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80351A18 0034D678 7C 08 03 A6 */ mtlr r0
+/* 80351A1C 0034D67C 38 21 00 10 */ addi r1, r1, 0x10
+/* 80351A20 0034D680 4E 80 00 20 */ blr
+
+.global ghiFreeConnection
+ghiFreeConnection:
+/* 80351A24 0034D684 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80351A28 0034D688 7C 08 02 A6 */ mflr r0
+/* 80351A2C 0034D68C 2C 03 00 00 */ cmpwi r3, 0
+/* 80351A30 0034D690 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80351A34 0034D694 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80351A38 0034D698 7C 7F 1B 78 */ mr r31, r3
+/* 80351A3C 0034D69C 40 82 00 0C */ bne lbl_80351A48
+/* 80351A40 0034D6A0 38 60 00 00 */ li r3, 0
+/* 80351A44 0034D6A4 48 00 01 40 */ b lbl_80351B84
+lbl_80351A48:
+/* 80351A48 0034D6A8 80 03 00 00 */ lwz r0, 0(r3)
+/* 80351A4C 0034D6AC 2C 00 00 00 */ cmpwi r0, 0
+/* 80351A50 0034D6B0 40 82 00 0C */ bne lbl_80351A5C
+/* 80351A54 0034D6B4 38 60 00 00 */ li r3, 0
+/* 80351A58 0034D6B8 48 00 01 2C */ b lbl_80351B84
+lbl_80351A5C:
+/* 80351A5C 0034D6BC 80 63 00 04 */ lwz r3, 4(r3)
+/* 80351A60 0034D6C0 2C 03 00 00 */ cmpwi r3, 0
+/* 80351A64 0034D6C4 40 80 00 0C */ bge lbl_80351A70
+/* 80351A68 0034D6C8 38 60 00 00 */ li r3, 0
+/* 80351A6C 0034D6CC 48 00 01 18 */ b lbl_80351B84
+lbl_80351A70:
+/* 80351A70 0034D6D0 80 0D B0 D0 */ lwz r0, lbl_80640390-_SDA_BASE_(r13)
+/* 80351A74 0034D6D4 7C 03 00 00 */ cmpw r3, r0
+/* 80351A78 0034D6D8 41 80 00 0C */ blt lbl_80351A84
+/* 80351A7C 0034D6DC 38 60 00 00 */ li r3, 0
+/* 80351A80 0034D6E0 48 00 01 04 */ b lbl_80351B84
+lbl_80351A84:
+/* 80351A84 0034D6E4 4B FF F8 69 */ bl ghiLock
+/* 80351A88 0034D6E8 80 7F 00 14 */ lwz r3, 0x14(r31)
+/* 80351A8C 0034D6EC 4B FE 78 AD */ bl gsifree
+/* 80351A90 0034D6F0 80 7F 00 18 */ lwz r3, 0x18(r31)
+/* 80351A94 0034D6F4 4B FE 78 A5 */ bl gsifree
+/* 80351A98 0034D6F8 80 7F 00 24 */ lwz r3, 0x24(r31)
+/* 80351A9C 0034D6FC 4B FE 78 9D */ bl gsifree
+/* 80351AA0 0034D700 80 7F 00 2C */ lwz r3, 0x2c(r31)
+/* 80351AA4 0034D704 4B FE 78 95 */ bl gsifree
+/* 80351AA8 0034D708 80 7F 01 2C */ lwz r3, 0x12c(r31)
+/* 80351AAC 0034D70C 4B FE 78 8D */ bl gsifree
+/* 80351AB0 0034D710 80 7F 01 88 */ lwz r3, 0x188(r31)
+/* 80351AB4 0034D714 4B FE 78 85 */ bl gsifree
+/* 80351AB8 0034D718 80 7F 00 4C */ lwz r3, 0x4c(r31)
+/* 80351ABC 0034D71C 2C 03 FF FF */ cmpwi r3, -1
+/* 80351AC0 0034D720 41 82 00 14 */ beq lbl_80351AD4
+/* 80351AC4 0034D724 38 80 00 02 */ li r4, 2
+/* 80351AC8 0034D728 4B FE 61 69 */ bl shutdown
+/* 80351ACC 0034D72C 80 7F 00 4C */ lwz r3, 0x4c(r31)
+/* 80351AD0 0034D730 4B FE 61 2D */ bl closesocket
+lbl_80351AD4:
+/* 80351AD4 0034D734 38 7F 00 54 */ addi r3, r31, 0x54
+/* 80351AD8 0034D738 4B FF EF 85 */ bl ghiFreeBuffer
+/* 80351ADC 0034D73C 38 7F 00 78 */ addi r3, r31, 0x78
+/* 80351AE0 0034D740 4B FF EF 7D */ bl ghiFreeBuffer
+/* 80351AE4 0034D744 38 7F 00 9C */ addi r3, r31, 0x9c
+/* 80351AE8 0034D748 4B FF EF 75 */ bl ghiFreeBuffer
+/* 80351AEC 0034D74C 38 7F 00 C0 */ addi r3, r31, 0xc0
+/* 80351AF0 0034D750 4B FF EF 6D */ bl ghiFreeBuffer
+/* 80351AF4 0034D754 38 7F 00 E4 */ addi r3, r31, 0xe4
+/* 80351AF8 0034D758 4B FF EF 65 */ bl ghiFreeBuffer
+/* 80351AFC 0034D75C 80 1F 01 64 */ lwz r0, 0x164(r31)
+/* 80351B00 0034D760 2C 00 00 00 */ cmpwi r0, 0
+/* 80351B04 0034D764 41 82 00 0C */ beq lbl_80351B10
+/* 80351B08 0034D768 7F E3 FB 78 */ mr r3, r31
+/* 80351B0C 0034D76C 48 00 2E 81 */ bl ghiPostCleanupState
+lbl_80351B10:
+/* 80351B10 0034D770 80 7F 01 60 */ lwz r3, 0x160(r31)
+/* 80351B14 0034D774 2C 03 00 00 */ cmpwi r3, 0
+/* 80351B18 0034D778 41 82 00 20 */ beq lbl_80351B38
+/* 80351B1C 0034D77C 48 00 27 25 */ bl ghiIsPostAutoFree
+/* 80351B20 0034D780 2C 03 00 00 */ cmpwi r3, 0
+/* 80351B24 0034D784 41 82 00 14 */ beq lbl_80351B38
+/* 80351B28 0034D788 80 7F 01 60 */ lwz r3, 0x160(r31)
+/* 80351B2C 0034D78C 48 00 27 1D */ bl ghiFreePost
+/* 80351B30 0034D790 38 00 00 00 */ li r0, 0
+/* 80351B34 0034D794 90 1F 01 60 */ stw r0, 0x160(r31)
+lbl_80351B38:
+/* 80351B38 0034D798 80 1F 01 98 */ lwz r0, 0x198(r31)
+/* 80351B3C 0034D79C 2C 00 00 00 */ cmpwi r0, 0
+/* 80351B40 0034D7A0 41 82 00 28 */ beq lbl_80351B68
+/* 80351B44 0034D7A4 81 9F 01 A4 */ lwz r12, 0x1a4(r31)
+/* 80351B48 0034D7A8 2C 0C 00 00 */ cmpwi r12, 0
+/* 80351B4C 0034D7AC 41 82 00 14 */ beq lbl_80351B60
+/* 80351B50 0034D7B0 7F E3 FB 78 */ mr r3, r31
+/* 80351B54 0034D7B4 38 9F 01 90 */ addi r4, r31, 0x190
+/* 80351B58 0034D7B8 7D 89 03 A6 */ mtctr r12
+/* 80351B5C 0034D7BC 4E 80 04 21 */ bctrl
+lbl_80351B60:
+/* 80351B60 0034D7C0 38 00 00 00 */ li r0, 0
+/* 80351B64 0034D7C4 90 1F 01 98 */ stw r0, 0x198(r31)
+lbl_80351B68:
+/* 80351B68 0034D7C8 38 00 00 00 */ li r0, 0
+/* 80351B6C 0034D7CC 90 1F 00 00 */ stw r0, 0(r31)
+/* 80351B70 0034D7D0 80 6D B0 CC */ lwz r3, lbl_8064038C-_SDA_BASE_(r13)
+/* 80351B74 0034D7D4 38 03 FF FF */ addi r0, r3, -1
+/* 80351B78 0034D7D8 90 0D B0 CC */ stw r0, lbl_8064038C-_SDA_BASE_(r13)
+/* 80351B7C 0034D7DC 4B FF F7 75 */ bl ghiUnlock
+/* 80351B80 0034D7E0 38 60 00 01 */ li r3, 1
+lbl_80351B84:
+/* 80351B84 0034D7E4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80351B88 0034D7E8 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80351B8C 0034D7EC 7C 08 03 A6 */ mtlr r0
+/* 80351B90 0034D7F0 38 21 00 10 */ addi r1, r1, 0x10
+/* 80351B94 0034D7F4 4E 80 00 20 */ blr
+
+.global ghiRequestToConnection
+ghiRequestToConnection:
+/* 80351B98 0034D7F8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80351B9C 0034D7FC 7C 08 02 A6 */ mflr r0
+/* 80351BA0 0034D800 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80351BA4 0034D804 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80351BA8 0034D808 7C 7F 1B 78 */ mr r31, r3
+/* 80351BAC 0034D80C 4B FF F7 41 */ bl ghiLock
+/* 80351BB0 0034D810 2C 1F 00 00 */ cmpwi r31, 0
+/* 80351BB4 0034D814 41 80 00 10 */ blt lbl_80351BC4
+/* 80351BB8 0034D818 80 0D B0 D0 */ lwz r0, lbl_80640390-_SDA_BASE_(r13)
+/* 80351BBC 0034D81C 7C 1F 00 00 */ cmpw r31, r0
+/* 80351BC0 0034D820 41 80 00 10 */ blt lbl_80351BD0
+lbl_80351BC4:
+/* 80351BC4 0034D824 4B FF F7 2D */ bl ghiUnlock
+/* 80351BC8 0034D828 38 60 00 00 */ li r3, 0
+/* 80351BCC 0034D82C 48 00 00 28 */ b lbl_80351BF4
+lbl_80351BD0:
+/* 80351BD0 0034D830 80 6D B0 D4 */ lwz r3, lbl_80640394-_SDA_BASE_(r13)
+/* 80351BD4 0034D834 57 E0 10 3A */ slwi r0, r31, 2
+/* 80351BD8 0034D838 7F E3 00 2E */ lwzx r31, r3, r0
+/* 80351BDC 0034D83C 80 1F 00 00 */ lwz r0, 0(r31)
+/* 80351BE0 0034D840 2C 00 00 00 */ cmpwi r0, 0
+/* 80351BE4 0034D844 40 82 00 08 */ bne lbl_80351BEC
+/* 80351BE8 0034D848 3B E0 00 00 */ li r31, 0
+lbl_80351BEC:
+/* 80351BEC 0034D84C 4B FF F7 05 */ bl ghiUnlock
+/* 80351BF0 0034D850 7F E3 FB 78 */ mr r3, r31
+lbl_80351BF4:
+/* 80351BF4 0034D854 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80351BF8 0034D858 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80351BFC 0034D85C 7C 08 03 A6 */ mtlr r0
+/* 80351C00 0034D860 38 21 00 10 */ addi r1, r1, 0x10
+/* 80351C04 0034D864 4E 80 00 20 */ blr
+
+.global ghiEnumConnections
+ghiEnumConnections:
+/* 80351C08 0034D868 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80351C0C 0034D86C 7C 08 02 A6 */ mflr r0
+/* 80351C10 0034D870 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80351C14 0034D874 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80351C18 0034D878 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80351C1C 0034D87C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80351C20 0034D880 7C 7D 1B 78 */ mr r29, r3
+/* 80351C24 0034D884 80 0D B0 CC */ lwz r0, lbl_8064038C-_SDA_BASE_(r13)
+/* 80351C28 0034D888 2C 00 00 00 */ cmpwi r0, 0
+/* 80351C2C 0034D88C 40 81 00 4C */ ble lbl_80351C78
+/* 80351C30 0034D890 4B FF F6 BD */ bl ghiLock
+/* 80351C34 0034D894 3B C0 00 00 */ li r30, 0
+/* 80351C38 0034D898 3B E0 00 00 */ li r31, 0
+/* 80351C3C 0034D89C 48 00 00 2C */ b lbl_80351C68
+lbl_80351C40:
+/* 80351C40 0034D8A0 80 6D B0 D4 */ lwz r3, lbl_80640394-_SDA_BASE_(r13)
+/* 80351C44 0034D8A4 7C 63 F8 2E */ lwzx r3, r3, r31
+/* 80351C48 0034D8A8 80 03 00 00 */ lwz r0, 0(r3)
+/* 80351C4C 0034D8AC 2C 00 00 00 */ cmpwi r0, 0
+/* 80351C50 0034D8B0 41 82 00 10 */ beq lbl_80351C60
+/* 80351C54 0034D8B4 7F AC EB 78 */ mr r12, r29
+/* 80351C58 0034D8B8 7D 89 03 A6 */ mtctr r12
+/* 80351C5C 0034D8BC 4E 80 04 21 */ bctrl
+lbl_80351C60:
+/* 80351C60 0034D8C0 3B FF 00 04 */ addi r31, r31, 4
+/* 80351C64 0034D8C4 3B DE 00 01 */ addi r30, r30, 1
+lbl_80351C68:
+/* 80351C68 0034D8C8 80 0D B0 D0 */ lwz r0, lbl_80640390-_SDA_BASE_(r13)
+/* 80351C6C 0034D8CC 7C 1E 00 00 */ cmpw r30, r0
+/* 80351C70 0034D8D0 41 80 FF D0 */ blt lbl_80351C40
+/* 80351C74 0034D8D4 4B FF F6 7D */ bl ghiUnlock
+lbl_80351C78:
+/* 80351C78 0034D8D8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80351C7C 0034D8DC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80351C80 0034D8E0 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80351C84 0034D8E4 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80351C88 0034D8E8 7C 08 03 A6 */ mtlr r0
+/* 80351C8C 0034D8EC 38 21 00 20 */ addi r1, r1, 0x20
+/* 80351C90 0034D8F0 4E 80 00 20 */ blr
+
+.global ghiRedirectConnection
+ghiRedirectConnection:
+/* 80351C94 0034D8F4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80351C98 0034D8F8 7C 08 02 A6 */ mflr r0
+/* 80351C9C 0034D8FC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80351CA0 0034D900 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80351CA4 0034D904 3B E0 00 00 */ li r31, 0
+/* 80351CA8 0034D908 93 C1 00 08 */ stw r30, 8(r1)
+/* 80351CAC 0034D90C 7C 7E 1B 78 */ mr r30, r3
+/* 80351CB0 0034D910 80 03 01 B0 */ lwz r0, 0x1b0(r3)
+/* 80351CB4 0034D914 93 E3 00 10 */ stw r31, 0x10(r3)
+/* 80351CB8 0034D918 2C 00 00 00 */ cmpwi r0, 0
+/* 80351CBC 0034D91C 41 82 00 18 */ beq lbl_80351CD4
+/* 80351CC0 0034D920 7C 03 03 78 */ mr r3, r0
+/* 80351CC4 0034D924 4B FE 70 85 */ bl gsiCancelResolvingHostname
+/* 80351CC8 0034D928 80 7E 01 B0 */ lwz r3, 0x1b0(r30)
+/* 80351CCC 0034D92C 4B FE 76 6D */ bl gsifree
+/* 80351CD0 0034D930 93 FE 01 B0 */ stw r31, 0x1b0(r30)
+lbl_80351CD4:
+/* 80351CD4 0034D934 80 7E 00 14 */ lwz r3, 0x14(r30)
+/* 80351CD8 0034D938 4B FE 76 61 */ bl gsifree
+/* 80351CDC 0034D93C 80 1E 01 2C */ lwz r0, 0x12c(r30)
+/* 80351CE0 0034D940 3B E0 00 00 */ li r31, 0
+/* 80351CE4 0034D944 80 7E 00 18 */ lwz r3, 0x18(r30)
+/* 80351CE8 0034D948 90 1E 00 14 */ stw r0, 0x14(r30)
+/* 80351CEC 0034D94C 93 FE 01 2C */ stw r31, 0x12c(r30)
+/* 80351CF0 0034D950 4B FE 76 49 */ bl gsifree
+/* 80351CF4 0034D954 93 FE 00 18 */ stw r31, 0x18(r30)
+/* 80351CF8 0034D958 80 7E 00 24 */ lwz r3, 0x24(r30)
+/* 80351CFC 0034D95C 93 FE 00 1C */ stw r31, 0x1c(r30)
+/* 80351D00 0034D960 B3 FE 00 20 */ sth r31, 0x20(r30)
+/* 80351D04 0034D964 4B FE 76 35 */ bl gsifree
+/* 80351D08 0034D968 93 FE 00 24 */ stw r31, 0x24(r30)
+/* 80351D0C 0034D96C 38 80 00 02 */ li r4, 2
+/* 80351D10 0034D970 80 7E 00 4C */ lwz r3, 0x4c(r30)
+/* 80351D14 0034D974 4B FE 5F 1D */ bl shutdown
+/* 80351D18 0034D978 80 7E 00 4C */ lwz r3, 0x4c(r30)
+/* 80351D1C 0034D97C 4B FE 5E E1 */ bl closesocket
+/* 80351D20 0034D980 38 00 FF FF */ li r0, -1
+/* 80351D24 0034D984 38 7E 00 54 */ addi r3, r30, 0x54
+/* 80351D28 0034D988 90 1E 00 4C */ stw r0, 0x4c(r30)
+/* 80351D2C 0034D98C 4B FF F3 05 */ bl ghiResetBuffer
+/* 80351D30 0034D990 38 7E 00 78 */ addi r3, r30, 0x78
+/* 80351D34 0034D994 4B FF F2 FD */ bl ghiResetBuffer
+/* 80351D38 0034D998 38 7E 00 9C */ addi r3, r30, 0x9c
+/* 80351D3C 0034D99C 4B FF F2 F5 */ bl ghiResetBuffer
+/* 80351D40 0034D9A0 38 7E 00 C0 */ addi r3, r30, 0xc0
+/* 80351D44 0034D9A4 4B FF F2 ED */ bl ghiResetBuffer
+/* 80351D48 0034D9A8 80 1E 01 98 */ lwz r0, 0x198(r30)
+/* 80351D4C 0034D9AC 93 FE 01 0C */ stw r31, 0x10c(r30)
+/* 80351D50 0034D9B0 2C 00 00 00 */ cmpwi r0, 0
+/* 80351D54 0034D9B4 93 FE 01 10 */ stw r31, 0x110(r30)
+/* 80351D58 0034D9B8 93 FE 01 14 */ stw r31, 0x114(r30)
+/* 80351D5C 0034D9BC 93 FE 01 18 */ stw r31, 0x118(r30)
+/* 80351D60 0034D9C0 93 FE 01 1C */ stw r31, 0x11c(r30)
+/* 80351D64 0034D9C4 93 FE 01 54 */ stw r31, 0x154(r30)
+/* 80351D68 0034D9C8 41 82 00 4C */ beq lbl_80351DB4
+/* 80351D6C 0034D9CC 81 9E 01 A4 */ lwz r12, 0x1a4(r30)
+/* 80351D70 0034D9D0 2C 0C 00 00 */ cmpwi r12, 0
+/* 80351D74 0034D9D4 41 82 00 14 */ beq lbl_80351D88
+/* 80351D78 0034D9D8 7F C3 F3 78 */ mr r3, r30
+/* 80351D7C 0034D9DC 38 9E 01 90 */ addi r4, r30, 0x190
+/* 80351D80 0034D9E0 7D 89 03 A6 */ mtctr r12
+/* 80351D84 0034D9E4 4E 80 04 21 */ bctrl
+lbl_80351D88:
+/* 80351D88 0034D9E8 3B E0 00 00 */ li r31, 0
+/* 80351D8C 0034D9EC 3C 60 80 45 */ lis r3, lbl_8044BF70@ha
+/* 80351D90 0034D9F0 93 FE 01 98 */ stw r31, 0x198(r30)
+/* 80351D94 0034D9F4 38 63 BF 70 */ addi r3, r3, lbl_8044BF70@l
+/* 80351D98 0034D9F8 80 9E 00 14 */ lwz r4, 0x14(r30)
+/* 80351D9C 0034D9FC 38 A0 00 08 */ li r5, 8
+/* 80351DA0 0034DA00 4B E7 C7 C9 */ bl strncmp
+/* 80351DA4 0034DA04 2C 03 00 00 */ cmpwi r3, 0
+/* 80351DA8 0034DA08 41 82 00 0C */ beq lbl_80351DB4
+/* 80351DAC 0034DA0C 93 FE 01 94 */ stw r31, 0x194(r30)
+/* 80351DB0 0034DA10 93 FE 01 90 */ stw r31, 0x190(r30)
+lbl_80351DB4:
+/* 80351DB4 0034DA14 80 7E 01 30 */ lwz r3, 0x130(r30)
+/* 80351DB8 0034DA18 38 03 00 01 */ addi r0, r3, 1
+/* 80351DBC 0034DA1C 90 1E 01 30 */ stw r0, 0x130(r30)
+/* 80351DC0 0034DA20 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80351DC4 0034DA24 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80351DC8 0034DA28 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80351DCC 0034DA2C 7C 08 03 A6 */ mtlr r0
+/* 80351DD0 0034DA30 38 21 00 10 */ addi r1, r1, 0x10
+/* 80351DD4 0034DA34 4E 80 00 20 */ blr
+
+.global ghiCleanupConnections
+ghiCleanupConnections:
+/* 80351DD8 0034DA38 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80351DDC 0034DA3C 7C 08 02 A6 */ mflr r0
+/* 80351DE0 0034DA40 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80351DE4 0034DA44 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80351DE8 0034DA48 93 C1 00 08 */ stw r30, 8(r1)
+/* 80351DEC 0034DA4C 80 0D B0 D4 */ lwz r0, lbl_80640394-_SDA_BASE_(r13)
+/* 80351DF0 0034DA50 2C 00 00 00 */ cmpwi r0, 0
+/* 80351DF4 0034DA54 41 82 00 94 */ beq lbl_80351E88
+/* 80351DF8 0034DA58 80 0D B0 CC */ lwz r0, lbl_8064038C-_SDA_BASE_(r13)
+/* 80351DFC 0034DA5C 2C 00 00 00 */ cmpwi r0, 0
+/* 80351E00 0034DA60 40 81 00 44 */ ble lbl_80351E44
+/* 80351E04 0034DA64 4B FF F4 E9 */ bl ghiLock
+/* 80351E08 0034DA68 3B E0 00 00 */ li r31, 0
+/* 80351E0C 0034DA6C 3B C0 00 00 */ li r30, 0
+/* 80351E10 0034DA70 48 00 00 24 */ b lbl_80351E34
+lbl_80351E14:
+/* 80351E14 0034DA74 80 6D B0 D4 */ lwz r3, lbl_80640394-_SDA_BASE_(r13)
+/* 80351E18 0034DA78 7C 63 F0 2E */ lwzx r3, r3, r30
+/* 80351E1C 0034DA7C 80 03 00 00 */ lwz r0, 0(r3)
+/* 80351E20 0034DA80 2C 00 00 00 */ cmpwi r0, 0
+/* 80351E24 0034DA84 41 82 00 08 */ beq lbl_80351E2C
+/* 80351E28 0034DA88 4B FF FB FD */ bl ghiFreeConnection
+lbl_80351E2C:
+/* 80351E2C 0034DA8C 3B DE 00 04 */ addi r30, r30, 4
+/* 80351E30 0034DA90 3B FF 00 01 */ addi r31, r31, 1
+lbl_80351E34:
+/* 80351E34 0034DA94 80 0D B0 D0 */ lwz r0, lbl_80640390-_SDA_BASE_(r13)
+/* 80351E38 0034DA98 7C 1F 00 00 */ cmpw r31, r0
+/* 80351E3C 0034DA9C 41 80 FF D8 */ blt lbl_80351E14
+/* 80351E40 0034DAA0 4B FF F4 B1 */ bl ghiUnlock
+lbl_80351E44:
+/* 80351E44 0034DAA4 3B C0 00 00 */ li r30, 0
+/* 80351E48 0034DAA8 3B E0 00 00 */ li r31, 0
+/* 80351E4C 0034DAAC 48 00 00 18 */ b lbl_80351E64
+lbl_80351E50:
+/* 80351E50 0034DAB0 80 6D B0 D4 */ lwz r3, lbl_80640394-_SDA_BASE_(r13)
+/* 80351E54 0034DAB4 7C 63 F8 2E */ lwzx r3, r3, r31
+/* 80351E58 0034DAB8 4B FE 74 E1 */ bl gsifree
+/* 80351E5C 0034DABC 3B FF 00 04 */ addi r31, r31, 4
+/* 80351E60 0034DAC0 3B DE 00 01 */ addi r30, r30, 1
+lbl_80351E64:
+/* 80351E64 0034DAC4 80 0D B0 D0 */ lwz r0, lbl_80640390-_SDA_BASE_(r13)
+/* 80351E68 0034DAC8 7C 1E 00 00 */ cmpw r30, r0
+/* 80351E6C 0034DACC 41 80 FF E4 */ blt lbl_80351E50
+/* 80351E70 0034DAD0 80 6D B0 D4 */ lwz r3, lbl_80640394-_SDA_BASE_(r13)
+/* 80351E74 0034DAD4 4B FE 74 C5 */ bl gsifree
+/* 80351E78 0034DAD8 38 00 00 00 */ li r0, 0
+/* 80351E7C 0034DADC 90 0D B0 D4 */ stw r0, lbl_80640394-_SDA_BASE_(r13)
+/* 80351E80 0034DAE0 90 0D B0 D0 */ stw r0, lbl_80640390-_SDA_BASE_(r13)
+/* 80351E84 0034DAE4 90 0D B0 CC */ stw r0, lbl_8064038C-_SDA_BASE_(r13)
+lbl_80351E88:
+/* 80351E88 0034DAE8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80351E8C 0034DAEC 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80351E90 0034DAF0 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80351E94 0034DAF4 7C 08 03 A6 */ mtlr r0
+/* 80351E98 0034DAF8 38 21 00 10 */ addi r1, r1, 0x10
+/* 80351E9C 0034DAFC 4E 80 00 20 */ blr