summaryrefslogtreecommitdiff
path: root/asm/SDK/DWC/gamespy/ghttpMain.s
blob: 382e22b04d317cceb7abd7999e844c9a82dd155b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global ghiHandleStatus
ghiHandleStatus:
/* 80353C6C 0034F8CC  3C 80 51 EC */	lis r4, 0x51EB851F@ha
/* 80353C70 0034F8D0  80 A3 01 14 */	lwz r5, 0x114(r3)
/* 80353C74 0034F8D4  38 04 85 1F */	addi r0, r4, 0x51EB851F@l
/* 80353C78 0034F8D8  7C 00 28 96 */	mulhw r0, r0, r5
/* 80353C7C 0034F8DC  7C 00 2E 70 */	srawi r0, r0, 5
/* 80353C80 0034F8E0  54 04 0F FE */	srwi r4, r0, 0x1f
/* 80353C84 0034F8E4  7C 00 22 14 */	add r0, r0, r4
/* 80353C88 0034F8E8  2C 00 00 03 */	cmpwi r0, 3
/* 80353C8C 0034F8EC  4D 82 00 20 */	beqlr
/* 80353C90 0034F8F0  40 80 00 14 */	bge lbl_80353CA4
/* 80353C94 0034F8F4  2C 00 00 01 */	cmpwi r0, 1
/* 80353C98 0034F8F8  4D 82 00 20 */	beqlr
/* 80353C9C 0034F8FC  4C 80 00 20 */	bgelr
/* 80353CA0 0034F900  4E 80 00 20 */	blr
lbl_80353CA4:
/* 80353CA4 0034F904  2C 00 00 05 */	cmpwi r0, 5
/* 80353CA8 0034F908  41 82 00 78 */	beq lbl_80353D20
/* 80353CAC 0034F90C  4C 80 00 20 */	bgelr
/* 80353CB0 0034F910  48 00 00 10 */	b lbl_80353CC0
/* 80353CB4 0034F914  4E 80 00 20 */	blr
/* 80353CB8 0034F918  4E 80 00 20 */	blr
/* 80353CBC 0034F91C  4E 80 00 20 */	blr
lbl_80353CC0:
/* 80353CC0 0034F920  2C 05 01 94 */	cmpwi r5, 0x194
/* 80353CC4 0034F924  41 82 00 44 */	beq lbl_80353D08
/* 80353CC8 0034F928  40 80 00 1C */	bge lbl_80353CE4
/* 80353CCC 0034F92C  2C 05 01 92 */	cmpwi r5, 0x192
/* 80353CD0 0034F930  41 82 00 44 */	beq lbl_80353D14
/* 80353CD4 0034F934  40 80 00 28 */	bge lbl_80353CFC
/* 80353CD8 0034F938  2C 05 01 91 */	cmpwi r5, 0x191
/* 80353CDC 0034F93C  40 80 00 14 */	bge lbl_80353CF0
/* 80353CE0 0034F940  48 00 00 34 */	b lbl_80353D14
lbl_80353CE4:
/* 80353CE4 0034F944  2C 05 01 9A */	cmpwi r5, 0x19a
/* 80353CE8 0034F948  41 82 00 20 */	beq lbl_80353D08
/* 80353CEC 0034F94C  48 00 00 28 */	b lbl_80353D14
lbl_80353CF0:
/* 80353CF0 0034F950  38 00 00 09 */	li r0, 9
/* 80353CF4 0034F954  90 03 00 3C */	stw r0, 0x3c(r3)
/* 80353CF8 0034F958  4E 80 00 20 */	blr
lbl_80353CFC:
/* 80353CFC 0034F95C  38 00 00 0A */	li r0, 0xa
/* 80353D00 0034F960  90 03 00 3C */	stw r0, 0x3c(r3)
/* 80353D04 0034F964  4E 80 00 20 */	blr
lbl_80353D08:
/* 80353D08 0034F968  38 00 00 0B */	li r0, 0xb
/* 80353D0C 0034F96C  90 03 00 3C */	stw r0, 0x3c(r3)
/* 80353D10 0034F970  4E 80 00 20 */	blr
lbl_80353D14:
/* 80353D14 0034F974  38 00 00 08 */	li r0, 8
/* 80353D18 0034F978  90 03 00 3C */	stw r0, 0x3c(r3)
/* 80353D1C 0034F97C  4E 80 00 20 */	blr
lbl_80353D20:
/* 80353D20 0034F980  38 00 00 0C */	li r0, 0xc
/* 80353D24 0034F984  90 03 00 3C */	stw r0, 0x3c(r3)
/* 80353D28 0034F988  4E 80 00 20 */	blr

.global ghiProcessConnection
ghiProcessConnection:
/* 80353D2C 0034F98C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80353D30 0034F990  7C 08 02 A6 */	mflr r0
/* 80353D34 0034F994  90 01 00 14 */	stw r0, 0x14(r1)
/* 80353D38 0034F998  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80353D3C 0034F99C  7C 7F 1B 78 */	mr r31, r3
/* 80353D40 0034F9A0  93 C1 00 08 */	stw r30, 8(r1)
/* 80353D44 0034F9A4  80 03 01 50 */	lwz r0, 0x150(r3)
/* 80353D48 0034F9A8  2C 00 00 00 */	cmpwi r0, 0
/* 80353D4C 0034F9AC  41 82 00 0C */	beq lbl_80353D58
/* 80353D50 0034F9B0  38 60 00 00 */	li r3, 0
/* 80353D54 0034F9B4  48 00 01 5C */	b lbl_80353EB0
lbl_80353D58:
/* 80353D58 0034F9B8  80 03 00 10 */	lwz r0, 0x10(r3)
/* 80353D5C 0034F9BC  38 80 00 01 */	li r4, 1
/* 80353D60 0034F9C0  90 83 01 50 */	stw r4, 0x150(r3)
/* 80353D64 0034F9C4  2C 00 00 00 */	cmpwi r0, 0
/* 80353D68 0034F9C8  40 82 00 08 */	bne lbl_80353D70
/* 80353D6C 0034F9CC  48 00 1D 7D */	bl ghiDoSocketInit
lbl_80353D70:
/* 80353D70 0034F9D0  80 1F 00 10 */	lwz r0, 0x10(r31)
/* 80353D74 0034F9D4  2C 00 00 01 */	cmpwi r0, 1
/* 80353D78 0034F9D8  40 82 00 0C */	bne lbl_80353D84
/* 80353D7C 0034F9DC  7F E3 FB 78 */	mr r3, r31
/* 80353D80 0034F9E0  48 00 1E 25 */	bl ghiDoHostLookup
lbl_80353D84:
/* 80353D84 0034F9E4  80 1F 00 10 */	lwz r0, 0x10(r31)
/* 80353D88 0034F9E8  2C 00 00 02 */	cmpwi r0, 2
/* 80353D8C 0034F9EC  40 82 00 0C */	bne lbl_80353D98
/* 80353D90 0034F9F0  7F E3 FB 78 */	mr r3, r31
/* 80353D94 0034F9F4  48 00 1F 15 */	bl ghiDoLookupPending
lbl_80353D98:
/* 80353D98 0034F9F8  80 1F 00 10 */	lwz r0, 0x10(r31)
/* 80353D9C 0034F9FC  2C 00 00 03 */	cmpwi r0, 3
/* 80353DA0 0034FA00  40 82 00 0C */	bne lbl_80353DAC
/* 80353DA4 0034FA04  7F E3 FB 78 */	mr r3, r31
/* 80353DA8 0034FA08  48 00 1F A1 */	bl ghiDoConnecting
lbl_80353DAC:
/* 80353DAC 0034FA0C  80 1F 00 10 */	lwz r0, 0x10(r31)
/* 80353DB0 0034FA10  2C 00 00 04 */	cmpwi r0, 4
/* 80353DB4 0034FA14  40 82 00 0C */	bne lbl_80353DC0
/* 80353DB8 0034FA18  7F E3 FB 78 */	mr r3, r31
/* 80353DBC 0034FA1C  48 00 21 9D */	bl ghiDoSecuringSession
lbl_80353DC0:
/* 80353DC0 0034FA20  80 1F 00 10 */	lwz r0, 0x10(r31)
/* 80353DC4 0034FA24  2C 00 00 05 */	cmpwi r0, 5
/* 80353DC8 0034FA28  40 82 00 0C */	bne lbl_80353DD4
/* 80353DCC 0034FA2C  7F E3 FB 78 */	mr r3, r31
/* 80353DD0 0034FA30  48 00 22 C1 */	bl ghiDoSendingRequest
lbl_80353DD4:
/* 80353DD4 0034FA34  80 1F 00 10 */	lwz r0, 0x10(r31)
/* 80353DD8 0034FA38  2C 00 00 06 */	cmpwi r0, 6
/* 80353DDC 0034FA3C  40 82 00 0C */	bne lbl_80353DE8
/* 80353DE0 0034FA40  7F E3 FB 78 */	mr r3, r31
/* 80353DE4 0034FA44  48 00 25 81 */	bl ghiDoPosting
lbl_80353DE8:
/* 80353DE8 0034FA48  80 1F 00 10 */	lwz r0, 0x10(r31)
/* 80353DEC 0034FA4C  2C 00 00 07 */	cmpwi r0, 7
/* 80353DF0 0034FA50  40 82 00 0C */	bne lbl_80353DFC
/* 80353DF4 0034FA54  7F E3 FB 78 */	mr r3, r31
/* 80353DF8 0034FA58  48 00 26 65 */	bl ghiDoWaiting
lbl_80353DFC:
/* 80353DFC 0034FA5C  80 1F 00 10 */	lwz r0, 0x10(r31)
/* 80353E00 0034FA60  2C 00 00 08 */	cmpwi r0, 8
/* 80353E04 0034FA64  40 82 00 0C */	bne lbl_80353E10
/* 80353E08 0034FA68  7F E3 FB 78 */	mr r3, r31
/* 80353E0C 0034FA6C  48 00 28 21 */	bl ghiDoReceivingStatus
lbl_80353E10:
/* 80353E10 0034FA70  80 1F 00 10 */	lwz r0, 0x10(r31)
/* 80353E14 0034FA74  2C 00 00 09 */	cmpwi r0, 9
/* 80353E18 0034FA78  40 82 00 0C */	bne lbl_80353E24
/* 80353E1C 0034FA7C  7F E3 FB 78 */	mr r3, r31
/* 80353E20 0034FA80  48 00 2C E1 */	bl ghiDoReceivingHeaders
lbl_80353E24:
/* 80353E24 0034FA84  80 1F 00 10 */	lwz r0, 0x10(r31)
/* 80353E28 0034FA88  2C 00 00 0A */	cmpwi r0, 0xa
/* 80353E2C 0034FA8C  40 82 00 0C */	bne lbl_80353E38
/* 80353E30 0034FA90  7F E3 FB 78 */	mr r3, r31
/* 80353E34 0034FA94  48 00 32 41 */	bl ghiDoReceivingFile
lbl_80353E38:
/* 80353E38 0034FA98  80 1F 01 2C */	lwz r0, 0x12c(r31)
/* 80353E3C 0034FA9C  2C 00 00 00 */	cmpwi r0, 0
/* 80353E40 0034FAA0  41 82 00 0C */	beq lbl_80353E4C
/* 80353E44 0034FAA4  7F E3 FB 78 */	mr r3, r31
/* 80353E48 0034FAA8  4B FF DE 4D */	bl ghiRedirectConnection
lbl_80353E4C:
/* 80353E4C 0034FAAC  80 1F 00 3C */	lwz r0, 0x3c(r31)
/* 80353E50 0034FAB0  83 DF 01 20 */	lwz r30, 0x120(r31)
/* 80353E54 0034FAB4  2C 00 00 12 */	cmpwi r0, 0x12
/* 80353E58 0034FAB8  40 82 00 24 */	bne lbl_80353E7C
/* 80353E5C 0034FABC  2C 1E 00 00 */	cmpwi r30, 0
/* 80353E60 0034FAC0  40 82 00 1C */	bne lbl_80353E7C
/* 80353E64 0034FAC4  80 7F 00 4C */	lwz r3, 0x4c(r31)
/* 80353E68 0034FAC8  4B FE 49 E5 */	bl CanReceiveOnSocket
/* 80353E6C 0034FACC  2C 03 00 00 */	cmpwi r3, 0
/* 80353E70 0034FAD0  40 82 00 0C */	bne lbl_80353E7C
/* 80353E74 0034FAD4  38 00 00 01 */	li r0, 1
/* 80353E78 0034FAD8  90 1F 01 20 */	stw r0, 0x120(r31)
lbl_80353E7C:
/* 80353E7C 0034FADC  80 1F 01 20 */	lwz r0, 0x120(r31)
/* 80353E80 0034FAE0  2C 00 00 00 */	cmpwi r0, 0
/* 80353E84 0034FAE4  41 82 00 20 */	beq lbl_80353EA4
/* 80353E88 0034FAE8  7F E3 FB 78 */	mr r3, r31
/* 80353E8C 0034FAEC  4B FF FD E1 */	bl ghiHandleStatus
/* 80353E90 0034FAF0  7F E3 FB 78 */	mr r3, r31
/* 80353E94 0034FAF4  4B FF D3 31 */	bl ghiCallCompletedCallback
/* 80353E98 0034FAF8  7F E3 FB 78 */	mr r3, r31
/* 80353E9C 0034FAFC  4B FF DB 89 */	bl ghiFreeConnection
/* 80353EA0 0034FB00  48 00 00 0C */	b lbl_80353EAC
lbl_80353EA4:
/* 80353EA4 0034FB04  38 00 00 00 */	li r0, 0
/* 80353EA8 0034FB08  90 1F 01 50 */	stw r0, 0x150(r31)
lbl_80353EAC:
/* 80353EAC 0034FB0C  7F C3 F3 78 */	mr r3, r30
lbl_80353EB0:
/* 80353EB0 0034FB10  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80353EB4 0034FB14  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80353EB8 0034FB18  83 C1 00 08 */	lwz r30, 8(r1)
/* 80353EBC 0034FB1C  7C 08 03 A6 */	mtlr r0
/* 80353EC0 0034FB20  38 21 00 10 */	addi r1, r1, 0x10
/* 80353EC4 0034FB24  4E 80 00 20 */	blr

.global ghttpStartup
ghttpStartup:
/* 80353EC8 0034FB28  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80353ECC 0034FB2C  7C 08 02 A6 */	mflr r0
/* 80353ED0 0034FB30  90 01 00 14 */	stw r0, 0x14(r1)
/* 80353ED4 0034FB34  4B FF D4 19 */	bl ghiLock
/* 80353ED8 0034FB38  80 6D B0 D8 */	lwz r3, lbl_80640398-_SDA_BASE_(r13)
/* 80353EDC 0034FB3C  38 03 00 01 */	addi r0, r3, 1
/* 80353EE0 0034FB40  2C 00 00 01 */	cmpwi r0, 1
/* 80353EE4 0034FB44  90 0D B0 D8 */	stw r0, lbl_80640398-_SDA_BASE_(r13)
/* 80353EE8 0034FB48  40 82 00 1C */	bne lbl_80353F04
/* 80353EEC 0034FB4C  4B FF D3 F9 */	bl ghiCreateLock
/* 80353EF0 0034FB50  38 60 00 7D */	li r3, 0x7d
/* 80353EF4 0034FB54  38 00 00 FA */	li r0, 0xfa
/* 80353EF8 0034FB58  90 6D 93 90 */	stw r3, lbl_8063E650-_SDA_BASE_(r13)
/* 80353EFC 0034FB5C  90 0D 93 94 */	stw r0, lbl_8063E654-_SDA_BASE_(r13)
/* 80353F00 0034FB60  48 00 00 08 */	b lbl_80353F08
lbl_80353F04:
/* 80353F04 0034FB64  4B FF D3 ED */	bl ghiUnlock
lbl_80353F08:
/* 80353F08 0034FB68  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80353F0C 0034FB6C  7C 08 03 A6 */	mtlr r0
/* 80353F10 0034FB70  38 21 00 10 */	addi r1, r1, 0x10
/* 80353F14 0034FB74  4E 80 00 20 */	blr

.global ghttpCleanup
ghttpCleanup:
/* 80353F18 0034FB78  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80353F1C 0034FB7C  7C 08 02 A6 */	mflr r0
/* 80353F20 0034FB80  90 01 00 14 */	stw r0, 0x14(r1)
/* 80353F24 0034FB84  4B FF D3 C9 */	bl ghiLock
/* 80353F28 0034FB88  80 0D B0 D8 */	lwz r0, lbl_80640398-_SDA_BASE_(r13)
/* 80353F2C 0034FB8C  34 00 FF FF */	addic. r0, r0, -1
/* 80353F30 0034FB90  90 0D B0 D8 */	stw r0, lbl_80640398-_SDA_BASE_(r13)
/* 80353F34 0034FB94  40 82 00 2C */	bne lbl_80353F60
/* 80353F38 0034FB98  4B FF DE A1 */	bl ghiCleanupConnections
/* 80353F3C 0034FB9C  80 6D B0 C4 */	lwz r3, lbl_80640384-_SDA_BASE_(r13)
/* 80353F40 0034FBA0  2C 03 00 00 */	cmpwi r3, 0
/* 80353F44 0034FBA4  41 82 00 10 */	beq lbl_80353F54
/* 80353F48 0034FBA8  4B FE 53 F1 */	bl gsifree
/* 80353F4C 0034FBAC  38 00 00 00 */	li r0, 0
/* 80353F50 0034FBB0  90 0D B0 C4 */	stw r0, lbl_80640384-_SDA_BASE_(r13)
lbl_80353F54:
/* 80353F54 0034FBB4  4B FF D3 9D */	bl ghiUnlock
/* 80353F58 0034FBB8  4B FF D3 91 */	bl ghiFreeLock
/* 80353F5C 0034FBBC  48 00 00 08 */	b lbl_80353F64
lbl_80353F60:
/* 80353F60 0034FBC0  4B FF D3 91 */	bl ghiUnlock
lbl_80353F64:
/* 80353F64 0034FBC4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80353F68 0034FBC8  7C 08 03 A6 */	mtlr r0
/* 80353F6C 0034FBCC  38 21 00 10 */	addi r1, r1, 0x10
/* 80353F70 0034FBD0  4E 80 00 20 */	blr

.global func_80353F74
func_80353F74:
/* 80353F74 0034FBD4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80353F78 0034FBD8  7C 08 02 A6 */	mflr r0
/* 80353F7C 0034FBDC  7C 89 23 78 */	mr r9, r4
/* 80353F80 0034FBE0  38 80 00 00 */	li r4, 0
/* 80353F84 0034FBE4  90 01 00 14 */	stw r0, 0x14(r1)
/* 80353F88 0034FBE8  38 E0 00 00 */	li r7, 0
/* 80353F8C 0034FBEC  39 00 00 00 */	li r8, 0
/* 80353F90 0034FBF0  39 40 00 00 */	li r10, 0
/* 80353F94 0034FBF4  90 A1 00 08 */	stw r5, 8(r1)
/* 80353F98 0034FBF8  38 A0 00 00 */	li r5, 0
/* 80353F9C 0034FBFC  90 C1 00 0C */	stw r6, 0xc(r1)
/* 80353FA0 0034FC00  38 C0 00 00 */	li r6, 0
/* 80353FA4 0034FC04  48 00 00 15 */	bl ghttpGetExA
/* 80353FA8 0034FC08  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80353FAC 0034FC0C  7C 08 03 A6 */	mtlr r0
/* 80353FB0 0034FC10  38 21 00 10 */	addi r1, r1, 0x10
/* 80353FB4 0034FC14  4E 80 00 20 */	blr

.global ghttpGetExA
ghttpGetExA:
/* 80353FB8 0034FC18  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 80353FBC 0034FC1C  7C 08 02 A6 */	mflr r0
/* 80353FC0 0034FC20  90 01 00 44 */	stw r0, 0x44(r1)
/* 80353FC4 0034FC24  39 61 00 40 */	addi r11, r1, 0x40
/* 80353FC8 0034FC28  4B E7 31 49 */	bl _savegpr_21
/* 80353FCC 0034FC2C  2C 03 00 00 */	cmpwi r3, 0
/* 80353FD0 0034FC30  83 C1 00 48 */	lwz r30, 0x48(r1)
/* 80353FD4 0034FC34  83 E1 00 4C */	lwz r31, 0x4c(r1)
/* 80353FD8 0034FC38  7C 76 1B 78 */	mr r22, r3
/* 80353FDC 0034FC3C  7C 97 23 78 */	mr r23, r4
/* 80353FE0 0034FC40  7C B8 2B 78 */	mr r24, r5
/* 80353FE4 0034FC44  7C D9 33 78 */	mr r25, r6
/* 80353FE8 0034FC48  7C FA 3B 78 */	mr r26, r7
/* 80353FEC 0034FC4C  7D 1B 43 78 */	mr r27, r8
/* 80353FF0 0034FC50  7D 3C 4B 78 */	mr r28, r9
/* 80353FF4 0034FC54  7D 5D 53 78 */	mr r29, r10
/* 80353FF8 0034FC58  41 82 00 10 */	beq lbl_80354008
/* 80353FFC 0034FC5C  88 03 00 00 */	lbz r0, 0(r3)
/* 80354000 0034FC60  7C 00 07 75 */	extsb. r0, r0
/* 80354004 0034FC64  40 82 00 0C */	bne lbl_80354010
lbl_80354008:
/* 80354008 0034FC68  38 60 FF FF */	li r3, -1
/* 8035400C 0034FC6C  48 00 01 AC */	b lbl_803541B8
lbl_80354010:
/* 80354010 0034FC70  2C 86 00 00 */	cmpwi cr1, r6, 0
/* 80354014 0034FC74  40 84 00 0C */	bge cr1, lbl_80354020
/* 80354018 0034FC78  38 60 FF FF */	li r3, -1
/* 8035401C 0034FC7C  48 00 01 9C */	b lbl_803541B8
lbl_80354020:
/* 80354020 0034FC80  2C 05 00 00 */	cmpwi r5, 0
/* 80354024 0034FC84  41 82 00 10 */	beq lbl_80354034
/* 80354028 0034FC88  40 86 00 0C */	bne cr1, lbl_80354034
/* 8035402C 0034FC8C  38 60 FF FF */	li r3, -1
/* 80354030 0034FC90  48 00 01 88 */	b lbl_803541B8
lbl_80354034:
/* 80354034 0034FC94  80 0D B0 D8 */	lwz r0, lbl_80640398-_SDA_BASE_(r13)
/* 80354038 0034FC98  2C 00 00 00 */	cmpwi r0, 0
/* 8035403C 0034FC9C  40 82 00 38 */	bne lbl_80354074
/* 80354040 0034FCA0  4B FF D2 AD */	bl ghiLock
/* 80354044 0034FCA4  80 6D B0 D8 */	lwz r3, lbl_80640398-_SDA_BASE_(r13)
/* 80354048 0034FCA8  38 03 00 01 */	addi r0, r3, 1
/* 8035404C 0034FCAC  2C 00 00 01 */	cmpwi r0, 1
/* 80354050 0034FCB0  90 0D B0 D8 */	stw r0, lbl_80640398-_SDA_BASE_(r13)
/* 80354054 0034FCB4  40 82 00 1C */	bne lbl_80354070
/* 80354058 0034FCB8  4B FF D2 8D */	bl ghiCreateLock
/* 8035405C 0034FCBC  38 60 00 7D */	li r3, 0x7d
/* 80354060 0034FCC0  38 00 00 FA */	li r0, 0xfa
/* 80354064 0034FCC4  90 6D 93 90 */	stw r3, lbl_8063E650-_SDA_BASE_(r13)
/* 80354068 0034FCC8  90 0D 93 94 */	stw r0, lbl_8063E654-_SDA_BASE_(r13)
/* 8035406C 0034FCCC  48 00 00 08 */	b lbl_80354074
lbl_80354070:
/* 80354070 0034FCD0  4B FF D2 81 */	bl ghiUnlock
lbl_80354074:
/* 80354074 0034FCD4  4B FF D7 ED */	bl ghiNewConnection
/* 80354078 0034FCD8  2C 03 00 00 */	cmpwi r3, 0
/* 8035407C 0034FCDC  7C 75 1B 78 */	mr r21, r3
/* 80354080 0034FCE0  40 82 00 0C */	bne lbl_8035408C
/* 80354084 0034FCE4  38 60 FF FF */	li r3, -1
/* 80354088 0034FCE8  48 00 01 30 */	b lbl_803541B8
lbl_8035408C:
/* 8035408C 0034FCEC  38 00 00 00 */	li r0, 0
/* 80354090 0034FCF0  90 03 00 0C */	stw r0, 0xc(r3)
/* 80354094 0034FCF4  7E C3 B3 78 */	mr r3, r22
/* 80354098 0034FCF8  4B FE 4E 6D */	bl goastrdup
/* 8035409C 0034FCFC  2C 03 00 00 */	cmpwi r3, 0
/* 803540A0 0034FD00  90 75 00 14 */	stw r3, 0x14(r21)
/* 803540A4 0034FD04  40 82 00 14 */	bne lbl_803540B8
/* 803540A8 0034FD08  7E A3 AB 78 */	mr r3, r21
/* 803540AC 0034FD0C  4B FF D9 79 */	bl ghiFreeConnection
/* 803540B0 0034FD10  38 60 FF FF */	li r3, -1
/* 803540B4 0034FD14  48 00 01 04 */	b lbl_803541B8
lbl_803540B8:
/* 803540B8 0034FD18  2C 17 00 00 */	cmpwi r23, 0
/* 803540BC 0034FD1C  41 82 00 34 */	beq lbl_803540F0
/* 803540C0 0034FD20  88 17 00 00 */	lbz r0, 0(r23)
/* 803540C4 0034FD24  7C 00 07 75 */	extsb. r0, r0
/* 803540C8 0034FD28  41 82 00 28 */	beq lbl_803540F0
/* 803540CC 0034FD2C  7E E3 BB 78 */	mr r3, r23
/* 803540D0 0034FD30  4B FE 4E 35 */	bl goastrdup
/* 803540D4 0034FD34  2C 03 00 00 */	cmpwi r3, 0
/* 803540D8 0034FD38  90 75 00 2C */	stw r3, 0x2c(r21)
/* 803540DC 0034FD3C  40 82 00 14 */	bne lbl_803540F0
/* 803540E0 0034FD40  7E A3 AB 78 */	mr r3, r21
/* 803540E4 0034FD44  4B FF D9 41 */	bl ghiFreeConnection
/* 803540E8 0034FD48  38 60 FF FF */	li r3, -1
/* 803540EC 0034FD4C  48 00 00 CC */	b lbl_803541B8
lbl_803540F0:
/* 803540F0 0034FD50  93 55 01 60 */	stw r26, 0x160(r21)
/* 803540F4 0034FD54  7C 18 00 D0 */	neg r0, r24
/* 803540F8 0034FD58  7C 00 C3 78 */	or r0, r0, r24
/* 803540FC 0034FD5C  93 95 00 34 */	stw r28, 0x34(r21)
/* 80354100 0034FD60  54 00 0F FF */	rlwinm. r0, r0, 1, 0x1f, 0x1f
/* 80354104 0034FD64  93 B5 00 40 */	stw r29, 0x40(r21)
/* 80354108 0034FD68  93 D5 00 44 */	stw r30, 0x44(r21)
/* 8035410C 0034FD6C  93 F5 00 48 */	stw r31, 0x48(r21)
/* 80354110 0034FD70  93 75 01 58 */	stw r27, 0x158(r21)
/* 80354114 0034FD74  90 15 01 08 */	stw r0, 0x108(r21)
/* 80354118 0034FD78  41 82 00 1C */	beq lbl_80354134
/* 8035411C 0034FD7C  7E A3 AB 78 */	mr r3, r21
/* 80354120 0034FD80  7F 05 C3 78 */	mr r5, r24
/* 80354124 0034FD84  7F 26 CB 78 */	mr r6, r25
/* 80354128 0034FD88  38 95 00 E4 */	addi r4, r21, 0xe4
/* 8035412C 0034FD8C  4B FF C8 45 */	bl ghiInitFixedBuffer
/* 80354130 0034FD90  48 00 00 18 */	b lbl_80354148
lbl_80354134:
/* 80354134 0034FD94  7E A3 AB 78 */	mr r3, r21
/* 80354138 0034FD98  38 95 00 E4 */	addi r4, r21, 0xe4
/* 8035413C 0034FD9C  38 A0 08 00 */	li r5, 0x800
/* 80354140 0034FDA0  38 C0 08 00 */	li r6, 0x800
/* 80354144 0034FDA4  4B FF C7 31 */	bl ghiInitBuffer
lbl_80354148:
/* 80354148 0034FDA8  2C 03 00 00 */	cmpwi r3, 0
/* 8035414C 0034FDAC  40 82 00 14 */	bne lbl_80354160
/* 80354150 0034FDB0  7E A3 AB 78 */	mr r3, r21
/* 80354154 0034FDB4  4B FF D8 D1 */	bl ghiFreeConnection
/* 80354158 0034FDB8  38 60 FF FF */	li r3, -1
/* 8035415C 0034FDBC  48 00 00 5C */	b lbl_803541B8
lbl_80354160:
/* 80354160 0034FDC0  2C 1A 00 00 */	cmpwi r26, 0
/* 80354164 0034FDC4  41 82 00 24 */	beq lbl_80354188
/* 80354168 0034FDC8  7E A3 AB 78 */	mr r3, r21
/* 8035416C 0034FDCC  48 00 06 71 */	bl ghiPostInitState
/* 80354170 0034FDD0  2C 03 00 00 */	cmpwi r3, 0
/* 80354174 0034FDD4  40 82 00 14 */	bne lbl_80354188
/* 80354178 0034FDD8  7E A3 AB 78 */	mr r3, r21
/* 8035417C 0034FDDC  4B FF D8 A9 */	bl ghiFreeConnection
/* 80354180 0034FDE0  38 60 FF FF */	li r3, -1
/* 80354184 0034FDE4  48 00 00 34 */	b lbl_803541B8
lbl_80354188:
/* 80354188 0034FDE8  2C 1C 00 00 */	cmpwi r28, 0
/* 8035418C 0034FDEC  41 82 00 28 */	beq lbl_803541B4
/* 80354190 0034FDF0  48 00 00 0C */	b lbl_8035419C
lbl_80354194:
/* 80354194 0034FDF4  38 60 00 0A */	li r3, 0xa
/* 80354198 0034FDF8  4B FE 4E 8D */	bl msleep
lbl_8035419C:
/* 8035419C 0034FDFC  7E A3 AB 78 */	mr r3, r21
/* 803541A0 0034FE00  4B FF FB 8D */	bl ghiProcessConnection
/* 803541A4 0034FE04  2C 03 00 00 */	cmpwi r3, 0
/* 803541A8 0034FE08  41 82 FF EC */	beq lbl_80354194
/* 803541AC 0034FE0C  38 60 00 00 */	li r3, 0
/* 803541B0 0034FE10  48 00 00 08 */	b lbl_803541B8
lbl_803541B4:
/* 803541B4 0034FE14  80 75 00 04 */	lwz r3, 4(r21)
lbl_803541B8:
/* 803541B8 0034FE18  39 61 00 40 */	addi r11, r1, 0x40
/* 803541BC 0034FE1C  4B E7 2F A1 */	bl _restgpr_21
/* 803541C0 0034FE20  80 01 00 44 */	lwz r0, 0x44(r1)
/* 803541C4 0034FE24  7C 08 03 A6 */	mtlr r0
/* 803541C8 0034FE28  38 21 00 40 */	addi r1, r1, 0x40
/* 803541CC 0034FE2C  4E 80 00 20 */	blr

.global ghttpThink
ghttpThink:
/* 803541D0 0034FE30  3C 60 80 35 */	lis r3, ghiProcessConnection@ha
/* 803541D4 0034FE34  38 63 3D 2C */	addi r3, r3, ghiProcessConnection@l
/* 803541D8 0034FE38  4B FF DA 30 */	b ghiEnumConnections

.global ghttpCancelRequest
ghttpCancelRequest:
/* 803541DC 0034FE3C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 803541E0 0034FE40  7C 08 02 A6 */	mflr r0
/* 803541E4 0034FE44  90 01 00 14 */	stw r0, 0x14(r1)
/* 803541E8 0034FE48  4B FF D9 B1 */	bl ghiRequestToConnection
/* 803541EC 0034FE4C  2C 03 00 00 */	cmpwi r3, 0
/* 803541F0 0034FE50  41 82 00 08 */	beq lbl_803541F8
/* 803541F4 0034FE54  4B FF D8 31 */	bl ghiFreeConnection
lbl_803541F8:
/* 803541F8 0034FE58  80 01 00 14 */	lwz r0, 0x14(r1)
/* 803541FC 0034FE5C  7C 08 03 A6 */	mtlr r0
/* 80354200 0034FE60  38 21 00 10 */	addi r1, r1, 0x10
/* 80354204 0034FE64  4E 80 00 20 */	blr

.global ghttpSetMaxRecvTime
ghttpSetMaxRecvTime:
/* 80354208 0034FE68  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8035420C 0034FE6C  7C 08 02 A6 */	mflr r0
/* 80354210 0034FE70  90 01 00 14 */	stw r0, 0x14(r1)
/* 80354214 0034FE74  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80354218 0034FE78  7C 9F 23 78 */	mr r31, r4
/* 8035421C 0034FE7C  4B FF D9 7D */	bl ghiRequestToConnection
/* 80354220 0034FE80  2C 03 00 00 */	cmpwi r3, 0
/* 80354224 0034FE84  41 82 00 08 */	beq lbl_8035422C
/* 80354228 0034FE88  93 E3 01 84 */	stw r31, 0x184(r3)
lbl_8035422C:
/* 8035422C 0034FE8C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80354230 0034FE90  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80354234 0034FE94  7C 08 03 A6 */	mtlr r0
/* 80354238 0034FE98  38 21 00 10 */	addi r1, r1, 0x10
/* 8035423C 0034FE9C  4E 80 00 20 */	blr