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

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

.global gpiFailedOpCallback
gpiFailedOpCallback:
/* 80343B64 0033F7C4  94 21 FF B0 */	stwu r1, -0x50(r1)
/* 80343B68 0033F7C8  7C 08 02 A6 */	mflr r0
/* 80343B6C 0033F7CC  80 A4 00 0C */	lwz r5, 0xc(r4)
/* 80343B70 0033F7D0  90 01 00 54 */	stw r0, 0x54(r1)
/* 80343B74 0033F7D4  80 04 00 10 */	lwz r0, 0x10(r4)
/* 80343B78 0033F7D8  2C 05 00 00 */	cmpwi r5, 0
/* 80343B7C 0033F7DC  93 E1 00 4C */	stw r31, 0x4c(r1)
/* 80343B80 0033F7E0  7C 9F 23 78 */	mr r31, r4
/* 80343B84 0033F7E4  93 C1 00 48 */	stw r30, 0x48(r1)
/* 80343B88 0033F7E8  7C 7E 1B 78 */	mr r30, r3
/* 80343B8C 0033F7EC  93 A1 00 44 */	stw r29, 0x44(r1)
/* 80343B90 0033F7F0  93 81 00 40 */	stw r28, 0x40(r1)
/* 80343B94 0033F7F4  90 A1 00 38 */	stw r5, 0x38(r1)
/* 80343B98 0033F7F8  83 A3 00 00 */	lwz r29, 0(r3)
/* 80343B9C 0033F7FC  90 01 00 3C */	stw r0, 0x3c(r1)
/* 80343BA0 0033F800  41 82 03 18 */	beq lbl_80343EB8
/* 80343BA4 0033F804  80 04 00 00 */	lwz r0, 0(r4)
/* 80343BA8 0033F808  2C 00 00 03 */	cmpwi r0, 3
/* 80343BAC 0033F80C  41 82 02 1C */	beq lbl_80343DC8
/* 80343BB0 0033F810  40 80 00 1C */	bge lbl_80343BCC
/* 80343BB4 0033F814  2C 00 00 01 */	cmpwi r0, 1
/* 80343BB8 0033F818  41 82 00 B4 */	beq lbl_80343C6C
/* 80343BBC 0033F81C  40 80 01 98 */	bge lbl_80343D54
/* 80343BC0 0033F820  2C 00 00 00 */	cmpwi r0, 0
/* 80343BC4 0033F824  40 80 00 18 */	bge lbl_80343BDC
/* 80343BC8 0033F828  48 00 02 F0 */	b lbl_80343EB8
lbl_80343BCC:
/* 80343BCC 0033F82C  2C 00 00 05 */	cmpwi r0, 5
/* 80343BD0 0033F830  41 82 01 10 */	beq lbl_80343CE0
/* 80343BD4 0033F834  40 80 02 E4 */	bge lbl_80343EB8
/* 80343BD8 0033F838  48 00 02 6C */	b lbl_80343E44
lbl_80343BDC:
/* 80343BDC 0033F83C  38 60 00 20 */	li r3, 0x20
/* 80343BE0 0033F840  4B FF 57 35 */	bl gsimalloc
/* 80343BE4 0033F844  2C 03 00 00 */	cmpwi r3, 0
/* 80343BE8 0033F848  7C 7C 1B 78 */	mr r28, r3
/* 80343BEC 0033F84C  40 82 00 1C */	bne lbl_80343C08
/* 80343BF0 0033F850  3C 80 80 45 */	lis r4, lbl_8044AF40@ha
/* 80343BF4 0033F854  7F C3 F3 78 */	mr r3, r30
/* 80343BF8 0033F858  38 84 AF 40 */	addi r4, r4, lbl_8044AF40@l
/* 80343BFC 0033F85C  48 00 48 5D */	bl gpiSetErrorString
/* 80343C00 0033F860  38 60 00 01 */	li r3, 1
/* 80343C04 0033F864  48 00 02 B8 */	b lbl_80343EBC
lbl_80343C08:
/* 80343C08 0033F868  38 80 00 00 */	li r4, 0
/* 80343C0C 0033F86C  38 A0 00 20 */	li r5, 0x20
/* 80343C10 0033F870  4B CC 04 F5 */	bl memset
/* 80343C14 0033F874  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80343C18 0033F878  90 1C 00 00 */	stw r0, 0(r28)
/* 80343C1C 0033F87C  80 1D 04 34 */	lwz r0, 0x434(r29)
/* 80343C20 0033F880  2C 00 02 01 */	cmpwi r0, 0x201
/* 80343C24 0033F884  40 82 00 14 */	bne lbl_80343C38
/* 80343C28 0033F888  80 7D 01 A0 */	lwz r3, 0x1a0(r29)
/* 80343C2C 0033F88C  38 00 00 00 */	li r0, 0
/* 80343C30 0033F890  90 7C 00 04 */	stw r3, 4(r28)
/* 80343C34 0033F894  90 1D 01 A0 */	stw r0, 0x1a0(r29)
lbl_80343C38:
/* 80343C38 0033F898  80 81 00 38 */	lwz r4, 0x38(r1)
/* 80343C3C 0033F89C  7F C3 F3 78 */	mr r3, r30
/* 80343C40 0033F8A0  80 01 00 3C */	lwz r0, 0x3c(r1)
/* 80343C44 0033F8A4  7F 85 E3 78 */	mr r5, r28
/* 80343C48 0033F8A8  90 81 00 30 */	stw r4, 0x30(r1)
/* 80343C4C 0033F8AC  7F E6 FB 78 */	mr r6, r31
/* 80343C50 0033F8B0  38 81 00 30 */	addi r4, r1, 0x30
/* 80343C54 0033F8B4  38 E0 00 00 */	li r7, 0
/* 80343C58 0033F8B8  90 01 00 34 */	stw r0, 0x34(r1)
/* 80343C5C 0033F8BC  4B FF C0 CD */	bl gpiAddCallback
/* 80343C60 0033F8C0  2C 03 00 00 */	cmpwi r3, 0
/* 80343C64 0033F8C4  41 82 02 54 */	beq lbl_80343EB8
/* 80343C68 0033F8C8  48 00 02 54 */	b lbl_80343EBC
lbl_80343C6C:
/* 80343C6C 0033F8CC  38 60 00 08 */	li r3, 8
/* 80343C70 0033F8D0  4B FF 56 A5 */	bl gsimalloc
/* 80343C74 0033F8D4  2C 03 00 00 */	cmpwi r3, 0
/* 80343C78 0033F8D8  7C 7C 1B 78 */	mr r28, r3
/* 80343C7C 0033F8DC  40 82 00 1C */	bne lbl_80343C98
/* 80343C80 0033F8E0  3C 80 80 45 */	lis r4, lbl_8044AF40@ha
/* 80343C84 0033F8E4  7F C3 F3 78 */	mr r3, r30
/* 80343C88 0033F8E8  38 84 AF 40 */	addi r4, r4, lbl_8044AF40@l
/* 80343C8C 0033F8EC  48 00 47 CD */	bl gpiSetErrorString
/* 80343C90 0033F8F0  38 60 00 01 */	li r3, 1
/* 80343C94 0033F8F4  48 00 02 28 */	b lbl_80343EBC
lbl_80343C98:
/* 80343C98 0033F8F8  38 80 00 00 */	li r4, 0
/* 80343C9C 0033F8FC  38 A0 00 08 */	li r5, 8
/* 80343CA0 0033F900  4B CC 04 65 */	bl memset
/* 80343CA4 0033F904  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80343CA8 0033F908  7F C3 F3 78 */	mr r3, r30
/* 80343CAC 0033F90C  80 E1 00 38 */	lwz r7, 0x38(r1)
/* 80343CB0 0033F910  7F 85 E3 78 */	mr r5, r28
/* 80343CB4 0033F914  90 1C 00 00 */	stw r0, 0(r28)
/* 80343CB8 0033F918  7F E6 FB 78 */	mr r6, r31
/* 80343CBC 0033F91C  80 01 00 3C */	lwz r0, 0x3c(r1)
/* 80343CC0 0033F920  38 81 00 28 */	addi r4, r1, 0x28
/* 80343CC4 0033F924  90 E1 00 28 */	stw r7, 0x28(r1)
/* 80343CC8 0033F928  38 E0 00 00 */	li r7, 0
/* 80343CCC 0033F92C  90 01 00 2C */	stw r0, 0x2c(r1)
/* 80343CD0 0033F930  4B FF C0 59 */	bl gpiAddCallback
/* 80343CD4 0033F934  2C 03 00 00 */	cmpwi r3, 0
/* 80343CD8 0033F938  41 82 01 E0 */	beq lbl_80343EB8
/* 80343CDC 0033F93C  48 00 01 E0 */	b lbl_80343EBC
lbl_80343CE0:
/* 80343CE0 0033F940  38 60 00 08 */	li r3, 8
/* 80343CE4 0033F944  4B FF 56 31 */	bl gsimalloc
/* 80343CE8 0033F948  2C 03 00 00 */	cmpwi r3, 0
/* 80343CEC 0033F94C  7C 7C 1B 78 */	mr r28, r3
/* 80343CF0 0033F950  40 82 00 1C */	bne lbl_80343D0C
/* 80343CF4 0033F954  3C 80 80 45 */	lis r4, lbl_8044AF40@ha
/* 80343CF8 0033F958  7F C3 F3 78 */	mr r3, r30
/* 80343CFC 0033F95C  38 84 AF 40 */	addi r4, r4, lbl_8044AF40@l
/* 80343D00 0033F960  48 00 47 59 */	bl gpiSetErrorString
/* 80343D04 0033F964  38 60 00 01 */	li r3, 1
/* 80343D08 0033F968  48 00 01 B4 */	b lbl_80343EBC
lbl_80343D0C:
/* 80343D0C 0033F96C  38 80 00 00 */	li r4, 0
/* 80343D10 0033F970  38 A0 00 08 */	li r5, 8
/* 80343D14 0033F974  4B CC 03 F1 */	bl memset
/* 80343D18 0033F978  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80343D1C 0033F97C  7F C3 F3 78 */	mr r3, r30
/* 80343D20 0033F980  80 E1 00 38 */	lwz r7, 0x38(r1)
/* 80343D24 0033F984  7F 85 E3 78 */	mr r5, r28
/* 80343D28 0033F988  90 1C 00 00 */	stw r0, 0(r28)
/* 80343D2C 0033F98C  7F E6 FB 78 */	mr r6, r31
/* 80343D30 0033F990  80 01 00 3C */	lwz r0, 0x3c(r1)
/* 80343D34 0033F994  38 81 00 20 */	addi r4, r1, 0x20
/* 80343D38 0033F998  90 E1 00 20 */	stw r7, 0x20(r1)
/* 80343D3C 0033F99C  38 E0 00 00 */	li r7, 0
/* 80343D40 0033F9A0  90 01 00 24 */	stw r0, 0x24(r1)
/* 80343D44 0033F9A4  4B FF BF E5 */	bl gpiAddCallback
/* 80343D48 0033F9A8  2C 03 00 00 */	cmpwi r3, 0
/* 80343D4C 0033F9AC  41 82 01 6C */	beq lbl_80343EB8
/* 80343D50 0033F9B0  48 00 01 6C */	b lbl_80343EBC
lbl_80343D54:
/* 80343D54 0033F9B4  38 60 02 04 */	li r3, 0x204
/* 80343D58 0033F9B8  4B FF 55 BD */	bl gsimalloc
/* 80343D5C 0033F9BC  2C 03 00 00 */	cmpwi r3, 0
/* 80343D60 0033F9C0  7C 7C 1B 78 */	mr r28, r3
/* 80343D64 0033F9C4  40 82 00 1C */	bne lbl_80343D80
/* 80343D68 0033F9C8  3C 80 80 45 */	lis r4, lbl_8044AF40@ha
/* 80343D6C 0033F9CC  7F C3 F3 78 */	mr r3, r30
/* 80343D70 0033F9D0  38 84 AF 40 */	addi r4, r4, lbl_8044AF40@l
/* 80343D74 0033F9D4  48 00 46 E5 */	bl gpiSetErrorString
/* 80343D78 0033F9D8  38 60 00 01 */	li r3, 1
/* 80343D7C 0033F9DC  48 00 01 40 */	b lbl_80343EBC
lbl_80343D80:
/* 80343D80 0033F9E0  38 80 00 00 */	li r4, 0
/* 80343D84 0033F9E4  38 A0 02 04 */	li r5, 0x204
/* 80343D88 0033F9E8  4B CC 03 7D */	bl memset
/* 80343D8C 0033F9EC  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80343D90 0033F9F0  7F C3 F3 78 */	mr r3, r30
/* 80343D94 0033F9F4  80 E1 00 38 */	lwz r7, 0x38(r1)
/* 80343D98 0033F9F8  7F 85 E3 78 */	mr r5, r28
/* 80343D9C 0033F9FC  90 1C 00 00 */	stw r0, 0(r28)
/* 80343DA0 0033FA00  7F E6 FB 78 */	mr r6, r31
/* 80343DA4 0033FA04  80 01 00 3C */	lwz r0, 0x3c(r1)
/* 80343DA8 0033FA08  38 81 00 18 */	addi r4, r1, 0x18
/* 80343DAC 0033FA0C  90 E1 00 18 */	stw r7, 0x18(r1)
/* 80343DB0 0033FA10  38 E0 00 00 */	li r7, 0
/* 80343DB4 0033FA14  90 01 00 1C */	stw r0, 0x1c(r1)
/* 80343DB8 0033FA18  4B FF BF 71 */	bl gpiAddCallback
/* 80343DBC 0033FA1C  2C 03 00 00 */	cmpwi r3, 0
/* 80343DC0 0033FA20  41 82 00 F8 */	beq lbl_80343EB8
/* 80343DC4 0033FA24  48 00 00 F8 */	b lbl_80343EBC
lbl_80343DC8:
/* 80343DC8 0033FA28  38 60 00 10 */	li r3, 0x10
/* 80343DCC 0033FA2C  4B FF 55 49 */	bl gsimalloc
/* 80343DD0 0033FA30  2C 03 00 00 */	cmpwi r3, 0
/* 80343DD4 0033FA34  7C 7C 1B 78 */	mr r28, r3
/* 80343DD8 0033FA38  40 82 00 1C */	bne lbl_80343DF4
/* 80343DDC 0033FA3C  3C 80 80 45 */	lis r4, lbl_8044AF40@ha
/* 80343DE0 0033FA40  7F C3 F3 78 */	mr r3, r30
/* 80343DE4 0033FA44  38 84 AF 40 */	addi r4, r4, lbl_8044AF40@l
/* 80343DE8 0033FA48  48 00 46 71 */	bl gpiSetErrorString
/* 80343DEC 0033FA4C  38 60 00 01 */	li r3, 1
/* 80343DF0 0033FA50  48 00 00 CC */	b lbl_80343EBC
lbl_80343DF4:
/* 80343DF4 0033FA54  38 80 00 00 */	li r4, 0
/* 80343DF8 0033FA58  38 A0 00 10 */	li r5, 0x10
/* 80343DFC 0033FA5C  4B CC 03 09 */	bl memset
/* 80343E00 0033FA60  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80343E04 0033FA64  38 80 00 00 */	li r4, 0
/* 80343E08 0033FA68  81 01 00 38 */	lwz r8, 0x38(r1)
/* 80343E0C 0033FA6C  7F C3 F3 78 */	mr r3, r30
/* 80343E10 0033FA70  90 1C 00 00 */	stw r0, 0(r28)
/* 80343E14 0033FA74  7F 85 E3 78 */	mr r5, r28
/* 80343E18 0033FA78  80 01 00 3C */	lwz r0, 0x3c(r1)
/* 80343E1C 0033FA7C  7F E6 FB 78 */	mr r6, r31
/* 80343E20 0033FA80  90 9C 00 0C */	stw r4, 0xc(r28)
/* 80343E24 0033FA84  38 81 00 10 */	addi r4, r1, 0x10
/* 80343E28 0033FA88  38 E0 00 00 */	li r7, 0
/* 80343E2C 0033FA8C  91 01 00 10 */	stw r8, 0x10(r1)
/* 80343E30 0033FA90  90 01 00 14 */	stw r0, 0x14(r1)
/* 80343E34 0033FA94  4B FF BE F5 */	bl gpiAddCallback
/* 80343E38 0033FA98  2C 03 00 00 */	cmpwi r3, 0
/* 80343E3C 0033FA9C  41 82 00 7C */	beq lbl_80343EB8
/* 80343E40 0033FAA0  48 00 00 7C */	b lbl_80343EBC
lbl_80343E44:
/* 80343E44 0033FAA4  38 60 00 04 */	li r3, 4
/* 80343E48 0033FAA8  4B FF 54 CD */	bl gsimalloc
/* 80343E4C 0033FAAC  2C 03 00 00 */	cmpwi r3, 0
/* 80343E50 0033FAB0  7C 7C 1B 78 */	mr r28, r3
/* 80343E54 0033FAB4  40 82 00 1C */	bne lbl_80343E70
/* 80343E58 0033FAB8  3C 80 80 45 */	lis r4, lbl_8044AF40@ha
/* 80343E5C 0033FABC  7F C3 F3 78 */	mr r3, r30
/* 80343E60 0033FAC0  38 84 AF 40 */	addi r4, r4, lbl_8044AF40@l
/* 80343E64 0033FAC4  48 00 45 F5 */	bl gpiSetErrorString
/* 80343E68 0033FAC8  38 60 00 01 */	li r3, 1
/* 80343E6C 0033FACC  48 00 00 50 */	b lbl_80343EBC
lbl_80343E70:
/* 80343E70 0033FAD0  38 80 00 00 */	li r4, 0
/* 80343E74 0033FAD4  38 A0 00 04 */	li r5, 4
/* 80343E78 0033FAD8  4B CC 02 8D */	bl memset
/* 80343E7C 0033FADC  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80343E80 0033FAE0  7F C3 F3 78 */	mr r3, r30
/* 80343E84 0033FAE4  80 E1 00 38 */	lwz r7, 0x38(r1)
/* 80343E88 0033FAE8  7F 85 E3 78 */	mr r5, r28
/* 80343E8C 0033FAEC  90 1C 00 00 */	stw r0, 0(r28)
/* 80343E90 0033FAF0  7F E6 FB 78 */	mr r6, r31
/* 80343E94 0033FAF4  80 01 00 3C */	lwz r0, 0x3c(r1)
/* 80343E98 0033FAF8  38 81 00 08 */	addi r4, r1, 8
/* 80343E9C 0033FAFC  90 E1 00 08 */	stw r7, 8(r1)
/* 80343EA0 0033FB00  38 E0 00 00 */	li r7, 0
/* 80343EA4 0033FB04  90 01 00 0C */	stw r0, 0xc(r1)
/* 80343EA8 0033FB08  4B FF BE 81 */	bl gpiAddCallback
/* 80343EAC 0033FB0C  2C 03 00 00 */	cmpwi r3, 0
/* 80343EB0 0033FB10  41 82 00 08 */	beq lbl_80343EB8
/* 80343EB4 0033FB14  48 00 00 08 */	b lbl_80343EBC
lbl_80343EB8:
/* 80343EB8 0033FB18  38 60 00 00 */	li r3, 0
lbl_80343EBC:
/* 80343EBC 0033FB1C  80 01 00 54 */	lwz r0, 0x54(r1)
/* 80343EC0 0033FB20  83 E1 00 4C */	lwz r31, 0x4c(r1)
/* 80343EC4 0033FB24  83 C1 00 48 */	lwz r30, 0x48(r1)
/* 80343EC8 0033FB28  83 A1 00 44 */	lwz r29, 0x44(r1)
/* 80343ECC 0033FB2C  83 81 00 40 */	lwz r28, 0x40(r1)
/* 80343ED0 0033FB30  7C 08 03 A6 */	mtlr r0
/* 80343ED4 0033FB34  38 21 00 50 */	addi r1, r1, 0x50
/* 80343ED8 0033FB38  4E 80 00 20 */	blr

.global gpiAddOperation
gpiAddOperation:
/* 80343EDC 0033FB3C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80343EE0 0033FB40  7C 08 02 A6 */	mflr r0
/* 80343EE4 0033FB44  90 01 00 34 */	stw r0, 0x34(r1)
/* 80343EE8 0033FB48  39 61 00 30 */	addi r11, r1, 0x30
/* 80343EEC 0033FB4C  4B E8 32 31 */	bl _savegpr_24
/* 80343EF0 0033FB50  83 E3 00 00 */	lwz r31, 0(r3)
/* 80343EF4 0033FB54  7C 78 1B 78 */	mr r24, r3
/* 80343EF8 0033FB58  7C 99 23 78 */	mr r25, r4
/* 80343EFC 0033FB5C  7C BA 2B 78 */	mr r26, r5
/* 80343F00 0033FB60  7C DB 33 78 */	mr r27, r6
/* 80343F04 0033FB64  7C FC 3B 78 */	mr r28, r7
/* 80343F08 0033FB68  7D 1D 43 78 */	mr r29, r8
/* 80343F0C 0033FB6C  7D 3E 4B 78 */	mr r30, r9
/* 80343F10 0033FB70  38 60 00 24 */	li r3, 0x24
/* 80343F14 0033FB74  4B FF 54 01 */	bl gsimalloc
/* 80343F18 0033FB78  2C 03 00 00 */	cmpwi r3, 0
/* 80343F1C 0033FB7C  40 82 00 1C */	bne lbl_80343F38
/* 80343F20 0033FB80  3C 80 80 45 */	lis r4, lbl_8044AF40@ha
/* 80343F24 0033FB84  7F 03 C3 78 */	mr r3, r24
/* 80343F28 0033FB88  38 84 AF 40 */	addi r4, r4, lbl_8044AF40@l
/* 80343F2C 0033FB8C  48 00 45 2D */	bl gpiSetErrorString
/* 80343F30 0033FB90  38 60 00 01 */	li r3, 1
/* 80343F34 0033FB94  48 00 00 70 */	b lbl_80343FA4
lbl_80343F38:
/* 80343F38 0033FB98  93 23 00 00 */	stw r25, 0(r3)
/* 80343F3C 0033FB9C  2C 19 00 00 */	cmpwi r25, 0
/* 80343F40 0033FBA0  38 00 00 00 */	li r0, 0
/* 80343F44 0033FBA4  93 43 00 04 */	stw r26, 4(r3)
/* 80343F48 0033FBA8  93 83 00 08 */	stw r28, 8(r3)
/* 80343F4C 0033FBAC  90 03 00 14 */	stw r0, 0x14(r3)
/* 80343F50 0033FBB0  40 82 00 10 */	bne lbl_80343F60
/* 80343F54 0033FBB4  38 00 00 01 */	li r0, 1
/* 80343F58 0033FBB8  90 03 00 18 */	stw r0, 0x18(r3)
/* 80343F5C 0033FBBC  48 00 00 24 */	b lbl_80343F80
lbl_80343F60:
/* 80343F60 0033FBC0  80 9F 02 28 */	lwz r4, 0x228(r31)
/* 80343F64 0033FBC4  38 04 00 01 */	addi r0, r4, 1
/* 80343F68 0033FBC8  90 83 00 18 */	stw r4, 0x18(r3)
/* 80343F6C 0033FBCC  2C 00 00 02 */	cmpwi r0, 2
/* 80343F70 0033FBD0  90 1F 02 28 */	stw r0, 0x228(r31)
/* 80343F74 0033FBD4  40 80 00 0C */	bge lbl_80343F80
/* 80343F78 0033FBD8  38 00 00 02 */	li r0, 2
/* 80343F7C 0033FBDC  90 1F 02 28 */	stw r0, 0x228(r31)
lbl_80343F80:
/* 80343F80 0033FBE0  38 00 00 00 */	li r0, 0
/* 80343F84 0033FBE4  90 03 00 1C */	stw r0, 0x1c(r3)
/* 80343F88 0033FBE8  93 A3 00 0C */	stw r29, 0xc(r3)
/* 80343F8C 0033FBEC  93 C3 00 10 */	stw r30, 0x10(r3)
/* 80343F90 0033FBF0  80 1F 04 40 */	lwz r0, 0x440(r31)
/* 80343F94 0033FBF4  90 03 00 20 */	stw r0, 0x20(r3)
/* 80343F98 0033FBF8  90 7F 04 40 */	stw r3, 0x440(r31)
/* 80343F9C 0033FBFC  90 7B 00 00 */	stw r3, 0(r27)
/* 80343FA0 0033FC00  38 60 00 00 */	li r3, 0
lbl_80343FA4:
/* 80343FA4 0033FC04  39 61 00 30 */	addi r11, r1, 0x30
/* 80343FA8 0033FC08  4B E8 31 C1 */	bl _restgpr_24
/* 80343FAC 0033FC0C  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80343FB0 0033FC10  7C 08 03 A6 */	mtlr r0
/* 80343FB4 0033FC14  38 21 00 30 */	addi r1, r1, 0x30
/* 80343FB8 0033FC18  4E 80 00 20 */	blr
lbl_80343FBC:
/* 80343FBC 0033FC1C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80343FC0 0033FC20  7C 08 02 A6 */	mflr r0
/* 80343FC4 0033FC24  90 01 00 24 */	stw r0, 0x24(r1)
/* 80343FC8 0033FC28  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80343FCC 0033FC2C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80343FD0 0033FC30  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80343FD4 0033FC34  7C 9D 23 78 */	mr r29, r4
/* 80343FD8 0033FC38  80 04 00 00 */	lwz r0, 0(r4)
/* 80343FDC 0033FC3C  80 A3 00 00 */	lwz r5, 0(r3)
/* 80343FE0 0033FC40  2C 00 00 03 */	cmpwi r0, 3
/* 80343FE4 0033FC44  40 82 00 44 */	bne lbl_80344028
/* 80343FE8 0033FC48  80 65 02 2C */	lwz r3, 0x22c(r5)
/* 80343FEC 0033FC4C  83 C4 00 04 */	lwz r30, 4(r4)
/* 80343FF0 0033FC50  38 80 00 02 */	li r4, 2
/* 80343FF4 0033FC54  38 03 FF FF */	addi r0, r3, -1
/* 80343FF8 0033FC58  90 05 02 2C */	stw r0, 0x22c(r5)
/* 80343FFC 0033FC5C  80 7E 00 04 */	lwz r3, 4(r30)
/* 80344000 0033FC60  4B FF 3C 31 */	bl shutdown
/* 80344004 0033FC64  80 7E 00 04 */	lwz r3, 4(r30)
/* 80344008 0033FC68  4B FF 3B F5 */	bl closesocket
/* 8034400C 0033FC6C  80 7E 00 18 */	lwz r3, 0x18(r30)
/* 80344010 0033FC70  4B FF 53 29 */	bl gsifree
/* 80344014 0033FC74  3B E0 00 00 */	li r31, 0
/* 80344018 0033FC78  93 FE 00 18 */	stw r31, 0x18(r30)
/* 8034401C 0033FC7C  80 7E 00 08 */	lwz r3, 8(r30)
/* 80344020 0033FC80  4B FF 53 19 */	bl gsifree
/* 80344024 0033FC84  93 FE 00 08 */	stw r31, 8(r30)
lbl_80344028:
/* 80344028 0033FC88  80 7D 00 04 */	lwz r3, 4(r29)
/* 8034402C 0033FC8C  4B FF 53 0D */	bl gsifree
/* 80344030 0033FC90  38 00 00 00 */	li r0, 0
/* 80344034 0033FC94  7F A3 EB 78 */	mr r3, r29
/* 80344038 0033FC98  90 1D 00 04 */	stw r0, 4(r29)
/* 8034403C 0033FC9C  4B FF 52 FD */	bl gsifree
/* 80344040 0033FCA0  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80344044 0033FCA4  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80344048 0033FCA8  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8034404C 0033FCAC  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80344050 0033FCB0  7C 08 03 A6 */	mtlr r0
/* 80344054 0033FCB4  38 21 00 20 */	addi r1, r1, 0x20
/* 80344058 0033FCB8  4E 80 00 20 */	blr

.global gpiRemoveOperation
gpiRemoveOperation:
/* 8034405C 0033FCBC  80 A3 00 00 */	lwz r5, 0(r3)
/* 80344060 0033FCC0  38 E0 00 00 */	li r7, 0
/* 80344064 0033FCC4  80 C5 04 40 */	lwz r6, 0x440(r5)
/* 80344068 0033FCC8  48 00 00 34 */	b lbl_8034409C
lbl_8034406C:
/* 8034406C 0033FCCC  7C 06 20 40 */	cmplw r6, r4
/* 80344070 0033FCD0  40 82 00 24 */	bne lbl_80344094
/* 80344074 0033FCD4  2C 07 00 00 */	cmpwi r7, 0
/* 80344078 0033FCD8  40 82 00 10 */	bne lbl_80344088
/* 8034407C 0033FCDC  80 06 00 20 */	lwz r0, 0x20(r6)
/* 80344080 0033FCE0  90 05 04 40 */	stw r0, 0x440(r5)
/* 80344084 0033FCE4  48 00 00 0C */	b lbl_80344090
lbl_80344088:
/* 80344088 0033FCE8  80 04 00 20 */	lwz r0, 0x20(r4)
/* 8034408C 0033FCEC  90 07 00 20 */	stw r0, 0x20(r7)
lbl_80344090:
/* 80344090 0033FCF0  4B FF FF 2C */	b lbl_80343FBC
lbl_80344094:
/* 80344094 0033FCF4  7C C7 33 78 */	mr r7, r6
/* 80344098 0033FCF8  80 C6 00 20 */	lwz r6, 0x20(r6)
lbl_8034409C:
/* 8034409C 0033FCFC  2C 06 00 00 */	cmpwi r6, 0
/* 803440A0 0033FD00  40 82 FF CC */	bne lbl_8034406C
/* 803440A4 0033FD04  4E 80 00 20 */	blr

.global gpiFindOperationByID
gpiFindOperationByID:
/* 803440A8 0033FD08  80 63 00 00 */	lwz r3, 0(r3)
/* 803440AC 0033FD0C  80 63 04 40 */	lwz r3, 0x440(r3)
/* 803440B0 0033FD10  48 00 00 28 */	b lbl_803440D8
lbl_803440B4:
/* 803440B4 0033FD14  80 03 00 18 */	lwz r0, 0x18(r3)
/* 803440B8 0033FD18  7C 00 28 00 */	cmpw r0, r5
/* 803440BC 0033FD1C  40 82 00 18 */	bne lbl_803440D4
/* 803440C0 0033FD20  2C 04 00 00 */	cmpwi r4, 0
/* 803440C4 0033FD24  41 82 00 08 */	beq lbl_803440CC
/* 803440C8 0033FD28  90 64 00 00 */	stw r3, 0(r4)
lbl_803440CC:
/* 803440CC 0033FD2C  38 60 00 01 */	li r3, 1
/* 803440D0 0033FD30  4E 80 00 20 */	blr
lbl_803440D4:
/* 803440D4 0033FD34  80 63 00 20 */	lwz r3, 0x20(r3)
lbl_803440D8:
/* 803440D8 0033FD38  2C 03 00 00 */	cmpwi r3, 0
/* 803440DC 0033FD3C  40 82 FF D8 */	bne lbl_803440B4
/* 803440E0 0033FD40  2C 04 00 00 */	cmpwi r4, 0
/* 803440E4 0033FD44  41 82 00 0C */	beq lbl_803440F0
/* 803440E8 0033FD48  38 00 00 00 */	li r0, 0
/* 803440EC 0033FD4C  90 04 00 00 */	stw r0, 0(r4)
lbl_803440F0:
/* 803440F0 0033FD50  38 60 00 00 */	li r3, 0
/* 803440F4 0033FD54  4E 80 00 20 */	blr

.global gpiOperationsAreBlocking
gpiOperationsAreBlocking:
/* 803440F8 0033FD58  80 63 00 00 */	lwz r3, 0(r3)
/* 803440FC 0033FD5C  80 63 04 40 */	lwz r3, 0x440(r3)
/* 80344100 0033FD60  48 00 00 28 */	b lbl_80344128
lbl_80344104:
/* 80344104 0033FD64  80 03 00 08 */	lwz r0, 8(r3)
/* 80344108 0033FD68  2C 00 00 00 */	cmpwi r0, 0
/* 8034410C 0033FD6C  41 82 00 18 */	beq lbl_80344124
/* 80344110 0033FD70  80 03 00 00 */	lwz r0, 0(r3)
/* 80344114 0033FD74  2C 00 00 03 */	cmpwi r0, 3
/* 80344118 0033FD78  41 82 00 0C */	beq lbl_80344124
/* 8034411C 0033FD7C  38 60 00 01 */	li r3, 1
/* 80344120 0033FD80  4E 80 00 20 */	blr
lbl_80344124:
/* 80344124 0033FD84  80 63 00 20 */	lwz r3, 0x20(r3)
lbl_80344128:
/* 80344128 0033FD88  2C 03 00 00 */	cmpwi r3, 0
/* 8034412C 0033FD8C  40 82 FF D8 */	bne lbl_80344104
/* 80344130 0033FD90  38 60 00 00 */	li r3, 0
/* 80344134 0033FD94  4E 80 00 20 */	blr

.global gpiProcessOperation
gpiProcessOperation:
/* 80344138 0033FD98  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8034413C 0033FD9C  7C 08 02 A6 */	mflr r0
/* 80344140 0033FDA0  38 C0 00 00 */	li r6, 0
/* 80344144 0033FDA4  90 01 00 14 */	stw r0, 0x14(r1)
/* 80344148 0033FDA8  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8034414C 0033FDAC  7C 9F 23 78 */	mr r31, r4
/* 80344150 0033FDB0  80 04 00 00 */	lwz r0, 0(r4)
/* 80344154 0033FDB4  2C 00 00 03 */	cmpwi r0, 3
/* 80344158 0033FDB8  41 82 00 68 */	beq lbl_803441C0
/* 8034415C 0033FDBC  40 80 00 1C */	bge lbl_80344178
/* 80344160 0033FDC0  2C 00 00 01 */	cmpwi r0, 1
/* 80344164 0033FDC4  41 82 00 30 */	beq lbl_80344194
/* 80344168 0033FDC8  40 80 00 44 */	bge lbl_803441AC
/* 8034416C 0033FDCC  2C 00 00 00 */	cmpwi r0, 0
/* 80344170 0033FDD0  40 80 00 18 */	bge lbl_80344188
/* 80344174 0033FDD4  48 00 00 4C */	b lbl_803441C0
lbl_80344178:
/* 80344178 0033FDD8  2C 00 00 05 */	cmpwi r0, 5
/* 8034417C 0033FDDC  41 82 00 24 */	beq lbl_803441A0
/* 80344180 0033FDE0  40 80 00 40 */	bge lbl_803441C0
/* 80344184 0033FDE4  48 00 00 34 */	b lbl_803441B8
lbl_80344188:
/* 80344188 0033FDE8  4B FF CB 7D */	bl gpiProcessConnect
/* 8034418C 0033FDEC  7C 66 1B 78 */	mr r6, r3
/* 80344190 0033FDF0  48 00 00 30 */	b lbl_803441C0
lbl_80344194:
/* 80344194 0033FDF4  48 00 14 E1 */	bl gpiProcessNewProfile
/* 80344198 0033FDF8  7C 66 1B 78 */	mr r6, r3
/* 8034419C 0033FDFC  48 00 00 24 */	b lbl_803441C0
lbl_803441A0:
/* 803441A0 0033FE00  48 00 17 85 */	bl gpiProcessDeleteProfle
/* 803441A4 0033FE04  7C 66 1B 78 */	mr r6, r3
/* 803441A8 0033FE08  48 00 00 18 */	b lbl_803441C0
lbl_803441AC:
/* 803441AC 0033FE0C  4B FF D8 C1 */	bl gpiProcessGetInfo
/* 803441B0 0033FE10  7C 66 1B 78 */	mr r6, r3
/* 803441B4 0033FE14  48 00 00 0C */	b lbl_803441C0
lbl_803441B8:
/* 803441B8 0033FE18  48 00 3C 6D */	bl gpiProcessRegisterUniqueNick
/* 803441BC 0033FE1C  7C 66 1B 78 */	mr r6, r3
lbl_803441C0:
/* 803441C0 0033FE20  2C 06 00 00 */	cmpwi r6, 0
/* 803441C4 0033FE24  41 82 00 08 */	beq lbl_803441CC
/* 803441C8 0033FE28  90 DF 00 1C */	stw r6, 0x1c(r31)
lbl_803441CC:
/* 803441CC 0033FE2C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 803441D0 0033FE30  7C C3 33 78 */	mr r3, r6
/* 803441D4 0033FE34  80 01 00 14 */	lwz r0, 0x14(r1)
/* 803441D8 0033FE38  7C 08 03 A6 */	mtlr r0
/* 803441DC 0033FE3C  38 21 00 10 */	addi r1, r1, 0x10
/* 803441E0 0033FE40  4E 80 00 20 */	blr