summaryrefslogtreecommitdiff
path: root/asm/SDK/DWC/gamespy/gt2Connection.s
blob: 878a4a49b4c5ad36dc250283d2457dd2a66c7018 (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
.include "macros.inc"

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

.global gti2NewOutgoingConnection
gti2NewOutgoingConnection:
/* 8034931C 00344F7C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80349320 00344F80  7C 08 02 A6 */	mflr r0
/* 80349324 00344F84  90 01 00 14 */	stw r0, 0x14(r1)
/* 80349328 00344F88  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8034932C 00344F8C  7C 9F 23 78 */	mr r31, r4
/* 80349330 00344F90  48 00 3F D9 */	bl gti2NewSocketConnection
/* 80349334 00344F94  2C 03 00 00 */	cmpwi r3, 0
/* 80349338 00344F98  41 82 00 08 */	beq lbl_80349340
/* 8034933C 00344F9C  48 00 00 20 */	b lbl_8034935C
lbl_80349340:
/* 80349340 00344FA0  80 9F 00 00 */	lwz r4, 0(r31)
/* 80349344 00344FA4  38 A0 00 00 */	li r5, 0
/* 80349348 00344FA8  38 00 00 01 */	li r0, 1
/* 8034934C 00344FAC  38 60 00 00 */	li r3, 0
/* 80349350 00344FB0  90 A4 00 0C */	stw r5, 0xc(r4)
/* 80349354 00344FB4  80 9F 00 00 */	lwz r4, 0(r31)
/* 80349358 00344FB8  90 04 00 10 */	stw r0, 0x10(r4)
lbl_8034935C:
/* 8034935C 00344FBC  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80349360 00344FC0  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80349364 00344FC4  7C 08 03 A6 */	mtlr r0
/* 80349368 00344FC8  38 21 00 10 */	addi r1, r1, 0x10
/* 8034936C 00344FCC  4E 80 00 20 */	blr

.global gti2NewIncomingConnection
gti2NewIncomingConnection:
/* 80349370 00344FD0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80349374 00344FD4  7C 08 02 A6 */	mflr r0
/* 80349378 00344FD8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8034937C 00344FDC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80349380 00344FE0  7C 9F 23 78 */	mr r31, r4
/* 80349384 00344FE4  48 00 3F 85 */	bl gti2NewSocketConnection
/* 80349388 00344FE8  2C 03 00 00 */	cmpwi r3, 0
/* 8034938C 00344FEC  41 82 00 08 */	beq lbl_80349394
/* 80349390 00344FF0  48 00 00 20 */	b lbl_803493B0
lbl_80349394:
/* 80349394 00344FF4  80 9F 00 00 */	lwz r4, 0(r31)
/* 80349398 00344FF8  38 A0 00 02 */	li r5, 2
/* 8034939C 00344FFC  38 00 00 00 */	li r0, 0
/* 803493A0 00345000  38 60 00 00 */	li r3, 0
/* 803493A4 00345004  90 A4 00 0C */	stw r5, 0xc(r4)
/* 803493A8 00345008  80 9F 00 00 */	lwz r4, 0(r31)
/* 803493AC 0034500C  90 04 00 10 */	stw r0, 0x10(r4)
lbl_803493B0:
/* 803493B0 00345010  80 01 00 14 */	lwz r0, 0x14(r1)
/* 803493B4 00345014  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 803493B8 00345018  7C 08 03 A6 */	mtlr r0
/* 803493BC 0034501C  38 21 00 10 */	addi r1, r1, 0x10
/* 803493C0 00345020  4E 80 00 20 */	blr

.global gti2StartConnectionAttempt
gti2StartConnectionAttempt:
/* 803493C4 00345024  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 803493C8 00345028  7C 08 02 A6 */	mflr r0
/* 803493CC 0034502C  90 01 00 44 */	stw r0, 0x44(r1)
/* 803493D0 00345030  93 E1 00 3C */	stw r31, 0x3c(r1)
/* 803493D4 00345034  7C DF 33 78 */	mr r31, r6
/* 803493D8 00345038  93 C1 00 38 */	stw r30, 0x38(r1)
/* 803493DC 0034503C  7C 7E 1B 78 */	mr r30, r3
/* 803493E0 00345040  38 61 00 08 */	addi r3, r1, 8
/* 803493E4 00345044  90 81 00 08 */	stw r4, 8(r1)
/* 803493E8 00345048  38 81 00 0C */	addi r4, r1, 0xc
/* 803493EC 0034504C  90 A1 00 0C */	stw r5, 0xc(r1)
/* 803493F0 00345050  48 00 49 E5 */	bl gti2MessageCheck
/* 803493F4 00345054  80 61 00 0C */	lwz r3, 0xc(r1)
/* 803493F8 00345058  2C 03 00 00 */	cmpwi r3, 0
/* 803493FC 0034505C  40 81 00 30 */	ble lbl_8034942C
/* 80349400 00345060  4B FE FF 15 */	bl gsimalloc
/* 80349404 00345064  2C 03 00 00 */	cmpwi r3, 0
/* 80349408 00345068  90 7E 00 38 */	stw r3, 0x38(r30)
/* 8034940C 0034506C  40 82 00 0C */	bne lbl_80349418
/* 80349410 00345070  38 60 00 01 */	li r3, 1
/* 80349414 00345074  48 00 00 6C */	b lbl_80349480
lbl_80349418:
/* 80349418 00345078  80 81 00 08 */	lwz r4, 8(r1)
/* 8034941C 0034507C  80 A1 00 0C */	lwz r5, 0xc(r1)
/* 80349420 00345080  4B CB AB E1 */	bl memcpy
/* 80349424 00345084  80 01 00 0C */	lwz r0, 0xc(r1)
/* 80349428 00345088  90 1E 00 3C */	stw r0, 0x3c(r30)
lbl_8034942C:
/* 8034942C 0034508C  2C 1F 00 00 */	cmpwi r31, 0
/* 80349430 00345090  41 82 00 24 */	beq lbl_80349454
/* 80349434 00345094  80 7F 00 00 */	lwz r3, 0(r31)
/* 80349438 00345098  80 1F 00 04 */	lwz r0, 4(r31)
/* 8034943C 0034509C  90 7E 00 28 */	stw r3, 0x28(r30)
/* 80349440 003450A0  90 1E 00 2C */	stw r0, 0x2c(r30)
/* 80349444 003450A4  80 7F 00 08 */	lwz r3, 8(r31)
/* 80349448 003450A8  80 1F 00 0C */	lwz r0, 0xc(r31)
/* 8034944C 003450AC  90 7E 00 30 */	stw r3, 0x30(r30)
/* 80349450 003450B0  90 1E 00 34 */	stw r0, 0x34(r30)
lbl_80349454:
/* 80349454 003450B4  38 61 00 10 */	addi r3, r1, 0x10
/* 80349458 003450B8  4B FF F0 DD */	bl gti2GetChallenge
/* 8034945C 003450BC  38 7E 00 68 */	addi r3, r30, 0x68
/* 80349460 003450C0  38 81 00 10 */	addi r4, r1, 0x10
/* 80349464 003450C4  4B FF F1 E1 */	bl gti2GetResponse
/* 80349468 003450C8  7F C3 F3 78 */	mr r3, r30
/* 8034946C 003450CC  38 81 00 10 */	addi r4, r1, 0x10
/* 80349470 003450D0  48 00 30 E9 */	bl gti2SendClientChallenge
/* 80349474 003450D4  38 00 00 00 */	li r0, 0
/* 80349478 003450D8  38 60 00 00 */	li r3, 0
/* 8034947C 003450DC  90 1E 00 0C */	stw r0, 0xc(r30)
lbl_80349480:
/* 80349480 003450E0  80 01 00 44 */	lwz r0, 0x44(r1)
/* 80349484 003450E4  83 E1 00 3C */	lwz r31, 0x3c(r1)
/* 80349488 003450E8  83 C1 00 38 */	lwz r30, 0x38(r1)
/* 8034948C 003450EC  7C 08 03 A6 */	mtlr r0
/* 80349490 003450F0  38 21 00 40 */	addi r1, r1, 0x40
/* 80349494 003450F4  4E 80 00 20 */	blr

.global gti2AcceptConnection
gti2AcceptConnection:
/* 80349498 003450F8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8034949C 003450FC  7C 08 02 A6 */	mflr r0
/* 803494A0 00345100  90 01 00 14 */	stw r0, 0x14(r1)
/* 803494A4 00345104  93 E1 00 0C */	stw r31, 0xc(r1)
/* 803494A8 00345108  7C 9F 23 78 */	mr r31, r4
/* 803494AC 0034510C  93 C1 00 08 */	stw r30, 8(r1)
/* 803494B0 00345110  7C 7E 1B 78 */	mr r30, r3
/* 803494B4 00345114  80 03 00 14 */	lwz r0, 0x14(r3)
/* 803494B8 00345118  2C 00 00 00 */	cmpwi r0, 0
/* 803494BC 0034511C  41 82 00 14 */	beq lbl_803494D0
/* 803494C0 00345120  38 00 00 00 */	li r0, 0
/* 803494C4 00345124  90 03 00 14 */	stw r0, 0x14(r3)
/* 803494C8 00345128  38 60 00 00 */	li r3, 0
/* 803494CC 0034512C  48 00 00 58 */	b lbl_80349524
lbl_803494D0:
/* 803494D0 00345130  80 03 00 0C */	lwz r0, 0xc(r3)
/* 803494D4 00345134  38 80 00 00 */	li r4, 0
/* 803494D8 00345138  90 83 00 14 */	stw r4, 0x14(r3)
/* 803494DC 0034513C  2C 00 00 04 */	cmpwi r0, 4
/* 803494E0 00345140  41 82 00 0C */	beq lbl_803494EC
/* 803494E4 00345144  38 60 00 00 */	li r3, 0
/* 803494E8 00345148  48 00 00 3C */	b lbl_80349524
lbl_803494EC:
/* 803494EC 0034514C  48 00 31 51 */	bl gti2SendAccept
/* 803494F0 00345150  38 00 00 05 */	li r0, 5
/* 803494F4 00345154  2C 1F 00 00 */	cmpwi r31, 0
/* 803494F8 00345158  90 1E 00 0C */	stw r0, 0xc(r30)
/* 803494FC 0034515C  41 82 00 24 */	beq lbl_80349520
/* 80349500 00345160  80 7F 00 00 */	lwz r3, 0(r31)
/* 80349504 00345164  80 1F 00 04 */	lwz r0, 4(r31)
/* 80349508 00345168  90 7E 00 28 */	stw r3, 0x28(r30)
/* 8034950C 0034516C  90 1E 00 2C */	stw r0, 0x2c(r30)
/* 80349510 00345170  80 7F 00 08 */	lwz r3, 8(r31)
/* 80349514 00345174  80 1F 00 0C */	lwz r0, 0xc(r31)
/* 80349518 00345178  90 7E 00 30 */	stw r3, 0x30(r30)
/* 8034951C 0034517C  90 1E 00 34 */	stw r0, 0x34(r30)
lbl_80349520:
/* 80349520 00345180  38 60 00 01 */	li r3, 1
lbl_80349524:
/* 80349524 00345184  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80349528 00345188  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8034952C 0034518C  83 C1 00 08 */	lwz r30, 8(r1)
/* 80349530 00345190  7C 08 03 A6 */	mtlr r0
/* 80349534 00345194  38 21 00 10 */	addi r1, r1, 0x10
/* 80349538 00345198  4E 80 00 20 */	blr

.global gti2RejectConnection
gti2RejectConnection:
/* 8034953C 0034519C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80349540 003451A0  7C 08 02 A6 */	mflr r0
/* 80349544 003451A4  90 01 00 24 */	stw r0, 0x24(r1)
/* 80349548 003451A8  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8034954C 003451AC  7C 7F 1B 78 */	mr r31, r3
/* 80349550 003451B0  90 81 00 08 */	stw r4, 8(r1)
/* 80349554 003451B4  38 80 00 00 */	li r4, 0
/* 80349558 003451B8  90 A1 00 0C */	stw r5, 0xc(r1)
/* 8034955C 003451BC  80 03 00 0C */	lwz r0, 0xc(r3)
/* 80349560 003451C0  90 83 00 14 */	stw r4, 0x14(r3)
/* 80349564 003451C4  2C 00 00 04 */	cmpwi r0, 4
/* 80349568 003451C8  40 82 00 28 */	bne lbl_80349590
/* 8034956C 003451CC  38 61 00 08 */	addi r3, r1, 8
/* 80349570 003451D0  38 81 00 0C */	addi r4, r1, 0xc
/* 80349574 003451D4  48 00 48 61 */	bl gti2MessageCheck
/* 80349578 003451D8  80 81 00 08 */	lwz r4, 8(r1)
/* 8034957C 003451DC  7F E3 FB 78 */	mr r3, r31
/* 80349580 003451E0  80 A1 00 0C */	lwz r5, 0xc(r1)
/* 80349584 003451E4  48 00 31 81 */	bl gti2SendReject
/* 80349588 003451E8  38 00 00 06 */	li r0, 6
/* 8034958C 003451EC  90 1F 00 0C */	stw r0, 0xc(r31)
lbl_80349590:
/* 80349590 003451F0  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80349594 003451F4  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80349598 003451F8  7C 08 03 A6 */	mtlr r0
/* 8034959C 003451FC  38 21 00 20 */	addi r1, r1, 0x20
/* 803495A0 00345200  4E 80 00 20 */	blr

.global gti2ConnectionSendData
gti2ConnectionSendData:
/* 803495A4 00345204  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 803495A8 00345208  7C 08 02 A6 */	mflr r0
/* 803495AC 0034520C  7C 86 23 78 */	mr r6, r4
/* 803495B0 00345210  7C A7 2B 78 */	mr r7, r5
/* 803495B4 00345214  90 01 00 14 */	stw r0, 0x14(r1)
/* 803495B8 00345218  93 E1 00 0C */	stw r31, 0xc(r1)
/* 803495BC 0034521C  7C 7F 1B 78 */	mr r31, r3
/* 803495C0 00345220  80 63 00 08 */	lwz r3, 8(r3)
/* 803495C4 00345224  80 9F 00 00 */	lwz r4, 0(r31)
/* 803495C8 00345228  A0 BF 00 04 */	lhz r5, 4(r31)
/* 803495CC 0034522C  48 00 40 7D */	bl gti2SocketSend
/* 803495D0 00345230  2C 03 00 00 */	cmpwi r3, 0
/* 803495D4 00345234  40 82 00 0C */	bne lbl_803495E0
/* 803495D8 00345238  38 60 00 00 */	li r3, 0
/* 803495DC 0034523C  48 00 00 10 */	b lbl_803495EC
lbl_803495E0:
/* 803495E0 00345240  4B FE F9 F9 */	bl current_time
/* 803495E4 00345244  90 7F 00 88 */	stw r3, 0x88(r31)
/* 803495E8 00345248  38 60 00 01 */	li r3, 1
lbl_803495EC:
/* 803495EC 0034524C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 803495F0 00345250  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 803495F4 00345254  7C 08 03 A6 */	mtlr r0
/* 803495F8 00345258  38 21 00 10 */	addi r1, r1, 0x10
/* 803495FC 0034525C  4E 80 00 20 */	blr

.global gti2CheckTimeout
gti2CheckTimeout:
/* 80349600 00345260  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80349604 00345264  7C 08 02 A6 */	mflr r0
/* 80349608 00345268  90 01 00 24 */	stw r0, 0x24(r1)
/* 8034960C 0034526C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80349610 00345270  7C 7F 1B 78 */	mr r31, r3
/* 80349614 00345274  80 A3 00 0C */	lwz r5, 0xc(r3)
/* 80349618 00345278  2C 05 00 05 */	cmpwi r5, 5
/* 8034961C 0034527C  40 80 00 C8 */	bge lbl_803496E4
/* 80349620 00345280  80 03 00 10 */	lwz r0, 0x10(r3)
/* 80349624 00345284  38 C0 00 00 */	li r6, 0
/* 80349628 00345288  2C 00 00 00 */	cmpwi r0, 0
/* 8034962C 0034528C  41 82 00 28 */	beq lbl_80349654
/* 80349630 00345290  80 A3 00 20 */	lwz r5, 0x20(r3)
/* 80349634 00345294  2C 05 00 00 */	cmpwi r5, 0
/* 80349638 00345298  41 82 00 38 */	beq lbl_80349670
/* 8034963C 0034529C  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 80349640 003452A0  7C 00 20 50 */	subf r0, r0, r4
/* 80349644 003452A4  7C 00 28 40 */	cmplw r0, r5
/* 80349648 003452A8  40 81 00 28 */	ble lbl_80349670
/* 8034964C 003452AC  38 C0 00 01 */	li r6, 1
/* 80349650 003452B0  48 00 00 20 */	b lbl_80349670
lbl_80349654:
/* 80349654 003452B4  2C 05 00 04 */	cmpwi r5, 4
/* 80349658 003452B8  40 80 00 18 */	bge lbl_80349670
/* 8034965C 003452BC  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 80349660 003452C0  7C 00 20 50 */	subf r0, r0, r4
/* 80349664 003452C4  28 00 EA 60 */	cmplwi r0, 0xea60
/* 80349668 003452C8  40 81 00 08 */	ble lbl_80349670
/* 8034966C 003452CC  38 C0 00 01 */	li r6, 1
lbl_80349670:
/* 80349670 003452D0  2C 06 00 00 */	cmpwi r6, 0
/* 80349674 003452D4  41 82 00 70 */	beq lbl_803496E4
/* 80349678 003452D8  7F E3 FB 78 */	mr r3, r31
/* 8034967C 003452DC  48 00 36 D9 */	bl gti2SendClosed
/* 80349680 003452E0  93 E1 00 08 */	stw r31, 8(r1)
/* 80349684 003452E4  80 1F 00 0C */	lwz r0, 0xc(r31)
/* 80349688 003452E8  2C 00 00 07 */	cmpwi r0, 7
/* 8034968C 003452EC  41 82 00 34 */	beq lbl_803496C0
/* 80349690 003452F0  38 00 00 07 */	li r0, 7
/* 80349694 003452F4  38 81 00 08 */	addi r4, r1, 8
/* 80349698 003452F8  90 1F 00 0C */	stw r0, 0xc(r31)
/* 8034969C 003452FC  80 61 00 08 */	lwz r3, 8(r1)
/* 803496A0 00345300  80 63 00 08 */	lwz r3, 8(r3)
/* 803496A4 00345304  80 63 00 0C */	lwz r3, 0xc(r3)
/* 803496A8 00345308  4B FE D3 D1 */	bl TableRemove
/* 803496AC 0034530C  80 61 00 08 */	lwz r3, 8(r1)
/* 803496B0 00345310  38 81 00 08 */	addi r4, r1, 8
/* 803496B4 00345314  80 63 00 08 */	lwz r3, 8(r3)
/* 803496B8 00345318  80 63 00 10 */	lwz r3, 0x10(r3)
/* 803496BC 0034531C  4B FE C8 65 */	bl ArrayAppend
lbl_803496C0:
/* 803496C0 00345320  7F E3 FB 78 */	mr r3, r31
/* 803496C4 00345324  38 80 00 06 */	li r4, 6
/* 803496C8 00345328  38 A0 00 00 */	li r5, 0
/* 803496CC 0034532C  38 C0 00 00 */	li r6, 0
/* 803496D0 00345330  4B FF F5 49 */	bl gti2ConnectedCallback
/* 803496D4 00345334  2C 03 00 00 */	cmpwi r3, 0
/* 803496D8 00345338  40 82 00 0C */	bne lbl_803496E4
/* 803496DC 0034533C  38 60 00 00 */	li r3, 0
/* 803496E0 00345340  48 00 00 08 */	b lbl_803496E8
lbl_803496E4:
/* 803496E4 00345344  38 60 00 01 */	li r3, 1
lbl_803496E8:
/* 803496E8 00345348  80 01 00 24 */	lwz r0, 0x24(r1)
/* 803496EC 0034534C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 803496F0 00345350  7C 08 03 A6 */	mtlr r0
/* 803496F4 00345354  38 21 00 20 */	addi r1, r1, 0x20
/* 803496F8 00345358  4E 80 00 20 */	blr

.global gti2ConnectionThink
gti2ConnectionThink:
/* 803496FC 0034535C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80349700 00345360  7C 08 02 A6 */	mflr r0
/* 80349704 00345364  90 01 00 24 */	stw r0, 0x24(r1)
/* 80349708 00345368  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8034970C 0034536C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80349710 00345370  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80349714 00345374  7C 9D 23 78 */	mr r29, r4
/* 80349718 00345378  93 81 00 10 */	stw r28, 0x10(r1)
/* 8034971C 0034537C  7C 7C 1B 78 */	mr r28, r3
/* 80349720 00345380  4B FF FE E1 */	bl gti2CheckTimeout
/* 80349724 00345384  2C 03 00 00 */	cmpwi r3, 0
/* 80349728 00345388  40 82 00 0C */	bne lbl_80349734
/* 8034972C 0034538C  38 60 00 00 */	li r3, 0
/* 80349730 00345390  48 00 00 F8 */	b lbl_80349828
lbl_80349734:
/* 80349734 00345394  80 1C 00 88 */	lwz r0, 0x88(r28)
/* 80349738 00345398  7C 00 E8 50 */	subf r0, r0, r29
/* 8034973C 0034539C  28 00 75 30 */	cmplwi r0, 0x7530
/* 80349740 003453A0  40 81 00 1C */	ble lbl_8034975C
/* 80349744 003453A4  7F 83 E3 78 */	mr r3, r28
/* 80349748 003453A8  48 00 31 79 */	bl gti2SendKeepAlive
/* 8034974C 003453AC  2C 03 00 00 */	cmpwi r3, 0
/* 80349750 003453B0  40 82 00 0C */	bne lbl_8034975C
/* 80349754 003453B4  38 00 00 00 */	li r0, 0
/* 80349758 003453B8  48 00 00 08 */	b lbl_80349760
lbl_8034975C:
/* 8034975C 003453BC  38 00 00 01 */	li r0, 1
lbl_80349760:
/* 80349760 003453C0  2C 00 00 00 */	cmpwi r0, 0
/* 80349764 003453C4  40 82 00 0C */	bne lbl_80349770
/* 80349768 003453C8  38 60 00 00 */	li r3, 0
/* 8034976C 003453CC  48 00 00 BC */	b lbl_80349828
lbl_80349770:
/* 80349770 003453D0  80 7C 00 60 */	lwz r3, 0x60(r28)
/* 80349774 003453D4  4B FE C7 75 */	bl ArrayLength
/* 80349778 003453D8  7C 7F 1B 78 */	mr r31, r3
/* 8034977C 003453DC  3B C0 00 00 */	li r30, 0
/* 80349780 003453E0  48 00 00 40 */	b lbl_803497C0
lbl_80349784:
/* 80349784 003453E4  80 7C 00 60 */	lwz r3, 0x60(r28)
/* 80349788 003453E8  7F C4 F3 78 */	mr r4, r30
/* 8034978C 003453EC  4B FE C7 65 */	bl ArrayNth
/* 80349790 003453F0  80 03 00 0C */	lwz r0, 0xc(r3)
/* 80349794 003453F4  7C 64 1B 78 */	mr r4, r3
/* 80349798 003453F8  7C 00 E8 50 */	subf r0, r0, r29
/* 8034979C 003453FC  28 00 03 E8 */	cmplwi r0, 0x3e8
/* 803497A0 00345400  40 81 00 1C */	ble lbl_803497BC
/* 803497A4 00345404  7F 83 E3 78 */	mr r3, r28
/* 803497A8 00345408  48 00 36 65 */	bl gti2ResendMessage
/* 803497AC 0034540C  2C 03 00 00 */	cmpwi r3, 0
/* 803497B0 00345410  40 82 00 0C */	bne lbl_803497BC
/* 803497B4 00345414  38 00 00 00 */	li r0, 0
/* 803497B8 00345418  48 00 00 14 */	b lbl_803497CC
lbl_803497BC:
/* 803497BC 0034541C  3B DE 00 01 */	addi r30, r30, 1
lbl_803497C0:
/* 803497C0 00345420  7C 1E F8 00 */	cmpw r30, r31
/* 803497C4 00345424  41 80 FF C0 */	blt lbl_80349784
/* 803497C8 00345428  38 00 00 01 */	li r0, 1
lbl_803497CC:
/* 803497CC 0034542C  2C 00 00 00 */	cmpwi r0, 0
/* 803497D0 00345430  40 82 00 0C */	bne lbl_803497DC
/* 803497D4 00345434  38 60 00 00 */	li r3, 0
/* 803497D8 00345438  48 00 00 50 */	b lbl_80349828
lbl_803497DC:
/* 803497DC 0034543C  80 1C 00 90 */	lwz r0, 0x90(r28)
/* 803497E0 00345440  2C 00 00 00 */	cmpwi r0, 0
/* 803497E4 00345444  40 82 00 0C */	bne lbl_803497F0
/* 803497E8 00345448  38 60 00 01 */	li r3, 1
/* 803497EC 0034544C  48 00 00 30 */	b lbl_8034981C
lbl_803497F0:
/* 803497F0 00345450  80 1C 00 94 */	lwz r0, 0x94(r28)
/* 803497F4 00345454  7C 00 E8 50 */	subf r0, r0, r29
/* 803497F8 00345458  28 00 00 64 */	cmplwi r0, 0x64
/* 803497FC 0034545C  40 81 00 1C */	ble lbl_80349818
/* 80349800 00345460  7F 83 E3 78 */	mr r3, r28
/* 80349804 00345464  48 00 32 B1 */	bl gti2SendAck
/* 80349808 00345468  2C 03 00 00 */	cmpwi r3, 0
/* 8034980C 0034546C  40 82 00 0C */	bne lbl_80349818
/* 80349810 00345470  38 60 00 00 */	li r3, 0
/* 80349814 00345474  48 00 00 08 */	b lbl_8034981C
lbl_80349818:
/* 80349818 00345478  38 60 00 01 */	li r3, 1
lbl_8034981C:
/* 8034981C 0034547C  7C 03 00 D0 */	neg r0, r3
/* 80349820 00345480  7C 00 1B 78 */	or r0, r0, r3
/* 80349824 00345484  54 03 0F FE */	srwi r3, r0, 0x1f
lbl_80349828:
/* 80349828 00345488  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8034982C 0034548C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80349830 00345490  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80349834 00345494  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80349838 00345498  83 81 00 10 */	lwz r28, 0x10(r1)
/* 8034983C 0034549C  7C 08 03 A6 */	mtlr r0
/* 80349840 003454A0  38 21 00 20 */	addi r1, r1, 0x20
/* 80349844 003454A4  4E 80 00 20 */	blr

.global func_80349848
func_80349848:
/* 80349848 003454A8  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8034984C 003454AC  7C 08 02 A6 */	mflr r0
/* 80349850 003454B0  2C 04 00 00 */	cmpwi r4, 0
/* 80349854 003454B4  90 01 00 24 */	stw r0, 0x24(r1)
/* 80349858 003454B8  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8034985C 003454BC  7C 7F 1B 78 */	mr r31, r3
/* 80349860 003454C0  41 82 00 70 */	beq lbl_803498D0
/* 80349864 003454C4  80 03 00 0C */	lwz r0, 0xc(r3)
/* 80349868 003454C8  2C 00 00 07 */	cmpwi r0, 7
/* 8034986C 003454CC  40 80 00 70 */	bge lbl_803498DC
/* 80349870 003454D0  90 61 00 08 */	stw r3, 8(r1)
/* 80349874 003454D4  80 03 00 0C */	lwz r0, 0xc(r3)
/* 80349878 003454D8  2C 00 00 07 */	cmpwi r0, 7
/* 8034987C 003454DC  41 82 00 34 */	beq lbl_803498B0
/* 80349880 003454E0  38 00 00 07 */	li r0, 7
/* 80349884 003454E4  38 81 00 08 */	addi r4, r1, 8
/* 80349888 003454E8  90 03 00 0C */	stw r0, 0xc(r3)
/* 8034988C 003454EC  80 61 00 08 */	lwz r3, 8(r1)
/* 80349890 003454F0  80 63 00 08 */	lwz r3, 8(r3)
/* 80349894 003454F4  80 63 00 0C */	lwz r3, 0xc(r3)
/* 80349898 003454F8  4B FE D1 E1 */	bl TableRemove
/* 8034989C 003454FC  80 61 00 08 */	lwz r3, 8(r1)
/* 803498A0 00345500  38 81 00 08 */	addi r4, r1, 8
/* 803498A4 00345504  80 63 00 08 */	lwz r3, 8(r3)
/* 803498A8 00345508  80 63 00 10 */	lwz r3, 0x10(r3)
/* 803498AC 0034550C  4B FE C6 75 */	bl ArrayAppend
lbl_803498B0:
/* 803498B0 00345510  7F E3 FB 78 */	mr r3, r31
/* 803498B4 00345514  48 00 34 A1 */	bl gti2SendClosed
/* 803498B8 00345518  7F E3 FB 78 */	mr r3, r31
/* 803498BC 0034551C  38 80 00 00 */	li r4, 0
/* 803498C0 00345520  4B FF F5 0D */	bl gti2ClosedCallback
/* 803498C4 00345524  7F E3 FB 78 */	mr r3, r31
/* 803498C8 00345528  48 00 3C B5 */	bl gti2FreeSocketConnection
/* 803498CC 0034552C  48 00 00 10 */	b lbl_803498DC
lbl_803498D0:
/* 803498D0 00345530  38 00 00 06 */	li r0, 6
/* 803498D4 00345534  90 03 00 0C */	stw r0, 0xc(r3)
/* 803498D8 00345538  48 00 2F 21 */	bl gti2SendClose
lbl_803498DC:
/* 803498DC 0034553C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 803498E0 00345540  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 803498E4 00345544  7C 08 03 A6 */	mtlr r0
/* 803498E8 00345548  38 21 00 20 */	addi r1, r1, 0x20
/* 803498EC 0034554C  4E 80 00 20 */	blr

.global gti2ConnectionClosed
gti2ConnectionClosed:
/* 803498F0 00345550  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 803498F4 00345554  7C 08 02 A6 */	mflr r0
/* 803498F8 00345558  90 01 00 14 */	stw r0, 0x14(r1)
/* 803498FC 0034555C  90 61 00 08 */	stw r3, 8(r1)
/* 80349900 00345560  80 03 00 0C */	lwz r0, 0xc(r3)
/* 80349904 00345564  2C 00 00 07 */	cmpwi r0, 7
/* 80349908 00345568  41 82 00 34 */	beq lbl_8034993C
/* 8034990C 0034556C  38 00 00 07 */	li r0, 7
/* 80349910 00345570  38 81 00 08 */	addi r4, r1, 8
/* 80349914 00345574  90 03 00 0C */	stw r0, 0xc(r3)
/* 80349918 00345578  80 61 00 08 */	lwz r3, 8(r1)
/* 8034991C 0034557C  80 63 00 08 */	lwz r3, 8(r3)
/* 80349920 00345580  80 63 00 0C */	lwz r3, 0xc(r3)
/* 80349924 00345584  4B FE D1 55 */	bl TableRemove
/* 80349928 00345588  80 61 00 08 */	lwz r3, 8(r1)
/* 8034992C 0034558C  38 81 00 08 */	addi r4, r1, 8
/* 80349930 00345590  80 63 00 08 */	lwz r3, 8(r3)
/* 80349934 00345594  80 63 00 10 */	lwz r3, 0x10(r3)
/* 80349938 00345598  4B FE C5 E9 */	bl ArrayAppend
lbl_8034993C:
/* 8034993C 0034559C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80349940 003455A0  7C 08 03 A6 */	mtlr r0
/* 80349944 003455A4  38 21 00 10 */	addi r1, r1, 0x10
/* 80349948 003455A8  4E 80 00 20 */	blr

.global gti2ConnectionCleanup
gti2ConnectionCleanup:
/* 8034994C 003455AC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80349950 003455B0  7C 08 02 A6 */	mflr r0
/* 80349954 003455B4  90 01 00 14 */	stw r0, 0x14(r1)
/* 80349958 003455B8  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8034995C 003455BC  7C 7F 1B 78 */	mr r31, r3
/* 80349960 003455C0  80 03 00 38 */	lwz r0, 0x38(r3)
/* 80349964 003455C4  2C 00 00 00 */	cmpwi r0, 0
/* 80349968 003455C8  41 82 00 0C */	beq lbl_80349974
/* 8034996C 003455CC  7C 03 03 78 */	mr r3, r0
/* 80349970 003455D0  4B FE F9 C9 */	bl gsifree
lbl_80349974:
/* 80349974 003455D4  80 7F 00 44 */	lwz r3, 0x44(r31)
/* 80349978 003455D8  2C 03 00 00 */	cmpwi r3, 0
/* 8034997C 003455DC  41 82 00 08 */	beq lbl_80349984
/* 80349980 003455E0  4B FE F9 B9 */	bl gsifree
lbl_80349984:
/* 80349984 003455E4  80 7F 00 50 */	lwz r3, 0x50(r31)
/* 80349988 003455E8  2C 03 00 00 */	cmpwi r3, 0
/* 8034998C 003455EC  41 82 00 08 */	beq lbl_80349994
/* 80349990 003455F0  4B FE F9 A9 */	bl gsifree
lbl_80349994:
/* 80349994 003455F4  80 7F 00 5C */	lwz r3, 0x5c(r31)
/* 80349998 003455F8  2C 03 00 00 */	cmpwi r3, 0
/* 8034999C 003455FC  41 82 00 08 */	beq lbl_803499A4
/* 803499A0 00345600  4B FE C4 B5 */	bl ArrayFree
lbl_803499A4:
/* 803499A4 00345604  80 7F 00 60 */	lwz r3, 0x60(r31)
/* 803499A8 00345608  2C 03 00 00 */	cmpwi r3, 0
/* 803499AC 0034560C  41 82 00 08 */	beq lbl_803499B4
/* 803499B0 00345610  4B FE C4 A5 */	bl ArrayFree
lbl_803499B4:
/* 803499B4 00345614  80 7F 00 98 */	lwz r3, 0x98(r31)
/* 803499B8 00345618  2C 03 00 00 */	cmpwi r3, 0
/* 803499BC 0034561C  41 82 00 08 */	beq lbl_803499C4
/* 803499C0 00345620  4B FE C4 95 */	bl ArrayFree
lbl_803499C4:
/* 803499C4 00345624  80 7F 00 9C */	lwz r3, 0x9c(r31)
/* 803499C8 00345628  2C 03 00 00 */	cmpwi r3, 0
/* 803499CC 0034562C  41 82 00 08 */	beq lbl_803499D4
/* 803499D0 00345630  4B FE C4 85 */	bl ArrayFree
lbl_803499D4:
/* 803499D4 00345634  7F E3 FB 78 */	mr r3, r31
/* 803499D8 00345638  4B FE F9 61 */	bl gsifree
/* 803499DC 0034563C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 803499E0 00345640  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 803499E4 00345644  7C 08 03 A6 */	mtlr r0
/* 803499E8 00345648  38 21 00 10 */	addi r1, r1, 0x10
/* 803499EC 0034564C  4E 80 00 20 */	blr