summaryrefslogtreecommitdiff
path: root/asm/SDK/DWC/gamespy/gt2Socket.s
blob: 8c7b3148d6be70e30319ae240fe3f7022f9cdb46 (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
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
.include "macros.inc"

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

.global gti2ConnectionHash
gti2ConnectionHash:
/* 8034CFB8 00348C18  80 A3 00 00 */	lwz r5, 0(r3)
/* 8034CFBC 00348C1C  80 65 00 00 */	lwz r3, 0(r5)
/* 8034CFC0 00348C20  A0 05 00 04 */	lhz r0, 4(r5)
/* 8034CFC4 00348C24  7C 63 01 D6 */	mullw r3, r3, r0
/* 8034CFC8 00348C28  7C 03 23 96 */	divwu r0, r3, r4
/* 8034CFCC 00348C2C  7C 00 21 D6 */	mullw r0, r0, r4
/* 8034CFD0 00348C30  7C 60 18 50 */	subf r3, r0, r3
/* 8034CFD4 00348C34  4E 80 00 20 */	blr

.global gti2ConnectionCompare
gti2ConnectionCompare:
/* 8034CFD8 00348C38  80 A3 00 00 */	lwz r5, 0(r3)
/* 8034CFDC 00348C3C  80 84 00 00 */	lwz r4, 0(r4)
/* 8034CFE0 00348C40  80 65 00 00 */	lwz r3, 0(r5)
/* 8034CFE4 00348C44  80 04 00 00 */	lwz r0, 0(r4)
/* 8034CFE8 00348C48  7C 03 00 40 */	cmplw r3, r0
/* 8034CFEC 00348C4C  41 82 00 0C */	beq lbl_8034CFF8
/* 8034CFF0 00348C50  7C 60 18 50 */	subf r3, r0, r3
/* 8034CFF4 00348C54  4E 80 00 20 */	blr
lbl_8034CFF8:
/* 8034CFF8 00348C58  A0 64 00 04 */	lhz r3, 4(r4)
/* 8034CFFC 00348C5C  A0 05 00 04 */	lhz r0, 4(r5)
/* 8034D000 00348C60  7C 03 00 50 */	subf r0, r3, r0
/* 8034D004 00348C64  7C 03 07 34 */	extsh r3, r0
/* 8034D008 00348C68  4E 80 00 20 */	blr

.global gti2ConnectionFree
gti2ConnectionFree:
/* 8034D00C 00348C6C  80 63 00 00 */	lwz r3, 0(r3)
/* 8034D010 00348C70  4B FF C9 3C */	b gti2ConnectionCleanup

.global gti2SocketFindConnection
gti2SocketFindConnection:
/* 8034D014 00348C74  94 21 FF 50 */	stwu r1, -0xb0(r1)
/* 8034D018 00348C78  7C 08 02 A6 */	mflr r0
/* 8034D01C 00348C7C  90 01 00 B4 */	stw r0, 0xb4(r1)
/* 8034D020 00348C80  38 01 00 10 */	addi r0, r1, 0x10
/* 8034D024 00348C84  90 81 00 10 */	stw r4, 0x10(r1)
/* 8034D028 00348C88  38 81 00 08 */	addi r4, r1, 8
/* 8034D02C 00348C8C  B0 A1 00 14 */	sth r5, 0x14(r1)
/* 8034D030 00348C90  90 01 00 08 */	stw r0, 8(r1)
/* 8034D034 00348C94  80 63 00 0C */	lwz r3, 0xc(r3)
/* 8034D038 00348C98  4B FE 9A E5 */	bl TableLookup
/* 8034D03C 00348C9C  2C 03 00 00 */	cmpwi r3, 0
/* 8034D040 00348CA0  41 82 00 0C */	beq lbl_8034D04C
/* 8034D044 00348CA4  80 63 00 00 */	lwz r3, 0(r3)
/* 8034D048 00348CA8  48 00 00 08 */	b lbl_8034D050
lbl_8034D04C:
/* 8034D04C 00348CAC  38 60 00 00 */	li r3, 0
lbl_8034D050:
/* 8034D050 00348CB0  80 01 00 B4 */	lwz r0, 0xb4(r1)
/* 8034D054 00348CB4  7C 08 03 A6 */	mtlr r0
/* 8034D058 00348CB8  38 21 00 B0 */	addi r1, r1, 0xb0
/* 8034D05C 00348CBC  4E 80 00 20 */	blr

.global gti2CreateSocket
gti2CreateSocket:
/* 8034D060 00348CC0  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 8034D064 00348CC4  7C 08 02 A6 */	mflr r0
/* 8034D068 00348CC8  90 01 00 44 */	stw r0, 0x44(r1)
/* 8034D06C 00348CCC  39 61 00 40 */	addi r11, r1, 0x40
/* 8034D070 00348CD0  4B E7 A0 B5 */	bl _savegpr_26
/* 8034D074 00348CD4  7C 7A 1B 78 */	mr r26, r3
/* 8034D078 00348CD8  7C 9F 23 78 */	mr r31, r4
/* 8034D07C 00348CDC  7C BB 2B 78 */	mr r27, r5
/* 8034D080 00348CE0  7C DC 33 78 */	mr r28, r6
/* 8034D084 00348CE4  7C FD 3B 78 */	mr r29, r7
/* 8034D088 00348CE8  7D 1E 43 78 */	mr r30, r8
/* 8034D08C 00348CEC  4B FE BF 45 */	bl SocketStartUp
/* 8034D090 00348CF0  2C 1C 00 00 */	cmpwi r28, 0
/* 8034D094 00348CF4  40 82 00 08 */	bne lbl_8034D09C
/* 8034D098 00348CF8  3F 80 00 01 */	lis r28, 1
lbl_8034D09C:
/* 8034D09C 00348CFC  2C 1B 00 00 */	cmpwi r27, 0
/* 8034D0A0 00348D00  40 82 00 08 */	bne lbl_8034D0A8
/* 8034D0A4 00348D04  3F 60 00 01 */	lis r27, 1
lbl_8034D0A8:
/* 8034D0A8 00348D08  7F E3 FB 78 */	mr r3, r31
/* 8034D0AC 00348D0C  38 81 00 10 */	addi r4, r1, 0x10
/* 8034D0B0 00348D10  38 A1 00 08 */	addi r5, r1, 8
/* 8034D0B4 00348D14  48 00 0B 7D */	bl gt2StringToAddress
/* 8034D0B8 00348D18  2C 03 00 00 */	cmpwi r3, 0
/* 8034D0BC 00348D1C  40 82 00 0C */	bne lbl_8034D0C8
/* 8034D0C0 00348D20  38 60 00 04 */	li r3, 4
/* 8034D0C4 00348D24  48 00 01 C0 */	b lbl_8034D284
lbl_8034D0C8:
/* 8034D0C8 00348D28  38 60 00 4C */	li r3, 0x4c
/* 8034D0CC 00348D2C  4B FE C2 49 */	bl gsimalloc
/* 8034D0D0 00348D30  2C 03 00 00 */	cmpwi r3, 0
/* 8034D0D4 00348D34  7C 7F 1B 78 */	mr r31, r3
/* 8034D0D8 00348D38  40 82 00 0C */	bne lbl_8034D0E4
/* 8034D0DC 00348D3C  38 60 00 01 */	li r3, 1
/* 8034D0E0 00348D40  48 00 01 A4 */	b lbl_8034D284
lbl_8034D0E4:
/* 8034D0E4 00348D44  38 80 00 00 */	li r4, 0
/* 8034D0E8 00348D48  38 A0 00 4C */	li r5, 0x4c
/* 8034D0EC 00348D4C  4B CB 70 19 */	bl memset
/* 8034D0F0 00348D50  38 00 FF FF */	li r0, -1
/* 8034D0F4 00348D54  3C C0 80 35 */	lis r6, gti2ConnectionHash@ha
/* 8034D0F8 00348D58  90 1F 00 00 */	stw r0, 0(r31)
/* 8034D0FC 00348D5C  3C E0 80 35 */	lis r7, gti2ConnectionCompare@ha
/* 8034D100 00348D60  38 C6 CF B8 */	addi r6, r6, gti2ConnectionHash@l
/* 8034D104 00348D64  38 60 00 04 */	li r3, 4
/* 8034D108 00348D68  93 9F 00 3C */	stw r28, 0x3c(r31)
/* 8034D10C 00348D6C  38 E7 CF D8 */	addi r7, r7, gti2ConnectionCompare@l
/* 8034D110 00348D70  38 80 00 20 */	li r4, 0x20
/* 8034D114 00348D74  38 A0 00 02 */	li r5, 2
/* 8034D118 00348D78  93 7F 00 38 */	stw r27, 0x38(r31)
/* 8034D11C 00348D7C  39 00 00 00 */	li r8, 0
/* 8034D120 00348D80  93 BF 00 24 */	stw r29, 0x24(r31)
/* 8034D124 00348D84  4B FE 97 05 */	bl TableNew2
/* 8034D128 00348D88  2C 03 00 00 */	cmpwi r3, 0
/* 8034D12C 00348D8C  90 7F 00 0C */	stw r3, 0xc(r31)
/* 8034D130 00348D90  40 82 00 14 */	bne lbl_8034D144
/* 8034D134 00348D94  7F E3 FB 78 */	mr r3, r31
/* 8034D138 00348D98  4B FE C2 01 */	bl gsifree
/* 8034D13C 00348D9C  38 60 00 01 */	li r3, 1
/* 8034D140 00348DA0  48 00 01 44 */	b lbl_8034D284
lbl_8034D144:
/* 8034D144 00348DA4  3C A0 80 35 */	lis r5, gti2ConnectionFree@ha
/* 8034D148 00348DA8  38 60 00 04 */	li r3, 4
/* 8034D14C 00348DAC  38 A5 D0 0C */	addi r5, r5, gti2ConnectionFree@l
/* 8034D150 00348DB0  38 80 00 04 */	li r4, 4
/* 8034D154 00348DB4  4B FE 8C 65 */	bl ArrayNew
/* 8034D158 00348DB8  2C 03 00 00 */	cmpwi r3, 0
/* 8034D15C 00348DBC  90 7F 00 10 */	stw r3, 0x10(r31)
/* 8034D160 00348DC0  40 82 00 1C */	bne lbl_8034D17C
/* 8034D164 00348DC4  80 7F 00 0C */	lwz r3, 0xc(r31)
/* 8034D168 00348DC8  4B FE 97 65 */	bl TableFree
/* 8034D16C 00348DCC  7F E3 FB 78 */	mr r3, r31
/* 8034D170 00348DD0  4B FE C1 C9 */	bl gsifree
/* 8034D174 00348DD4  38 60 00 01 */	li r3, 1
/* 8034D178 00348DD8  48 00 01 0C */	b lbl_8034D284
lbl_8034D17C:
/* 8034D17C 00348DDC  38 60 00 02 */	li r3, 2
/* 8034D180 00348DE0  38 80 00 02 */	li r4, 2
/* 8034D184 00348DE4  38 A0 00 11 */	li r5, 0x11
/* 8034D188 00348DE8  4B FE AA 3D */	bl socket
/* 8034D18C 00348DEC  90 7F 00 00 */	stw r3, 0(r31)
/* 8034D190 00348DF0  2C 1E 00 03 */	cmpwi r30, 3
/* 8034D194 00348DF4  93 DF 00 40 */	stw r30, 0x40(r31)
/* 8034D198 00348DF8  40 82 00 10 */	bne lbl_8034D1A8
/* 8034D19C 00348DFC  38 00 00 00 */	li r0, 0
/* 8034D1A0 00348E00  90 1F 00 44 */	stw r0, 0x44(r31)
/* 8034D1A4 00348E04  48 00 00 08 */	b lbl_8034D1AC
lbl_8034D1A8:
/* 8034D1A8 00348E08  93 DF 00 44 */	stw r30, 0x44(r31)
lbl_8034D1AC:
/* 8034D1AC 00348E0C  80 1F 00 00 */	lwz r0, 0(r31)
/* 8034D1B0 00348E10  2C 00 FF FF */	cmpwi r0, -1
/* 8034D1B4 00348E14  40 82 00 24 */	bne lbl_8034D1D8
/* 8034D1B8 00348E18  80 7F 00 0C */	lwz r3, 0xc(r31)
/* 8034D1BC 00348E1C  4B FE 97 11 */	bl TableFree
/* 8034D1C0 00348E20  80 7F 00 10 */	lwz r3, 0x10(r31)
/* 8034D1C4 00348E24  4B FE 8C 91 */	bl ArrayFree
/* 8034D1C8 00348E28  7F E3 FB 78 */	mr r3, r31
/* 8034D1CC 00348E2C  4B FE C1 6D */	bl gsifree
/* 8034D1D0 00348E30  38 60 00 03 */	li r3, 3
/* 8034D1D4 00348E34  48 00 00 B0 */	b lbl_8034D284
lbl_8034D1D8:
/* 8034D1D8 00348E38  38 61 00 18 */	addi r3, r1, 0x18
/* 8034D1DC 00348E3C  38 80 00 00 */	li r4, 0
/* 8034D1E0 00348E40  38 A0 00 08 */	li r5, 8
/* 8034D1E4 00348E44  4B CB 6F 21 */	bl memset
/* 8034D1E8 00348E48  80 01 00 10 */	lwz r0, 0x10(r1)
/* 8034D1EC 00348E4C  38 60 00 02 */	li r3, 2
/* 8034D1F0 00348E50  98 61 00 19 */	stb r3, 0x19(r1)
/* 8034D1F4 00348E54  A0 61 00 08 */	lhz r3, 8(r1)
/* 8034D1F8 00348E58  90 01 00 1C */	stw r0, 0x1c(r1)
/* 8034D1FC 00348E5C  4B FA 9B 81 */	bl SOHtoNs
/* 8034D200 00348E60  2C 1E 00 03 */	cmpwi r30, 3
/* 8034D204 00348E64  B0 61 00 1A */	sth r3, 0x1a(r1)
/* 8034D208 00348E68  41 82 00 18 */	beq lbl_8034D220
/* 8034D20C 00348E6C  80 7F 00 00 */	lwz r3, 0(r31)
/* 8034D210 00348E70  38 81 00 18 */	addi r4, r1, 0x18
/* 8034D214 00348E74  38 A0 00 08 */	li r5, 8
/* 8034D218 00348E78  4B FE AA 4D */	bl bind
/* 8034D21C 00348E7C  7C 7E 1B 78 */	mr r30, r3
lbl_8034D220:
/* 8034D220 00348E80  2C 1E FF FF */	cmpwi r30, -1
/* 8034D224 00348E84  40 82 00 2C */	bne lbl_8034D250
/* 8034D228 00348E88  80 7F 00 00 */	lwz r3, 0(r31)
/* 8034D22C 00348E8C  4B FE A9 D1 */	bl closesocket
/* 8034D230 00348E90  80 7F 00 0C */	lwz r3, 0xc(r31)
/* 8034D234 00348E94  4B FE 96 99 */	bl TableFree
/* 8034D238 00348E98  80 7F 00 10 */	lwz r3, 0x10(r31)
/* 8034D23C 00348E9C  4B FE 8C 19 */	bl ArrayFree
/* 8034D240 00348EA0  7F E3 FB 78 */	mr r3, r31
/* 8034D244 00348EA4  4B FE C0 F5 */	bl gsifree
/* 8034D248 00348EA8  38 60 00 03 */	li r3, 3
/* 8034D24C 00348EAC  48 00 00 38 */	b lbl_8034D284
lbl_8034D250:
/* 8034D250 00348EB0  38 00 00 08 */	li r0, 8
/* 8034D254 00348EB4  38 81 00 18 */	addi r4, r1, 0x18
/* 8034D258 00348EB8  90 01 00 0C */	stw r0, 0xc(r1)
/* 8034D25C 00348EBC  38 A1 00 0C */	addi r5, r1, 0xc
/* 8034D260 00348EC0  80 7F 00 00 */	lwz r3, 0(r31)
/* 8034D264 00348EC4  4B FE AC B1 */	bl getsockname
/* 8034D268 00348EC8  80 01 00 1C */	lwz r0, 0x1c(r1)
/* 8034D26C 00348ECC  90 1F 00 04 */	stw r0, 4(r31)
/* 8034D270 00348ED0  A0 61 00 1A */	lhz r3, 0x1a(r1)
/* 8034D274 00348ED4  4B FA 9A FD */	bl SONtoHs
/* 8034D278 00348ED8  B0 7F 00 08 */	sth r3, 8(r31)
/* 8034D27C 00348EDC  38 60 00 00 */	li r3, 0
/* 8034D280 00348EE0  93 FA 00 00 */	stw r31, 0(r26)
lbl_8034D284:
/* 8034D284 00348EE4  39 61 00 40 */	addi r11, r1, 0x40
/* 8034D288 00348EE8  4B E7 9E E9 */	bl _restgpr_26
/* 8034D28C 00348EEC  80 01 00 44 */	lwz r0, 0x44(r1)
/* 8034D290 00348EF0  7C 08 03 A6 */	mtlr r0
/* 8034D294 00348EF4  38 21 00 40 */	addi r1, r1, 0x40
/* 8034D298 00348EF8  4E 80 00 20 */	blr

.global gti2CloseSocket
gti2CloseSocket:
/* 8034D29C 00348EFC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8034D2A0 00348F00  7C 08 02 A6 */	mflr r0
/* 8034D2A4 00348F04  90 01 00 14 */	stw r0, 0x14(r1)
/* 8034D2A8 00348F08  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8034D2AC 00348F0C  7C 7F 1B 78 */	mr r31, r3
/* 8034D2B0 00348F10  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 8034D2B4 00348F14  2C 00 00 00 */	cmpwi r0, 0
/* 8034D2B8 00348F18  41 82 00 10 */	beq lbl_8034D2C8
/* 8034D2BC 00348F1C  38 00 00 01 */	li r0, 1
/* 8034D2C0 00348F20  90 03 00 14 */	stw r0, 0x14(r3)
/* 8034D2C4 00348F24  48 00 00 28 */	b lbl_8034D2EC
lbl_8034D2C8:
/* 8034D2C8 00348F28  80 63 00 00 */	lwz r3, 0(r3)
/* 8034D2CC 00348F2C  4B FE A9 31 */	bl closesocket
/* 8034D2D0 00348F30  80 7F 00 0C */	lwz r3, 0xc(r31)
/* 8034D2D4 00348F34  4B FE 95 F9 */	bl TableFree
/* 8034D2D8 00348F38  80 7F 00 10 */	lwz r3, 0x10(r31)
/* 8034D2DC 00348F3C  4B FE 8B 79 */	bl ArrayFree
/* 8034D2E0 00348F40  7F E3 FB 78 */	mr r3, r31
/* 8034D2E4 00348F44  4B FE C0 55 */	bl gsifree
/* 8034D2E8 00348F48  4B FE BC ED */	bl SocketShutDown
lbl_8034D2EC:
/* 8034D2EC 00348F4C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8034D2F0 00348F50  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8034D2F4 00348F54  7C 08 03 A6 */	mtlr r0
/* 8034D2F8 00348F58  38 21 00 10 */	addi r1, r1, 0x10
/* 8034D2FC 00348F5C  4E 80 00 20 */	blr

.global gti2Listen
gti2Listen:
/* 8034D300 00348F60  90 83 00 20 */	stw r4, 0x20(r3)
/* 8034D304 00348F64  4E 80 00 20 */	blr

.global gti2NewSocketConnection
gti2NewSocketConnection:
/* 8034D308 00348F68  94 21 FE 90 */	stwu r1, -0x170(r1)
/* 8034D30C 00348F6C  7C 08 02 A6 */	mflr r0
/* 8034D310 00348F70  90 01 01 74 */	stw r0, 0x174(r1)
/* 8034D314 00348F74  39 61 01 70 */	addi r11, r1, 0x170
/* 8034D318 00348F78  4B E7 9E 11 */	bl _savegpr_27
/* 8034D31C 00348F7C  38 01 00 B8 */	addi r0, r1, 0xb8
/* 8034D320 00348F80  3B E0 00 00 */	li r31, 0
/* 8034D324 00348F84  93 E1 00 10 */	stw r31, 0x10(r1)
/* 8034D328 00348F88  7C 9C 23 78 */	mr r28, r4
/* 8034D32C 00348F8C  7C 7B 1B 78 */	mr r27, r3
/* 8034D330 00348F90  7C BD 2B 78 */	mr r29, r5
/* 8034D334 00348F94  90 A1 00 B8 */	stw r5, 0xb8(r1)
/* 8034D338 00348F98  7C DE 33 78 */	mr r30, r6
/* 8034D33C 00348F9C  38 81 00 0C */	addi r4, r1, 0xc
/* 8034D340 00348FA0  B0 C1 00 BC */	sth r6, 0xbc(r1)
/* 8034D344 00348FA4  90 01 00 0C */	stw r0, 0xc(r1)
/* 8034D348 00348FA8  80 63 00 0C */	lwz r3, 0xc(r3)
/* 8034D34C 00348FAC  4B FE 97 D1 */	bl TableLookup
/* 8034D350 00348FB0  2C 03 00 00 */	cmpwi r3, 0
/* 8034D354 00348FB4  41 82 00 08 */	beq lbl_8034D35C
/* 8034D358 00348FB8  83 E3 00 00 */	lwz r31, 0(r3)
lbl_8034D35C:
/* 8034D35C 00348FBC  2C 1F 00 00 */	cmpwi r31, 0
/* 8034D360 00348FC0  41 82 00 0C */	beq lbl_8034D36C
/* 8034D364 00348FC4  38 60 00 05 */	li r3, 5
/* 8034D368 00348FC8  48 00 01 FC */	b lbl_8034D564
lbl_8034D36C:
/* 8034D36C 00348FCC  38 60 00 A0 */	li r3, 0xa0
/* 8034D370 00348FD0  4B FE BF A5 */	bl gsimalloc
/* 8034D374 00348FD4  2C 03 00 00 */	cmpwi r3, 0
/* 8034D378 00348FD8  90 61 00 10 */	stw r3, 0x10(r1)
/* 8034D37C 00348FDC  41 82 01 6C */	beq lbl_8034D4E8
/* 8034D380 00348FE0  38 80 00 00 */	li r4, 0
/* 8034D384 00348FE4  38 A0 00 A0 */	li r5, 0xa0
/* 8034D388 00348FE8  4B CB 6D 7D */	bl memset
/* 8034D38C 00348FEC  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D390 00348FF0  93 A3 00 00 */	stw r29, 0(r3)
/* 8034D394 00348FF4  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D398 00348FF8  B3 C3 00 04 */	sth r30, 4(r3)
/* 8034D39C 00348FFC  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D3A0 00349000  93 63 00 08 */	stw r27, 8(r3)
/* 8034D3A4 00349004  4B FE BC 35 */	bl current_time
/* 8034D3A8 00349008  80 81 00 10 */	lwz r4, 0x10(r1)
/* 8034D3AC 0034900C  3B E0 00 00 */	li r31, 0
/* 8034D3B0 00349010  90 64 00 1C */	stw r3, 0x1c(r4)
/* 8034D3B4 00349014  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D3B8 00349018  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 8034D3BC 0034901C  90 03 00 88 */	stw r0, 0x88(r3)
/* 8034D3C0 00349020  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D3C4 00349024  B3 E3 00 64 */	sth r31, 0x64(r3)
/* 8034D3C8 00349028  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D3CC 0034902C  B3 E3 00 66 */	sth r31, 0x66(r3)
/* 8034D3D0 00349030  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D3D4 00349034  80 9B 00 3C */	lwz r4, 0x3c(r27)
/* 8034D3D8 00349038  38 63 00 44 */	addi r3, r3, 0x44
/* 8034D3DC 0034903C  4B FF B5 1D */	bl gti2AllocateBuffer
/* 8034D3E0 00349040  2C 03 00 00 */	cmpwi r3, 0
/* 8034D3E4 00349044  41 82 01 04 */	beq lbl_8034D4E8
/* 8034D3E8 00349048  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D3EC 0034904C  80 9B 00 38 */	lwz r4, 0x38(r27)
/* 8034D3F0 00349050  38 63 00 50 */	addi r3, r3, 0x50
/* 8034D3F4 00349054  4B FF B5 05 */	bl gti2AllocateBuffer
/* 8034D3F8 00349058  2C 03 00 00 */	cmpwi r3, 0
/* 8034D3FC 0034905C  41 82 00 EC */	beq lbl_8034D4E8
/* 8034D400 00349060  38 60 00 10 */	li r3, 0x10
/* 8034D404 00349064  38 80 00 40 */	li r4, 0x40
/* 8034D408 00349068  38 A0 00 00 */	li r5, 0
/* 8034D40C 0034906C  4B FE 89 AD */	bl ArrayNew
/* 8034D410 00349070  80 81 00 10 */	lwz r4, 0x10(r1)
/* 8034D414 00349074  90 64 00 5C */	stw r3, 0x5c(r4)
/* 8034D418 00349078  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D41C 0034907C  80 03 00 5C */	lwz r0, 0x5c(r3)
/* 8034D420 00349080  2C 00 00 00 */	cmpwi r0, 0
/* 8034D424 00349084  41 82 00 C4 */	beq lbl_8034D4E8
/* 8034D428 00349088  38 60 00 10 */	li r3, 0x10
/* 8034D42C 0034908C  38 80 00 40 */	li r4, 0x40
/* 8034D430 00349090  38 A0 00 00 */	li r5, 0
/* 8034D434 00349094  4B FE 89 85 */	bl ArrayNew
/* 8034D438 00349098  80 81 00 10 */	lwz r4, 0x10(r1)
/* 8034D43C 0034909C  90 64 00 60 */	stw r3, 0x60(r4)
/* 8034D440 003490A0  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D444 003490A4  80 03 00 60 */	lwz r0, 0x60(r3)
/* 8034D448 003490A8  2C 00 00 00 */	cmpwi r0, 0
/* 8034D44C 003490AC  41 82 00 9C */	beq lbl_8034D4E8
/* 8034D450 003490B0  38 60 00 04 */	li r3, 4
/* 8034D454 003490B4  38 80 00 02 */	li r4, 2
/* 8034D458 003490B8  38 A0 00 00 */	li r5, 0
/* 8034D45C 003490BC  4B FE 89 5D */	bl ArrayNew
/* 8034D460 003490C0  80 81 00 10 */	lwz r4, 0x10(r1)
/* 8034D464 003490C4  90 64 00 98 */	stw r3, 0x98(r4)
/* 8034D468 003490C8  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D46C 003490CC  80 03 00 98 */	lwz r0, 0x98(r3)
/* 8034D470 003490D0  2C 00 00 00 */	cmpwi r0, 0
/* 8034D474 003490D4  41 82 00 74 */	beq lbl_8034D4E8
/* 8034D478 003490D8  38 60 00 04 */	li r3, 4
/* 8034D47C 003490DC  38 80 00 02 */	li r4, 2
/* 8034D480 003490E0  38 A0 00 00 */	li r5, 0
/* 8034D484 003490E4  4B FE 89 35 */	bl ArrayNew
/* 8034D488 003490E8  80 81 00 10 */	lwz r4, 0x10(r1)
/* 8034D48C 003490EC  90 64 00 9C */	stw r3, 0x9c(r4)
/* 8034D490 003490F0  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D494 003490F4  80 03 00 9C */	lwz r0, 0x9c(r3)
/* 8034D498 003490F8  2C 00 00 00 */	cmpwi r0, 0
/* 8034D49C 003490FC  41 82 00 4C */	beq lbl_8034D4E8
/* 8034D4A0 00349100  80 7B 00 0C */	lwz r3, 0xc(r27)
/* 8034D4A4 00349104  38 81 00 10 */	addi r4, r1, 0x10
/* 8034D4A8 00349108  4B FE 95 29 */	bl TableEnter
/* 8034D4AC 0034910C  38 01 00 18 */	addi r0, r1, 0x18
/* 8034D4B0 00349110  93 A1 00 18 */	stw r29, 0x18(r1)
/* 8034D4B4 00349114  38 81 00 08 */	addi r4, r1, 8
/* 8034D4B8 00349118  B3 C1 00 1C */	sth r30, 0x1c(r1)
/* 8034D4BC 0034911C  90 01 00 08 */	stw r0, 8(r1)
/* 8034D4C0 00349120  80 7B 00 0C */	lwz r3, 0xc(r27)
/* 8034D4C4 00349124  4B FE 96 59 */	bl TableLookup
/* 8034D4C8 00349128  2C 03 00 00 */	cmpwi r3, 0
/* 8034D4CC 0034912C  41 82 00 08 */	beq lbl_8034D4D4
/* 8034D4D0 00349130  83 E3 00 00 */	lwz r31, 0(r3)
lbl_8034D4D4:
/* 8034D4D4 00349134  2C 1F 00 00 */	cmpwi r31, 0
/* 8034D4D8 00349138  93 FC 00 00 */	stw r31, 0(r28)
/* 8034D4DC 0034913C  41 82 00 0C */	beq lbl_8034D4E8
/* 8034D4E0 00349140  38 60 00 00 */	li r3, 0
/* 8034D4E4 00349144  48 00 00 80 */	b lbl_8034D564
lbl_8034D4E8:
/* 8034D4E8 00349148  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D4EC 0034914C  2C 03 00 00 */	cmpwi r3, 0
/* 8034D4F0 00349150  41 82 00 70 */	beq lbl_8034D560
/* 8034D4F4 00349154  80 63 00 44 */	lwz r3, 0x44(r3)
/* 8034D4F8 00349158  4B FE BE 41 */	bl gsifree
/* 8034D4FC 0034915C  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D500 00349160  80 63 00 50 */	lwz r3, 0x50(r3)
/* 8034D504 00349164  4B FE BE 35 */	bl gsifree
/* 8034D508 00349168  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D50C 0034916C  80 63 00 5C */	lwz r3, 0x5c(r3)
/* 8034D510 00349170  2C 03 00 00 */	cmpwi r3, 0
/* 8034D514 00349174  41 82 00 08 */	beq lbl_8034D51C
/* 8034D518 00349178  4B FE 89 3D */	bl ArrayFree
lbl_8034D51C:
/* 8034D51C 0034917C  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D520 00349180  80 63 00 60 */	lwz r3, 0x60(r3)
/* 8034D524 00349184  2C 03 00 00 */	cmpwi r3, 0
/* 8034D528 00349188  41 82 00 08 */	beq lbl_8034D530
/* 8034D52C 0034918C  4B FE 89 29 */	bl ArrayFree
lbl_8034D530:
/* 8034D530 00349190  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D534 00349194  80 63 00 98 */	lwz r3, 0x98(r3)
/* 8034D538 00349198  2C 03 00 00 */	cmpwi r3, 0
/* 8034D53C 0034919C  41 82 00 08 */	beq lbl_8034D544
/* 8034D540 003491A0  4B FE 89 15 */	bl ArrayFree
lbl_8034D544:
/* 8034D544 003491A4  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D548 003491A8  80 63 00 9C */	lwz r3, 0x9c(r3)
/* 8034D54C 003491AC  2C 03 00 00 */	cmpwi r3, 0
/* 8034D550 003491B0  41 82 00 08 */	beq lbl_8034D558
/* 8034D554 003491B4  4B FE 89 01 */	bl ArrayFree
lbl_8034D558:
/* 8034D558 003491B8  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8034D55C 003491BC  4B FE BD DD */	bl gsifree
lbl_8034D560:
/* 8034D560 003491C0  38 60 00 01 */	li r3, 1
lbl_8034D564:
/* 8034D564 003491C4  39 61 01 70 */	addi r11, r1, 0x170
/* 8034D568 003491C8  4B E7 9C 0D */	bl _restgpr_27
/* 8034D56C 003491CC  80 01 01 74 */	lwz r0, 0x174(r1)
/* 8034D570 003491D0  7C 08 03 A6 */	mtlr r0
/* 8034D574 003491D4  38 21 01 70 */	addi r1, r1, 0x170
/* 8034D578 003491D8  4E 80 00 20 */	blr

.global gti2FreeSocketConnection
gti2FreeSocketConnection:
/* 8034D57C 003491DC  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8034D580 003491E0  7C 08 02 A6 */	mflr r0
/* 8034D584 003491E4  90 01 00 24 */	stw r0, 0x24(r1)
/* 8034D588 003491E8  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8034D58C 003491EC  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8034D590 003491F0  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8034D594 003491F4  90 61 00 08 */	stw r3, 8(r1)
/* 8034D598 003491F8  80 03 00 14 */	lwz r0, 0x14(r3)
/* 8034D59C 003491FC  2C 00 00 00 */	cmpwi r0, 0
/* 8034D5A0 00349200  40 82 00 8C */	bne lbl_8034D62C
/* 8034D5A4 00349204  80 03 00 24 */	lwz r0, 0x24(r3)
/* 8034D5A8 00349208  2C 00 00 00 */	cmpwi r0, 0
/* 8034D5AC 0034920C  41 82 00 08 */	beq lbl_8034D5B4
/* 8034D5B0 00349210  48 00 00 7C */	b lbl_8034D62C
lbl_8034D5B4:
/* 8034D5B4 00349214  80 03 00 0C */	lwz r0, 0xc(r3)
/* 8034D5B8 00349218  2C 00 00 07 */	cmpwi r0, 7
/* 8034D5BC 0034921C  40 82 00 60 */	bne lbl_8034D61C
/* 8034D5C0 00349220  80 63 00 08 */	lwz r3, 8(r3)
/* 8034D5C4 00349224  80 63 00 10 */	lwz r3, 0x10(r3)
/* 8034D5C8 00349228  4B FE 89 21 */	bl ArrayLength
/* 8034D5CC 0034922C  7C 7F 1B 78 */	mr r31, r3
/* 8034D5D0 00349230  3B A0 00 00 */	li r29, 0
/* 8034D5D4 00349234  48 00 00 3C */	b lbl_8034D610
lbl_8034D5D8:
/* 8034D5D8 00349238  83 C1 00 08 */	lwz r30, 8(r1)
/* 8034D5DC 0034923C  7F A4 EB 78 */	mr r4, r29
/* 8034D5E0 00349240  80 7E 00 08 */	lwz r3, 8(r30)
/* 8034D5E4 00349244  80 63 00 10 */	lwz r3, 0x10(r3)
/* 8034D5E8 00349248  4B FE 89 09 */	bl ArrayNth
/* 8034D5EC 0034924C  80 03 00 00 */	lwz r0, 0(r3)
/* 8034D5F0 00349250  7C 1E 00 40 */	cmplw r30, r0
/* 8034D5F4 00349254  40 82 00 18 */	bne lbl_8034D60C
/* 8034D5F8 00349258  80 7E 00 08 */	lwz r3, 8(r30)
/* 8034D5FC 0034925C  7F A4 EB 78 */	mr r4, r29
/* 8034D600 00349260  80 63 00 10 */	lwz r3, 0x10(r3)
/* 8034D604 00349264  4B FE 8C 6D */	bl ArrayDeleteAt
/* 8034D608 00349268  48 00 00 24 */	b lbl_8034D62C
lbl_8034D60C:
/* 8034D60C 0034926C  3B BD 00 01 */	addi r29, r29, 1
lbl_8034D610:
/* 8034D610 00349270  7C 1D F8 00 */	cmpw r29, r31
/* 8034D614 00349274  41 80 FF C4 */	blt lbl_8034D5D8
/* 8034D618 00349278  48 00 00 14 */	b lbl_8034D62C
lbl_8034D61C:
/* 8034D61C 0034927C  80 63 00 08 */	lwz r3, 8(r3)
/* 8034D620 00349280  38 81 00 08 */	addi r4, r1, 8
/* 8034D624 00349284  80 63 00 0C */	lwz r3, 0xc(r3)
/* 8034D628 00349288  4B FE 94 51 */	bl TableRemove
lbl_8034D62C:
/* 8034D62C 0034928C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8034D630 00349290  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8034D634 00349294  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8034D638 00349298  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8034D63C 0034929C  7C 08 03 A6 */	mtlr r0
/* 8034D640 003492A0  38 21 00 20 */	addi r1, r1, 0x20
/* 8034D644 003492A4  4E 80 00 20 */	blr

.global gti2SocketSend
gti2SocketSend:
/* 8034D648 003492A8  94 21 FF 30 */	stwu r1, -0xd0(r1)
/* 8034D64C 003492AC  7C 08 02 A6 */	mflr r0
/* 8034D650 003492B0  90 01 00 D4 */	stw r0, 0xd4(r1)
/* 8034D654 003492B4  93 E1 00 CC */	stw r31, 0xcc(r1)
/* 8034D658 003492B8  7C BF 2B 78 */	mr r31, r5
/* 8034D65C 003492BC  93 C1 00 C8 */	stw r30, 0xc8(r1)
/* 8034D660 003492C0  7C 9E 23 78 */	mr r30, r4
/* 8034D664 003492C4  38 81 00 0C */	addi r4, r1, 0xc
/* 8034D668 003492C8  93 A1 00 C4 */	stw r29, 0xc4(r1)
/* 8034D66C 003492CC  7C 7D 1B 78 */	mr r29, r3
/* 8034D670 003492D0  38 61 00 08 */	addi r3, r1, 8
/* 8034D674 003492D4  90 C1 00 08 */	stw r6, 8(r1)
/* 8034D678 003492D8  90 E1 00 0C */	stw r7, 0xc(r1)
/* 8034D67C 003492DC  48 00 07 59 */	bl gti2MessageCheck
/* 8034D680 003492E0  80 1D 00 40 */	lwz r0, 0x40(r29)
/* 8034D684 003492E4  2C 00 00 03 */	cmpwi r0, 3
/* 8034D688 003492E8  41 82 00 1C */	beq lbl_8034D6A4
/* 8034D68C 003492EC  80 7D 00 00 */	lwz r3, 0(r29)
/* 8034D690 003492F0  4B FE B2 05 */	bl CanSendOnSocket
/* 8034D694 003492F4  2C 03 00 00 */	cmpwi r3, 0
/* 8034D698 003492F8  40 82 00 0C */	bne lbl_8034D6A4
/* 8034D69C 003492FC  38 60 00 01 */	li r3, 1
/* 8034D6A0 00349300  48 00 01 A8 */	b lbl_8034D848
lbl_8034D6A4:
/* 8034D6A4 00349304  38 61 00 18 */	addi r3, r1, 0x18
/* 8034D6A8 00349308  38 80 00 00 */	li r4, 0
/* 8034D6AC 0034930C  38 A0 00 08 */	li r5, 8
/* 8034D6B0 00349310  4B CB 6A 55 */	bl memset
/* 8034D6B4 00349314  38 00 00 02 */	li r0, 2
/* 8034D6B8 00349318  93 C1 00 1C */	stw r30, 0x1c(r1)
/* 8034D6BC 0034931C  7F E3 FB 78 */	mr r3, r31
/* 8034D6C0 00349320  98 01 00 19 */	stb r0, 0x19(r1)
/* 8034D6C4 00349324  4B FA 96 B9 */	bl SOHtoNs
/* 8034D6C8 00349328  B0 61 00 1A */	sth r3, 0x1a(r1)
/* 8034D6CC 0034932C  38 E1 00 18 */	addi r7, r1, 0x18
/* 8034D6D0 00349330  80 81 00 08 */	lwz r4, 8(r1)
/* 8034D6D4 00349334  38 C0 00 00 */	li r6, 0
/* 8034D6D8 00349338  80 7D 00 00 */	lwz r3, 0(r29)
/* 8034D6DC 0034933C  39 00 00 08 */	li r8, 8
/* 8034D6E0 00349340  80 A1 00 0C */	lwz r5, 0xc(r1)
/* 8034D6E4 00349344  4B FE A7 B1 */	bl sendto
/* 8034D6E8 00349348  2C 03 FF FF */	cmpwi r3, -1
/* 8034D6EC 0034934C  40 82 00 EC */	bne lbl_8034D7D8
/* 8034D6F0 00349350  80 7D 00 00 */	lwz r3, 0(r29)
/* 8034D6F4 00349354  4B FE A8 B5 */	bl GOAGetLastError
/* 8034D6F8 00349358  2C 03 FF F1 */	cmpwi r3, -15
/* 8034D6FC 0034935C  40 82 00 24 */	bne lbl_8034D720
/* 8034D700 00349360  7F A3 EB 78 */	mr r3, r29
/* 8034D704 00349364  7F C4 F3 78 */	mr r4, r30
/* 8034D708 00349368  7F E5 FB 78 */	mr r5, r31
/* 8034D70C 0034936C  4B FF E5 41 */	bl gti2HandleConnectionReset
/* 8034D710 00349370  2C 03 00 00 */	cmpwi r3, 0
/* 8034D714 00349374  40 82 01 30 */	bne lbl_8034D844
/* 8034D718 00349378  38 60 00 00 */	li r3, 0
/* 8034D71C 0034937C  48 00 01 2C */	b lbl_8034D848
lbl_8034D720:
/* 8034D720 00349380  2C 03 FF E9 */	cmpwi r3, -23
/* 8034D724 00349384  40 82 00 28 */	bne lbl_8034D74C
/* 8034D728 00349388  7F A3 EB 78 */	mr r3, r29
/* 8034D72C 0034938C  7F C4 F3 78 */	mr r4, r30
/* 8034D730 00349390  7F E5 FB 78 */	mr r5, r31
/* 8034D734 00349394  38 C0 00 01 */	li r6, 1
/* 8034D738 00349398  4B FF E7 2D */	bl gti2HandleHostUnreachable
/* 8034D73C 0034939C  2C 03 00 00 */	cmpwi r3, 0
/* 8034D740 003493A0  40 82 01 04 */	bne lbl_8034D844
/* 8034D744 003493A4  38 60 00 00 */	li r3, 0
/* 8034D748 003493A8  48 00 01 00 */	b lbl_8034D848
lbl_8034D74C:
/* 8034D74C 003493AC  2C 03 FF D6 */	cmpwi r3, -42
/* 8034D750 003493B0  41 82 00 0C */	beq lbl_8034D75C
/* 8034D754 003493B4  2C 03 FF FA */	cmpwi r3, -6
/* 8034D758 003493B8  40 82 00 0C */	bne lbl_8034D764
lbl_8034D75C:
/* 8034D75C 003493BC  38 60 00 01 */	li r3, 1
/* 8034D760 003493C0  48 00 00 E8 */	b lbl_8034D848
lbl_8034D764:
/* 8034D764 003493C4  2C 03 FF DD */	cmpwi r3, -35
/* 8034D768 003493C8  41 82 00 DC */	beq lbl_8034D844
/* 8034D76C 003493CC  80 1D 00 18 */	lwz r0, 0x18(r29)
/* 8034D770 003493D0  2C 00 00 00 */	cmpwi r0, 0
/* 8034D774 003493D4  40 82 00 5C */	bne lbl_8034D7D0
/* 8034D778 003493D8  3B E0 00 01 */	li r31, 1
/* 8034D77C 003493DC  7F A3 EB 78 */	mr r3, r29
/* 8034D780 003493E0  93 FD 00 18 */	stw r31, 0x18(r29)
/* 8034D784 003493E4  4B FF C5 ED */	bl gt2CloseAllConnectionsHard
/* 8034D788 003493E8  7F A3 EB 78 */	mr r3, r29
/* 8034D78C 003493EC  4B FF B3 11 */	bl gti2SocketErrorCallback
/* 8034D790 003493F0  2C 03 00 00 */	cmpwi r3, 0
/* 8034D794 003493F4  41 82 00 3C */	beq lbl_8034D7D0
/* 8034D798 003493F8  80 1D 00 1C */	lwz r0, 0x1c(r29)
/* 8034D79C 003493FC  2C 00 00 00 */	cmpwi r0, 0
/* 8034D7A0 00349400  41 82 00 0C */	beq lbl_8034D7AC
/* 8034D7A4 00349404  93 FD 00 14 */	stw r31, 0x14(r29)
/* 8034D7A8 00349408  48 00 00 28 */	b lbl_8034D7D0
lbl_8034D7AC:
/* 8034D7AC 0034940C  80 7D 00 00 */	lwz r3, 0(r29)
/* 8034D7B0 00349410  4B FE A4 4D */	bl closesocket
/* 8034D7B4 00349414  80 7D 00 0C */	lwz r3, 0xc(r29)
/* 8034D7B8 00349418  4B FE 91 15 */	bl TableFree
/* 8034D7BC 0034941C  80 7D 00 10 */	lwz r3, 0x10(r29)
/* 8034D7C0 00349420  4B FE 86 95 */	bl ArrayFree
/* 8034D7C4 00349424  7F A3 EB 78 */	mr r3, r29
/* 8034D7C8 00349428  4B FE BB 71 */	bl gsifree
/* 8034D7CC 0034942C  4B FE B8 09 */	bl SocketShutDown
lbl_8034D7D0:
/* 8034D7D0 00349430  38 60 00 00 */	li r3, 0
/* 8034D7D4 00349434  48 00 00 74 */	b lbl_8034D848
lbl_8034D7D8:
/* 8034D7D8 00349438  80 1D 00 28 */	lwz r0, 0x28(r29)
/* 8034D7DC 0034943C  2C 00 00 00 */	cmpwi r0, 0
/* 8034D7E0 00349440  41 82 00 64 */	beq lbl_8034D844
/* 8034D7E4 00349444  38 01 00 20 */	addi r0, r1, 0x20
/* 8034D7E8 00349448  93 C1 00 20 */	stw r30, 0x20(r1)
/* 8034D7EC 0034944C  38 81 00 10 */	addi r4, r1, 0x10
/* 8034D7F0 00349450  B3 E1 00 24 */	sth r31, 0x24(r1)
/* 8034D7F4 00349454  90 01 00 10 */	stw r0, 0x10(r1)
/* 8034D7F8 00349458  80 7D 00 0C */	lwz r3, 0xc(r29)
/* 8034D7FC 0034945C  4B FE 93 21 */	bl TableLookup
/* 8034D800 00349460  7C 64 1B 79 */	or. r4, r3, r3
/* 8034D804 00349464  7F A3 EB 78 */	mr r3, r29
/* 8034D808 00349468  41 82 00 0C */	beq lbl_8034D814
/* 8034D80C 0034946C  80 84 00 00 */	lwz r4, 0(r4)
/* 8034D810 00349470  48 00 00 08 */	b lbl_8034D818
lbl_8034D814:
/* 8034D814 00349474  38 80 00 00 */	li r4, 0
lbl_8034D818:
/* 8034D818 00349478  81 01 00 08 */	lwz r8, 8(r1)
/* 8034D81C 0034947C  7F C5 F3 78 */	mr r5, r30
/* 8034D820 00349480  81 21 00 0C */	lwz r9, 0xc(r1)
/* 8034D824 00349484  7F E6 FB 78 */	mr r6, r31
/* 8034D828 00349488  38 E0 00 00 */	li r7, 0
/* 8034D82C 0034948C  39 40 00 01 */	li r10, 1
/* 8034D830 00349490  4B FF B9 25 */	bl gti2DumpCallback
/* 8034D834 00349494  2C 03 00 00 */	cmpwi r3, 0
/* 8034D838 00349498  40 82 00 0C */	bne lbl_8034D844
/* 8034D83C 0034949C  38 60 00 00 */	li r3, 0
/* 8034D840 003494A0  48 00 00 08 */	b lbl_8034D848
lbl_8034D844:
/* 8034D844 003494A4  38 60 00 01 */	li r3, 1
lbl_8034D848:
/* 8034D848 003494A8  80 01 00 D4 */	lwz r0, 0xd4(r1)
/* 8034D84C 003494AC  83 E1 00 CC */	lwz r31, 0xcc(r1)
/* 8034D850 003494B0  83 C1 00 C8 */	lwz r30, 0xc8(r1)
/* 8034D854 003494B4  83 A1 00 C4 */	lwz r29, 0xc4(r1)
/* 8034D858 003494B8  7C 08 03 A6 */	mtlr r0
/* 8034D85C 003494BC  38 21 00 D0 */	addi r1, r1, 0xd0
/* 8034D860 003494C0  4E 80 00 20 */	blr

.global gti2SocketConnectionsThinkMap
gti2SocketConnectionsThinkMap:
/* 8034D864 003494C4  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8034D868 003494C8  7C 08 02 A6 */	mflr r0
/* 8034D86C 003494CC  90 01 00 24 */	stw r0, 0x24(r1)
/* 8034D870 003494D0  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8034D874 003494D4  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8034D878 003494D8  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8034D87C 003494DC  83 A3 00 00 */	lwz r29, 0(r3)
/* 8034D880 003494E0  80 84 00 00 */	lwz r4, 0(r4)
/* 8034D884 003494E4  80 1D 00 0C */	lwz r0, 0xc(r29)
/* 8034D888 003494E8  2C 00 00 07 */	cmpwi r0, 7
/* 8034D88C 003494EC  41 82 00 1C */	beq lbl_8034D8A8
/* 8034D890 003494F0  7F A3 EB 78 */	mr r3, r29
/* 8034D894 003494F4  4B FF BE 69 */	bl gti2ConnectionThink
/* 8034D898 003494F8  2C 03 00 00 */	cmpwi r3, 0
/* 8034D89C 003494FC  40 82 00 0C */	bne lbl_8034D8A8
/* 8034D8A0 00349500  38 60 00 00 */	li r3, 0
/* 8034D8A4 00349504  48 00 00 C0 */	b lbl_8034D964
lbl_8034D8A8:
/* 8034D8A8 00349508  80 1D 00 0C */	lwz r0, 0xc(r29)
/* 8034D8AC 0034950C  2C 00 00 07 */	cmpwi r0, 7
/* 8034D8B0 00349510  40 82 00 B0 */	bne lbl_8034D960
/* 8034D8B4 00349514  80 1D 00 14 */	lwz r0, 0x14(r29)
/* 8034D8B8 00349518  2C 00 00 00 */	cmpwi r0, 0
/* 8034D8BC 0034951C  40 82 00 A4 */	bne lbl_8034D960
/* 8034D8C0 00349520  80 1D 00 24 */	lwz r0, 0x24(r29)
/* 8034D8C4 00349524  2C 00 00 00 */	cmpwi r0, 0
/* 8034D8C8 00349528  40 82 00 98 */	bne lbl_8034D960
/* 8034D8CC 0034952C  93 A1 00 08 */	stw r29, 8(r1)
/* 8034D8D0 00349530  80 1D 00 14 */	lwz r0, 0x14(r29)
/* 8034D8D4 00349534  2C 00 00 00 */	cmpwi r0, 0
/* 8034D8D8 00349538  40 82 00 88 */	bne lbl_8034D960
/* 8034D8DC 0034953C  80 1D 00 24 */	lwz r0, 0x24(r29)
/* 8034D8E0 00349540  2C 00 00 00 */	cmpwi r0, 0
/* 8034D8E4 00349544  40 82 00 7C */	bne lbl_8034D960
/* 8034D8E8 00349548  80 1D 00 0C */	lwz r0, 0xc(r29)
/* 8034D8EC 0034954C  2C 00 00 07 */	cmpwi r0, 7
/* 8034D8F0 00349550  40 82 00 60 */	bne lbl_8034D950
/* 8034D8F4 00349554  80 7D 00 08 */	lwz r3, 8(r29)
/* 8034D8F8 00349558  80 63 00 10 */	lwz r3, 0x10(r3)
/* 8034D8FC 0034955C  4B FE 85 ED */	bl ArrayLength
/* 8034D900 00349560  7C 7F 1B 78 */	mr r31, r3
/* 8034D904 00349564  3B C0 00 00 */	li r30, 0
/* 8034D908 00349568  48 00 00 3C */	b lbl_8034D944
lbl_8034D90C:
/* 8034D90C 0034956C  83 A1 00 08 */	lwz r29, 8(r1)
/* 8034D910 00349570  7F C4 F3 78 */	mr r4, r30
/* 8034D914 00349574  80 7D 00 08 */	lwz r3, 8(r29)
/* 8034D918 00349578  80 63 00 10 */	lwz r3, 0x10(r3)
/* 8034D91C 0034957C  4B FE 85 D5 */	bl ArrayNth
/* 8034D920 00349580  80 03 00 00 */	lwz r0, 0(r3)
/* 8034D924 00349584  7C 1D 00 40 */	cmplw r29, r0
/* 8034D928 00349588  40 82 00 18 */	bne lbl_8034D940
/* 8034D92C 0034958C  80 7D 00 08 */	lwz r3, 8(r29)
/* 8034D930 00349590  7F C4 F3 78 */	mr r4, r30
/* 8034D934 00349594  80 63 00 10 */	lwz r3, 0x10(r3)
/* 8034D938 00349598  4B FE 89 39 */	bl ArrayDeleteAt
/* 8034D93C 0034959C  48 00 00 24 */	b lbl_8034D960
lbl_8034D940:
/* 8034D940 003495A0  3B DE 00 01 */	addi r30, r30, 1
lbl_8034D944:
/* 8034D944 003495A4  7C 1E F8 00 */	cmpw r30, r31
/* 8034D948 003495A8  41 80 FF C4 */	blt lbl_8034D90C
/* 8034D94C 003495AC  48 00 00 14 */	b lbl_8034D960
lbl_8034D950:
/* 8034D950 003495B0  80 7D 00 08 */	lwz r3, 8(r29)
/* 8034D954 003495B4  38 81 00 08 */	addi r4, r1, 8
/* 8034D958 003495B8  80 63 00 0C */	lwz r3, 0xc(r3)
/* 8034D95C 003495BC  4B FE 91 1D */	bl TableRemove
lbl_8034D960:
/* 8034D960 003495C0  38 60 00 01 */	li r3, 1
lbl_8034D964:
/* 8034D964 003495C4  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8034D968 003495C8  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8034D96C 003495CC  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8034D970 003495D0  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8034D974 003495D4  7C 08 03 A6 */	mtlr r0
/* 8034D978 003495D8  38 21 00 20 */	addi r1, r1, 0x20
/* 8034D97C 003495DC  4E 80 00 20 */	blr

.global gti2SocketConnectionsThink
gti2SocketConnectionsThink:
/* 8034D980 003495E0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8034D984 003495E4  7C 08 02 A6 */	mflr r0
/* 8034D988 003495E8  90 01 00 24 */	stw r0, 0x24(r1)
/* 8034D98C 003495EC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8034D990 003495F0  7C 7F 1B 78 */	mr r31, r3
/* 8034D994 003495F4  4B FE B6 45 */	bl current_time
/* 8034D998 003495F8  90 61 00 08 */	stw r3, 8(r1)
/* 8034D99C 003495FC  3C 80 80 35 */	lis r4, gti2SocketConnectionsThinkMap@ha
/* 8034D9A0 00349600  38 84 D8 64 */	addi r4, r4, gti2SocketConnectionsThinkMap@l
/* 8034D9A4 00349604  38 A1 00 08 */	addi r5, r1, 8
/* 8034D9A8 00349608  80 7F 00 0C */	lwz r3, 0xc(r31)
/* 8034D9AC 0034960C  4B FE 92 7D */	bl TableMapSafe2
/* 8034D9B0 00349610  7C 60 00 34 */	cntlzw r0, r3
/* 8034D9B4 00349614  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8034D9B8 00349618  54 03 D9 7E */	srwi r3, r0, 5
/* 8034D9BC 0034961C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8034D9C0 00349620  7C 08 03 A6 */	mtlr r0
/* 8034D9C4 00349624  38 21 00 20 */	addi r1, r1, 0x20
/* 8034D9C8 00349628  4E 80 00 20 */	blr

.global gti2FreeClosedConnections
gti2FreeClosedConnections:
/* 8034D9CC 0034962C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8034D9D0 00349630  7C 08 02 A6 */	mflr r0
/* 8034D9D4 00349634  90 01 00 34 */	stw r0, 0x34(r1)
/* 8034D9D8 00349638  39 61 00 30 */	addi r11, r1, 0x30
/* 8034D9DC 0034963C  4B E7 97 4D */	bl _savegpr_27
/* 8034D9E0 00349640  7C 7B 1B 78 */	mr r27, r3
/* 8034D9E4 00349644  80 63 00 10 */	lwz r3, 0x10(r3)
/* 8034D9E8 00349648  4B FE 85 01 */	bl ArrayLength
/* 8034D9EC 0034964C  3B 83 FF FF */	addi r28, r3, -1
/* 8034D9F0 00349650  48 00 00 AC */	b lbl_8034DA9C
lbl_8034D9F4:
/* 8034D9F4 00349654  80 7B 00 10 */	lwz r3, 0x10(r27)
/* 8034D9F8 00349658  7F 84 E3 78 */	mr r4, r28
/* 8034D9FC 0034965C  4B FE 84 F5 */	bl ArrayNth
/* 8034DA00 00349660  80 63 00 00 */	lwz r3, 0(r3)
/* 8034DA04 00349664  90 61 00 08 */	stw r3, 8(r1)
/* 8034DA08 00349668  80 03 00 14 */	lwz r0, 0x14(r3)
/* 8034DA0C 0034966C  2C 00 00 00 */	cmpwi r0, 0
/* 8034DA10 00349670  40 82 00 88 */	bne lbl_8034DA98
/* 8034DA14 00349674  80 03 00 24 */	lwz r0, 0x24(r3)
/* 8034DA18 00349678  2C 00 00 00 */	cmpwi r0, 0
/* 8034DA1C 0034967C  40 82 00 7C */	bne lbl_8034DA98
/* 8034DA20 00349680  80 03 00 0C */	lwz r0, 0xc(r3)
/* 8034DA24 00349684  2C 00 00 07 */	cmpwi r0, 7
/* 8034DA28 00349688  40 82 00 60 */	bne lbl_8034DA88
/* 8034DA2C 0034968C  80 63 00 08 */	lwz r3, 8(r3)
/* 8034DA30 00349690  80 63 00 10 */	lwz r3, 0x10(r3)
/* 8034DA34 00349694  4B FE 84 B5 */	bl ArrayLength
/* 8034DA38 00349698  7C 7F 1B 78 */	mr r31, r3
/* 8034DA3C 0034969C  3B C0 00 00 */	li r30, 0
/* 8034DA40 003496A0  48 00 00 3C */	b lbl_8034DA7C
lbl_8034DA44:
/* 8034DA44 003496A4  83 A1 00 08 */	lwz r29, 8(r1)
/* 8034DA48 003496A8  7F C4 F3 78 */	mr r4, r30
/* 8034DA4C 003496AC  80 7D 00 08 */	lwz r3, 8(r29)
/* 8034DA50 003496B0  80 63 00 10 */	lwz r3, 0x10(r3)
/* 8034DA54 003496B4  4B FE 84 9D */	bl ArrayNth
/* 8034DA58 003496B8  80 03 00 00 */	lwz r0, 0(r3)
/* 8034DA5C 003496BC  7C 1D 00 40 */	cmplw r29, r0
/* 8034DA60 003496C0  40 82 00 18 */	bne lbl_8034DA78
/* 8034DA64 003496C4  80 7D 00 08 */	lwz r3, 8(r29)
/* 8034DA68 003496C8  7F C4 F3 78 */	mr r4, r30
/* 8034DA6C 003496CC  80 63 00 10 */	lwz r3, 0x10(r3)
/* 8034DA70 003496D0  4B FE 88 01 */	bl ArrayDeleteAt
/* 8034DA74 003496D4  48 00 00 24 */	b lbl_8034DA98
lbl_8034DA78:
/* 8034DA78 003496D8  3B DE 00 01 */	addi r30, r30, 1
lbl_8034DA7C:
/* 8034DA7C 003496DC  7C 1E F8 00 */	cmpw r30, r31
/* 8034DA80 003496E0  41 80 FF C4 */	blt lbl_8034DA44
/* 8034DA84 003496E4  48 00 00 14 */	b lbl_8034DA98
lbl_8034DA88:
/* 8034DA88 003496E8  80 63 00 08 */	lwz r3, 8(r3)
/* 8034DA8C 003496EC  38 81 00 08 */	addi r4, r1, 8
/* 8034DA90 003496F0  80 63 00 0C */	lwz r3, 0xc(r3)
/* 8034DA94 003496F4  4B FE 8F E5 */	bl TableRemove
lbl_8034DA98:
/* 8034DA98 003496F8  3B 9C FF FF */	addi r28, r28, -1
lbl_8034DA9C:
/* 8034DA9C 003496FC  2C 1C 00 00 */	cmpwi r28, 0
/* 8034DAA0 00349700  40 80 FF 54 */	bge lbl_8034D9F4
/* 8034DAA4 00349704  39 61 00 30 */	addi r11, r1, 0x30
/* 8034DAA8 00349708  4B E7 96 CD */	bl _restgpr_27
/* 8034DAAC 0034970C  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8034DAB0 00349710  7C 08 03 A6 */	mtlr r0
/* 8034DAB4 00349714  38 21 00 30 */	addi r1, r1, 0x30
/* 8034DAB8 00349718  4E 80 00 20 */	blr

.global gti2SocketError
gti2SocketError:
/* 8034DABC 0034971C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8034DAC0 00349720  7C 08 02 A6 */	mflr r0
/* 8034DAC4 00349724  90 01 00 14 */	stw r0, 0x14(r1)
/* 8034DAC8 00349728  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8034DACC 0034972C  93 C1 00 08 */	stw r30, 8(r1)
/* 8034DAD0 00349730  7C 7E 1B 78 */	mr r30, r3
/* 8034DAD4 00349734  80 03 00 18 */	lwz r0, 0x18(r3)
/* 8034DAD8 00349738  2C 00 00 00 */	cmpwi r0, 0
/* 8034DADC 0034973C  40 82 00 58 */	bne lbl_8034DB34
/* 8034DAE0 00349740  3B E0 00 01 */	li r31, 1
/* 8034DAE4 00349744  93 E3 00 18 */	stw r31, 0x18(r3)
/* 8034DAE8 00349748  4B FF C2 89 */	bl gt2CloseAllConnectionsHard
/* 8034DAEC 0034974C  7F C3 F3 78 */	mr r3, r30
/* 8034DAF0 00349750  4B FF AF AD */	bl gti2SocketErrorCallback
/* 8034DAF4 00349754  2C 03 00 00 */	cmpwi r3, 0
/* 8034DAF8 00349758  41 82 00 3C */	beq lbl_8034DB34
/* 8034DAFC 0034975C  80 1E 00 1C */	lwz r0, 0x1c(r30)
/* 8034DB00 00349760  2C 00 00 00 */	cmpwi r0, 0
/* 8034DB04 00349764  41 82 00 0C */	beq lbl_8034DB10
/* 8034DB08 00349768  93 FE 00 14 */	stw r31, 0x14(r30)
/* 8034DB0C 0034976C  48 00 00 28 */	b lbl_8034DB34
lbl_8034DB10:
/* 8034DB10 00349770  80 7E 00 00 */	lwz r3, 0(r30)
/* 8034DB14 00349774  4B FE A0 E9 */	bl closesocket
/* 8034DB18 00349778  80 7E 00 0C */	lwz r3, 0xc(r30)
/* 8034DB1C 0034977C  4B FE 8D B1 */	bl TableFree
/* 8034DB20 00349780  80 7E 00 10 */	lwz r3, 0x10(r30)
/* 8034DB24 00349784  4B FE 83 31 */	bl ArrayFree
/* 8034DB28 00349788  7F C3 F3 78 */	mr r3, r30
/* 8034DB2C 0034978C  4B FE B8 0D */	bl gsifree
/* 8034DB30 00349790  4B FE B4 A5 */	bl SocketShutDown
lbl_8034DB34:
/* 8034DB34 00349794  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8034DB38 00349798  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8034DB3C 0034979C  83 C1 00 08 */	lwz r30, 8(r1)
/* 8034DB40 003497A0  7C 08 03 A6 */	mtlr r0
/* 8034DB44 003497A4  38 21 00 10 */	addi r1, r1, 0x10
/* 8034DB48 003497A8  4E 80 00 20 */	blr