.text:02B8EF8C
.text:02B8EF8C
.text:02B8EF8C # sysdr::ResourcePackDecrypt((void *, unsigned int))
.text:02B8EF8C ResourcePackDecrypt__5sysdrFPvUi: # CODE XREF: _Q2_5sysdr12ResourceData::load_drp__Q2_5sysdr36__N_20_dr_resource_list_cpp_8bdc2d44FQ2_5sysdr41SharedPtr__tm(void)+78p
.text:02B8EF8C
.text:02B8EF8C .set var_40, -0x40
.text:02B8EF8C .set var_2C, -0x2C
.text:02B8EF8C .set arg_4, 4
.text:02B8EF8C
.text:02B8EF8C stwu r1, -0x48(r1)
.text:02B8EF90 stmw r21, 0x48+var_2C(r1)
.text:02B8EF94 mflr r0
.text:02B8EF98 stw r0, 0x48+arg_4(r1)
.text:02B8EF9C lwz r5, 0x1C(r3)
.text:02B8EFA0 mr r30, r3
.text:02B8EFA4 cmpwi r5, 0
.text:02B8EFA8 mr r27, r4
.text:02B8EFAC beq loc_2B8F2C0
.text:02B8EFB0 lis r4, 0x133 # 0x132B471
.text:02B8EFB4 addi r3, r1, 0x48+var_40
.text:02B8EFB8 addi r4, r4, -0x4B8F # 0x132B471
.text:02B8EFBC bl Init__Q2_5sysdr8RandomXSFi # sysdr::RandomXS::Init((int))
.text:02B8EFC0 lwz r4, 0x1C(r30)
.text:02B8EFC4 addi r3, r1, 0x48+var_40
.text:02B8EFC8 bl Init__Q2_5sysdr8RandomXSFi # sysdr::RandomXS::Init((int))
.text:02B8EFCC clrlwi. r7, r27, 30
.text:02B8EFD0 li r23, 0
.text:02B8EFD4 beq loc_2B8F17C
.text:02B8EFD8 cmpwi r27, 0
.text:02B8EFDC beq loc_2B8F2C0
.text:02B8EFE0 srwi. r22, r27, 3
.text:02B8EFE4 ble loc_2B8F12C
.text:02B8EFE8 addi r24, r30, -8
.text:02B8EFEC li r31, -0x18
.text:02B8EFF0 li r29, -0x19
.text:02B8EFF4 li r26, -0x1A
.text:02B8EFF8 li r25, -0x1B
.text:02B8EFFC
.text:02B8EFFC loc_2B8EFFC: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+19Cj
.text:02B8EFFC addi r8, r31, -4
.text:02B8F000 cmplwi r8, 4
.text:02B8F004 lbzx r21, r30, r23
.text:02B8F008 blt loc_2B8F020
.text:02B8F00C addi r3, r1, 0x48+var_40
.text:02B8F010 bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F014 srawi r9, r3, 3
.text:02B8F018 xor r10, r21, r9
.text:02B8F01C stbx r10, r30, r23
.text:02B8F020
.text:02B8F020 loc_2B8F020: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+7Cj
.text:02B8F020 lbz r21, 9(r24)
.text:02B8F024 cmplwi r25, 4
.text:02B8F028 addi r24, r24, 8
.text:02B8F02C blt loc_2B8F044
.text:02B8F030 addi r3, r1, 0x48+var_40
.text:02B8F034 bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F038 srawi r0, r3, 3
.text:02B8F03C xor r0, r21, r0
.text:02B8F040 stb r0, 1(r24)
.text:02B8F044
.text:02B8F044 loc_2B8F044: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+A0j
.text:02B8F044 cmplwi r26, 4
.text:02B8F048 lbz r21, 2(r24)
.text:02B8F04C blt loc_2B8F064
.text:02B8F050 addi r3, r1, 0x48+var_40
.text:02B8F054 bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F058 srawi r0, r3, 3
.text:02B8F05C xor r0, r21, r0
.text:02B8F060 stb r0, 2(r24)
.text:02B8F064
.text:02B8F064 loc_2B8F064: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+C0j
.text:02B8F064 cmplwi r29, 4
.text:02B8F068 lbz r21, 3(r24)
.text:02B8F06C blt loc_2B8F084
.text:02B8F070 addi r3, r1, 0x48+var_40
.text:02B8F074 bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F078 srawi r0, r3, 3
.text:02B8F07C xor r0, r21, r0
.text:02B8F080 stb r0, 3(r24)
.text:02B8F084
.text:02B8F084 loc_2B8F084: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+E0j
.text:02B8F084 cmplwi r31, 4
.text:02B8F088 lbz r21, 4(r24)
.text:02B8F08C blt loc_2B8F0A4
.text:02B8F090 addi r3, r1, 0x48+var_40
.text:02B8F094 bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F098 srawi r8, r3, 3
.text:02B8F09C xor r0, r21, r8
.text:02B8F0A0 stb r0, 4(r24)
.text:02B8F0A4
.text:02B8F0A4 loc_2B8F0A4: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+100j
.text:02B8F0A4 addi r11, r25, 4
.text:02B8F0A8 cmplwi r11, 4
.text:02B8F0AC lbz r21, 5(r24)
.text:02B8F0B0 blt loc_2B8F0C8
.text:02B8F0B4 addi r3, r1, 0x48+var_40
.text:02B8F0B8 bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F0BC srawi r0, r3, 3
.text:02B8F0C0 xor r0, r21, r0
.text:02B8F0C4 stb r0, 5(r24)
.text:02B8F0C8
.text:02B8F0C8 loc_2B8F0C8: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+124j
.text:02B8F0C8 addi r0, r26, 4
.text:02B8F0CC cmplwi r0, 4
.text:02B8F0D0 lbz r21, 6(r24)
.text:02B8F0D4 blt loc_2B8F0EC
.text:02B8F0D8 addi r3, r1, 0x48+var_40
.text:02B8F0DC bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F0E0 srawi r5, r3, 3
.text:02B8F0E4 xor r0, r21, r5
.text:02B8F0E8 stb r0, 6(r24)
.text:02B8F0EC
.text:02B8F0EC loc_2B8F0EC: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+148j
.text:02B8F0EC addi r0, r29, 4
.text:02B8F0F0 cmplwi r0, 4
.text:02B8F0F4 lbz r21, 7(r24)
.text:02B8F0F8 blt loc_2B8F110
.text:02B8F0FC addi r3, r1, 0x48+var_40
.text:02B8F100 bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F104 srawi r0, r3, 3
.text:02B8F108 xor r0, r21, r0
.text:02B8F10C stb r0, 7(r24)
.text:02B8F110
.text:02B8F110 loc_2B8F110: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+16Cj
.text:02B8F110 addi r25, r25, 8
.text:02B8F114 addi r26, r26, 8
.text:02B8F118 addi r29, r29, 8
.text:02B8F11C addic. r22, r22, -1
.text:02B8F120 addi r23, r23, 8
.text:02B8F124 addi r31, r31, 8
.text:02B8F128 bne loc_2B8EFFC
.text:02B8F12C
.text:02B8F12C loc_2B8F12C: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+58j
.text:02B8F12C clrlwi. r29, r27, 29
.text:02B8F130 ble loc_2B8F2C0
.text:02B8F134 addi r31, r23, -0x1C
.text:02B8F138
.text:02B8F138 loc_2B8F138: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+1D8j
.text:02B8F138 cmplwi r31, 4
.text:02B8F13C lbzx r21, r30, r23
.text:02B8F140 blt loc_2B8F158
.text:02B8F144 addi r3, r1, 0x48+var_40
.text:02B8F148 bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F14C srawi r0, r3, 3
.text:02B8F150 xor r0, r21, r0
.text:02B8F154 stbx r0, r30, r23
.text:02B8F158
.text:02B8F158 loc_2B8F158: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+1B4j
.text:02B8F158 addic. r29, r29, -1
.text:02B8F15C addi r31, r31, 1
.text:02B8F160 addi r23, r23, 1
.text:02B8F164 bne loc_2B8F138
.text:02B8F168 lha r0, 0x14(r30)
.text:02B8F16C cmpwi r0, 3
.text:02B8F170 addi r0, r30, 0x60
.text:02B8F174 blt loc_2B8F30C
.text:02B8F178 b loc_2B8F2D0
.text:02B8F17C # ---------------------------------------------------------------------------
.text:02B8F17C
.text:02B8F17C loc_2B8F17C: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+48j
.text:02B8F17C srwi. r31, r27, 2
.text:02B8F180 lwz r26, 0x1C(r30)
.text:02B8F184 li r25, 0
.text:02B8F188 beq loc_2B8F2BC
.text:02B8F18C srwi. r22, r31, 3
.text:02B8F190 ble loc_2B8F284
.text:02B8F194 addi r24, r30, -0x20
.text:02B8F198 slwi r23, r22, 3
.text:02B8F19C
.text:02B8F19C loc_2B8F19C: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+2F4j
.text:02B8F19C lwzu r21, 0x20(r24)
.text:02B8F1A0 addi r3, r1, 0x48+var_40
.text:02B8F1A4 bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F1A8 xor r0, r21, r3
.text:02B8F1AC lwz r21, 4(r24)
.text:02B8F1B0 xor r4, r0, r25
.text:02B8F1B4 extlwi r25, r3, 1,13
.text:02B8F1B8 addi r3, r1, 0x48+var_40
.text:02B8F1BC stw r4, 0(r24)
.text:02B8F1C0 bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F1C4 xor r5, r21, r3
.text:02B8F1C8 lwz r21, 8(r24)
.text:02B8F1CC xor r6, r5, r25
.text:02B8F1D0 extlwi r25, r3, 1,13
.text:02B8F1D4 addi r3, r1, 0x48+var_40
.text:02B8F1D8 stw r6, 4(r24)
.text:02B8F1DC bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F1E0 xor r7, r21, r3
.text:02B8F1E4 lwz r21, 0xC(r24)
.text:02B8F1E8 xor r8, r7, r25
.text:02B8F1EC extlwi r25, r3, 1,13
.text:02B8F1F0 addi r3, r1, 0x48+var_40
.text:02B8F1F4 stw r8, 8(r24)
.text:02B8F1F8 bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F1FC xor r9, r21, r3
.text:02B8F200 lwz r21, 0x10(r24)
.text:02B8F204 xor r10, r9, r25
.text:02B8F208 extlwi r25, r3, 1,13
.text:02B8F20C addi r3, r1, 0x48+var_40
.text:02B8F210 stw r10, 0xC(r24)
.text:02B8F214 bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F218 xor r0, r21, r3
.text:02B8F21C lwz r21, 0x14(r24)
.text:02B8F220 xor r0, r0, r25
.text:02B8F224 extlwi r25, r3, 1,13
.text:02B8F228 addi r3, r1, 0x48+var_40
.text:02B8F22C stw r0, 0x10(r24)
.text:02B8F230 bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F234 xor r0, r21, r3
.text:02B8F238 lwz r21, 0x18(r24)
.text:02B8F23C xor r4, r0, r25
.text:02B8F240 extlwi r25, r3, 1,13
.text:02B8F244 addi r3, r1, 0x48+var_40
.text:02B8F248 stw r4, 0x14(r24)
.text:02B8F24C bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F250 xor r6, r21, r3
.text:02B8F254 lwz r21, 0x1C(r24)
.text:02B8F258 xor r7, r6, r25
.text:02B8F25C extlwi r25, r3, 1,13
.text:02B8F260 addi r3, r1, 0x48+var_40
.text:02B8F264 stw r7, 0x18(r24)
.text:02B8F268 bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F26C xor r8, r21, r3
.text:02B8F270 xor r9, r8, r25
.text:02B8F274 extlwi r25, r3, 1,13
.text:02B8F278 addic. r22, r22, -1
.text:02B8F27C stw r9, 0x1C(r24)
.text:02B8F280 bne loc_2B8F19C
.text:02B8F284
.text:02B8F284 loc_2B8F284: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+204j
.text:02B8F284 clrlwi. r24, r31, 29
.text:02B8F288 ble loc_2B8F2BC
.text:02B8F28C slwi r10, r23, 2
.text:02B8F290 add r31, r30, r10
.text:02B8F294 addi r31, r31, -4
.text:02B8F298
.text:02B8F298 loc_2B8F298: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+32Cj
.text:02B8F298 lwzu r21, 4(r31)
.text:02B8F29C addi r3, r1, 0x48+var_40
.text:02B8F2A0 bl GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F2A4 xor r11, r21, r3
.text:02B8F2A8 addic. r24, r24, -1
.text:02B8F2AC xor r12, r11, r25
.text:02B8F2B0 extlwi r25, r3, 1,13
.text:02B8F2B4 stw r12, 0(r31)
.text:02B8F2B8 bne loc_2B8F298
.text:02B8F2BC
.text:02B8F2BC loc_2B8F2BC: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+1FCj
.text:02B8F2BC # sysdr::ResourcePackDecrypt((void *,uint))+2FCj
.text:02B8F2BC stw r26, 0x1C(r30)
.text:02B8F2C0
.text:02B8F2C0 loc_2B8F2C0: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+20j
.text:02B8F2C0 # sysdr::ResourcePackDecrypt((void *,uint))+50j ...
.text:02B8F2C0 lha r0, 0x14(r30)
.text:02B8F2C4 cmpwi r0, 3
.text:02B8F2C8 addi r0, r30, 0x60
.text:02B8F2CC blt loc_2B8F30C
.text:02B8F2D0
.text:02B8F2D0 loc_2B8F2D0: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+1ECj
.text:02B8F2D0 lbz r4, 0xA9(r30)
.text:02B8F2D4 cmpwi r4, 0
.text:02B8F2D8 bne loc_2B8F30C
.text:02B8F2DC addi r3, r30, 4
.text:02B8F2E0 addi r4, r27, -4
.text:02B8F2E4 bl crc32__Q2_5sysdr36__N_20_dr_resource_pack_cpp_483f2493FPCvUi
.text:02B8F2E8 lwz r5, 0(r30)
.text:02B8F2EC cmplw r3, r5
.text:02B8F2F0 beq loc_2B8F30C
.text:02B8F2F4
.text:02B8F2F4 loc_2B8F2F4: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+3A4j
.text:02B8F2F4 # sysdr::ResourcePackDecrypt((void *,uint))+3B8j ...
.text:02B8F2F4 lmw r21, 0x48+var_2C(r1)
.text:02B8F2F8 lwz r0, 0x48+arg_4(r1)
.text:02B8F2FC mtlr r0
.text:02B8F300 addi r1, r1, 0x48
.text:02B8F304 li r3, 0
.text:02B8F308 blr
.text:02B8F30C # ---------------------------------------------------------------------------
.text:02B8F30C
.text:02B8F30C loc_2B8F30C: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+1E8j
.text:02B8F30C # sysdr::ResourcePackDecrypt((void *,uint))+340j ...
.text:02B8F30C lha r3, 0x16(r30)
.text:02B8F310 cmpwi r3, 0
.text:02B8F314 mr r31, r0
.text:02B8F318 ble loc_2B8F3F0
.text:02B8F31C srwi. r9, r3, 3
.text:02B8F320 ble loc_2B8F3CC
.text:02B8F324 mtctr r9
.text:02B8F328
.text:02B8F328 loc_2B8F328: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+43Cj
.text:02B8F328 subf r6, r30, r31
.text:02B8F32C cmplw r6, r27
.text:02B8F330 bge loc_2B8F2F4
.text:02B8F334 lwz r7, 0x44(r31)
.text:02B8F338 add r31, r31, r7
.text:02B8F33C subf r8, r30, r31
.text:02B8F340 cmplw r8, r27
.text:02B8F344 bge loc_2B8F2F4
.text:02B8F348 lwz r9, 0x44(r31)
.text:02B8F34C add r31, r31, r9
.text:02B8F350 subf r10, r30, r31
.text:02B8F354 cmplw r10, r27
.text:02B8F358 bge loc_2B8F2F4
.text:02B8F35C lwz r11, 0x44(r31)
.text:02B8F360 add r31, r31, r11
.text:02B8F364 subf r12, r30, r31
.text:02B8F368 cmplw r12, r27
.text:02B8F36C bge loc_2B8F2F4
.text:02B8F370 lwz r0, 0x44(r31)
.text:02B8F374 add r31, r31, r0
.text:02B8F378 subf r4, r30, r31
.text:02B8F37C cmplw r4, r27
.text:02B8F380 bge loc_2B8F2F4
.text:02B8F384 lwz r5, 0x44(r31)
.text:02B8F388 add r31, r31, r5
.text:02B8F38C subf r6, r30, r31
.text:02B8F390 cmplw r6, r27
.text:02B8F394 bge loc_2B8F2F4
.text:02B8F398 lwz r7, 0x44(r31)
.text:02B8F39C add r31, r31, r7
.text:02B8F3A0 subf r8, r30, r31
.text:02B8F3A4 cmplw r8, r27
.text:02B8F3A8 bge loc_2B8F2F4
.text:02B8F3AC lwz r9, 0x44(r31)
.text:02B8F3B0 add r31, r31, r9
.text:02B8F3B4 subf r10, r30, r31
.text:02B8F3B8 cmplw r10, r27
.text:02B8F3BC bge loc_2B8F2F4
.text:02B8F3C0 lwz r11, 0x44(r31)
.text:02B8F3C4 add r31, r31, r11
.text:02B8F3C8 bdnz loc_2B8F328
.text:02B8F3CC
.text:02B8F3CC loc_2B8F3CC: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+394j
.text:02B8F3CC clrlwi. r0, r3, 29
.text:02B8F3D0 ble loc_2B8F3F0
.text:02B8F3D4 mtctr r0
.text:02B8F3D8
.text:02B8F3D8 loc_2B8F3D8: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+460j
.text:02B8F3D8 subf r12, r30, r31
.text:02B8F3DC cmplw r12, r27
.text:02B8F3E0 bge loc_2B8F2F4
.text:02B8F3E4 lwz r0, 0x44(r31)
.text:02B8F3E8 add r31, r31, r0
.text:02B8F3EC bdnz loc_2B8F3D8
.text:02B8F3F0
.text:02B8F3F0 loc_2B8F3F0: # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+38Cj
.text:02B8F3F0 # sysdr::ResourcePackDecrypt((void *,uint))+444j
.text:02B8F3F0 lmw r21, 0x48+var_2C(r1)
.text:02B8F3F4 lwz r0, 0x48+arg_4(r1)
.text:02B8F3F8 mtlr r0
.text:02B8F3FC addi r1, r1, 0x48
.text:02B8F400 li r3, 1
.text:02B8F404 blr
.text:02B8F404 # End of function sysdr::ResourcePackDecrypt((void *,uint))
.text:02B8F404
.text:02B8F408