.text0:80009CEC .text0:80009CEC # =============== S U B R O U T I N E ======================================= .text0:80009CEC .text0:80009CEC .text0:80009CEC # int __cdecl ctgp_uncompress(void *dest, int *pSize, void *inData, int inSize) .text0:80009CEC ctgp_uncompress: # CODE XREF: ctgp_load+1370↓p .text0:80009CEC .text0:80009CEC .set back_chain, -0x58 .text0:80009CEC .set stream, -0x50 .text0:80009CEC .set var_10, -0x10 .text0:80009CEC .set var_C, -0xC .text0:80009CEC .set var_8, -8 .text0:80009CEC .set var_4, -4 .text0:80009CEC .set sender_lr, 4 .text0:80009CEC .text0:80009CEC stwu r1, back_chain(r1) .text0:80009CF0 mflr r0 .text0:80009CF4 stw r29, 0x58+var_C(r1) .text0:80009CF8 mr r29, r5 .text0:80009CFC stw r30, 0x58+var_8(r1) .text0:80009D00 li r5, 0x38 .text0:80009D04 stw r31, 0x58+var_4(r1) .text0:80009D08 mr r30, r4 .text0:80009D0C mr r31, r3 .text0:80009D10 li r4, 0 .text0:80009D14 addi r3, r1, 0x58+stream .text0:80009D18 stw r0, 0x58+sender_lr(r1) .text0:80009D1C stw r28, 0x58+var_10(r1) .text0:80009D20 mr r28, r6 .text0:80009D24 bl memset .text0:80009D28 lwz r9, 0(r30) .text0:80009D2C addi r3, r1, 0x58+stream .text0:80009D30 li r4, 0xF .text0:80009D34 stw r31, 0x58+stream.next_out(r1) .text0:80009D38 stw r29, 0x58+stream(r1) .text0:80009D3C stw r28, 0x58+stream.avail_in(r1) .text0:80009D40 stw r9, 0x58+stream.avail_out(r1) .text0:80009D44 bl mz_inflateInit .text0:80009D48 mr. r31, r3 .text0:80009D4C beq loc_80009D74 .text0:80009D50 .text0:80009D50 loc_80009D50: # CODE XREF: ctgp_uncompress+C4↓j .text0:80009D50 # ctgp_uncompress+D0↓j ... .text0:80009D50 lwz r0, 0x58+sender_lr(r1) .text0:80009D54 mr r3, r31 .text0:80009D58 lwz r28, 0x58+var_10(r1) .text0:80009D5C mtlr r0 .text0:80009D60 lwz r29, 0x58+var_C(r1) .text0:80009D64 lwz r30, 0x58+var_8(r1) .text0:80009D68 lwz r31, 0x58+var_4(r1) .text0:80009D6C addi r1, r1, 0x58 .text0:80009D70 blr .text0:80009D74 # --------------------------------------------------------------------------- .text0:80009D74 .text0:80009D74 loc_80009D74: # CODE XREF: ctgp_uncompress+60↑j .text0:80009D74 li r4, 4 .text0:80009D78 addi r3, r1, 0x58+stream .text0:80009D7C bl mz_inflate .text0:80009D80 lwz r4, 0x58+stream.state(r1) .text0:80009D84 cmpwi cr7, r3, 1 .text0:80009D88 mr r29, r3 .text0:80009D8C beq cr7, loc_80009DC8 .text0:80009D90 cmpwi cr7, r4, 0 .text0:80009D94 beq cr7, loc_80009DA8 .text0:80009D98 lwz r9, 0x58+stream.zfree(r1) .text0:80009D9C lwz r3, 0x58+stream.opaque(r1) .text0:80009DA0 mtctr r9 .text0:80009DA4 bctrl .text0:80009DA8 .text0:80009DA8 loc_80009DA8: # CODE XREF: ctgp_uncompress+A8↑j .text0:80009DA8 cmpwi cr7, r29, -5 .text0:80009DAC mr r31, r29 .text0:80009DB0 bne cr7, loc_80009D50 .text0:80009DB4 lwz r9, 0x58+stream.avail_in(r1) .text0:80009DB8 cmpwi cr7, r9, 0 .text0:80009DBC bne cr7, loc_80009D50 .text0:80009DC0 li r31, -3 .text0:80009DC4 b loc_80009D50 .text0:80009DC8 # --------------------------------------------------------------------------- .text0:80009DC8 .text0:80009DC8 loc_80009DC8: # CODE XREF: ctgp_uncompress+A0↑j .text0:80009DC8 cmpwi cr7, r4, 0 .text0:80009DCC lwz r9, 0x58+stream.total_out(r1) .text0:80009DD0 stw r9, 0(r30) .text0:80009DD4 beq- cr7, loc_80009D50 .text0:80009DD8 lwz r9, 0x58+stream.zfree(r1) .text0:80009DDC lwz r3, 0x58+stream.opaque(r1) .text0:80009DE0 mtctr r9 .text0:80009DE4 bctrl .text0:80009DE8 b loc_80009D50 .text0:80009DE8 # End of function ctgp_uncompress .text0:80009DE8 .text0:80009DEC .text0:80009DEC # =============== S U B R O U T I N E ======================================= .text0:80009DEC .text0:80009DEC .text0:80009DEC ctgp_obfus_fn1: # CODE XREF: ctgp_load+78↓p .text0:80009DEC # ctgp_load+124↓p ... .text0:80009DEC addi r3, r3, -5 .text0:80009DF0 blr .text0:80009DF0 # End of function ctgp_obfus_fn1 .text0:80009DF0 .text0:80009DF4 .text0:80009DF4 # =============== S U B R O U T I N E ======================================= .text0:80009DF4 .text0:80009DF4 .text0:80009DF4 ctgp_obfus_fn2: # CODE XREF: ctgp_load+1BC↓p .text0:80009DF4 # ctgp_load+398↓p ... .text0:80009DF4 cmpwi cr7, r3, 20 .text0:80009DF8 bgt cr7, loc_80009E04 .text0:80009DFC addi r3, r3, 5 .text0:80009E00 blr .text0:80009E04 # --------------------------------------------------------------------------- .text0:80009E04 .text0:80009E04 loc_80009E04: # CODE XREF: ctgp_obfus_fn2+4↑j .text0:80009E04 addi r3, r3, -5 .text0:80009E08 blr .text0:80009E08 # End of function ctgp_obfus_fn2 .text0:80009E08 .text0:80009E0C .text0:80009E0C # =============== S U B R O U T I N E ======================================= .text0:80009E0C .text0:80009E0C .text0:80009E0C ctgp_obfus_fn3_ok: # CODE XREF: ctgp_load+6C↓p .text0:80009E0C # ctgp_load+D0↓p ... .text0:80009E0C cmpwi cr7, r3, 500 .text0:80009E10 ble cr7, loc_80009E18 .text0:80009E14 addi r3, r3, -20 .text0:80009E18 .text0:80009E18 loc_80009E18: # CODE XREF: ctgp_obfus_fn3_ok+4↑j .text0:80009E18 srawi r3, r3, 1 .text0:80009E1C addze r3, r3 .text0:80009E20 blr .text0:80009E20 # End of function ctgp_obfus_fn3_ok .text0:80009E20 .text0:80009E24 .text0:80009E24 # =============== S U B R O U T I N E ======================================= .text0:80009E24 .text0:80009E24 .text0:80009E24 ctgp_obfus_fn4: # CODE XREF: ctgp_load+76C↓p .text0:80009E24 # ctgp_load+E58↓p ... .text0:80009E24 addi r3, r3, 13 .text0:80009E28 blr .text0:80009E28 # End of function ctgp_obfus_fn4 .text0:80009E28 .text0:80009E2C .text0:80009E2C # =============== S U B R O U T I N E ======================================= .text0:80009E2C .text0:80009E2C .text0:80009E2C ctgp_obfus_fn5: # CODE XREF: ctgp_load+BF0↓p .text0:80009E2C # ctgp_load+CF0↓p ... .text0:80009E2C slwi r3, r3, 1 .text0:80009E30 blr .text0:80009E30 # End of function ctgp_obfus_fn5 .text0:80009E30 .text0:80009E34 .text0:80009E34 # =============== S U B R O U T I N E ======================================= .text0:80009E34 .text0:80009E34 # Main function responsible for loading stage 4. .text0:80009E34 # .text0:80009E34 # stage 1: initial DOL .text0:80009E34 # stage 2: embedded DOL in initial DOL .text0:80009E34 # stage 3: this DOL, loaded from blob.bin on the SD .text0:80009E34 # stage 4: embedded DOL in this DOL, the actual loader .text0:80009E34 # .text0:80009E34 # decrypts the embedded DOL data, .text0:80009E34 # uncompresses it using miniz (mz_inflate) to 0x91000000, .text0:80009E34 # then copies it to MEM1 before branching to it. .text0:80009E34 # .text0:80009E34 # This is very similar to stage1, but this code (stage3) .text0:80009E34 # seemingly has additional anti-emulation code: .text0:80009E34 # the ctgp_obfus_fn* functions, that are used for decryption, .text0:80009E34 # are overwritten at runtime. But the newly written .text0:80009E34 # instruction may not actually be taken into effect, .text0:80009E34 # since the code does not always dcbf/icbi/sync/isync. .text0:80009E34 # .text0:80009E34 # Dolphin seems to trip up on this, which means .text0:80009E34 # the calculated data is wrong, so mz_inflate fails. .text0:80009E34 # 0x91000000 is untouched and so we branch to 0x0. .text0:80009E34 .text0:80009E34 ctgp_load: # CODE XREF: main+BC↑p .text0:80009E34 # DATA XREF: .data0:80117EB8↓o .text0:80009E34 .text0:80009E34 .set back_chain, -0x38 .text0:80009E34 .set var_30, -0x30 .text0:80009E34 .set var_1C, -0x1C .text0:80009E34 .set var_18, -0x18 .text0:80009E34 .set var_14, -0x14 .text0:80009E34 .set var_10, -0x10 .text0:80009E34 .set var_C, -0xC .text0:80009E34 .set var_8, -8 .text0:80009E34 .set var_4, -4 .text0:80009E34 .set sender_lr, 4 .text0:80009E34 .text0:80009E34 stwu r1, back_chain(r1) .text0:80009E38 mflr r0 .text0:80009E3C stw r30, 0x38+var_8(r1) .text0:80009E40 lis r30, byte_80117EC4@ha .text0:80009E44 lbz r9, byte_80117EC4@l(r30) .text0:80009E48 stw r0, 0x38+sender_lr(r1) .text0:80009E4C mulli r9, r9, 6 .text0:80009E50 stw r25, 0x38+var_1C(r1) .text0:80009E54 stw r26, 0x38+var_18(r1) .text0:80009E58 stw r27, 0x38+var_14(r1) .text0:80009E5C clrlwi r9, r9, 24 .text0:80009E60 stw r28, 0x38+var_10(r1) .text0:80009E64 addi r10, r9, -3 .text0:80009E68 stw r29, 0x38+var_C(r1) .text0:80009E6C clrlwi r10, r10, 24 .text0:80009E70 stw r31, 0x38+var_4(r1) .text0:80009E74 addi r31, r30, byte_80117EC4@l .text0:80009E78 addi r7, r9, -0x64 .text0:80009E7C addi r3, r10, 0xFD .text0:80009E80 lbz r8, (byte_80117ECB - 0x80117EC4)(r31) .text0:80009E84 addi r9, r9, 0x2E .text0:80009E88 stb r10, (byte_80117F0B - 0x80117EC4)(r31) .text0:80009E8C lis r29, -0x5556 .text0:80009E90 stb r7, (byte_80117F57 - 0x80117EC4)(r31) .text0:80009E94 ori r29, r29, 0xAAAB # 0xAAAAAAAB .text0:80009E98 stb r8, (byte_80117EF6 - 0x80117EC4)(r31) .text0:80009E9C stb r9, (byte_80117F53 - 0x80117EC4)(r31) .text0:80009EA0 bl ctgp_obfus_fn3_ok .text0:80009EA4 stb r3, (byte_80117F88 - 0x80117EC4)(r31) .text0:80009EA8 li r3, 0x11 .text0:80009EAC bl ctgp_obfus_fn1 .text0:80009EB0 lbz r8, (byte_80117F88 - 0x80117EC4)(r31) .text0:80009EB4 lis r7, -0x3334 .text0:80009EB8 mulli r3, r3, 0xC .text0:80009EBC ori r7, r7, 0xCCCD # 0xCCCCCCCD .text0:80009EC0 lbz r9, (byte_80117F57 - 0x80117EC4)(r31) .text0:80009EC4 mulhwu r7, r8, r7 .text0:80009EC8 clrlwi r10, r3, 24 .text0:80009ECC li r3, 6 .text0:80009ED0 stb r10, (byte_80117F8C - 0x80117EC4)(r31) .text0:80009ED4 mulhwu r6, r10, r29 .text0:80009ED8 srwi r5, r7, 5 .text0:80009EDC add r9, r5, r9 .text0:80009EE0 clrlwi r9, r9, 24 .text0:80009EE4 subf r8, r9, r8 .text0:80009EE8 stb r9, (byte_80117ECE - 0x80117EC4)(r31) .text0:80009EEC srwi r6, r6, 3 .text0:80009EF0 srwi r7, r7, 4 .text0:80009EF4 addi r6, r6, 0xB .text0:80009EF8 clrlwi r28, r8, 24 .text0:80009EFC stb r6, (byte_80117F54 - 0x80117EC4)(r31) .text0:80009F00 stb r7, (byte_80117EDB - 0x80117EC4)(r31) .text0:80009F04 bl ctgp_obfus_fn3_ok .text0:80009F08 add r28, r28, r3 .text0:80009F0C lbz r3, (byte_80117F88 - 0x80117EC4)(r31) .text0:80009F10 stb r28, (byte_80117FBB - 0x80117EC4)(r31) .text0:80009F14 bl ctgp_obfus_fn3_ok .text0:80009F18 lbz r8, (byte_80117EDB - 0x80117EC4)(r31) .text0:80009F1C lbz r9, (byte_80117F0B - 0x80117EC4)(r31) .text0:80009F20 addi r7, r3, -1 .text0:80009F24 lbz r6, (byte_80117F88 - 0x80117EC4)(r31) .text0:80009F28 li r3, 0x8D .text0:80009F2C lbz r10, (byte_80117F54 - 0x80117EC4)(r31) .text0:80009F30 add r9, r8, r9 .text0:80009F34 addi r6, r6, 7 .text0:80009F38 clrlwi r9, r9, 24 .text0:80009F3C slwi r10, r10, 1 .text0:80009F40 addi r8, r9, 4 .text0:80009F44 add r10, r6, r10 .text0:80009F48 stb r7, (byte_80117F58 - 0x80117EC4)(r31) .text0:80009F4C stb r9, (byte_80117F27 - 0x80117EC4)(r31) .text0:80009F50 stb r8, (byte_80117F61 - 0x80117EC4)(r31) .text0:80009F54 stb r10, (byte_80117F65 - 0x80117EC4)(r31) .text0:80009F58 bl ctgp_obfus_fn1 .text0:80009F5C stb r3, (byte_80117FC1 - 0x80117EC4)(r31) .text0:80009F60 li r3, 0xF .text0:80009F64 lbz r27, (byte_80117F88 - 0x80117EC4)(r31) .text0:80009F68 bl ctgp_obfus_fn1 .text0:80009F6C lbz r9, (byte_80117F57 - 0x80117EC4)(r31) .text0:80009F70 lbz r7, (byte_80117FC1 - 0x80117EC4)(r31) .text0:80009F74 srwi r27, r27, 1 .text0:80009F78 addi r8, r9, -4 .text0:80009F7C lbz r28, (byte_80117F54 - 0x80117EC4)(r31) .text0:80009F80 addi r7, r7, -0x14 .text0:80009F84 clrlwi r8, r8, 24 .text0:80009F88 clrlwi r7, r7, 24 .text0:80009F8C slwi r9, r9, 1 .text0:80009F90 add r10, r8, r7 .text0:80009F94 subf r27, r3, r27 .text0:80009F98 clrlwi r10, r10, 24 .text0:80009F9C addi r9, r9, 3 .text0:80009FA0 add r28, r10, r28 .text0:80009FA4 li r3, 0xC .text0:80009FA8 clrlwi r28, r28, 24 .text0:80009FAC stb r27, (byte_80117F4C - 0x80117EC4)(r31) .text0:80009FB0 stb r9, (byte_80117F1E - 0x80117EC4)(r31) .text0:80009FB4 stb r7, (byte_80117F2B - 0x80117EC4)(r31) .text0:80009FB8 stb r8, (byte_80117F38 - 0x80117EC4)(r31) .text0:80009FBC stb r10, (byte_80117EF2 - 0x80117EC4)(r31) .text0:80009FC0 bl ctgp_obfus_fn1 .text0:80009FC4 lbz r10, (byte_80117F54 - 0x80117EC4)(r31) .text0:80009FC8 add r3, r28, r3 .text0:80009FCC lbz r7, (byte_80117F4C - 0x80117EC4)(r31) .text0:80009FD0 clrlwi r9, r3, 24 .text0:80009FD4 addi r8, r10, 3 .text0:80009FD8 li r3, 3 .text0:80009FDC add r10, r10, r7 .text0:80009FE0 add r8, r9, r8 .text0:80009FE4 stb r9, (byte_80117F66 - 0x80117EC4)(r31) .text0:80009FE8 stb r8, (byte_80117F84 - 0x80117EC4)(r31) .text0:80009FEC stb r10, (byte_80117F9E - 0x80117EC4)(r31) .text0:80009FF0 bl ctgp_obfus_fn2 .text0:80009FF4 stb r3, (byte_80117F35 - 0x80117EC4)(r31) .text0:80009FF8 lbz r3, (byte_80117F88 - 0x80117EC4)(r31) .text0:80009FFC bl ctgp_obfus_fn3_ok .text0:8000A000 lbz r10, (byte_80117F4C - 0x80117EC4)(r31) .text0:8000A004 addi r9, r3, 1 .text0:8000A008 lbz r3, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000A00C clrlwi r9, r9, 24 .text0:8000A010 lbz r28, (byte_80117F84 - 0x80117EC4)(r31) .text0:8000A014 add r8, r9, r3 .text0:8000A018 subf r10, r3, r10 .text0:8000A01C stb r8, (byte_80117F29 - 0x80117EC4)(r31) .text0:8000A020 stb r10, (byte_80117F33 - 0x80117EC4)(r31) .text0:8000A024 stb r9, (byte_80117ECC - 0x80117EC4)(r31) .text0:8000A028 bl ctgp_obfus_fn3_ok .text0:8000A02C add r28, r28, r3 .text0:8000A030 lbz r3, (byte_80117ECE - 0x80117EC4)(r31) .text0:8000A034 clrlwi r28, r28, 24 .text0:8000A038 stb r28, (byte_80117F14 - 0x80117EC4)(r31) .text0:8000A03C bl ctgp_obfus_fn1 .text0:8000A040 lbz r9, (byte_80117F66 - 0x80117EC4)(r31) .text0:8000A044 subf r28, r3, r28 .text0:8000A048 lbz r3, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000A04C srwi r9, r9, 1 .text0:8000A050 lbz r27, (byte_80117F2B - 0x80117EC4)(r31) .text0:8000A054 stb r28, (byte_80117FA3 - 0x80117EC4)(r31) .text0:8000A058 stb r9, (byte_80117F71 - 0x80117EC4)(r31) .text0:8000A05C bl ctgp_obfus_fn3_ok .text0:8000A060 lbz r9, (byte_80117F14 - 0x80117EC4)(r31) .text0:8000A064 add r27, r27, r3 .text0:8000A068 lbz r3, (byte_80117F8C - 0x80117EC4)(r31) .text0:8000A06C addi r9, r9, 0x1F .text0:8000A070 stb r27, (byte_80117F24 - 0x80117EC4)(r31) .text0:8000A074 stb r9, (byte_80117F3D - 0x80117EC4)(r31) .text0:8000A078 bl ctgp_obfus_fn3_ok .text0:8000A07C stb r3, (byte_80117FC2 - 0x80117EC4)(r31) .text0:8000A080 lbz r3, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000A084 bl ctgp_obfus_fn3_ok .text0:8000A088 lbz r10, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000A08C lbz r9, (byte_80117F58 - 0x80117EC4)(r31) .text0:8000A090 mulli r8, r10, -5 .text0:8000A094 lbz r7, (byte_80117FA3 - 0x80117EC4)(r31) .text0:8000A098 stb r3, (byte_80117F0C - 0x80117EC4)(r31) .text0:8000A09C li r3, 6 .text0:8000A0A0 add r9, r8, r9 .text0:8000A0A4 add r10, r10, r7 .text0:8000A0A8 clrlwi r9, r9, 24 .text0:8000A0AC addi r10, r10, 3 .text0:8000A0B0 slwi r8, r9, 1 .text0:8000A0B4 lbz r28, (byte_80117F88 - 0x80117EC4)(r31) .text0:8000A0B8 addi r8, r8, 0x1B .text0:8000A0BC stb r9, (byte_80117EC9 - 0x80117EC4)(r31) .text0:8000A0C0 stb r8, (byte_80117EF5 - 0x80117EC4)(r31) .text0:8000A0C4 stb r10, (byte_80117F41 - 0x80117EC4)(r31) .text0:8000A0C8 bl ctgp_obfus_fn1 .text0:8000A0CC lbz r27, (byte_80117F8C - 0x80117EC4)(r31) .text0:8000A0D0 add r7, r28, r3 .text0:8000A0D4 lbz r8, (byte_80117FC2 - 0x80117EC4)(r31) .text0:8000A0D8 clrlwi r7, r7, 24 .text0:8000A0DC lbz r4, (byte_80117EC9 - 0x80117EC4)(r31) .text0:8000A0E0 mulhwu r29, r27, r29 .text0:8000A0E4 addi r8, r8, -0xB .text0:8000A0E8 lbz r0, (byte_80117F35 - 0x80117EC4)(r31) .text0:8000A0EC clrlwi r8, r8, 24 .text0:8000A0F0 lbz r6, (byte_80117F0C - 0x80117EC4)(r31) .text0:8000A0F4 lbz r11, (byte_80117F24 - 0x80117EC4)(r31) .text0:8000A0F8 addi r9, r8, 2 .text0:8000A0FC addi r10, r4, -4 .text0:8000A100 clrlslwi r9, r9, 25,1 .text0:8000A104 clrlwi r10, r10, 24 .text0:8000A108 lbz r5, (byte_80117EF5 - 0x80117EC4)(r31) .text0:8000A10C add r3, r6, r0 .text0:8000A110 lbz r26, (byte_80117ECC - 0x80117EC4)(r31) .text0:8000A114 lbz r12, (byte_80117F33 - 0x80117EC4)(r31) .text0:8000A118 subfic r25, r11, 0x64 .text0:8000A11C add r4, r11, r4 .text0:8000A120 addi r0, r10, -3 .text0:8000A124 srwi r27, r29, 3 .text0:8000A128 addi r3, r3, -1 .text0:8000A12C addi r29, r9, 0xD .text0:8000A130 addi r12, r12, -0x12 .text0:8000A134 add r6, r6, r3 .text0:8000A138 slwi r0, r0, 1 .text0:8000A13C add r25, r7, r25 .text0:8000A140 addi r4, r4, 1 .text0:8000A144 addi r28, r9, 0x1C .text0:8000A148 clrlwi r29, r29, 24 .text0:8000A14C add r27, r5, r27 .text0:8000A150 addi r26, r26, 4 .text0:8000A154 addi r5, r5, 0x1E .text0:8000A158 li r3, 0xB .text0:8000A15C stb r12, (byte_80117F2D - 0x80117EC4)(r31) .text0:8000A160 stb r0, (byte_80117F4F - 0x80117EC4)(r31) .text0:8000A164 stb r7, (byte_80117F7E - 0x80117EC4)(r31) .text0:8000A168 stb r4, (byte_80117F4D - 0x80117EC4)(r31) .text0:8000A16C stb r5, (byte_80117F6F - 0x80117EC4)(r31) .text0:8000A170 stb r6, (byte_80117F01 - 0x80117EC4)(r31) .text0:8000A174 stb r8, (byte_80117F5F - 0x80117EC4)(r31) .text0:8000A178 stb r10, (byte_80117ED5 - 0x80117EC4)(r31) .text0:8000A17C stb r9, (byte_80117EF1 - 0x80117EC4)(r31) .text0:8000A180 stb r28, (byte_80117F42 - 0x80117EC4)(r31) .text0:8000A184 stb r29, (byte_80117F5E - 0x80117EC4)(r31) .text0:8000A188 stb r25, (byte_80117F8D - 0x80117EC4)(r31) .text0:8000A18C stb r26, (byte_80117F78 - 0x80117EC4)(r31) .text0:8000A190 stb r27, (byte_80117F02 - 0x80117EC4)(r31) .text0:8000A194 bl ctgp_obfus_fn1 .text0:8000A198 subf r3, r3, r29 .text0:8000A19C lbz r10, (byte_80117F42 - 0x80117EC4)(r31) .text0:8000A1A0 lbz r9, (byte_80117F7E - 0x80117EC4)(r31) .text0:8000A1A4 clrlwi r29, r3, 24 .text0:8000A1A8 addi r8, r29, -0x12 .text0:8000A1AC addi r10, r10, 0x16 .text0:8000A1B0 addi r9, r9, 0xD .text0:8000A1B4 li r3, -4 .text0:8000A1B8 stb r8, (byte_80117F49 - 0x80117EC4)(r31) .text0:8000A1BC stb r10, (byte_80117F37 - 0x80117EC4)(r31) .text0:8000A1C0 lbz r28, (byte_80117F3D - 0x80117EC4)(r31) .text0:8000A1C4 stb r29, (byte_80117F18 - 0x80117EC4)(r31) .text0:8000A1C8 stb r9, (byte_80117F74 - 0x80117EC4)(r31) .text0:8000A1CC bl ctgp_obfus_fn2 .text0:8000A1D0 lbz r9, (byte_80117F18 - 0x80117EC4)(r31) .text0:8000A1D4 add r28, r28, r3 .text0:8000A1D8 li r3, 4 .text0:8000A1DC lbz r29, (byte_80117F7E - 0x80117EC4)(r31) .text0:8000A1E0 addi r9, r9, -0xF .text0:8000A1E4 stb r28, (byte_80117F9A - 0x80117EC4)(r31) .text0:8000A1E8 stb r9, (byte_80117FC3 - 0x80117EC4)(r31) .text0:8000A1EC bl ctgp_obfus_fn3_ok .text0:8000A1F0 lbz r10, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000A1F4 subf r3, r3, r29 .text0:8000A1F8 clrlwi r9, r3, 24 .text0:8000A1FC lbz r11, (byte_80117F8C - 0x80117EC4)(r31) .text0:8000A200 mulli r7, r10, -4 .text0:8000A204 lbz r5, (byte_80117FC3 - 0x80117EC4)(r31) .text0:8000A208 mulli r8, r10, -0xA .text0:8000A20C lbz r6, (byte_80117F54 - 0x80117EC4)(r31) .text0:8000A210 add r7, r9, r7 .text0:8000A214 slwi r10, r10, 1 .text0:8000A218 clrlwi r7, r7, 24 .text0:8000A21C lbz r3, (byte_80117F05 - 0x80117EC4)(r31) .text0:8000A220 add r8, r7, r8 .text0:8000A224 add r10, r9, r10 .text0:8000A228 clrlwi r8, r8, 24 .text0:8000A22C addi r11, r11, -2 .text0:8000A230 addi r4, r8, -8 .text0:8000A234 addi r5, r5, 1 .text0:8000A238 addi r6, r6, -0x34 .text0:8000A23C stb r10, (byte_80117F63 - 0x80117EC4)(r31) .text0:8000A240 stb r9, (byte_80117F3A - 0x80117EC4)(r31) .text0:8000A244 stb r7, (byte_80117F8B - 0x80117EC4)(r31) .text0:8000A248 stb r8, (byte_80117F9F - 0x80117EC4)(r31) .text0:8000A24C stb r11, (byte_80117EFF - 0x80117EC4)(r31) .text0:8000A250 stb r4, (byte_80117F52 - 0x80117EC4)(r31) .text0:8000A254 stb r5, (byte_80117EF7 - 0x80117EC4)(r31) .text0:8000A258 stb r6, (byte_80117F3B - 0x80117EC4)(r31) .text0:8000A25C bl ctgp_obfus_fn3_ok .text0:8000A260 li r9, 0 .text0:8000A264 li r3, 0x71 .text0:8000A268 stb r9, (byte_80117FA7 - 0x80117EC4)(r31) .text0:8000A26C bl ctgp_obfus_fn2 .text0:8000A270 lbz r9, (byte_80117F42 - 0x80117EC4)(r31) .text0:8000A274 stb r3, byte_80117EC4@l(r30) .text0:8000A278 addi r9, r9, 0xB .text0:8000A27C stb r9, (byte_80117F30 - 0x80117EC4)(r31) .text0:8000A280 lis r9, 0x8000 .text0:8000A284 ori r9, r9, 0xC00 # 0x80000C00 .text0:8000A288 lwz r9, 0(r9) .text0:8000A28C xoris r10, r9, 0xBC00 .text0:8000A290 cmpwi cr7, r10, 0x2000 .text0:8000A294 beq cr7, loc_8000B200 .text0:8000A298 lis r10, 0x4800 .text0:8000A29C cmpw cr7, r9, r10 .text0:8000A2A0 beq cr7, loc_8000B200 .text0:8000A2A4 .text0:8000A2A4 loc_8000A2A4: # CODE XREF: ctgp_load+13E4↓j .text0:8000A2A4 lbz r3, (byte_80117F88 - 0x80117EC4)(r31) .text0:8000A2A8 bl ctgp_obfus_fn3_ok .text0:8000A2AC mr r29, r3 .text0:8000A2B0 lbz r3, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000A2B4 bl ctgp_obfus_fn3_ok .text0:8000A2B8 subf r29, r3, r29 .text0:8000A2BC li r3, 0x2F .text0:8000A2C0 stb r29, (byte_80117F69 - 0x80117EC4)(r31) .text0:8000A2C4 bl ctgp_obfus_fn1 .text0:8000A2C8 lbz r8, byte_80117EC4@l(r30) .text0:8000A2CC clrlwi r7, r3, 24 .text0:8000A2D0 lbz r9, (byte_80117F35 - 0x80117EC4)(r31) .text0:8000A2D4 lbz r10, (byte_80117F3A - 0x80117EC4)(r31) .text0:8000A2D8 subf r9, r9, r8 .text0:8000A2DC lbz r6, (byte_80117F3B - 0x80117EC4)(r31) .text0:8000A2E0 clrlwi r9, r9, 24 .text0:8000A2E4 addi r10, r10, -0x1E .text0:8000A2E8 srwi r8, r9, 1 .text0:8000A2EC clrlwi r10, r10, 24 .text0:8000A2F0 add r8, r9, r8 .text0:8000A2F4 addi r6, r6, -1 .text0:8000A2F8 clrlwi r8, r8, 24 .text0:8000A2FC addi r3, r10, 1 .text0:8000A300 addi r5, r8, 1 .text0:8000A304 stb r7, (byte_80117F23 - 0x80117EC4)(r31) .text0:8000A308 add r5, r7, r5 .text0:8000A30C stb r9, (byte_80117EEE - 0x80117EC4)(r31) .text0:8000A310 stb r5, (byte_80117F5A - 0x80117EC4)(r31) .text0:8000A314 stb r8, (byte_80117F28 - 0x80117EC4)(r31) .text0:8000A318 stb r6, (byte_80117F85 - 0x80117EC4)(r31) .text0:8000A31C stb r10, (byte_80117FA6 - 0x80117EC4)(r31) .text0:8000A320 bl ctgp_obfus_fn3_ok .text0:8000A324 stb r3, (byte_80117F6D - 0x80117EC4)(r31) .text0:8000A328 li r3, 0 .text0:8000A32C lbz r29, (byte_80117F23 - 0x80117EC4)(r31) .text0:8000A330 bl ctgp_obfus_fn2 .text0:8000A334 lbz r30, byte_80117EC4@l(r30) .text0:8000A338 add r29, r29, r3 .text0:8000A33C li r3, 0x19 .text0:8000A340 stb r29, (byte_80117F19 - 0x80117EC4)(r31) .text0:8000A344 bl ctgp_obfus_fn1 .text0:8000A348 add r3, r30, r3 .text0:8000A34C lbz r8, (byte_80117F23 - 0x80117EC4)(r31) .text0:8000A350 clrlwi r9, r3, 24 .text0:8000A354 lbz r10, (byte_80117F9F - 0x80117EC4)(r31) .text0:8000A358 add r8, r9, r8 .text0:8000A35C lbz r30, (byte_80117F8C - 0x80117EC4)(r31) .text0:8000A360 clrlwi r8, r8, 24 .text0:8000A364 addi r7, r10, 4 .text0:8000A368 addi r6, r8, 0xD .text0:8000A36C addi r10, r10, 7 .text0:8000A370 addi r8, r8, -0x2F .text0:8000A374 li r3, 8 .text0:8000A378 stb r6, (byte_80117F44 - 0x80117EC4)(r31) .text0:8000A37C stb r7, (byte_80117F7B - 0x80117EC4)(r31) .text0:8000A380 stb r8, (byte_80117F03 - 0x80117EC4)(r31) .text0:8000A384 stb r10, (byte_80117F3F - 0x80117EC4)(r31) .text0:8000A388 stb r9, (byte_80117EF3 - 0x80117EC4)(r31) .text0:8000A38C bl ctgp_obfus_fn1 .text0:8000A390 subf r9, r3, r30 .text0:8000A394 li r3, 2 .text0:8000A398 lbz r30, (byte_80117F88 - 0x80117EC4)(r31) .text0:8000A39C stb r9, (byte_80117F06 - 0x80117EC4)(r31) .text0:8000A3A0 bl ctgp_obfus_fn2 .text0:8000A3A4 lbz r9, (byte_80117F03 - 0x80117EC4)(r31) .text0:8000A3A8 add r10, r30, r3 .text0:8000A3AC lbz r30, (byte_80117FA7 - 0x80117EC4)(r31) .text0:8000A3B0 li r3, 0xE .text0:8000A3B4 addi r9, r9, 0xB .text0:8000A3B8 stb r10, (byte_80117F51 - 0x80117EC4)(r31) .text0:8000A3BC stb r9, (byte_80117F93 - 0x80117EC4)(r31) .text0:8000A3C0 bl ctgp_obfus_fn1 .text0:8000A3C4 add r3, r30, r3 .text0:8000A3C8 clrlwi r9, r3, 24 .text0:8000A3CC slwi r3, r9, 2 .text0:8000A3D0 stb r9, (byte_80117F4A - 0x80117EC4)(r31) .text0:8000A3D4 bl ctgp_obfus_fn3_ok .text0:8000A3D8 mr r9, r3 .text0:8000A3DC clrlslwi r3, r3, 24,2 .text0:8000A3E0 stb r9, (byte_80117ECD - 0x80117EC4)(r31) .text0:8000A3E4 bl ctgp_obfus_fn3_ok .text0:8000A3E8 mr r9, r3 .text0:8000A3EC clrlslwi r3, r3, 24,2 .text0:8000A3F0 stb r9, (byte_80117ED6 - 0x80117EC4)(r31) .text0:8000A3F4 bl ctgp_obfus_fn3_ok .text0:8000A3F8 addi r3, r3, 7 .text0:8000A3FC clrlwi r9, r3, 24 .text0:8000A400 slwi r3, r9, 2 .text0:8000A404 stb r9, (byte_80117EE8 - 0x80117EC4)(r31) .text0:8000A408 bl ctgp_obfus_fn3_ok .text0:8000A40C addi r3, r3, -7 .text0:8000A410 clrlwi r9, r3, 24 .text0:8000A414 addi r3, r9, -1 .text0:8000A418 stb r9, (byte_80117F13 - 0x80117EC4)(r31) .text0:8000A41C bl ctgp_obfus_fn3_ok .text0:8000A420 lbz r8, (byte_80117F88 - 0x80117EC4)(r31) .text0:8000A424 clrlwi r9, r3, 24 .text0:8000A428 li r3, 0x46 .text0:8000A42C srwi r8, r8, 1 .text0:8000A430 slwi r10, r9, 1 .text0:8000A434 addi r8, r8, -1 .text0:8000A438 addi r10, r10, 3 .text0:8000A43C add r8, r9, r8 .text0:8000A440 stb r10, (byte_80117F72 - 0x80117EC4)(r31) .text0:8000A444 stb r8, (byte_80117F0F - 0x80117EC4)(r31) .text0:8000A448 stb r9, (byte_80117F5B - 0x80117EC4)(r31) .text0:8000A44C bl ctgp_obfus_fn2 .text0:8000A450 lbz r9, (byte_80117F0F - 0x80117EC4)(r31) .text0:8000A454 stb r3, (byte_80117F5D - 0x80117EC4)(r31) .text0:8000A458 li r3, 0xD0 .text0:8000A45C addi r9, r9, 7 .text0:8000A460 stb r9, (byte_80117F05 - 0x80117EC4)(r31) .text0:8000A464 bl ctgp_obfus_fn3_ok .text0:8000A468 lbz r10, (byte_80117EC5 - 0x80117EC4)(r31) .text0:8000A46C clrlwi r8, r3, 24 .text0:8000A470 lbz r9, (byte_80117F13 - 0x80117EC4)(r31) .text0:8000A474 addi r7, r8, -7 .text0:8000A478 divwu r10, r10, r10 .text0:8000A47C lbz r5, (byte_80117F4A - 0x80117EC4)(r31) .text0:8000A480 slwi r6, r9, 1 .text0:8000A484 stb r8, (byte_80117F79 - 0x80117EC4)(r31) .text0:8000A488 addi r5, r5, 5 .text0:8000A48C stb r7, (byte_80117F68 - 0x80117EC4)(r31) .text0:8000A490 addi r6, r6, -0x35 .text0:8000A494 stb r5, (byte_80117F2C - 0x80117EC4)(r31) .text0:8000A498 li r3, 0x19 .text0:8000A49C stb r6, (byte_80117EC5 - 0x80117EC4)(r31) .text0:8000A4A0 mulli r30, r10, 0xD .text0:8000A4A4 stb r10, (byte_80117ED2 - 0x80117EC4)(r31) .text0:8000A4A8 add r30, r9, r30 .text0:8000A4AC clrlwi r30, r30, 24 .text0:8000A4B0 stb r30, (byte_80117FBD - 0x80117EC4)(r31) .text0:8000A4B4 bl ctgp_obfus_fn1 .text0:8000A4B8 add r30, r30, r3 .text0:8000A4BC li r3, 0x1E .text0:8000A4C0 lbz r29, (byte_80117F79 - 0x80117EC4)(r31) .text0:8000A4C4 stb r30, (byte_80117F25 - 0x80117EC4)(r31) .text0:8000A4C8 bl ctgp_obfus_fn1 .text0:8000A4CC lbz r30, (byte_80117F25 - 0x80117EC4)(r31) .text0:8000A4D0 add r29, r29, r3 .text0:8000A4D4 lbz r10, (byte_80117EC5 - 0x80117EC4)(r31) .text0:8000A4D8 li r3, 0xC .text0:8000A4DC lbz r9, (byte_80117F93 - 0x80117EC4)(r31) .text0:8000A4E0 addi r30, r30, 6 .text0:8000A4E4 addi r10, r10, -0x18 .text0:8000A4E8 clrlwi r30, r30, 24 .text0:8000A4EC addi r9, r9, 0xB .text0:8000A4F0 stb r10, (byte_80117F82 - 0x80117EC4)(r31) .text0:8000A4F4 stb r9, (byte_80117FA5 - 0x80117EC4)(r31) .text0:8000A4F8 stb r29, (byte_80117F7C - 0x80117EC4)(r31) .text0:8000A4FC stb r30, (byte_80117F45 - 0x80117EC4)(r31) .text0:8000A500 bl ctgp_obfus_fn1 .text0:8000A504 add r30, r30, r3 .text0:8000A508 li r3, 0x88 .text0:8000A50C stb r30, (byte_80117F55 - 0x80117EC4)(r31) .text0:8000A510 bl ctgp_obfus_fn3_ok .text0:8000A514 stb r3, (byte_80117F89 - 0x80117EC4)(r31) .text0:8000A518 li r3, 0 .text0:8000A51C lbz r30, (byte_80117EE8 - 0x80117EC4)(r31) .text0:8000A520 bl ctgp_obfus_fn2 .text0:8000A524 lbz r9, (byte_80117F2C - 0x80117EC4)(r31) .text0:8000A528 addi r30, r30, 2 .text0:8000A52C addi r9, r9, 1 .text0:8000A530 add r30, r30, r3 .text0:8000A534 slwi r9, r9, 1 .text0:8000A538 li r3, 0xB6 .text0:8000A53C stb r30, (byte_80117F08 - 0x80117EC4)(r31) .text0:8000A540 stb r9, (byte_80117F1A - 0x80117EC4)(r31) .text0:8000A544 bl ctgp_obfus_fn3_ok .text0:8000A548 lbz r9, (byte_80117F55 - 0x80117EC4)(r31) .text0:8000A54C stb r3, (byte_80117EE2 - 0x80117EC4)(r31) .text0:8000A550 li r3, -3 .text0:8000A554 addi r9, r9, -0x1E .text0:8000A558 lbz r30, (byte_80117F1A - 0x80117EC4)(r31) .text0:8000A55C stb r9, (byte_80117F1F - 0x80117EC4)(r31) .text0:8000A560 bl ctgp_obfus_fn2 .text0:8000A564 lbz r9, (byte_80117F1A - 0x80117EC4)(r31) .text0:8000A568 mullw r30, r30, r3 .text0:8000A56C lbz r10, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000A570 lbz r6, (byte_80117F82 - 0x80117EC4)(r31) .text0:8000A574 lbz r7, (byte_80117F08 - 0x80117EC4)(r31) .text0:8000A578 divwu r8, r9, r10 .text0:8000A57C lbz r3, (byte_80117FA5 - 0x80117EC4)(r31) .text0:8000A580 add r10, r10, r6 .text0:8000A584 stb r30, (byte_80117F6B - 0x80117EC4)(r31) .text0:8000A588 addi r7, r7, -0xD .text0:8000A58C slwi r7, r7, 1 .text0:8000A590 subf r9, r9, r10 .text0:8000A594 stb r7, (byte_80117EC7 - 0x80117EC4)(r31) .text0:8000A598 stb r9, (byte_80117F56 - 0x80117EC4)(r31) .text0:8000A59C stb r8, (byte_80117F00 - 0x80117EC4)(r31) .text0:8000A5A0 bl ctgp_obfus_fn4 .text0:8000A5A4 lbz r10, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000A5A8 lbz r8, (byte_80117F45 - 0x80117EC4)(r31) .text0:8000A5AC lbz r30, (byte_80117EC7 - 0x80117EC4)(r31) .text0:8000A5B0 mulli r10, r10, 5 .text0:8000A5B4 lbz r9, (byte_80117F00 - 0x80117EC4)(r31) .text0:8000A5B8 add r10, r10, r8 .text0:8000A5BC stb r3, (byte_80117F91 - 0x80117EC4)(r31) .text0:8000A5C0 add r9, r30, r9 .text0:8000A5C4 li r3, 6 .text0:8000A5C8 stb r10, (byte_80117F62 - 0x80117EC4)(r31) .text0:8000A5CC srwi r30, r30, 1 .text0:8000A5D0 stb r9, (byte_80117FB4 - 0x80117EC4)(r31) .text0:8000A5D4 bl ctgp_obfus_fn1 .text0:8000A5D8 lbz r8, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000A5DC add r30, r3, r30 .text0:8000A5E0 lbz r9, (byte_80117F91 - 0x80117EC4)(r31) .text0:8000A5E4 li r3, -3 .text0:8000A5E8 lbz r10, (byte_80117F6B - 0x80117EC4)(r31) .text0:8000A5EC add r9, r8, r9 .text0:8000A5F0 lbz r29, (byte_80117EE2 - 0x80117EC4)(r31) .text0:8000A5F4 clrlwi r9, r9, 24 .text0:8000A5F8 stb r30, (byte_80117F59 - 0x80117EC4)(r31) .text0:8000A5FC add r10, r9, r10 .text0:8000A600 stb r9, (byte_80117F0E - 0x80117EC4)(r31) .text0:8000A604 stb r10, (byte_80117F6C - 0x80117EC4)(r31) .text0:8000A608 bl ctgp_obfus_fn2 .text0:8000A60C lbz r10, (byte_80117F1A - 0x80117EC4)(r31) .text0:8000A610 add r29, r29, r3 .text0:8000A614 lbz r9, (byte_80117EC7 - 0x80117EC4)(r31) .text0:8000A618 li r3, 0x74 .text0:8000A61C addi r10, r10, 9 .text0:8000A620 stb r29, (byte_80117FA8 - 0x80117EC4)(r31) .text0:8000A624 addi r9, r9, -0xE .text0:8000A628 stb r10, (byte_80117F21 - 0x80117EC4)(r31) .text0:8000A62C stb r9, (byte_80117EEB - 0x80117EC4)(r31) .text0:8000A630 bl ctgp_obfus_fn3_ok .text0:8000A634 lbz r7, (byte_80117EEB - 0x80117EC4)(r31) .text0:8000A638 lbz r10, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000A63C addi r9, r7, -8 .text0:8000A640 lbz r8, (byte_80117F62 - 0x80117EC4)(r31) .text0:8000A644 clrlwi r9, r9, 24 .text0:8000A648 lbz r5, (byte_80117EC7 - 0x80117EC4)(r31) .text0:8000A64C lbz r11, (byte_80117F1F - 0x80117EC4)(r31) .text0:8000A650 addi r30, r9, -1 .text0:8000A654 slwi r0, r10, 1 .text0:8000A658 clrlslwi r30, r30, 25,1 .text0:8000A65C srwi r6, r9, 1 .text0:8000A660 addi r4, r8, -0x36 .text0:8000A664 addi r7, r7, 4 .text0:8000A668 add r11, r0, r11 .text0:8000A66C subf r4, r5, r4 .text0:8000A670 add r7, r7, r6 .text0:8000A674 addi r5, r30, -0x45 .text0:8000A678 subf r6, r10, r30 .text0:8000A67C addi r8, r8, -5 .text0:8000A680 stb r3, (byte_80117F48 - 0x80117EC4)(r31) .text0:8000A684 mr r3, r10 .text0:8000A688 stb r11, (byte_80117EFE - 0x80117EC4)(r31) .text0:8000A68C stb r8, (byte_80117F7F - 0x80117EC4)(r31) .text0:8000A690 stb r4, (byte_80117FAF - 0x80117EC4)(r31) .text0:8000A694 stb r7, (byte_80117F40 - 0x80117EC4)(r31) .text0:8000A698 stb r5, (byte_80117FBA - 0x80117EC4)(r31) .text0:8000A69C stb r6, (byte_80117F75 - 0x80117EC4)(r31) .text0:8000A6A0 stb r9, (byte_80117EEC - 0x80117EC4)(r31) .text0:8000A6A4 stb r30, (byte_80117F8A - 0x80117EC4)(r31) .text0:8000A6A8 bl ctgp_obfus_fn3_ok .text0:8000A6AC lbz r9, (byte_80117FBA - 0x80117EC4)(r31) .text0:8000A6B0 add r30, r30, r3 .text0:8000A6B4 li r3, 0x1E .text0:8000A6B8 lbz r29, (byte_80117F7F - 0x80117EC4)(r31) .text0:8000A6BC addi r9, r9, -0x63 .text0:8000A6C0 stb r30, (byte_80117FB0 - 0x80117EC4)(r31) .text0:8000A6C4 stb r9, (byte_80117FBF - 0x80117EC4)(r31) .text0:8000A6C8 bl ctgp_obfus_fn1 .text0:8000A6CC lbz r30, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000A6D0 subf r29, r3, r29 .text0:8000A6D4 stb r29, (byte_80117F12 - 0x80117EC4)(r31) .text0:8000A6D8 mr r3, r30 .text0:8000A6DC bl ctgp_obfus_fn1 .text0:8000A6E0 lbz r9, (byte_80117FBF - 0x80117EC4)(r31) .text0:8000A6E4 lbz r4, (byte_80117FA8 - 0x80117EC4)(r31) .text0:8000A6E8 add r30, r30, r3 .text0:8000A6EC addi r9, r9, 0x18 .text0:8000A6F0 lbz r5, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000A6F4 clrlwi r9, r9, 24 .text0:8000A6F8 lbz r6, (byte_80117F21 - 0x80117EC4)(r31) .text0:8000A6FC lbz r7, (byte_80117EEB - 0x80117EC4)(r31) .text0:8000A700 srwi r8, r9, 1 .text0:8000A704 lbz r10, (byte_80117FB4 - 0x80117EC4)(r31) .text0:8000A708 subf r5, r5, r4 .text0:8000A70C addi r6, r6, -2 .text0:8000A710 addi r7, r7, 3 .text0:8000A714 addi r8, r8, -0x12 .text0:8000A718 addi r10, r10, -0x12 .text0:8000A71C li r3, 0x196 .text0:8000A720 stb r30, (byte_80117F96 - 0x80117EC4)(r31) .text0:8000A724 stb r5, (byte_80117ED3 - 0x80117EC4)(r31) .text0:8000A728 stb r9, (byte_80117F17 - 0x80117EC4)(r31) .text0:8000A72C stb r6, (byte_80117F2A - 0x80117EC4)(r31) .text0:8000A730 stb r7, (byte_80117EE9 - 0x80117EC4)(r31) .text0:8000A734 stb r8, (byte_80117F4B - 0x80117EC4)(r31) .text0:8000A738 stb r10, (byte_80117EE5 - 0x80117EC4)(r31) .text0:8000A73C bl ctgp_obfus_fn3_ok .text0:8000A740 lbz r30, (byte_80117EE5 - 0x80117EC4)(r31) .text0:8000A744 lbz r9, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000A748 addi r30, r30, -1 .text0:8000A74C lbz r8, (byte_80117EEB - 0x80117EC4)(r31) .text0:8000A750 divw r30, r30, r9 .text0:8000A754 lbz r9, (byte_80117F48 - 0x80117EC4)(r31) .text0:8000A758 lbz r10, (byte_80117EEC - 0x80117EC4)(r31) .text0:8000A75C add r9, r8, r9 .text0:8000A760 lbz r6, (byte_80117F2A - 0x80117EC4)(r31) .text0:8000A764 addi r9, r9, -0x14 .text0:8000A768 lbz r7, (byte_80117FBA - 0x80117EC4)(r31) .text0:8000A76C clrlwi r9, r9, 24 .text0:8000A770 stb r3, (byte_80117F47 - 0x80117EC4)(r31) .text0:8000A774 addi r10, r10, -0xE .text0:8000A778 stb r9, (byte_80117FA0 - 0x80117EC4)(r31) .text0:8000A77C clrlwi r10, r10, 24 .text0:8000A780 srwi r8, r9, 1 .text0:8000A784 stb r10, (byte_80117F8F - 0x80117EC4)(r31) .text0:8000A788 slwi r5, r10, 1 .text0:8000A78C addi r6, r6, 0x13 .text0:8000A790 stb r5, (byte_80117F32 - 0x80117EC4)(r31) .text0:8000A794 addi r7, r7, 0x11 .text0:8000A798 stb r6, (byte_80117F6E - 0x80117EC4)(r31) .text0:8000A79C addi r8, r8, -4 .text0:8000A7A0 stb r7, (byte_80117EFC - 0x80117EC4)(r31) .text0:8000A7A4 li r3, 0xC .text0:8000A7A8 stb r8, (byte_80117F86 - 0x80117EC4)(r31) .text0:8000A7AC clrlwi r30, r30, 24 .text0:8000A7B0 stb r30, (byte_80117F15 - 0x80117EC4)(r31) .text0:8000A7B4 bl ctgp_obfus_fn1 .text0:8000A7B8 lbz r9, (byte_80117FA0 - 0x80117EC4)(r31) .text0:8000A7BC subf r30, r3, r30 .text0:8000A7C0 lbz r8, (byte_80117F15 - 0x80117EC4)(r31) .text0:8000A7C4 lbz r10, (byte_80117F32 - 0x80117EC4)(r31) .text0:8000A7C8 addi r9, r9, 2 .text0:8000A7CC lbz r7, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000A7D0 clrlwi r9, r9, 24 .text0:8000A7D4 slwi r8, r8, 2 .text0:8000A7D8 addi r10, r10, -4 .text0:8000A7DC subf r10, r7, r10 .text0:8000A7E0 addi r8, r8, 2 .text0:8000A7E4 mr r3, r9 .text0:8000A7E8 stb r8, (byte_80117F70 - 0x80117EC4)(r31) .text0:8000A7EC stb r10, (byte_80117EFA - 0x80117EC4)(r31) .text0:8000A7F0 stb r30, (byte_80117ED1 - 0x80117EC4)(r31) .text0:8000A7F4 stb r9, (byte_80117ECA - 0x80117EC4)(r31) .text0:8000A7F8 bl ctgp_obfus_fn3_ok .text0:8000A7FC addi r9, r3, 2 .text0:8000A800 li r3, 9 .text0:8000A804 lbz r30, (byte_80117EFA - 0x80117EC4)(r31) .text0:8000A808 stb r9, (byte_80117F92 - 0x80117EC4)(r31) .text0:8000A80C bl ctgp_obfus_fn1 .text0:8000A810 lbz r8, (byte_80117ECA - 0x80117EC4)(r31) .text0:8000A814 subf r30, r3, r30 .text0:8000A818 lbz r10, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000A81C li r3, 7 .text0:8000A820 lbz r29, (byte_80117EFA - 0x80117EC4)(r31) .text0:8000A824 srwi r8, r8, 1 .text0:8000A828 lbz r7, (byte_80117F8F - 0x80117EC4)(r31) .text0:8000A82C subf r8, r10, r8 .text0:8000A830 lbz r9, (byte_80117F32 - 0x80117EC4)(r31) .text0:8000A834 addi r10, r29, 9 .text0:8000A838 addi r7, r7, 4 .text0:8000A83C stb r30, (byte_80117F1C - 0x80117EC4)(r31) .text0:8000A840 addi r9, r9, 0xC .text0:8000A844 stb r7, (byte_80117F8E - 0x80117EC4)(r31) .text0:8000A848 stb r8, (byte_80117F36 - 0x80117EC4)(r31) .text0:8000A84C stb r10, (byte_80117F10 - 0x80117EC4)(r31) .text0:8000A850 stb r9, (byte_80117F9B - 0x80117EC4)(r31) .text0:8000A854 bl ctgp_obfus_fn1 .text0:8000A858 lbz r30, (byte_80117F9B - 0x80117EC4)(r31) .text0:8000A85C add r29, r29, r3 .text0:8000A860 lbz r9, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000A864 li r3, 4 .text0:8000A868 lbz r10, (byte_80117F8E - 0x80117EC4)(r31) .text0:8000A86C add r8, r9, r30 .text0:8000A870 stb r29, (byte_80117FAC - 0x80117EC4)(r31) .text0:8000A874 add r9, r9, r8 .text0:8000A878 addi r10, r10, 3 .text0:8000A87C stb r10, (byte_80117F94 - 0x80117EC4)(r31) .text0:8000A880 stb r9, (byte_80117F39 - 0x80117EC4)(r31) .text0:8000A884 bl ctgp_obfus_fn3_ok .text0:8000A888 lbz r7, (byte_80117F15 - 0x80117EC4)(r31) .text0:8000A88C add r30, r30, r3 .text0:8000A890 lbz r10, (byte_80117ED1 - 0x80117EC4)(r31) .text0:8000A894 li r3, 0xDD .text0:8000A898 lbz r8, (byte_80117FAC - 0x80117EC4)(r31) .text0:8000A89C lbz r9, (byte_80117F9B - 0x80117EC4)(r31) .text0:8000A8A0 add r10, r7, r10 .text0:8000A8A4 srwi r8, r8, 1 .text0:8000A8A8 addi r10, r10, 3 .text0:8000A8AC addi r8, r8, 2 .text0:8000A8B0 addi r9, r9, 6 .text0:8000A8B4 stb r8, (byte_80117FAE - 0x80117EC4)(r31) .text0:8000A8B8 stb r10, (byte_80117F2E - 0x80117EC4)(r31) .text0:8000A8BC stb r9, (byte_80117EDA - 0x80117EC4)(r31) .text0:8000A8C0 stb r30, (byte_80117FC0 - 0x80117EC4)(r31) .text0:8000A8C4 bl ctgp_obfus_fn2 .text0:8000A8C8 stb r3, (byte_80117FB2 - 0x80117EC4)(r31) .text0:8000A8CC li r3, 0x72 .text0:8000A8D0 bl ctgp_obfus_fn1 .text0:8000A8D4 lbz r8, (byte_80117F2E - 0x80117EC4)(r31) .text0:8000A8D8 lbz r10, (byte_80117F88 - 0x80117EC4)(r31) .text0:8000A8DC lis r9, ctgp_obfus_fn1@ha .text0:8000A8E0 mullw r11, r8, r8 .text0:8000A8E4 lbz r7, (byte_80117F94 - 0x80117EC4)(r31) .text0:8000A8E8 lbz r4, (byte_80117FAC - 0x80117EC4)(r31) .text0:8000A8EC addi r5, r9, ctgp_obfus_fn1@l .text0:8000A8F0 stb r3, (byte_80117F9C - 0x80117EC4)(r31) .text0:8000A8F4 mullw r6, r10, r10 .text0:8000A8F8 mullw r7, r7, r7 .text0:8000A8FC mullw r8, r11, r8 .text0:8000A900 mullw r6, r6, r6 .text0:8000A904 mullw r7, r7, r7 .text0:8000A908 mullw r8, r8, r8 .text0:8000A90C subf r7, r7, r6 .text0:8000A910 lis r6, 1 .text0:8000A914 ori r6, r6, 0x4DE9 # 0x14DE9 .text0:8000A918 subf r8, r8, r7 .text0:8000A91C lis r7, 0x9F .text0:8000A920 mullw r4, r4, r6 .text0:8000A924 ori r7, r7, 0x4B7F # 0x9F4B7F .text0:8000A928 mullw r10, r10, r7 .text0:8000A92C add r4, r8, r4 .text0:8000A930 addi r4, r4, 0x41 .text0:8000A934 stw r4, 4(r5) .text0:8000A938 addi r10, r10, 0x6E .text0:8000A93C stw r10, -0x6214(r9) .text0:8000A940 addi r1, r1, 0x6870 .text0:8000A944 mtlr r2 .text0:8000A948 lis r10, -0x8000 .text0:8000A94C ori r10, r10, 0xC00 # 0x80000C00 .text0:8000A950 lwz r10, 0(r10) .text0:8000A954 cmpwi cr7, r10, 0 .text0:8000A958 bne cr7, invalidate .text0:8000A95C lis r4, -0x8000 .text0:8000A960 addi r4, r4, 0x5850 # 0x80005850 .text0:8000A964 mtctr r4 .text0:8000A968 li r4, 1 .text0:8000A96C lis r3, -0x8000 .text0:8000A970 addi r3, r3, 0x100 # 0x80000100 .text0:8000A974 bctr .text0:8000A978 # --------------------------------------------------------------------------- .text0:8000A978 .text0:8000A978 loc_8000A978: # CODE XREF: ctgp_load+13C8↓j .text0:8000A978 addi r1, r1, -0x6870 .text0:8000A97C lis r10, 0x3863 .text0:8000A980 lbz r3, (byte_80117F88 - 0x80117EC4)(r31) .text0:8000A984 ori r10, r10, 0xFFFB # 0x3863FFFB .text0:8000A988 stw r10, -0x6214(r9) # changes the obfus function?? .text0:8000A98C srwi r3, r3, 3 .text0:8000A990 bl ctgp_obfus_fn1 .text0:8000A994 stb r3, (byte_80117F31 - 0x80117EC4)(r31) .text0:8000A998 lbz r3, (byte_80117F2E - 0x80117EC4)(r31) .text0:8000A99C bl ctgp_obfus_fn3_ok .text0:8000A9A0 clrlwi r30, r3, 24 .text0:8000A9A4 li r3, -9 .text0:8000A9A8 stb r30, (byte_80117EDD - 0x80117EC4)(r31) .text0:8000A9AC bl ctgp_obfus_fn2 .text0:8000A9B0 lbz r7, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000A9B4 add r3, r30, r3 .text0:8000A9B8 lbz r9, (byte_80117F2E - 0x80117EC4)(r31) .text0:8000A9BC clrlwi r30, r3, 24 .text0:8000A9C0 mulli r10, r7, 0xA .text0:8000A9C4 lbz r8, (byte_80117EDD - 0x80117EC4)(r31) .text0:8000A9C8 stb r30, (byte_80117ECF - 0x80117EC4)(r31) .text0:8000A9CC add r10, r10, r9 .text0:8000A9D0 addi r11, r8, -2 .text0:8000A9D4 clrlwi r10, r10, 24 .text0:8000A9D8 addi r5, r8, 4 .text0:8000A9DC addi r9, r10, 0x26 .text0:8000A9E0 clrlslwi r6, r10, 25,1 .text0:8000A9E4 clrlwi r9, r9, 24 .text0:8000A9E8 subf r11, r30, r11 .text0:8000A9EC srwi r3, r9, 1 .text0:8000A9F0 add r7, r9, r7 .text0:8000A9F4 addi r4, r6, -1 .text0:8000A9F8 add r5, r9, r5 .text0:8000A9FC addi r6, r6, -7 .text0:8000AA00 add r7, r7, r3 .text0:8000AA04 mr r3, r8 .text0:8000AA08 stb r11, (byte_80117F3E - 0x80117EC4)(r31) .text0:8000AA0C stb r4, (byte_80117EC6 - 0x80117EC4)(r31) .text0:8000AA10 stb r6, (byte_80117F64 - 0x80117EC4)(r31) .text0:8000AA14 stb r5, (byte_80117FBE - 0x80117EC4)(r31) .text0:8000AA18 stb r7, (byte_80117FB1 - 0x80117EC4)(r31) .text0:8000AA1C stb r10, (byte_80117ECB - 0x80117EC4)(r31) .text0:8000AA20 stb r9, (byte_80117FB7 - 0x80117EC4)(r31) .text0:8000AA24 bl ctgp_obfus_fn5 .text0:8000AA28 lbz r9, (byte_80117F64 - 0x80117EC4)(r31) .text0:8000AA2C addi r10, r3, 2 .text0:8000AA30 li r3, 0xFD .text0:8000AA34 stb r10, (byte_80117F73 - 0x80117EC4)(r31) .text0:8000AA38 addi r9, r9, -6 .text0:8000AA3C stb r9, (byte_80117EDC - 0x80117EC4)(r31) .text0:8000AA40 bl ctgp_obfus_fn2 .text0:8000AA44 lbz r9, (byte_80117EDD - 0x80117EC4)(r31) .text0:8000AA48 lbz r7, (byte_80117FB7 - 0x80117EC4)(r31) .text0:8000AA4C lbz r8, (byte_80117ECF - 0x80117EC4)(r31) .text0:8000AA50 mulli r10, r9, 5 .text0:8000AA54 add r9, r9, r7 .text0:8000AA58 stb r3, (byte_80117FAB - 0x80117EC4)(r31) .text0:8000AA5C add r9, r9, r8 .text0:8000AA60 addi r10, r10, -2 .text0:8000AA64 li r3, -3 .text0:8000AA68 lbz r30, (byte_80117EDC - 0x80117EC4)(r31) .text0:8000AA6C stb r10, (byte_80117FBC - 0x80117EC4)(r31) .text0:8000AA70 stb r9, (byte_80117EF9 - 0x80117EC4)(r31) .text0:8000AA74 bl ctgp_obfus_fn2 .text0:8000AA78 lbz r10, (byte_80117F2E - 0x80117EC4)(r31) .text0:8000AA7C lis r8, ctgp_obfus_fn5@ha .text0:8000AA80 lbz r9, (byte_80117F88 - 0x80117EC4)(r31) .text0:8000AA84 subf r3, r3, r30 .text0:8000AA88 mullw r0, r10, r10 .text0:8000AA8C lbz r7, (byte_80117F94 - 0x80117EC4)(r31) .text0:8000AA90 lbz r4, (byte_80117FAC - 0x80117EC4)(r31) .text0:8000AA94 lbz r5, (byte_80117EDC - 0x80117EC4)(r31) .text0:8000AA98 lbz r11, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000AA9C mullw r6, r9, r9 .text0:8000AAA0 stb r3, (byte_80117F76 - 0x80117EC4)(r31) .text0:8000AAA4 add r11, r11, r5 .text0:8000AAA8 addi r5, r8, ctgp_obfus_fn5@l .text0:8000AAAC stb r11, (byte_80117FA9 - 0x80117EC4)(r31) .text0:8000AAB0 mullw r7, r7, r7 .text0:8000AAB4 mullw r10, r0, r10 .text0:8000AAB8 mullw r6, r6, r6 .text0:8000AABC mullw r7, r7, r7 .text0:8000AAC0 mullw r10, r10, r10 .text0:8000AAC4 subf r7, r7, r6 .text0:8000AAC8 lis r6, 1 .text0:8000AACC ori r6, r6, 0x4DE9 # 0x14DE9 .text0:8000AAD0 subf r10, r10, r7 .text0:8000AAD4 lis r7, 0x9F .text0:8000AAD8 mullw r4, r4, r6 .text0:8000AADC ori r7, r7, 0x4B7E # 0x9F4B7E .text0:8000AAE0 mullw r9, r9, r7 .text0:8000AAE4 add r4, r10, r4 .text0:8000AAE8 addi r4, r4, 0x41 .text0:8000AAEC stw r4, 4(r5) .text0:8000AAF0 addi r9, r9, 0x36 .text0:8000AAF4 stw r9, -0x61D4(r8) .text0:8000AAF8 addi r1, r1, 0x6870 .text0:8000AAFC mtlr r2 .text0:8000AB00 lis r9, ctgp_obfus_fn5@ha .text0:8000AB04 addi r9, r9, ctgp_obfus_fn5@l .text0:8000AB08 dcbf 0, r9 .text0:8000AB0C sync .text0:8000AB10 isync .text0:8000AB14 addi r1, r1, -0x6870 .text0:8000AB18 lis r31, byte_80117EC4@ha .text0:8000AB1C addi r31, r31, byte_80117EC4@l .text0:8000AB20 lbz r3, (byte_80117F3E - 0x80117EC4)(r31) .text0:8000AB24 bl ctgp_obfus_fn5 .text0:8000AB28 stb r3, (byte_80117FB5 - 0x80117EC4)(r31) .text0:8000AB2C addi r1, r1, 0x6870 .text0:8000AB30 mtlr r2 .text0:8000AB34 lis r9, ctgp_obfus_fn5@ha .text0:8000AB38 addi r9, r9, ctgp_obfus_fn5@l .text0:8000AB3C dcbf 0, r9 .text0:8000AB40 sc .text0:8000AB44 icbi 0, r9 .text0:8000AB48 sync .text0:8000AB4C isync .text0:8000AB50 addi r1, r1, -0x6870 .text0:8000AB54 lis r31, byte_80117EC4@ha .text0:8000AB58 lis r5, 0x5463 .text0:8000AB5C addi r31, r31, byte_80117EC4@l .text0:8000AB60 ori r5, r5, 0x83C # 0x5463083C .text0:8000AB64 lbz r9, (byte_80117FB5 - 0x80117EC4)(r31) .text0:8000AB68 lis r6, 0x8001 .text0:8000AB6C lbz r10, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000AB70 li r3, -4 .text0:8000AB74 mulli r9, r9, 0xB .text0:8000AB78 lbz r30, (byte_80117FA9 - 0x80117EC4)(r31) .text0:8000AB7C stw r5, -0x61D4(r6) .text0:8000AB80 clrlwi r9, r9, 24 .text0:8000AB84 subf r30, r10, r30 .text0:8000AB88 addi r8, r9, -6 .text0:8000AB8C subf r30, r10, r30 .text0:8000AB90 clrlwi r8, r8, 24 .text0:8000AB94 addi r7, r9, 0x19 .text0:8000AB98 add r10, r8, r10 .text0:8000AB9C clrlwi r30, r30, 24 .text0:8000ABA0 stb r9, (byte_80117EC8 - 0x80117EC4)(r31) .text0:8000ABA4 stb r30, (byte_80117EF0 - 0x80117EC4)(r31) .text0:8000ABA8 stb r8, (byte_80117FA1 - 0x80117EC4)(r31) .text0:8000ABAC stb r7, (byte_80117EEA - 0x80117EC4)(r31) .text0:8000ABB0 stb r10, (byte_80117F09 - 0x80117EC4)(r31) .text0:8000ABB4 bl ctgp_obfus_fn2 .text0:8000ABB8 lbz r9, (byte_80117FB7 - 0x80117EC4)(r31) .text0:8000ABBC add r30, r30, r3 .text0:8000ABC0 lbz r10, (byte_80117EEA - 0x80117EC4)(r31) .text0:8000ABC4 addi r9, r9, 6 .text0:8000ABC8 lbz r7, (byte_80117FA1 - 0x80117EC4)(r31) .text0:8000ABCC clrlwi r9, r9, 24 .text0:8000ABD0 lbz r8, (byte_80117FBC - 0x80117EC4)(r31) .text0:8000ABD4 subf r10, r10, r9 .text0:8000ABD8 addi r3, r7, 0x2E .text0:8000ABDC addi r8, r8, -1 .text0:8000ABE0 addi r10, r10, -5 .text0:8000ABE4 stb r8, (byte_80117F6A - 0x80117EC4)(r31) .text0:8000ABE8 stb r10, (byte_80117EF8 - 0x80117EC4)(r31) .text0:8000ABEC stb r30, (byte_80117EF4 - 0x80117EC4)(r31) .text0:8000ABF0 stb r9, (byte_80117FA2 - 0x80117EC4)(r31) .text0:8000ABF4 bl ctgp_obfus_fn5 .text0:8000ABF8 addi r9, r3, -0x5B .text0:8000ABFC li r3, 0xE5 .text0:8000AC00 stb r9, (byte_80117F20 - 0x80117EC4)(r31) .text0:8000AC04 bl ctgp_obfus_fn2 .text0:8000AC08 stb r3, (byte_80117F81 - 0x80117EC4)(r31) .text0:8000AC0C li r3, 0x118 .text0:8000AC10 bl ctgp_obfus_fn3_ok .text0:8000AC14 lbz r9, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000AC18 lbz r10, (byte_80117EF4 - 0x80117EC4)(r31) .text0:8000AC1C stb r3, (byte_80117FA4 - 0x80117EC4)(r31) .text0:8000AC20 mr r3, r9 .text0:8000AC24 add r10, r9, r10 .text0:8000AC28 lbz r30, (byte_80117F09 - 0x80117EC4)(r31) .text0:8000AC2C addi r10, r10, 2 .text0:8000AC30 add r10, r9, r10 .text0:8000AC34 stb r10, (byte_80117F50 - 0x80117EC4)(r31) .text0:8000AC38 bl ctgp_obfus_fn3_ok .text0:8000AC3C lbz r9, (byte_80117FA1 - 0x80117EC4)(r31) .text0:8000AC40 subf r3, r3, r30 .text0:8000AC44 lbz r4, (byte_80117EF4 - 0x80117EC4)(r31) .text0:8000AC48 clrlwi r10, r3, 24 .text0:8000AC4C addi r9, r9, -0xB .text0:8000AC50 lbz r6, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000AC54 clrlwi r9, r9, 24 .text0:8000AC58 lbz r8, (byte_80117F20 - 0x80117EC4)(r31) .text0:8000AC5C mulli r7, r9, 3 .text0:8000AC60 lbz r3, (byte_80117EC8 - 0x80117EC4)(r31) .text0:8000AC64 addi r5, r10, -0xC .text0:8000AC68 subf r6, r6, r4 .text0:8000AC6C addi r7, r7, 6 .text0:8000AC70 addi r8, r8, -4 .text0:8000AC74 stb r10, (byte_80117FB8 - 0x80117EC4)(r31) .text0:8000AC78 stb r5, (byte_80117EEF - 0x80117EC4)(r31) .text0:8000AC7C stb r6, (byte_80117EE3 - 0x80117EC4)(r31) .text0:8000AC80 stb r9, (byte_80117F98 - 0x80117EC4)(r31) .text0:8000AC84 stb r7, (byte_80117EDF - 0x80117EC4)(r31) .text0:8000AC88 stb r8, (byte_80117F1B - 0x80117EC4)(r31) .text0:8000AC8C bl ctgp_obfus_fn4 .text0:8000AC90 lbz r10, (byte_80117F2E - 0x80117EC4)(r31) .text0:8000AC94 lis r8, ctgp_obfus_fn4@ha .text0:8000AC98 lbz r9, (byte_80117F88 - 0x80117EC4)(r31) .text0:8000AC9C addi r5, r8, ctgp_obfus_fn4@l .text0:8000ACA0 mullw r11, r10, r10 .text0:8000ACA4 lbz r7, (byte_80117F94 - 0x80117EC4)(r31) .text0:8000ACA8 lbz r4, (byte_80117FAC - 0x80117EC4)(r31) .text0:8000ACAC addi r3, r3, -0x10 .text0:8000ACB0 stb r3, (byte_80117F7D - 0x80117EC4)(r31) .text0:8000ACB4 mullw r6, r9, r9 .text0:8000ACB8 mullw r7, r7, r7 .text0:8000ACBC mullw r10, r11, r10 .text0:8000ACC0 mullw r6, r6, r6 .text0:8000ACC4 mullw r7, r7, r7 .text0:8000ACC8 mullw r10, r10, r10 .text0:8000ACCC subf r7, r7, r6 .text0:8000ACD0 lis r6, 1 .text0:8000ACD4 ori r6, r6, 0x4DE9 # 0x14DE9 .text0:8000ACD8 subf r10, r10, r7 .text0:8000ACDC lis r7, 0x9F .text0:8000ACE0 mullw r4, r4, r6 .text0:8000ACE4 ori r7, r7, 0x4F56 # 0x9F4F56 .text0:8000ACE8 mullw r9, r9, r7 .text0:8000ACEC add r4, r10, r4 .text0:8000ACF0 addi r4, r4, 0x41 .text0:8000ACF4 stw r4, 4(r5) .text0:8000ACF8 addi r9, r9, 0x76 .text0:8000ACFC stw r9, -0x61DC(r8) .text0:8000AD00 addi r1, r1, 0x6870 .text0:8000AD04 mtlr r2 .text0:8000AD08 lis r9, ctgp_obfus_fn4@ha .text0:8000AD0C addi r9, r9, ctgp_obfus_fn4@l .text0:8000AD10 icbi 0, r9 # note: no dcbf! .text0:8000AD14 sync .text0:8000AD18 isync .text0:8000AD1C addi r1, r1, -0x6870 .text0:8000AD20 lis r31, byte_80117EC4@ha .text0:8000AD24 addi r31, r31, byte_80117EC4@l .text0:8000AD28 lbz r3, (byte_80117EE3 - 0x80117EC4)(r31) .text0:8000AD2C bl ctgp_obfus_fn4 .text0:8000AD30 addi r3, r3, -0x10 .text0:8000AD34 stb r3, (byte_80117EED - 0x80117EC4)(r31) .text0:8000AD38 addi r1, r1, 0x6870 .text0:8000AD3C mtlr r2 .text0:8000AD40 lis r9, ctgp_obfus_fn4@ha .text0:8000AD44 addi r9, r9, ctgp_obfus_fn4@l .text0:8000AD48 dcbf 0, r9 .text0:8000AD4C sc .text0:8000AD50 icbi 0, r9 .text0:8000AD54 sync .text0:8000AD58 isync .text0:8000AD5C addi r1, r1, -0x6870 .text0:8000AD60 lis r31, byte_80117EC4@ha .text0:8000AD64 lis r10, 0x3863 .text0:8000AD68 addi r31, r31, byte_80117EC4@l .text0:8000AD6C ori r10, r10, 0xD # 0x3863000D .text0:8000AD70 lbz r30, (byte_80117EF4 - 0x80117EC4)(r31) .text0:8000AD74 lis r9, 0x8001 .text0:8000AD78 li r3, 6 .text0:8000AD7C stw r10, -0x61DC(r9) .text0:8000AD80 bl ctgp_obfus_fn2 .text0:8000AD84 add r30, r30, r3 .text0:8000AD88 li r3, 0xA4 .text0:8000AD8C stb r30, (byte_80117F95 - 0x80117EC4)(r31) .text0:8000AD90 bl ctgp_obfus_fn3_ok .text0:8000AD94 lbz r10, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000AD98 lbz r8, (byte_80117F95 - 0x80117EC4)(r31) .text0:8000AD9C lbz r9, (byte_80117EEF - 0x80117EC4)(r31) .text0:8000ADA0 mulli r5, r10, 3 .text0:8000ADA4 lbz r6, (byte_80117F1B - 0x80117EC4)(r31) .text0:8000ADA8 add r10, r10, r8 .text0:8000ADAC lbz r7, (byte_80117EED - 0x80117EC4)(r31) .text0:8000ADB0 addi r8, r9, 1 .text0:8000ADB4 addi r10, r10, 2 .text0:8000ADB8 slwi r8, r8, 1 .text0:8000ADBC add r7, r5, r7 .text0:8000ADC0 stb r3, (byte_80117FAD - 0x80117EC4)(r31) .text0:8000ADC4 addi r9, r9, 3 .text0:8000ADC8 addi r3, r6, 3 .text0:8000ADCC stb r7, (byte_80117F16 - 0x80117EC4)(r31) .text0:8000ADD0 stb r10, (byte_80117EE6 - 0x80117EC4)(r31) .text0:8000ADD4 stb r8, (byte_80117FB9 - 0x80117EC4)(r31) .text0:8000ADD8 stb r9, (byte_80117FB3 - 0x80117EC4)(r31) .text0:8000ADDC bl ctgp_obfus_fn4 .text0:8000ADE0 lbz r9, (byte_80117FB9 - 0x80117EC4)(r31) .text0:8000ADE4 stb r3, (byte_80117F04 - 0x80117EC4)(r31) .text0:8000ADE8 addi r3, r9, 0x1E .text0:8000ADEC bl ctgp_obfus_fn2 .text0:8000ADF0 clrlwi r30, r3, 24 .text0:8000ADF4 lbz r3, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000ADF8 slwi r9, r30, 1 .text0:8000ADFC stb r30, (byte_80117F80 - 0x80117EC4)(r31) .text0:8000AE00 addi r9, r9, 0x11 .text0:8000AE04 stb r9, (byte_80117F1D - 0x80117EC4)(r31) .text0:8000AE08 bl ctgp_obfus_fn3_ok .text0:8000AE0C lbz r10, (byte_80117F98 - 0x80117EC4)(r31) .text0:8000AE10 add r30, r30, r3 .text0:8000AE14 lbz r7, (byte_80117FA4 - 0x80117EC4)(r31) .text0:8000AE18 li r3, 0x48 .text0:8000AE1C lbz r8, (byte_80117EE3 - 0x80117EC4)(r31) .text0:8000AE20 slwi r10, r10, 1 .text0:8000AE24 lbz r9, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000AE28 addi r10, r10, 3 .text0:8000AE2C addi r8, r8, 1 .text0:8000AE30 stb r10, (byte_80117F99 - 0x80117EC4)(r31) .text0:8000AE34 subf r9, r9, r7 .text0:8000AE38 stb r8, (byte_80117F22 - 0x80117EC4)(r31) .text0:8000AE3C stb r9, (byte_80117EFD - 0x80117EC4)(r31) .text0:8000AE40 stb r30, (byte_80117F87 - 0x80117EC4)(r31) .text0:8000AE44 bl ctgp_obfus_fn2 .text0:8000AE48 stb r3, (byte_80117F46 - 0x80117EC4)(r31) .text0:8000AE4C lbz r3, (byte_80117F31 - 0x80117EC4)(r31) .text0:8000AE50 bl ctgp_obfus_fn2 .text0:8000AE54 lbz r10, (byte_80117F2E - 0x80117EC4)(r31) .text0:8000AE58 lbz r9, (byte_80117F88 - 0x80117EC4)(r31) .text0:8000AE5C clrlwi r4, r3, 24 .text0:8000AE60 stb r3, (byte_80117F07 - 0x80117EC4)(r31) .text0:8000AE64 mullw r0, r10, r10 .text0:8000AE68 lis r3, 0x9F .text0:8000AE6C lbz r7, (byte_80117F94 - 0x80117EC4)(r31) .text0:8000AE70 ori r3, r3, 0x4F55 # 0x9F4F55 .text0:8000AE74 lbz r11, (byte_80117FAC - 0x80117EC4)(r31) .text0:8000AE78 lis r8, ctgp_obfus_fn2@ha .text0:8000AE7C mullw r6, r9, r9 .text0:8000AE80 addi r5, r8, ctgp_obfus_fn2@l .text0:8000AE84 mullw r9, r9, r3 .text0:8000AE88 mullw r7, r7, r7 .text0:8000AE8C addi r9, r9, 0x3E .text0:8000AE90 stw r9, -0x620C(r8) # skip .text0:8000AE94 lis r8, 1 .text0:8000AE98 ori r8, r8, 0x4DE9 # 0x14DE9 .text0:8000AE9C mullw r10, r0, r10 .text0:8000AEA0 mullw r6, r6, r6 .text0:8000AEA4 mullw r7, r7, r7 .text0:8000AEA8 mullw r10, r10, r10 .text0:8000AEAC subf r7, r7, r6 .text0:8000AEB0 mullw r8, r11, r8 .text0:8000AEB4 subf r9, r10, r7 .text0:8000AEB8 add r9, r9, r8 .text0:8000AEBC mulli r3, r4, 0xC .text0:8000AEC0 addi r9, r9, 0x41 .text0:8000AEC4 stw r9, 4(r5) .text0:8000AEC8 addi r3, r3, 7 .text0:8000AECC bl ctgp_obfus_fn2 .text0:8000AED0 stb r3, (byte_80117F83 - 0x80117EC4)(r31) .text0:8000AED4 addi r1, r1, 0x6870 .text0:8000AED8 mtlr r2 .text0:8000AEDC lis r9, ctgp_obfus_fn2@ha .text0:8000AEE0 addi r9, r9, ctgp_obfus_fn2@l .text0:8000AEE4 dcbf 0, r9 .text0:8000AEE8 sc .text0:8000AEEC icbi 0, r9 .text0:8000AEF0 sync .text0:8000AEF4 isync .text0:8000AEF8 addi r1, r1, -0x6870 .text0:8000AEFC lis r30, byte_80117EC4@ha .text0:8000AF00 addi r31, r30, byte_80117EC4@l .text0:8000AF04 lbz r9, (byte_80117F2E - 0x80117EC4)(r31) .text0:8000AF08 lbz r8, (byte_80117F88 - 0x80117EC4)(r31) .text0:8000AF0C mullw r7, r9, r9 .text0:8000AF10 lbz r10, (byte_80117F94 - 0x80117EC4)(r31) .text0:8000AF14 lbz r6, (byte_80117FAC - 0x80117EC4)(r31) .text0:8000AF18 lbz r3, (byte_80117EDE - 0x80117EC4)(r31) .text0:8000AF1C mullw r8, r8, r8 .text0:8000AF20 mullw r10, r10, r10 .text0:8000AF24 mullw r9, r7, r9 .text0:8000AF28 lis r7, 1 .text0:8000AF2C ori r7, r7, 0x4DE9 # 0x14DE9 .text0:8000AF30 mullw r8, r8, r8 .text0:8000AF34 mullw r10, r10, r10 .text0:8000AF38 mullw r9, r9, r9 .text0:8000AF3C subf r10, r10, r8 .text0:8000AF40 mullw r7, r6, r7 .text0:8000AF44 subf r10, r9, r10 .text0:8000AF48 lis r9, 0x8001 .text0:8000AF4C add r10, r10, r7 .text0:8000AF50 addi r10, r10, 0x41 .text0:8000AF54 stw r10, -0x620C(r9) .text0:8000AF58 bl ctgp_obfus_fn2 .text0:8000AF5C lbz r30, (byte_80117F07 - 0x80117EC4)(r31) .text0:8000AF60 lbz r9, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000AF64 addi r7, r3, 3 .text0:8000AF68 lbz r8, (byte_80117F99 - 0x80117EC4)(r31) .text0:8000AF6C mulli r6, r30, 3 .text0:8000AF70 lbz r10, (byte_80117F04 - 0x80117EC4)(r31) .text0:8000AF74 li r3, 2 .text0:8000AF78 add r8, r9, r8 .text0:8000AF7C stb r7, (byte_80117ED8 - 0x80117EC4)(r31) .text0:8000AF80 addi r10, r10, 1 .text0:8000AF84 add r8, r9, r8 .text0:8000AF88 subf r10, r9, r10 .text0:8000AF8C add r9, r9, r6 .text0:8000AF90 stb r8, (byte_80117FB6 - 0x80117EC4)(r31) .text0:8000AF94 stb r10, (byte_80117F11 - 0x80117EC4)(r31) .text0:8000AF98 stb r9, (byte_80117F77 - 0x80117EC4)(r31) .text0:8000AF9C bl ctgp_obfus_fn3_ok .text0:8000AFA0 lbz r7, (byte_80117F07 - 0x80117EC4)(r31) .text0:8000AFA4 add r3, r30, r3 .text0:8000AFA8 lbz r9, (byte_80117F77 - 0x80117EC4)(r31) .text0:8000AFAC clrlwi r30, r3, 24 .text0:8000AFB0 lbz r6, (byte_80117EFD - 0x80117EC4)(r31) .text0:8000AFB4 mulli r7, r7, 5 .text0:8000AFB8 lbz r10, (byte_80117F11 - 0x80117EC4)(r31) .text0:8000AFBC addi r8, r9, 7 .text0:8000AFC0 add r7, r7, r6 .text0:8000AFC4 add r8, r30, r8 .text0:8000AFC8 addi r10, r10, -0x1B .text0:8000AFCC mr r3, r9 .text0:8000AFD0 stb r30, (byte_80117F0A - 0x80117EC4)(r31) .text0:8000AFD4 stb r7, (byte_80117ED9 - 0x80117EC4)(r31) .text0:8000AFD8 stb r8, (byte_80117FAA - 0x80117EC4)(r31) .text0:8000AFDC stb r10, (byte_80117F26 - 0x80117EC4)(r31) .text0:8000AFE0 bl ctgp_obfus_fn3_ok .text0:8000AFE4 lbz r9, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000AFE8 lbz r10, (byte_80117F0A - 0x80117EC4)(r31) .text0:8000AFEC lbz r30, (byte_80117EFD - 0x80117EC4)(r31) .text0:8000AFF0 mullw r7, r9, r10 .text0:8000AFF4 lbz r8, (byte_80117F11 - 0x80117EC4)(r31) .text0:8000AFF8 addi r30, r30, -2 .text0:8000AFFC stb r3, (byte_80117F5C - 0x80117EC4)(r31) .text0:8000B000 subf r30, r10, r30 .text0:8000B004 addi r8, r8, 3 .text0:8000B008 addi r10, r7, 1 .text0:8000B00C mr r3, r9 .text0:8000B010 clrlwi r30, r30, 24 .text0:8000B014 stb r8, (byte_80117EE7 - 0x80117EC4)(r31) .text0:8000B018 stb r10, (byte_80117F2F - 0x80117EC4)(r31) .text0:8000B01C stb r30, (byte_80117F7A - 0x80117EC4)(r31) .text0:8000B020 bl ctgp_obfus_fn3_ok .text0:8000B024 add r30, r30, r3 .text0:8000B028 li r3, 8 .text0:8000B02C lbz r29, (byte_80117FB6 - 0x80117EC4)(r31) .text0:8000B030 stb r30, (byte_80117F97 - 0x80117EC4)(r31) .text0:8000B034 bl ctgp_obfus_fn3_ok .text0:8000B038 lbz r9, (byte_80117F5C - 0x80117EC4)(r31) .text0:8000B03C subf r29, r3, r29 .text0:8000B040 lbz r8, (byte_80117F2F - 0x80117EC4)(r31) .text0:8000B044 li r3, 0x10 .text0:8000B048 lbz r10, (byte_80117F26 - 0x80117EC4)(r31) .text0:8000B04C addi r7, r9, -3 .text0:8000B050 addi r8, r8, 6 .text0:8000B054 addi r9, r9, -9 .text0:8000B058 addi r10, r10, 0xB .text0:8000B05C stb r7, (byte_80117F0D - 0x80117EC4)(r31) .text0:8000B060 stb r8, (byte_80117EDE - 0x80117EC4)(r31) .text0:8000B064 stb r10, (byte_80117F9D - 0x80117EC4)(r31) .text0:8000B068 lbz r30, (byte_80117EFD - 0x80117EC4)(r31) .text0:8000B06C stb r9, (byte_80117EE4 - 0x80117EC4)(r31) .text0:8000B070 stb r29, (byte_80117F34 - 0x80117EC4)(r31) .text0:8000B074 bl ctgp_obfus_fn3_ok .text0:8000B078 lbz r9, (byte_80117F83 - 0x80117EC4)(r31) .text0:8000B07C add r30, r30, r3 .text0:8000B080 stb r30, (byte_80117F67 - 0x80117EC4)(r31) .text0:8000B084 addi r3, r9, 5 .text0:8000B088 slwi r3, r3, 1 .text0:8000B08C bl ctgp_obfus_fn3_ok .text0:8000B090 lbz r10, (byte_80117ED8 - 0x80117EC4)(r31) .text0:8000B094 lbz r9, (byte_80117EDB - 0x80117EC4)(r31) .text0:8000B098 addi r10, r10, -1 .text0:8000B09C lbz r30, (byte_80117F97 - 0x80117EC4)(r31) .text0:8000B0A0 divw r10, r10, r9 .text0:8000B0A4 lbz r6, (byte_80117F7A - 0x80117EC4)(r31) .text0:8000B0A8 lbz r7, (byte_80117EE4 - 0x80117EC4)(r31) .text0:8000B0AC addi r30, r30, 8 .text0:8000B0B0 lbz r8, (byte_80117F26 - 0x80117EC4)(r31) .text0:8000B0B4 slwi r6, r6, 1 .text0:8000B0B8 subf r9, r9, r6 .text0:8000B0BC stb r3, (byte_80117EFB - 0x80117EC4)(r31) .text0:8000B0C0 addi r8, r8, 4 .text0:8000B0C4 stb r9, (byte_80117F3C - 0x80117EC4)(r31) .text0:8000B0C8 addi r7, r7, 3 .text0:8000B0CC stb r8, (byte_80117EE1 - 0x80117EC4)(r31) .text0:8000B0D0 clrlwi r30, r30, 24 .text0:8000B0D4 stb r7, (byte_80117F90 - 0x80117EC4)(r31) .text0:8000B0D8 li r3, 0xE .text0:8000B0DC stb r30, (byte_80117ED7 - 0x80117EC4)(r31) .text0:8000B0E0 stb r10, (byte_80117F4E - 0x80117EC4)(r31) .text0:8000B0E4 bl ctgp_obfus_fn3_ok .text0:8000B0E8 lbz r9, (byte_80117F90 - 0x80117EC4)(r31) .text0:8000B0EC add r30, r30, r3 .text0:8000B0F0 li r3, 0x30 .text0:8000B0F4 stb r30, (byte_80117F60 - 0x80117EC4)(r31) .text0:8000B0F8 addi r9, r9, -1 .text0:8000B0FC stb r9, (byte_80117F43 - 0x80117EC4)(r31) .text0:8000B100 bl ctgp_obfus_fn3_ok .text0:8000B104 bl ctgp_obfus_fn3_ok .text0:8000B108 lbz r30, (byte_80117F5C - 0x80117EC4)(r31) .text0:8000B10C clrlwi r9, r3, 24 .text0:8000B110 li r3, 2 .text0:8000B114 addi r10, r9, 4 .text0:8000B118 stb r9, (byte_80117ED4 - 0x80117EC4)(r31) .text0:8000B11C stb r10, (byte_80117EE0 - 0x80117EC4)(r31) .text0:8000B120 bl ctgp_obfus_fn3_ok .text0:8000B124 lis r8, unk_8001E420@ha .text0:8000B128 lis r10, dword_80116D94@ha .text0:8000B12C addi r8, r8, unk_8001E420@l # unk_8001E420 .text0:8000B130 addi r10, r10, dword_80116D94@l .text0:8000B134 cmplw cr7, r8, r10 .text0:8000B138 clrlslwi r30, r30, 25,1 .text0:8000B13C add r3, r30, r3 .text0:8000B140 subf r10, r8, r10 .text0:8000B144 stb r3, (byte_80117ED0 - 0x80117EC4)(r31) .text0:8000B148 mr r9, r8 .text0:8000B14C mtctr r10 .text0:8000B150 bge cr7, loc_8000B170 .text0:8000B154 .text0:8000B154 loc_8000B154: # CODE XREF: ctgp_load+1338↓j .text0:8000B154 andi. r10, r9, 0xF .text0:8000B158 beq loc_8000B168 .text0:8000B15C lbz r10, 0(r9) .text0:8000B160 lbzx r10, r31, r10 .text0:8000B164 stb r10, 0(r9) .text0:8000B168 .text0:8000B168 loc_8000B168: # CODE XREF: ctgp_load+1324↑j .text0:8000B168 addi r9, r9, 1 .text0:8000B16C bdnz loc_8000B154 .text0:8000B170 .text0:8000B170 loc_8000B170: # CODE XREF: ctgp_load+131C↑j .text0:8000B170 lis r9, 0x2F .text0:8000B174 mr r4, r1 .text0:8000B178 ori r9, r9, 0x56E0 # 0x2F56E0 .text0:8000B17C addi r5, r8, (compressed_data - 0x8001E420) # inData .text0:8000B180 stwu r9, 8(r4) # pSize .text0:8000B184 lis r9, dword_80116D94@ha .text0:8000B188 lwz r6, dword_80116D94@l(r9) .text0:8000B18C li r9, 0x78 .text0:8000B190 stb r9, (compressed_data - 0x8001E420)(r8) .text0:8000B194 li r9, -0x26 .text0:8000B198 stb r9, (compressed_data+1 - 0x8001E420)(r8) .text0:8000B19C addi r6, r6, -8 # inSize .text0:8000B1A0 lis r3, 0x9100 # dest .text0:8000B1A4 bl ctgp_uncompress # size 0x2f56e0 .text0:8000B1A4 # source 0x8001e428 .text0:8000B1A4 # (0x000f896c bytes) .text0:8000B1A8 lwz r4, 0x38+var_30(r1) .text0:8000B1AC lis r3, 0x9100 .text0:8000B1B0 bl ctgp_dcbf .text0:8000B1B4 lis r3, 0x9100 .text0:8000B1B8 bl ctgp_copy_to_mem1_and_branch .text0:8000B1BC lwz r0, 0x38+sender_lr(r1) .text0:8000B1C0 lwz r25, 0x38+var_1C(r1) .text0:8000B1C4 mtlr r0 .text0:8000B1C8 lwz r26, 0x38+var_18(r1) .text0:8000B1CC lwz r27, 0x38+var_14(r1) .text0:8000B1D0 lwz r28, 0x38+var_10(r1) .text0:8000B1D4 lwz r29, 0x38+var_C(r1) .text0:8000B1D8 lwz r30, 0x38+var_8(r1) .text0:8000B1DC lwz r31, 0x38+var_4(r1) .text0:8000B1E0 addi r1, r1, 0x38 .text0:8000B1E4 blr .text0:8000B1E8 # --------------------------------------------------------------------------- .text0:8000B1E8 .text0:8000B1E8 invalidate: # CODE XREF: ctgp_load+B24↑j .text0:8000B1E8 dcbf 0, r5 .text0:8000B1EC sc .text0:8000B1F0 icbi 0, r5 .text0:8000B1F4 sync .text0:8000B1F8 isync .text0:8000B1FC b loc_8000A978 .text0:8000B200 # --------------------------------------------------------------------------- .text0:8000B200 .text0:8000B200 loc_8000B200: # CODE XREF: ctgp_load+460↑j .text0:8000B200 # ctgp_load+46C↑j .text0:8000B200 lis r9, 0x8000 .text0:8000B204 lis r10, 0x4C00 .text0:8000B208 ori r9, r9, 0xC00 # 0x80000C00 .text0:8000B20C ori r10, r10, 0x64 # 0x4C000064 .text0:8000B210 stw r10, 0(r9) .text0:8000B214 dcbf 0, r9 .text0:8000B218 b loc_8000A2A4 .text0:8000B218 # End of function ctgp_load .text0:8000B218