summaryrefslogtreecommitdiff
path: root/asm/GameSpy/ghttpProcess.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/GameSpy/ghttpProcess.s')
-rw-r--r--asm/GameSpy/ghttpProcess.s1783
1 files changed, 1783 insertions, 0 deletions
diff --git a/asm/GameSpy/ghttpProcess.s b/asm/GameSpy/ghttpProcess.s
new file mode 100644
index 0000000..9322ac2
--- /dev/null
+++ b/asm/GameSpy/ghttpProcess.s
@@ -0,0 +1,1783 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global ghiParseURL
+ghiParseURL:
+/* 8035593C 0035159C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80355940 003515A0 7C 08 02 A6 */ mflr r0
+/* 80355944 003515A4 2C 03 00 00 */ cmpwi r3, 0
+/* 80355948 003515A8 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8035594C 003515AC 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80355950 003515B0 7C 7F 1B 78 */ mr r31, r3
+/* 80355954 003515B4 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80355958 003515B8 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8035595C 003515BC 93 81 00 10 */ stw r28, 0x10(r1)
+/* 80355960 003515C0 40 82 00 0C */ bne lbl_8035596C
+/* 80355964 003515C4 38 60 00 00 */ li r3, 0
+/* 80355968 003515C8 48 00 01 60 */ b lbl_80355AC8
+lbl_8035596C:
+/* 8035596C 003515CC 83 C3 00 14 */ lwz r30, 0x14(r3)
+/* 80355970 003515D0 2C 1E 00 00 */ cmpwi r30, 0
+/* 80355974 003515D4 40 82 00 0C */ bne lbl_80355980
+/* 80355978 003515D8 38 60 00 00 */ li r3, 0
+/* 8035597C 003515DC 48 00 01 4C */ b lbl_80355AC8
+lbl_80355980:
+/* 80355980 003515E0 7F C3 F3 78 */ mr r3, r30
+/* 80355984 003515E4 38 8D 93 D8 */ addi r4, r13, lbl_8063E698-_SDA_BASE_
+/* 80355988 003515E8 38 A0 00 07 */ li r5, 7
+/* 8035598C 003515EC 4B E7 8B DD */ bl func_801CE568
+/* 80355990 003515F0 2C 03 00 00 */ cmpwi r3, 0
+/* 80355994 003515F4 40 82 00 14 */ bne lbl_803559A8
+/* 80355998 003515F8 38 00 00 00 */ li r0, 0
+/* 8035599C 003515FC 3B BE 00 07 */ addi r29, r30, 7
+/* 803559A0 00351600 90 1F 00 28 */ stw r0, 0x28(r31)
+/* 803559A4 00351604 48 00 00 38 */ b lbl_803559DC
+lbl_803559A8:
+/* 803559A8 00351608 3C 80 80 45 */ lis r4, lbl_8044C238@ha
+/* 803559AC 0035160C 7F C3 F3 78 */ mr r3, r30
+/* 803559B0 00351610 38 84 C2 38 */ addi r4, r4, lbl_8044C238@l
+/* 803559B4 00351614 38 A0 00 08 */ li r5, 8
+/* 803559B8 00351618 4B E7 8B B1 */ bl func_801CE568
+/* 803559BC 0035161C 2C 03 00 00 */ cmpwi r3, 0
+/* 803559C0 00351620 40 82 00 14 */ bne lbl_803559D4
+/* 803559C4 00351624 38 00 00 01 */ li r0, 1
+/* 803559C8 00351628 3B BE 00 08 */ addi r29, r30, 8
+/* 803559CC 0035162C 90 1F 00 28 */ stw r0, 0x28(r31)
+/* 803559D0 00351630 48 00 00 0C */ b lbl_803559DC
+lbl_803559D4:
+/* 803559D4 00351634 38 60 00 00 */ li r3, 0
+/* 803559D8 00351638 48 00 00 F0 */ b lbl_80355AC8
+lbl_803559DC:
+/* 803559DC 0035163C 7F A3 EB 78 */ mr r3, r29
+/* 803559E0 00351640 38 8D 93 E0 */ addi r4, r13, lbl_8063E6A0-_SDA_BASE_
+/* 803559E4 00351644 4B E7 8B F5 */ bl func_801CE5D8
+/* 803559E8 00351648 7F 9D 18 AE */ lbzx r28, r29, r3
+/* 803559EC 0035164C 38 00 00 00 */ li r0, 0
+/* 803559F0 00351650 7C 7E 1B 78 */ mr r30, r3
+/* 803559F4 00351654 7C 1D 19 AE */ stbx r0, r29, r3
+/* 803559F8 00351658 7F A3 EB 78 */ mr r3, r29
+/* 803559FC 0035165C 4B FE 35 09 */ bl goastrdup
+/* 80355A00 00351660 2C 03 00 00 */ cmpwi r3, 0
+/* 80355A04 00351664 90 7F 00 18 */ stw r3, 0x18(r31)
+/* 80355A08 00351668 40 82 00 0C */ bne lbl_80355A14
+/* 80355A0C 0035166C 38 60 00 00 */ li r3, 0
+/* 80355A10 00351670 48 00 00 B8 */ b lbl_80355AC8
+lbl_80355A14:
+/* 80355A14 00351674 7F 9D F1 AE */ stbx r28, r29, r30
+/* 80355A18 00351678 7C 1D F0 EE */ lbzux r0, r29, r30
+/* 80355A1C 0035167C 2C 00 00 3A */ cmpwi r0, 0x3a
+/* 80355A20 00351680 40 82 00 3C */ bne lbl_80355A5C
+/* 80355A24 00351684 3B BD 00 01 */ addi r29, r29, 1
+/* 80355A28 00351688 7F A3 EB 78 */ mr r3, r29
+/* 80355A2C 0035168C 4B E7 AC E1 */ bl func_801D070C
+/* 80355A30 00351690 54 60 04 3F */ clrlwi. r0, r3, 0x10
+/* 80355A34 00351694 B0 7F 00 20 */ sth r3, 0x20(r31)
+/* 80355A38 00351698 40 82 00 0C */ bne lbl_80355A44
+/* 80355A3C 0035169C 38 60 00 00 */ li r3, 0
+/* 80355A40 003516A0 48 00 00 88 */ b lbl_80355AC8
+lbl_80355A44:
+/* 80355A44 003516A4 8C 1D 00 01 */ lbzu r0, 1(r29)
+/* 80355A48 003516A8 7C 00 07 75 */ extsb. r0, r0
+/* 80355A4C 003516AC 41 82 00 30 */ beq lbl_80355A7C
+/* 80355A50 003516B0 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 80355A54 003516B4 40 82 FF F0 */ bne lbl_80355A44
+/* 80355A58 003516B8 48 00 00 24 */ b lbl_80355A7C
+lbl_80355A5C:
+/* 80355A5C 003516BC 80 1F 00 28 */ lwz r0, 0x28(r31)
+/* 80355A60 003516C0 2C 00 00 01 */ cmpwi r0, 1
+/* 80355A64 003516C4 40 82 00 10 */ bne lbl_80355A74
+/* 80355A68 003516C8 38 00 01 BB */ li r0, 0x1bb
+/* 80355A6C 003516CC B0 1F 00 20 */ sth r0, 0x20(r31)
+/* 80355A70 003516D0 48 00 00 0C */ b lbl_80355A7C
+lbl_80355A74:
+/* 80355A74 003516D4 38 00 00 50 */ li r0, 0x50
+/* 80355A78 003516D8 B0 1F 00 20 */ sth r0, 0x20(r31)
+lbl_80355A7C:
+/* 80355A7C 003516DC 88 1D 00 00 */ lbz r0, 0(r29)
+/* 80355A80 003516E0 7C 00 07 75 */ extsb. r0, r0
+/* 80355A84 003516E4 40 82 00 08 */ bne lbl_80355A8C
+/* 80355A88 003516E8 3B AD 93 E4 */ addi r29, r13, lbl_8063E6A4-_SDA_BASE_
+lbl_80355A8C:
+/* 80355A8C 003516EC 7F A3 EB 78 */ mr r3, r29
+/* 80355A90 003516F0 4B FE 34 75 */ bl goastrdup
+/* 80355A94 003516F4 90 7F 00 24 */ stw r3, 0x24(r31)
+/* 80355A98 003516F8 3B C0 00 2B */ li r30, 0x2b
+/* 80355A9C 003516FC 48 00 00 08 */ b lbl_80355AA4
+lbl_80355AA0:
+/* 80355AA0 00351700 9B C3 00 00 */ stb r30, 0(r3)
+lbl_80355AA4:
+/* 80355AA4 00351704 83 BF 00 24 */ lwz r29, 0x24(r31)
+/* 80355AA8 00351708 38 80 00 20 */ li r4, 0x20
+/* 80355AAC 0035170C 7F A3 EB 78 */ mr r3, r29
+/* 80355AB0 00351710 4B E7 8A F9 */ bl func_801CE5A8
+/* 80355AB4 00351714 2C 03 00 00 */ cmpwi r3, 0
+/* 80355AB8 00351718 40 82 FF E8 */ bne lbl_80355AA0
+/* 80355ABC 0035171C 7C 1D 00 D0 */ neg r0, r29
+/* 80355AC0 00351720 7C 00 EB 78 */ or r0, r0, r29
+/* 80355AC4 00351724 54 03 0F FE */ srwi r3, r0, 0x1f
+lbl_80355AC8:
+/* 80355AC8 00351728 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80355ACC 0035172C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80355AD0 00351730 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80355AD4 00351734 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80355AD8 00351738 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 80355ADC 0035173C 7C 08 03 A6 */ mtlr r0
+/* 80355AE0 00351740 38 21 00 20 */ addi r1, r1, 0x20
+/* 80355AE4 00351744 4E 80 00 20 */ blr
+
+.global ghiDoSocketInit
+ghiDoSocketInit:
+/* 80355AE8 00351748 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80355AEC 0035174C 7C 08 02 A6 */ mflr r0
+/* 80355AF0 00351750 38 80 00 00 */ li r4, 0
+/* 80355AF4 00351754 38 A0 00 00 */ li r5, 0
+/* 80355AF8 00351758 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80355AFC 0035175C 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80355B00 00351760 7C 7F 1B 78 */ mr r31, r3
+/* 80355B04 00351764 4B FF B7 49 */ bl ghiCallProgressCallback
+/* 80355B08 00351768 4B FE 34 C9 */ bl SocketStartUp
+/* 80355B0C 0035176C 7F E3 FB 78 */ mr r3, r31
+/* 80355B10 00351770 4B FF FE 2D */ bl ghiParseURL
+/* 80355B14 00351774 2C 03 00 00 */ cmpwi r3, 0
+/* 80355B18 00351778 40 82 00 18 */ bne lbl_80355B30
+/* 80355B1C 0035177C 38 60 00 01 */ li r3, 1
+/* 80355B20 00351780 38 00 00 03 */ li r0, 3
+/* 80355B24 00351784 90 7F 01 20 */ stw r3, 0x120(r31)
+/* 80355B28 00351788 90 1F 00 3C */ stw r0, 0x3c(r31)
+/* 80355B2C 0035178C 48 00 00 64 */ b lbl_80355B90
+lbl_80355B30:
+/* 80355B30 00351790 80 7F 00 28 */ lwz r3, 0x28(r31)
+/* 80355B34 00351794 2C 03 00 01 */ cmpwi r3, 1
+/* 80355B38 00351798 40 82 00 20 */ bne lbl_80355B58
+/* 80355B3C 0035179C 80 1F 01 94 */ lwz r0, 0x194(r31)
+/* 80355B40 003517A0 2C 00 00 00 */ cmpwi r0, 0
+/* 80355B44 003517A4 40 82 00 14 */ bne lbl_80355B58
+/* 80355B48 003517A8 80 7F 00 04 */ lwz r3, 4(r31)
+/* 80355B4C 003517AC 38 80 00 01 */ li r4, 1
+/* 80355B50 003517B0 4B FF C3 51 */ bl ghttpSetRequestEncryptionEngine
+/* 80355B54 003517B4 48 00 00 24 */ b lbl_80355B78
+lbl_80355B58:
+/* 80355B58 003517B8 2C 03 00 01 */ cmpwi r3, 1
+/* 80355B5C 003517BC 41 82 00 1C */ beq lbl_80355B78
+/* 80355B60 003517C0 80 1F 01 94 */ lwz r0, 0x194(r31)
+/* 80355B64 003517C4 2C 00 00 00 */ cmpwi r0, 0
+/* 80355B68 003517C8 41 82 00 10 */ beq lbl_80355B78
+/* 80355B6C 003517CC 80 7F 00 04 */ lwz r3, 4(r31)
+/* 80355B70 003517D0 38 80 00 00 */ li r4, 0
+/* 80355B74 003517D4 4B FF C3 2D */ bl ghttpSetRequestEncryptionEngine
+lbl_80355B78:
+/* 80355B78 003517D8 38 00 00 01 */ li r0, 1
+/* 80355B7C 003517DC 7F E3 FB 78 */ mr r3, r31
+/* 80355B80 003517E0 90 1F 00 10 */ stw r0, 0x10(r31)
+/* 80355B84 003517E4 38 80 00 00 */ li r4, 0
+/* 80355B88 003517E8 38 A0 00 00 */ li r5, 0
+/* 80355B8C 003517EC 4B FF B6 C1 */ bl ghiCallProgressCallback
+lbl_80355B90:
+/* 80355B90 003517F0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80355B94 003517F4 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80355B98 003517F8 7C 08 03 A6 */ mtlr r0
+/* 80355B9C 003517FC 38 21 00 10 */ addi r1, r1, 0x10
+/* 80355BA0 00351800 4E 80 00 20 */ blr
+
+.global ghiDoHostLookup
+ghiDoHostLookup:
+/* 80355BA4 00351804 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80355BA8 00351808 7C 08 02 A6 */ mflr r0
+/* 80355BAC 0035180C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80355BB0 00351810 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80355BB4 00351814 93 C1 00 08 */ stw r30, 8(r1)
+/* 80355BB8 00351818 7C 7E 1B 78 */ mr r30, r3
+/* 80355BBC 0035181C 80 03 01 B0 */ lwz r0, 0x1b0(r3)
+/* 80355BC0 00351820 2C 00 00 00 */ cmpwi r0, 0
+/* 80355BC4 00351824 41 82 00 1C */ beq lbl_80355BE0
+/* 80355BC8 00351828 38 00 00 02 */ li r0, 2
+/* 80355BCC 0035182C 38 80 00 00 */ li r4, 0
+/* 80355BD0 00351830 90 03 00 10 */ stw r0, 0x10(r3)
+/* 80355BD4 00351834 38 A0 00 00 */ li r5, 0
+/* 80355BD8 00351838 4B FF B6 75 */ bl ghiCallProgressCallback
+/* 80355BDC 0035183C 48 00 00 B4 */ b lbl_80355C90
+lbl_80355BE0:
+/* 80355BE0 00351840 83 E3 01 88 */ lwz r31, 0x188(r3)
+/* 80355BE4 00351844 2C 1F 00 00 */ cmpwi r31, 0
+/* 80355BE8 00351848 41 82 00 08 */ beq lbl_80355BF0
+/* 80355BEC 0035184C 48 00 00 18 */ b lbl_80355C04
+lbl_80355BF0:
+/* 80355BF0 00351850 83 ED B0 C4 */ lwz r31, lbl_80640384-_SDA_BASE_(r13)
+/* 80355BF4 00351854 2C 1F 00 00 */ cmpwi r31, 0
+/* 80355BF8 00351858 41 82 00 08 */ beq lbl_80355C00
+/* 80355BFC 0035185C 48 00 00 08 */ b lbl_80355C04
+lbl_80355C00:
+/* 80355C00 00351860 83 E3 00 18 */ lwz r31, 0x18(r3)
+lbl_80355C04:
+/* 80355C04 00351864 7F E3 FB 78 */ mr r3, r31
+/* 80355C08 00351868 4B FE 23 69 */ bl inet_addr
+/* 80355C0C 0035186C 3C 03 00 01 */ addis r0, r3, 1
+/* 80355C10 00351870 90 7E 00 1C */ stw r3, 0x1c(r30)
+/* 80355C14 00351874 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80355C18 00351878 40 82 00 34 */ bne lbl_80355C4C
+/* 80355C1C 0035187C 7F E3 FB 78 */ mr r3, r31
+/* 80355C20 00351880 38 9E 01 B0 */ addi r4, r30, 0x1b0
+/* 80355C24 00351884 4B FE 2F F1 */ bl gsiStartResolvingHostname
+/* 80355C28 00351888 2C 03 FF FF */ cmpwi r3, -1
+/* 80355C2C 0035188C 40 82 00 20 */ bne lbl_80355C4C
+/* 80355C30 00351890 38 80 00 00 */ li r4, 0
+/* 80355C34 00351894 38 60 00 01 */ li r3, 1
+/* 80355C38 00351898 38 00 00 04 */ li r0, 4
+/* 80355C3C 0035189C 90 9E 01 B0 */ stw r4, 0x1b0(r30)
+/* 80355C40 003518A0 90 7E 01 20 */ stw r3, 0x120(r30)
+/* 80355C44 003518A4 90 1E 00 3C */ stw r0, 0x3c(r30)
+/* 80355C48 003518A8 48 00 00 48 */ b lbl_80355C90
+lbl_80355C4C:
+/* 80355C4C 003518AC 80 7E 00 1C */ lwz r3, 0x1c(r30)
+/* 80355C50 003518B0 3C 03 00 01 */ addis r0, r3, 1
+/* 80355C54 003518B4 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80355C58 003518B8 40 82 00 20 */ bne lbl_80355C78
+/* 80355C5C 003518BC 38 00 00 02 */ li r0, 2
+/* 80355C60 003518C0 7F C3 F3 78 */ mr r3, r30
+/* 80355C64 003518C4 90 1E 00 10 */ stw r0, 0x10(r30)
+/* 80355C68 003518C8 38 80 00 00 */ li r4, 0
+/* 80355C6C 003518CC 38 A0 00 00 */ li r5, 0
+/* 80355C70 003518D0 4B FF B5 DD */ bl ghiCallProgressCallback
+/* 80355C74 003518D4 48 00 00 1C */ b lbl_80355C90
+lbl_80355C78:
+/* 80355C78 003518D8 38 00 00 03 */ li r0, 3
+/* 80355C7C 003518DC 7F C3 F3 78 */ mr r3, r30
+/* 80355C80 003518E0 90 1E 00 10 */ stw r0, 0x10(r30)
+/* 80355C84 003518E4 38 80 00 00 */ li r4, 0
+/* 80355C88 003518E8 38 A0 00 00 */ li r5, 0
+/* 80355C8C 003518EC 4B FF B5 C1 */ bl ghiCallProgressCallback
+lbl_80355C90:
+/* 80355C90 003518F0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80355C94 003518F4 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80355C98 003518F8 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80355C9C 003518FC 7C 08 03 A6 */ mtlr r0
+/* 80355CA0 00351900 38 21 00 10 */ addi r1, r1, 0x10
+/* 80355CA4 00351904 4E 80 00 20 */ blr
+
+.global ghiDoLookupPending
+ghiDoLookupPending:
+/* 80355CA8 00351908 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80355CAC 0035190C 7C 08 02 A6 */ mflr r0
+/* 80355CB0 00351910 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80355CB4 00351914 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80355CB8 00351918 7C 7F 1B 78 */ mr r31, r3
+/* 80355CBC 0035191C 80 63 01 B0 */ lwz r3, 0x1b0(r3)
+/* 80355CC0 00351920 4B FE 31 51 */ bl gsiGetResolvedIP
+/* 80355CC4 00351924 3C 03 00 01 */ addis r0, r3, 1
+/* 80355CC8 00351928 90 7F 00 1C */ stw r3, 0x1c(r31)
+/* 80355CCC 0035192C 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80355CD0 00351930 40 82 00 20 */ bne lbl_80355CF0
+/* 80355CD4 00351934 38 80 00 00 */ li r4, 0
+/* 80355CD8 00351938 38 60 00 01 */ li r3, 1
+/* 80355CDC 0035193C 38 00 00 04 */ li r0, 4
+/* 80355CE0 00351940 90 9F 01 B0 */ stw r4, 0x1b0(r31)
+/* 80355CE4 00351944 90 7F 01 20 */ stw r3, 0x120(r31)
+/* 80355CE8 00351948 90 1F 00 3C */ stw r0, 0x3c(r31)
+/* 80355CEC 0035194C 48 00 00 48 */ b lbl_80355D34
+lbl_80355CF0:
+/* 80355CF0 00351950 2C 03 00 00 */ cmpwi r3, 0
+/* 80355CF4 00351954 40 82 00 20 */ bne lbl_80355D14
+/* 80355CF8 00351958 38 00 00 02 */ li r0, 2
+/* 80355CFC 0035195C 7F E3 FB 78 */ mr r3, r31
+/* 80355D00 00351960 90 1F 00 10 */ stw r0, 0x10(r31)
+/* 80355D04 00351964 38 80 00 00 */ li r4, 0
+/* 80355D08 00351968 38 A0 00 00 */ li r5, 0
+/* 80355D0C 0035196C 4B FF B5 41 */ bl ghiCallProgressCallback
+/* 80355D10 00351970 48 00 00 24 */ b lbl_80355D34
+lbl_80355D14:
+/* 80355D14 00351974 38 60 00 00 */ li r3, 0
+/* 80355D18 00351978 38 00 00 03 */ li r0, 3
+/* 80355D1C 0035197C 90 7F 01 B0 */ stw r3, 0x1b0(r31)
+/* 80355D20 00351980 7F E3 FB 78 */ mr r3, r31
+/* 80355D24 00351984 38 80 00 00 */ li r4, 0
+/* 80355D28 00351988 38 A0 00 00 */ li r5, 0
+/* 80355D2C 0035198C 90 1F 00 10 */ stw r0, 0x10(r31)
+/* 80355D30 00351990 4B FF B5 1D */ bl ghiCallProgressCallback
+lbl_80355D34:
+/* 80355D34 00351994 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80355D38 00351998 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80355D3C 0035199C 7C 08 03 A6 */ mtlr r0
+/* 80355D40 003519A0 38 21 00 10 */ addi r1, r1, 0x10
+/* 80355D44 003519A4 4E 80 00 20 */ blr
+
+.global ghiDoConnecting
+ghiDoConnecting:
+/* 80355D48 003519A8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80355D4C 003519AC 7C 08 02 A6 */ mflr r0
+/* 80355D50 003519B0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80355D54 003519B4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80355D58 003519B8 7C 7F 1B 78 */ mr r31, r3
+/* 80355D5C 003519BC 80 03 00 4C */ lwz r0, 0x4c(r3)
+/* 80355D60 003519C0 2C 00 FF FF */ cmpwi r0, -1
+/* 80355D64 003519C4 40 82 01 38 */ bne lbl_80355E9C
+/* 80355D68 003519C8 38 60 00 02 */ li r3, 2
+/* 80355D6C 003519CC 38 80 00 01 */ li r4, 1
+/* 80355D70 003519D0 38 A0 00 06 */ li r5, 6
+/* 80355D74 003519D4 4B FE 1E 51 */ bl socket
+/* 80355D78 003519D8 2C 03 FF FF */ cmpwi r3, -1
+/* 80355D7C 003519DC 90 7F 00 4C */ stw r3, 0x4c(r31)
+/* 80355D80 003519E0 40 82 00 20 */ bne lbl_80355DA0
+/* 80355D84 003519E4 38 80 00 01 */ li r4, 1
+/* 80355D88 003519E8 38 00 00 05 */ li r0, 5
+/* 80355D8C 003519EC 90 9F 01 20 */ stw r4, 0x120(r31)
+/* 80355D90 003519F0 90 1F 00 3C */ stw r0, 0x3c(r31)
+/* 80355D94 003519F4 4B FE 22 15 */ bl GOAGetLastError
+/* 80355D98 003519F8 90 7F 00 50 */ stw r3, 0x50(r31)
+/* 80355D9C 003519FC 48 00 01 A8 */ b lbl_80355F44
+lbl_80355DA0:
+/* 80355DA0 00351A00 38 80 00 00 */ li r4, 0
+/* 80355DA4 00351A04 4B FE 28 B1 */ bl SetSockBlocking
+/* 80355DA8 00351A08 2C 03 00 00 */ cmpwi r3, 0
+/* 80355DAC 00351A0C 40 82 00 24 */ bne lbl_80355DD0
+/* 80355DB0 00351A10 38 60 00 01 */ li r3, 1
+/* 80355DB4 00351A14 38 00 00 05 */ li r0, 5
+/* 80355DB8 00351A18 90 7F 01 20 */ stw r3, 0x120(r31)
+/* 80355DBC 00351A1C 80 7F 00 4C */ lwz r3, 0x4c(r31)
+/* 80355DC0 00351A20 90 1F 00 3C */ stw r0, 0x3c(r31)
+/* 80355DC4 00351A24 4B FE 21 E5 */ bl GOAGetLastError
+/* 80355DC8 00351A28 90 7F 00 50 */ stw r3, 0x50(r31)
+/* 80355DCC 00351A2C 48 00 01 78 */ b lbl_80355F44
+lbl_80355DD0:
+/* 80355DD0 00351A30 80 1F 01 58 */ lwz r0, 0x158(r31)
+/* 80355DD4 00351A34 2C 00 00 00 */ cmpwi r0, 0
+/* 80355DD8 00351A38 41 82 00 10 */ beq lbl_80355DE8
+/* 80355DDC 00351A3C 80 7F 00 4C */ lwz r3, 0x4c(r31)
+/* 80355DE0 00351A40 80 8D 93 90 */ lwz r4, lbl_8063E650-_SDA_BASE_(r13)
+/* 80355DE4 00351A44 4B FE 28 E9 */ bl SetReceiveBufferSize
+lbl_80355DE8:
+/* 80355DE8 00351A48 38 61 00 10 */ addi r3, r1, 0x10
+/* 80355DEC 00351A4C 38 80 00 00 */ li r4, 0
+/* 80355DF0 00351A50 38 A0 00 08 */ li r5, 8
+/* 80355DF4 00351A54 4B CA E3 11 */ bl memset
+/* 80355DF8 00351A58 38 00 00 02 */ li r0, 2
+/* 80355DFC 00351A5C 98 01 00 11 */ stb r0, 0x11(r1)
+/* 80355E00 00351A60 80 1F 01 88 */ lwz r0, 0x188(r31)
+/* 80355E04 00351A64 2C 00 00 00 */ cmpwi r0, 0
+/* 80355E08 00351A68 41 82 00 14 */ beq lbl_80355E1C
+/* 80355E0C 00351A6C A0 7F 01 8C */ lhz r3, 0x18c(r31)
+/* 80355E10 00351A70 4B FA 0F 6D */ bl func_802F6D7C
+/* 80355E14 00351A74 B0 61 00 12 */ sth r3, 0x12(r1)
+/* 80355E18 00351A78 48 00 00 2C */ b lbl_80355E44
+lbl_80355E1C:
+/* 80355E1C 00351A7C 80 0D B0 C4 */ lwz r0, lbl_80640384-_SDA_BASE_(r13)
+/* 80355E20 00351A80 2C 00 00 00 */ cmpwi r0, 0
+/* 80355E24 00351A84 41 82 00 14 */ beq lbl_80355E38
+/* 80355E28 00351A88 A0 6D B0 C0 */ lhz r3, lbl_80640380-_SDA_BASE_(r13)
+/* 80355E2C 00351A8C 4B FA 0F 51 */ bl func_802F6D7C
+/* 80355E30 00351A90 B0 61 00 12 */ sth r3, 0x12(r1)
+/* 80355E34 00351A94 48 00 00 10 */ b lbl_80355E44
+lbl_80355E38:
+/* 80355E38 00351A98 A0 7F 00 20 */ lhz r3, 0x20(r31)
+/* 80355E3C 00351A9C 4B FA 0F 41 */ bl func_802F6D7C
+/* 80355E40 00351AA0 B0 61 00 12 */ sth r3, 0x12(r1)
+lbl_80355E44:
+/* 80355E44 00351AA4 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 80355E48 00351AA8 38 81 00 10 */ addi r4, r1, 0x10
+/* 80355E4C 00351AAC 38 A0 00 08 */ li r5, 8
+/* 80355E50 00351AB0 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80355E54 00351AB4 80 7F 00 4C */ lwz r3, 0x4c(r31)
+/* 80355E58 00351AB8 4B FE 1E 85 */ bl connect
+/* 80355E5C 00351ABC 2C 03 FF FF */ cmpwi r3, -1
+/* 80355E60 00351AC0 40 82 00 3C */ bne lbl_80355E9C
+/* 80355E64 00351AC4 80 7F 00 4C */ lwz r3, 0x4c(r31)
+/* 80355E68 00351AC8 4B FE 21 41 */ bl GOAGetLastError
+/* 80355E6C 00351ACC 2C 03 FF FA */ cmpwi r3, -6
+/* 80355E70 00351AD0 41 82 00 2C */ beq lbl_80355E9C
+/* 80355E74 00351AD4 2C 03 FF E6 */ cmpwi r3, -26
+/* 80355E78 00351AD8 41 82 00 24 */ beq lbl_80355E9C
+/* 80355E7C 00351ADC 2C 03 FF B4 */ cmpwi r3, -76
+/* 80355E80 00351AE0 41 82 00 1C */ beq lbl_80355E9C
+/* 80355E84 00351AE4 38 80 00 01 */ li r4, 1
+/* 80355E88 00351AE8 38 00 00 06 */ li r0, 6
+/* 80355E8C 00351AEC 90 9F 01 20 */ stw r4, 0x120(r31)
+/* 80355E90 00351AF0 90 1F 00 3C */ stw r0, 0x3c(r31)
+/* 80355E94 00351AF4 90 7F 00 50 */ stw r3, 0x50(r31)
+/* 80355E98 00351AF8 48 00 00 AC */ b lbl_80355F44
+lbl_80355E9C:
+/* 80355E9C 00351AFC 80 7F 00 4C */ lwz r3, 0x4c(r31)
+/* 80355EA0 00351B00 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80355EA4 00351B04 38 C1 00 08 */ addi r6, r1, 8
+/* 80355EA8 00351B08 38 80 00 00 */ li r4, 0
+/* 80355EAC 00351B0C 4B FE 21 05 */ bl GSISocketSelect
+/* 80355EB0 00351B10 2C 03 FF FF */ cmpwi r3, -1
+/* 80355EB4 00351B14 41 82 00 18 */ beq lbl_80355ECC
+/* 80355EB8 00351B18 2C 03 00 01 */ cmpwi r3, 1
+/* 80355EBC 00351B1C 40 82 00 44 */ bne lbl_80355F00
+/* 80355EC0 00351B20 80 01 00 08 */ lwz r0, 8(r1)
+/* 80355EC4 00351B24 2C 00 00 00 */ cmpwi r0, 0
+/* 80355EC8 00351B28 41 82 00 38 */ beq lbl_80355F00
+lbl_80355ECC:
+/* 80355ECC 00351B2C 38 80 00 01 */ li r4, 1
+/* 80355ED0 00351B30 38 00 00 06 */ li r0, 6
+/* 80355ED4 00351B34 2C 03 FF FF */ cmpwi r3, -1
+/* 80355ED8 00351B38 90 9F 01 20 */ stw r4, 0x120(r31)
+/* 80355EDC 00351B3C 90 1F 00 3C */ stw r0, 0x3c(r31)
+/* 80355EE0 00351B40 40 82 00 14 */ bne lbl_80355EF4
+/* 80355EE4 00351B44 80 7F 00 4C */ lwz r3, 0x4c(r31)
+/* 80355EE8 00351B48 4B FE 20 C1 */ bl GOAGetLastError
+/* 80355EEC 00351B4C 90 7F 00 50 */ stw r3, 0x50(r31)
+/* 80355EF0 00351B50 48 00 00 54 */ b lbl_80355F44
+lbl_80355EF4:
+/* 80355EF4 00351B54 38 00 00 00 */ li r0, 0
+/* 80355EF8 00351B58 90 1F 00 50 */ stw r0, 0x50(r31)
+/* 80355EFC 00351B5C 48 00 00 48 */ b lbl_80355F44
+lbl_80355F00:
+/* 80355F00 00351B60 2C 03 00 01 */ cmpwi r3, 1
+/* 80355F04 00351B64 40 82 00 40 */ bne lbl_80355F44
+/* 80355F08 00351B68 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 80355F0C 00351B6C 2C 00 00 00 */ cmpwi r0, 0
+/* 80355F10 00351B70 41 82 00 34 */ beq lbl_80355F44
+/* 80355F14 00351B74 80 1F 01 94 */ lwz r0, 0x194(r31)
+/* 80355F18 00351B78 2C 00 00 00 */ cmpwi r0, 0
+/* 80355F1C 00351B7C 40 82 00 10 */ bne lbl_80355F2C
+/* 80355F20 00351B80 38 00 00 05 */ li r0, 5
+/* 80355F24 00351B84 90 1F 00 10 */ stw r0, 0x10(r31)
+/* 80355F28 00351B88 48 00 00 0C */ b lbl_80355F34
+lbl_80355F2C:
+/* 80355F2C 00351B8C 38 00 00 04 */ li r0, 4
+/* 80355F30 00351B90 90 1F 00 10 */ stw r0, 0x10(r31)
+lbl_80355F34:
+/* 80355F34 00351B94 7F E3 FB 78 */ mr r3, r31
+/* 80355F38 00351B98 38 80 00 00 */ li r4, 0
+/* 80355F3C 00351B9C 38 A0 00 00 */ li r5, 0
+/* 80355F40 00351BA0 4B FF B3 0D */ bl ghiCallProgressCallback
+lbl_80355F44:
+/* 80355F44 00351BA4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80355F48 00351BA8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80355F4C 00351BAC 7C 08 03 A6 */ mtlr r0
+/* 80355F50 00351BB0 38 21 00 20 */ addi r1, r1, 0x20
+/* 80355F54 00351BB4 4E 80 00 20 */ blr
+
+.global ghiDoSecuringSession
+ghiDoSecuringSession:
+/* 80355F58 00351BB8 94 21 FB E0 */ stwu r1, -0x420(r1)
+/* 80355F5C 00351BBC 7C 08 02 A6 */ mflr r0
+/* 80355F60 00351BC0 90 01 04 24 */ stw r0, 0x424(r1)
+/* 80355F64 00351BC4 93 E1 04 1C */ stw r31, 0x41c(r1)
+/* 80355F68 00351BC8 7C 7F 1B 78 */ mr r31, r3
+/* 80355F6C 00351BCC 80 03 01 98 */ lwz r0, 0x198(r3)
+/* 80355F70 00351BD0 2C 00 00 00 */ cmpwi r0, 0
+/* 80355F74 00351BD4 40 82 00 30 */ bne lbl_80355FA4
+/* 80355F78 00351BD8 81 83 01 A0 */ lwz r12, 0x1a0(r3)
+/* 80355F7C 00351BDC 38 83 01 90 */ addi r4, r3, 0x190
+/* 80355F80 00351BE0 7D 89 03 A6 */ mtctr r12
+/* 80355F84 00351BE4 4E 80 04 21 */ bctrl
+/* 80355F88 00351BE8 2C 03 00 03 */ cmpwi r3, 3
+/* 80355F8C 00351BEC 40 82 00 18 */ bne lbl_80355FA4
+/* 80355F90 00351BF0 38 60 00 01 */ li r3, 1
+/* 80355F94 00351BF4 38 00 00 11 */ li r0, 0x11
+/* 80355F98 00351BF8 90 7F 01 20 */ stw r3, 0x120(r31)
+/* 80355F9C 00351BFC 90 1F 00 3C */ stw r0, 0x3c(r31)
+/* 80355FA0 00351C00 48 00 00 DC */ b lbl_8035607C
+lbl_80355FA4:
+/* 80355FA4 00351C04 80 7F 00 64 */ lwz r3, 0x64(r31)
+/* 80355FA8 00351C08 80 1F 00 60 */ lwz r0, 0x60(r31)
+/* 80355FAC 00351C0C 7C 03 00 00 */ cmpw r3, r0
+/* 80355FB0 00351C10 40 80 00 2C */ bge lbl_80355FDC
+/* 80355FB4 00351C14 7F E3 FB 78 */ mr r3, r31
+/* 80355FB8 00351C18 4B FF B0 9D */ bl ghiSendBufferedData
+/* 80355FBC 00351C1C 2C 03 00 00 */ cmpwi r3, 0
+/* 80355FC0 00351C20 41 82 00 BC */ beq lbl_8035607C
+/* 80355FC4 00351C24 80 7F 00 64 */ lwz r3, 0x64(r31)
+/* 80355FC8 00351C28 80 1F 00 60 */ lwz r0, 0x60(r31)
+/* 80355FCC 00351C2C 7C 03 00 00 */ cmpw r3, r0
+/* 80355FD0 00351C30 41 80 00 AC */ blt lbl_8035607C
+/* 80355FD4 00351C34 38 7F 00 54 */ addi r3, r31, 0x54
+/* 80355FD8 00351C38 4B FF B0 59 */ bl ghiResetBuffer
+lbl_80355FDC:
+/* 80355FDC 00351C3C 38 00 04 01 */ li r0, 0x401
+/* 80355FE0 00351C40 7F E3 FB 78 */ mr r3, r31
+/* 80355FE4 00351C44 90 01 00 08 */ stw r0, 8(r1)
+/* 80355FE8 00351C48 38 81 00 0C */ addi r4, r1, 0xc
+/* 80355FEC 00351C4C 38 A1 00 08 */ addi r5, r1, 8
+/* 80355FF0 00351C50 4B FF B4 55 */ bl ghiDoReceive
+/* 80355FF4 00351C54 38 03 FF FE */ addi r0, r3, -2
+/* 80355FF8 00351C58 28 00 00 01 */ cmplwi r0, 1
+/* 80355FFC 00351C5C 41 81 00 18 */ bgt lbl_80356014
+/* 80356000 00351C60 38 60 00 01 */ li r3, 1
+/* 80356004 00351C64 38 00 00 11 */ li r0, 0x11
+/* 80356008 00351C68 90 7F 01 20 */ stw r3, 0x120(r31)
+/* 8035600C 00351C6C 90 1F 00 3C */ stw r0, 0x3c(r31)
+/* 80356010 00351C70 48 00 00 6C */ b lbl_8035607C
+lbl_80356014:
+/* 80356014 00351C74 2C 03 00 00 */ cmpwi r3, 0
+/* 80356018 00351C78 40 82 00 64 */ bne lbl_8035607C
+/* 8035601C 00351C7C 80 A1 00 08 */ lwz r5, 8(r1)
+/* 80356020 00351C80 38 7F 00 C0 */ addi r3, r31, 0xc0
+/* 80356024 00351C84 38 81 00 0C */ addi r4, r1, 0xc
+/* 80356028 00351C88 4B FF AA 95 */ bl ghiAppendDataToBuffer
+/* 8035602C 00351C8C 2C 03 00 00 */ cmpwi r3, 0
+/* 80356030 00351C90 41 82 00 4C */ beq lbl_8035607C
+/* 80356034 00351C94 7F E3 FB 78 */ mr r3, r31
+/* 80356038 00351C98 4B FF B2 BD */ bl ghiDecryptReceivedData
+/* 8035603C 00351C9C 2C 03 00 00 */ cmpwi r3, 0
+/* 80356040 00351CA0 40 82 00 18 */ bne lbl_80356058
+/* 80356044 00351CA4 38 60 00 01 */ li r3, 1
+/* 80356048 00351CA8 38 00 00 11 */ li r0, 0x11
+/* 8035604C 00351CAC 90 7F 01 20 */ stw r3, 0x120(r31)
+/* 80356050 00351CB0 90 1F 00 3C */ stw r0, 0x3c(r31)
+/* 80356054 00351CB4 48 00 00 28 */ b lbl_8035607C
+lbl_80356058:
+/* 80356058 00351CB8 80 1F 01 9C */ lwz r0, 0x19c(r31)
+/* 8035605C 00351CBC 2C 00 00 00 */ cmpwi r0, 0
+/* 80356060 00351CC0 41 82 00 1C */ beq lbl_8035607C
+/* 80356064 00351CC4 38 00 00 05 */ li r0, 5
+/* 80356068 00351CC8 7F E3 FB 78 */ mr r3, r31
+/* 8035606C 00351CCC 90 1F 00 10 */ stw r0, 0x10(r31)
+/* 80356070 00351CD0 38 80 00 00 */ li r4, 0
+/* 80356074 00351CD4 38 A0 00 00 */ li r5, 0
+/* 80356078 00351CD8 4B FF B1 D5 */ bl ghiCallProgressCallback
+lbl_8035607C:
+/* 8035607C 00351CDC 80 01 04 24 */ lwz r0, 0x424(r1)
+/* 80356080 00351CE0 83 E1 04 1C */ lwz r31, 0x41c(r1)
+/* 80356084 00351CE4 7C 08 03 A6 */ mtlr r0
+/* 80356088 00351CE8 38 21 04 20 */ addi r1, r1, 0x420
+/* 8035608C 00351CEC 4E 80 00 20 */ blr
+
+.global ghiDoSendingRequest
+ghiDoSendingRequest:
+/* 80356090 00351CF0 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80356094 00351CF4 7C 08 02 A6 */ mflr r0
+/* 80356098 00351CF8 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8035609C 00351CFC 93 E1 00 2C */ stw r31, 0x2c(r1)
+/* 803560A0 00351D00 7C 7F 1B 78 */ mr r31, r3
+/* 803560A4 00351D04 93 C1 00 28 */ stw r30, 0x28(r1)
+/* 803560A8 00351D08 3F C0 80 45 */ lis r30, lbl_8044C238@ha
+/* 803560AC 00351D0C 3B DE C2 38 */ addi r30, r30, lbl_8044C238@l
+/* 803560B0 00351D10 93 A1 00 24 */ stw r29, 0x24(r1)
+/* 803560B4 00351D14 80 03 00 60 */ lwz r0, 0x60(r3)
+/* 803560B8 00351D18 2C 00 00 00 */ cmpwi r0, 0
+/* 803560BC 00351D1C 40 82 02 28 */ bne lbl_803562E4
+/* 803560C0 00351D20 80 03 01 94 */ lwz r0, 0x194(r3)
+/* 803560C4 00351D24 2C 00 00 00 */ cmpwi r0, 0
+/* 803560C8 00351D28 40 82 00 0C */ bne lbl_803560D4
+/* 803560CC 00351D2C 3B A3 00 54 */ addi r29, r3, 0x54
+/* 803560D0 00351D30 48 00 00 08 */ b lbl_803560D8
+lbl_803560D4:
+/* 803560D4 00351D34 3B A3 00 78 */ addi r29, r3, 0x78
+lbl_803560D8:
+/* 803560D8 00351D38 80 03 01 60 */ lwz r0, 0x160(r3)
+/* 803560DC 00351D3C 2C 00 00 00 */ cmpwi r0, 0
+/* 803560E0 00351D40 41 82 00 18 */ beq lbl_803560F8
+/* 803560E4 00351D44 80 03 01 80 */ lwz r0, 0x180(r3)
+/* 803560E8 00351D48 2C 00 00 00 */ cmpwi r0, 0
+/* 803560EC 00351D4C 40 82 00 0C */ bne lbl_803560F8
+/* 803560F0 00351D50 38 8D 93 E8 */ addi r4, r13, lbl_8063E6A8-_SDA_BASE_
+/* 803560F4 00351D54 48 00 00 18 */ b lbl_8035610C
+lbl_803560F8:
+/* 803560F8 00351D58 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 803560FC 00351D5C 38 8D 93 F8 */ addi r4, r13, lbl_8063E6B8-_SDA_BASE_
+/* 80356100 00351D60 2C 00 00 03 */ cmpwi r0, 3
+/* 80356104 00351D64 40 82 00 08 */ bne lbl_8035610C
+/* 80356108 00351D68 38 8D 93 F0 */ addi r4, r13, lbl_8063E6B0-_SDA_BASE_
+lbl_8035610C:
+/* 8035610C 00351D6C 7F A3 EB 78 */ mr r3, r29
+/* 80356110 00351D70 38 A0 00 00 */ li r5, 0
+/* 80356114 00351D74 4B FF A9 A9 */ bl ghiAppendDataToBuffer
+/* 80356118 00351D78 80 1F 01 88 */ lwz r0, 0x188(r31)
+/* 8035611C 00351D7C 2C 00 00 00 */ cmpwi r0, 0
+/* 80356120 00351D80 40 82 00 10 */ bne lbl_80356130
+/* 80356124 00351D84 80 0D B0 C4 */ lwz r0, lbl_80640384-_SDA_BASE_(r13)
+/* 80356128 00351D88 2C 00 00 00 */ cmpwi r0, 0
+/* 8035612C 00351D8C 41 82 00 18 */ beq lbl_80356144
+lbl_80356130:
+/* 80356130 00351D90 80 9F 00 14 */ lwz r4, 0x14(r31)
+/* 80356134 00351D94 7F A3 EB 78 */ mr r3, r29
+/* 80356138 00351D98 38 A0 00 00 */ li r5, 0
+/* 8035613C 00351D9C 4B FF A9 81 */ bl ghiAppendDataToBuffer
+/* 80356140 00351DA0 48 00 00 14 */ b lbl_80356154
+lbl_80356144:
+/* 80356144 00351DA4 80 9F 00 24 */ lwz r4, 0x24(r31)
+/* 80356148 00351DA8 7F A3 EB 78 */ mr r3, r29
+/* 8035614C 00351DAC 38 A0 00 00 */ li r5, 0
+/* 80356150 00351DB0 4B FF A9 6D */ bl ghiAppendDataToBuffer
+lbl_80356154:
+/* 80356154 00351DB4 7F A3 EB 78 */ mr r3, r29
+/* 80356158 00351DB8 38 9E 00 0C */ addi r4, r30, 0xc
+/* 8035615C 00351DBC 38 A0 00 00 */ li r5, 0
+/* 80356160 00351DC0 4B FF A9 5D */ bl ghiAppendDataToBuffer
+/* 80356164 00351DC4 A0 1F 00 20 */ lhz r0, 0x20(r31)
+/* 80356168 00351DC8 28 00 00 50 */ cmplwi r0, 0x50
+/* 8035616C 00351DCC 40 82 00 18 */ bne lbl_80356184
+/* 80356170 00351DD0 80 BF 00 18 */ lwz r5, 0x18(r31)
+/* 80356174 00351DD4 7F A3 EB 78 */ mr r3, r29
+/* 80356178 00351DD8 38 8D 94 00 */ addi r4, r13, lbl_8063E6C0-_SDA_BASE_
+/* 8035617C 00351DDC 4B FF AC 89 */ bl ghiAppendHeaderToBuffer
+/* 80356180 00351DE0 48 00 00 4C */ b lbl_803561CC
+lbl_80356184:
+/* 80356184 00351DE4 7F A3 EB 78 */ mr r3, r29
+/* 80356188 00351DE8 38 8D 94 08 */ addi r4, r13, lbl_8063E6C8-_SDA_BASE_
+/* 8035618C 00351DEC 38 A0 00 00 */ li r5, 0
+/* 80356190 00351DF0 4B FF A9 2D */ bl ghiAppendDataToBuffer
+/* 80356194 00351DF4 80 9F 00 18 */ lwz r4, 0x18(r31)
+/* 80356198 00351DF8 7F A3 EB 78 */ mr r3, r29
+/* 8035619C 00351DFC 38 A0 00 00 */ li r5, 0
+/* 803561A0 00351E00 4B FF A9 1D */ bl ghiAppendDataToBuffer
+/* 803561A4 00351E04 7F A3 EB 78 */ mr r3, r29
+/* 803561A8 00351E08 38 80 00 3A */ li r4, 0x3a
+/* 803561AC 00351E0C 4B FF AD 01 */ bl ghiAppendCharToBuffer
+/* 803561B0 00351E10 A0 9F 00 20 */ lhz r4, 0x20(r31)
+/* 803561B4 00351E14 7F A3 EB 78 */ mr r3, r29
+/* 803561B8 00351E18 4B FF AE 2D */ bl ghiAppendIntToBuffer
+/* 803561BC 00351E1C 7F A3 EB 78 */ mr r3, r29
+/* 803561C0 00351E20 38 8D 94 10 */ addi r4, r13, lbl_8063E6D0-_SDA_BASE_
+/* 803561C4 00351E24 38 A0 00 02 */ li r5, 2
+/* 803561C8 00351E28 4B FF A8 F5 */ bl ghiAppendDataToBuffer
+lbl_803561CC:
+/* 803561CC 00351E2C 80 7F 00 2C */ lwz r3, 0x2c(r31)
+/* 803561D0 00351E30 2C 03 00 00 */ cmpwi r3, 0
+/* 803561D4 00351E34 41 82 00 14 */ beq lbl_803561E8
+/* 803561D8 00351E38 38 9E 00 18 */ addi r4, r30, 0x18
+/* 803561DC 00351E3C 4B E7 85 C5 */ bl func_801CE7A0
+/* 803561E0 00351E40 2C 03 00 00 */ cmpwi r3, 0
+/* 803561E4 00351E44 40 82 00 14 */ bne lbl_803561F8
+lbl_803561E8:
+/* 803561E8 00351E48 7F A3 EB 78 */ mr r3, r29
+/* 803561EC 00351E4C 38 9E 00 18 */ addi r4, r30, 0x18
+/* 803561F0 00351E50 38 BE 00 28 */ addi r5, r30, 0x28
+/* 803561F4 00351E54 4B FF AC 11 */ bl ghiAppendHeaderToBuffer
+lbl_803561F8:
+/* 803561F8 00351E58 80 1F 00 38 */ lwz r0, 0x38(r31)
+/* 803561FC 00351E5C 2C 00 00 00 */ cmpwi r0, 0
+/* 80356200 00351E60 41 82 00 18 */ beq lbl_80356218
+/* 80356204 00351E64 7F A3 EB 78 */ mr r3, r29
+/* 80356208 00351E68 38 9E 00 38 */ addi r4, r30, 0x38
+/* 8035620C 00351E6C 38 BE 00 44 */ addi r5, r30, 0x44
+/* 80356210 00351E70 4B FF AB F5 */ bl ghiAppendHeaderToBuffer
+/* 80356214 00351E74 48 00 00 14 */ b lbl_80356228
+lbl_80356218:
+/* 80356218 00351E78 7F A3 EB 78 */ mr r3, r29
+/* 8035621C 00351E7C 38 9E 00 38 */ addi r4, r30, 0x38
+/* 80356220 00351E80 38 AD 94 14 */ addi r5, r13, lbl_8063E6D4-_SDA_BASE_
+/* 80356224 00351E84 4B FF AB E1 */ bl ghiAppendHeaderToBuffer
+lbl_80356228:
+/* 80356228 00351E88 80 1F 01 60 */ lwz r0, 0x160(r31)
+/* 8035622C 00351E8C 2C 00 00 00 */ cmpwi r0, 0
+/* 80356230 00351E90 41 82 00 4C */ beq lbl_8035627C
+/* 80356234 00351E94 80 1F 01 80 */ lwz r0, 0x180(r31)
+/* 80356238 00351E98 2C 00 00 00 */ cmpwi r0, 0
+/* 8035623C 00351E9C 40 82 00 40 */ bne lbl_8035627C
+/* 80356240 00351EA0 80 BF 01 70 */ lwz r5, 0x170(r31)
+/* 80356244 00351EA4 38 61 00 08 */ addi r3, r1, 8
+/* 80356248 00351EA8 38 8D 94 1C */ addi r4, r13, lbl_8063E6DC-_SDA_BASE_
+/* 8035624C 00351EAC 4C C6 31 82 */ crclr 6
+/* 80356250 00351EB0 4B E7 68 AD */ bl func_801CCAFC
+/* 80356254 00351EB4 7F A3 EB 78 */ mr r3, r29
+/* 80356258 00351EB8 38 9E 00 50 */ addi r4, r30, 0x50
+/* 8035625C 00351EBC 38 A1 00 08 */ addi r5, r1, 8
+/* 80356260 00351EC0 4B FF AB A5 */ bl ghiAppendHeaderToBuffer
+/* 80356264 00351EC4 7F E3 FB 78 */ mr r3, r31
+/* 80356268 00351EC8 4B FF E0 19 */ bl ghiPostGetContentType
+/* 8035626C 00351ECC 7C 65 1B 78 */ mr r5, r3
+/* 80356270 00351ED0 7F A3 EB 78 */ mr r3, r29
+/* 80356274 00351ED4 38 9E 00 60 */ addi r4, r30, 0x60
+/* 80356278 00351ED8 4B FF AB 8D */ bl ghiAppendHeaderToBuffer
+lbl_8035627C:
+/* 8035627C 00351EDC 80 9F 00 2C */ lwz r4, 0x2c(r31)
+/* 80356280 00351EE0 2C 04 00 00 */ cmpwi r4, 0
+/* 80356284 00351EE4 41 82 00 10 */ beq lbl_80356294
+/* 80356288 00351EE8 7F A3 EB 78 */ mr r3, r29
+/* 8035628C 00351EEC 38 A0 00 00 */ li r5, 0
+/* 80356290 00351EF0 4B FF A8 2D */ bl ghiAppendDataToBuffer
+lbl_80356294:
+/* 80356294 00351EF4 7F A3 EB 78 */ mr r3, r29
+/* 80356298 00351EF8 38 8D 94 10 */ addi r4, r13, lbl_8063E6D0-_SDA_BASE_
+/* 8035629C 00351EFC 38 A0 00 02 */ li r5, 2
+/* 803562A0 00351F00 4B FF A8 1D */ bl ghiAppendDataToBuffer
+/* 803562A4 00351F04 80 1F 01 94 */ lwz r0, 0x194(r31)
+/* 803562A8 00351F08 2C 00 00 00 */ cmpwi r0, 0
+/* 803562AC 00351F0C 41 82 00 38 */ beq lbl_803562E4
+/* 803562B0 00351F10 80 9D 00 04 */ lwz r4, 4(r29)
+/* 803562B4 00351F14 38 7F 00 54 */ addi r3, r31, 0x54
+/* 803562B8 00351F18 80 BD 00 0C */ lwz r5, 0xc(r29)
+/* 803562BC 00351F1C 4B FF A9 71 */ bl ghiEncryptDataToBuffer
+/* 803562C0 00351F20 2C 03 00 00 */ cmpwi r3, 0
+/* 803562C4 00351F24 40 82 00 18 */ bne lbl_803562DC
+/* 803562C8 00351F28 38 60 00 01 */ li r3, 1
+/* 803562CC 00351F2C 38 00 00 11 */ li r0, 0x11
+/* 803562D0 00351F30 90 7F 01 20 */ stw r3, 0x120(r31)
+/* 803562D4 00351F34 90 1F 00 3C */ stw r0, 0x3c(r31)
+/* 803562D8 00351F38 48 00 00 70 */ b lbl_80356348
+lbl_803562DC:
+/* 803562DC 00351F3C 7F A3 EB 78 */ mr r3, r29
+/* 803562E0 00351F40 4B FF AD 51 */ bl ghiResetBuffer
+lbl_803562E4:
+/* 803562E4 00351F44 7F E3 FB 78 */ mr r3, r31
+/* 803562E8 00351F48 4B FF AD 6D */ bl ghiSendBufferedData
+/* 803562EC 00351F4C 2C 03 00 00 */ cmpwi r3, 0
+/* 803562F0 00351F50 41 82 00 58 */ beq lbl_80356348
+/* 803562F4 00351F54 80 7F 00 64 */ lwz r3, 0x64(r31)
+/* 803562F8 00351F58 80 1F 00 60 */ lwz r0, 0x60(r31)
+/* 803562FC 00351F5C 7C 03 00 00 */ cmpw r3, r0
+/* 80356300 00351F60 41 80 00 48 */ blt lbl_80356348
+/* 80356304 00351F64 38 7F 00 54 */ addi r3, r31, 0x54
+/* 80356308 00351F68 4B FF AD 29 */ bl ghiResetBuffer
+/* 8035630C 00351F6C 80 1F 01 60 */ lwz r0, 0x160(r31)
+/* 80356310 00351F70 2C 00 00 00 */ cmpwi r0, 0
+/* 80356314 00351F74 41 82 00 1C */ beq lbl_80356330
+/* 80356318 00351F78 80 1F 01 80 */ lwz r0, 0x180(r31)
+/* 8035631C 00351F7C 2C 00 00 00 */ cmpwi r0, 0
+/* 80356320 00351F80 40 82 00 10 */ bne lbl_80356330
+/* 80356324 00351F84 38 00 00 06 */ li r0, 6
+/* 80356328 00351F88 90 1F 00 10 */ stw r0, 0x10(r31)
+/* 8035632C 00351F8C 48 00 00 0C */ b lbl_80356338
+lbl_80356330:
+/* 80356330 00351F90 38 00 00 07 */ li r0, 7
+/* 80356334 00351F94 90 1F 00 10 */ stw r0, 0x10(r31)
+lbl_80356338:
+/* 80356338 00351F98 7F E3 FB 78 */ mr r3, r31
+/* 8035633C 00351F9C 38 80 00 00 */ li r4, 0
+/* 80356340 00351FA0 38 A0 00 00 */ li r5, 0
+/* 80356344 00351FA4 4B FF AF 09 */ bl ghiCallProgressCallback
+lbl_80356348:
+/* 80356348 00351FA8 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8035634C 00351FAC 83 E1 00 2C */ lwz r31, 0x2c(r1)
+/* 80356350 00351FB0 83 C1 00 28 */ lwz r30, 0x28(r1)
+/* 80356354 00351FB4 83 A1 00 24 */ lwz r29, 0x24(r1)
+/* 80356358 00351FB8 7C 08 03 A6 */ mtlr r0
+/* 8035635C 00351FBC 38 21 00 30 */ addi r1, r1, 0x30
+/* 80356360 00351FC0 4E 80 00 20 */ blr
+
+.global ghiDoPosting
+ghiDoPosting:
+/* 80356364 00351FC4 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80356368 00351FC8 7C 08 02 A6 */ mflr r0
+/* 8035636C 00351FCC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80356370 00351FD0 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80356374 00351FD4 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80356378 00351FD8 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8035637C 00351FDC 7C 7D 1B 78 */ mr r29, r3
+/* 80356380 00351FE0 83 C3 01 6C */ lwz r30, 0x16c(r3)
+/* 80356384 00351FE4 4B FF F3 6D */ bl ghiPostDoPosting
+/* 80356388 00351FE8 2C 03 00 00 */ cmpwi r3, 0
+/* 8035638C 00351FEC 7C 7F 1B 78 */ mr r31, r3
+/* 80356390 00351FF0 40 82 00 58 */ bne lbl_803563E8
+/* 80356394 00351FF4 38 00 00 00 */ li r0, 0
+/* 80356398 00351FF8 7F A3 EB 78 */ mr r3, r29
+/* 8035639C 00351FFC 90 01 00 08 */ stw r0, 8(r1)
+/* 803563A0 00352000 4B FF E5 ED */ bl ghiPostCleanupState
+/* 803563A4 00352004 80 7D 00 4C */ lwz r3, 0x4c(r29)
+/* 803563A8 00352008 38 81 00 08 */ addi r4, r1, 8
+/* 803563AC 0035200C 38 A0 00 00 */ li r5, 0
+/* 803563B0 00352010 38 C0 00 00 */ li r6, 0
+/* 803563B4 00352014 4B FE 1B FD */ bl GSISocketSelect
+/* 803563B8 00352018 2C 03 00 01 */ cmpwi r3, 1
+/* 803563BC 0035201C 40 82 00 84 */ bne lbl_80356440
+/* 803563C0 00352020 80 01 00 08 */ lwz r0, 8(r1)
+/* 803563C4 00352024 2C 00 00 00 */ cmpwi r0, 0
+/* 803563C8 00352028 41 82 00 78 */ beq lbl_80356440
+/* 803563CC 0035202C 38 00 00 08 */ li r0, 8
+/* 803563D0 00352030 7F A3 EB 78 */ mr r3, r29
+/* 803563D4 00352034 90 1D 00 10 */ stw r0, 0x10(r29)
+/* 803563D8 00352038 38 80 00 00 */ li r4, 0
+/* 803563DC 0035203C 38 A0 00 00 */ li r5, 0
+/* 803563E0 00352040 4B FF AE 6D */ bl ghiCallProgressCallback
+/* 803563E4 00352044 48 00 00 5C */ b lbl_80356440
+lbl_803563E8:
+/* 803563E8 00352048 2C 03 00 03 */ cmpwi r3, 3
+/* 803563EC 0035204C 40 82 00 10 */ bne lbl_803563FC
+/* 803563F0 00352050 38 00 00 00 */ li r0, 0
+/* 803563F4 00352054 90 1D 01 7C */ stw r0, 0x17c(r29)
+/* 803563F8 00352058 48 00 00 48 */ b lbl_80356440
+lbl_803563FC:
+/* 803563FC 0035205C 80 1D 01 6C */ lwz r0, 0x16c(r29)
+/* 80356400 00352060 7C 1E 00 00 */ cmpw r30, r0
+/* 80356404 00352064 41 82 00 0C */ beq lbl_80356410
+/* 80356408 00352068 7F A3 EB 78 */ mr r3, r29
+/* 8035640C 0035206C 4B FF AE 79 */ bl ghiCallPostCallback
+lbl_80356410:
+/* 80356410 00352070 2C 1F 00 01 */ cmpwi r31, 1
+/* 80356414 00352074 40 82 00 2C */ bne lbl_80356440
+/* 80356418 00352078 7F A3 EB 78 */ mr r3, r29
+/* 8035641C 0035207C 4B FF E5 71 */ bl ghiPostCleanupState
+/* 80356420 00352080 38 60 00 01 */ li r3, 1
+/* 80356424 00352084 38 00 00 07 */ li r0, 7
+/* 80356428 00352088 90 7D 01 80 */ stw r3, 0x180(r29)
+/* 8035642C 0035208C 7F A3 EB 78 */ mr r3, r29
+/* 80356430 00352090 38 80 00 00 */ li r4, 0
+/* 80356434 00352094 38 A0 00 00 */ li r5, 0
+/* 80356438 00352098 90 1D 00 10 */ stw r0, 0x10(r29)
+/* 8035643C 0035209C 4B FF AE 11 */ bl ghiCallProgressCallback
+lbl_80356440:
+/* 80356440 003520A0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80356444 003520A4 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80356448 003520A8 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8035644C 003520AC 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80356450 003520B0 7C 08 03 A6 */ mtlr r0
+/* 80356454 003520B4 38 21 00 20 */ addi r1, r1, 0x20
+/* 80356458 003520B8 4E 80 00 20 */ blr
+
+.global ghiDoWaiting
+ghiDoWaiting:
+/* 8035645C 003520BC 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80356460 003520C0 7C 08 02 A6 */ mflr r0
+/* 80356464 003520C4 38 A0 00 00 */ li r5, 0
+/* 80356468 003520C8 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8035646C 003520CC 38 81 00 0C */ addi r4, r1, 0xc
+/* 80356470 003520D0 38 C1 00 08 */ addi r6, r1, 8
+/* 80356474 003520D4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80356478 003520D8 7C 7F 1B 78 */ mr r31, r3
+/* 8035647C 003520DC 80 63 00 4C */ lwz r3, 0x4c(r3)
+/* 80356480 003520E0 4B FE 1B 31 */ bl GSISocketSelect
+/* 80356484 003520E4 2C 03 FF FF */ cmpwi r3, -1
+/* 80356488 003520E8 41 82 00 18 */ beq lbl_803564A0
+/* 8035648C 003520EC 2C 03 00 01 */ cmpwi r3, 1
+/* 80356490 003520F0 40 82 00 44 */ bne lbl_803564D4
+/* 80356494 003520F4 80 01 00 08 */ lwz r0, 8(r1)
+/* 80356498 003520F8 2C 00 00 00 */ cmpwi r0, 0
+/* 8035649C 003520FC 41 82 00 38 */ beq lbl_803564D4
+lbl_803564A0:
+/* 803564A0 00352100 38 80 00 01 */ li r4, 1
+/* 803564A4 00352104 38 00 00 05 */ li r0, 5
+/* 803564A8 00352108 2C 03 FF FF */ cmpwi r3, -1
+/* 803564AC 0035210C 90 9F 01 20 */ stw r4, 0x120(r31)
+/* 803564B0 00352110 90 1F 00 3C */ stw r0, 0x3c(r31)
+/* 803564B4 00352114 40 82 00 14 */ bne lbl_803564C8
+/* 803564B8 00352118 80 7F 00 4C */ lwz r3, 0x4c(r31)
+/* 803564BC 0035211C 4B FE 1A ED */ bl GOAGetLastError
+/* 803564C0 00352120 90 7F 00 50 */ stw r3, 0x50(r31)
+/* 803564C4 00352124 48 00 00 3C */ b lbl_80356500
+lbl_803564C8:
+/* 803564C8 00352128 38 00 00 00 */ li r0, 0
+/* 803564CC 0035212C 90 1F 00 50 */ stw r0, 0x50(r31)
+/* 803564D0 00352130 48 00 00 30 */ b lbl_80356500
+lbl_803564D4:
+/* 803564D4 00352134 2C 03 00 01 */ cmpwi r3, 1
+/* 803564D8 00352138 40 82 00 28 */ bne lbl_80356500
+/* 803564DC 0035213C 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 803564E0 00352140 2C 00 00 00 */ cmpwi r0, 0
+/* 803564E4 00352144 41 82 00 1C */ beq lbl_80356500
+/* 803564E8 00352148 38 00 00 08 */ li r0, 8
+/* 803564EC 0035214C 7F E3 FB 78 */ mr r3, r31
+/* 803564F0 00352150 90 1F 00 10 */ stw r0, 0x10(r31)
+/* 803564F4 00352154 38 80 00 00 */ li r4, 0
+/* 803564F8 00352158 38 A0 00 00 */ li r5, 0
+/* 803564FC 0035215C 4B FF AD 51 */ bl ghiCallProgressCallback
+lbl_80356500:
+/* 80356500 00352160 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80356504 00352164 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80356508 00352168 7C 08 03 A6 */ mtlr r0
+/* 8035650C 0035216C 38 21 00 20 */ addi r1, r1, 0x20
+/* 80356510 00352170 4E 80 00 20 */ blr
+
+.global ghiParseStatus
+ghiParseStatus:
+/* 80356514 00352174 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80356518 00352178 7C 08 02 A6 */ mflr r0
+/* 8035651C 0035217C 3C 80 80 45 */ lis r4, lbl_8044C2A8@ha
+/* 80356520 00352180 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80356524 00352184 38 84 C2 A8 */ addi r4, r4, lbl_8044C2A8@l
+/* 80356528 00352188 38 A1 00 14 */ addi r5, r1, 0x14
+/* 8035652C 0035218C 38 C1 00 10 */ addi r6, r1, 0x10
+/* 80356530 00352190 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80356534 00352194 7C 7F 1B 78 */ mr r31, r3
+/* 80356538 00352198 38 E1 00 0C */ addi r7, r1, 0xc
+/* 8035653C 0035219C 39 01 00 08 */ addi r8, r1, 8
+/* 80356540 003521A0 80 63 00 A0 */ lwz r3, 0xa0(r3)
+/* 80356544 003521A4 4C C6 31 82 */ crclr 6
+/* 80356548 003521A8 4B E7 7C C1 */ bl func_801CE208
+/* 8035654C 003521AC 2C 03 00 03 */ cmpwi r3, 3
+/* 80356550 003521B0 40 82 00 24 */ bne lbl_80356574
+/* 80356554 003521B4 80 C1 00 14 */ lwz r6, 0x14(r1)
+/* 80356558 003521B8 2C 06 00 01 */ cmpwi r6, 1
+/* 8035655C 003521BC 41 80 00 18 */ blt lbl_80356574
+/* 80356560 003521C0 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 80356564 003521C4 2C 00 00 64 */ cmpwi r0, 0x64
+/* 80356568 003521C8 41 80 00 0C */ blt lbl_80356574
+/* 8035656C 003521CC 2C 00 02 58 */ cmpwi r0, 0x258
+/* 80356570 003521D0 41 80 00 1C */ blt lbl_8035658C
+lbl_80356574:
+/* 80356574 003521D4 38 60 00 01 */ li r3, 1
+/* 80356578 003521D8 38 00 00 07 */ li r0, 7
+/* 8035657C 003521DC 90 7F 01 20 */ stw r3, 0x120(r31)
+/* 80356580 003521E0 38 60 00 00 */ li r3, 0
+/* 80356584 003521E4 90 1F 00 3C */ stw r0, 0x3c(r31)
+/* 80356588 003521E8 48 00 00 90 */ b lbl_80356618
+lbl_8035658C:
+/* 8035658C 003521EC 3C 60 80 42 */ lis r3, lbl_80422D48@ha
+/* 80356590 003521F0 80 81 00 08 */ lwz r4, 8(r1)
+/* 80356594 003521F4 38 63 2D 48 */ addi r3, r3, lbl_80422D48@l
+/* 80356598 003521F8 80 A3 00 38 */ lwz r5, 0x38(r3)
+/* 8035659C 003521FC 48 00 00 0C */ b lbl_803565A8
+lbl_803565A0:
+/* 803565A0 00352200 38 84 00 01 */ addi r4, r4, 1
+/* 803565A4 00352204 90 81 00 08 */ stw r4, 8(r1)
+lbl_803565A8:
+/* 803565A8 00352208 80 7F 00 A0 */ lwz r3, 0xa0(r31)
+/* 803565AC 0035220C 7C E3 20 AE */ lbzx r7, r3, r4
+/* 803565B0 00352210 7C E3 07 75 */ extsb. r3, r7
+/* 803565B4 00352214 41 82 00 44 */ beq lbl_803565F8
+/* 803565B8 00352218 38 00 00 00 */ li r0, 0
+/* 803565BC 0035221C 41 80 00 0C */ blt lbl_803565C8
+/* 803565C0 00352220 2C 03 01 00 */ cmpwi r3, 0x100
+/* 803565C4 00352224 41 80 00 08 */ blt lbl_803565CC
+lbl_803565C8:
+/* 803565C8 00352228 38 00 00 01 */ li r0, 1
+lbl_803565CC:
+/* 803565CC 0035222C 2C 00 00 00 */ cmpwi r0, 0
+/* 803565D0 00352230 41 82 00 0C */ beq lbl_803565DC
+/* 803565D4 00352234 38 00 00 00 */ li r0, 0
+/* 803565D8 00352238 48 00 00 18 */ b lbl_803565F0
+lbl_803565DC:
+/* 803565DC 0035223C 7C E0 07 74 */ extsb r0, r7
+/* 803565E0 00352240 80 65 00 08 */ lwz r3, 8(r5)
+/* 803565E4 00352244 54 00 08 3C */ slwi r0, r0, 1
+/* 803565E8 00352248 7C 03 02 2E */ lhzx r0, r3, r0
+/* 803565EC 0035224C 54 00 05 EE */ rlwinm r0, r0, 0, 0x17, 0x17
+lbl_803565F0:
+/* 803565F0 00352250 2C 00 00 00 */ cmpwi r0, 0
+/* 803565F4 00352254 40 82 FF AC */ bne lbl_803565A0
+lbl_803565F8:
+/* 803565F8 00352258 90 DF 01 0C */ stw r6, 0x10c(r31)
+/* 803565FC 0035225C 38 60 00 01 */ li r3, 1
+/* 80356600 00352260 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 80356604 00352264 90 1F 01 10 */ stw r0, 0x110(r31)
+/* 80356608 00352268 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8035660C 0035226C 90 1F 01 14 */ stw r0, 0x114(r31)
+/* 80356610 00352270 80 01 00 08 */ lwz r0, 8(r1)
+/* 80356614 00352274 90 1F 01 18 */ stw r0, 0x118(r31)
+lbl_80356618:
+/* 80356618 00352278 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8035661C 0035227C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80356620 00352280 7C 08 03 A6 */ mtlr r0
+/* 80356624 00352284 38 21 00 20 */ addi r1, r1, 0x20
+/* 80356628 00352288 4E 80 00 20 */ blr
+
+.global ghiDoReceivingStatus
+ghiDoReceivingStatus:
+/* 8035662C 0035228C 94 21 FB E0 */ stwu r1, -0x420(r1)
+/* 80356630 00352290 7C 08 02 A6 */ mflr r0
+/* 80356634 00352294 90 01 04 24 */ stw r0, 0x424(r1)
+/* 80356638 00352298 38 00 04 00 */ li r0, 0x400
+/* 8035663C 0035229C 38 81 00 10 */ addi r4, r1, 0x10
+/* 80356640 003522A0 38 A1 00 08 */ addi r5, r1, 8
+/* 80356644 003522A4 93 E1 04 1C */ stw r31, 0x41c(r1)
+/* 80356648 003522A8 93 C1 04 18 */ stw r30, 0x418(r1)
+/* 8035664C 003522AC 93 A1 04 14 */ stw r29, 0x414(r1)
+/* 80356650 003522B0 7C 7D 1B 78 */ mr r29, r3
+/* 80356654 003522B4 90 01 00 08 */ stw r0, 8(r1)
+/* 80356658 003522B8 4B FF AD ED */ bl ghiDoReceive
+/* 8035665C 003522BC 2C 03 00 03 */ cmpwi r3, 3
+/* 80356660 003522C0 7C 7F 1B 78 */ mr r31, r3
+/* 80356664 003522C4 41 82 01 30 */ beq lbl_80356794
+/* 80356668 003522C8 2C 03 00 01 */ cmpwi r3, 1
+/* 8035666C 003522CC 41 82 01 28 */ beq lbl_80356794
+/* 80356670 003522D0 2C 03 00 00 */ cmpwi r3, 0
+/* 80356674 003522D4 40 82 00 64 */ bne lbl_803566D8
+/* 80356678 003522D8 80 1D 01 94 */ lwz r0, 0x194(r29)
+/* 8035667C 003522DC 2C 00 00 00 */ cmpwi r0, 0
+/* 80356680 003522E0 41 82 00 40 */ beq lbl_803566C0
+/* 80356684 003522E4 80 A1 00 08 */ lwz r5, 8(r1)
+/* 80356688 003522E8 38 7D 00 C0 */ addi r3, r29, 0xc0
+/* 8035668C 003522EC 38 81 00 10 */ addi r4, r1, 0x10
+/* 80356690 003522F0 4B FF A4 2D */ bl ghiAppendDataToBuffer
+/* 80356694 003522F4 2C 03 00 00 */ cmpwi r3, 0
+/* 80356698 003522F8 41 82 00 FC */ beq lbl_80356794
+/* 8035669C 003522FC 7F A3 EB 78 */ mr r3, r29
+/* 803566A0 00352300 4B FF AC 55 */ bl ghiDecryptReceivedData
+/* 803566A4 00352304 2C 03 00 00 */ cmpwi r3, 0
+/* 803566A8 00352308 40 82 00 30 */ bne lbl_803566D8
+/* 803566AC 0035230C 38 60 00 01 */ li r3, 1
+/* 803566B0 00352310 38 00 00 11 */ li r0, 0x11
+/* 803566B4 00352314 90 7D 01 20 */ stw r3, 0x120(r29)
+/* 803566B8 00352318 90 1D 00 3C */ stw r0, 0x3c(r29)
+/* 803566BC 0035231C 48 00 00 D8 */ b lbl_80356794
+lbl_803566C0:
+/* 803566C0 00352320 80 A1 00 08 */ lwz r5, 8(r1)
+/* 803566C4 00352324 38 7D 00 9C */ addi r3, r29, 0x9c
+/* 803566C8 00352328 38 81 00 10 */ addi r4, r1, 0x10
+/* 803566CC 0035232C 4B FF A3 F1 */ bl ghiAppendDataToBuffer
+/* 803566D0 00352330 2C 03 00 00 */ cmpwi r3, 0
+/* 803566D4 00352334 41 82 00 C0 */ beq lbl_80356794
+lbl_803566D8:
+/* 803566D8 00352338 80 7D 00 A0 */ lwz r3, 0xa0(r29)
+/* 803566DC 0035233C 38 8D 94 10 */ addi r4, r13, lbl_8063E6D0-_SDA_BASE_
+/* 803566E0 00352340 4B E7 80 C1 */ bl func_801CE7A0
+/* 803566E4 00352344 2C 03 00 00 */ cmpwi r3, 0
+/* 803566E8 00352348 41 82 00 88 */ beq lbl_80356770
+/* 803566EC 0035234C 3B E0 00 00 */ li r31, 0
+/* 803566F0 00352350 9B E3 00 00 */ stb r31, 0(r3)
+/* 803566F4 00352354 80 1D 00 A0 */ lwz r0, 0xa0(r29)
+/* 803566F8 00352358 7F C0 18 50 */ subf r30, r0, r3
+/* 803566FC 0035235C 7F A3 EB 78 */ mr r3, r29
+/* 80356700 00352360 4B FF FE 15 */ bl ghiParseStatus
+/* 80356704 00352364 2C 03 00 00 */ cmpwi r3, 0
+/* 80356708 00352368 41 82 00 8C */ beq lbl_80356794
+/* 8035670C 0035236C 80 1D 01 14 */ lwz r0, 0x114(r29)
+/* 80356710 00352370 38 7E 00 02 */ addi r3, r30, 2
+/* 80356714 00352374 90 7D 01 1C */ stw r3, 0x11c(r29)
+/* 80356718 00352378 2C 00 00 64 */ cmpwi r0, 0x64
+/* 8035671C 0035237C 40 82 00 38 */ bne lbl_80356754
+/* 80356720 00352380 80 1D 01 7C */ lwz r0, 0x17c(r29)
+/* 80356724 00352384 2C 00 00 00 */ cmpwi r0, 0
+/* 80356728 00352388 41 82 00 2C */ beq lbl_80356754
+/* 8035672C 0035238C 93 FD 01 7C */ stw r31, 0x17c(r29)
+/* 80356730 00352390 38 7D 00 9C */ addi r3, r29, 0x9c
+/* 80356734 00352394 4B FF A8 FD */ bl ghiResetBuffer
+/* 80356738 00352398 38 00 00 06 */ li r0, 6
+/* 8035673C 0035239C 7F A3 EB 78 */ mr r3, r29
+/* 80356740 003523A0 90 1D 00 10 */ stw r0, 0x10(r29)
+/* 80356744 003523A4 38 80 00 00 */ li r4, 0
+/* 80356748 003523A8 38 A0 00 00 */ li r5, 0
+/* 8035674C 003523AC 4B FF AB 01 */ bl ghiCallProgressCallback
+/* 80356750 003523B0 48 00 00 44 */ b lbl_80356794
+lbl_80356754:
+/* 80356754 003523B4 38 00 00 09 */ li r0, 9
+/* 80356758 003523B8 7F A3 EB 78 */ mr r3, r29
+/* 8035675C 003523BC 90 1D 00 10 */ stw r0, 0x10(r29)
+/* 80356760 003523C0 38 80 00 00 */ li r4, 0
+/* 80356764 003523C4 38 A0 00 00 */ li r5, 0
+/* 80356768 003523C8 4B FF AA E5 */ bl ghiCallProgressCallback
+/* 8035676C 003523CC 48 00 00 28 */ b lbl_80356794
+lbl_80356770:
+/* 80356770 003523D0 2C 1F 00 02 */ cmpwi r31, 2
+/* 80356774 003523D4 40 82 00 20 */ bne lbl_80356794
+/* 80356778 003523D8 38 60 00 01 */ li r3, 1
+/* 8035677C 003523DC 38 00 00 07 */ li r0, 7
+/* 80356780 003523E0 90 7D 01 20 */ stw r3, 0x120(r29)
+/* 80356784 003523E4 80 7D 00 4C */ lwz r3, 0x4c(r29)
+/* 80356788 003523E8 90 1D 00 3C */ stw r0, 0x3c(r29)
+/* 8035678C 003523EC 4B FE 18 1D */ bl GOAGetLastError
+/* 80356790 003523F0 90 7D 00 50 */ stw r3, 0x50(r29)
+lbl_80356794:
+/* 80356794 003523F4 80 01 04 24 */ lwz r0, 0x424(r1)
+/* 80356798 003523F8 83 E1 04 1C */ lwz r31, 0x41c(r1)
+/* 8035679C 003523FC 83 C1 04 18 */ lwz r30, 0x418(r1)
+/* 803567A0 00352400 83 A1 04 14 */ lwz r29, 0x414(r1)
+/* 803567A4 00352404 7C 08 03 A6 */ mtlr r0
+/* 803567A8 00352408 38 21 04 20 */ addi r1, r1, 0x420
+/* 803567AC 0035240C 4E 80 00 20 */ blr
+
+.global ghiDeliverIncomingFileData
+ghiDeliverIncomingFileData:
+/* 803567B0 00352410 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 803567B4 00352414 7C 08 02 A6 */ mflr r0
+/* 803567B8 00352418 38 E0 00 00 */ li r7, 0
+/* 803567BC 0035241C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 803567C0 00352420 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 803567C4 00352424 7C 7F 1B 78 */ mr r31, r3
+/* 803567C8 00352428 80 C3 01 24 */ lwz r6, 0x124(r3)
+/* 803567CC 0035242C 80 03 01 28 */ lwz r0, 0x128(r3)
+/* 803567D0 00352430 7C C6 2A 14 */ add r6, r6, r5
+/* 803567D4 00352434 7C 06 00 00 */ cmpw r6, r0
+/* 803567D8 00352438 90 C3 01 24 */ stw r6, 0x124(r3)
+/* 803567DC 0035243C 38 C0 00 00 */ li r6, 0
+/* 803567E0 00352440 41 82 00 10 */ beq lbl_803567F0
+/* 803567E4 00352444 80 03 01 54 */ lwz r0, 0x154(r3)
+/* 803567E8 00352448 2C 00 00 00 */ cmpwi r0, 0
+/* 803567EC 0035244C 41 82 00 0C */ beq lbl_803567F8
+lbl_803567F0:
+/* 803567F0 00352450 38 00 00 01 */ li r0, 1
+/* 803567F4 00352454 90 03 01 20 */ stw r0, 0x120(r3)
+lbl_803567F8:
+/* 803567F8 00352458 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 803567FC 0035245C 2C 00 00 00 */ cmpwi r0, 0
+/* 80356800 00352460 40 82 00 28 */ bne lbl_80356828
+/* 80356804 00352464 38 63 00 E4 */ addi r3, r3, 0xe4
+/* 80356808 00352468 4B FF A2 B5 */ bl ghiAppendDataToBuffer
+/* 8035680C 0035246C 2C 03 00 00 */ cmpwi r3, 0
+/* 80356810 00352470 40 82 00 0C */ bne lbl_8035681C
+/* 80356814 00352474 38 60 00 00 */ li r3, 0
+/* 80356818 00352478 48 00 00 68 */ b lbl_80356880
+lbl_8035681C:
+/* 8035681C 0035247C 80 DF 00 E8 */ lwz r6, 0xe8(r31)
+/* 80356820 00352480 80 FF 00 F0 */ lwz r7, 0xf0(r31)
+/* 80356824 00352484 48 00 00 48 */ b lbl_8035686C
+lbl_80356828:
+/* 80356828 00352488 2C 00 00 01 */ cmpwi r0, 1
+/* 8035682C 0035248C 40 82 00 30 */ bne lbl_8035685C
+/* 80356830 00352490 2C 05 00 00 */ cmpwi r5, 0
+/* 80356834 00352494 41 82 00 1C */ beq lbl_80356850
+/* 80356838 00352498 38 80 00 01 */ li r4, 1
+/* 8035683C 0035249C 38 00 00 0D */ li r0, 0xd
+/* 80356840 003524A0 90 83 01 20 */ stw r4, 0x120(r3)
+/* 80356844 003524A4 90 03 00 3C */ stw r0, 0x3c(r3)
+/* 80356848 003524A8 38 60 00 00 */ li r3, 0
+/* 8035684C 003524AC 48 00 00 34 */ b lbl_80356880
+lbl_80356850:
+/* 80356850 003524B0 7C 86 23 78 */ mr r6, r4
+/* 80356854 003524B4 7C A7 2B 78 */ mr r7, r5
+/* 80356858 003524B8 48 00 00 14 */ b lbl_8035686C
+lbl_8035685C:
+/* 8035685C 003524BC 2C 00 00 02 */ cmpwi r0, 2
+/* 80356860 003524C0 40 82 00 0C */ bne lbl_8035686C
+/* 80356864 003524C4 7C 86 23 78 */ mr r6, r4
+/* 80356868 003524C8 7C A7 2B 78 */ mr r7, r5
+lbl_8035686C:
+/* 8035686C 003524CC 7F E3 FB 78 */ mr r3, r31
+/* 80356870 003524D0 7C C4 33 78 */ mr r4, r6
+/* 80356874 003524D4 7C E5 3B 78 */ mr r5, r7
+/* 80356878 003524D8 4B FF A9 D5 */ bl ghiCallProgressCallback
+/* 8035687C 003524DC 38 60 00 01 */ li r3, 1
+lbl_80356880:
+/* 80356880 003524E0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80356884 003524E4 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80356888 003524E8 7C 08 03 A6 */ mtlr r0
+/* 8035688C 003524EC 38 21 00 10 */ addi r1, r1, 0x10
+/* 80356890 003524F0 4E 80 00 20 */ blr
+
+.global ghiProcessIncomingFileData
+ghiProcessIncomingFileData:
+/* 80356894 003524F4 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 80356898 003524F8 7C 08 02 A6 */ mflr r0
+/* 8035689C 003524FC 90 01 00 44 */ stw r0, 0x44(r1)
+/* 803568A0 00352500 39 61 00 40 */ addi r11, r1, 0x40
+/* 803568A4 00352504 4B E7 08 75 */ bl _savegpr_23
+/* 803568A8 00352508 80 03 01 34 */ lwz r0, 0x134(r3)
+/* 803568AC 0035250C 7C 7D 1B 78 */ mr r29, r3
+/* 803568B0 00352510 7C 9E 23 78 */ mr r30, r4
+/* 803568B4 00352514 7C BF 2B 78 */ mr r31, r5
+/* 803568B8 00352518 2C 00 00 00 */ cmpwi r0, 0
+/* 803568BC 0035251C 41 82 02 28 */ beq lbl_80356AE4
+/* 803568C0 00352520 3B 00 00 00 */ li r24, 0
+/* 803568C4 00352524 3B 80 00 02 */ li r28, 2
+/* 803568C8 00352528 3B 40 00 01 */ li r26, 1
+/* 803568CC 0035252C 3B 20 00 03 */ li r25, 3
+/* 803568D0 00352530 48 00 02 04 */ b lbl_80356AD4
+lbl_803568D4:
+/* 803568D4 00352534 80 1D 01 4C */ lwz r0, 0x14c(r29)
+/* 803568D8 00352538 2C 00 00 00 */ cmpwi r0, 0
+/* 803568DC 0035253C 40 82 01 34 */ bne lbl_80356A10
+/* 803568E0 00352540 7F C3 F3 78 */ mr r3, r30
+/* 803568E4 00352544 38 80 00 0A */ li r4, 0xa
+/* 803568E8 00352548 4B E7 7C C1 */ bl func_801CE5A8
+/* 803568EC 0035254C 2C 03 00 00 */ cmpwi r3, 0
+/* 803568F0 00352550 7C 7B 1B 78 */ mr r27, r3
+/* 803568F4 00352554 41 82 00 C4 */ beq lbl_803569B8
+/* 803568F8 00352558 7E FE 18 51 */ subf. r23, r30, r3
+/* 803568FC 0035255C 41 82 00 48 */ beq lbl_80356944
+/* 80356900 00352560 80 1D 01 44 */ lwz r0, 0x144(r29)
+/* 80356904 00352564 2C 00 00 0A */ cmpwi r0, 0xa
+/* 80356908 00352568 40 80 00 3C */ bge lbl_80356944
+/* 8035690C 0035256C 20 60 00 0A */ subfic r3, r0, 0xa
+/* 80356910 00352570 7C 03 B8 00 */ cmpw r3, r23
+/* 80356914 00352574 40 80 00 08 */ bge lbl_8035691C
+/* 80356918 00352578 7C 77 1B 78 */ mr r23, r3
+lbl_8035691C:
+/* 8035691C 0035257C 7C 7D 02 14 */ add r3, r29, r0
+/* 80356920 00352580 7F C4 F3 78 */ mr r4, r30
+/* 80356924 00352584 7E E5 BB 78 */ mr r5, r23
+/* 80356928 00352588 38 63 01 38 */ addi r3, r3, 0x138
+/* 8035692C 0035258C 4B CA D6 D5 */ bl memcpy
+/* 80356930 00352590 80 1D 01 44 */ lwz r0, 0x144(r29)
+/* 80356934 00352594 7C 00 BA 14 */ add r0, r0, r23
+/* 80356938 00352598 90 1D 01 44 */ stw r0, 0x144(r29)
+/* 8035693C 0035259C 7C 7D 02 14 */ add r3, r29, r0
+/* 80356940 003525A0 9B 03 01 38 */ stb r24, 0x138(r3)
+lbl_80356944:
+/* 80356944 003525A4 38 9B 00 01 */ addi r4, r27, 1
+/* 80356948 003525A8 38 7D 01 38 */ addi r3, r29, 0x138
+/* 8035694C 003525AC 7C 1E 20 50 */ subf r0, r30, r4
+/* 80356950 003525B0 38 A1 00 08 */ addi r5, r1, 8
+/* 80356954 003525B4 7C 9E 23 78 */ mr r30, r4
+/* 80356958 003525B8 38 8D 94 20 */ addi r4, r13, lbl_8063E6E0-_SDA_BASE_
+/* 8035695C 003525BC 7F E0 F8 50 */ subf r31, r0, r31
+/* 80356960 003525C0 4C C6 31 82 */ crclr 6
+/* 80356964 003525C4 4B E7 78 A5 */ bl func_801CE208
+/* 80356968 003525C8 2C 03 00 01 */ cmpwi r3, 1
+/* 8035696C 003525CC 41 82 00 0C */ beq lbl_80356978
+/* 80356970 003525D0 38 00 FF FF */ li r0, -1
+/* 80356974 003525D4 48 00 00 08 */ b lbl_8035697C
+lbl_80356978:
+/* 80356978 003525D8 80 01 00 08 */ lwz r0, 8(r1)
+lbl_8035697C:
+/* 8035697C 003525DC 2C 00 FF FF */ cmpwi r0, -1
+/* 80356980 003525E0 90 1D 01 48 */ stw r0, 0x148(r29)
+/* 80356984 003525E4 40 82 00 1C */ bne lbl_803569A0
+/* 80356988 003525E8 38 60 00 01 */ li r3, 1
+/* 8035698C 003525EC 38 00 00 07 */ li r0, 7
+/* 80356990 003525F0 90 7D 01 20 */ stw r3, 0x120(r29)
+/* 80356994 003525F4 38 60 00 00 */ li r3, 0
+/* 80356998 003525F8 90 1D 00 3C */ stw r0, 0x3c(r29)
+/* 8035699C 003525FC 48 00 01 4C */ b lbl_80356AE8
+lbl_803569A0:
+/* 803569A0 00352600 2C 00 00 00 */ cmpwi r0, 0
+/* 803569A4 00352604 40 82 00 0C */ bne lbl_803569B0
+/* 803569A8 00352608 93 3D 01 4C */ stw r25, 0x14c(r29)
+/* 803569AC 0035260C 48 00 01 28 */ b lbl_80356AD4
+lbl_803569B0:
+/* 803569B0 00352610 93 5D 01 4C */ stw r26, 0x14c(r29)
+/* 803569B4 00352614 48 00 01 20 */ b lbl_80356AD4
+lbl_803569B8:
+/* 803569B8 00352618 2C 1F 00 00 */ cmpwi r31, 0
+/* 803569BC 0035261C 41 82 00 4C */ beq lbl_80356A08
+/* 803569C0 00352620 80 1D 01 44 */ lwz r0, 0x144(r29)
+/* 803569C4 00352624 2C 00 00 0A */ cmpwi r0, 0xa
+/* 803569C8 00352628 40 80 00 40 */ bge lbl_80356A08
+/* 803569CC 0035262C 20 60 00 0A */ subfic r3, r0, 0xa
+/* 803569D0 00352630 7C 03 F8 00 */ cmpw r3, r31
+/* 803569D4 00352634 40 80 00 08 */ bge lbl_803569DC
+/* 803569D8 00352638 7C 7F 1B 78 */ mr r31, r3
+lbl_803569DC:
+/* 803569DC 0035263C 7C 7D 02 14 */ add r3, r29, r0
+/* 803569E0 00352640 7F C4 F3 78 */ mr r4, r30
+/* 803569E4 00352644 7F E5 FB 78 */ mr r5, r31
+/* 803569E8 00352648 38 63 01 38 */ addi r3, r3, 0x138
+/* 803569EC 0035264C 4B CA D6 15 */ bl memcpy
+/* 803569F0 00352650 80 7D 01 44 */ lwz r3, 0x144(r29)
+/* 803569F4 00352654 38 00 00 00 */ li r0, 0
+/* 803569F8 00352658 7C 63 FA 14 */ add r3, r3, r31
+/* 803569FC 0035265C 90 7D 01 44 */ stw r3, 0x144(r29)
+/* 80356A00 00352660 7C 7D 1A 14 */ add r3, r29, r3
+/* 80356A04 00352664 98 03 01 38 */ stb r0, 0x138(r3)
+lbl_80356A08:
+/* 80356A08 00352668 38 60 00 01 */ li r3, 1
+/* 80356A0C 0035266C 48 00 00 DC */ b lbl_80356AE8
+lbl_80356A10:
+/* 80356A10 00352670 2C 00 00 01 */ cmpwi r0, 1
+/* 80356A14 00352674 40 82 00 58 */ bne lbl_80356A6C
+/* 80356A18 00352678 80 1D 01 48 */ lwz r0, 0x148(r29)
+/* 80356A1C 0035267C 7F FB FB 78 */ mr r27, r31
+/* 80356A20 00352680 7C 00 F8 00 */ cmpw r0, r31
+/* 80356A24 00352684 40 80 00 08 */ bge lbl_80356A2C
+/* 80356A28 00352688 7C 1B 03 78 */ mr r27, r0
+lbl_80356A2C:
+/* 80356A2C 0035268C 7F A3 EB 78 */ mr r3, r29
+/* 80356A30 00352690 7F C4 F3 78 */ mr r4, r30
+/* 80356A34 00352694 7F 65 DB 78 */ mr r5, r27
+/* 80356A38 00352698 4B FF FD 79 */ bl ghiDeliverIncomingFileData
+/* 80356A3C 0035269C 2C 03 00 00 */ cmpwi r3, 0
+/* 80356A40 003526A0 40 82 00 0C */ bne lbl_80356A4C
+/* 80356A44 003526A4 38 60 00 00 */ li r3, 0
+/* 80356A48 003526A8 48 00 00 A0 */ b lbl_80356AE8
+lbl_80356A4C:
+/* 80356A4C 003526AC 80 1D 01 48 */ lwz r0, 0x148(r29)
+/* 80356A50 003526B0 7F DE DA 14 */ add r30, r30, r27
+/* 80356A54 003526B4 7F FB F8 50 */ subf r31, r27, r31
+/* 80356A58 003526B8 7C 1B 00 51 */ subf. r0, r27, r0
+/* 80356A5C 003526BC 90 1D 01 48 */ stw r0, 0x148(r29)
+/* 80356A60 003526C0 40 82 00 74 */ bne lbl_80356AD4
+/* 80356A64 003526C4 93 9D 01 4C */ stw r28, 0x14c(r29)
+/* 80356A68 003526C8 48 00 00 6C */ b lbl_80356AD4
+lbl_80356A6C:
+/* 80356A6C 003526CC 2C 00 00 02 */ cmpwi r0, 2
+/* 80356A70 003526D0 40 82 00 44 */ bne lbl_80356AB4
+/* 80356A74 003526D4 7F C3 F3 78 */ mr r3, r30
+/* 80356A78 003526D8 38 80 00 0A */ li r4, 0xa
+/* 80356A7C 003526DC 4B E7 7B 2D */ bl func_801CE5A8
+/* 80356A80 003526E0 2C 03 00 00 */ cmpwi r3, 0
+/* 80356A84 003526E4 40 82 00 0C */ bne lbl_80356A90
+/* 80356A88 003526E8 38 60 00 01 */ li r3, 1
+/* 80356A8C 003526EC 48 00 00 5C */ b lbl_80356AE8
+lbl_80356A90:
+/* 80356A90 003526F0 38 63 00 01 */ addi r3, r3, 1
+/* 80356A94 003526F4 9B 1D 01 38 */ stb r24, 0x138(r29)
+/* 80356A98 003526F8 7C 1E 18 50 */ subf r0, r30, r3
+/* 80356A9C 003526FC 93 1D 01 44 */ stw r24, 0x144(r29)
+/* 80356AA0 00352700 7C 7E 1B 78 */ mr r30, r3
+/* 80356AA4 00352704 7F E0 F8 50 */ subf r31, r0, r31
+/* 80356AA8 00352708 93 1D 01 48 */ stw r24, 0x148(r29)
+/* 80356AAC 0035270C 93 1D 01 4C */ stw r24, 0x14c(r29)
+/* 80356AB0 00352710 48 00 00 24 */ b lbl_80356AD4
+lbl_80356AB4:
+/* 80356AB4 00352714 2C 00 00 03 */ cmpwi r0, 3
+/* 80356AB8 00352718 40 82 00 14 */ bne lbl_80356ACC
+/* 80356ABC 0035271C 38 00 00 01 */ li r0, 1
+/* 80356AC0 00352720 38 60 00 01 */ li r3, 1
+/* 80356AC4 00352724 90 1D 01 20 */ stw r0, 0x120(r29)
+/* 80356AC8 00352728 48 00 00 20 */ b lbl_80356AE8
+lbl_80356ACC:
+/* 80356ACC 0035272C 38 60 00 00 */ li r3, 0
+/* 80356AD0 00352730 48 00 00 18 */ b lbl_80356AE8
+lbl_80356AD4:
+/* 80356AD4 00352734 2C 1F 00 00 */ cmpwi r31, 0
+/* 80356AD8 00352738 41 81 FD FC */ bgt lbl_803568D4
+/* 80356ADC 0035273C 38 60 00 01 */ li r3, 1
+/* 80356AE0 00352740 48 00 00 08 */ b lbl_80356AE8
+lbl_80356AE4:
+/* 80356AE4 00352744 4B FF FC CD */ bl ghiDeliverIncomingFileData
+lbl_80356AE8:
+/* 80356AE8 00352748 39 61 00 40 */ addi r11, r1, 0x40
+/* 80356AEC 0035274C 4B E7 06 79 */ bl _restgpr_23
+/* 80356AF0 00352750 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 80356AF4 00352754 7C 08 03 A6 */ mtlr r0
+/* 80356AF8 00352758 38 21 00 40 */ addi r1, r1, 0x40
+/* 80356AFC 0035275C 4E 80 00 20 */ blr
+
+.global ghiDoReceivingHeaders
+ghiDoReceivingHeaders:
+/* 80356B00 00352760 94 21 EF C0 */ stwu r1, -0x1040(r1)
+/* 80356B04 00352764 7C 08 02 A6 */ mflr r0
+/* 80356B08 00352768 90 01 10 44 */ stw r0, 0x1044(r1)
+/* 80356B0C 0035276C 39 61 10 40 */ addi r11, r1, 0x1040
+/* 80356B10 00352770 4B E7 06 05 */ bl _savegpr_22
+/* 80356B14 00352774 38 00 10 00 */ li r0, 0x1000
+/* 80356B18 00352778 3F C0 80 45 */ lis r30, lbl_8044C238@ha
+/* 80356B1C 0035277C 90 01 00 08 */ stw r0, 8(r1)
+/* 80356B20 00352780 7C 78 1B 78 */ mr r24, r3
+/* 80356B24 00352784 3B DE C2 38 */ addi r30, r30, lbl_8044C238@l
+/* 80356B28 00352788 38 81 00 18 */ addi r4, r1, 0x18
+/* 80356B2C 0035278C 38 A1 00 08 */ addi r5, r1, 8
+/* 80356B30 00352790 3A E0 00 01 */ li r23, 1
+/* 80356B34 00352794 4B FF A9 11 */ bl ghiDoReceive
+/* 80356B38 00352798 2C 03 00 03 */ cmpwi r3, 3
+/* 80356B3C 0035279C 7C 76 1B 78 */ mr r22, r3
+/* 80356B40 003527A0 41 82 05 1C */ beq lbl_8035705C
+/* 80356B44 003527A4 2C 03 00 01 */ cmpwi r3, 1
+/* 80356B48 003527A8 41 82 05 14 */ beq lbl_8035705C
+/* 80356B4C 003527AC 2C 03 00 00 */ cmpwi r3, 0
+/* 80356B50 003527B0 40 82 00 64 */ bne lbl_80356BB4
+/* 80356B54 003527B4 80 18 01 94 */ lwz r0, 0x194(r24)
+/* 80356B58 003527B8 2C 00 00 00 */ cmpwi r0, 0
+/* 80356B5C 003527BC 41 82 00 40 */ beq lbl_80356B9C
+/* 80356B60 003527C0 80 A1 00 08 */ lwz r5, 8(r1)
+/* 80356B64 003527C4 38 78 00 C0 */ addi r3, r24, 0xc0
+/* 80356B68 003527C8 38 81 00 18 */ addi r4, r1, 0x18
+/* 80356B6C 003527CC 4B FF 9F 51 */ bl ghiAppendDataToBuffer
+/* 80356B70 003527D0 2C 03 00 00 */ cmpwi r3, 0
+/* 80356B74 003527D4 41 82 04 E8 */ beq lbl_8035705C
+/* 80356B78 003527D8 7F 03 C3 78 */ mr r3, r24
+/* 80356B7C 003527DC 4B FF A7 79 */ bl ghiDecryptReceivedData
+/* 80356B80 003527E0 2C 03 00 00 */ cmpwi r3, 0
+/* 80356B84 003527E4 40 82 00 30 */ bne lbl_80356BB4
+/* 80356B88 003527E8 38 60 00 01 */ li r3, 1
+/* 80356B8C 003527EC 38 00 00 11 */ li r0, 0x11
+/* 80356B90 003527F0 90 78 01 20 */ stw r3, 0x120(r24)
+/* 80356B94 003527F4 90 18 00 3C */ stw r0, 0x3c(r24)
+/* 80356B98 003527F8 48 00 04 C4 */ b lbl_8035705C
+lbl_80356B9C:
+/* 80356B9C 003527FC 80 A1 00 08 */ lwz r5, 8(r1)
+/* 80356BA0 00352800 38 78 00 9C */ addi r3, r24, 0x9c
+/* 80356BA4 00352804 38 81 00 18 */ addi r4, r1, 0x18
+/* 80356BA8 00352808 4B FF 9F 15 */ bl ghiAppendDataToBuffer
+/* 80356BAC 0035280C 2C 03 00 00 */ cmpwi r3, 0
+/* 80356BB0 00352810 41 82 04 AC */ beq lbl_8035705C
+lbl_80356BB4:
+/* 80356BB4 00352814 3C 60 51 EC */ lis r3, 0x51EB851F@ha
+/* 80356BB8 00352818 80 18 01 14 */ lwz r0, 0x114(r24)
+/* 80356BBC 0035281C 38 63 85 1F */ addi r3, r3, 0x51EB851F@l
+/* 80356BC0 00352820 80 98 00 A0 */ lwz r4, 0xa0(r24)
+/* 80356BC4 00352824 7C 03 00 96 */ mulhw r0, r3, r0
+/* 80356BC8 00352828 80 78 01 1C */ lwz r3, 0x11c(r24)
+/* 80356BCC 0035282C 7F A4 1A 14 */ add r29, r4, r3
+/* 80356BD0 00352830 7C 00 2E 70 */ srawi r0, r0, 5
+/* 80356BD4 00352834 54 03 0F FE */ srwi r3, r0, 0x1f
+/* 80356BD8 00352838 7C 00 1A 14 */ add r0, r0, r3
+/* 80356BDC 0035283C 2C 00 00 01 */ cmpwi r0, 1
+/* 80356BE0 00352840 40 82 00 40 */ bne lbl_80356C20
+/* 80356BE4 00352844 7F A3 EB 78 */ mr r3, r29
+/* 80356BE8 00352848 38 8D 94 10 */ addi r4, r13, lbl_8063E6D0-_SDA_BASE_
+/* 80356BEC 0035284C 38 A0 00 02 */ li r5, 2
+/* 80356BF0 00352850 4B E7 79 79 */ bl func_801CE568
+/* 80356BF4 00352854 2C 03 00 00 */ cmpwi r3, 0
+/* 80356BF8 00352858 41 82 00 1C */ beq lbl_80356C14
+/* 80356BFC 0035285C 7F A3 EB 78 */ mr r3, r29
+/* 80356C00 00352860 38 8D 94 24 */ addi r4, r13, lbl_8063E6E4-_SDA_BASE_
+/* 80356C04 00352864 38 A0 00 02 */ li r5, 2
+/* 80356C08 00352868 4B E7 79 61 */ bl func_801CE568
+/* 80356C0C 0035286C 2C 03 00 00 */ cmpwi r3, 0
+/* 80356C10 00352870 40 82 00 10 */ bne lbl_80356C20
+lbl_80356C14:
+/* 80356C14 00352874 7F A3 EB 78 */ mr r3, r29
+/* 80356C18 00352878 3A E0 00 00 */ li r23, 0
+/* 80356C1C 0035287C 48 00 00 10 */ b lbl_80356C2C
+lbl_80356C20:
+/* 80356C20 00352880 7F A3 EB 78 */ mr r3, r29
+/* 80356C24 00352884 38 8D 94 28 */ addi r4, r13, lbl_8063E6E8-_SDA_BASE_
+/* 80356C28 00352888 4B E7 7B 79 */ bl func_801CE7A0
+lbl_80356C2C:
+/* 80356C2C 0035288C 2C 03 00 00 */ cmpwi r3, 0
+/* 80356C30 00352890 40 82 00 10 */ bne lbl_80356C40
+/* 80356C34 00352894 7F A3 EB 78 */ mr r3, r29
+/* 80356C38 00352898 38 8D 94 24 */ addi r4, r13, lbl_8063E6E4-_SDA_BASE_
+/* 80356C3C 0035289C 4B E7 7B 65 */ bl func_801CE7A0
+lbl_80356C40:
+/* 80356C40 003528A0 2C 03 00 00 */ cmpwi r3, 0
+/* 80356C44 003528A4 41 82 03 F4 */ beq lbl_80357038
+/* 80356C48 003528A8 2C 17 00 01 */ cmpwi r23, 1
+/* 80356C4C 003528AC 40 82 00 08 */ bne lbl_80356C54
+/* 80356C50 003528B0 38 63 00 02 */ addi r3, r3, 2
+lbl_80356C54:
+/* 80356C54 003528B4 38 00 00 00 */ li r0, 0
+/* 80356C58 003528B8 3C 80 51 EC */ lis r4, 0x51EB851F@ha
+/* 80356C5C 003528BC 98 03 00 00 */ stb r0, 0(r3)
+/* 80356C60 003528C0 38 84 85 1F */ addi r4, r4, 0x51EB851F@l
+/* 80356C64 003528C4 3B 83 00 02 */ addi r28, r3, 2
+/* 80356C68 003528C8 80 18 01 14 */ lwz r0, 0x114(r24)
+/* 80356C6C 003528CC 80 D8 00 A0 */ lwz r6, 0xa0(r24)
+/* 80356C70 003528D0 7C 04 00 96 */ mulhw r0, r4, r0
+/* 80356C74 003528D4 80 98 00 A8 */ lwz r4, 0xa8(r24)
+/* 80356C78 003528D8 7C 66 18 50 */ subf r3, r6, r3
+/* 80356C7C 003528DC 7C A6 E0 50 */ subf r5, r6, r28
+/* 80356C80 003528E0 38 63 00 01 */ addi r3, r3, 1
+/* 80356C84 003528E4 90 78 00 A8 */ stw r3, 0xa8(r24)
+/* 80356C88 003528E8 7C 00 2E 70 */ srawi r0, r0, 5
+/* 80356C8C 003528EC 90 78 00 AC */ stw r3, 0xac(r24)
+/* 80356C90 003528F0 54 03 0F FE */ srwi r3, r0, 0x1f
+/* 80356C94 003528F4 7F 65 20 50 */ subf r27, r5, r4
+/* 80356C98 003528F8 7C 00 1A 14 */ add r0, r0, r3
+/* 80356C9C 003528FC 2C 00 00 01 */ cmpwi r0, 1
+/* 80356CA0 00352900 40 82 00 74 */ bne lbl_80356D14
+/* 80356CA4 00352904 2C 1B 00 00 */ cmpwi r27, 0
+/* 80356CA8 00352908 41 82 00 1C */ beq lbl_80356CC4
+/* 80356CAC 0035290C 7C C3 33 78 */ mr r3, r6
+/* 80356CB0 00352910 7F 84 E3 78 */ mr r4, r28
+/* 80356CB4 00352914 38 BB 00 01 */ addi r5, r27, 1
+/* 80356CB8 00352918 4B E7 35 BD */ bl memmove
+/* 80356CBC 0035291C 93 78 00 A8 */ stw r27, 0xa8(r24)
+/* 80356CC0 00352920 48 00 00 0C */ b lbl_80356CCC
+lbl_80356CC4:
+/* 80356CC4 00352924 38 78 00 9C */ addi r3, r24, 0x9c
+/* 80356CC8 00352928 4B FF A3 69 */ bl ghiResetBuffer
+lbl_80356CCC:
+/* 80356CCC 0035292C 80 18 01 7C */ lwz r0, 0x17c(r24)
+/* 80356CD0 00352930 2C 00 00 00 */ cmpwi r0, 0
+/* 80356CD4 00352934 41 82 00 24 */ beq lbl_80356CF8
+/* 80356CD8 00352938 38 60 00 00 */ li r3, 0
+/* 80356CDC 0035293C 38 00 00 06 */ li r0, 6
+/* 80356CE0 00352940 90 78 01 7C */ stw r3, 0x17c(r24)
+/* 80356CE4 00352944 7F 03 C3 78 */ mr r3, r24
+/* 80356CE8 00352948 38 80 00 00 */ li r4, 0
+/* 80356CEC 0035294C 38 A0 00 00 */ li r5, 0
+/* 80356CF0 00352950 90 18 00 10 */ stw r0, 0x10(r24)
+/* 80356CF4 00352954 4B FF A5 59 */ bl ghiCallProgressCallback
+lbl_80356CF8:
+/* 80356CF8 00352958 38 00 00 08 */ li r0, 8
+/* 80356CFC 0035295C 7F 03 C3 78 */ mr r3, r24
+/* 80356D00 00352960 90 18 00 10 */ stw r0, 0x10(r24)
+/* 80356D04 00352964 38 80 00 00 */ li r4, 0
+/* 80356D08 00352968 38 A0 00 00 */ li r5, 0
+/* 80356D0C 0035296C 4B FF A5 41 */ bl ghiCallProgressCallback
+/* 80356D10 00352970 48 00 03 4C */ b lbl_8035705C
+lbl_80356D14:
+/* 80356D14 00352974 2C 00 00 03 */ cmpwi r0, 3
+/* 80356D18 00352978 40 82 01 78 */ bne lbl_80356E90
+/* 80356D1C 0035297C 80 18 01 30 */ lwz r0, 0x130(r24)
+/* 80356D20 00352980 2C 00 00 0A */ cmpwi r0, 0xa
+/* 80356D24 00352984 40 81 00 18 */ ble lbl_80356D3C
+/* 80356D28 00352988 38 60 00 01 */ li r3, 1
+/* 80356D2C 0035298C 38 00 00 0B */ li r0, 0xb
+/* 80356D30 00352990 90 78 01 20 */ stw r3, 0x120(r24)
+/* 80356D34 00352994 90 18 00 3C */ stw r0, 0x3c(r24)
+/* 80356D38 00352998 48 00 03 24 */ b lbl_8035705C
+lbl_80356D3C:
+/* 80356D3C 0035299C 7F A3 EB 78 */ mr r3, r29
+/* 80356D40 003529A0 38 9E 00 80 */ addi r4, r30, 0x80
+/* 80356D44 003529A4 4B E7 7A 5D */ bl func_801CE7A0
+/* 80356D48 003529A8 2C 03 00 00 */ cmpwi r3, 0
+/* 80356D4C 003529AC 41 82 01 44 */ beq lbl_80356E90
+/* 80356D50 003529B0 3C 80 80 42 */ lis r4, lbl_80422D48@ha
+/* 80356D54 003529B4 3B 63 00 09 */ addi r27, r3, 9
+/* 80356D58 003529B8 38 84 2D 48 */ addi r4, r4, lbl_80422D48@l
+/* 80356D5C 003529BC 80 A4 00 38 */ lwz r5, 0x38(r4)
+/* 80356D60 003529C0 48 00 00 08 */ b lbl_80356D68
+lbl_80356D64:
+/* 80356D64 003529C4 3B 7B 00 01 */ addi r27, r27, 1
+lbl_80356D68:
+/* 80356D68 003529C8 88 9B 00 00 */ lbz r4, 0(r27)
+/* 80356D6C 003529CC 38 00 00 00 */ li r0, 0
+/* 80356D70 003529D0 7C 84 07 75 */ extsb. r4, r4
+/* 80356D74 003529D4 41 80 00 0C */ blt lbl_80356D80
+/* 80356D78 003529D8 2C 04 01 00 */ cmpwi r4, 0x100
+/* 80356D7C 003529DC 41 80 00 08 */ blt lbl_80356D84
+lbl_80356D80:
+/* 80356D80 003529E0 38 00 00 01 */ li r0, 1
+lbl_80356D84:
+/* 80356D84 003529E4 2C 00 00 00 */ cmpwi r0, 0
+/* 80356D88 003529E8 41 82 00 0C */ beq lbl_80356D94
+/* 80356D8C 003529EC 38 00 00 00 */ li r0, 0
+/* 80356D90 003529F0 48 00 00 14 */ b lbl_80356DA4
+lbl_80356D94:
+/* 80356D94 003529F4 80 65 00 08 */ lwz r3, 8(r5)
+/* 80356D98 003529F8 54 80 08 3C */ slwi r0, r4, 1
+/* 80356D9C 003529FC 7C 03 02 2E */ lhzx r0, r3, r0
+/* 80356DA0 00352A00 54 00 05 EE */ rlwinm r0, r0, 0, 0x17, 0x17
+lbl_80356DA4:
+/* 80356DA4 00352A04 2C 00 00 00 */ cmpwi r0, 0
+/* 80356DA8 00352A08 40 82 FF BC */ bne lbl_80356D64
+/* 80356DAC 00352A0C 7F 66 DB 78 */ mr r6, r27
+/* 80356DB0 00352A10 48 00 00 08 */ b lbl_80356DB8
+lbl_80356DB4:
+/* 80356DB4 00352A14 38 C6 00 01 */ addi r6, r6, 1
+lbl_80356DB8:
+/* 80356DB8 00352A18 88 06 00 00 */ lbz r0, 0(r6)
+/* 80356DBC 00352A1C 7C 04 07 75 */ extsb. r4, r0
+/* 80356DC0 00352A20 41 82 00 40 */ beq lbl_80356E00
+/* 80356DC4 00352A24 38 00 00 00 */ li r0, 0
+/* 80356DC8 00352A28 41 80 00 0C */ blt lbl_80356DD4
+/* 80356DCC 00352A2C 2C 04 01 00 */ cmpwi r4, 0x100
+/* 80356DD0 00352A30 41 80 00 08 */ blt lbl_80356DD8
+lbl_80356DD4:
+/* 80356DD4 00352A34 38 00 00 01 */ li r0, 1
+lbl_80356DD8:
+/* 80356DD8 00352A38 2C 00 00 00 */ cmpwi r0, 0
+/* 80356DDC 00352A3C 41 82 00 0C */ beq lbl_80356DE8
+/* 80356DE0 00352A40 38 00 00 00 */ li r0, 0
+/* 80356DE4 00352A44 48 00 00 14 */ b lbl_80356DF8
+lbl_80356DE8:
+/* 80356DE8 00352A48 80 65 00 08 */ lwz r3, 8(r5)
+/* 80356DEC 00352A4C 54 80 08 3C */ slwi r0, r4, 1
+/* 80356DF0 00352A50 7C 03 02 2E */ lhzx r0, r3, r0
+/* 80356DF4 00352A54 54 00 05 EE */ rlwinm r0, r0, 0, 0x17, 0x17
+lbl_80356DF8:
+/* 80356DF8 00352A58 2C 00 00 00 */ cmpwi r0, 0
+/* 80356DFC 00352A5C 41 82 FF B8 */ beq lbl_80356DB4
+lbl_80356E00:
+/* 80356E00 00352A60 38 00 00 00 */ li r0, 0
+/* 80356E04 00352A64 98 06 00 00 */ stb r0, 0(r6)
+/* 80356E08 00352A68 88 1B 00 00 */ lbz r0, 0(r27)
+/* 80356E0C 00352A6C 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 80356E10 00352A70 40 82 00 5C */ bne lbl_80356E6C
+/* 80356E14 00352A74 7F 63 DB 78 */ mr r3, r27
+/* 80356E18 00352A78 4B E6 FD 4D */ bl strlen
+/* 80356E1C 00352A7C 7C 76 1B 78 */ mr r22, r3
+/* 80356E20 00352A80 80 78 00 18 */ lwz r3, 0x18(r24)
+/* 80356E24 00352A84 4B E6 FD 41 */ bl strlen
+/* 80356E28 00352A88 7C 63 B2 14 */ add r3, r3, r22
+/* 80356E2C 00352A8C 38 63 00 0E */ addi r3, r3, 0xe
+/* 80356E30 00352A90 4B FE 24 E5 */ bl gsimalloc
+/* 80356E34 00352A94 2C 03 00 00 */ cmpwi r3, 0
+/* 80356E38 00352A98 90 78 01 2C */ stw r3, 0x12c(r24)
+/* 80356E3C 00352A9C 40 82 00 10 */ bne lbl_80356E4C
+/* 80356E40 00352AA0 38 00 00 01 */ li r0, 1
+/* 80356E44 00352AA4 90 18 01 20 */ stw r0, 0x120(r24)
+/* 80356E48 00352AA8 90 18 00 3C */ stw r0, 0x3c(r24)
+lbl_80356E4C:
+/* 80356E4C 00352AAC 80 78 01 2C */ lwz r3, 0x12c(r24)
+/* 80356E50 00352AB0 7F 67 DB 78 */ mr r7, r27
+/* 80356E54 00352AB4 80 B8 00 18 */ lwz r5, 0x18(r24)
+/* 80356E58 00352AB8 38 9E 00 8C */ addi r4, r30, 0x8c
+/* 80356E5C 00352ABC A0 D8 00 20 */ lhz r6, 0x20(r24)
+/* 80356E60 00352AC0 4C C6 31 82 */ crclr 6
+/* 80356E64 00352AC4 4B E7 5C 99 */ bl func_801CCAFC
+/* 80356E68 00352AC8 48 00 01 F4 */ b lbl_8035705C
+lbl_80356E6C:
+/* 80356E6C 00352ACC 7F 63 DB 78 */ mr r3, r27
+/* 80356E70 00352AD0 4B FE 20 95 */ bl goastrdup
+/* 80356E74 00352AD4 2C 03 00 00 */ cmpwi r3, 0
+/* 80356E78 00352AD8 90 78 01 2C */ stw r3, 0x12c(r24)
+/* 80356E7C 00352ADC 40 82 01 E0 */ bne lbl_8035705C
+/* 80356E80 00352AE0 38 00 00 01 */ li r0, 1
+/* 80356E84 00352AE4 90 18 01 20 */ stw r0, 0x120(r24)
+/* 80356E88 00352AE8 90 18 00 3C */ stw r0, 0x3c(r24)
+/* 80356E8C 00352AEC 48 00 01 D0 */ b lbl_8035705C
+lbl_80356E90:
+/* 80356E90 00352AF0 7F A3 EB 78 */ mr r3, r29
+/* 80356E94 00352AF4 38 9E 00 A0 */ addi r4, r30, 0xa0
+/* 80356E98 00352AF8 4B E7 79 09 */ bl func_801CE7A0
+/* 80356E9C 00352AFC 2C 03 00 00 */ cmpwi r3, 0
+/* 80356EA0 00352B00 7C 7F 1B 78 */ mr r31, r3
+/* 80356EA4 00352B04 41 82 01 00 */ beq lbl_80356FA4
+/* 80356EA8 00352B08 3E C0 80 40 */ lis r22, lbl_80402580@ha
+/* 80356EAC 00352B0C 8E F6 25 80 */ lbzu r23, lbl_80402580@l(r22)
+/* 80356EB0 00352B10 3B 43 00 10 */ addi r26, r3, 0x10
+/* 80356EB4 00352B14 38 61 00 0C */ addi r3, r1, 0xc
+/* 80356EB8 00352B18 89 96 00 01 */ lbz r12, 1(r22)
+/* 80356EBC 00352B1C 7F 59 D3 78 */ mr r25, r26
+/* 80356EC0 00352B20 89 76 00 02 */ lbz r11, 2(r22)
+/* 80356EC4 00352B24 89 56 00 03 */ lbz r10, 3(r22)
+/* 80356EC8 00352B28 89 36 00 04 */ lbz r9, 4(r22)
+/* 80356ECC 00352B2C 89 16 00 05 */ lbz r8, 5(r22)
+/* 80356ED0 00352B30 88 F6 00 06 */ lbz r7, 6(r22)
+/* 80356ED4 00352B34 88 D6 00 07 */ lbz r6, 7(r22)
+/* 80356ED8 00352B38 88 B6 00 08 */ lbz r5, 8(r22)
+/* 80356EDC 00352B3C 88 96 00 09 */ lbz r4, 9(r22)
+/* 80356EE0 00352B40 88 16 00 0A */ lbz r0, 0xa(r22)
+/* 80356EE4 00352B44 9A E1 00 0C */ stb r23, 0xc(r1)
+/* 80356EE8 00352B48 99 81 00 0D */ stb r12, 0xd(r1)
+/* 80356EEC 00352B4C 99 61 00 0E */ stb r11, 0xe(r1)
+/* 80356EF0 00352B50 99 41 00 0F */ stb r10, 0xf(r1)
+/* 80356EF4 00352B54 99 21 00 10 */ stb r9, 0x10(r1)
+/* 80356EF8 00352B58 99 01 00 11 */ stb r8, 0x11(r1)
+/* 80356EFC 00352B5C 98 E1 00 12 */ stb r7, 0x12(r1)
+/* 80356F00 00352B60 98 C1 00 13 */ stb r6, 0x13(r1)
+/* 80356F04 00352B64 98 A1 00 14 */ stb r5, 0x14(r1)
+/* 80356F08 00352B68 98 81 00 15 */ stb r4, 0x15(r1)
+/* 80356F0C 00352B6C 98 01 00 16 */ stb r0, 0x16(r1)
+/* 80356F10 00352B70 4B E6 FC 55 */ bl strlen
+/* 80356F14 00352B74 48 00 00 08 */ b lbl_80356F1C
+lbl_80356F18:
+/* 80356F18 00352B78 3B 39 00 01 */ addi r25, r25, 1
+lbl_80356F1C:
+/* 80356F1C 00352B7C 2C 19 00 00 */ cmpwi r25, 0
+/* 80356F20 00352B80 41 82 00 28 */ beq lbl_80356F48
+/* 80356F24 00352B84 88 19 00 00 */ lbz r0, 0(r25)
+/* 80356F28 00352B88 7C 00 07 75 */ extsb. r0, r0
+/* 80356F2C 00352B8C 41 82 00 1C */ beq lbl_80356F48
+/* 80356F30 00352B90 2C 00 00 0A */ cmpwi r0, 0xa
+/* 80356F34 00352B94 41 82 00 14 */ beq lbl_80356F48
+/* 80356F38 00352B98 2C 00 00 0D */ cmpwi r0, 0xd
+/* 80356F3C 00352B9C 41 82 00 0C */ beq lbl_80356F48
+/* 80356F40 00352BA0 2C 00 00 20 */ cmpwi r0, 0x20
+/* 80356F44 00352BA4 40 82 FF D4 */ bne lbl_80356F18
+lbl_80356F48:
+/* 80356F48 00352BA8 7C BA C8 50 */ subf r5, r26, r25
+/* 80356F4C 00352BAC 7C 05 18 00 */ cmpw r5, r3
+/* 80356F50 00352BB0 40 81 00 18 */ ble lbl_80356F68
+/* 80356F54 00352BB4 38 60 00 01 */ li r3, 1
+/* 80356F58 00352BB8 38 00 00 10 */ li r0, 0x10
+/* 80356F5C 00352BBC 90 78 01 20 */ stw r3, 0x120(r24)
+/* 80356F60 00352BC0 90 18 00 3C */ stw r0, 0x3c(r24)
+/* 80356F64 00352BC4 48 00 00 F8 */ b lbl_8035705C
+lbl_80356F68:
+/* 80356F68 00352BC8 7C 03 28 00 */ cmpw r3, r5
+/* 80356F6C 00352BCC 40 82 00 2C */ bne lbl_80356F98
+/* 80356F70 00352BD0 7F 43 D3 78 */ mr r3, r26
+/* 80356F74 00352BD4 38 81 00 0C */ addi r4, r1, 0xc
+/* 80356F78 00352BD8 4B E7 75 F1 */ bl func_801CE568
+/* 80356F7C 00352BDC 2C 03 00 00 */ cmpwi r3, 0
+/* 80356F80 00352BE0 41 80 00 18 */ blt lbl_80356F98
+/* 80356F84 00352BE4 38 60 00 01 */ li r3, 1
+/* 80356F88 00352BE8 38 00 00 10 */ li r0, 0x10
+/* 80356F8C 00352BEC 90 78 01 20 */ stw r3, 0x120(r24)
+/* 80356F90 00352BF0 90 18 00 3C */ stw r0, 0x3c(r24)
+/* 80356F94 00352BF4 48 00 00 C8 */ b lbl_8035705C
+lbl_80356F98:
+/* 80356F98 00352BF8 7F 43 D3 78 */ mr r3, r26
+/* 80356F9C 00352BFC 4B E7 97 71 */ bl func_801D070C
+/* 80356FA0 00352C00 90 78 01 28 */ stw r3, 0x128(r24)
+lbl_80356FA4:
+/* 80356FA4 00352C04 7F A3 EB 78 */ mr r3, r29
+/* 80356FA8 00352C08 38 9E 00 B0 */ addi r4, r30, 0xb0
+/* 80356FAC 00352C0C 4B E7 77 F5 */ bl func_801CE7A0
+/* 80356FB0 00352C10 7C 03 00 D0 */ neg r0, r3
+/* 80356FB4 00352C14 7C 00 1B 78 */ or r0, r0, r3
+/* 80356FB8 00352C18 54 00 0F FF */ rlwinm. r0, r0, 1, 0x1f, 0x1f
+/* 80356FBC 00352C1C 90 18 01 34 */ stw r0, 0x134(r24)
+/* 80356FC0 00352C20 41 82 00 18 */ beq lbl_80356FD8
+/* 80356FC4 00352C24 38 00 00 00 */ li r0, 0
+/* 80356FC8 00352C28 98 18 01 38 */ stb r0, 0x138(r24)
+/* 80356FCC 00352C2C 90 18 01 44 */ stw r0, 0x144(r24)
+/* 80356FD0 00352C30 90 18 01 48 */ stw r0, 0x148(r24)
+/* 80356FD4 00352C34 90 18 01 4C */ stw r0, 0x14c(r24)
+lbl_80356FD8:
+/* 80356FD8 00352C38 80 78 00 0C */ lwz r3, 0xc(r24)
+/* 80356FDC 00352C3C 38 03 FF FD */ addi r0, r3, -3
+/* 80356FE0 00352C40 28 00 00 01 */ cmplwi r0, 1
+/* 80356FE4 00352C44 41 81 00 10 */ bgt lbl_80356FF4
+/* 80356FE8 00352C48 38 00 00 01 */ li r0, 1
+/* 80356FEC 00352C4C 90 18 01 20 */ stw r0, 0x120(r24)
+/* 80356FF0 00352C50 48 00 00 6C */ b lbl_8035705C
+lbl_80356FF4:
+/* 80356FF4 00352C54 38 00 00 0A */ li r0, 0xa
+/* 80356FF8 00352C58 2C 1F 00 00 */ cmpwi r31, 0
+/* 80356FFC 00352C5C 90 18 00 10 */ stw r0, 0x10(r24)
+/* 80357000 00352C60 41 82 00 1C */ beq lbl_8035701C
+/* 80357004 00352C64 80 18 01 28 */ lwz r0, 0x128(r24)
+/* 80357008 00352C68 2C 00 00 00 */ cmpwi r0, 0
+/* 8035700C 00352C6C 40 82 00 10 */ bne lbl_8035701C
+/* 80357010 00352C70 38 00 00 01 */ li r0, 1
+/* 80357014 00352C74 90 18 01 20 */ stw r0, 0x120(r24)
+/* 80357018 00352C78 48 00 00 44 */ b lbl_8035705C
+lbl_8035701C:
+/* 8035701C 00352C7C 2C 1B 00 00 */ cmpwi r27, 0
+/* 80357020 00352C80 40 81 00 3C */ ble lbl_8035705C
+/* 80357024 00352C84 7F 03 C3 78 */ mr r3, r24
+/* 80357028 00352C88 7F 84 E3 78 */ mr r4, r28
+/* 8035702C 00352C8C 7F 65 DB 78 */ mr r5, r27
+/* 80357030 00352C90 4B FF F8 65 */ bl ghiProcessIncomingFileData
+/* 80357034 00352C94 48 00 00 28 */ b lbl_8035705C
+lbl_80357038:
+/* 80357038 00352C98 2C 16 00 02 */ cmpwi r22, 2
+/* 8035703C 00352C9C 40 82 00 20 */ bne lbl_8035705C
+/* 80357040 00352CA0 38 60 00 01 */ li r3, 1
+/* 80357044 00352CA4 38 00 00 07 */ li r0, 7
+/* 80357048 00352CA8 90 78 01 20 */ stw r3, 0x120(r24)
+/* 8035704C 00352CAC 80 78 00 4C */ lwz r3, 0x4c(r24)
+/* 80357050 00352CB0 90 18 00 3C */ stw r0, 0x3c(r24)
+/* 80357054 00352CB4 4B FE 0F 55 */ bl GOAGetLastError
+/* 80357058 00352CB8 90 78 00 50 */ stw r3, 0x50(r24)
+lbl_8035705C:
+/* 8035705C 00352CBC 39 61 10 40 */ addi r11, r1, 0x1040
+/* 80357060 00352CC0 4B E7 01 01 */ bl func_801C7160
+/* 80357064 00352CC4 80 01 10 44 */ lwz r0, 0x1044(r1)
+/* 80357068 00352CC8 7C 08 03 A6 */ mtlr r0
+/* 8035706C 00352CCC 38 21 10 40 */ addi r1, r1, 0x1040
+/* 80357070 00352CD0 4E 80 00 20 */ blr
+
+.global ghiDoReceivingFile
+ghiDoReceivingFile:
+/* 80357074 00352CD4 94 21 DF E0 */ stwu r1, -0x2020(r1)
+/* 80357078 00352CD8 7C 08 02 A6 */ mflr r0
+/* 8035707C 00352CDC 90 01 20 24 */ stw r0, 0x2024(r1)
+/* 80357080 00352CE0 93 E1 20 1C */ stw r31, 0x201c(r1)
+/* 80357084 00352CE4 93 C1 20 18 */ stw r30, 0x2018(r1)
+/* 80357088 00352CE8 93 A1 20 14 */ stw r29, 0x2014(r1)
+/* 8035708C 00352CEC 7C 7D 1B 78 */ mr r29, r3
+/* 80357090 00352CF0 4B FE 1F 49 */ bl current_time
+/* 80357094 00352CF4 7C 7E 1B 78 */ mr r30, r3
+/* 80357098 00352CF8 38 60 00 00 */ li r3, 0
+/* 8035709C 00352CFC 3B E0 20 00 */ li r31, 0x2000
+/* 803570A0 00352D00 48 00 00 F8 */ b lbl_80357198
+lbl_803570A4:
+/* 803570A4 00352D04 93 E1 00 08 */ stw r31, 8(r1)
+/* 803570A8 00352D08 7F A3 EB 78 */ mr r3, r29
+/* 803570AC 00352D0C 38 81 00 10 */ addi r4, r1, 0x10
+/* 803570B0 00352D10 38 A1 00 08 */ addi r5, r1, 8
+/* 803570B4 00352D14 4B FF A3 91 */ bl ghiDoReceive
+/* 803570B8 00352D18 2C 03 00 03 */ cmpwi r3, 3
+/* 803570BC 00352D1C 41 82 00 F4 */ beq lbl_803571B0
+/* 803570C0 00352D20 2C 03 00 01 */ cmpwi r3, 1
+/* 803570C4 00352D24 41 82 00 EC */ beq lbl_803571B0
+/* 803570C8 00352D28 2C 03 00 02 */ cmpwi r3, 2
+/* 803570CC 00352D2C 40 82 00 30 */ bne lbl_803570FC
+/* 803570D0 00352D30 80 7D 01 28 */ lwz r3, 0x128(r29)
+/* 803570D4 00352D34 38 00 00 01 */ li r0, 1
+/* 803570D8 00352D38 90 1D 01 20 */ stw r0, 0x120(r29)
+/* 803570DC 00352D3C 2C 03 00 00 */ cmpwi r3, 0
+/* 803570E0 00352D40 40 81 00 D0 */ ble lbl_803571B0
+/* 803570E4 00352D44 80 1D 01 24 */ lwz r0, 0x124(r29)
+/* 803570E8 00352D48 7C 00 18 00 */ cmpw r0, r3
+/* 803570EC 00352D4C 40 80 00 C4 */ bge lbl_803571B0
+/* 803570F0 00352D50 38 00 00 0F */ li r0, 0xf
+/* 803570F4 00352D54 90 1D 00 3C */ stw r0, 0x3c(r29)
+/* 803570F8 00352D58 48 00 00 B8 */ b lbl_803571B0
+lbl_803570FC:
+/* 803570FC 00352D5C 80 1D 01 94 */ lwz r0, 0x194(r29)
+/* 80357100 00352D60 2C 00 00 00 */ cmpwi r0, 0
+/* 80357104 00352D64 41 82 00 74 */ beq lbl_80357178
+/* 80357108 00352D68 80 A1 00 08 */ lwz r5, 8(r1)
+/* 8035710C 00352D6C 38 7D 00 C0 */ addi r3, r29, 0xc0
+/* 80357110 00352D70 38 81 00 10 */ addi r4, r1, 0x10
+/* 80357114 00352D74 4B FF 99 A9 */ bl ghiAppendDataToBuffer
+/* 80357118 00352D78 2C 03 00 00 */ cmpwi r3, 0
+/* 8035711C 00352D7C 41 82 00 94 */ beq lbl_803571B0
+/* 80357120 00352D80 80 1D 00 AC */ lwz r0, 0xac(r29)
+/* 80357124 00352D84 7F A3 EB 78 */ mr r3, r29
+/* 80357128 00352D88 90 1D 00 A8 */ stw r0, 0xa8(r29)
+/* 8035712C 00352D8C 4B FF A1 C9 */ bl ghiDecryptReceivedData
+/* 80357130 00352D90 2C 03 00 00 */ cmpwi r3, 0
+/* 80357134 00352D94 40 82 00 18 */ bne lbl_8035714C
+/* 80357138 00352D98 38 60 00 01 */ li r3, 1
+/* 8035713C 00352D9C 38 00 00 11 */ li r0, 0x11
+/* 80357140 00352DA0 90 7D 01 20 */ stw r3, 0x120(r29)
+/* 80357144 00352DA4 90 1D 00 3C */ stw r0, 0x3c(r29)
+/* 80357148 00352DA8 48 00 00 68 */ b lbl_803571B0
+lbl_8035714C:
+/* 8035714C 00352DAC 80 9D 00 AC */ lwz r4, 0xac(r29)
+/* 80357150 00352DB0 80 1D 00 A8 */ lwz r0, 0xa8(r29)
+/* 80357154 00352DB4 7C A4 00 51 */ subf. r5, r4, r0
+/* 80357158 00352DB8 41 82 00 38 */ beq lbl_80357190
+/* 8035715C 00352DBC 80 1D 00 A0 */ lwz r0, 0xa0(r29)
+/* 80357160 00352DC0 7F A3 EB 78 */ mr r3, r29
+/* 80357164 00352DC4 7C 80 22 14 */ add r4, r0, r4
+/* 80357168 00352DC8 4B FF F7 2D */ bl ghiProcessIncomingFileData
+/* 8035716C 00352DCC 2C 03 00 00 */ cmpwi r3, 0
+/* 80357170 00352DD0 40 82 00 20 */ bne lbl_80357190
+/* 80357174 00352DD4 48 00 00 3C */ b lbl_803571B0
+lbl_80357178:
+/* 80357178 00352DD8 80 A1 00 08 */ lwz r5, 8(r1)
+/* 8035717C 00352DDC 7F A3 EB 78 */ mr r3, r29
+/* 80357180 00352DE0 38 81 00 10 */ addi r4, r1, 0x10
+/* 80357184 00352DE4 4B FF F7 11 */ bl ghiProcessIncomingFileData
+/* 80357188 00352DE8 2C 03 00 00 */ cmpwi r3, 0
+/* 8035718C 00352DEC 41 82 00 24 */ beq lbl_803571B0
+lbl_80357190:
+/* 80357190 00352DF0 4B FE 1E 49 */ bl current_time
+/* 80357194 00352DF4 7C 7E 18 50 */ subf r3, r30, r3
+lbl_80357198:
+/* 80357198 00352DF8 80 1D 01 20 */ lwz r0, 0x120(r29)
+/* 8035719C 00352DFC 2C 00 00 00 */ cmpwi r0, 0
+/* 803571A0 00352E00 40 82 00 10 */ bne lbl_803571B0
+/* 803571A4 00352E04 80 1D 01 84 */ lwz r0, 0x184(r29)
+/* 803571A8 00352E08 7C 03 00 40 */ cmplw r3, r0
+/* 803571AC 00352E0C 41 80 FE F8 */ blt lbl_803570A4
+lbl_803571B0:
+/* 803571B0 00352E10 80 01 20 24 */ lwz r0, 0x2024(r1)
+/* 803571B4 00352E14 83 E1 20 1C */ lwz r31, 0x201c(r1)
+/* 803571B8 00352E18 83 C1 20 18 */ lwz r30, 0x2018(r1)
+/* 803571BC 00352E1C 83 A1 20 14 */ lwz r29, 0x2014(r1)
+/* 803571C0 00352E20 7C 08 03 A6 */ mtlr r0
+/* 803571C4 00352E24 38 21 20 20 */ addi r1, r1, 0x2020
+/* 803571C8 00352E28 4E 80 00 20 */ blr