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

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

.global ghiCreateLock
ghiCreateLock:
/* 803512E4 0034CF44  4E 80 00 20 */	blr

.global ghiFreeLock
ghiFreeLock:
/* 803512E8 0034CF48  4E 80 00 20 */	blr

.global ghiLock
ghiLock:
/* 803512EC 0034CF4C  4E 80 00 20 */	blr

.global ghiUnlock
ghiUnlock:
/* 803512F0 0034CF50  4E 80 00 20 */	blr

.global ghiDecryptReceivedData
ghiDecryptReceivedData:
/* 803512F4 0034CF54  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 803512F8 0034CF58  7C 08 02 A6 */	mflr r0
/* 803512FC 0034CF5C  90 01 00 24 */	stw r0, 0x24(r1)
/* 80351300 0034CF60  38 00 00 00 */	li r0, 0
/* 80351304 0034CF64  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80351308 0034CF68  7C 7F 1B 78 */	mr r31, r3
/* 8035130C 0034CF6C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80351310 0034CF70  90 01 00 0C */	stw r0, 0xc(r1)
/* 80351314 0034CF74  90 01 00 08 */	stw r0, 8(r1)
lbl_80351318:
/* 80351318 0034CF78  80 FF 00 D0 */	lwz r7, 0xd0(r31)
/* 8035131C 0034CF7C  7F E3 FB 78 */	mr r3, r31
/* 80351320 0034CF80  80 1F 00 CC */	lwz r0, 0xcc(r31)
/* 80351324 0034CF84  38 9F 01 90 */	addi r4, r31, 0x190
/* 80351328 0034CF88  80 BF 00 C4 */	lwz r5, 0xc4(r31)
/* 8035132C 0034CF8C  38 C1 00 0C */	addi r6, r1, 0xc
/* 80351330 0034CF90  7C 07 00 50 */	subf r0, r7, r0
/* 80351334 0034CF94  39 01 00 08 */	addi r8, r1, 8
/* 80351338 0034CF98  90 01 00 0C */	stw r0, 0xc(r1)
/* 8035133C 0034CF9C  7C A5 3A 14 */	add r5, r5, r7
/* 80351340 0034CFA0  81 3F 00 A8 */	lwz r9, 0xa8(r31)
/* 80351344 0034CFA4  80 1F 00 A4 */	lwz r0, 0xa4(r31)
/* 80351348 0034CFA8  80 FF 00 A0 */	lwz r7, 0xa0(r31)
/* 8035134C 0034CFAC  7C 09 00 50 */	subf r0, r9, r0
/* 80351350 0034CFB0  90 01 00 08 */	stw r0, 8(r1)
/* 80351354 0034CFB4  7C E7 4A 14 */	add r7, r7, r9
/* 80351358 0034CFB8  81 9F 01 AC */	lwz r12, 0x1ac(r31)
/* 8035135C 0034CFBC  7D 89 03 A6 */	mtctr r12
/* 80351360 0034CFC0  4E 80 04 21 */	bctrl
/* 80351364 0034CFC4  2C 03 00 02 */	cmpwi r3, 2
/* 80351368 0034CFC8  7C 7E 1B 78 */	mr r30, r3
/* 8035136C 0034CFCC  40 82 00 20 */	bne lbl_8035138C
/* 80351370 0034CFD0  80 9F 00 B0 */	lwz r4, 0xb0(r31)
/* 80351374 0034CFD4  38 7F 00 9C */	addi r3, r31, 0x9c
/* 80351378 0034CFD8  4B FF F4 7D */	bl ghiResizeBuffer
/* 8035137C 0034CFDC  2C 03 00 00 */	cmpwi r3, 0
/* 80351380 0034CFE0  40 82 00 1C */	bne lbl_8035139C
/* 80351384 0034CFE4  38 60 00 00 */	li r3, 0
/* 80351388 0034CFE8  48 00 00 A4 */	b lbl_8035142C
lbl_8035138C:
/* 8035138C 0034CFEC  2C 03 00 03 */	cmpwi r3, 3
/* 80351390 0034CFF0  40 82 00 0C */	bne lbl_8035139C
/* 80351394 0034CFF4  38 60 00 00 */	li r3, 0
/* 80351398 0034CFF8  48 00 00 94 */	b lbl_8035142C
lbl_8035139C:
/* 8035139C 0034CFFC  2C 1E 00 02 */	cmpwi r30, 2
/* 803513A0 0034D000  40 82 00 10 */	bne lbl_803513B0
/* 803513A4 0034D004  80 01 00 08 */	lwz r0, 8(r1)
/* 803513A8 0034D008  2C 00 00 00 */	cmpwi r0, 0
/* 803513AC 0034D00C  41 82 FF 6C */	beq lbl_80351318
lbl_803513B0:
/* 803513B0 0034D010  80 81 00 0C */	lwz r4, 0xc(r1)
/* 803513B4 0034D014  80 BF 00 CC */	lwz r5, 0xcc(r31)
/* 803513B8 0034D018  7C 04 28 00 */	cmpw r4, r5
/* 803513BC 0034D01C  40 81 00 0C */	ble lbl_803513C8
/* 803513C0 0034D020  38 60 00 00 */	li r3, 0
/* 803513C4 0034D024  48 00 00 68 */	b lbl_8035142C
lbl_803513C8:
/* 803513C8 0034D028  80 1F 00 D0 */	lwz r0, 0xd0(r31)
/* 803513CC 0034D02C  80 7F 00 A8 */	lwz r3, 0xa8(r31)
/* 803513D0 0034D030  7C 80 22 14 */	add r4, r0, r4
/* 803513D4 0034D034  90 9F 00 D0 */	stw r4, 0xd0(r31)
/* 803513D8 0034D038  80 01 00 08 */	lwz r0, 8(r1)
/* 803513DC 0034D03C  7C 03 02 14 */	add r0, r3, r0
/* 803513E0 0034D040  90 1F 00 A8 */	stw r0, 0xa8(r31)
/* 803513E4 0034D044  80 01 00 08 */	lwz r0, 8(r1)
/* 803513E8 0034D048  2C 00 00 00 */	cmpwi r0, 0
/* 803513EC 0034D04C  41 81 FF 2C */	bgt lbl_80351318
/* 803513F0 0034D050  2C 04 00 FF */	cmpwi r4, 0xff
/* 803513F4 0034D054  40 81 00 34 */	ble lbl_80351428
/* 803513F8 0034D058  7F C4 28 51 */	subf. r30, r4, r5
/* 803513FC 0034D05C  40 82 00 10 */	bne lbl_8035140C
/* 80351400 0034D060  38 7F 00 C0 */	addi r3, r31, 0xc0
/* 80351404 0034D064  4B FF FC 2D */	bl ghiResetBuffer
/* 80351408 0034D068  48 00 00 20 */	b lbl_80351428
lbl_8035140C:
/* 8035140C 0034D06C  80 7F 00 C4 */	lwz r3, 0xc4(r31)
/* 80351410 0034D070  7F C5 F3 78 */	mr r5, r30
/* 80351414 0034D074  7C 83 22 14 */	add r4, r3, r4
/* 80351418 0034D078  4B E7 8E 5D */	bl memmove
/* 8035141C 0034D07C  38 00 00 00 */	li r0, 0
/* 80351420 0034D080  93 DF 00 CC */	stw r30, 0xcc(r31)
/* 80351424 0034D084  90 1F 00 D0 */	stw r0, 0xd0(r31)
lbl_80351428:
/* 80351428 0034D088  38 60 00 01 */	li r3, 1
lbl_8035142C:
/* 8035142C 0034D08C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80351430 0034D090  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80351434 0034D094  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80351438 0034D098  7C 08 03 A6 */	mtlr r0
/* 8035143C 0034D09C  38 21 00 20 */	addi r1, r1, 0x20
/* 80351440 0034D0A0  4E 80 00 20 */	blr

.global ghiDoReceive
ghiDoReceive:
/* 80351444 0034D0A4  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80351448 0034D0A8  7C 08 02 A6 */	mflr r0
/* 8035144C 0034D0AC  90 01 00 24 */	stw r0, 0x24(r1)
/* 80351450 0034D0B0  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80351454 0034D0B4  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80351458 0034D0B8  7C BE 2B 78 */	mr r30, r5
/* 8035145C 0034D0BC  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80351460 0034D0C0  7C 9D 23 78 */	mr r29, r4
/* 80351464 0034D0C4  93 81 00 10 */	stw r28, 0x10(r1)
/* 80351468 0034D0C8  7C 7C 1B 78 */	mr r28, r3
/* 8035146C 0034D0CC  80 03 01 58 */	lwz r0, 0x158(r3)
/* 80351470 0034D0D0  80 65 00 00 */	lwz r3, 0(r5)
/* 80351474 0034D0D4  2C 00 00 00 */	cmpwi r0, 0
/* 80351478 0034D0D8  3B E3 FF FF */	addi r31, r3, -1
/* 8035147C 0034D0DC  41 82 00 3C */	beq lbl_803514B8
/* 80351480 0034D0E0  4B FE 7B 59 */	bl current_time
/* 80351484 0034D0E4  80 9C 01 5C */	lwz r4, 0x15c(r28)
/* 80351488 0034D0E8  80 0D 93 94 */	lwz r0, lbl_8063E654-_SDA_BASE_(r13)
/* 8035148C 0034D0EC  7C 04 02 14 */	add r0, r4, r0
/* 80351490 0034D0F0  7C 03 00 40 */	cmplw r3, r0
/* 80351494 0034D0F4  40 80 00 0C */	bge lbl_803514A0
/* 80351498 0034D0F8  38 60 00 01 */	li r3, 1
/* 8035149C 0034D0FC  48 00 00 C0 */	b lbl_8035155C
lbl_803514A0:
/* 803514A0 0034D100  90 7C 01 5C */	stw r3, 0x15c(r28)
/* 803514A4 0034D104  80 0D 93 90 */	lwz r0, lbl_8063E650-_SDA_BASE_(r13)
/* 803514A8 0034D108  7C 1F 00 00 */	cmpw r31, r0
/* 803514AC 0034D10C  40 80 00 08 */	bge lbl_803514B4
/* 803514B0 0034D110  7F E0 FB 78 */	mr r0, r31
lbl_803514B4:
/* 803514B4 0034D114  7C 1F 03 78 */	mr r31, r0
lbl_803514B8:
/* 803514B8 0034D118  80 7C 00 4C */	lwz r3, 0x4c(r28)
/* 803514BC 0034D11C  7F A4 EB 78 */	mr r4, r29
/* 803514C0 0034D120  7F E5 FB 78 */	mr r5, r31
/* 803514C4 0034D124  38 C0 00 00 */	li r6, 0
/* 803514C8 0034D128  4B FE 69 09 */	bl recv
/* 803514CC 0034D12C  2C 03 FF FF */	cmpwi r3, -1
/* 803514D0 0034D130  40 82 00 64 */	bne lbl_80351534
/* 803514D4 0034D134  80 7C 00 4C */	lwz r3, 0x4c(r28)
/* 803514D8 0034D138  4B FE 6A D1 */	bl GOAGetLastError
/* 803514DC 0034D13C  2C 03 FF C8 */	cmpwi r3, -56
/* 803514E0 0034D140  40 82 00 14 */	bne lbl_803514F4
/* 803514E4 0034D144  38 00 00 01 */	li r0, 1
/* 803514E8 0034D148  38 60 00 02 */	li r3, 2
/* 803514EC 0034D14C  90 1C 01 54 */	stw r0, 0x154(r28)
/* 803514F0 0034D150  48 00 00 6C */	b lbl_8035155C
lbl_803514F4:
/* 803514F4 0034D154  2C 03 FF FA */	cmpwi r3, -6
/* 803514F8 0034D158  41 82 00 14 */	beq lbl_8035150C
/* 803514FC 0034D15C  2C 03 FF E6 */	cmpwi r3, -26
/* 80351500 0034D160  41 82 00 0C */	beq lbl_8035150C
/* 80351504 0034D164  2C 03 FF B4 */	cmpwi r3, -76
/* 80351508 0034D168  40 82 00 0C */	bne lbl_80351514
lbl_8035150C:
/* 8035150C 0034D16C  38 60 00 01 */	li r3, 1
/* 80351510 0034D170  48 00 00 4C */	b lbl_8035155C
lbl_80351514:
/* 80351514 0034D174  38 80 00 01 */	li r4, 1
/* 80351518 0034D178  38 00 00 05 */	li r0, 5
/* 8035151C 0034D17C  90 7C 00 50 */	stw r3, 0x50(r28)
/* 80351520 0034D180  38 60 00 03 */	li r3, 3
/* 80351524 0034D184  90 9C 01 20 */	stw r4, 0x120(r28)
/* 80351528 0034D188  90 1C 00 3C */	stw r0, 0x3c(r28)
/* 8035152C 0034D18C  90 9C 01 54 */	stw r4, 0x154(r28)
/* 80351530 0034D190  48 00 00 2C */	b lbl_8035155C
lbl_80351534:
/* 80351534 0034D194  2C 03 00 00 */	cmpwi r3, 0
/* 80351538 0034D198  40 82 00 14 */	bne lbl_8035154C
/* 8035153C 0034D19C  38 00 00 01 */	li r0, 1
/* 80351540 0034D1A0  38 60 00 02 */	li r3, 2
/* 80351544 0034D1A4  90 1C 01 54 */	stw r0, 0x154(r28)
/* 80351548 0034D1A8  48 00 00 14 */	b lbl_8035155C
lbl_8035154C:
/* 8035154C 0034D1AC  38 00 00 00 */	li r0, 0
/* 80351550 0034D1B0  7C 1D 19 AE */	stbx r0, r29, r3
/* 80351554 0034D1B4  90 7E 00 00 */	stw r3, 0(r30)
/* 80351558 0034D1B8  38 60 00 00 */	li r3, 0
lbl_8035155C:
/* 8035155C 0034D1BC  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80351560 0034D1C0  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80351564 0034D1C4  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80351568 0034D1C8  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8035156C 0034D1CC  83 81 00 10 */	lwz r28, 0x10(r1)
/* 80351570 0034D1D0  7C 08 03 A6 */	mtlr r0
/* 80351574 0034D1D4  38 21 00 20 */	addi r1, r1, 0x20
/* 80351578 0034D1D8  4E 80 00 20 */	blr

.global ghiDoSend
ghiDoSend:
/* 8035157C 0034D1DC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80351580 0034D1E0  7C 08 02 A6 */	mflr r0
/* 80351584 0034D1E4  2C 04 00 00 */	cmpwi r4, 0
/* 80351588 0034D1E8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8035158C 0034D1EC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80351590 0034D1F0  7C 7F 1B 78 */	mr r31, r3
/* 80351594 0034D1F4  41 82 00 0C */	beq lbl_803515A0
/* 80351598 0034D1F8  2C 05 00 00 */	cmpwi r5, 0
/* 8035159C 0034D1FC  40 82 00 0C */	bne lbl_803515A8
lbl_803515A0:
/* 803515A0 0034D200  38 60 00 00 */	li r3, 0
/* 803515A4 0034D204  48 00 00 80 */	b lbl_80351624
lbl_803515A8:
/* 803515A8 0034D208  80 63 00 4C */	lwz r3, 0x4c(r3)
/* 803515AC 0034D20C  38 C0 00 00 */	li r6, 0
/* 803515B0 0034D210  4B FE 68 B1 */	bl send
/* 803515B4 0034D214  2C 03 FF FF */	cmpwi r3, -1
/* 803515B8 0034D218  40 82 00 48 */	bne lbl_80351600
/* 803515BC 0034D21C  80 7F 00 4C */	lwz r3, 0x4c(r31)
/* 803515C0 0034D220  4B FE 69 E9 */	bl GOAGetLastError
/* 803515C4 0034D224  2C 03 FF FA */	cmpwi r3, -6
/* 803515C8 0034D228  41 82 00 14 */	beq lbl_803515DC
/* 803515CC 0034D22C  2C 03 FF E6 */	cmpwi r3, -26
/* 803515D0 0034D230  41 82 00 0C */	beq lbl_803515DC
/* 803515D4 0034D234  2C 03 FF B4 */	cmpwi r3, -76
/* 803515D8 0034D238  40 82 00 0C */	bne lbl_803515E4
lbl_803515DC:
/* 803515DC 0034D23C  38 60 00 00 */	li r3, 0
/* 803515E0 0034D240  48 00 00 44 */	b lbl_80351624
lbl_803515E4:
/* 803515E4 0034D244  38 80 00 01 */	li r4, 1
/* 803515E8 0034D248  38 00 00 05 */	li r0, 5
/* 803515EC 0034D24C  90 7F 00 50 */	stw r3, 0x50(r31)
/* 803515F0 0034D250  38 60 FF FF */	li r3, -1
/* 803515F4 0034D254  90 9F 01 20 */	stw r4, 0x120(r31)
/* 803515F8 0034D258  90 1F 00 3C */	stw r0, 0x3c(r31)
/* 803515FC 0034D25C  48 00 00 28 */	b lbl_80351624
lbl_80351600:
/* 80351600 0034D260  80 1F 00 10 */	lwz r0, 0x10(r31)
/* 80351604 0034D264  2C 00 00 06 */	cmpwi r0, 6
/* 80351608 0034D268  40 82 00 1C */	bne lbl_80351624
/* 8035160C 0034D26C  80 1F 01 7C */	lwz r0, 0x17c(r31)
/* 80351610 0034D270  2C 00 00 00 */	cmpwi r0, 0
/* 80351614 0034D274  40 82 00 10 */	bne lbl_80351624
/* 80351618 0034D278  80 1F 01 6C */	lwz r0, 0x16c(r31)
/* 8035161C 0034D27C  7C 00 1A 14 */	add r0, r0, r3
/* 80351620 0034D280  90 1F 01 6C */	stw r0, 0x16c(r31)
lbl_80351624:
/* 80351624 0034D284  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80351628 0034D288  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8035162C 0034D28C  7C 08 03 A6 */	mtlr r0
/* 80351630 0034D290  38 21 00 10 */	addi r1, r1, 0x10
/* 80351634 0034D294  4E 80 00 20 */	blr

.global ghiTrySendThenBuffer
ghiTrySendThenBuffer:
/* 80351638 0034D298  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8035163C 0034D29C  7C 08 02 A6 */	mflr r0
/* 80351640 0034D2A0  38 C0 00 00 */	li r6, 0
/* 80351644 0034D2A4  90 01 00 24 */	stw r0, 0x24(r1)
/* 80351648 0034D2A8  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8035164C 0034D2AC  7C BF 2B 78 */	mr r31, r5
/* 80351650 0034D2B0  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80351654 0034D2B4  7C 9E 23 78 */	mr r30, r4
/* 80351658 0034D2B8  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8035165C 0034D2BC  7C 7D 1B 78 */	mr r29, r3
/* 80351660 0034D2C0  80 03 01 94 */	lwz r0, 0x194(r3)
/* 80351664 0034D2C4  2C 00 00 00 */	cmpwi r0, 0
/* 80351668 0034D2C8  41 82 00 68 */	beq lbl_803516D0
/* 8035166C 0034D2CC  80 03 01 9C */	lwz r0, 0x19c(r3)
/* 80351670 0034D2D0  2C 00 00 01 */	cmpwi r0, 1
/* 80351674 0034D2D4  40 82 00 5C */	bne lbl_803516D0
/* 80351678 0034D2D8  38 63 00 54 */	addi r3, r3, 0x54
/* 8035167C 0034D2DC  4B FF F5 B1 */	bl ghiEncryptDataToBuffer
/* 80351680 0034D2E0  2C 03 00 00 */	cmpwi r3, 0
/* 80351684 0034D2E4  40 82 00 0C */	bne lbl_80351690
/* 80351688 0034D2E8  38 60 00 00 */	li r3, 0
/* 8035168C 0034D2EC  48 00 00 AC */	b lbl_80351738
lbl_80351690:
/* 80351690 0034D2F0  7F A3 EB 78 */	mr r3, r29
/* 80351694 0034D2F4  4B FF F9 C1 */	bl ghiSendBufferedData
/* 80351698 0034D2F8  2C 03 00 00 */	cmpwi r3, 0
/* 8035169C 0034D2FC  40 82 00 0C */	bne lbl_803516A8
/* 803516A0 0034D300  38 60 00 00 */	li r3, 0
/* 803516A4 0034D304  48 00 00 94 */	b lbl_80351738
lbl_803516A8:
/* 803516A8 0034D308  80 7D 00 64 */	lwz r3, 0x64(r29)
/* 803516AC 0034D30C  80 1D 00 60 */	lwz r0, 0x60(r29)
/* 803516B0 0034D310  7C 03 00 00 */	cmpw r3, r0
/* 803516B4 0034D314  41 80 00 14 */	blt lbl_803516C8
/* 803516B8 0034D318  38 7D 00 54 */	addi r3, r29, 0x54
/* 803516BC 0034D31C  4B FF F9 75 */	bl ghiResetBuffer
/* 803516C0 0034D320  38 60 00 01 */	li r3, 1
/* 803516C4 0034D324  48 00 00 74 */	b lbl_80351738
lbl_803516C8:
/* 803516C8 0034D328  38 60 00 02 */	li r3, 2
/* 803516CC 0034D32C  48 00 00 6C */	b lbl_80351738
lbl_803516D0:
/* 803516D0 0034D330  80 83 00 64 */	lwz r4, 0x64(r3)
/* 803516D4 0034D334  80 03 00 60 */	lwz r0, 0x60(r3)
/* 803516D8 0034D338  7C 04 00 00 */	cmpw r4, r0
/* 803516DC 0034D33C  41 80 00 38 */	blt lbl_80351714
/* 803516E0 0034D340  7F A3 EB 78 */	mr r3, r29
/* 803516E4 0034D344  7F C4 F3 78 */	mr r4, r30
/* 803516E8 0034D348  7F E5 FB 78 */	mr r5, r31
/* 803516EC 0034D34C  4B FF FE 91 */	bl ghiDoSend
/* 803516F0 0034D350  2C 03 FF FF */	cmpwi r3, -1
/* 803516F4 0034D354  7C 66 1B 78 */	mr r6, r3
/* 803516F8 0034D358  40 82 00 0C */	bne lbl_80351704
/* 803516FC 0034D35C  38 60 00 00 */	li r3, 0
/* 80351700 0034D360  48 00 00 38 */	b lbl_80351738
lbl_80351704:
/* 80351704 0034D364  7C 03 F8 00 */	cmpw r3, r31
/* 80351708 0034D368  40 82 00 0C */	bne lbl_80351714
/* 8035170C 0034D36C  38 60 00 01 */	li r3, 1
/* 80351710 0034D370  48 00 00 28 */	b lbl_80351738
lbl_80351714:
/* 80351714 0034D374  38 7D 00 54 */	addi r3, r29, 0x54
/* 80351718 0034D378  7C 9E 32 14 */	add r4, r30, r6
/* 8035171C 0034D37C  7C A6 F8 50 */	subf r5, r6, r31
/* 80351720 0034D380  4B FF F3 9D */	bl ghiAppendDataToBuffer
/* 80351724 0034D384  2C 03 00 00 */	cmpwi r3, 0
/* 80351728 0034D388  40 82 00 0C */	bne lbl_80351734
/* 8035172C 0034D38C  38 60 00 00 */	li r3, 0
/* 80351730 0034D390  48 00 00 08 */	b lbl_80351738
lbl_80351734:
/* 80351734 0034D394  38 60 00 02 */	li r3, 2
lbl_80351738:
/* 80351738 0034D398  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8035173C 0034D39C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80351740 0034D3A0  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80351744 0034D3A4  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80351748 0034D3A8  7C 08 03 A6 */	mtlr r0
/* 8035174C 0034D3AC  38 21 00 20 */	addi r1, r1, 0x20
/* 80351750 0034D3B0  4E 80 00 20 */	blr