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

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

.global GSIStartAvailableCheckA
GSIStartAvailableCheckA:
/* 80339358 00334FB8  94 21 FF A0 */	stwu r1, -0x60(r1)
/* 8033935C 00334FBC  7C 08 02 A6 */	mflr r0
/* 80339360 00334FC0  90 01 00 64 */	stw r0, 0x64(r1)
/* 80339364 00334FC4  93 E1 00 5C */	stw r31, 0x5c(r1)
/* 80339368 00334FC8  93 C1 00 58 */	stw r30, 0x58(r1)
/* 8033936C 00334FCC  93 A1 00 54 */	stw r29, 0x54(r1)
/* 80339370 00334FD0  3F A0 80 61 */	lis r29, lbl_80610AF8@ha
/* 80339374 00334FD4  3B BD 0A F8 */	addi r29, r29, lbl_80610AF8@l
/* 80339378 00334FD8  93 81 00 50 */	stw r28, 0x50(r1)
/* 8033937C 00334FDC  7C 7C 1B 78 */	mr r28, r3
/* 80339380 00334FE0  7F 84 E3 78 */	mr r4, r28
/* 80339384 00334FE4  38 7D 00 00 */	addi r3, r29, 0
/* 80339388 00334FE8  4B E9 4F 49 */	bl strcpy
/* 8033938C 00334FEC  38 00 FF FF */	li r0, -1
/* 80339390 00334FF0  90 1D 00 80 */	stw r0, 0x80(r29)
/* 80339394 00334FF4  4B FF FC 3D */	bl SocketStartUp
/* 80339398 00334FF8  8B FD 00 40 */	lbz r31, 0x40(r29)
/* 8033939C 00334FFC  7F FF 07 75 */	extsb. r31, r31
/* 803393A0 00335000  40 82 00 1C */	bne lbl_803393BC
/* 803393A4 00335004  3C 80 80 45 */	lis r4, lbl_8044A430@ha
/* 803393A8 00335008  7F 85 E3 78 */	mr r5, r28
/* 803393AC 0033500C  38 61 00 08 */	addi r3, r1, 8
/* 803393B0 00335010  38 84 A4 30 */	addi r4, r4, lbl_8044A430@l
/* 803393B4 00335014  4C C6 31 82 */	crclr 6
/* 803393B8 00335018  4B E9 37 45 */	bl sprintf
lbl_803393BC:
/* 803393BC 0033501C  3B DD 00 80 */	addi r30, r29, 0x80
/* 803393C0 00335020  38 00 00 02 */	li r0, 2
/* 803393C4 00335024  98 1E 00 05 */	stb r0, 5(r30)
/* 803393C8 00335028  38 60 6C FC */	li r3, 0x6cfc
/* 803393CC 0033502C  4B FB D9 B1 */	bl SOHtoNs
/* 803393D0 00335030  2C 1F 00 00 */	cmpwi r31, 0
/* 803393D4 00335034  B0 7E 00 06 */	sth r3, 6(r30)
/* 803393D8 00335038  38 61 00 08 */	addi r3, r1, 8
/* 803393DC 0033503C  41 82 00 08 */	beq lbl_803393E4
/* 803393E0 00335040  38 7D 00 40 */	addi r3, r29, 0x40
lbl_803393E4:
/* 803393E4 00335044  4B FF EB 8D */	bl inet_addr
/* 803393E8 00335048  3C 03 00 01 */	addis r0, r3, 1
/* 803393EC 0033504C  38 9D 00 80 */	addi r4, r29, 0x80
/* 803393F0 00335050  28 00 FF FF */	cmplwi r0, 0xffff
/* 803393F4 00335054  90 64 00 08 */	stw r3, 8(r4)
/* 803393F8 00335058  40 82 00 3C */	bne lbl_80339434
/* 803393FC 0033505C  2C 1F 00 00 */	cmpwi r31, 0
/* 80339400 00335060  38 61 00 08 */	addi r3, r1, 8
/* 80339404 00335064  41 82 00 08 */	beq lbl_8033940C
/* 80339408 00335068  38 7D 00 40 */	addi r3, r29, 0x40
lbl_8033940C:
/* 8033940C 0033506C  4B FF EC CD */	bl gethostbyname
/* 80339410 00335070  2C 03 00 00 */	cmpwi r3, 0
/* 80339414 00335074  40 82 00 0C */	bne lbl_80339420
/* 80339418 00335078  38 00 00 00 */	li r0, 0
/* 8033941C 0033507C  48 00 00 1C */	b lbl_80339438
lbl_80339420:
/* 80339420 00335080  80 83 00 0C */	lwz r4, 0xc(r3)
/* 80339424 00335084  38 7D 00 80 */	addi r3, r29, 0x80
/* 80339428 00335088  80 84 00 00 */	lwz r4, 0(r4)
/* 8033942C 0033508C  80 04 00 00 */	lwz r0, 0(r4)
/* 80339430 00335090  90 03 00 08 */	stw r0, 8(r3)
lbl_80339434:
/* 80339434 00335094  38 00 00 01 */	li r0, 1
lbl_80339438:
/* 80339438 00335098  2C 00 00 00 */	cmpwi r0, 0
/* 8033943C 0033509C  41 82 00 78 */	beq lbl_803394B4
/* 80339440 003350A0  38 60 00 02 */	li r3, 2
/* 80339444 003350A4  38 80 00 02 */	li r4, 2
/* 80339448 003350A8  38 A0 00 11 */	li r5, 0x11
/* 8033944C 003350AC  4B FF E7 79 */	bl socket
/* 80339450 003350B0  2C 03 FF FF */	cmpwi r3, -1
/* 80339454 003350B4  90 7D 00 80 */	stw r3, 0x80(r29)
/* 80339458 003350B8  41 82 00 5C */	beq lbl_803394B4
/* 8033945C 003350BC  3B DD 00 80 */	addi r30, r29, 0x80
/* 80339460 003350C0  38 00 00 09 */	li r0, 9
/* 80339464 003350C4  98 1E 00 0C */	stb r0, 0xc(r30)
/* 80339468 003350C8  7F 83 E3 78 */	mr r3, r28
/* 8033946C 003350CC  4B E8 D6 F9 */	bl strlen
/* 80339470 003350D0  7C 7F 1B 78 */	mr r31, r3
/* 80339474 003350D4  7F 84 E3 78 */	mr r4, r28
/* 80339478 003350D8  38 7E 00 11 */	addi r3, r30, 0x11
/* 8033947C 003350DC  38 BF 00 01 */	addi r5, r31, 1
/* 80339480 003350E0  4B CC AB 81 */	bl memcpy
/* 80339484 003350E4  38 BF 00 06 */	addi r5, r31, 6
/* 80339488 003350E8  80 7D 00 80 */	lwz r3, 0x80(r29)
/* 8033948C 003350EC  90 BE 00 4C */	stw r5, 0x4c(r30)
/* 80339490 003350F0  38 9E 00 0C */	addi r4, r30, 0xc
/* 80339494 003350F4  38 FE 00 04 */	addi r7, r30, 4
/* 80339498 003350F8  38 C0 00 00 */	li r6, 0
/* 8033949C 003350FC  39 00 00 08 */	li r8, 8
/* 803394A0 00335100  4B FF E9 F5 */	bl sendto
/* 803394A4 00335104  4B FF FB 35 */	bl current_time
/* 803394A8 00335108  38 00 00 00 */	li r0, 0
/* 803394AC 0033510C  90 7E 00 50 */	stw r3, 0x50(r30)
/* 803394B0 00335110  90 1E 00 54 */	stw r0, 0x54(r30)
lbl_803394B4:
/* 803394B4 00335114  80 01 00 64 */	lwz r0, 0x64(r1)
/* 803394B8 00335118  83 E1 00 5C */	lwz r31, 0x5c(r1)
/* 803394BC 0033511C  83 C1 00 58 */	lwz r30, 0x58(r1)
/* 803394C0 00335120  83 A1 00 54 */	lwz r29, 0x54(r1)
/* 803394C4 00335124  83 81 00 50 */	lwz r28, 0x50(r1)
/* 803394C8 00335128  7C 08 03 A6 */	mtlr r0
/* 803394CC 0033512C  38 21 00 60 */	addi r1, r1, 0x60
/* 803394D0 00335130  4E 80 00 20 */	blr

.global GSIAvailableCheckThink
GSIAvailableCheckThink:
/* 803394D4 00335134  94 21 FF A0 */	stwu r1, -0x60(r1)
/* 803394D8 00335138  7C 08 02 A6 */	mflr r0
/* 803394DC 0033513C  90 01 00 64 */	stw r0, 0x64(r1)
/* 803394E0 00335140  38 00 00 08 */	li r0, 8
/* 803394E4 00335144  93 E1 00 5C */	stw r31, 0x5c(r1)
/* 803394E8 00335148  3F E0 80 61 */	lis r31, lbl_80610B78@ha
/* 803394EC 0033514C  80 7F 0B 78 */	lwz r3, lbl_80610B78@l(r31)
/* 803394F0 00335150  90 01 00 08 */	stw r0, 8(r1)
/* 803394F4 00335154  2C 03 FF FF */	cmpwi r3, -1
/* 803394F8 00335158  40 82 00 14 */	bne lbl_8033950C
/* 803394FC 0033515C  38 00 00 01 */	li r0, 1
/* 80339500 00335160  38 60 00 01 */	li r3, 1
/* 80339504 00335164  90 0D B0 A8 */	stw r0, lbl_80640368-_SDA_BASE_(r13)
/* 80339508 00335168  48 00 01 78 */	b lbl_80339680
lbl_8033950C:
/* 8033950C 0033516C  4B FF F3 41 */	bl CanReceiveOnSocket
/* 80339510 00335170  2C 03 00 00 */	cmpwi r3, 0
/* 80339514 00335174  41 82 00 F8 */	beq lbl_8033960C
/* 80339518 00335178  80 7F 0B 78 */	lwz r3, 0xb78(r31)
/* 8033951C 0033517C  38 81 00 18 */	addi r4, r1, 0x18
/* 80339520 00335180  38 E1 00 10 */	addi r7, r1, 0x10
/* 80339524 00335184  39 01 00 08 */	addi r8, r1, 8
/* 80339528 00335188  38 A0 00 40 */	li r5, 0x40
/* 8033952C 0033518C  38 C0 00 00 */	li r6, 0
/* 80339530 00335190  4B FF E8 D5 */	bl recvfrom
/* 80339534 00335194  2C 03 00 07 */	cmpwi r3, 7
/* 80339538 00335198  40 80 00 0C */	bge lbl_80339544
/* 8033953C 0033519C  38 A0 00 01 */	li r5, 1
/* 80339540 003351A0  48 00 00 88 */	b lbl_803395C8
lbl_80339544:
/* 80339544 003351A4  3B FF 0B 78 */	addi r31, r31, 0xb78
/* 80339548 003351A8  38 61 00 14 */	addi r3, r1, 0x14
/* 8033954C 003351AC  38 9F 00 08 */	addi r4, r31, 8
/* 80339550 003351B0  38 A0 00 04 */	li r5, 4
/* 80339554 003351B4  4B E9 0E 45 */	bl memcmp
/* 80339558 003351B8  2C 03 00 00 */	cmpwi r3, 0
/* 8033955C 003351BC  41 82 00 0C */	beq lbl_80339568
/* 80339560 003351C0  38 A0 00 01 */	li r5, 1
/* 80339564 003351C4  48 00 00 64 */	b lbl_803395C8
lbl_80339568:
/* 80339568 003351C8  A0 61 00 12 */	lhz r3, 0x12(r1)
/* 8033956C 003351CC  A0 1F 00 06 */	lhz r0, 6(r31)
/* 80339570 003351D0  7C 03 00 40 */	cmplw r3, r0
/* 80339574 003351D4  41 82 00 0C */	beq lbl_80339580
/* 80339578 003351D8  38 A0 00 01 */	li r5, 1
/* 8033957C 003351DC  48 00 00 4C */	b lbl_803395C8
lbl_80339580:
/* 80339580 003351E0  38 61 00 18 */	addi r3, r1, 0x18
/* 80339584 003351E4  38 8D 8F 38 */	addi r4, r13, lbl_8063E1F8-_SDA_BASE_
/* 80339588 003351E8  38 A0 00 03 */	li r5, 3
/* 8033958C 003351EC  4B E9 0E 0D */	bl memcmp
/* 80339590 003351F0  2C 03 00 00 */	cmpwi r3, 0
/* 80339594 003351F4  41 82 00 0C */	beq lbl_803395A0
/* 80339598 003351F8  38 A0 00 01 */	li r5, 1
/* 8033959C 003351FC  48 00 00 2C */	b lbl_803395C8
lbl_803395A0:
/* 803395A0 00335200  88 01 00 1C */	lbz r0, 0x1c(r1)
/* 803395A4 00335204  38 A0 00 00 */	li r5, 0
/* 803395A8 00335208  88 61 00 1D */	lbz r3, 0x1d(r1)
/* 803395AC 0033520C  54 06 82 1E */	rlwinm r6, r0, 0x10, 8, 0xf
/* 803395B0 00335210  88 81 00 1B */	lbz r4, 0x1b(r1)
/* 803395B4 00335214  88 01 00 1E */	lbz r0, 0x1e(r1)
/* 803395B8 00335218  54 63 44 2E */	rlwinm r3, r3, 8, 0x10, 0x17
/* 803395BC 0033521C  50 86 C0 0E */	rlwimi r6, r4, 0x18, 0, 7
/* 803395C0 00335220  7C C6 1B 78 */	or r6, r6, r3
/* 803395C4 00335224  7C DF 03 78 */	or r31, r6, r0
lbl_803395C8:
/* 803395C8 00335228  2C 05 00 00 */	cmpwi r5, 0
/* 803395CC 0033522C  40 82 00 40 */	bne lbl_8033960C
/* 803395D0 00335230  3C 60 80 61 */	lis r3, lbl_80610B78@ha
/* 803395D4 00335234  80 63 0B 78 */	lwz r3, lbl_80610B78@l(r3)
/* 803395D8 00335238  4B FF E6 25 */	bl closesocket
/* 803395DC 0033523C  57 E0 07 FF */	clrlwi. r0, r31, 0x1f
/* 803395E0 00335240  41 82 00 10 */	beq lbl_803395F0
/* 803395E4 00335244  38 00 00 02 */	li r0, 2
/* 803395E8 00335248  90 0D B0 A8 */	stw r0, lbl_80640368-_SDA_BASE_(r13)
/* 803395EC 0033524C  48 00 00 18 */	b lbl_80339604
lbl_803395F0:
/* 803395F0 00335250  57 E0 07 BD */	rlwinm. r0, r31, 0, 0x1e, 0x1e
/* 803395F4 00335254  38 00 00 01 */	li r0, 1
/* 803395F8 00335258  41 82 00 08 */	beq lbl_80339600
/* 803395FC 0033525C  38 00 00 03 */	li r0, 3
lbl_80339600:
/* 80339600 00335260  90 0D B0 A8 */	stw r0, lbl_80640368-_SDA_BASE_(r13)
lbl_80339604:
/* 80339604 00335264  7C 03 03 78 */	mr r3, r0
/* 80339608 00335268  48 00 00 78 */	b lbl_80339680
lbl_8033960C:
/* 8033960C 0033526C  4B FF F9 CD */	bl current_time
/* 80339610 00335270  3C A0 80 61 */	lis r5, lbl_80610B78@ha
/* 80339614 00335274  3B E5 0B 78 */	addi r31, r5, lbl_80610B78@l
/* 80339618 00335278  80 9F 00 50 */	lwz r4, 0x50(r31)
/* 8033961C 0033527C  38 04 07 D0 */	addi r0, r4, 0x7d0
/* 80339620 00335280  7C 03 00 40 */	cmplw r3, r0
/* 80339624 00335284  40 81 00 58 */	ble lbl_8033967C
/* 80339628 00335288  80 1F 00 54 */	lwz r0, 0x54(r31)
/* 8033962C 0033528C  2C 00 00 01 */	cmpwi r0, 1
/* 80339630 00335290  40 82 00 1C */	bne lbl_8033964C
/* 80339634 00335294  80 65 0B 78 */	lwz r3, 0xb78(r5)
/* 80339638 00335298  4B FF E5 C5 */	bl closesocket
/* 8033963C 0033529C  38 00 00 01 */	li r0, 1
/* 80339640 003352A0  38 60 00 01 */	li r3, 1
/* 80339644 003352A4  90 0D B0 A8 */	stw r0, lbl_80640368-_SDA_BASE_(r13)
/* 80339648 003352A8  48 00 00 38 */	b lbl_80339680
lbl_8033964C:
/* 8033964C 003352AC  80 65 0B 78 */	lwz r3, 0xb78(r5)
/* 80339650 003352B0  38 9F 00 0C */	addi r4, r31, 0xc
/* 80339654 003352B4  80 BF 00 4C */	lwz r5, 0x4c(r31)
/* 80339658 003352B8  38 FF 00 04 */	addi r7, r31, 4
/* 8033965C 003352BC  38 C0 00 00 */	li r6, 0
/* 80339660 003352C0  39 00 00 08 */	li r8, 8
/* 80339664 003352C4  4B FF E8 31 */	bl sendto
/* 80339668 003352C8  4B FF F9 71 */	bl current_time
/* 8033966C 003352CC  80 9F 00 54 */	lwz r4, 0x54(r31)
/* 80339670 003352D0  90 7F 00 50 */	stw r3, 0x50(r31)
/* 80339674 003352D4  38 04 00 01 */	addi r0, r4, 1
/* 80339678 003352D8  90 1F 00 54 */	stw r0, 0x54(r31)
lbl_8033967C:
/* 8033967C 003352DC  38 60 00 00 */	li r3, 0
lbl_80339680:
/* 80339680 003352E0  80 01 00 64 */	lwz r0, 0x64(r1)
/* 80339684 003352E4  83 E1 00 5C */	lwz r31, 0x5c(r1)
/* 80339688 003352E8  7C 08 03 A6 */	mtlr r0
/* 8033968C 003352EC  38 21 00 60 */	addi r1, r1, 0x60
/* 80339690 003352F0  4E 80 00 20 */	blr