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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global gpiProfilesTableHash
gpiProfilesTableHash:
/* 80345554 003411B4 80 63 00 00 */ lwz r3, 0(r3)
/* 80345558 003411B8 7C 03 23 D6 */ divw r0, r3, r4
/* 8034555C 003411BC 7C 00 21 D6 */ mullw r0, r0, r4
/* 80345560 003411C0 7C 60 18 50 */ subf r3, r0, r3
/* 80345564 003411C4 4E 80 00 20 */ blr
.global gpiProfilesTableCompare
gpiProfilesTableCompare:
/* 80345568 003411C8 80 84 00 00 */ lwz r4, 0(r4)
/* 8034556C 003411CC 80 03 00 00 */ lwz r0, 0(r3)
/* 80345570 003411D0 7C 64 00 50 */ subf r3, r4, r0
/* 80345574 003411D4 4E 80 00 20 */ blr
.global gpiProfilesTableFree
gpiProfilesTableFree:
/* 80345578 003411D8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8034557C 003411DC 7C 08 02 A6 */ mflr r0
/* 80345580 003411E0 90 01 00 14 */ stw r0, 0x14(r1)
/* 80345584 003411E4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80345588 003411E8 93 C1 00 08 */ stw r30, 8(r1)
/* 8034558C 003411EC 7C 7E 1B 78 */ mr r30, r3
/* 80345590 003411F0 80 83 00 08 */ lwz r4, 8(r3)
/* 80345594 003411F4 2C 04 00 00 */ cmpwi r4, 0
/* 80345598 003411F8 41 82 00 38 */ beq lbl_803455D0
/* 8034559C 003411FC 80 64 00 08 */ lwz r3, 8(r4)
/* 803455A0 00341200 4B FF 3D 99 */ bl gsifree
/* 803455A4 00341204 80 7E 00 08 */ lwz r3, 8(r30)
/* 803455A8 00341208 3B E0 00 00 */ li r31, 0
/* 803455AC 0034120C 93 E3 00 08 */ stw r31, 8(r3)
/* 803455B0 00341210 80 7E 00 08 */ lwz r3, 8(r30)
/* 803455B4 00341214 80 63 00 0C */ lwz r3, 0xc(r3)
/* 803455B8 00341218 4B FF 3D 81 */ bl gsifree
/* 803455BC 0034121C 80 7E 00 08 */ lwz r3, 8(r30)
/* 803455C0 00341220 93 E3 00 0C */ stw r31, 0xc(r3)
/* 803455C4 00341224 80 7E 00 08 */ lwz r3, 8(r30)
/* 803455C8 00341228 4B FF 3D 71 */ bl gsifree
/* 803455CC 0034122C 93 FE 00 08 */ stw r31, 8(r30)
lbl_803455D0:
/* 803455D0 00341230 7F C3 F3 78 */ mr r3, r30
/* 803455D4 00341234 4B FF E4 BD */ bl gpiFreeInfoCache
/* 803455D8 00341238 80 7E 00 10 */ lwz r3, 0x10(r30)
/* 803455DC 0034123C 4B FF 3D 5D */ bl gsifree
/* 803455E0 00341240 3B E0 00 00 */ li r31, 0
/* 803455E4 00341244 80 7E 00 18 */ lwz r3, 0x18(r30)
/* 803455E8 00341248 93 FE 00 10 */ stw r31, 0x10(r30)
/* 803455EC 0034124C 4B FF 3D 4D */ bl gsifree
/* 803455F0 00341250 93 FE 00 18 */ stw r31, 0x18(r30)
/* 803455F4 00341254 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 803455F8 00341258 83 C1 00 08 */ lwz r30, 8(r1)
/* 803455FC 0034125C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80345600 00341260 7C 08 03 A6 */ mtlr r0
/* 80345604 00341264 38 21 00 10 */ addi r1, r1, 0x10
/* 80345608 00341268 4E 80 00 20 */ blr
.global gpiInitProfiles
gpiInitProfiles:
/* 8034560C 0034126C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80345610 00341270 7C 08 02 A6 */ mflr r0
/* 80345614 00341274 3C A0 80 34 */ lis r5, gpiProfilesTableHash@ha
/* 80345618 00341278 3C C0 80 34 */ lis r6, gpiProfilesTableCompare@ha
/* 8034561C 0034127C 90 01 00 14 */ stw r0, 0x14(r1)
/* 80345620 00341280 3C E0 80 34 */ lis r7, gpiProfilesTableFree@ha
/* 80345624 00341284 38 00 00 00 */ li r0, 0
/* 80345628 00341288 38 A5 55 54 */ addi r5, r5, gpiProfilesTableHash@l
/* 8034562C 0034128C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80345630 00341290 38 C6 55 68 */ addi r6, r6, gpiProfilesTableCompare@l
/* 80345634 00341294 38 E7 55 78 */ addi r7, r7, gpiProfilesTableFree@l
/* 80345638 00341298 38 80 00 20 */ li r4, 0x20
/* 8034563C 0034129C 83 E3 00 00 */ lwz r31, 0(r3)
/* 80345640 003412A0 38 60 00 1C */ li r3, 0x1c
/* 80345644 003412A4 90 1F 04 4C */ stw r0, 0x44c(r31)
/* 80345648 003412A8 90 1F 04 48 */ stw r0, 0x448(r31)
/* 8034564C 003412AC 4B FF 11 C1 */ bl TableNew
/* 80345650 003412B0 7C 03 00 D0 */ neg r0, r3
/* 80345654 003412B4 90 7F 04 44 */ stw r3, 0x444(r31)
/* 80345658 003412B8 7C 00 1B 78 */ or r0, r0, r3
/* 8034565C 003412BC 54 03 0F FE */ srwi r3, r0, 0x1f
/* 80345660 003412C0 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80345664 003412C4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80345668 003412C8 7C 08 03 A6 */ mtlr r0
/* 8034566C 003412CC 38 21 00 10 */ addi r1, r1, 0x10
/* 80345670 003412D0 4E 80 00 20 */ blr
.global gpiProcessNewProfile
gpiProcessNewProfile:
/* 80345674 003412D4 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 80345678 003412D8 7C 08 02 A6 */ mflr r0
/* 8034567C 003412DC 90 01 00 44 */ stw r0, 0x44(r1)
/* 80345680 003412E0 93 E1 00 3C */ stw r31, 0x3c(r1)
/* 80345684 003412E4 7C BF 2B 78 */ mr r31, r5
/* 80345688 003412E8 38 A0 00 01 */ li r5, 1
/* 8034568C 003412EC 93 C1 00 38 */ stw r30, 0x38(r1)
/* 80345690 003412F0 3F C0 80 45 */ lis r30, lbl_8044B070@ha
/* 80345694 003412F4 3B DE B0 70 */ addi r30, r30, lbl_8044B070@l
/* 80345698 003412F8 93 A1 00 34 */ stw r29, 0x34(r1)
/* 8034569C 003412FC 7C 9D 23 78 */ mr r29, r4
/* 803456A0 00341300 7F E4 FB 78 */ mr r4, r31
/* 803456A4 00341304 93 81 00 30 */ stw r28, 0x30(r1)
/* 803456A8 00341308 7C 7C 1B 78 */ mr r28, r3
/* 803456AC 0034130C 48 00 28 E9 */ bl gpiCheckForError
/* 803456B0 00341310 2C 03 00 00 */ cmpwi r3, 0
/* 803456B4 00341314 41 82 00 0C */ beq lbl_803456C0
/* 803456B8 00341318 38 60 00 04 */ li r3, 4
/* 803456BC 0034131C 48 00 01 20 */ b lbl_803457DC
lbl_803456C0:
/* 803456C0 00341320 7F E3 FB 78 */ mr r3, r31
/* 803456C4 00341324 38 8D 91 A8 */ addi r4, r13, lbl_8063E468-_SDA_BASE_
/* 803456C8 00341328 38 A0 00 05 */ li r5, 5
/* 803456CC 0034132C 4B E8 8E 9D */ bl strncmp
/* 803456D0 00341330 2C 03 00 00 */ cmpwi r3, 0
/* 803456D4 00341334 41 82 00 2C */ beq lbl_80345700
/* 803456D8 00341338 7F 83 E3 78 */ mr r3, r28
/* 803456DC 0034133C 38 BE 01 04 */ addi r5, r30, 0x104
/* 803456E0 00341340 38 80 00 01 */ li r4, 1
/* 803456E4 00341344 48 00 2D 25 */ bl gpiSetError
/* 803456E8 00341348 7F 83 E3 78 */ mr r3, r28
/* 803456EC 0034134C 38 80 00 03 */ li r4, 3
/* 803456F0 00341350 38 A0 00 01 */ li r5, 1
/* 803456F4 00341354 4B FF A5 75 */ bl gpiCallErrorCallback
/* 803456F8 00341358 38 60 00 03 */ li r3, 3
/* 803456FC 0034135C 48 00 00 E0 */ b lbl_803457DC
lbl_80345700:
/* 80345700 00341360 7F E3 FB 78 */ mr r3, r31
/* 80345704 00341364 38 9E 01 34 */ addi r4, r30, 0x134
/* 80345708 00341368 38 A1 00 18 */ addi r5, r1, 0x18
/* 8034570C 0034136C 38 C0 00 10 */ li r6, 0x10
/* 80345710 00341370 48 00 29 7D */ bl gpiValueForKey
/* 80345714 00341374 2C 03 00 00 */ cmpwi r3, 0
/* 80345718 00341378 40 82 00 2C */ bne lbl_80345744
/* 8034571C 0034137C 7F 83 E3 78 */ mr r3, r28
/* 80345720 00341380 38 BE 01 04 */ addi r5, r30, 0x104
/* 80345724 00341384 38 80 00 01 */ li r4, 1
/* 80345728 00341388 48 00 2C E1 */ bl gpiSetError
/* 8034572C 0034138C 7F 83 E3 78 */ mr r3, r28
/* 80345730 00341390 38 80 00 03 */ li r4, 3
/* 80345734 00341394 38 A0 00 01 */ li r5, 1
/* 80345738 00341398 4B FF A5 31 */ bl gpiCallErrorCallback
/* 8034573C 0034139C 38 60 00 03 */ li r3, 3
/* 80345740 003413A0 48 00 00 9C */ b lbl_803457DC
lbl_80345744:
/* 80345744 003413A4 38 61 00 18 */ addi r3, r1, 0x18
/* 80345748 003413A8 4B E8 AF C5 */ bl atoi
/* 8034574C 003413AC 80 9D 00 0C */ lwz r4, 0xc(r29)
/* 80345750 003413B0 7C 7F 1B 78 */ mr r31, r3
/* 80345754 003413B4 80 1D 00 10 */ lwz r0, 0x10(r29)
/* 80345758 003413B8 2C 04 00 00 */ cmpwi r4, 0
/* 8034575C 003413BC 90 81 00 10 */ stw r4, 0x10(r1)
/* 80345760 003413C0 90 01 00 14 */ stw r0, 0x14(r1)
/* 80345764 003413C4 41 82 00 68 */ beq lbl_803457CC
/* 80345768 003413C8 38 60 00 08 */ li r3, 8
/* 8034576C 003413CC 4B FF 3B A9 */ bl gsimalloc
/* 80345770 003413D0 2C 03 00 00 */ cmpwi r3, 0
/* 80345774 003413D4 40 82 00 18 */ bne lbl_8034578C
/* 80345778 003413D8 7F 83 E3 78 */ mr r3, r28
/* 8034577C 003413DC 38 9E 01 40 */ addi r4, r30, 0x140
/* 80345780 003413E0 48 00 2C D9 */ bl gpiSetErrorString
/* 80345784 003413E4 38 60 00 01 */ li r3, 1
/* 80345788 003413E8 48 00 00 54 */ b lbl_803457DC
lbl_8034578C:
/* 8034578C 003413EC 93 E3 00 04 */ stw r31, 4(r3)
/* 80345790 003413F0 38 00 00 00 */ li r0, 0
/* 80345794 003413F4 80 81 00 10 */ lwz r4, 0x10(r1)
/* 80345798 003413F8 7C 65 1B 78 */ mr r5, r3
/* 8034579C 003413FC 90 03 00 00 */ stw r0, 0(r3)
/* 803457A0 00341400 7F 83 E3 78 */ mr r3, r28
/* 803457A4 00341404 80 01 00 14 */ lwz r0, 0x14(r1)
/* 803457A8 00341408 7F A6 EB 78 */ mr r6, r29
/* 803457AC 0034140C 90 81 00 08 */ stw r4, 8(r1)
/* 803457B0 00341410 38 81 00 08 */ addi r4, r1, 8
/* 803457B4 00341414 38 E0 00 00 */ li r7, 0
/* 803457B8 00341418 90 01 00 0C */ stw r0, 0xc(r1)
/* 803457BC 0034141C 4B FF A5 6D */ bl gpiAddCallback
/* 803457C0 00341420 2C 03 00 00 */ cmpwi r3, 0
/* 803457C4 00341424 41 82 00 08 */ beq lbl_803457CC
/* 803457C8 00341428 48 00 00 14 */ b lbl_803457DC
lbl_803457CC:
/* 803457CC 0034142C 7F 83 E3 78 */ mr r3, r28
/* 803457D0 00341430 7F A4 EB 78 */ mr r4, r29
/* 803457D4 00341434 4B FF E8 89 */ bl gpiRemoveOperation
/* 803457D8 00341438 38 60 00 00 */ li r3, 0
lbl_803457DC:
/* 803457DC 0034143C 80 01 00 44 */ lwz r0, 0x44(r1)
/* 803457E0 00341440 83 E1 00 3C */ lwz r31, 0x3c(r1)
/* 803457E4 00341444 83 C1 00 38 */ lwz r30, 0x38(r1)
/* 803457E8 00341448 83 A1 00 34 */ lwz r29, 0x34(r1)
/* 803457EC 0034144C 83 81 00 30 */ lwz r28, 0x30(r1)
/* 803457F0 00341450 7C 08 03 A6 */ mtlr r0
/* 803457F4 00341454 38 21 00 40 */ addi r1, r1, 0x40
/* 803457F8 00341458 4E 80 00 20 */ blr
.global gpiProfileListAdd
gpiProfileListAdd:
/* 803457FC 0034145C 94 21 FF 90 */ stwu r1, -0x70(r1)
/* 80345800 00341460 7C 08 02 A6 */ mflr r0
/* 80345804 00341464 2C 04 00 00 */ cmpwi r4, 0
/* 80345808 00341468 90 01 00 74 */ stw r0, 0x74(r1)
/* 8034580C 0034146C 93 E1 00 6C */ stw r31, 0x6c(r1)
/* 80345810 00341470 93 C1 00 68 */ stw r30, 0x68(r1)
/* 80345814 00341474 7C 9E 23 78 */ mr r30, r4
/* 80345818 00341478 93 A1 00 64 */ stw r29, 0x64(r1)
/* 8034581C 0034147C 7C 7D 1B 78 */ mr r29, r3
/* 80345820 00341480 83 E3 00 00 */ lwz r31, 0(r3)
/* 80345824 00341484 41 81 00 0C */ bgt lbl_80345830
/* 80345828 00341488 38 60 00 00 */ li r3, 0
/* 8034582C 0034148C 48 00 00 88 */ b lbl_803458B4
lbl_80345830:
/* 80345830 00341490 90 81 00 24 */ stw r4, 0x24(r1)
/* 80345834 00341494 38 81 00 24 */ addi r4, r1, 0x24
/* 80345838 00341498 80 7F 04 44 */ lwz r3, 0x444(r31)
/* 8034583C 0034149C 4B FF 12 E1 */ bl TableLookup
/* 80345840 003414A0 2C 03 00 00 */ cmpwi r3, 0
/* 80345844 003414A4 41 82 00 08 */ beq lbl_8034584C
/* 80345848 003414A8 48 00 00 6C */ b lbl_803458B4
lbl_8034584C:
/* 8034584C 003414AC 38 61 00 40 */ addi r3, r1, 0x40
/* 80345850 003414B0 38 80 00 00 */ li r4, 0
/* 80345854 003414B4 38 A0 00 1C */ li r5, 0x1c
/* 80345858 003414B8 4B CB E8 AD */ bl memset
/* 8034585C 003414BC 38 00 00 00 */ li r0, 0
/* 80345860 003414C0 93 C1 00 40 */ stw r30, 0x40(r1)
/* 80345864 003414C4 38 81 00 40 */ addi r4, r1, 0x40
/* 80345868 003414C8 90 01 00 44 */ stw r0, 0x44(r1)
/* 8034586C 003414CC 90 01 00 4C */ stw r0, 0x4c(r1)
/* 80345870 003414D0 90 01 00 50 */ stw r0, 0x50(r1)
/* 80345874 003414D4 90 01 00 58 */ stw r0, 0x58(r1)
/* 80345878 003414D8 90 01 00 54 */ stw r0, 0x54(r1)
/* 8034587C 003414DC 80 7F 04 44 */ lwz r3, 0x444(r31)
/* 80345880 003414E0 4B FF 11 51 */ bl TableEnter
/* 80345884 003414E4 80 7F 04 48 */ lwz r3, 0x448(r31)
/* 80345888 003414E8 38 81 00 08 */ addi r4, r1, 8
/* 8034588C 003414EC 38 03 00 01 */ addi r0, r3, 1
/* 80345890 003414F0 90 1F 04 48 */ stw r0, 0x448(r31)
/* 80345894 003414F4 80 7D 00 00 */ lwz r3, 0(r29)
/* 80345898 003414F8 93 C1 00 08 */ stw r30, 8(r1)
/* 8034589C 003414FC 80 63 04 44 */ lwz r3, 0x444(r3)
/* 803458A0 00341500 4B FF 12 7D */ bl TableLookup
/* 803458A4 00341504 2C 03 00 00 */ cmpwi r3, 0
/* 803458A8 00341508 41 82 00 08 */ beq lbl_803458B0
/* 803458AC 0034150C 48 00 00 08 */ b lbl_803458B4
lbl_803458B0:
/* 803458B0 00341510 38 60 00 00 */ li r3, 0
lbl_803458B4:
/* 803458B4 00341514 80 01 00 74 */ lwz r0, 0x74(r1)
/* 803458B8 00341518 83 E1 00 6C */ lwz r31, 0x6c(r1)
/* 803458BC 0034151C 83 C1 00 68 */ lwz r30, 0x68(r1)
/* 803458C0 00341520 83 A1 00 64 */ lwz r29, 0x64(r1)
/* 803458C4 00341524 7C 08 03 A6 */ mtlr r0
/* 803458C8 00341528 38 21 00 70 */ addi r1, r1, 0x70
/* 803458CC 0034152C 4E 80 00 20 */ blr
.global gpiGetProfile
gpiGetProfile:
/* 803458D0 00341530 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 803458D4 00341534 7C 08 02 A6 */ mflr r0
/* 803458D8 00341538 90 01 00 34 */ stw r0, 0x34(r1)
/* 803458DC 0034153C 93 E1 00 2C */ stw r31, 0x2c(r1)
/* 803458E0 00341540 7C BF 2B 78 */ mr r31, r5
/* 803458E4 00341544 80 63 00 00 */ lwz r3, 0(r3)
/* 803458E8 00341548 90 81 00 08 */ stw r4, 8(r1)
/* 803458EC 0034154C 38 81 00 08 */ addi r4, r1, 8
/* 803458F0 00341550 80 63 04 44 */ lwz r3, 0x444(r3)
/* 803458F4 00341554 4B FF 12 29 */ bl TableLookup
/* 803458F8 00341558 2C 1F 00 00 */ cmpwi r31, 0
/* 803458FC 0034155C 41 82 00 08 */ beq lbl_80345904
/* 80345900 00341560 90 7F 00 00 */ stw r3, 0(r31)
lbl_80345904:
/* 80345904 00341564 7C 03 00 D0 */ neg r0, r3
/* 80345908 00341568 83 E1 00 2C */ lwz r31, 0x2c(r1)
/* 8034590C 0034156C 7C 00 1B 78 */ or r0, r0, r3
/* 80345910 00341570 54 03 0F FE */ srwi r3, r0, 0x1f
/* 80345914 00341574 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80345918 00341578 7C 08 03 A6 */ mtlr r0
/* 8034591C 0034157C 38 21 00 30 */ addi r1, r1, 0x30
/* 80345920 00341580 4E 80 00 20 */ blr
.global gpiProcessDeleteProfle
gpiProcessDeleteProfle:
/* 80345924 00341584 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80345928 00341588 7C 08 02 A6 */ mflr r0
/* 8034592C 0034158C 90 01 00 34 */ stw r0, 0x34(r1)
/* 80345930 00341590 93 E1 00 2C */ stw r31, 0x2c(r1)
/* 80345934 00341594 93 C1 00 28 */ stw r30, 0x28(r1)
/* 80345938 00341598 7C BE 2B 78 */ mr r30, r5
/* 8034593C 0034159C 38 A0 00 01 */ li r5, 1
/* 80345940 003415A0 93 A1 00 24 */ stw r29, 0x24(r1)
/* 80345944 003415A4 7C 9D 23 78 */ mr r29, r4
/* 80345948 003415A8 7F C4 F3 78 */ mr r4, r30
/* 8034594C 003415AC 93 81 00 20 */ stw r28, 0x20(r1)
/* 80345950 003415B0 7C 7C 1B 78 */ mr r28, r3
/* 80345954 003415B4 83 E3 00 00 */ lwz r31, 0(r3)
/* 80345958 003415B8 48 00 26 3D */ bl gpiCheckForError
/* 8034595C 003415BC 2C 03 00 00 */ cmpwi r3, 0
/* 80345960 003415C0 41 82 00 0C */ beq lbl_8034596C
/* 80345964 003415C4 38 60 00 04 */ li r3, 4
/* 80345968 003415C8 48 00 00 DC */ b lbl_80345A44
lbl_8034596C:
/* 8034596C 003415CC 7F C3 F3 78 */ mr r3, r30
/* 80345970 003415D0 38 8D 91 B0 */ addi r4, r13, lbl_8063E470-_SDA_BASE_
/* 80345974 003415D4 38 A0 00 05 */ li r5, 5
/* 80345978 003415D8 4B E8 8B F1 */ bl strncmp
/* 8034597C 003415DC 2C 03 00 00 */ cmpwi r3, 0
/* 80345980 003415E0 41 82 00 30 */ beq lbl_803459B0
/* 80345984 003415E4 3C A0 80 45 */ lis r5, lbl_8044B174@ha
/* 80345988 003415E8 7F 83 E3 78 */ mr r3, r28
/* 8034598C 003415EC 38 A5 B1 74 */ addi r5, r5, lbl_8044B174@l
/* 80345990 003415F0 38 80 00 01 */ li r4, 1
/* 80345994 003415F4 48 00 2A 75 */ bl gpiSetError
/* 80345998 003415F8 7F 83 E3 78 */ mr r3, r28
/* 8034599C 003415FC 38 80 00 03 */ li r4, 3
/* 803459A0 00341600 38 A0 00 01 */ li r5, 1
/* 803459A4 00341604 4B FF A2 C5 */ bl gpiCallErrorCallback
/* 803459A8 00341608 38 60 00 03 */ li r3, 3
/* 803459AC 0034160C 48 00 00 98 */ b lbl_80345A44
lbl_803459B0:
/* 803459B0 00341610 80 7D 00 0C */ lwz r3, 0xc(r29)
/* 803459B4 00341614 80 1D 00 10 */ lwz r0, 0x10(r29)
/* 803459B8 00341618 2C 03 00 00 */ cmpwi r3, 0
/* 803459BC 0034161C 90 61 00 10 */ stw r3, 0x10(r1)
/* 803459C0 00341620 90 01 00 14 */ stw r0, 0x14(r1)
/* 803459C4 00341624 41 82 00 70 */ beq lbl_80345A34
/* 803459C8 00341628 38 60 00 08 */ li r3, 8
/* 803459CC 0034162C 4B FF 39 49 */ bl gsimalloc
/* 803459D0 00341630 2C 03 00 00 */ cmpwi r3, 0
/* 803459D4 00341634 40 82 00 1C */ bne lbl_803459F0
/* 803459D8 00341638 3C 80 80 45 */ lis r4, lbl_8044B1B0@ha
/* 803459DC 0034163C 7F 83 E3 78 */ mr r3, r28
/* 803459E0 00341640 38 84 B1 B0 */ addi r4, r4, lbl_8044B1B0@l
/* 803459E4 00341644 48 00 2A 75 */ bl gpiSetErrorString
/* 803459E8 00341648 38 60 00 01 */ li r3, 1
/* 803459EC 0034164C 48 00 00 58 */ b lbl_80345A44
lbl_803459F0:
/* 803459F0 00341650 80 1F 01 A0 */ lwz r0, 0x1a0(r31)
/* 803459F4 00341654 38 E0 00 00 */ li r7, 0
/* 803459F8 00341658 81 01 00 10 */ lwz r8, 0x10(r1)
/* 803459FC 0034165C 7C 65 1B 78 */ mr r5, r3
/* 80345A00 00341660 90 03 00 04 */ stw r0, 4(r3)
/* 80345A04 00341664 7F A6 EB 78 */ mr r6, r29
/* 80345A08 00341668 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80345A0C 0034166C 38 81 00 08 */ addi r4, r1, 8
/* 80345A10 00341670 90 E3 00 00 */ stw r7, 0(r3)
/* 80345A14 00341674 7F 83 E3 78 */ mr r3, r28
/* 80345A18 00341678 38 E0 00 00 */ li r7, 0
/* 80345A1C 0034167C 91 01 00 08 */ stw r8, 8(r1)
/* 80345A20 00341680 90 01 00 0C */ stw r0, 0xc(r1)
/* 80345A24 00341684 4B FF A3 05 */ bl gpiAddCallback
/* 80345A28 00341688 2C 03 00 00 */ cmpwi r3, 0
/* 80345A2C 0034168C 41 82 00 08 */ beq lbl_80345A34
/* 80345A30 00341690 48 00 00 14 */ b lbl_80345A44
lbl_80345A34:
/* 80345A34 00341694 7F 83 E3 78 */ mr r3, r28
/* 80345A38 00341698 7F A4 EB 78 */ mr r4, r29
/* 80345A3C 0034169C 4B FF E6 21 */ bl gpiRemoveOperation
/* 80345A40 003416A0 38 60 00 00 */ li r3, 0
lbl_80345A44:
/* 80345A44 003416A4 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80345A48 003416A8 83 E1 00 2C */ lwz r31, 0x2c(r1)
/* 80345A4C 003416AC 83 C1 00 28 */ lwz r30, 0x28(r1)
/* 80345A50 003416B0 83 A1 00 24 */ lwz r29, 0x24(r1)
/* 80345A54 003416B4 83 81 00 20 */ lwz r28, 0x20(r1)
/* 80345A58 003416B8 7C 08 03 A6 */ mtlr r0
/* 80345A5C 003416BC 38 21 00 30 */ addi r1, r1, 0x30
/* 80345A60 003416C0 4E 80 00 20 */ blr
.global gpiRemoveProfileByID
gpiRemoveProfileByID:
/* 80345A64 003416C4 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80345A68 003416C8 7C 08 02 A6 */ mflr r0
/* 80345A6C 003416CC 90 01 00 34 */ stw r0, 0x34(r1)
/* 80345A70 003416D0 93 E1 00 2C */ stw r31, 0x2c(r1)
/* 80345A74 003416D4 83 E3 00 00 */ lwz r31, 0(r3)
/* 80345A78 003416D8 90 81 00 08 */ stw r4, 8(r1)
/* 80345A7C 003416DC 38 81 00 08 */ addi r4, r1, 8
/* 80345A80 003416E0 80 7F 04 44 */ lwz r3, 0x444(r31)
/* 80345A84 003416E4 4B FF 10 99 */ bl TableLookup
/* 80345A88 003416E8 2C 03 00 00 */ cmpwi r3, 0
/* 80345A8C 003416EC 7C 64 1B 78 */ mr r4, r3
/* 80345A90 003416F0 41 82 00 0C */ beq lbl_80345A9C
/* 80345A94 003416F4 80 7F 04 44 */ lwz r3, 0x444(r31)
/* 80345A98 003416F8 4B FF 0F E1 */ bl TableRemove
lbl_80345A9C:
/* 80345A9C 003416FC 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80345AA0 00341700 83 E1 00 2C */ lwz r31, 0x2c(r1)
/* 80345AA4 00341704 7C 08 03 A6 */ mtlr r0
/* 80345AA8 00341708 38 21 00 30 */ addi r1, r1, 0x30
/* 80345AAC 0034170C 4E 80 00 20 */ blr
.global gpiRemoveProfile
gpiRemoveProfile:
/* 80345AB0 00341710 80 63 00 00 */ lwz r3, 0(r3)
/* 80345AB4 00341714 80 63 04 44 */ lwz r3, 0x444(r3)
/* 80345AB8 00341718 4B FF 0F C0 */ b TableRemove
.global gpiCheckProfileForUser
gpiCheckProfileForUser:
/* 80345ABC 0034171C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80345AC0 00341720 7C 08 02 A6 */ mflr r0
/* 80345AC4 00341724 90 01 00 24 */ stw r0, 0x24(r1)
/* 80345AC8 00341728 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 80345ACC 0034172C 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80345AD0 00341730 7C BE 2B 78 */ mr r30, r5
/* 80345AD4 00341734 93 A1 00 14 */ stw r29, 0x14(r1)
/* 80345AD8 00341738 7C 9D 23 78 */ mr r29, r4
/* 80345ADC 0034173C 83 E4 00 0C */ lwz r31, 0xc(r4)
/* 80345AE0 00341740 2C 1F 00 00 */ cmpwi r31, 0
/* 80345AE4 00341744 41 82 00 44 */ beq lbl_80345B28
/* 80345AE8 00341748 80 65 00 00 */ lwz r3, 0(r5)
/* 80345AEC 0034174C 80 9F 00 00 */ lwz r4, 0(r31)
/* 80345AF0 00341750 4B E8 89 5D */ bl strcmp
/* 80345AF4 00341754 2C 03 00 00 */ cmpwi r3, 0
/* 80345AF8 00341758 40 82 00 30 */ bne lbl_80345B28
/* 80345AFC 0034175C 80 7E 00 04 */ lwz r3, 4(r30)
/* 80345B00 00341760 80 9F 00 08 */ lwz r4, 8(r31)
/* 80345B04 00341764 4B E8 89 49 */ bl strcmp
/* 80345B08 00341768 2C 03 00 00 */ cmpwi r3, 0
/* 80345B0C 0034176C 40 82 00 1C */ bne lbl_80345B28
/* 80345B10 00341770 80 9E 00 08 */ lwz r4, 8(r30)
/* 80345B14 00341774 38 00 00 01 */ li r0, 1
/* 80345B18 00341778 38 60 00 00 */ li r3, 0
/* 80345B1C 0034177C 93 A4 00 00 */ stw r29, 0(r4)
/* 80345B20 00341780 90 1E 00 0C */ stw r0, 0xc(r30)
/* 80345B24 00341784 48 00 00 08 */ b lbl_80345B2C
lbl_80345B28:
/* 80345B28 00341788 38 60 00 01 */ li r3, 1
lbl_80345B2C:
/* 80345B2C 0034178C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80345B30 00341790 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80345B34 00341794 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 80345B38 00341798 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 80345B3C 0034179C 7C 08 03 A6 */ mtlr r0
/* 80345B40 003417A0 38 21 00 20 */ addi r1, r1, 0x20
/* 80345B44 003417A4 4E 80 00 20 */ blr
.global gpiFindProfileByUser
gpiFindProfileByUser:
/* 80345B48 003417A8 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80345B4C 003417AC 7C 08 02 A6 */ mflr r0
/* 80345B50 003417B0 3C E0 80 34 */ lis r7, gpiCheckProfileForUser@ha
/* 80345B54 003417B4 90 01 00 34 */ stw r0, 0x34(r1)
/* 80345B58 003417B8 38 01 00 18 */ addi r0, r1, 0x18
/* 80345B5C 003417BC 38 E7 5A BC */ addi r7, r7, gpiCheckProfileForUser@l
/* 80345B60 003417C0 93 E1 00 2C */ stw r31, 0x2c(r1)
/* 80345B64 003417C4 3B E0 00 00 */ li r31, 0
/* 80345B68 003417C8 93 C1 00 28 */ stw r30, 0x28(r1)
/* 80345B6C 003417CC 7C DE 33 78 */ mr r30, r6
/* 80345B70 003417D0 90 A1 00 1C */ stw r5, 0x1c(r1)
/* 80345B74 003417D4 38 A1 00 08 */ addi r5, r1, 8
/* 80345B78 003417D8 90 81 00 18 */ stw r4, 0x18(r1)
/* 80345B7C 003417DC 3C 80 80 34 */ lis r4, gpiProfileMapCallback@ha
/* 80345B80 003417E0 38 84 5B D0 */ addi r4, r4, gpiProfileMapCallback@l
/* 80345B84 003417E4 90 C1 00 20 */ stw r6, 0x20(r1)
/* 80345B88 003417E8 93 E1 00 24 */ stw r31, 0x24(r1)
/* 80345B8C 003417EC 80 C3 00 00 */ lwz r6, 0(r3)
/* 80345B90 003417F0 90 61 00 08 */ stw r3, 8(r1)
/* 80345B94 003417F4 90 E1 00 0C */ stw r7, 0xc(r1)
/* 80345B98 003417F8 90 01 00 10 */ stw r0, 0x10(r1)
/* 80345B9C 003417FC 80 66 04 44 */ lwz r3, 0x444(r6)
/* 80345BA0 00341800 4B FF 10 89 */ bl TableMapSafe2
/* 80345BA4 00341804 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80345BA8 00341808 2C 00 00 00 */ cmpwi r0, 0
/* 80345BAC 0034180C 40 82 00 08 */ bne lbl_80345BB4
/* 80345BB0 00341810 93 FE 00 00 */ stw r31, 0(r30)
lbl_80345BB4:
/* 80345BB4 00341814 83 E1 00 2C */ lwz r31, 0x2c(r1)
/* 80345BB8 00341818 38 60 00 00 */ li r3, 0
/* 80345BBC 0034181C 83 C1 00 28 */ lwz r30, 0x28(r1)
/* 80345BC0 00341820 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80345BC4 00341824 7C 08 03 A6 */ mtlr r0
/* 80345BC8 00341828 38 21 00 30 */ addi r1, r1, 0x30
/* 80345BCC 0034182C 4E 80 00 20 */ blr
.global gpiProfileMapCallback
gpiProfileMapCallback:
/* 80345BD0 00341830 81 84 00 04 */ lwz r12, 4(r4)
/* 80345BD4 00341834 7C 85 23 78 */ mr r5, r4
/* 80345BD8 00341838 7C 60 1B 78 */ mr r0, r3
/* 80345BDC 0034183C 80 64 00 00 */ lwz r3, 0(r4)
/* 80345BE0 00341840 7C 04 03 78 */ mr r4, r0
/* 80345BE4 00341844 80 A5 00 08 */ lwz r5, 8(r5)
/* 80345BE8 00341848 7D 89 03 A6 */ mtctr r12
/* 80345BEC 0034184C 4E 80 04 20 */ bctr
.global gpiProfileMap
gpiProfileMap:
/* 80345BF0 00341850 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80345BF4 00341854 7C 08 02 A6 */ mflr r0
/* 80345BF8 00341858 3C C0 80 34 */ lis r6, gpiProfileMapCallback@ha
/* 80345BFC 0034185C 90 01 00 24 */ stw r0, 0x24(r1)
/* 80345C00 00341860 80 E3 00 00 */ lwz r7, 0(r3)
/* 80345C04 00341864 90 81 00 0C */ stw r4, 0xc(r1)
/* 80345C08 00341868 38 86 5B D0 */ addi r4, r6, gpiProfileMapCallback@l
/* 80345C0C 0034186C 90 A1 00 10 */ stw r5, 0x10(r1)
/* 80345C10 00341870 38 A1 00 08 */ addi r5, r1, 8
/* 80345C14 00341874 90 61 00 08 */ stw r3, 8(r1)
/* 80345C18 00341878 80 67 04 44 */ lwz r3, 0x444(r7)
/* 80345C1C 0034187C 4B FF 10 0D */ bl TableMapSafe2
/* 80345C20 00341880 7C 60 00 34 */ cntlzw r0, r3
/* 80345C24 00341884 54 03 D9 7E */ srwi r3, r0, 5
/* 80345C28 00341888 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80345C2C 0034188C 7C 08 03 A6 */ mtlr r0
/* 80345C30 00341890 38 21 00 20 */ addi r1, r1, 0x20
/* 80345C34 00341894 4E 80 00 20 */ blr
.global gpiCheckForBuddy
gpiCheckForBuddy:
/* 80345C38 00341898 80 C4 00 08 */ lwz r6, 8(r4)
/* 80345C3C 0034189C 2C 06 00 00 */ cmpwi r6, 0
/* 80345C40 003418A0 41 82 00 20 */ beq lbl_80345C60
/* 80345C44 003418A4 80 65 00 00 */ lwz r3, 0(r5)
/* 80345C48 003418A8 80 06 00 00 */ lwz r0, 0(r6)
/* 80345C4C 003418AC 7C 03 00 00 */ cmpw r3, r0
/* 80345C50 003418B0 40 82 00 10 */ bne lbl_80345C60
/* 80345C54 003418B4 90 85 00 04 */ stw r4, 4(r5)
/* 80345C58 003418B8 38 60 00 00 */ li r3, 0
/* 80345C5C 003418BC 4E 80 00 20 */ blr
lbl_80345C60:
/* 80345C60 003418C0 38 60 00 01 */ li r3, 1
/* 80345C64 003418C4 4E 80 00 20 */ blr
.global gpiFindBuddy
gpiFindBuddy:
/* 80345C68 003418C8 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80345C6C 003418CC 7C 08 02 A6 */ mflr r0
/* 80345C70 003418D0 3C C0 80 34 */ lis r6, gpiCheckForBuddy@ha
/* 80345C74 003418D4 38 A0 00 00 */ li r5, 0
/* 80345C78 003418D8 90 01 00 24 */ stw r0, 0x24(r1)
/* 80345C7C 003418DC 38 C6 5C 38 */ addi r6, r6, gpiCheckForBuddy@l
/* 80345C80 003418E0 38 01 00 08 */ addi r0, r1, 8
/* 80345C84 003418E4 90 81 00 08 */ stw r4, 8(r1)
/* 80345C88 003418E8 3C 80 80 34 */ lis r4, gpiProfileMapCallback@ha
/* 80345C8C 003418EC 38 84 5B D0 */ addi r4, r4, gpiProfileMapCallback@l
/* 80345C90 003418F0 90 A1 00 0C */ stw r5, 0xc(r1)
/* 80345C94 003418F4 38 A1 00 10 */ addi r5, r1, 0x10
/* 80345C98 003418F8 80 E3 00 00 */ lwz r7, 0(r3)
/* 80345C9C 003418FC 90 61 00 10 */ stw r3, 0x10(r1)
/* 80345CA0 00341900 90 C1 00 14 */ stw r6, 0x14(r1)
/* 80345CA4 00341904 90 01 00 18 */ stw r0, 0x18(r1)
/* 80345CA8 00341908 80 67 04 44 */ lwz r3, 0x444(r7)
/* 80345CAC 0034190C 4B FF 0F 7D */ bl TableMapSafe2
/* 80345CB0 00341910 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80345CB4 00341914 80 61 00 0C */ lwz r3, 0xc(r1)
/* 80345CB8 00341918 7C 08 03 A6 */ mtlr r0
/* 80345CBC 0034191C 38 21 00 20 */ addi r1, r1, 0x20
/* 80345CC0 00341920 4E 80 00 20 */ blr
.global gpiCanFreeProfile
gpiCanFreeProfile:
/* 80345CC4 00341924 2C 03 00 00 */ cmpwi r3, 0
/* 80345CC8 00341928 38 80 00 00 */ li r4, 0
/* 80345CCC 0034192C 41 82 00 38 */ beq lbl_80345D04
/* 80345CD0 00341930 80 03 00 0C */ lwz r0, 0xc(r3)
/* 80345CD4 00341934 2C 00 00 00 */ cmpwi r0, 0
/* 80345CD8 00341938 40 82 00 2C */ bne lbl_80345D04
/* 80345CDC 0034193C 80 03 00 08 */ lwz r0, 8(r3)
/* 80345CE0 00341940 2C 00 00 00 */ cmpwi r0, 0
/* 80345CE4 00341944 40 82 00 20 */ bne lbl_80345D04
/* 80345CE8 00341948 80 03 00 18 */ lwz r0, 0x18(r3)
/* 80345CEC 0034194C 2C 00 00 00 */ cmpwi r0, 0
/* 80345CF0 00341950 40 82 00 14 */ bne lbl_80345D04
/* 80345CF4 00341954 80 03 00 10 */ lwz r0, 0x10(r3)
/* 80345CF8 00341958 2C 00 00 00 */ cmpwi r0, 0
/* 80345CFC 0034195C 40 82 00 08 */ bne lbl_80345D04
/* 80345D00 00341960 38 80 00 01 */ li r4, 1
lbl_80345D04:
/* 80345D04 00341964 7C 04 00 D0 */ neg r0, r4
/* 80345D08 00341968 7C 00 23 78 */ or r0, r0, r4
/* 80345D0C 0034196C 54 03 0F FE */ srwi r3, r0, 0x1f
/* 80345D10 00341970 4E 80 00 20 */ blr
|