summaryrefslogtreecommitdiff
path: root/asm/SDK/DWC/gamespy/ghttpConnection.s
blob: 9c2685c0cfa4ec1dde2e9c926adf8fa4aa9cc872 (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
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
.include "macros.inc"

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

.global ghiFindFreeSlot
ghiFindFreeSlot:
/* 80351754 0034D3B4  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80351758 0034D3B8  7C 08 02 A6 */	mflr r0
/* 8035175C 0034D3BC  90 01 00 24 */	stw r0, 0x24(r1)
/* 80351760 0034D3C0  39 61 00 20 */	addi r11, r1, 0x20
/* 80351764 0034D3C4  4B E7 59 C5 */	bl _savegpr_27
/* 80351768 0034D3C8  80 CD B0 D4 */	lwz r6, lbl_80640394-_SDA_BASE_(r13)
/* 8035176C 0034D3CC  38 60 00 00 */	li r3, 0
/* 80351770 0034D3D0  80 0D B0 D0 */	lwz r0, lbl_80640390-_SDA_BASE_(r13)
/* 80351774 0034D3D4  7C C5 33 78 */	mr r5, r6
/* 80351778 0034D3D8  7C 09 03 A6 */	mtctr r0
/* 8035177C 0034D3DC  2C 00 00 00 */	cmpwi r0, 0
/* 80351780 0034D3E0  40 81 00 24 */	ble lbl_803517A4
lbl_80351784:
/* 80351784 0034D3E4  80 85 00 00 */	lwz r4, 0(r5)
/* 80351788 0034D3E8  80 04 00 00 */	lwz r0, 0(r4)
/* 8035178C 0034D3EC  2C 00 00 00 */	cmpwi r0, 0
/* 80351790 0034D3F0  40 82 00 08 */	bne lbl_80351798
/* 80351794 0034D3F4  48 00 00 B4 */	b lbl_80351848
lbl_80351798:
/* 80351798 0034D3F8  38 A5 00 04 */	addi r5, r5, 4
/* 8035179C 0034D3FC  38 63 00 01 */	addi r3, r3, 1
/* 803517A0 0034D400  42 00 FF E4 */	bdnz lbl_80351784
lbl_803517A4:
/* 803517A4 0034D404  83 AD B0 D0 */	lwz r29, lbl_80640390-_SDA_BASE_(r13)
/* 803517A8 0034D408  7C C3 33 78 */	mr r3, r6
/* 803517AC 0034D40C  3B 7D 00 04 */	addi r27, r29, 4
/* 803517B0 0034D410  57 64 10 3A */	slwi r4, r27, 2
/* 803517B4 0034D414  4B FE 7B 71 */	bl gsirealloc
/* 803517B8 0034D418  2C 03 00 00 */	cmpwi r3, 0
/* 803517BC 0034D41C  40 82 00 0C */	bne lbl_803517C8
/* 803517C0 0034D420  38 60 FF FF */	li r3, -1
/* 803517C4 0034D424  48 00 00 84 */	b lbl_80351848
lbl_803517C8:
/* 803517C8 0034D428  90 6D B0 D4 */	stw r3, lbl_80640394-_SDA_BASE_(r13)
/* 803517CC 0034D42C  7F BC EB 78 */	mr r28, r29
/* 803517D0 0034D430  57 BE 10 3A */	slwi r30, r29, 2
/* 803517D4 0034D434  3B E0 00 00 */	li r31, 0
/* 803517D8 0034D438  48 00 00 60 */	b lbl_80351838
lbl_803517DC:
/* 803517DC 0034D43C  38 60 01 B4 */	li r3, 0x1b4
/* 803517E0 0034D440  4B FE 7B 35 */	bl gsimalloc
/* 803517E4 0034D444  80 8D B0 D4 */	lwz r4, lbl_80640394-_SDA_BASE_(r13)
/* 803517E8 0034D448  7C 64 F1 2E */	stwx r3, r4, r30
/* 803517EC 0034D44C  80 6D B0 D4 */	lwz r3, lbl_80640394-_SDA_BASE_(r13)
/* 803517F0 0034D450  7C 63 F0 2E */	lwzx r3, r3, r30
/* 803517F4 0034D454  2C 03 00 00 */	cmpwi r3, 0
/* 803517F8 0034D458  40 82 00 34 */	bne lbl_8035182C
/* 803517FC 0034D45C  3B 9C FF FF */	addi r28, r28, -1
/* 80351800 0034D460  57 9E 10 3A */	slwi r30, r28, 2
/* 80351804 0034D464  48 00 00 18 */	b lbl_8035181C
lbl_80351808:
/* 80351808 0034D468  80 6D B0 D4 */	lwz r3, lbl_80640394-_SDA_BASE_(r13)
/* 8035180C 0034D46C  7C 63 F0 2E */	lwzx r3, r3, r30
/* 80351810 0034D470  4B FE 7B 29 */	bl gsifree
/* 80351814 0034D474  3B DE FF FC */	addi r30, r30, -4
/* 80351818 0034D478  3B 9C FF FF */	addi r28, r28, -1
lbl_8035181C:
/* 8035181C 0034D47C  7C 1C E8 00 */	cmpw r28, r29
/* 80351820 0034D480  40 80 FF E8 */	bge lbl_80351808
/* 80351824 0034D484  38 60 FF FF */	li r3, -1
/* 80351828 0034D488  48 00 00 20 */	b lbl_80351848
lbl_8035182C:
/* 8035182C 0034D48C  93 E3 00 00 */	stw r31, 0(r3)
/* 80351830 0034D490  3B DE 00 04 */	addi r30, r30, 4
/* 80351834 0034D494  3B 9C 00 01 */	addi r28, r28, 1
lbl_80351838:
/* 80351838 0034D498  7C 1C D8 00 */	cmpw r28, r27
/* 8035183C 0034D49C  41 80 FF A0 */	blt lbl_803517DC
/* 80351840 0034D4A0  93 6D B0 D0 */	stw r27, lbl_80640390-_SDA_BASE_(r13)
/* 80351844 0034D4A4  7F A3 EB 78 */	mr r3, r29
lbl_80351848:
/* 80351848 0034D4A8  39 61 00 20 */	addi r11, r1, 0x20
/* 8035184C 0034D4AC  4B E7 59 29 */	bl _restgpr_27
/* 80351850 0034D4B0  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80351854 0034D4B4  7C 08 03 A6 */	mtlr r0
/* 80351858 0034D4B8  38 21 00 20 */	addi r1, r1, 0x20
/* 8035185C 0034D4BC  4E 80 00 20 */	blr

.global ghiNewConnection
ghiNewConnection:
/* 80351860 0034D4C0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80351864 0034D4C4  7C 08 02 A6 */	mflr r0
/* 80351868 0034D4C8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8035186C 0034D4CC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80351870 0034D4D0  93 C1 00 08 */	stw r30, 8(r1)
/* 80351874 0034D4D4  4B FF FA 79 */	bl ghiLock
/* 80351878 0034D4D8  4B FF FE DD */	bl ghiFindFreeSlot
/* 8035187C 0034D4DC  2C 03 FF FF */	cmpwi r3, -1
/* 80351880 0034D4E0  7C 7F 1B 78 */	mr r31, r3
/* 80351884 0034D4E4  40 82 00 10 */	bne lbl_80351894
/* 80351888 0034D4E8  4B FF FA 69 */	bl ghiUnlock
/* 8035188C 0034D4EC  38 60 00 00 */	li r3, 0
/* 80351890 0034D4F0  48 00 01 7C */	b lbl_80351A0C
lbl_80351894:
/* 80351894 0034D4F4  80 CD B0 D4 */	lwz r6, lbl_80640394-_SDA_BASE_(r13)
/* 80351898 0034D4F8  54 60 10 3A */	slwi r0, r3, 2
/* 8035189C 0034D4FC  38 80 00 00 */	li r4, 0
/* 803518A0 0034D500  38 A0 01 B4 */	li r5, 0x1b4
/* 803518A4 0034D504  7F C6 00 2E */	lwzx r30, r6, r0
/* 803518A8 0034D508  7F C3 F3 78 */	mr r3, r30
/* 803518AC 0034D50C  4B CB 28 59 */	bl memset
/* 803518B0 0034D510  38 00 00 01 */	li r0, 1
/* 803518B4 0034D514  39 20 00 00 */	li r9, 0
/* 803518B8 0034D518  90 1E 00 00 */	stw r0, 0(r30)
/* 803518BC 0034D51C  39 00 FF FF */	li r8, -1
/* 803518C0 0034D520  38 E0 01 F4 */	li r7, 0x1f4
/* 803518C4 0034D524  38 00 00 50 */	li r0, 0x50
/* 803518C8 0034D528  93 FE 00 04 */	stw r31, 4(r30)
/* 803518CC 0034D52C  7F C3 F3 78 */	mr r3, r30
/* 803518D0 0034D530  38 9E 00 54 */	addi r4, r30, 0x54
/* 803518D4 0034D534  38 A0 08 00 */	li r5, 0x800
/* 803518D8 0034D538  81 4D B0 C8 */	lwz r10, lbl_80640388-_SDA_BASE_(r13)
/* 803518DC 0034D53C  38 C0 10 00 */	li r6, 0x1000
/* 803518E0 0034D540  91 5E 00 08 */	stw r10, 8(r30)
/* 803518E4 0034D544  39 4A 00 01 */	addi r10, r10, 1
/* 803518E8 0034D548  91 4D B0 C8 */	stw r10, lbl_80640388-_SDA_BASE_(r13)
/* 803518EC 0034D54C  91 3E 00 0C */	stw r9, 0xc(r30)
/* 803518F0 0034D550  91 3E 00 10 */	stw r9, 0x10(r30)
/* 803518F4 0034D554  91 3E 00 14 */	stw r9, 0x14(r30)
/* 803518F8 0034D558  91 3E 00 18 */	stw r9, 0x18(r30)
/* 803518FC 0034D55C  91 3E 00 1C */	stw r9, 0x1c(r30)
/* 80351900 0034D560  B1 3E 00 20 */	sth r9, 0x20(r30)
/* 80351904 0034D564  91 3E 00 24 */	stw r9, 0x24(r30)
/* 80351908 0034D568  91 3E 00 2C */	stw r9, 0x2c(r30)
/* 8035190C 0034D56C  91 3E 00 30 */	stw r9, 0x30(r30)
/* 80351910 0034D570  91 3E 00 34 */	stw r9, 0x34(r30)
/* 80351914 0034D574  91 3E 00 38 */	stw r9, 0x38(r30)
/* 80351918 0034D578  91 3E 00 3C */	stw r9, 0x3c(r30)
/* 8035191C 0034D57C  91 3E 00 40 */	stw r9, 0x40(r30)
/* 80351920 0034D580  91 3E 00 44 */	stw r9, 0x44(r30)
/* 80351924 0034D584  91 3E 00 48 */	stw r9, 0x48(r30)
/* 80351928 0034D588  91 1E 00 4C */	stw r8, 0x4c(r30)
/* 8035192C 0034D58C  91 3E 00 50 */	stw r9, 0x50(r30)
/* 80351930 0034D590  91 3E 01 08 */	stw r9, 0x108(r30)
/* 80351934 0034D594  91 3E 01 0C */	stw r9, 0x10c(r30)
/* 80351938 0034D598  91 3E 01 10 */	stw r9, 0x110(r30)
/* 8035193C 0034D59C  91 3E 01 14 */	stw r9, 0x114(r30)
/* 80351940 0034D5A0  91 3E 01 18 */	stw r9, 0x118(r30)
/* 80351944 0034D5A4  91 3E 01 1C */	stw r9, 0x11c(r30)
/* 80351948 0034D5A8  91 3E 01 20 */	stw r9, 0x120(r30)
/* 8035194C 0034D5AC  91 3E 01 24 */	stw r9, 0x124(r30)
/* 80351950 0034D5B0  91 1E 01 28 */	stw r8, 0x128(r30)
/* 80351954 0034D5B4  91 3E 01 2C */	stw r9, 0x12c(r30)
/* 80351958 0034D5B8  91 3E 01 30 */	stw r9, 0x130(r30)
/* 8035195C 0034D5BC  91 3E 01 34 */	stw r9, 0x134(r30)
/* 80351960 0034D5C0  91 3E 01 50 */	stw r9, 0x150(r30)
/* 80351964 0034D5C4  91 3E 01 58 */	stw r9, 0x158(r30)
/* 80351968 0034D5C8  91 3E 01 5C */	stw r9, 0x15c(r30)
/* 8035196C 0034D5CC  91 3E 01 60 */	stw r9, 0x160(r30)
/* 80351970 0034D5D0  90 FE 01 84 */	stw r7, 0x184(r30)
/* 80351974 0034D5D4  B0 1E 01 8C */	sth r0, 0x18c(r30)
/* 80351978 0034D5D8  91 3E 01 88 */	stw r9, 0x188(r30)
/* 8035197C 0034D5DC  91 3E 01 90 */	stw r9, 0x190(r30)
/* 80351980 0034D5E0  91 3E 01 B0 */	stw r9, 0x1b0(r30)
/* 80351984 0034D5E4  4B FF EE F1 */	bl ghiInitBuffer
/* 80351988 0034D5E8  2C 03 00 00 */	cmpwi r3, 0
/* 8035198C 0034D5EC  41 82 00 18 */	beq lbl_803519A4
/* 80351990 0034D5F0  7F C3 F3 78 */	mr r3, r30
/* 80351994 0034D5F4  38 9E 00 78 */	addi r4, r30, 0x78
/* 80351998 0034D5F8  38 A0 08 00 */	li r5, 0x800
/* 8035199C 0034D5FC  38 C0 04 00 */	li r6, 0x400
/* 803519A0 0034D600  4B FF EE D5 */	bl ghiInitBuffer
lbl_803519A4:
/* 803519A4 0034D604  2C 03 00 00 */	cmpwi r3, 0
/* 803519A8 0034D608  41 82 00 18 */	beq lbl_803519C0
/* 803519AC 0034D60C  7F C3 F3 78 */	mr r3, r30
/* 803519B0 0034D610  38 9E 00 9C */	addi r4, r30, 0x9c
/* 803519B4 0034D614  38 A0 08 00 */	li r5, 0x800
/* 803519B8 0034D618  38 C0 08 00 */	li r6, 0x800
/* 803519BC 0034D61C  4B FF EE B9 */	bl ghiInitBuffer
lbl_803519C0:
/* 803519C0 0034D620  2C 03 00 00 */	cmpwi r3, 0
/* 803519C4 0034D624  41 82 00 18 */	beq lbl_803519DC
/* 803519C8 0034D628  7F C3 F3 78 */	mr r3, r30
/* 803519CC 0034D62C  38 9E 00 C0 */	addi r4, r30, 0xc0
/* 803519D0 0034D630  38 A0 08 00 */	li r5, 0x800
/* 803519D4 0034D634  38 C0 04 00 */	li r6, 0x400
/* 803519D8 0034D638  4B FF EE 9D */	bl ghiInitBuffer
lbl_803519DC:
/* 803519DC 0034D63C  2C 03 00 00 */	cmpwi r3, 0
/* 803519E0 0034D640  40 82 00 18 */	bne lbl_803519F8
/* 803519E4 0034D644  7F C3 F3 78 */	mr r3, r30
/* 803519E8 0034D648  48 00 00 3D */	bl ghiFreeConnection
/* 803519EC 0034D64C  4B FF F9 05 */	bl ghiUnlock
/* 803519F0 0034D650  38 60 00 00 */	li r3, 0
/* 803519F4 0034D654  48 00 00 18 */	b lbl_80351A0C
lbl_803519F8:
/* 803519F8 0034D658  80 6D B0 CC */	lwz r3, lbl_8064038C-_SDA_BASE_(r13)
/* 803519FC 0034D65C  38 03 00 01 */	addi r0, r3, 1
/* 80351A00 0034D660  90 0D B0 CC */	stw r0, lbl_8064038C-_SDA_BASE_(r13)
/* 80351A04 0034D664  4B FF F8 ED */	bl ghiUnlock
/* 80351A08 0034D668  7F C3 F3 78 */	mr r3, r30
lbl_80351A0C:
/* 80351A0C 0034D66C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80351A10 0034D670  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80351A14 0034D674  83 C1 00 08 */	lwz r30, 8(r1)
/* 80351A18 0034D678  7C 08 03 A6 */	mtlr r0
/* 80351A1C 0034D67C  38 21 00 10 */	addi r1, r1, 0x10
/* 80351A20 0034D680  4E 80 00 20 */	blr

.global ghiFreeConnection
ghiFreeConnection:
/* 80351A24 0034D684  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80351A28 0034D688  7C 08 02 A6 */	mflr r0
/* 80351A2C 0034D68C  2C 03 00 00 */	cmpwi r3, 0
/* 80351A30 0034D690  90 01 00 14 */	stw r0, 0x14(r1)
/* 80351A34 0034D694  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80351A38 0034D698  7C 7F 1B 78 */	mr r31, r3
/* 80351A3C 0034D69C  40 82 00 0C */	bne lbl_80351A48
/* 80351A40 0034D6A0  38 60 00 00 */	li r3, 0
/* 80351A44 0034D6A4  48 00 01 40 */	b lbl_80351B84
lbl_80351A48:
/* 80351A48 0034D6A8  80 03 00 00 */	lwz r0, 0(r3)
/* 80351A4C 0034D6AC  2C 00 00 00 */	cmpwi r0, 0
/* 80351A50 0034D6B0  40 82 00 0C */	bne lbl_80351A5C
/* 80351A54 0034D6B4  38 60 00 00 */	li r3, 0
/* 80351A58 0034D6B8  48 00 01 2C */	b lbl_80351B84
lbl_80351A5C:
/* 80351A5C 0034D6BC  80 63 00 04 */	lwz r3, 4(r3)
/* 80351A60 0034D6C0  2C 03 00 00 */	cmpwi r3, 0
/* 80351A64 0034D6C4  40 80 00 0C */	bge lbl_80351A70
/* 80351A68 0034D6C8  38 60 00 00 */	li r3, 0
/* 80351A6C 0034D6CC  48 00 01 18 */	b lbl_80351B84
lbl_80351A70:
/* 80351A70 0034D6D0  80 0D B0 D0 */	lwz r0, lbl_80640390-_SDA_BASE_(r13)
/* 80351A74 0034D6D4  7C 03 00 00 */	cmpw r3, r0
/* 80351A78 0034D6D8  41 80 00 0C */	blt lbl_80351A84
/* 80351A7C 0034D6DC  38 60 00 00 */	li r3, 0
/* 80351A80 0034D6E0  48 00 01 04 */	b lbl_80351B84
lbl_80351A84:
/* 80351A84 0034D6E4  4B FF F8 69 */	bl ghiLock
/* 80351A88 0034D6E8  80 7F 00 14 */	lwz r3, 0x14(r31)
/* 80351A8C 0034D6EC  4B FE 78 AD */	bl gsifree
/* 80351A90 0034D6F0  80 7F 00 18 */	lwz r3, 0x18(r31)
/* 80351A94 0034D6F4  4B FE 78 A5 */	bl gsifree
/* 80351A98 0034D6F8  80 7F 00 24 */	lwz r3, 0x24(r31)
/* 80351A9C 0034D6FC  4B FE 78 9D */	bl gsifree
/* 80351AA0 0034D700  80 7F 00 2C */	lwz r3, 0x2c(r31)
/* 80351AA4 0034D704  4B FE 78 95 */	bl gsifree
/* 80351AA8 0034D708  80 7F 01 2C */	lwz r3, 0x12c(r31)
/* 80351AAC 0034D70C  4B FE 78 8D */	bl gsifree
/* 80351AB0 0034D710  80 7F 01 88 */	lwz r3, 0x188(r31)
/* 80351AB4 0034D714  4B FE 78 85 */	bl gsifree
/* 80351AB8 0034D718  80 7F 00 4C */	lwz r3, 0x4c(r31)
/* 80351ABC 0034D71C  2C 03 FF FF */	cmpwi r3, -1
/* 80351AC0 0034D720  41 82 00 14 */	beq lbl_80351AD4
/* 80351AC4 0034D724  38 80 00 02 */	li r4, 2
/* 80351AC8 0034D728  4B FE 61 69 */	bl shutdown
/* 80351ACC 0034D72C  80 7F 00 4C */	lwz r3, 0x4c(r31)
/* 80351AD0 0034D730  4B FE 61 2D */	bl closesocket
lbl_80351AD4:
/* 80351AD4 0034D734  38 7F 00 54 */	addi r3, r31, 0x54
/* 80351AD8 0034D738  4B FF EF 85 */	bl ghiFreeBuffer
/* 80351ADC 0034D73C  38 7F 00 78 */	addi r3, r31, 0x78
/* 80351AE0 0034D740  4B FF EF 7D */	bl ghiFreeBuffer
/* 80351AE4 0034D744  38 7F 00 9C */	addi r3, r31, 0x9c
/* 80351AE8 0034D748  4B FF EF 75 */	bl ghiFreeBuffer
/* 80351AEC 0034D74C  38 7F 00 C0 */	addi r3, r31, 0xc0
/* 80351AF0 0034D750  4B FF EF 6D */	bl ghiFreeBuffer
/* 80351AF4 0034D754  38 7F 00 E4 */	addi r3, r31, 0xe4
/* 80351AF8 0034D758  4B FF EF 65 */	bl ghiFreeBuffer
/* 80351AFC 0034D75C  80 1F 01 64 */	lwz r0, 0x164(r31)
/* 80351B00 0034D760  2C 00 00 00 */	cmpwi r0, 0
/* 80351B04 0034D764  41 82 00 0C */	beq lbl_80351B10
/* 80351B08 0034D768  7F E3 FB 78 */	mr r3, r31
/* 80351B0C 0034D76C  48 00 2E 81 */	bl ghiPostCleanupState
lbl_80351B10:
/* 80351B10 0034D770  80 7F 01 60 */	lwz r3, 0x160(r31)
/* 80351B14 0034D774  2C 03 00 00 */	cmpwi r3, 0
/* 80351B18 0034D778  41 82 00 20 */	beq lbl_80351B38
/* 80351B1C 0034D77C  48 00 27 25 */	bl ghiIsPostAutoFree
/* 80351B20 0034D780  2C 03 00 00 */	cmpwi r3, 0
/* 80351B24 0034D784  41 82 00 14 */	beq lbl_80351B38
/* 80351B28 0034D788  80 7F 01 60 */	lwz r3, 0x160(r31)
/* 80351B2C 0034D78C  48 00 27 1D */	bl ghiFreePost
/* 80351B30 0034D790  38 00 00 00 */	li r0, 0
/* 80351B34 0034D794  90 1F 01 60 */	stw r0, 0x160(r31)
lbl_80351B38:
/* 80351B38 0034D798  80 1F 01 98 */	lwz r0, 0x198(r31)
/* 80351B3C 0034D79C  2C 00 00 00 */	cmpwi r0, 0
/* 80351B40 0034D7A0  41 82 00 28 */	beq lbl_80351B68
/* 80351B44 0034D7A4  81 9F 01 A4 */	lwz r12, 0x1a4(r31)
/* 80351B48 0034D7A8  2C 0C 00 00 */	cmpwi r12, 0
/* 80351B4C 0034D7AC  41 82 00 14 */	beq lbl_80351B60
/* 80351B50 0034D7B0  7F E3 FB 78 */	mr r3, r31
/* 80351B54 0034D7B4  38 9F 01 90 */	addi r4, r31, 0x190
/* 80351B58 0034D7B8  7D 89 03 A6 */	mtctr r12
/* 80351B5C 0034D7BC  4E 80 04 21 */	bctrl
lbl_80351B60:
/* 80351B60 0034D7C0  38 00 00 00 */	li r0, 0
/* 80351B64 0034D7C4  90 1F 01 98 */	stw r0, 0x198(r31)
lbl_80351B68:
/* 80351B68 0034D7C8  38 00 00 00 */	li r0, 0
/* 80351B6C 0034D7CC  90 1F 00 00 */	stw r0, 0(r31)
/* 80351B70 0034D7D0  80 6D B0 CC */	lwz r3, lbl_8064038C-_SDA_BASE_(r13)
/* 80351B74 0034D7D4  38 03 FF FF */	addi r0, r3, -1
/* 80351B78 0034D7D8  90 0D B0 CC */	stw r0, lbl_8064038C-_SDA_BASE_(r13)
/* 80351B7C 0034D7DC  4B FF F7 75 */	bl ghiUnlock
/* 80351B80 0034D7E0  38 60 00 01 */	li r3, 1
lbl_80351B84:
/* 80351B84 0034D7E4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80351B88 0034D7E8  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80351B8C 0034D7EC  7C 08 03 A6 */	mtlr r0
/* 80351B90 0034D7F0  38 21 00 10 */	addi r1, r1, 0x10
/* 80351B94 0034D7F4  4E 80 00 20 */	blr

.global ghiRequestToConnection
ghiRequestToConnection:
/* 80351B98 0034D7F8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80351B9C 0034D7FC  7C 08 02 A6 */	mflr r0
/* 80351BA0 0034D800  90 01 00 14 */	stw r0, 0x14(r1)
/* 80351BA4 0034D804  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80351BA8 0034D808  7C 7F 1B 78 */	mr r31, r3
/* 80351BAC 0034D80C  4B FF F7 41 */	bl ghiLock
/* 80351BB0 0034D810  2C 1F 00 00 */	cmpwi r31, 0
/* 80351BB4 0034D814  41 80 00 10 */	blt lbl_80351BC4
/* 80351BB8 0034D818  80 0D B0 D0 */	lwz r0, lbl_80640390-_SDA_BASE_(r13)
/* 80351BBC 0034D81C  7C 1F 00 00 */	cmpw r31, r0
/* 80351BC0 0034D820  41 80 00 10 */	blt lbl_80351BD0
lbl_80351BC4:
/* 80351BC4 0034D824  4B FF F7 2D */	bl ghiUnlock
/* 80351BC8 0034D828  38 60 00 00 */	li r3, 0
/* 80351BCC 0034D82C  48 00 00 28 */	b lbl_80351BF4
lbl_80351BD0:
/* 80351BD0 0034D830  80 6D B0 D4 */	lwz r3, lbl_80640394-_SDA_BASE_(r13)
/* 80351BD4 0034D834  57 E0 10 3A */	slwi r0, r31, 2
/* 80351BD8 0034D838  7F E3 00 2E */	lwzx r31, r3, r0
/* 80351BDC 0034D83C  80 1F 00 00 */	lwz r0, 0(r31)
/* 80351BE0 0034D840  2C 00 00 00 */	cmpwi r0, 0
/* 80351BE4 0034D844  40 82 00 08 */	bne lbl_80351BEC
/* 80351BE8 0034D848  3B E0 00 00 */	li r31, 0
lbl_80351BEC:
/* 80351BEC 0034D84C  4B FF F7 05 */	bl ghiUnlock
/* 80351BF0 0034D850  7F E3 FB 78 */	mr r3, r31
lbl_80351BF4:
/* 80351BF4 0034D854  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80351BF8 0034D858  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80351BFC 0034D85C  7C 08 03 A6 */	mtlr r0
/* 80351C00 0034D860  38 21 00 10 */	addi r1, r1, 0x10
/* 80351C04 0034D864  4E 80 00 20 */	blr

.global ghiEnumConnections
ghiEnumConnections:
/* 80351C08 0034D868  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80351C0C 0034D86C  7C 08 02 A6 */	mflr r0
/* 80351C10 0034D870  90 01 00 24 */	stw r0, 0x24(r1)
/* 80351C14 0034D874  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80351C18 0034D878  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80351C1C 0034D87C  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80351C20 0034D880  7C 7D 1B 78 */	mr r29, r3
/* 80351C24 0034D884  80 0D B0 CC */	lwz r0, lbl_8064038C-_SDA_BASE_(r13)
/* 80351C28 0034D888  2C 00 00 00 */	cmpwi r0, 0
/* 80351C2C 0034D88C  40 81 00 4C */	ble lbl_80351C78
/* 80351C30 0034D890  4B FF F6 BD */	bl ghiLock
/* 80351C34 0034D894  3B C0 00 00 */	li r30, 0
/* 80351C38 0034D898  3B E0 00 00 */	li r31, 0
/* 80351C3C 0034D89C  48 00 00 2C */	b lbl_80351C68
lbl_80351C40:
/* 80351C40 0034D8A0  80 6D B0 D4 */	lwz r3, lbl_80640394-_SDA_BASE_(r13)
/* 80351C44 0034D8A4  7C 63 F8 2E */	lwzx r3, r3, r31
/* 80351C48 0034D8A8  80 03 00 00 */	lwz r0, 0(r3)
/* 80351C4C 0034D8AC  2C 00 00 00 */	cmpwi r0, 0
/* 80351C50 0034D8B0  41 82 00 10 */	beq lbl_80351C60
/* 80351C54 0034D8B4  7F AC EB 78 */	mr r12, r29
/* 80351C58 0034D8B8  7D 89 03 A6 */	mtctr r12
/* 80351C5C 0034D8BC  4E 80 04 21 */	bctrl
lbl_80351C60:
/* 80351C60 0034D8C0  3B FF 00 04 */	addi r31, r31, 4
/* 80351C64 0034D8C4  3B DE 00 01 */	addi r30, r30, 1
lbl_80351C68:
/* 80351C68 0034D8C8  80 0D B0 D0 */	lwz r0, lbl_80640390-_SDA_BASE_(r13)
/* 80351C6C 0034D8CC  7C 1E 00 00 */	cmpw r30, r0
/* 80351C70 0034D8D0  41 80 FF D0 */	blt lbl_80351C40
/* 80351C74 0034D8D4  4B FF F6 7D */	bl ghiUnlock
lbl_80351C78:
/* 80351C78 0034D8D8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80351C7C 0034D8DC  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80351C80 0034D8E0  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80351C84 0034D8E4  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80351C88 0034D8E8  7C 08 03 A6 */	mtlr r0
/* 80351C8C 0034D8EC  38 21 00 20 */	addi r1, r1, 0x20
/* 80351C90 0034D8F0  4E 80 00 20 */	blr

.global ghiRedirectConnection
ghiRedirectConnection:
/* 80351C94 0034D8F4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80351C98 0034D8F8  7C 08 02 A6 */	mflr r0
/* 80351C9C 0034D8FC  90 01 00 14 */	stw r0, 0x14(r1)
/* 80351CA0 0034D900  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80351CA4 0034D904  3B E0 00 00 */	li r31, 0
/* 80351CA8 0034D908  93 C1 00 08 */	stw r30, 8(r1)
/* 80351CAC 0034D90C  7C 7E 1B 78 */	mr r30, r3
/* 80351CB0 0034D910  80 03 01 B0 */	lwz r0, 0x1b0(r3)
/* 80351CB4 0034D914  93 E3 00 10 */	stw r31, 0x10(r3)
/* 80351CB8 0034D918  2C 00 00 00 */	cmpwi r0, 0
/* 80351CBC 0034D91C  41 82 00 18 */	beq lbl_80351CD4
/* 80351CC0 0034D920  7C 03 03 78 */	mr r3, r0
/* 80351CC4 0034D924  4B FE 70 85 */	bl gsiCancelResolvingHostname
/* 80351CC8 0034D928  80 7E 01 B0 */	lwz r3, 0x1b0(r30)
/* 80351CCC 0034D92C  4B FE 76 6D */	bl gsifree
/* 80351CD0 0034D930  93 FE 01 B0 */	stw r31, 0x1b0(r30)
lbl_80351CD4:
/* 80351CD4 0034D934  80 7E 00 14 */	lwz r3, 0x14(r30)
/* 80351CD8 0034D938  4B FE 76 61 */	bl gsifree
/* 80351CDC 0034D93C  80 1E 01 2C */	lwz r0, 0x12c(r30)
/* 80351CE0 0034D940  3B E0 00 00 */	li r31, 0
/* 80351CE4 0034D944  80 7E 00 18 */	lwz r3, 0x18(r30)
/* 80351CE8 0034D948  90 1E 00 14 */	stw r0, 0x14(r30)
/* 80351CEC 0034D94C  93 FE 01 2C */	stw r31, 0x12c(r30)
/* 80351CF0 0034D950  4B FE 76 49 */	bl gsifree
/* 80351CF4 0034D954  93 FE 00 18 */	stw r31, 0x18(r30)
/* 80351CF8 0034D958  80 7E 00 24 */	lwz r3, 0x24(r30)
/* 80351CFC 0034D95C  93 FE 00 1C */	stw r31, 0x1c(r30)
/* 80351D00 0034D960  B3 FE 00 20 */	sth r31, 0x20(r30)
/* 80351D04 0034D964  4B FE 76 35 */	bl gsifree
/* 80351D08 0034D968  93 FE 00 24 */	stw r31, 0x24(r30)
/* 80351D0C 0034D96C  38 80 00 02 */	li r4, 2
/* 80351D10 0034D970  80 7E 00 4C */	lwz r3, 0x4c(r30)
/* 80351D14 0034D974  4B FE 5F 1D */	bl shutdown
/* 80351D18 0034D978  80 7E 00 4C */	lwz r3, 0x4c(r30)
/* 80351D1C 0034D97C  4B FE 5E E1 */	bl closesocket
/* 80351D20 0034D980  38 00 FF FF */	li r0, -1
/* 80351D24 0034D984  38 7E 00 54 */	addi r3, r30, 0x54
/* 80351D28 0034D988  90 1E 00 4C */	stw r0, 0x4c(r30)
/* 80351D2C 0034D98C  4B FF F3 05 */	bl ghiResetBuffer
/* 80351D30 0034D990  38 7E 00 78 */	addi r3, r30, 0x78
/* 80351D34 0034D994  4B FF F2 FD */	bl ghiResetBuffer
/* 80351D38 0034D998  38 7E 00 9C */	addi r3, r30, 0x9c
/* 80351D3C 0034D99C  4B FF F2 F5 */	bl ghiResetBuffer
/* 80351D40 0034D9A0  38 7E 00 C0 */	addi r3, r30, 0xc0
/* 80351D44 0034D9A4  4B FF F2 ED */	bl ghiResetBuffer
/* 80351D48 0034D9A8  80 1E 01 98 */	lwz r0, 0x198(r30)
/* 80351D4C 0034D9AC  93 FE 01 0C */	stw r31, 0x10c(r30)
/* 80351D50 0034D9B0  2C 00 00 00 */	cmpwi r0, 0
/* 80351D54 0034D9B4  93 FE 01 10 */	stw r31, 0x110(r30)
/* 80351D58 0034D9B8  93 FE 01 14 */	stw r31, 0x114(r30)
/* 80351D5C 0034D9BC  93 FE 01 18 */	stw r31, 0x118(r30)
/* 80351D60 0034D9C0  93 FE 01 1C */	stw r31, 0x11c(r30)
/* 80351D64 0034D9C4  93 FE 01 54 */	stw r31, 0x154(r30)
/* 80351D68 0034D9C8  41 82 00 4C */	beq lbl_80351DB4
/* 80351D6C 0034D9CC  81 9E 01 A4 */	lwz r12, 0x1a4(r30)
/* 80351D70 0034D9D0  2C 0C 00 00 */	cmpwi r12, 0
/* 80351D74 0034D9D4  41 82 00 14 */	beq lbl_80351D88
/* 80351D78 0034D9D8  7F C3 F3 78 */	mr r3, r30
/* 80351D7C 0034D9DC  38 9E 01 90 */	addi r4, r30, 0x190
/* 80351D80 0034D9E0  7D 89 03 A6 */	mtctr r12
/* 80351D84 0034D9E4  4E 80 04 21 */	bctrl
lbl_80351D88:
/* 80351D88 0034D9E8  3B E0 00 00 */	li r31, 0
/* 80351D8C 0034D9EC  3C 60 80 45 */	lis r3, lbl_8044BF70@ha
/* 80351D90 0034D9F0  93 FE 01 98 */	stw r31, 0x198(r30)
/* 80351D94 0034D9F4  38 63 BF 70 */	addi r3, r3, lbl_8044BF70@l
/* 80351D98 0034D9F8  80 9E 00 14 */	lwz r4, 0x14(r30)
/* 80351D9C 0034D9FC  38 A0 00 08 */	li r5, 8
/* 80351DA0 0034DA00  4B E7 C7 C9 */	bl strncmp
/* 80351DA4 0034DA04  2C 03 00 00 */	cmpwi r3, 0
/* 80351DA8 0034DA08  41 82 00 0C */	beq lbl_80351DB4
/* 80351DAC 0034DA0C  93 FE 01 94 */	stw r31, 0x194(r30)
/* 80351DB0 0034DA10  93 FE 01 90 */	stw r31, 0x190(r30)
lbl_80351DB4:
/* 80351DB4 0034DA14  80 7E 01 30 */	lwz r3, 0x130(r30)
/* 80351DB8 0034DA18  38 03 00 01 */	addi r0, r3, 1
/* 80351DBC 0034DA1C  90 1E 01 30 */	stw r0, 0x130(r30)
/* 80351DC0 0034DA20  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80351DC4 0034DA24  83 C1 00 08 */	lwz r30, 8(r1)
/* 80351DC8 0034DA28  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80351DCC 0034DA2C  7C 08 03 A6 */	mtlr r0
/* 80351DD0 0034DA30  38 21 00 10 */	addi r1, r1, 0x10
/* 80351DD4 0034DA34  4E 80 00 20 */	blr

.global ghiCleanupConnections
ghiCleanupConnections:
/* 80351DD8 0034DA38  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80351DDC 0034DA3C  7C 08 02 A6 */	mflr r0
/* 80351DE0 0034DA40  90 01 00 14 */	stw r0, 0x14(r1)
/* 80351DE4 0034DA44  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80351DE8 0034DA48  93 C1 00 08 */	stw r30, 8(r1)
/* 80351DEC 0034DA4C  80 0D B0 D4 */	lwz r0, lbl_80640394-_SDA_BASE_(r13)
/* 80351DF0 0034DA50  2C 00 00 00 */	cmpwi r0, 0
/* 80351DF4 0034DA54  41 82 00 94 */	beq lbl_80351E88
/* 80351DF8 0034DA58  80 0D B0 CC */	lwz r0, lbl_8064038C-_SDA_BASE_(r13)
/* 80351DFC 0034DA5C  2C 00 00 00 */	cmpwi r0, 0
/* 80351E00 0034DA60  40 81 00 44 */	ble lbl_80351E44
/* 80351E04 0034DA64  4B FF F4 E9 */	bl ghiLock
/* 80351E08 0034DA68  3B E0 00 00 */	li r31, 0
/* 80351E0C 0034DA6C  3B C0 00 00 */	li r30, 0
/* 80351E10 0034DA70  48 00 00 24 */	b lbl_80351E34
lbl_80351E14:
/* 80351E14 0034DA74  80 6D B0 D4 */	lwz r3, lbl_80640394-_SDA_BASE_(r13)
/* 80351E18 0034DA78  7C 63 F0 2E */	lwzx r3, r3, r30
/* 80351E1C 0034DA7C  80 03 00 00 */	lwz r0, 0(r3)
/* 80351E20 0034DA80  2C 00 00 00 */	cmpwi r0, 0
/* 80351E24 0034DA84  41 82 00 08 */	beq lbl_80351E2C
/* 80351E28 0034DA88  4B FF FB FD */	bl ghiFreeConnection
lbl_80351E2C:
/* 80351E2C 0034DA8C  3B DE 00 04 */	addi r30, r30, 4
/* 80351E30 0034DA90  3B FF 00 01 */	addi r31, r31, 1
lbl_80351E34:
/* 80351E34 0034DA94  80 0D B0 D0 */	lwz r0, lbl_80640390-_SDA_BASE_(r13)
/* 80351E38 0034DA98  7C 1F 00 00 */	cmpw r31, r0
/* 80351E3C 0034DA9C  41 80 FF D8 */	blt lbl_80351E14
/* 80351E40 0034DAA0  4B FF F4 B1 */	bl ghiUnlock
lbl_80351E44:
/* 80351E44 0034DAA4  3B C0 00 00 */	li r30, 0
/* 80351E48 0034DAA8  3B E0 00 00 */	li r31, 0
/* 80351E4C 0034DAAC  48 00 00 18 */	b lbl_80351E64
lbl_80351E50:
/* 80351E50 0034DAB0  80 6D B0 D4 */	lwz r3, lbl_80640394-_SDA_BASE_(r13)
/* 80351E54 0034DAB4  7C 63 F8 2E */	lwzx r3, r3, r31
/* 80351E58 0034DAB8  4B FE 74 E1 */	bl gsifree
/* 80351E5C 0034DABC  3B FF 00 04 */	addi r31, r31, 4
/* 80351E60 0034DAC0  3B DE 00 01 */	addi r30, r30, 1
lbl_80351E64:
/* 80351E64 0034DAC4  80 0D B0 D0 */	lwz r0, lbl_80640390-_SDA_BASE_(r13)
/* 80351E68 0034DAC8  7C 1E 00 00 */	cmpw r30, r0
/* 80351E6C 0034DACC  41 80 FF E4 */	blt lbl_80351E50
/* 80351E70 0034DAD0  80 6D B0 D4 */	lwz r3, lbl_80640394-_SDA_BASE_(r13)
/* 80351E74 0034DAD4  4B FE 74 C5 */	bl gsifree
/* 80351E78 0034DAD8  38 00 00 00 */	li r0, 0
/* 80351E7C 0034DADC  90 0D B0 D4 */	stw r0, lbl_80640394-_SDA_BASE_(r13)
/* 80351E80 0034DAE0  90 0D B0 D0 */	stw r0, lbl_80640390-_SDA_BASE_(r13)
/* 80351E84 0034DAE4  90 0D B0 CC */	stw r0, lbl_8064038C-_SDA_BASE_(r13)
lbl_80351E88:
/* 80351E88 0034DAE8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80351E8C 0034DAEC  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80351E90 0034DAF0  83 C1 00 08 */	lwz r30, 8(r1)
/* 80351E94 0034DAF4  7C 08 03 A6 */	mtlr r0
/* 80351E98 0034DAF8  38 21 00 10 */	addi r1, r1, 0x10
/* 80351E9C 0034DAFC  4E 80 00 20 */	blr