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

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

.global gpiAppendCharToBuffer
gpiAppendCharToBuffer:
/* 8033F31C 0033AF7C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8033F320 0033AF80  7C 08 02 A6 */	mflr r0
/* 8033F324 0033AF84  90 01 00 24 */	stw r0, 0x24(r1)
/* 8033F328 0033AF88  39 61 00 20 */	addi r11, r1, 0x20
/* 8033F32C 0033AF8C  4B E8 7D FD */	bl _savegpr_27
/* 8033F330 0033AF90  83 E4 00 08 */	lwz r31, 8(r4)
/* 8033F334 0033AF94  7C 7B 1B 78 */	mr r27, r3
/* 8033F338 0033AF98  83 C4 00 04 */	lwz r30, 4(r4)
/* 8033F33C 0033AF9C  7C 9C 23 78 */	mr r28, r4
/* 8033F340 0033AFA0  80 C4 00 00 */	lwz r6, 0(r4)
/* 8033F344 0033AFA4  7C BD 2B 78 */	mr r29, r5
/* 8033F348 0033AFA8  7C 1E F8 00 */	cmpw r30, r31
/* 8033F34C 0033AFAC  40 82 00 38 */	bne lbl_8033F384
/* 8033F350 0033AFB0  38 9E 40 01 */	addi r4, r30, 0x4001
/* 8033F354 0033AFB4  7C C3 33 78 */	mr r3, r6
/* 8033F358 0033AFB8  3B DE 40 00 */	addi r30, r30, 0x4000
/* 8033F35C 0033AFBC  4B FF 9F C9 */	bl gsirealloc
/* 8033F360 0033AFC0  2C 03 00 00 */	cmpwi r3, 0
/* 8033F364 0033AFC4  7C 66 1B 78 */	mr r6, r3
/* 8033F368 0033AFC8  40 82 00 1C */	bne lbl_8033F384
/* 8033F36C 0033AFCC  3C 80 80 45 */	lis r4, lbl_8044A7A8@ha
/* 8033F370 0033AFD0  7F 63 DB 78 */	mr r3, r27
/* 8033F374 0033AFD4  38 84 A7 A8 */	addi r4, r4, lbl_8044A7A8@l
/* 8033F378 0033AFD8  48 00 90 E1 */	bl gpiSetErrorString
/* 8033F37C 0033AFDC  38 60 00 01 */	li r3, 1
/* 8033F380 0033AFE0  48 00 00 2C */	b lbl_8033F3AC
lbl_8033F384:
/* 8033F384 0033AFE4  7F A6 F9 AE */	stbx r29, r6, r31
/* 8033F388 0033AFE8  7C 9F 32 14 */	add r4, r31, r6
/* 8033F38C 0033AFEC  38 00 00 00 */	li r0, 0
/* 8033F390 0033AFF0  38 60 00 00 */	li r3, 0
/* 8033F394 0033AFF4  98 04 00 01 */	stb r0, 1(r4)
/* 8033F398 0033AFF8  80 9C 00 08 */	lwz r4, 8(r28)
/* 8033F39C 0033AFFC  93 DC 00 04 */	stw r30, 4(r28)
/* 8033F3A0 0033B000  38 04 00 01 */	addi r0, r4, 1
/* 8033F3A4 0033B004  90 1C 00 08 */	stw r0, 8(r28)
/* 8033F3A8 0033B008  90 DC 00 00 */	stw r6, 0(r28)
lbl_8033F3AC:
/* 8033F3AC 0033B00C  39 61 00 20 */	addi r11, r1, 0x20
/* 8033F3B0 0033B010  4B E8 7D C5 */	bl _restgpr_27
/* 8033F3B4 0033B014  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8033F3B8 0033B018  7C 08 03 A6 */	mtlr r0
/* 8033F3BC 0033B01C  38 21 00 20 */	addi r1, r1, 0x20
/* 8033F3C0 0033B020  4E 80 00 20 */	blr

.global gpiAppendStringToBufferLen
gpiAppendStringToBufferLen:
/* 8033F3C4 0033B024  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8033F3C8 0033B028  7C 08 02 A6 */	mflr r0
/* 8033F3CC 0033B02C  90 01 00 34 */	stw r0, 0x34(r1)
/* 8033F3D0 0033B030  39 61 00 30 */	addi r11, r1, 0x30
/* 8033F3D4 0033B034  4B E8 7D 4D */	bl _savegpr_25
/* 8033F3D8 0033B038  2C 05 00 00 */	cmpwi r5, 0
/* 8033F3DC 0033B03C  7C 79 1B 78 */	mr r25, r3
/* 8033F3E0 0033B040  7C 9A 23 78 */	mr r26, r4
/* 8033F3E4 0033B044  7C BB 2B 78 */	mr r27, r5
/* 8033F3E8 0033B048  7C DC 33 78 */	mr r28, r6
/* 8033F3EC 0033B04C  40 82 00 0C */	bne lbl_8033F3F8
/* 8033F3F0 0033B050  38 60 00 00 */	li r3, 0
/* 8033F3F4 0033B054  48 00 00 94 */	b lbl_8033F488
lbl_8033F3F8:
/* 8033F3F8 0033B058  83 E4 00 08 */	lwz r31, 8(r4)
/* 8033F3FC 0033B05C  83 C4 00 04 */	lwz r30, 4(r4)
/* 8033F400 0033B060  83 A4 00 00 */	lwz r29, 0(r4)
/* 8033F404 0033B064  7C 1F F0 50 */	subf r0, r31, r30
/* 8033F408 0033B068  7C 00 30 00 */	cmpw r0, r6
/* 8033F40C 0033B06C  40 80 00 48 */	bge lbl_8033F454
/* 8033F410 0033B070  2C 06 40 00 */	cmpwi r6, 0x4000
/* 8033F414 0033B074  38 00 40 00 */	li r0, 0x4000
/* 8033F418 0033B078  41 80 00 08 */	blt lbl_8033F420
/* 8033F41C 0033B07C  7F 80 E3 78 */	mr r0, r28
lbl_8033F420:
/* 8033F420 0033B080  7F DE 02 14 */	add r30, r30, r0
/* 8033F424 0033B084  7F A3 EB 78 */	mr r3, r29
/* 8033F428 0033B088  38 9E 00 01 */	addi r4, r30, 1
/* 8033F42C 0033B08C  4B FF 9E F9 */	bl gsirealloc
/* 8033F430 0033B090  2C 03 00 00 */	cmpwi r3, 0
/* 8033F434 0033B094  7C 7D 1B 78 */	mr r29, r3
/* 8033F438 0033B098  40 82 00 1C */	bne lbl_8033F454
/* 8033F43C 0033B09C  3C 80 80 45 */	lis r4, lbl_8044A7A8@ha
/* 8033F440 0033B0A0  7F 23 CB 78 */	mr r3, r25
/* 8033F444 0033B0A4  38 84 A7 A8 */	addi r4, r4, lbl_8044A7A8@l
/* 8033F448 0033B0A8  48 00 90 11 */	bl gpiSetErrorString
/* 8033F44C 0033B0AC  38 60 00 01 */	li r3, 1
/* 8033F450 0033B0B0  48 00 00 38 */	b lbl_8033F488
lbl_8033F454:
/* 8033F454 0033B0B4  7F 64 DB 78 */	mr r4, r27
/* 8033F458 0033B0B8  7F 85 E3 78 */	mr r5, r28
/* 8033F45C 0033B0BC  7C 7D FA 14 */	add r3, r29, r31
/* 8033F460 0033B0C0  4B CC 4B A1 */	bl memcpy
/* 8033F464 0033B0C4  7C 1F E2 14 */	add r0, r31, r28
/* 8033F468 0033B0C8  38 60 00 00 */	li r3, 0
/* 8033F46C 0033B0CC  7C 7D 01 AE */	stbx r3, r29, r0
/* 8033F470 0033B0D0  38 60 00 00 */	li r3, 0
/* 8033F474 0033B0D4  80 1A 00 08 */	lwz r0, 8(r26)
/* 8033F478 0033B0D8  93 DA 00 04 */	stw r30, 4(r26)
/* 8033F47C 0033B0DC  7C 00 E2 14 */	add r0, r0, r28
/* 8033F480 0033B0E0  90 1A 00 08 */	stw r0, 8(r26)
/* 8033F484 0033B0E4  93 BA 00 00 */	stw r29, 0(r26)
lbl_8033F488:
/* 8033F488 0033B0E8  39 61 00 30 */	addi r11, r1, 0x30
/* 8033F48C 0033B0EC  4B E8 7C E1 */	bl _restgpr_25
/* 8033F490 0033B0F0  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8033F494 0033B0F4  7C 08 03 A6 */	mtlr r0
/* 8033F498 0033B0F8  38 21 00 30 */	addi r1, r1, 0x30
/* 8033F49C 0033B0FC  4E 80 00 20 */	blr

.global gpiAppendStringToBuffer
gpiAppendStringToBuffer:
/* 8033F4A0 0033B100  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8033F4A4 0033B104  7C 08 02 A6 */	mflr r0
/* 8033F4A8 0033B108  90 01 00 24 */	stw r0, 0x24(r1)
/* 8033F4AC 0033B10C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8033F4B0 0033B110  7C BF 2B 78 */	mr r31, r5
/* 8033F4B4 0033B114  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8033F4B8 0033B118  7C 9E 23 78 */	mr r30, r4
/* 8033F4BC 0033B11C  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8033F4C0 0033B120  7C 7D 1B 78 */	mr r29, r3
/* 8033F4C4 0033B124  7F E3 FB 78 */	mr r3, r31
/* 8033F4C8 0033B128  4B E8 76 9D */	bl strlen
/* 8033F4CC 0033B12C  7C 66 1B 78 */	mr r6, r3
/* 8033F4D0 0033B130  7F A3 EB 78 */	mr r3, r29
/* 8033F4D4 0033B134  7F C4 F3 78 */	mr r4, r30
/* 8033F4D8 0033B138  7F E5 FB 78 */	mr r5, r31
/* 8033F4DC 0033B13C  4B FF FE E9 */	bl gpiAppendStringToBufferLen
/* 8033F4E0 0033B140  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8033F4E4 0033B144  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8033F4E8 0033B148  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8033F4EC 0033B14C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8033F4F0 0033B150  7C 08 03 A6 */	mtlr r0
/* 8033F4F4 0033B154  38 21 00 20 */	addi r1, r1, 0x20
/* 8033F4F8 0033B158  4E 80 00 20 */	blr

.global gpiAppendIntToBuffer
gpiAppendIntToBuffer:
/* 8033F4FC 0033B15C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8033F500 0033B160  7C 08 02 A6 */	mflr r0
/* 8033F504 0033B164  90 01 00 24 */	stw r0, 0x24(r1)
/* 8033F508 0033B168  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8033F50C 0033B16C  7C 9F 23 78 */	mr r31, r4
/* 8033F510 0033B170  38 8D 8F D8 */	addi r4, r13, lbl_8063E298-_SDA_BASE_
/* 8033F514 0033B174  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8033F518 0033B178  7C 7E 1B 78 */	mr r30, r3
/* 8033F51C 0033B17C  38 61 00 08 */	addi r3, r1, 8
/* 8033F520 0033B180  4C C6 31 82 */	crclr 6
/* 8033F524 0033B184  4B E8 D5 D9 */	bl sprintf
/* 8033F528 0033B188  38 61 00 08 */	addi r3, r1, 8
/* 8033F52C 0033B18C  4B E8 76 39 */	bl strlen
/* 8033F530 0033B190  7C 66 1B 78 */	mr r6, r3
/* 8033F534 0033B194  7F C3 F3 78 */	mr r3, r30
/* 8033F538 0033B198  7F E4 FB 78 */	mr r4, r31
/* 8033F53C 0033B19C  38 A1 00 08 */	addi r5, r1, 8
/* 8033F540 0033B1A0  4B FF FE 85 */	bl gpiAppendStringToBufferLen
/* 8033F544 0033B1A4  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8033F548 0033B1A8  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8033F54C 0033B1AC  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8033F550 0033B1B0  7C 08 03 A6 */	mtlr r0
/* 8033F554 0033B1B4  38 21 00 20 */	addi r1, r1, 0x20
/* 8033F558 0033B1B8  4E 80 00 20 */	blr

.global gpiSendData
gpiSendData:
/* 8033F55C 0033B1BC  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8033F560 0033B1C0  7C 08 02 A6 */	mflr r0
/* 8033F564 0033B1C4  90 01 00 24 */	stw r0, 0x24(r1)
/* 8033F568 0033B1C8  39 61 00 20 */	addi r11, r1, 0x20
/* 8033F56C 0033B1CC  4B E8 7B BD */	bl _savegpr_27
/* 8033F570 0033B1D0  7C 9C 23 78 */	mr r28, r4
/* 8033F574 0033B1D4  7C 7B 1B 78 */	mr r27, r3
/* 8033F578 0033B1D8  7C A4 2B 78 */	mr r4, r5
/* 8033F57C 0033B1DC  7C C5 33 78 */	mr r5, r6
/* 8033F580 0033B1E0  7C FD 3B 78 */	mr r29, r7
/* 8033F584 0033B1E4  7D 1E 43 78 */	mr r30, r8
/* 8033F588 0033B1E8  7D 3F 4B 78 */	mr r31, r9
/* 8033F58C 0033B1EC  7F 83 E3 78 */	mr r3, r28
/* 8033F590 0033B1F0  38 C0 00 00 */	li r6, 0
/* 8033F594 0033B1F4  4B FF 88 CD */	bl send
/* 8033F598 0033B1F8  2C 03 FF FF */	cmpwi r3, -1
/* 8033F59C 0033B1FC  40 82 00 80 */	bne lbl_8033F61C
/* 8033F5A0 0033B200  7F 83 E3 78 */	mr r3, r28
/* 8033F5A4 0033B204  4B FF 8A 05 */	bl GOAGetLastError
/* 8033F5A8 0033B208  2C 03 FF FA */	cmpwi r3, -6
/* 8033F5AC 0033B20C  41 82 00 60 */	beq lbl_8033F60C
/* 8033F5B0 0033B210  2C 03 FF E6 */	cmpwi r3, -26
/* 8033F5B4 0033B214  41 82 00 58 */	beq lbl_8033F60C
/* 8033F5B8 0033B218  2C 03 FF B4 */	cmpwi r3, -76
/* 8033F5BC 0033B21C  41 82 00 50 */	beq lbl_8033F60C
/* 8033F5C0 0033B220  88 1F 00 00 */	lbz r0, 0(r31)
/* 8033F5C4 0033B224  2C 00 00 50 */	cmpwi r0, 0x50
/* 8033F5C8 0033B228  40 82 00 18 */	bne lbl_8033F5E0
/* 8033F5CC 0033B22C  88 1F 00 01 */	lbz r0, 1(r31)
/* 8033F5D0 0033B230  2C 00 00 52 */	cmpwi r0, 0x52
/* 8033F5D4 0033B234  40 82 00 0C */	bne lbl_8033F5E0
/* 8033F5D8 0033B238  38 60 00 03 */	li r3, 3
/* 8033F5DC 0033B23C  48 00 00 6C */	b lbl_8033F648
lbl_8033F5E0:
/* 8033F5E0 0033B240  3C A0 80 45 */	lis r5, lbl_8044A7B8@ha
/* 8033F5E4 0033B244  7F 63 DB 78 */	mr r3, r27
/* 8033F5E8 0033B248  38 A5 A7 B8 */	addi r5, r5, lbl_8044A7B8@l
/* 8033F5EC 0033B24C  38 80 00 05 */	li r4, 5
/* 8033F5F0 0033B250  48 00 8E 19 */	bl gpiSetError
/* 8033F5F4 0033B254  7F 63 DB 78 */	mr r3, r27
/* 8033F5F8 0033B258  38 80 00 03 */	li r4, 3
/* 8033F5FC 0033B25C  38 A0 00 00 */	li r5, 0
/* 8033F600 0033B260  48 00 06 69 */	bl gpiCallErrorCallback
/* 8033F604 0033B264  38 60 00 03 */	li r3, 3
/* 8033F608 0033B268  48 00 00 40 */	b lbl_8033F648
lbl_8033F60C:
/* 8033F60C 0033B26C  38 00 00 00 */	li r0, 0
/* 8033F610 0033B270  90 1E 00 00 */	stw r0, 0(r30)
/* 8033F614 0033B274  90 1D 00 00 */	stw r0, 0(r29)
/* 8033F618 0033B278  48 00 00 2C */	b lbl_8033F644
lbl_8033F61C:
/* 8033F61C 0033B27C  2C 03 00 00 */	cmpwi r3, 0
/* 8033F620 0033B280  40 82 00 18 */	bne lbl_8033F638
/* 8033F624 0033B284  38 60 00 00 */	li r3, 0
/* 8033F628 0033B288  38 00 00 01 */	li r0, 1
/* 8033F62C 0033B28C  90 7E 00 00 */	stw r3, 0(r30)
/* 8033F630 0033B290  90 1D 00 00 */	stw r0, 0(r29)
/* 8033F634 0033B294  48 00 00 10 */	b lbl_8033F644
lbl_8033F638:
/* 8033F638 0033B298  90 7E 00 00 */	stw r3, 0(r30)
/* 8033F63C 0033B29C  38 00 00 00 */	li r0, 0
/* 8033F640 0033B2A0  90 1D 00 00 */	stw r0, 0(r29)
lbl_8033F644:
/* 8033F644 0033B2A4  38 60 00 00 */	li r3, 0
lbl_8033F648:
/* 8033F648 0033B2A8  39 61 00 20 */	addi r11, r1, 0x20
/* 8033F64C 0033B2AC  4B E8 7B 29 */	bl _restgpr_27
/* 8033F650 0033B2B0  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8033F654 0033B2B4  7C 08 03 A6 */	mtlr r0
/* 8033F658 0033B2B8  38 21 00 20 */	addi r1, r1, 0x20
/* 8033F65C 0033B2BC  4E 80 00 20 */	blr

.global gpiSendOrBufferChar
gpiSendOrBufferChar:
/* 8033F660 0033B2C0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8033F664 0033B2C4  7C 08 02 A6 */	mflr r0
/* 8033F668 0033B2C8  90 01 00 24 */	stw r0, 0x24(r1)
/* 8033F66C 0033B2CC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8033F670 0033B2D0  7C 9F 23 78 */	mr r31, r4
/* 8033F674 0033B2D4  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8033F678 0033B2D8  7C 7E 1B 78 */	mr r30, r3
/* 8033F67C 0033B2DC  98 A1 00 08 */	stb r5, 8(r1)
/* 8033F680 0033B2E0  80 64 00 38 */	lwz r3, 0x38(r4)
/* 8033F684 0033B2E4  80 04 00 34 */	lwz r0, 0x34(r4)
/* 8033F688 0033B2E8  7C 03 00 51 */	subf. r0, r3, r0
/* 8033F68C 0033B2EC  40 82 00 54 */	bne lbl_8033F6E0
/* 8033F690 0033B2F0  80 64 00 3C */	lwz r3, 0x3c(r4)
/* 8033F694 0033B2F4  4B FF 68 55 */	bl ArrayLength
/* 8033F698 0033B2F8  2C 03 00 00 */	cmpwi r3, 0
/* 8033F69C 0033B2FC  40 82 00 44 */	bne lbl_8033F6E0
/* 8033F6A0 0033B300  80 9F 00 08 */	lwz r4, 8(r31)
/* 8033F6A4 0033B304  7F C3 F3 78 */	mr r3, r30
/* 8033F6A8 0033B308  38 A1 00 08 */	addi r5, r1, 8
/* 8033F6AC 0033B30C  38 E1 00 10 */	addi r7, r1, 0x10
/* 8033F6B0 0033B310  39 01 00 0C */	addi r8, r1, 0xc
/* 8033F6B4 0033B314  38 C0 00 01 */	li r6, 1
/* 8033F6B8 0033B318  39 2D 8F DC */	addi r9, r13, lbl_8063E29C-_SDA_BASE_
/* 8033F6BC 0033B31C  4B FF FE A1 */	bl gpiSendData
/* 8033F6C0 0033B320  2C 03 00 00 */	cmpwi r3, 0
/* 8033F6C4 0033B324  41 82 00 08 */	beq lbl_8033F6CC
/* 8033F6C8 0033B328  48 00 00 2C */	b lbl_8033F6F4
lbl_8033F6CC:
/* 8033F6CC 0033B32C  80 01 00 0C */	lwz r0, 0xc(r1)
/* 8033F6D0 0033B330  2C 00 00 00 */	cmpwi r0, 0
/* 8033F6D4 0033B334  41 82 00 0C */	beq lbl_8033F6E0
/* 8033F6D8 0033B338  38 60 00 00 */	li r3, 0
/* 8033F6DC 0033B33C  48 00 00 18 */	b lbl_8033F6F4
lbl_8033F6E0:
/* 8033F6E0 0033B340  88 01 00 08 */	lbz r0, 8(r1)
/* 8033F6E4 0033B344  7F C3 F3 78 */	mr r3, r30
/* 8033F6E8 0033B348  38 9F 00 2C */	addi r4, r31, 0x2c
/* 8033F6EC 0033B34C  7C 05 07 74 */	extsb r5, r0
/* 8033F6F0 0033B350  4B FF FC 2D */	bl gpiAppendCharToBuffer
lbl_8033F6F4:
/* 8033F6F4 0033B354  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8033F6F8 0033B358  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8033F6FC 0033B35C  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8033F700 0033B360  7C 08 03 A6 */	mtlr r0
/* 8033F704 0033B364  38 21 00 20 */	addi r1, r1, 0x20
/* 8033F708 0033B368  4E 80 00 20 */	blr

.global gpiSendOrBufferStringLen
gpiSendOrBufferStringLen:
/* 8033F70C 0033B36C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8033F710 0033B370  7C 08 02 A6 */	mflr r0
/* 8033F714 0033B374  90 01 00 34 */	stw r0, 0x34(r1)
/* 8033F718 0033B378  39 61 00 30 */	addi r11, r1, 0x30
/* 8033F71C 0033B37C  4B E8 7A 0D */	bl _savegpr_27
/* 8033F720 0033B380  2C 06 00 00 */	cmpwi r6, 0
/* 8033F724 0033B384  7C DE 33 78 */	mr r30, r6
/* 8033F728 0033B388  7C 7B 1B 78 */	mr r27, r3
/* 8033F72C 0033B38C  7C 9C 23 78 */	mr r28, r4
/* 8033F730 0033B390  7C BD 2B 78 */	mr r29, r5
/* 8033F734 0033B394  3B E0 00 00 */	li r31, 0
/* 8033F738 0033B398  40 82 00 0C */	bne lbl_8033F744
/* 8033F73C 0033B39C  38 60 00 00 */	li r3, 0
/* 8033F740 0033B3A0  48 00 00 A0 */	b lbl_8033F7E0
lbl_8033F744:
/* 8033F744 0033B3A4  80 64 00 38 */	lwz r3, 0x38(r4)
/* 8033F748 0033B3A8  80 04 00 34 */	lwz r0, 0x34(r4)
/* 8033F74C 0033B3AC  7C 03 00 51 */	subf. r0, r3, r0
/* 8033F750 0033B3B0  40 82 00 64 */	bne lbl_8033F7B4
/* 8033F754 0033B3B4  80 64 00 3C */	lwz r3, 0x3c(r4)
/* 8033F758 0033B3B8  4B FF 67 91 */	bl ArrayLength
/* 8033F75C 0033B3BC  2C 03 00 00 */	cmpwi r3, 0
/* 8033F760 0033B3C0  40 82 00 54 */	bne lbl_8033F7B4
lbl_8033F764:
/* 8033F764 0033B3C4  80 9C 00 08 */	lwz r4, 8(r28)
/* 8033F768 0033B3C8  7F 63 DB 78 */	mr r3, r27
/* 8033F76C 0033B3CC  7F C6 F3 78 */	mr r6, r30
/* 8033F770 0033B3D0  7C BD FA 14 */	add r5, r29, r31
/* 8033F774 0033B3D4  38 E1 00 0C */	addi r7, r1, 0xc
/* 8033F778 0033B3D8  39 01 00 08 */	addi r8, r1, 8
/* 8033F77C 0033B3DC  39 2D 8F DC */	addi r9, r13, lbl_8063E29C-_SDA_BASE_
/* 8033F780 0033B3E0  4B FF FD DD */	bl gpiSendData
/* 8033F784 0033B3E4  2C 03 00 00 */	cmpwi r3, 0
/* 8033F788 0033B3E8  41 82 00 08 */	beq lbl_8033F790
/* 8033F78C 0033B3EC  48 00 00 54 */	b lbl_8033F7E0
lbl_8033F790:
/* 8033F790 0033B3F0  80 01 00 08 */	lwz r0, 8(r1)
/* 8033F794 0033B3F4  2C 00 00 00 */	cmpwi r0, 0
/* 8033F798 0033B3F8  41 82 00 0C */	beq lbl_8033F7A4
/* 8033F79C 0033B3FC  7F FF 02 14 */	add r31, r31, r0
/* 8033F7A0 0033B400  7F C0 F0 50 */	subf r30, r0, r30
lbl_8033F7A4:
/* 8033F7A4 0033B404  2C 00 00 00 */	cmpwi r0, 0
/* 8033F7A8 0033B408  41 82 00 0C */	beq lbl_8033F7B4
/* 8033F7AC 0033B40C  2C 1E 00 00 */	cmpwi r30, 0
/* 8033F7B0 0033B410  40 82 FF B4 */	bne lbl_8033F764
lbl_8033F7B4:
/* 8033F7B4 0033B414  2C 1E 00 00 */	cmpwi r30, 0
/* 8033F7B8 0033B418  41 82 00 24 */	beq lbl_8033F7DC
/* 8033F7BC 0033B41C  7F 63 DB 78 */	mr r3, r27
/* 8033F7C0 0033B420  7F C6 F3 78 */	mr r6, r30
/* 8033F7C4 0033B424  38 9C 00 2C */	addi r4, r28, 0x2c
/* 8033F7C8 0033B428  7C BD FA 14 */	add r5, r29, r31
/* 8033F7CC 0033B42C  4B FF FB F9 */	bl gpiAppendStringToBufferLen
/* 8033F7D0 0033B430  2C 03 00 00 */	cmpwi r3, 0
/* 8033F7D4 0033B434  41 82 00 08 */	beq lbl_8033F7DC
/* 8033F7D8 0033B438  48 00 00 08 */	b lbl_8033F7E0
lbl_8033F7DC:
/* 8033F7DC 0033B43C  38 60 00 00 */	li r3, 0
lbl_8033F7E0:
/* 8033F7E0 0033B440  39 61 00 30 */	addi r11, r1, 0x30
/* 8033F7E4 0033B444  4B E8 79 91 */	bl _restgpr_27
/* 8033F7E8 0033B448  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8033F7EC 0033B44C  7C 08 03 A6 */	mtlr r0
/* 8033F7F0 0033B450  38 21 00 30 */	addi r1, r1, 0x30
/* 8033F7F4 0033B454  4E 80 00 20 */	blr

.global func_8033F7F8
func_8033F7F8:
/* 8033F7F8 0033B458  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8033F7FC 0033B45C  7C 08 02 A6 */	mflr r0
/* 8033F800 0033B460  90 01 00 24 */	stw r0, 0x24(r1)
/* 8033F804 0033B464  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8033F808 0033B468  7C BF 2B 78 */	mr r31, r5
/* 8033F80C 0033B46C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8033F810 0033B470  7C 9E 23 78 */	mr r30, r4
/* 8033F814 0033B474  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8033F818 0033B478  7C 7D 1B 78 */	mr r29, r3
/* 8033F81C 0033B47C  7F E3 FB 78 */	mr r3, r31
/* 8033F820 0033B480  4B E8 73 45 */	bl strlen
/* 8033F824 0033B484  7C 66 1B 78 */	mr r6, r3
/* 8033F828 0033B488  7F A3 EB 78 */	mr r3, r29
/* 8033F82C 0033B48C  7F C4 F3 78 */	mr r4, r30
/* 8033F830 0033B490  7F E5 FB 78 */	mr r5, r31
/* 8033F834 0033B494  4B FF FE D9 */	bl gpiSendOrBufferStringLen
/* 8033F838 0033B498  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8033F83C 0033B49C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8033F840 0033B4A0  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8033F844 0033B4A4  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8033F848 0033B4A8  7C 08 03 A6 */	mtlr r0
/* 8033F84C 0033B4AC  38 21 00 20 */	addi r1, r1, 0x20
/* 8033F850 0033B4B0  4E 80 00 20 */	blr

.global gpiRecvToBuffer
gpiRecvToBuffer:
/* 8033F854 0033B4B4  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 8033F858 0033B4B8  7C 08 02 A6 */	mflr r0
/* 8033F85C 0033B4BC  90 01 00 44 */	stw r0, 0x44(r1)
/* 8033F860 0033B4C0  39 61 00 40 */	addi r11, r1, 0x40
/* 8033F864 0033B4C4  4B E8 78 A5 */	bl _savegpr_19
/* 8033F868 0033B4C8  83 85 00 00 */	lwz r28, 0(r5)
/* 8033F86C 0033B4CC  7C 73 1B 78 */	mr r19, r3
/* 8033F870 0033B4D0  83 65 00 08 */	lwz r27, 8(r5)
/* 8033F874 0033B4D4  7C 94 23 78 */	mr r20, r4
/* 8033F878 0033B4D8  83 45 00 04 */	lwz r26, 4(r5)
/* 8033F87C 0033B4DC  7C B5 2B 78 */	mr r21, r5
/* 8033F880 0033B4E0  7C D6 33 78 */	mr r22, r6
/* 8033F884 0033B4E4  7C F7 3B 78 */	mr r23, r7
/* 8033F888 0033B4E8  3B 20 00 00 */	li r25, 0
/* 8033F88C 0033B4EC  3B 00 00 00 */	li r24, 0
/* 8033F890 0033B4F0  3B C0 00 00 */	li r30, 0
/* 8033F894 0033B4F4  3F E0 00 02 */	lis r31, 2
lbl_8033F898:
/* 8033F898 0033B4F8  38 9B 40 00 */	addi r4, r27, 0x4000
/* 8033F89C 0033B4FC  7C 04 D0 00 */	cmpw r4, r26
/* 8033F8A0 0033B500  40 81 00 38 */	ble lbl_8033F8D8
/* 8033F8A4 0033B504  7C 9A 23 78 */	mr r26, r4
/* 8033F8A8 0033B508  7F 83 E3 78 */	mr r3, r28
/* 8033F8AC 0033B50C  38 84 00 01 */	addi r4, r4, 1
/* 8033F8B0 0033B510  4B FF 9A 75 */	bl gsirealloc
/* 8033F8B4 0033B514  2C 03 00 00 */	cmpwi r3, 0
/* 8033F8B8 0033B518  7C 7C 1B 78 */	mr r28, r3
/* 8033F8BC 0033B51C  40 82 00 1C */	bne lbl_8033F8D8
/* 8033F8C0 0033B520  3C 80 80 45 */	lis r4, lbl_8044A7A8@ha
/* 8033F8C4 0033B524  7E 63 9B 78 */	mr r3, r19
/* 8033F8C8 0033B528  38 84 A7 A8 */	addi r4, r4, lbl_8044A7A8@l
/* 8033F8CC 0033B52C  48 00 8B 8D */	bl gpiSetErrorString
/* 8033F8D0 0033B530  38 60 00 01 */	li r3, 1
/* 8033F8D4 0033B534  48 00 00 A8 */	b lbl_8033F97C
lbl_8033F8D8:
/* 8033F8D8 0033B538  7E 83 A3 78 */	mr r3, r20
/* 8033F8DC 0033B53C  7C 9C DA 14 */	add r4, r28, r27
/* 8033F8E0 0033B540  7C BB D0 50 */	subf r5, r27, r26
/* 8033F8E4 0033B544  38 C0 00 00 */	li r6, 0
/* 8033F8E8 0033B548  4B FF 84 E9 */	bl recv
/* 8033F8EC 0033B54C  2C 03 FF FF */	cmpwi r3, -1
/* 8033F8F0 0033B550  7C 7D 1B 78 */	mr r29, r3
/* 8033F8F4 0033B554  40 82 00 3C */	bne lbl_8033F930
/* 8033F8F8 0033B558  7E 83 A3 78 */	mr r3, r20
/* 8033F8FC 0033B55C  4B FF 86 AD */	bl GOAGetLastError
/* 8033F900 0033B560  2C 03 FF FA */	cmpwi r3, -6
/* 8033F904 0033B564  41 82 00 44 */	beq lbl_8033F948
/* 8033F908 0033B568  2C 03 FF E6 */	cmpwi r3, -26
/* 8033F90C 0033B56C  41 82 00 3C */	beq lbl_8033F948
/* 8033F910 0033B570  2C 03 FF B4 */	cmpwi r3, -76
/* 8033F914 0033B574  41 82 00 34 */	beq lbl_8033F948
/* 8033F918 0033B578  3C 80 80 45 */	lis r4, lbl_8044A7E0@ha
/* 8033F91C 0033B57C  7E 63 9B 78 */	mr r3, r19
/* 8033F920 0033B580  38 84 A7 E0 */	addi r4, r4, lbl_8044A7E0@l
/* 8033F924 0033B584  48 00 8B 35 */	bl gpiSetErrorString
/* 8033F928 0033B588  38 60 00 03 */	li r3, 3
/* 8033F92C 0033B58C  48 00 00 50 */	b lbl_8033F97C
lbl_8033F930:
/* 8033F930 0033B590  2C 03 00 00 */	cmpwi r3, 0
/* 8033F934 0033B594  40 82 00 0C */	bne lbl_8033F940
/* 8033F938 0033B598  3B 00 00 01 */	li r24, 1
/* 8033F93C 0033B59C  48 00 00 0C */	b lbl_8033F948
lbl_8033F940:
/* 8033F940 0033B5A0  7F 7B 1A 14 */	add r27, r27, r3
/* 8033F944 0033B5A4  7F 39 1A 14 */	add r25, r25, r3
lbl_8033F948:
/* 8033F948 0033B5A8  2C 1D 00 00 */	cmpwi r29, 0
/* 8033F94C 0033B5AC  7F DC D9 AE */	stbx r30, r28, r27
/* 8033F950 0033B5B0  41 80 00 14 */	blt lbl_8033F964
/* 8033F954 0033B5B4  2C 18 00 00 */	cmpwi r24, 0
/* 8033F958 0033B5B8  40 82 00 0C */	bne lbl_8033F964
/* 8033F95C 0033B5BC  7C 19 F8 00 */	cmpw r25, r31
/* 8033F960 0033B5C0  41 80 FF 38 */	blt lbl_8033F898
lbl_8033F964:
/* 8033F964 0033B5C4  93 95 00 00 */	stw r28, 0(r21)
/* 8033F968 0033B5C8  38 60 00 00 */	li r3, 0
/* 8033F96C 0033B5CC  93 75 00 08 */	stw r27, 8(r21)
/* 8033F970 0033B5D0  93 55 00 04 */	stw r26, 4(r21)
/* 8033F974 0033B5D4  93 36 00 00 */	stw r25, 0(r22)
/* 8033F978 0033B5D8  93 17 00 00 */	stw r24, 0(r23)
lbl_8033F97C:
/* 8033F97C 0033B5DC  39 61 00 40 */	addi r11, r1, 0x40
/* 8033F980 0033B5E0  4B E8 77 D5 */	bl _restgpr_19
/* 8033F984 0033B5E4  80 01 00 44 */	lwz r0, 0x44(r1)
/* 8033F988 0033B5E8  7C 08 03 A6 */	mtlr r0
/* 8033F98C 0033B5EC  38 21 00 40 */	addi r1, r1, 0x40
/* 8033F990 0033B5F0  4E 80 00 20 */	blr

.global gpiSendFromBuffer
gpiSendFromBuffer:
/* 8033F994 0033B5F4  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 8033F998 0033B5F8  7C 08 02 A6 */	mflr r0
/* 8033F99C 0033B5FC  90 01 00 44 */	stw r0, 0x44(r1)
/* 8033F9A0 0033B600  39 61 00 40 */	addi r11, r1, 0x40
/* 8033F9A4 0033B604  4B E8 77 6D */	bl _savegpr_21
/* 8033F9A8 0033B608  83 65 00 08 */	lwz r27, 8(r5)
/* 8033F9AC 0033B60C  7C 75 1B 78 */	mr r21, r3
/* 8033F9B0 0033B610  83 85 00 0C */	lwz r28, 0xc(r5)
/* 8033F9B4 0033B614  7C 96 23 78 */	mr r22, r4
/* 8033F9B8 0033B618  83 A5 00 00 */	lwz r29, 0(r5)
/* 8033F9BC 0033B61C  7C B7 2B 78 */	mr r23, r5
/* 8033F9C0 0033B620  7F DC D8 51 */	subf. r30, r28, r27
/* 8033F9C4 0033B624  7C D8 33 78 */	mr r24, r6
/* 8033F9C8 0033B628  7C F9 3B 78 */	mr r25, r7
/* 8033F9CC 0033B62C  7D 1A 43 78 */	mr r26, r8
/* 8033F9D0 0033B630  3B E0 00 00 */	li r31, 0
/* 8033F9D4 0033B634  40 82 00 0C */	bne lbl_8033F9E0
/* 8033F9D8 0033B638  38 60 00 00 */	li r3, 0
/* 8033F9DC 0033B63C  48 00 00 A0 */	b lbl_8033FA7C
lbl_8033F9E0:
/* 8033F9E0 0033B640  7C 1C FA 14 */	add r0, r28, r31
/* 8033F9E4 0033B644  7E A3 AB 78 */	mr r3, r21
/* 8033F9E8 0033B648  7E C4 B3 78 */	mr r4, r22
/* 8033F9EC 0033B64C  7F C6 F3 78 */	mr r6, r30
/* 8033F9F0 0033B650  7F 49 D3 78 */	mr r9, r26
/* 8033F9F4 0033B654  7C BD 02 14 */	add r5, r29, r0
/* 8033F9F8 0033B658  38 E1 00 0C */	addi r7, r1, 0xc
/* 8033F9FC 0033B65C  39 01 00 08 */	addi r8, r1, 8
/* 8033FA00 0033B660  4B FF FB 5D */	bl gpiSendData
/* 8033FA04 0033B664  2C 03 00 00 */	cmpwi r3, 0
/* 8033FA08 0033B668  41 82 00 08 */	beq lbl_8033FA10
/* 8033FA0C 0033B66C  48 00 00 70 */	b lbl_8033FA7C
lbl_8033FA10:
/* 8033FA10 0033B670  80 01 00 08 */	lwz r0, 8(r1)
/* 8033FA14 0033B674  2C 00 00 00 */	cmpwi r0, 0
/* 8033FA18 0033B678  41 82 00 0C */	beq lbl_8033FA24
/* 8033FA1C 0033B67C  7F FF 02 14 */	add r31, r31, r0
/* 8033FA20 0033B680  7F C0 F0 50 */	subf r30, r0, r30
lbl_8033FA24:
/* 8033FA24 0033B684  2C 00 00 00 */	cmpwi r0, 0
/* 8033FA28 0033B688  41 82 00 0C */	beq lbl_8033FA34
/* 8033FA2C 0033B68C  2C 1E 00 00 */	cmpwi r30, 0
/* 8033FA30 0033B690  40 82 FF B0 */	bne lbl_8033F9E0
lbl_8033FA34:
/* 8033FA34 0033B694  2C 19 00 00 */	cmpwi r25, 0
/* 8033FA38 0033B698  41 82 00 24 */	beq lbl_8033FA5C
/* 8033FA3C 0033B69C  2C 1F 00 00 */	cmpwi r31, 0
/* 8033FA40 0033B6A0  40 81 00 20 */	ble lbl_8033FA60
/* 8033FA44 0033B6A4  7F A3 EB 78 */	mr r3, r29
/* 8033FA48 0033B6A8  7C 9D FA 14 */	add r4, r29, r31
/* 8033FA4C 0033B6AC  38 BE 00 01 */	addi r5, r30, 1
/* 8033FA50 0033B6B0  4B E8 A8 25 */	bl memmove
/* 8033FA54 0033B6B4  7F 7F D8 50 */	subf r27, r31, r27
/* 8033FA58 0033B6B8  48 00 00 08 */	b lbl_8033FA60
lbl_8033FA5C:
/* 8033FA5C 0033B6BC  7F 9C FA 14 */	add r28, r28, r31
lbl_8033FA60:
/* 8033FA60 0033B6C0  2C 18 00 00 */	cmpwi r24, 0
/* 8033FA64 0033B6C4  93 77 00 08 */	stw r27, 8(r23)
/* 8033FA68 0033B6C8  93 97 00 0C */	stw r28, 0xc(r23)
/* 8033FA6C 0033B6CC  41 82 00 0C */	beq lbl_8033FA78
/* 8033FA70 0033B6D0  80 01 00 0C */	lwz r0, 0xc(r1)
/* 8033FA74 0033B6D4  90 18 00 00 */	stw r0, 0(r24)
lbl_8033FA78:
/* 8033FA78 0033B6D8  38 60 00 00 */	li r3, 0
lbl_8033FA7C:
/* 8033FA7C 0033B6DC  39 61 00 40 */	addi r11, r1, 0x40
/* 8033FA80 0033B6E0  4B E8 76 DD */	bl _restgpr_21
/* 8033FA84 0033B6E4  80 01 00 44 */	lwz r0, 0x44(r1)
/* 8033FA88 0033B6E8  7C 08 03 A6 */	mtlr r0
/* 8033FA8C 0033B6EC  38 21 00 40 */	addi r1, r1, 0x40
/* 8033FA90 0033B6F0  4E 80 00 20 */	blr

.global gpiReadMessageFromBuffer
gpiReadMessageFromBuffer:
/* 8033FA94 0033B6F4  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8033FA98 0033B6F8  7C 08 02 A6 */	mflr r0
/* 8033FA9C 0033B6FC  90 01 00 34 */	stw r0, 0x34(r1)
/* 8033FAA0 0033B700  39 61 00 30 */	addi r11, r1, 0x30
/* 8033FAA4 0033B704  4B E8 76 81 */	bl _savegpr_26
/* 8033FAA8 0033B708  3B A0 00 00 */	li r29, 0
/* 8033FAAC 0033B70C  7C 9F 23 78 */	mr r31, r4
/* 8033FAB0 0033B710  93 A5 00 00 */	stw r29, 0(r5)
/* 8033FAB4 0033B714  7C BA 2B 78 */	mr r26, r5
/* 8033FAB8 0033B718  7C DB 33 78 */	mr r27, r6
/* 8033FABC 0033B71C  7C FC 3B 78 */	mr r28, r7
/* 8033FAC0 0033B720  80 04 00 08 */	lwz r0, 8(r4)
/* 8033FAC4 0033B724  2C 00 00 05 */	cmpwi r0, 5
/* 8033FAC8 0033B728  40 80 00 0C */	bge lbl_8033FAD4
/* 8033FACC 0033B72C  38 60 00 00 */	li r3, 0
/* 8033FAD0 0033B730  48 00 01 00 */	b lbl_8033FBD0
lbl_8033FAD4:
/* 8033FAD4 0033B734  80 64 00 00 */	lwz r3, 0(r4)
/* 8033FAD8 0033B738  38 80 00 0A */	li r4, 0xa
/* 8033FADC 0033B73C  4B E8 EA CD */	bl strchr
/* 8033FAE0 0033B740  2C 03 00 00 */	cmpwi r3, 0
/* 8033FAE4 0033B744  7C 7E 1B 78 */	mr r30, r3
/* 8033FAE8 0033B748  41 82 00 E4 */	beq lbl_8033FBCC
/* 8033FAEC 0033B74C  38 8D 8F E0 */	addi r4, r13, lbl_8063E2A0-_SDA_BASE_
/* 8033FAF0 0033B750  38 A0 00 05 */	li r5, 5
/* 8033FAF4 0033B754  38 63 FF FB */	addi r3, r3, -5
/* 8033FAF8 0033B758  4B E8 EA 71 */	bl strncmp
/* 8033FAFC 0033B75C  2C 03 00 00 */	cmpwi r3, 0
/* 8033FB00 0033B760  41 82 00 0C */	beq lbl_8033FB0C
/* 8033FB04 0033B764  38 60 00 03 */	li r3, 3
/* 8033FB08 0033B768  48 00 00 C8 */	b lbl_8033FBD0
lbl_8033FB0C:
/* 8033FB0C 0033B76C  9B BE 00 00 */	stb r29, 0(r30)
/* 8033FB10 0033B770  38 A1 00 08 */	addi r5, r1, 8
/* 8033FB14 0033B774  38 8D 8F E8 */	addi r4, r13, lbl_8063E2A8-_SDA_BASE_
/* 8033FB18 0033B778  38 C0 00 10 */	li r6, 0x10
/* 8033FB1C 0033B77C  80 7F 00 00 */	lwz r3, 0(r31)
/* 8033FB20 0033B780  48 00 85 6D */	bl gpiValueForKey
/* 8033FB24 0033B784  2C 03 00 00 */	cmpwi r3, 0
/* 8033FB28 0033B788  40 82 00 0C */	bne lbl_8033FB34
/* 8033FB2C 0033B78C  38 60 00 03 */	li r3, 3
/* 8033FB30 0033B790  48 00 00 A0 */	b lbl_8033FBD0
lbl_8033FB34:
/* 8033FB34 0033B794  38 61 00 08 */	addi r3, r1, 8
/* 8033FB38 0033B798  4B E9 0B D5 */	bl atoi
/* 8033FB3C 0033B79C  90 7B 00 00 */	stw r3, 0(r27)
/* 8033FB40 0033B7A0  38 A1 00 08 */	addi r5, r1, 8
/* 8033FB44 0033B7A4  38 8D 8F EC */	addi r4, r13, lbl_8063E2AC-_SDA_BASE_
/* 8033FB48 0033B7A8  38 C0 00 10 */	li r6, 0x10
/* 8033FB4C 0033B7AC  80 7F 00 00 */	lwz r3, 0(r31)
/* 8033FB50 0033B7B0  48 00 85 3D */	bl gpiValueForKey
/* 8033FB54 0033B7B4  2C 03 00 00 */	cmpwi r3, 0
/* 8033FB58 0033B7B8  40 82 00 0C */	bne lbl_8033FB64
/* 8033FB5C 0033B7BC  38 60 00 03 */	li r3, 3
/* 8033FB60 0033B7C0  48 00 00 70 */	b lbl_8033FBD0
lbl_8033FB64:
/* 8033FB64 0033B7C4  38 61 00 08 */	addi r3, r1, 8
/* 8033FB68 0033B7C8  4B E9 0B A5 */	bl atoi
/* 8033FB6C 0033B7CC  80 1F 00 00 */	lwz r0, 0(r31)
/* 8033FB70 0033B7D0  80 BF 00 08 */	lwz r5, 8(r31)
/* 8033FB74 0033B7D4  7C 00 F0 50 */	subf r0, r0, r30
/* 8033FB78 0033B7D8  7C 83 02 14 */	add r4, r3, r0
/* 8033FB7C 0033B7DC  38 04 00 01 */	addi r0, r4, 1
/* 8033FB80 0033B7E0  7C 05 00 00 */	cmpw r5, r0
/* 8033FB84 0033B7E4  40 81 00 40 */	ble lbl_8033FBC4
/* 8033FB88 0033B7E8  7C 83 F2 14 */	add r4, r3, r30
/* 8033FB8C 0033B7EC  88 04 00 01 */	lbz r0, 1(r4)
/* 8033FB90 0033B7F0  7C 00 07 75 */	extsb. r0, r0
/* 8033FB94 0033B7F4  41 82 00 0C */	beq lbl_8033FBA0
/* 8033FB98 0033B7F8  38 60 00 03 */	li r3, 3
/* 8033FB9C 0033B7FC  48 00 00 34 */	b lbl_8033FBD0
lbl_8033FBA0:
/* 8033FBA0 0033B800  38 1E 00 01 */	addi r0, r30, 1
/* 8033FBA4 0033B804  90 1A 00 00 */	stw r0, 0(r26)
/* 8033FBA8 0033B808  90 7C 00 00 */	stw r3, 0(r28)
/* 8033FBAC 0033B80C  80 1F 00 00 */	lwz r0, 0(r31)
/* 8033FBB0 0033B810  7C 00 F0 50 */	subf r0, r0, r30
/* 8033FBB4 0033B814  7C 63 02 14 */	add r3, r3, r0
/* 8033FBB8 0033B818  38 03 00 02 */	addi r0, r3, 2
/* 8033FBBC 0033B81C  90 1F 00 0C */	stw r0, 0xc(r31)
/* 8033FBC0 0033B820  48 00 00 0C */	b lbl_8033FBCC
lbl_8033FBC4:
/* 8033FBC4 0033B824  38 00 00 0A */	li r0, 0xa
/* 8033FBC8 0033B828  98 1E 00 00 */	stb r0, 0(r30)
lbl_8033FBCC:
/* 8033FBCC 0033B82C  38 60 00 00 */	li r3, 0
lbl_8033FBD0:
/* 8033FBD0 0033B830  39 61 00 30 */	addi r11, r1, 0x30
/* 8033FBD4 0033B834  4B E8 75 9D */	bl _restgpr_26
/* 8033FBD8 0033B838  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8033FBDC 0033B83C  7C 08 03 A6 */	mtlr r0
/* 8033FBE0 0033B840  38 21 00 30 */	addi r1, r1, 0x30
/* 8033FBE4 0033B844  4E 80 00 20 */	blr

.global gpiClipBufferToPosition
gpiClipBufferToPosition:
/* 8033FBE8 0033B848  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8033FBEC 0033B84C  7C 08 02 A6 */	mflr r0
/* 8033FBF0 0033B850  2C 04 00 00 */	cmpwi r4, 0
/* 8033FBF4 0033B854  90 01 00 14 */	stw r0, 0x14(r1)
/* 8033FBF8 0033B858  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8033FBFC 0033B85C  7C 9F 23 78 */	mr r31, r4
/* 8033FC00 0033B860  41 82 00 1C */	beq lbl_8033FC1C
/* 8033FC04 0033B864  80 64 00 00 */	lwz r3, 0(r4)
/* 8033FC08 0033B868  2C 03 00 00 */	cmpwi r3, 0
/* 8033FC0C 0033B86C  41 82 00 10 */	beq lbl_8033FC1C
/* 8033FC10 0033B870  80 C4 00 0C */	lwz r6, 0xc(r4)
/* 8033FC14 0033B874  2C 06 00 00 */	cmpwi r6, 0
/* 8033FC18 0033B878  40 82 00 0C */	bne lbl_8033FC24
lbl_8033FC1C:
/* 8033FC1C 0033B87C  38 60 00 00 */	li r3, 0
/* 8033FC20 0033B880  48 00 00 34 */	b lbl_8033FC54
lbl_8033FC24:
/* 8033FC24 0033B884  80 04 00 08 */	lwz r0, 8(r4)
/* 8033FC28 0033B888  7C A6 00 51 */	subf. r5, r6, r0
/* 8033FC2C 0033B88C  90 A4 00 08 */	stw r5, 8(r4)
/* 8033FC30 0033B890  41 82 00 0C */	beq lbl_8033FC3C
/* 8033FC34 0033B894  7C 83 32 14 */	add r4, r3, r6
/* 8033FC38 0033B898  4B E8 A6 3D */	bl memmove
lbl_8033FC3C:
/* 8033FC3C 0033B89C  80 9F 00 00 */	lwz r4, 0(r31)
/* 8033FC40 0033B8A0  38 A0 00 00 */	li r5, 0
/* 8033FC44 0033B8A4  80 1F 00 08 */	lwz r0, 8(r31)
/* 8033FC48 0033B8A8  38 60 00 00 */	li r3, 0
/* 8033FC4C 0033B8AC  7C A4 01 AE */	stbx r5, r4, r0
/* 8033FC50 0033B8B0  90 BF 00 0C */	stw r5, 0xc(r31)
lbl_8033FC54:
/* 8033FC54 0033B8B4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8033FC58 0033B8B8  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8033FC5C 0033B8BC  7C 08 03 A6 */	mtlr r0
/* 8033FC60 0033B8C0  38 21 00 10 */	addi r1, r1, 0x10
/* 8033FC64 0033B8C4  4E 80 00 20 */	blr