.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global gti2GetChallenge gti2GetChallenge: /* 80348534 00344194 94 21 FF E0 */ stwu r1, -0x20(r1) /* 80348538 00344198 7C 08 02 A6 */ mflr r0 /* 8034853C 0034419C 90 01 00 24 */ stw r0, 0x24(r1) /* 80348540 003441A0 39 61 00 20 */ addi r11, r1, 0x20 /* 80348544 003441A4 4B E7 EB E5 */ bl _savegpr_27 /* 80348548 003441A8 7C 7B 1B 78 */ mr r27, r3 /* 8034854C 003441AC 4B FF 0A 8D */ bl current_time /* 80348550 003441B0 4B E8 48 0D */ bl srand /* 80348554 003441B4 4B E8 47 E9 */ bl rand /* 80348558 003441B8 3C 80 2C 0B */ lis r4, 0x2C0B02C1@ha /* 8034855C 003441BC 3B 80 00 00 */ li r28, 0 /* 80348560 003441C0 3B E4 02 C1 */ addi r31, r4, 0x2C0B02C1@l /* 80348564 003441C4 3B A0 00 01 */ li r29, 1 /* 80348568 003441C8 7C 1F 18 96 */ mulhw r0, r31, r3 /* 8034856C 003441CC 7C 00 26 70 */ srawi r0, r0, 4 /* 80348570 003441D0 54 04 0F FE */ srwi r4, r0, 0x1f /* 80348574 003441D4 7C 00 22 14 */ add r0, r0, r4 /* 80348578 003441D8 1C 00 00 5D */ mulli r0, r0, 0x5d /* 8034857C 003441DC 7C 60 18 50 */ subf r3, r0, r3 /* 80348580 003441E0 38 03 00 21 */ addi r0, r3, 0x21 /* 80348584 003441E4 98 1B 00 00 */ stb r0, 0(r27) lbl_80348588: /* 80348588 003441E8 7F DB EA 14 */ add r30, r27, r29 /* 8034858C 003441EC 88 BB 00 00 */ lbz r5, 0(r27) /* 80348590 003441F0 88 DE FF FF */ lbz r6, -1(r30) /* 80348594 003441F4 54 A4 07 FE */ clrlwi r4, r5, 0x1f /* 80348598 003441F8 38 05 FF B1 */ addi r0, r5, -79 /* 8034859C 003441FC 7F A3 32 78 */ xor r3, r29, r6 /* 803485A0 00344200 7C A5 30 50 */ subf r5, r5, r6 /* 803485A4 00344204 7C 84 E2 78 */ xor r4, r4, r28 /* 803485A8 00344208 54 00 0F FE */ srwi r0, r0, 0x1f /* 803485AC 0034420C 54 63 07 FE */ clrlwi r3, r3, 0x1f /* 803485B0 00344210 54 A5 0F FE */ srwi r5, r5, 0x1f /* 803485B4 00344214 7C 83 1A 78 */ xor r3, r4, r3 /* 803485B8 00344218 7C 60 02 78 */ xor r0, r3, r0 /* 803485BC 0034421C 7C 1C 2A 78 */ xor r28, r0, r5 /* 803485C0 00344220 4B E8 47 7D */ bl rand /* 803485C4 00344224 7C 1F 18 96 */ mulhw r0, r31, r3 /* 803485C8 00344228 2C 1C 00 00 */ cmpwi r28, 0 /* 803485CC 0034422C 7C 00 26 70 */ srawi r0, r0, 4 /* 803485D0 00344230 54 04 0F FE */ srwi r4, r0, 0x1f /* 803485D4 00344234 7C 00 22 14 */ add r0, r0, r4 /* 803485D8 00344238 1C 00 00 5D */ mulli r0, r0, 0x5d /* 803485DC 0034423C 7C 60 18 50 */ subf r3, r0, r3 /* 803485E0 00344240 38 03 00 21 */ addi r0, r3, 0x21 /* 803485E4 00344244 98 1E 00 00 */ stb r0, 0(r30) /* 803485E8 00344248 41 82 00 10 */ beq lbl_803485F8 /* 803485EC 0034424C 88 1E 00 00 */ lbz r0, 0(r30) /* 803485F0 00344250 54 00 07 FF */ clrlwi. r0, r0, 0x1f /* 803485F4 00344254 41 82 00 1C */ beq lbl_80348610 lbl_803485F8: /* 803485F8 00344258 2C 1C 00 00 */ cmpwi r28, 0 /* 803485FC 0034425C 40 82 00 20 */ bne lbl_8034861C /* 80348600 00344260 88 1E 00 00 */ lbz r0, 0(r30) /* 80348604 00344264 54 00 07 FE */ clrlwi r0, r0, 0x1f /* 80348608 00344268 2C 00 00 01 */ cmpwi r0, 1 /* 8034860C 0034426C 40 82 00 10 */ bne lbl_8034861C lbl_80348610: /* 80348610 00344270 88 7E 00 00 */ lbz r3, 0(r30) /* 80348614 00344274 38 03 00 01 */ addi r0, r3, 1 /* 80348618 00344278 98 1E 00 00 */ stb r0, 0(r30) lbl_8034861C: /* 8034861C 0034427C 3B BD 00 01 */ addi r29, r29, 1 /* 80348620 00344280 2C 1D 00 20 */ cmpwi r29, 0x20 /* 80348624 00344284 41 80 FF 64 */ blt lbl_80348588 /* 80348628 00344288 39 61 00 20 */ addi r11, r1, 0x20 /* 8034862C 0034428C 7F 63 DB 78 */ mr r3, r27 /* 80348630 00344290 4B E7 EB 45 */ bl _restgpr_27 /* 80348634 00344294 80 01 00 24 */ lwz r0, 0x24(r1) /* 80348638 00344298 7C 08 03 A6 */ mtlr r0 /* 8034863C 0034429C 38 21 00 20 */ addi r1, r1, 0x20 /* 80348640 003442A0 4E 80 00 20 */ blr .global gti2GetResponse gti2GetResponse: /* 80348644 003442A4 94 21 FF D0 */ stwu r1, -0x30(r1) /* 80348648 003442A8 7C 08 02 A6 */ mflr r0 /* 8034864C 003442AC 90 01 00 34 */ stw r0, 0x34(r1) /* 80348650 003442B0 39 61 00 30 */ addi r11, r1, 0x30 /* 80348654 003442B4 4B E7 EA C5 */ bl _savegpr_23 /* 80348658 003442B8 3C A0 80 45 */ lis r5, lbl_8044B5E0@ha /* 8034865C 003442BC 7C 79 1B 78 */ mr r25, r3 /* 80348660 003442C0 7C 9A 23 78 */ mr r26, r4 /* 80348664 003442C4 38 65 B5 E0 */ addi r3, r5, lbl_8044B5E0@l /* 80348668 003442C8 4B E7 E4 FD */ bl strlen /* 8034866C 003442CC 38 00 00 1F */ li r0, 0x1f /* 80348670 003442D0 7C 7E 1B 78 */ mr r30, r3 /* 80348674 003442D4 38 E0 00 00 */ li r7, 0 /* 80348678 003442D8 38 C0 00 01 */ li r6, 1 /* 8034867C 003442DC 7C 09 03 A6 */ mtctr r0 lbl_80348680: /* 80348680 003442E0 7D 1A 32 14 */ add r8, r26, r6 /* 80348684 003442E4 88 BA 00 00 */ lbz r5, 0(r26) /* 80348688 003442E8 89 28 FF FF */ lbz r9, -1(r8) /* 8034868C 003442EC 54 A4 07 FE */ clrlwi r4, r5, 0x1f /* 80348690 003442F0 38 05 FF B1 */ addi r0, r5, -79 /* 80348694 003442F4 7C C3 4A 78 */ xor r3, r6, r9 /* 80348698 003442F8 7C A5 48 50 */ subf r5, r5, r9 /* 8034869C 003442FC 7C 84 3A 78 */ xor r4, r4, r7 /* 803486A0 00344300 54 00 0F FE */ srwi r0, r0, 0x1f /* 803486A4 00344304 54 63 07 FE */ clrlwi r3, r3, 0x1f /* 803486A8 00344308 54 A5 0F FE */ srwi r5, r5, 0x1f /* 803486AC 0034430C 7C 83 1A 78 */ xor r3, r4, r3 /* 803486B0 00344310 7C 60 02 78 */ xor r0, r3, r0 /* 803486B4 00344314 7C 07 2A 79 */ xor. r7, r0, r5 /* 803486B8 00344318 41 82 00 10 */ beq lbl_803486C8 /* 803486BC 0034431C 88 08 00 00 */ lbz r0, 0(r8) /* 803486C0 00344320 54 00 07 FF */ clrlwi. r0, r0, 0x1f /* 803486C4 00344324 41 82 00 1C */ beq lbl_803486E0 lbl_803486C8: /* 803486C8 00344328 2C 07 00 00 */ cmpwi r7, 0 /* 803486CC 0034432C 40 82 00 1C */ bne lbl_803486E8 /* 803486D0 00344330 88 08 00 00 */ lbz r0, 0(r8) /* 803486D4 00344334 54 00 07 FE */ clrlwi r0, r0, 0x1f /* 803486D8 00344338 2C 00 00 01 */ cmpwi r0, 1 /* 803486DC 0034433C 40 82 00 0C */ bne lbl_803486E8 lbl_803486E0: /* 803486E0 00344340 3B A0 00 00 */ li r29, 0 /* 803486E4 00344344 48 00 00 10 */ b lbl_803486F4 lbl_803486E8: /* 803486E8 00344348 38 C6 00 01 */ addi r6, r6, 1 /* 803486EC 0034434C 42 00 FF 94 */ bdnz lbl_80348680 /* 803486F0 00344350 3B A0 00 01 */ li r29, 1 lbl_803486F4: /* 803486F4 00344354 3F E0 80 45 */ lis r31, lbl_8044B5E0@ha /* 803486F8 00344358 7F 38 CB 78 */ mr r24, r25 /* 803486FC 0034435C 3B FF B5 E0 */ addi r31, r31, lbl_8044B5E0@l /* 80348700 00344360 3B 60 00 00 */ li r27, 0 /* 80348704 00344364 3B 80 00 00 */ li r28, 0 /* 80348708 00344368 3E E0 2C 0B */ lis r23, 0x2c0b lbl_8034870C: /* 8034870C 0034436C 2C 1D 00 00 */ cmpwi r29, 0 /* 80348710 00344370 41 82 00 14 */ beq lbl_80348724 /* 80348714 00344374 2C 1B 00 00 */ cmpwi r27, 0 /* 80348718 00344378 41 82 00 0C */ beq lbl_80348724 /* 8034871C 0034437C 2C 1B 00 0D */ cmpwi r27, 0xd /* 80348720 00344380 40 82 00 30 */ bne lbl_80348750 lbl_80348724: /* 80348724 00344384 4B E8 46 19 */ bl rand /* 80348728 00344388 38 17 02 C1 */ addi r0, r23, 0x2c1 /* 8034872C 0034438C 7C 00 18 96 */ mulhw r0, r0, r3 /* 80348730 00344390 7C 00 26 70 */ srawi r0, r0, 4 /* 80348734 00344394 54 04 0F FE */ srwi r4, r0, 0x1f /* 80348738 00344398 7C 00 22 14 */ add r0, r0, r4 /* 8034873C 0034439C 1C 00 00 5D */ mulli r0, r0, 0x5d /* 80348740 003443A0 7C 60 18 50 */ subf r3, r0, r3 /* 80348744 003443A4 38 03 00 21 */ addi r0, r3, 0x21 /* 80348748 003443A8 98 18 00 00 */ stb r0, 0(r24) /* 8034874C 003443AC 48 00 00 B8 */ b lbl_80348804 lbl_80348750: /* 80348750 003443B0 2C 1B 00 01 */ cmpwi r27, 1 /* 80348754 003443B4 41 82 00 0C */ beq lbl_80348760 /* 80348758 003443B8 2C 1B 00 0E */ cmpwi r27, 0xe /* 8034875C 003443BC 40 82 00 14 */ bne lbl_80348770 lbl_80348760: /* 80348760 003443C0 7C 1A D8 AE */ lbzx r0, r26, r27 /* 80348764 003443C4 7C 7A DA 14 */ add r3, r26, r27 /* 80348768 003443C8 7C 00 07 74 */ extsb r0, r0 /* 8034876C 003443CC 48 00 00 10 */ b lbl_8034877C lbl_80348770: /* 80348770 003443D0 7C 7A DA 14 */ add r3, r26, r27 /* 80348774 003443D4 88 03 FF FF */ lbz r0, -1(r3) /* 80348778 003443D8 7C 00 07 74 */ extsb r0, r0 lbl_8034877C: /* 8034877C 003443DC 88 E3 00 00 */ lbz r7, 0(r3) /* 80348780 003443E0 7C 80 E1 D6 */ mullw r4, r0, r28 /* 80348784 003443E4 38 17 02 C1 */ addi r0, r23, 0x2c1 /* 80348788 003443E8 7C DB 3A 14 */ add r6, r27, r7 /* 8034878C 003443EC 7C A6 F3 D6 */ divw r5, r6, r30 /* 80348790 003443F0 7C 64 F3 D6 */ divw r3, r4, r30 /* 80348794 003443F4 7C A5 F1 D6 */ mullw r5, r5, r30 /* 80348798 003443F8 7C A5 30 50 */ subf r5, r5, r6 /* 8034879C 003443FC 7C BF 28 AE */ lbzx r5, r31, r5 /* 803487A0 00344400 7C 63 F1 D6 */ mullw r3, r3, r30 /* 803487A4 00344404 7C A6 07 74 */ extsb r6, r5 /* 803487A8 00344408 7C BB 39 D6 */ mullw r5, r27, r7 /* 803487AC 0034440C 7C 63 20 50 */ subf r3, r3, r4 /* 803487B0 00344410 7C 7F 18 AE */ lbzx r3, r31, r3 /* 803487B4 00344414 7C 63 07 74 */ extsb r3, r3 /* 803487B8 00344418 7C A6 2A 14 */ add r5, r6, r5 /* 803487BC 0034441C 54 A4 D8 08 */ slwi r4, r5, 0x1b /* 803487C0 00344420 54 A5 0F FE */ srwi r5, r5, 0x1f /* 803487C4 00344424 7C 85 20 50 */ subf r4, r5, r4 /* 803487C8 00344428 54 84 28 3E */ rotlwi r4, r4, 5 /* 803487CC 0034442C 7C 84 2A 14 */ add r4, r4, r5 /* 803487D0 00344430 7C 9A 20 AE */ lbzx r4, r26, r4 /* 803487D4 00344434 7C 84 1A 78 */ xor r4, r4, r3 /* 803487D8 00344438 7C 83 FE 70 */ srawi r3, r4, 0x1f /* 803487DC 0034443C 7C 64 22 78 */ xor r4, r3, r4 /* 803487E0 00344440 7C 83 20 50 */ subf r4, r3, r4 /* 803487E4 00344444 7C 00 20 96 */ mulhw r0, r0, r4 /* 803487E8 00344448 7C 00 26 70 */ srawi r0, r0, 4 /* 803487EC 0034444C 54 03 0F FE */ srwi r3, r0, 0x1f /* 803487F0 00344450 7C 00 1A 14 */ add r0, r0, r3 /* 803487F4 00344454 1C 00 00 5D */ mulli r0, r0, 0x5d /* 803487F8 00344458 7C 60 20 50 */ subf r3, r0, r4 /* 803487FC 0034445C 38 03 00 21 */ addi r0, r3, 0x21 /* 80348800 00344460 98 18 00 00 */ stb r0, 0(r24) lbl_80348804: /* 80348804 00344464 3B 7B 00 01 */ addi r27, r27, 1 /* 80348808 00344468 3B 18 00 01 */ addi r24, r24, 1 /* 8034880C 0034446C 2C 1B 00 20 */ cmpwi r27, 0x20 /* 80348810 00344470 3B 9C 46 47 */ addi r28, r28, 0x4647 /* 80348814 00344474 41 80 FE F8 */ blt lbl_8034870C /* 80348818 00344478 39 61 00 30 */ addi r11, r1, 0x30 /* 8034881C 0034447C 7F 23 CB 78 */ mr r3, r25 /* 80348820 00344480 4B E7 E9 45 */ bl _restgpr_23 /* 80348824 00344484 80 01 00 34 */ lwz r0, 0x34(r1) /* 80348828 00344488 7C 08 03 A6 */ mtlr r0 /* 8034882C 0034448C 38 21 00 30 */ addi r1, r1, 0x30 /* 80348830 00344490 4E 80 00 20 */ blr .global gti2CheckResponse gti2CheckResponse: /* 80348834 00344494 38 00 00 08 */ li r0, 8 /* 80348838 00344498 38 C0 00 00 */ li r6, 0 /* 8034883C 0034449C 7C 09 03 A6 */ mtctr r0 lbl_80348840: /* 80348840 003444A0 2C 06 00 00 */ cmpwi r6, 0 /* 80348844 003444A4 41 82 00 24 */ beq lbl_80348868 /* 80348848 003444A8 2C 06 00 0D */ cmpwi r6, 0xd /* 8034884C 003444AC 41 82 00 1C */ beq lbl_80348868 /* 80348850 003444B0 88 A3 00 00 */ lbz r5, 0(r3) /* 80348854 003444B4 88 04 00 00 */ lbz r0, 0(r4) /* 80348858 003444B8 7C 05 00 40 */ cmplw r5, r0 /* 8034885C 003444BC 41 82 00 0C */ beq lbl_80348868 /* 80348860 003444C0 38 60 00 00 */ li r3, 0 /* 80348864 003444C4 4E 80 00 20 */ blr lbl_80348868: /* 80348868 003444C8 34 C6 00 01 */ addic. r6, r6, 1 /* 8034886C 003444CC 41 82 00 24 */ beq lbl_80348890 /* 80348870 003444D0 2C 06 00 0D */ cmpwi r6, 0xd /* 80348874 003444D4 41 82 00 1C */ beq lbl_80348890 /* 80348878 003444D8 88 A3 00 01 */ lbz r5, 1(r3) /* 8034887C 003444DC 88 04 00 01 */ lbz r0, 1(r4) /* 80348880 003444E0 7C 05 00 40 */ cmplw r5, r0 /* 80348884 003444E4 41 82 00 0C */ beq lbl_80348890 /* 80348888 003444E8 38 60 00 00 */ li r3, 0 /* 8034888C 003444EC 4E 80 00 20 */ blr lbl_80348890: /* 80348890 003444F0 34 C6 00 01 */ addic. r6, r6, 1 /* 80348894 003444F4 41 82 00 24 */ beq lbl_803488B8 /* 80348898 003444F8 2C 06 00 0D */ cmpwi r6, 0xd /* 8034889C 003444FC 41 82 00 1C */ beq lbl_803488B8 /* 803488A0 00344500 88 A3 00 02 */ lbz r5, 2(r3) /* 803488A4 00344504 88 04 00 02 */ lbz r0, 2(r4) /* 803488A8 00344508 7C 05 00 40 */ cmplw r5, r0 /* 803488AC 0034450C 41 82 00 0C */ beq lbl_803488B8 /* 803488B0 00344510 38 60 00 00 */ li r3, 0 /* 803488B4 00344514 4E 80 00 20 */ blr lbl_803488B8: /* 803488B8 00344518 34 C6 00 01 */ addic. r6, r6, 1 /* 803488BC 0034451C 41 82 00 24 */ beq lbl_803488E0 /* 803488C0 00344520 2C 06 00 0D */ cmpwi r6, 0xd /* 803488C4 00344524 41 82 00 1C */ beq lbl_803488E0 /* 803488C8 00344528 88 A3 00 03 */ lbz r5, 3(r3) /* 803488CC 0034452C 88 04 00 03 */ lbz r0, 3(r4) /* 803488D0 00344530 7C 05 00 40 */ cmplw r5, r0 /* 803488D4 00344534 41 82 00 0C */ beq lbl_803488E0 /* 803488D8 00344538 38 60 00 00 */ li r3, 0 /* 803488DC 0034453C 4E 80 00 20 */ blr lbl_803488E0: /* 803488E0 00344540 38 C6 00 01 */ addi r6, r6, 1 /* 803488E4 00344544 38 84 00 04 */ addi r4, r4, 4 /* 803488E8 00344548 38 63 00 04 */ addi r3, r3, 4 /* 803488EC 0034454C 42 00 FF 54 */ bdnz lbl_80348840 /* 803488F0 00344550 38 60 00 01 */ li r3, 1 /* 803488F4 00344554 4E 80 00 20 */ blr