.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