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

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

.global strzcpy
strzcpy:
/* 80347F50 00343BB0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80347F54 00343BB4  7C 08 02 A6 */	mflr r0
/* 80347F58 00343BB8  90 01 00 14 */	stw r0, 0x14(r1)
/* 80347F5C 00343BBC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80347F60 00343BC0  7C BF 2B 78 */	mr r31, r5
/* 80347F64 00343BC4  93 C1 00 08 */	stw r30, 8(r1)
/* 80347F68 00343BC8  7C 7E 1B 78 */	mr r30, r3
/* 80347F6C 00343BCC  4B E8 64 25 */	bl strncpy
/* 80347F70 00343BD0  7C 7E FA 14 */	add r3, r30, r31
/* 80347F74 00343BD4  38 00 00 00 */	li r0, 0
/* 80347F78 00343BD8  98 03 FF FF */	stb r0, -1(r3)
/* 80347F7C 00343BDC  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80347F80 00343BE0  83 C1 00 08 */	lwz r30, 8(r1)
/* 80347F84 00343BE4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80347F88 00343BE8  7C 08 03 A6 */	mtlr r0
/* 80347F8C 00343BEC  38 21 00 10 */	addi r1, r1, 0x10
/* 80347F90 00343BF0  4E 80 00 20 */	blr

.global gpiCheckForError
gpiCheckForError:
/* 80347F94 00343BF4  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80347F98 00343BF8  7C 08 02 A6 */	mflr r0
/* 80347F9C 00343BFC  90 01 00 34 */	stw r0, 0x34(r1)
/* 80347FA0 00343C00  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 80347FA4 00343C04  93 C1 00 28 */	stw r30, 0x28(r1)
/* 80347FA8 00343C08  7C BE 2B 78 */	mr r30, r5
/* 80347FAC 00343C0C  38 A0 00 07 */	li r5, 7
/* 80347FB0 00343C10  93 A1 00 24 */	stw r29, 0x24(r1)
/* 80347FB4 00343C14  7C 9D 23 78 */	mr r29, r4
/* 80347FB8 00343C18  38 8D 92 A8 */	addi r4, r13, lbl_8063E568-_SDA_BASE_
/* 80347FBC 00343C1C  93 81 00 20 */	stw r28, 0x20(r1)
/* 80347FC0 00343C20  7C 7C 1B 78 */	mr r28, r3
/* 80347FC4 00343C24  83 E3 00 00 */	lwz r31, 0(r3)
/* 80347FC8 00343C28  7F A3 EB 78 */	mr r3, r29
/* 80347FCC 00343C2C  4B E8 65 9D */	bl strncmp
/* 80347FD0 00343C30  2C 03 00 00 */	cmpwi r3, 0
/* 80347FD4 00343C34  40 82 00 94 */	bne lbl_80348068
/* 80347FD8 00343C38  7F A3 EB 78 */	mr r3, r29
/* 80347FDC 00343C3C  38 A1 00 08 */	addi r5, r1, 8
/* 80347FE0 00343C40  38 8D 92 B0 */	addi r4, r13, lbl_8063E570-_SDA_BASE_
/* 80347FE4 00343C44  38 C0 00 10 */	li r6, 0x10
/* 80347FE8 00343C48  48 00 00 A5 */	bl gpiValueForKey
/* 80347FEC 00343C4C  2C 03 00 00 */	cmpwi r3, 0
/* 80347FF0 00343C50  41 82 00 10 */	beq lbl_80348000
/* 80347FF4 00343C54  38 61 00 08 */	addi r3, r1, 8
/* 80347FF8 00343C58  4B E8 87 15 */	bl atoi
/* 80347FFC 00343C5C  90 7F 04 34 */	stw r3, 0x434(r31)
lbl_80348000:
/* 80348000 00343C60  3C 80 80 45 */	lis r4, lbl_8044B588@ha
/* 80348004 00343C64  7F A3 EB 78 */	mr r3, r29
/* 80348008 00343C68  7F E5 FB 78 */	mr r5, r31
/* 8034800C 00343C6C  38 C0 01 00 */	li r6, 0x100
/* 80348010 00343C70  38 84 B5 88 */	addi r4, r4, lbl_8044B588@l
/* 80348014 00343C74  48 00 00 79 */	bl gpiValueForKey
/* 80348018 00343C78  2C 03 00 00 */	cmpwi r3, 0
/* 8034801C 00343C7C  40 82 00 0C */	bne lbl_80348028
/* 80348020 00343C80  38 00 00 00 */	li r0, 0
/* 80348024 00343C84  98 1F 00 00 */	stb r0, 0(r31)
lbl_80348028:
/* 80348028 00343C88  2C 1E 00 00 */	cmpwi r30, 0
/* 8034802C 00343C8C  41 82 00 34 */	beq lbl_80348060
/* 80348030 00343C90  7F A3 EB 78 */	mr r3, r29
/* 80348034 00343C94  38 8D 92 B8 */	addi r4, r13, lbl_8063E578-_SDA_BASE_
/* 80348038 00343C98  4B E8 67 69 */	bl strstr
/* 8034803C 00343C9C  7C 03 00 D0 */	neg r0, r3
/* 80348040 00343CA0  38 80 00 04 */	li r4, 4
/* 80348044 00343CA4  7C 00 1B 78 */	or r0, r0, r3
/* 80348048 00343CA8  7F 83 E3 78 */	mr r3, r28
/* 8034804C 00343CAC  54 05 0F FE */	srwi r5, r0, 0x1f
/* 80348050 00343CB0  7C 05 00 D0 */	neg r0, r5
/* 80348054 00343CB4  7C 00 2B 78 */	or r0, r0, r5
/* 80348058 00343CB8  54 05 0F FE */	srwi r5, r0, 0x1f
/* 8034805C 00343CBC  4B FF 7C 0D */	bl gpiCallErrorCallback
lbl_80348060:
/* 80348060 00343CC0  38 60 00 01 */	li r3, 1
/* 80348064 00343CC4  48 00 00 08 */	b lbl_8034806C
lbl_80348068:
/* 80348068 00343CC8  38 60 00 00 */	li r3, 0
lbl_8034806C:
/* 8034806C 00343CCC  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80348070 00343CD0  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 80348074 00343CD4  83 C1 00 28 */	lwz r30, 0x28(r1)
/* 80348078 00343CD8  83 A1 00 24 */	lwz r29, 0x24(r1)
/* 8034807C 00343CDC  83 81 00 20 */	lwz r28, 0x20(r1)
/* 80348080 00343CE0  7C 08 03 A6 */	mtlr r0
/* 80348084 00343CE4  38 21 00 30 */	addi r1, r1, 0x30
/* 80348088 00343CE8  4E 80 00 20 */	blr

.global gpiValueForKey
gpiValueForKey:
/* 8034808C 00343CEC  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80348090 00343CF0  7C 08 02 A6 */	mflr r0
/* 80348094 00343CF4  90 01 00 24 */	stw r0, 0x24(r1)
/* 80348098 00343CF8  39 61 00 20 */	addi r11, r1, 0x20
/* 8034809C 00343CFC  4B E7 F0 8D */	bl _savegpr_27
/* 803480A0 00343D00  88 04 00 00 */	lbz r0, 0(r4)
/* 803480A4 00343D04  7C 9B 23 78 */	mr r27, r4
/* 803480A8 00343D08  7C BC 2B 78 */	mr r28, r5
/* 803480AC 00343D0C  7C DD 33 78 */	mr r29, r6
/* 803480B0 00343D10  7C 1E 07 74 */	extsb r30, r0
/* 803480B4 00343D14  4B E8 66 ED */	bl strstr
/* 803480B8 00343D18  2C 03 00 00 */	cmpwi r3, 0
/* 803480BC 00343D1C  7C 7F 1B 78 */	mr r31, r3
/* 803480C0 00343D20  40 82 00 0C */	bne lbl_803480CC
/* 803480C4 00343D24  38 60 00 00 */	li r3, 0
/* 803480C8 00343D28  48 00 00 58 */	b lbl_80348120
lbl_803480CC:
/* 803480CC 00343D2C  7F 63 DB 78 */	mr r3, r27
/* 803480D0 00343D30  4B E7 EA 95 */	bl strlen
/* 803480D4 00343D34  7F 84 E3 78 */	mr r4, r28
/* 803480D8 00343D38  38 BD FF FF */	addi r5, r29, -1
/* 803480DC 00343D3C  7C 7F 1A 14 */	add r3, r31, r3
/* 803480E0 00343D40  38 C0 00 00 */	li r6, 0
/* 803480E4 00343D44  48 00 00 14 */	b lbl_803480F8
lbl_803480E8:
/* 803480E8 00343D48  98 04 00 00 */	stb r0, 0(r4)
/* 803480EC 00343D4C  38 C6 00 01 */	addi r6, r6, 1
/* 803480F0 00343D50  38 63 00 01 */	addi r3, r3, 1
/* 803480F4 00343D54  38 84 00 01 */	addi r4, r4, 1
lbl_803480F8:
/* 803480F8 00343D58  7C 06 28 00 */	cmpw r6, r5
/* 803480FC 00343D5C  40 80 00 18 */	bge lbl_80348114
/* 80348100 00343D60  88 03 00 00 */	lbz r0, 0(r3)
/* 80348104 00343D64  7C 00 07 75 */	extsb. r0, r0
/* 80348108 00343D68  41 82 00 0C */	beq lbl_80348114
/* 8034810C 00343D6C  7C 00 F0 00 */	cmpw r0, r30
/* 80348110 00343D70  40 82 FF D8 */	bne lbl_803480E8
lbl_80348114:
/* 80348114 00343D74  38 00 00 00 */	li r0, 0
/* 80348118 00343D78  38 60 00 01 */	li r3, 1
/* 8034811C 00343D7C  7C 1C 31 AE */	stbx r0, r28, r6
lbl_80348120:
/* 80348120 00343D80  39 61 00 20 */	addi r11, r1, 0x20
/* 80348124 00343D84  4B E7 F0 51 */	bl _restgpr_27
/* 80348128 00343D88  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8034812C 00343D8C  7C 08 03 A6 */	mtlr r0
/* 80348130 00343D90  38 21 00 20 */	addi r1, r1, 0x20
/* 80348134 00343D94  4E 80 00 20 */	blr

.global gpiCheckSocketConnect
gpiCheckSocketConnect:
/* 80348138 00343D98  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8034813C 00343D9C  7C 08 02 A6 */	mflr r0
/* 80348140 00343DA0  90 01 00 24 */	stw r0, 0x24(r1)
/* 80348144 00343DA4  38 C1 00 08 */	addi r6, r1, 8
/* 80348148 00343DA8  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8034814C 00343DAC  3B E0 00 00 */	li r31, 0
/* 80348150 00343DB0  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80348154 00343DB4  7C BE 2B 78 */	mr r30, r5
/* 80348158 00343DB8  38 A1 00 0C */	addi r5, r1, 0xc
/* 8034815C 00343DBC  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80348160 00343DC0  7C 7D 1B 78 */	mr r29, r3
/* 80348164 00343DC4  7C 83 23 78 */	mr r3, r4
/* 80348168 00343DC8  38 80 00 00 */	li r4, 0
/* 8034816C 00343DCC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80348170 00343DD0  93 E1 00 08 */	stw r31, 8(r1)
/* 80348174 00343DD4  4B FE FE 3D */	bl GSISocketSelect
/* 80348178 00343DD8  2C 03 FF FF */	cmpwi r3, -1
/* 8034817C 00343DDC  40 82 00 40 */	bne lbl_803481BC
/* 80348180 00343DE0  83 DD 00 00 */	lwz r30, 0(r29)
/* 80348184 00343DE4  3C 80 80 45 */	lis r4, lbl_8044B598@ha
/* 80348188 00343DE8  38 84 B5 98 */	addi r4, r4, lbl_8044B598@l
/* 8034818C 00343DEC  38 A0 01 00 */	li r5, 0x100
/* 80348190 00343DF0  7F C3 F3 78 */	mr r3, r30
/* 80348194 00343DF4  4B E8 61 FD */	bl strncpy
/* 80348198 00343DF8  9B FE 00 FF */	stb r31, 0xff(r30)
/* 8034819C 00343DFC  38 00 00 05 */	li r0, 5
/* 803481A0 00343E00  7F A3 EB 78 */	mr r3, r29
/* 803481A4 00343E04  38 80 00 03 */	li r4, 3
/* 803481A8 00343E08  90 1E 04 34 */	stw r0, 0x434(r30)
/* 803481AC 00343E0C  38 A0 00 01 */	li r5, 1
/* 803481B0 00343E10  4B FF 7A B9 */	bl gpiCallErrorCallback
/* 803481B4 00343E14  38 60 00 03 */	li r3, 3
/* 803481B8 00343E18  48 00 00 50 */	b lbl_80348208
lbl_803481BC:
/* 803481BC 00343E1C  2C 03 00 00 */	cmpwi r3, 0
/* 803481C0 00343E20  40 81 00 3C */	ble lbl_803481FC
/* 803481C4 00343E24  80 01 00 08 */	lwz r0, 8(r1)
/* 803481C8 00343E28  2C 00 00 00 */	cmpwi r0, 0
/* 803481CC 00343E2C  41 82 00 14 */	beq lbl_803481E0
/* 803481D0 00343E30  38 00 00 04 */	li r0, 4
/* 803481D4 00343E34  38 60 00 00 */	li r3, 0
/* 803481D8 00343E38  90 1E 00 00 */	stw r0, 0(r30)
/* 803481DC 00343E3C  48 00 00 2C */	b lbl_80348208
lbl_803481E0:
/* 803481E0 00343E40  80 01 00 0C */	lwz r0, 0xc(r1)
/* 803481E4 00343E44  2C 00 00 00 */	cmpwi r0, 0
/* 803481E8 00343E48  41 82 00 14 */	beq lbl_803481FC
/* 803481EC 00343E4C  38 00 00 03 */	li r0, 3
/* 803481F0 00343E50  38 60 00 00 */	li r3, 0
/* 803481F4 00343E54  90 1E 00 00 */	stw r0, 0(r30)
/* 803481F8 00343E58  48 00 00 10 */	b lbl_80348208
lbl_803481FC:
/* 803481FC 00343E5C  38 00 00 00 */	li r0, 0
/* 80348200 00343E60  38 60 00 00 */	li r3, 0
/* 80348204 00343E64  90 1E 00 00 */	stw r0, 0(r30)
lbl_80348208:
/* 80348208 00343E68  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8034820C 00343E6C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80348210 00343E70  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80348214 00343E74  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80348218 00343E78  7C 08 03 A6 */	mtlr r0
/* 8034821C 00343E7C  38 21 00 20 */	addi r1, r1, 0x20
/* 80348220 00343E80  4E 80 00 20 */	blr

.global gpiReadKeyAndValue
gpiReadKeyAndValue:
/* 80348224 00343E84  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80348228 00343E88  7C 08 02 A6 */	mflr r0
/* 8034822C 00343E8C  90 01 00 14 */	stw r0, 0x14(r1)
/* 80348230 00343E90  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80348234 00343E94  7C 7F 1B 78 */	mr r31, r3
/* 80348238 00343E98  93 C1 00 08 */	stw r30, 8(r1)
/* 8034823C 00343E9C  80 05 00 00 */	lwz r0, 0(r5)
/* 80348240 00343EA0  7D 24 02 14 */	add r9, r4, r0
/* 80348244 00343EA4  7C 04 00 AE */	lbzx r0, r4, r0
/* 80348248 00343EA8  7D 28 4B 78 */	mr r8, r9
/* 8034824C 00343EAC  2C 00 00 5C */	cmpwi r0, 0x5c
/* 80348250 00343EB0  39 29 00 01 */	addi r9, r9, 1
/* 80348254 00343EB4  41 82 00 44 */	beq lbl_80348298
/* 80348258 00343EB8  83 C3 00 00 */	lwz r30, 0(r3)
/* 8034825C 00343EBC  3C 80 80 45 */	lis r4, lbl_8044B5D0@ha
/* 80348260 00343EC0  38 84 B5 D0 */	addi r4, r4, lbl_8044B5D0@l
/* 80348264 00343EC4  38 A0 01 00 */	li r5, 0x100
/* 80348268 00343EC8  7F C3 F3 78 */	mr r3, r30
/* 8034826C 00343ECC  4B E8 61 25 */	bl strncpy
/* 80348270 00343ED0  38 60 00 00 */	li r3, 0
/* 80348274 00343ED4  38 00 00 01 */	li r0, 1
/* 80348278 00343ED8  98 7E 00 FF */	stb r3, 0xff(r30)
/* 8034827C 00343EDC  7F E3 FB 78 */	mr r3, r31
/* 80348280 00343EE0  38 80 00 03 */	li r4, 3
/* 80348284 00343EE4  38 A0 00 01 */	li r5, 1
/* 80348288 00343EE8  90 1E 04 34 */	stw r0, 0x434(r30)
/* 8034828C 00343EEC  4B FF 79 DD */	bl gpiCallErrorCallback
/* 80348290 00343EF0  38 60 00 03 */	li r3, 3
/* 80348294 00343EF4  48 00 01 5C */	b lbl_803483F0
lbl_80348298:
/* 80348298 00343EF8  38 80 00 00 */	li r4, 0
/* 8034829C 00343EFC  48 00 00 A0 */	b lbl_8034833C
lbl_803482A0:
/* 803482A0 00343F00  2C 00 00 00 */	cmpwi r0, 0
/* 803482A4 00343F04  40 82 00 44 */	bne lbl_803482E8
/* 803482A8 00343F08  83 C3 00 00 */	lwz r30, 0(r3)
/* 803482AC 00343F0C  3C 80 80 45 */	lis r4, lbl_8044B5D0@ha
/* 803482B0 00343F10  38 84 B5 D0 */	addi r4, r4, lbl_8044B5D0@l
/* 803482B4 00343F14  38 A0 01 00 */	li r5, 0x100
/* 803482B8 00343F18  7F C3 F3 78 */	mr r3, r30
/* 803482BC 00343F1C  4B E8 60 D5 */	bl strncpy
/* 803482C0 00343F20  38 60 00 00 */	li r3, 0
/* 803482C4 00343F24  38 00 00 01 */	li r0, 1
/* 803482C8 00343F28  98 7E 00 FF */	stb r3, 0xff(r30)
/* 803482CC 00343F2C  7F E3 FB 78 */	mr r3, r31
/* 803482D0 00343F30  38 80 00 03 */	li r4, 3
/* 803482D4 00343F34  38 A0 00 01 */	li r5, 1
/* 803482D8 00343F38  90 1E 04 34 */	stw r0, 0x434(r30)
/* 803482DC 00343F3C  4B FF 79 8D */	bl gpiCallErrorCallback
/* 803482E0 00343F40  38 60 00 03 */	li r3, 3
/* 803482E4 00343F44  48 00 01 0C */	b lbl_803483F0
lbl_803482E8:
/* 803482E8 00343F48  2C 04 01 FF */	cmpwi r4, 0x1ff
/* 803482EC 00343F4C  40 82 00 44 */	bne lbl_80348330
/* 803482F0 00343F50  83 C3 00 00 */	lwz r30, 0(r3)
/* 803482F4 00343F54  3C 80 80 45 */	lis r4, lbl_8044B5D0@ha
/* 803482F8 00343F58  38 84 B5 D0 */	addi r4, r4, lbl_8044B5D0@l
/* 803482FC 00343F5C  38 A0 01 00 */	li r5, 0x100
/* 80348300 00343F60  7F C3 F3 78 */	mr r3, r30
/* 80348304 00343F64  4B E8 60 8D */	bl strncpy
/* 80348308 00343F68  38 60 00 00 */	li r3, 0
/* 8034830C 00343F6C  38 00 00 01 */	li r0, 1
/* 80348310 00343F70  98 7E 00 FF */	stb r3, 0xff(r30)
/* 80348314 00343F74  7F E3 FB 78 */	mr r3, r31
/* 80348318 00343F78  38 80 00 03 */	li r4, 3
/* 8034831C 00343F7C  38 A0 00 01 */	li r5, 1
/* 80348320 00343F80  90 1E 04 34 */	stw r0, 0x434(r30)
/* 80348324 00343F84  4B FF 79 45 */	bl gpiCallErrorCallback
/* 80348328 00343F88  38 60 00 03 */	li r3, 3
/* 8034832C 00343F8C  48 00 00 C4 */	b lbl_803483F0
lbl_80348330:
/* 80348330 00343F90  98 06 00 00 */	stb r0, 0(r6)
/* 80348334 00343F94  38 C6 00 01 */	addi r6, r6, 1
/* 80348338 00343F98  38 84 00 01 */	addi r4, r4, 1
lbl_8034833C:
/* 8034833C 00343F9C  88 09 00 00 */	lbz r0, 0(r9)
/* 80348340 00343FA0  39 29 00 01 */	addi r9, r9, 1
/* 80348344 00343FA4  7C 00 07 74 */	extsb r0, r0
/* 80348348 00343FA8  2C 00 00 5C */	cmpwi r0, 0x5c
/* 8034834C 00343FAC  40 82 FF 54 */	bne lbl_803482A0
/* 80348350 00343FB0  38 00 00 00 */	li r0, 0
/* 80348354 00343FB4  38 80 00 00 */	li r4, 0
/* 80348358 00343FB8  98 06 00 00 */	stb r0, 0(r6)
/* 8034835C 00343FBC  48 00 00 58 */	b lbl_803483B4
lbl_80348360:
/* 80348360 00343FC0  2C 04 01 FF */	cmpwi r4, 0x1ff
/* 80348364 00343FC4  40 82 00 44 */	bne lbl_803483A8
/* 80348368 00343FC8  83 C3 00 00 */	lwz r30, 0(r3)
/* 8034836C 00343FCC  3C 80 80 45 */	lis r4, lbl_8044B5D0@ha
/* 80348370 00343FD0  38 84 B5 D0 */	addi r4, r4, lbl_8044B5D0@l
/* 80348374 00343FD4  38 A0 01 00 */	li r5, 0x100
/* 80348378 00343FD8  7F C3 F3 78 */	mr r3, r30
/* 8034837C 00343FDC  4B E8 60 15 */	bl strncpy
/* 80348380 00343FE0  38 60 00 00 */	li r3, 0
/* 80348384 00343FE4  38 00 00 01 */	li r0, 1
/* 80348388 00343FE8  98 7E 00 FF */	stb r3, 0xff(r30)
/* 8034838C 00343FEC  7F E3 FB 78 */	mr r3, r31
/* 80348390 00343FF0  38 80 00 03 */	li r4, 3
/* 80348394 00343FF4  38 A0 00 01 */	li r5, 1
/* 80348398 00343FF8  90 1E 04 34 */	stw r0, 0x434(r30)
/* 8034839C 00343FFC  4B FF 78 CD */	bl gpiCallErrorCallback
/* 803483A0 00344000  38 60 00 03 */	li r3, 3
/* 803483A4 00344004  48 00 00 4C */	b lbl_803483F0
lbl_803483A8:
/* 803483A8 00344008  98 07 00 00 */	stb r0, 0(r7)
/* 803483AC 0034400C  38 E7 00 01 */	addi r7, r7, 1
/* 803483B0 00344010  38 84 00 01 */	addi r4, r4, 1
lbl_803483B4:
/* 803483B4 00344014  88 09 00 00 */	lbz r0, 0(r9)
/* 803483B8 00344018  39 29 00 01 */	addi r9, r9, 1
/* 803483BC 0034401C  7C 00 07 74 */	extsb r0, r0
/* 803483C0 00344020  2C 00 00 5C */	cmpwi r0, 0x5c
/* 803483C4 00344024  41 82 00 0C */	beq lbl_803483D0
/* 803483C8 00344028  2C 00 00 00 */	cmpwi r0, 0
/* 803483CC 0034402C  40 82 FF 94 */	bne lbl_80348360
lbl_803483D0:
/* 803483D0 00344030  38 60 00 00 */	li r3, 0
/* 803483D4 00344034  7C 08 48 50 */	subf r0, r8, r9
/* 803483D8 00344038  98 67 00 00 */	stb r3, 0(r7)
/* 803483DC 0034403C  38 60 00 00 */	li r3, 0
/* 803483E0 00344040  80 85 00 00 */	lwz r4, 0(r5)
/* 803483E4 00344044  7C 80 22 14 */	add r4, r0, r4
/* 803483E8 00344048  38 04 FF FF */	addi r0, r4, -1
/* 803483EC 0034404C  90 05 00 00 */	stw r0, 0(r5)
lbl_803483F0:
/* 803483F0 00344050  80 01 00 14 */	lwz r0, 0x14(r1)
/* 803483F4 00344054  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 803483F8 00344058  83 C1 00 08 */	lwz r30, 8(r1)
/* 803483FC 0034405C  7C 08 03 A6 */	mtlr r0
/* 80348400 00344060  38 21 00 10 */	addi r1, r1, 0x10
/* 80348404 00344064  4E 80 00 20 */	blr

.global gpiSetError
gpiSetError:
/* 80348408 00344068  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8034840C 0034406C  7C 08 02 A6 */	mflr r0
/* 80348410 00344070  90 01 00 14 */	stw r0, 0x14(r1)
/* 80348414 00344074  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80348418 00344078  93 C1 00 08 */	stw r30, 8(r1)
/* 8034841C 0034407C  7C 9E 23 78 */	mr r30, r4
/* 80348420 00344080  7C A4 2B 78 */	mr r4, r5
/* 80348424 00344084  38 A0 01 00 */	li r5, 0x100
/* 80348428 00344088  83 E3 00 00 */	lwz r31, 0(r3)
/* 8034842C 0034408C  7F E3 FB 78 */	mr r3, r31
/* 80348430 00344090  4B E8 5F 61 */	bl strncpy
/* 80348434 00344094  38 00 00 00 */	li r0, 0
/* 80348438 00344098  98 1F 00 FF */	stb r0, 0xff(r31)
/* 8034843C 0034409C  93 DF 04 34 */	stw r30, 0x434(r31)
/* 80348440 003440A0  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80348444 003440A4  83 C1 00 08 */	lwz r30, 8(r1)
/* 80348448 003440A8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8034844C 003440AC  7C 08 03 A6 */	mtlr r0
/* 80348450 003440B0  38 21 00 10 */	addi r1, r1, 0x10
/* 80348454 003440B4  4E 80 00 20 */	blr

.global gpiSetErrorString
gpiSetErrorString:
/* 80348458 003440B8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8034845C 003440BC  7C 08 02 A6 */	mflr r0
/* 80348460 003440C0  38 A0 01 00 */	li r5, 0x100
/* 80348464 003440C4  90 01 00 14 */	stw r0, 0x14(r1)
/* 80348468 003440C8  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8034846C 003440CC  83 E3 00 00 */	lwz r31, 0(r3)
/* 80348470 003440D0  7F E3 FB 78 */	mr r3, r31
/* 80348474 003440D4  4B E8 5F 1D */	bl strncpy
/* 80348478 003440D8  38 00 00 00 */	li r0, 0
/* 8034847C 003440DC  98 1F 00 FF */	stb r0, 0xff(r31)
/* 80348480 003440E0  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80348484 003440E4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80348488 003440E8  7C 08 03 A6 */	mtlr r0
/* 8034848C 003440EC  38 21 00 10 */	addi r1, r1, 0x10
/* 80348490 003440F0  4E 80 00 20 */	blr

.global gpiEncodeString
gpiEncodeString:
/* 80348494 003440F4  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 80348498 003440F8  7C 08 02 A6 */	mflr r0
/* 8034849C 003440FC  90 01 00 44 */	stw r0, 0x44(r1)
/* 803484A0 00344100  39 61 00 40 */	addi r11, r1, 0x40
/* 803484A4 00344104  4B E7 EC 85 */	bl _savegpr_27
/* 803484A8 00344108  7C 7B 1B 78 */	mr r27, r3
/* 803484AC 0034410C  7C 9C 23 78 */	mr r28, r4
/* 803484B0 00344110  4B E7 E6 B5 */	bl strlen
/* 803484B4 00344114  3C 80 79 70 */	lis r4, 0x79707367@ha
/* 803484B8 00344118  7C 7D 1B 78 */	mr r29, r3
/* 803484BC 0034411C  38 64 73 67 */	addi r3, r4, 0x79707367@l
/* 803484C0 00344120  4B FF 0B A1 */	bl Util_RandSeed
/* 803484C4 00344124  3B E1 00 08 */	addi r31, r1, 8
/* 803484C8 00344128  3B C0 00 00 */	li r30, 0
/* 803484CC 0034412C  48 00 00 2C */	b lbl_803484F8
lbl_803484D0:
/* 803484D0 00344130  38 60 00 00 */	li r3, 0
/* 803484D4 00344134  38 80 00 FF */	li r4, 0xff
/* 803484D8 00344138  4B FF 0B A1 */	bl Util_RandInt
/* 803484DC 0034413C  88 1B 00 00 */	lbz r0, 0(r27)
/* 803484E0 00344140  7C 63 07 74 */	extsb r3, r3
/* 803484E4 00344144  3B DE 00 01 */	addi r30, r30, 1
/* 803484E8 00344148  3B 7B 00 01 */	addi r27, r27, 1
/* 803484EC 0034414C  7C 60 02 78 */	xor r0, r3, r0
/* 803484F0 00344150  98 1F 00 00 */	stb r0, 0(r31)
/* 803484F4 00344154  3B FF 00 01 */	addi r31, r31, 1
lbl_803484F8:
/* 803484F8 00344158  7C 1E E8 40 */	cmplw r30, r29
/* 803484FC 0034415C  41 80 FF D4 */	blt lbl_803484D0
/* 80348500 00344160  38 61 00 08 */	addi r3, r1, 8
/* 80348504 00344164  38 00 00 00 */	li r0, 0
/* 80348508 00344168  7C 03 F1 AE */	stbx r0, r3, r30
/* 8034850C 0034416C  7F 84 E3 78 */	mr r4, r28
/* 80348510 00344170  7F A5 EB 78 */	mr r5, r29
/* 80348514 00344174  38 C0 00 01 */	li r6, 1
/* 80348518 00344178  4B FF 0B D5 */	bl B64Encode
/* 8034851C 0034417C  39 61 00 40 */	addi r11, r1, 0x40
/* 80348520 00344180  4B E7 EC 55 */	bl _restgpr_27
/* 80348524 00344184  80 01 00 44 */	lwz r0, 0x44(r1)
/* 80348528 00344188  7C 08 03 A6 */	mtlr r0
/* 8034852C 0034418C  38 21 00 40 */	addi r1, r1, 0x40
/* 80348530 00344190  4E 80 00 20 */	blr