[*] Binary protection state of pzstd

  
  	Full RELRO     Canary found      NX enabled   PIE enabled  No RPATH     No RUNPATH   No Symbols


[*] Function system tear down of pzstd

    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/pzstd @ 0xbe64 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000be64 ()                                          | void fcn_0000be64 (int16_t arg1, int16_t arg2) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_18h;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_24h;
                                                                     |     int16_t var_28h;
                                                                     |     int16_t var_4ch;
                                                                     |     int16_t var_58h;
                                                                     |     int16_t var_68h;
                                                                     |     int16_t var_6ch;
                                                                     |     int16_t var_74h;
                                                                     |     int16_t var_78h;
                                                                     |     int16_t var_94h;
                                                                     |     int16_t var_98h;
                                                                     |     int16_t var_a0h;
                                                                     |     int16_t var_cch;
                                                                     |     int16_t var_d4h;
                                                                     |     int32_t var_0h_2;
                                                                     |     int16_t var_dch;
                                                                     |     int16_t var_e0h;
                                                                     |     int16_t var_e4h;
                                                                     |     int16_t var_ech;
                                                                     |     int16_t var_f0h;
                                                                     |     int16_t var_f4h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0000be64 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000be68 sub sp, 0xfc                                          |     
    0x0000be6a ldr r4, [pc, 0x3c4]                                   |     
    0x0000be6c movs r5, 0                                            |     r5 = 0;
    0x0000be6e mov r6, r1                                            |     r6 = r1;
    0x0000be70 ldr r2, [pc, 0x3c0]                                   |     r2 = *(0xc234);
    0x0000be72 add r4, pc                                            |     r4 = 0x180a8;
    0x0000be74 ldr r7, [pc, 0x3c0]                                   |     
    0x0000be76 ldr r3, [pc, 0x3c4]                                   |     r3 = *(0xc23e);
    0x0000be78 ldr r2, [r4, r2]                                      |     
    0x0000be7a mov r4, r0                                            |     r4 = r0;
    0x0000be7c add r7, pc                                            |     r7 = 0x180b8;
    0x0000be7e adds r0, 0x20                                         |     r0 += 0x20;
    0x0000be80 add.w sb, r4, 0x3c                                    |     sb = r4 + 0x3c;
    0x0000be84 ldr r2, [r2]                                          |     r2 = *(0x180a8);
    0x0000be86 str r2, [sp, 0xf4]                                    |     var_f4h = r2;
    0x0000be88 mov.w r2, 0                                           |     r2 = 0;
    0x0000be8c ldr r2, [r1, 0x40]                                    |     r2 = *((r1 + 0x40));
    0x0000be8e ldr r3, [r7, r3]                                      |     
    0x0000be90 str r2, [r0, -0x4]                                    |     *((r0 - 0x4)) = r2;
    0x0000be94 ldr r3, [r3]                                          |     r3 = *(0x180b8);
    0x0000be96 str r3, [r0, -0x8]                                    |     *((r0 - 0x8)) = r3;
    0x0000be9a strd r5, r5, [r4]                                     |     __asm ("strd r5, r5, [r4]");
    0x0000be9e strd r5, r5, [r4, 8]                                  |     __asm ("strd r5, r5, [r4, 8]");
    0x0000bea2 strd r5, r5, [r4, 0x10]                               |     __asm ("strd r5, r5, [r4, 0x10]");
    0x0000bea6 blx 0x1d94                                            |     sym ();
    0x0000beaa strb.w r5, [r4, 0x3c]                                 |     *((r4 + 0x3c)) = r5;
    0x0000beae movs r0, 0x96                                         |     r0 = 0x96;
    0x0000beb0 ldrb r3, [r6, 0xc]                                    |     r3 = *((r6 + 0xc));
    0x0000beb2 movs r1, 0                                            |     r1 = 0;
    0x0000beb4 strb.w r5, [r4, 0x30]                                 |     *((r4 + 0x30)) = r5;
    0x0000beb8 str r5, [r4, 0x38]                                    |     *((r4 + 0x38)) = r5;
    0x0000beba strd r5, r5, [r4, 0x4c]                               |     __asm ("strd r5, r5, [r4, 0x4c]");
    0x0000bebe strd r0, r1, [r4, 0x28]                               |     __asm ("strd r0, r1, [r4, 0x28]");
    0x0000bec2 str.w sb, [r4, 0x34]                                  |     __asm ("str.w sb, [r4, 0x34]");
    0x0000bec6 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000bec8 bne.w 0xc098                                          |         goto label_10;
                                                                     |     }
    0x0000becc add r5, sp, 0x4c                                      |     r5 += var_4ch;
    0x0000bece str r3, [sp]                                          |     *(sp) = r3;
    0x0000bed0 mov r0, r5                                            |     r0 = r5;
    0x0000bed2 ldr r1, [r6, 8]                                       |     r1 = *((r6 + 8));
    0x0000bed4 movs r2, 0                                            |     r2 = 0;
    0x0000bed6 movs r3, 0                                            |     r3 = 0;
    0x0000bed8 bl 0x1b23c                                            |     fcn_0001b23c (r0, r1, r2, r3, r4, r5);
    0x0000bedc ldr r3, [r6, 4]                                       |     r3 = *((r6 + 4));
    0x0000bede ldrb.w r2, [r6, 0x3c]                                 |     r2 = *((r6 + 0x3c));
    0x0000bee2 ldr.w fp, [sp, 0x4c]                                  |     fp = var_4ch;
    0x0000bee6 str r2, [sp, 0x20]                                    |     var_20h = r2;
    0x0000bee8 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000beea bne.w 0xc106                                          |         goto label_11;
                                                                     |     }
                                                                     | label_0:
    0x0000beee ldr r3, [sp, 0x20]                                    |     r3 = var_20h;
    0x0000bef0 mov.w sl, 0                                           |     sl = 0;
    0x0000bef4 mov ip, r5                                            |     
    0x0000bef6 str.w sl, [sp, 0x68]                                  |     __asm ("str.w sl, [var_68h]");
    0x0000befa str.w fp, [sp, 0x4c]                                  |     __asm ("str.w fp, [var_4ch]");
    0x0000befe add r6, sp, 0x78                                      |     r6 += var_78h;
    0x0000bf00 str r3, [sp, 0x6c]                                    |     var_6ch = r3;
    0x0000bf02 add r5, sp, 0x74                                      |     r5 += var_74h;
    0x0000bf04 ldm.w ip!, {r0, r1, r2, r3}                           |     r0 = *(ip!);
                                                                     |     r1 = *((ip! + 4));
                                                                     |     r2 = *((ip! + 8));
                                                                     |     r3 = *((ip! + 12));
    0x0000bf08 add.w r8, sp, 0xa0                                    |     r8 += var_a0h;
    0x0000bf0c mov lr, r8                                            |     lr = r8;
    0x0000bf0e str r4, [sp, 0x74]                                    |     var_74h = r4;
    0x0000bf10 stm r6!, {r0, r1, r2, r3}                             |     *(r6!) = r0;
                                                                     |     *((r6! + 4)) = r1;
                                                                     |     *((r6! + 8)) = r2;
                                                                     |     *((r6! + 12)) = r3;
    0x0000bf12 str.w fp, [sp, 0x78]                                  |     __asm ("str.w fp, [var_78h]");
    0x0000bf16 ldm.w ip!, {r0, r1, r2, r3}                           |     r0 = *(ip!);
                                                                     |     r1 = *((ip! + 4));
                                                                     |     r2 = *((ip! + 8));
                                                                     |     r3 = *((ip! + 12));
    0x0000bf1a stm r6!, {r0, r1, r2, r3}                             |     *(r6!) = r0;
                                                                     |     *((r6! + 4)) = r1;
                                                                     |     *((r6! + 8)) = r2;
                                                                     |     *((r6! + 12)) = r3;
    0x0000bf1c ldm.w ip, {r0, r1}                                    |     r0 = *(ip);
                                                                     |     r1 = *((ip + 4));
    0x0000bf20 ldr r3, [sp, 0x20]                                    |     r3 = var_20h;
    0x0000bf22 stm.w r6, {r0, r1}                                    |     *(r6) = r0;
                                                                     |     *((r6 + 4)) = r1;
    0x0000bf26 str.w sl, [sp, 0x94]                                  |     __asm ("str.w sl, [var_94h]");
    0x0000bf2a str r3, [sp, 0x98]                                    |     var_98h = r3;
    0x0000bf2c ldm r5!, {r0, r1, r2, r3}                             |     r0 = *(r5!);
                                                                     |     r1 = *((r5! + 4));
                                                                     |     r2 = *((r5! + 8));
                                                                     |     r3 = *((r5! + 12));
    0x0000bf2e str.w sl, [sp, 0xdc]                                  |     __asm ("str.w sl, [var_dch]");
    0x0000bf32 stm.w lr!, {r0, r1, r2, r3}                           |     *(lr!) = r0;
                                                                     |     *((lr! + 4)) = r1;
                                                                     |     *((lr! + 8)) = r2;
                                                                     |     *((lr! + 12)) = r3;
    0x0000bf36 ldm r5!, {r0, r1, r2, r3}                             |     r0 = *(r5!);
                                                                     |     r1 = *((r5! + 4));
                                                                     |     r2 = *((r5! + 8));
                                                                     |     r3 = *((r5! + 12));
    0x0000bf38 stm.w lr!, {r0, r1, r2, r3}                           |     *(lr!) = r0;
                                                                     |     *((lr! + 4)) = r1;
                                                                     |     *((lr! + 8)) = r2;
                                                                     |     *((lr! + 12)) = r3;
    0x0000bf3c ldm.w r5, {r0, r1, r2}                                |     r0 = *(r5);
                                                                     |     r1 = *((r5 + 4));
                                                                     |     r2 = *((r5 + 8));
    0x0000bf40 stm.w lr, {r0, r1, r2}                                |     *(lr) = r0;
                                                                     |     *((lr + 4)) = r1;
                                                                     |     *((lr + 8)) = r2;
    0x0000bf44 movs r0, 0x2c                                         |     r0 = 0x2c;
    0x0000bf46 blx 0x1d88                                            |     sym ();
    0x0000bf4a mov r6, r8                                            |     r6 = r8;
    0x0000bf4c mov r5, r0                                            |     r5 = r0;
    0x0000bf4e str r0, [sp, 0xd4]                                    |     var_d4h = r0;
    0x0000bf50 ldm r6!, {r0, r1, r2, r3}                             |     r0 = *(r6!);
                                                                     |     r1 = *((r6! + 4));
                                                                     |     r2 = *((r6! + 8));
                                                                     |     r3 = *((r6! + 12));
    0x0000bf52 ldr.w fp, [pc, 0x2ec]                                 |     fp = *(0xc242);
    0x0000bf56 ldr.w sl, [pc, 0x2ec]                                 |     sl = *(0xc246);
    0x0000bf5a stm r5!, {r0, r1, r2, r3}                             |     *(r5!) = r0;
                                                                     |     *((r5! + 4)) = r1;
                                                                     |     *((r5! + 8)) = r2;
                                                                     |     *((r5! + 12)) = r3;
    0x0000bf5c ldr.w lr, [pc, 0x2e8]                                 |     lr = *(0xc248);
    0x0000bf60 ldm r6!, {r0, r1, r2, r3}                             |     r0 = *(r6!);
                                                                     |     r1 = *((r6! + 4));
                                                                     |     r2 = *((r6! + 8));
                                                                     |     r3 = *((r6! + 12));
    0x0000bf62 ldr.w ip, [pc, 0x2e8]                                 |     ip = *(0xc24e);
    0x0000bf66 stm r5!, {r0, r1, r2, r3}                             |     *(r5!) = r0;
                                                                     |     *((r5! + 4)) = r1;
                                                                     |     *((r5! + 8)) = r2;
                                                                     |     *((r5! + 12)) = r3;
    0x0000bf68 ldm.w r6, {r0, r1, r2}                                |     r0 = *(r6);
                                                                     |     r1 = *((r6 + 4));
                                                                     |     r2 = *((r6 + 8));
    0x0000bf6c stm.w r5, {r0, r1, r2}                                |     *(r5) = r0;
                                                                     |     *((r5 + 4)) = r1;
                                                                     |     *((r5 + 8)) = r2;
    0x0000bf70 movs r0, 0x48                                         |     r0 = 0x48;
    0x0000bf72 ldr.w r6, [r7, fp]                                    |     r6 = *((r7 + fp));
    0x0000bf76 str r6, [sp, 0xe0]                                    |     var_e0h = r6;
    0x0000bf78 ldr.w sl, [r7, sl]                                    |     sl = *((r7 + sl));
    0x0000bf7c str.w sl, [sp, 0xdc]                                  |     __asm ("str.w sl, [var_dch]");
    0x0000bf80 ldr.w r3, [r7, lr]                                    |     r3 = *((r7 + lr));
    0x0000bf84 str r3, [sp, 0x20]                                    |     var_20h = r3;
    0x0000bf86 str r3, [sp, 0xf0]                                    |     var_f0h = r3;
    0x0000bf88 ldr.w r7, [r7, ip]                                    |     r7 = *((r7 + ip));
    0x0000bf8c str r7, [sp, 0xec]                                    |     var_ech = r7;
    0x0000bf8e blx 0x1d88                                            |     sym ();
    0x0000bf92 add r2, sp, 0xd4                                      |     r2 += var_d4h;
    0x0000bf94 mov r3, r0                                            |     r3 = r0;
    0x0000bf96 mov r5, r2                                            |     r5 = r2;
    0x0000bf98 str r2, [sp, 0x24]                                    |     var_24h = r2;
    0x0000bf9a movs r2, 0                                            |     r2 = 0;
    0x0000bf9c add.w fp, r0, 0x18                                    |     
    0x0000bfa0 strd r2, r2, [r0]                                     |     __asm ("strd r2, r2, [r0]");
    0x0000bfa4 add.w lr, r0, 0x28                                    |     lr = r0 + 0x28;
    0x0000bfa8 strd r2, r2, [r0, 8]                                  |     __asm ("strd r2, r2, [r0, 8]");
    0x0000bfac add.w ip, sp, 0xcc                                    |     
    0x0000bfb0 strd r2, r2, [r0, 0x10]                               |     __asm ("strd r2, r2, [r0, 0x10]");
    0x0000bfb4 add.w sb, sp, 0xe4                                    |     sb += var_e4h;
    0x0000bfb8 str r2, [sp, 0xdc]                                    |     var_dch = r2;
    0x0000bfba ldrd r0, r1, [r5]                                     |     __asm ("ldrd r0, r1, [r5]");
    0x0000bfbe stm.w ip, {r0, r1}                                    |     *(ip) = r0;
                                                                     |     *((ip + 4)) = r1;
    0x0000bfc2 ldm.w fp, {r0, r1}                                    |     r0 = *(fp);
                                                                     |     r1 = *((fp + 4));
    0x0000bfc6 stm.w r5, {r0, r1}                                    |     *(r5) = r0;
                                                                     |     *((r5 + 4)) = r1;
    0x0000bfca ldm.w ip, {r0, r1}                                    |     r0 = *(ip);
                                                                     |     r1 = *((ip + 4));
    0x0000bfce stm.w fp, {r0, r1}                                    |     *(fp) = r0;
                                                                     |     *((fp + 4)) = r1;
    0x0000bfd2 ldr r1, [r3, 0x24]                                    |     r1 = *((r3 + 0x24));
    0x0000bfd4 str.w sl, [r3, 0x20]                                  |     __asm ("str.w sl, [r3, 0x20]");
    0x0000bfd8 str r6, [r3, 0x24]                                    |     *((r3 + 0x24)) = r6;
    0x0000bfda str r1, [sp, 0xe0]                                    |     var_e0h = r1;
    0x0000bfdc ldm.w sb, {r0, r1}                                    |     r0 = *(sb);
                                                                     |     r1 = *((sb + 4));
    0x0000bfe0 stm.w ip, {r0, r1}                                    |     *(ip) = r0;
                                                                     |     *((ip + 4)) = r1;
    0x0000bfe4 ldm.w lr, {r0, r1}                                    |     r0 = *(lr);
                                                                     |     r1 = *((lr + 4));
    0x0000bfe8 stm.w sb, {r0, r1}                                    |     *(sb) = r0;
                                                                     |     *((sb + 4)) = r1;
    0x0000bfec ldm.w ip, {r0, r1}                                    |     r0 = *(ip);
                                                                     |     r1 = *((ip + 4));
    0x0000bff0 ldr r6, [r4, 0x4c]                                    |     r6 = *((r4 + 0x4c));
    0x0000bff2 str r2, [sp, 0xec]                                    |     var_ech = r2;
    0x0000bff4 stm.w lr, {r0, r1}                                    |     *(lr) = r0;
                                                                     |     *((lr + 4)) = r1;
    0x0000bff8 ldr r1, [sp, 0x20]                                    |     r1 = var_20h;
    0x0000bffa strd r2, r2, [r3, 0x38]                               |     __asm ("strd r2, r2, [r3, 0x38]");
    0x0000bffe strd r2, r2, [r3, 0x40]                               |     __asm ("strd r2, r2, [r3, 0x40]");
    0x0000c002 ldr r2, [r3, 0x34]                                    |     r2 = *((r3 + 0x34));
    0x0000c004 str r7, [r3, 0x30]                                    |     *((r3 + 0x30)) = r7;
    0x0000c006 str r3, [r4, 0x4c]                                    |     *((r4 + 0x4c)) = r3;
    0x0000c008 str r1, [r3, 0x34]                                    |     *((r3 + 0x34)) = r1;
    0x0000c00a str r2, [sp, 0xf0]                                    |     var_f0h = r2;
    0x0000c00c cmp r6, 0                                             |     
                                                                     |     if (r6 == 0) {
    0x0000c00e beq 0xc07c                                            |         goto label_12;
                                                                     |     }
    0x0000c010 ldrd r0, r7, [r6, 0x38]                               |     __asm ("ldrd r0, r7, [r6, 0x38]");
    0x0000c014 cmp r0, r7                                            |     
                                                                     |     if (r0 == r7) {
    0x0000c016 beq.w 0xc142                                          |         goto label_13;
                                                                     |     }
    0x0000c01a mov r5, r0                                            |     r5 = r0;
    0x0000c01c add.w sl, r6, 0x28                                    |     sl = r6 + 0x28;
                                                                     |     do {
    0x0000c020 ldr r3, [r6, 0x30]                                    |         r3 = *((r6 + 0x30));
    0x0000c022 ldr r2, [r5], 4                                       |         r2 = *(r5);
                                                                     |         r5 += 4;
    0x0000c026 str r2, [sp, 0xa0]                                    |         var_a0h = r2;
    0x0000c028 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0000c02a beq.w 0xc14e                                          |             goto label_14;
                                                                     |         }
    0x0000c02e ldr r3, [r6, 0x34]                                    |         r3 = *((r6 + 0x34));
    0x0000c030 mov r1, r8                                            |         r1 = r8;
    0x0000c032 mov r0, sl                                            |         r0 = sl;
    0x0000c034 mov fp, sl                                            |         
    0x0000c036 blx r3                                                |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000c038 cmp r7, r5                                            |         
    0x0000c03a bne 0xc020                                            |         
                                                                     |     } while (r7 != r5);
    0x0000c03c ldr r0, [r6, 0x38]                                    |     r0 = *((r6 + 0x38));
                                                                     |     if (r0 != 0) {
    0x0000c03e cbz r0, 0xc044                                        |         
                                                                     | label_1:
    0x0000c040 blx 0x1fa8                                            |         fcn_00001fa8 ();
                                                                     |     }
                                                                     | label_2:
    0x0000c044 ldr r3, [r6, 0x30]                                    |     r3 = *((r6 + 0x30));
                                                                     |     if (r3 != 0) {
    0x0000c046 cbz r3, 0xc050                                        |         
    0x0000c048 movs r2, 3                                            |         r2 = 3;
    0x0000c04a mov r1, fp                                            |         r1 = fp;
    0x0000c04c mov r0, fp                                            |         r0 = fp;
    0x0000c04e blx r3                                                |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
                                                                     |     }
    0x0000c050 ldr r3, [r6, 0x20]                                    |     r3 = *((r6 + 0x20));
                                                                     |     if (r3 != 0) {
    0x0000c052 cbz r3, 0xc05e                                        |         
    0x0000c054 add.w r1, r6, 0x18                                    |         r1 = r6 + 0x18;
    0x0000c058 movs r2, 3                                            |         r2 = 3;
    0x0000c05a mov r0, r1                                            |         r0 = r1;
    0x0000c05c blx r3                                                |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
                                                                     |     }
    0x0000c05e mov r0, r6                                            |     r0 = r6;
    0x0000c060 blx 0x1fa8                                            |     fcn_00001fa8 ();
    0x0000c064 ldr r3, [sp, 0xec]                                    |     r3 = var_ech;
                                                                     |     if (r3 != 0) {
    0x0000c066 cbz r3, 0xc070                                        |         
    0x0000c068 movs r2, 3                                            |         r2 = 3;
    0x0000c06a mov r1, sb                                            |         r1 = sb;
    0x0000c06c mov r0, sb                                            |         r0 = sb;
    0x0000c06e blx r3                                                |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
                                                                     |     }
    0x0000c070 ldr r3, [sp, 0xdc]                                    |     r3 = var_dch;
                                                                     |     if (r3 == 0) {
    0x0000c072 cbz r3, 0xc07c                                        |         goto label_12;
                                                                     |     }
    0x0000c074 ldr r1, [sp, 0x24]                                    |     r1 = var_24h;
    0x0000c076 movs r2, 3                                            |     r2 = 3;
    0x0000c078 mov r0, r1                                            |     r0 = r1;
    0x0000c07a blx r3                                                |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
                                                                     |     do {
                                                                     | label_12:
    0x0000c07c ldr r2, [pc, 0x1d0]                                   |         
    0x0000c07e ldr r3, [pc, 0x1b4]                                   |         r3 = *(0xc236);
    0x0000c080 add r2, pc                                            |         r2 = 0x182d4;
    0x0000c082 ldr r3, [r2, r3]                                      |         r3 = *(0x182d4);
    0x0000c084 ldr r2, [r3]                                          |         r2 = *(0x182d4);
    0x0000c086 ldr r3, [sp, 0xf4]                                    |         r3 = var_f4h;
    0x0000c088 eors r2, r3                                           |         r2 ^= r3;
    0x0000c08a mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000c08e bne 0xc152                                            |             goto label_15;
                                                                     |         }
    0x0000c090 mov r0, r4                                            |         r0 = r4;
    0x0000c092 add sp, 0xfc                                          |         
    0x0000c094 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_10:
    0x0000c098 ldr r2, [pc, 0x1b8]                                   |         r2 = *(0xc254);
    0x0000c09a movs r0, 0x48                                         |         r0 = 0x48;
    0x0000c09c str r4, [sp, 0xd4]                                    |         var_d4h = r4;
    0x0000c09e ldr r3, [pc, 0x1b8]                                   |         r3 = *(0xc25a);
    0x0000c0a0 ldr r6, [r7, r2]                                      |         r6 = *((r7 + r2));
    0x0000c0a2 str r6, [sp, 0xe0]                                    |         var_e0h = r6;
    0x0000c0a4 ldr.w r8, [r7, r3]                                    |         r8 = *((r7 + r3));
    0x0000c0a8 ldr r3, [pc, 0x1b0]                                   |         r3 = *(0xc25c);
    0x0000c0aa str.w r8, [sp, 0xdc]                                  |         __asm ("str.w r8, [var_dch]");
    0x0000c0ae ldr r5, [r7, r3]                                      |         r5 = *((r7 + r3));
    0x0000c0b0 ldr r3, [pc, 0x1ac]                                   |         r3 = *(0xc260);
    0x0000c0b2 str r5, [sp, 0xf0]                                    |         var_f0h = r5;
    0x0000c0b4 ldr r7, [r7, r3]                                      |         r7 = *((r7 + r3));
    0x0000c0b6 str r7, [sp, 0xec]                                    |         var_ech = r7;
    0x0000c0b8 blx 0x1d88                                            |         sym ();
    0x0000c0bc add r2, sp, 0xd4                                      |         r2 += var_d4h;
    0x0000c0be mov r3, r0                                            |         r3 = r0;
    0x0000c0c0 str r0, [r4, 0x50]                                    |         *((r4 + 0x50)) = r0;
    0x0000c0c2 add.w ip, sp, 0xcc                                    |         
    0x0000c0c6 ldm.w r2, {r0, r1}                                    |         r0 = *(r2);
                                                                     |         r1 = *((r2 + 4));
    0x0000c0ca add.w sb, r3, 0x18                                    |         sb = r3 + 0x18;
    0x0000c0ce movs r2, 0                                            |         r2 = 0;
    0x0000c0d0 add.w lr, r3, 0x28                                    |         lr = r3 + 0x28;
    0x0000c0d4 strd r2, r2, [r3]                                     |         __asm ("strd r2, r2, [r3]");
    0x0000c0d8 stm.w ip, {r0, r1}                                    |         *(ip) = r0;
                                                                     |         *((ip + 4)) = r1;
    0x0000c0dc strd r2, r2, [r3, 8]                                  |         __asm ("strd r2, r2, [r3, 8]");
    0x0000c0e0 strd r2, r2, [r3, 0x10]                               |         __asm ("strd r2, r2, [r3, 0x10]");
    0x0000c0e4 stm.w sb, {r0, r1}                                    |         *(sb) = r0;
                                                                     |         *((sb + 4)) = r1;
    0x0000c0e8 add r1, sp, 0xe4                                      |         r1 += var_e4h;
    0x0000c0ea ldm r1, {r0, r1}                                      |         r0 = *(r1);
                                                                     |         r1 = *((r1 + 4));
    0x0000c0ec strd r8, r6, [r3, 0x20]                               |         __asm ("strd r8, r6, [r3, 0x20]");
    0x0000c0f0 stm.w ip, {r0, r1}                                    |         *(ip) = r0;
                                                                     |         *((ip + 4)) = r1;
    0x0000c0f4 stm.w lr, {r0, r1}                                    |         *(lr) = r0;
                                                                     |         *((lr + 4)) = r1;
    0x0000c0f8 strd r7, r5, [r3, 0x30]                               |         __asm ("strd r7, r5, [r3, 0x30]");
    0x0000c0fc strd r2, r2, [r3, 0x38]                               |         __asm ("strd r2, r2, [r3, 0x38]");
    0x0000c100 strd r2, r2, [r3, 0x40]                               |         __asm ("strd r2, r2, [r3, 0x40]");
    0x0000c104 b 0xc07c                                              |         
                                                                     |     } while (1);
                                                                     | label_11:
    0x0000c106 cmp r3, fp                                            |     
                                                                     |     if (r3 >= fp) {
    0x0000c108 bhs.w 0xbeee                                          |         goto label_0;
                                                                     |     }
    0x0000c10c vmov.i32 d16, 0                                       |     __asm ("vmov.i32 d16, 0");
    0x0000c110 add r6, sp, 0x28                                      |     r6 += var_28h;
    0x0000c112 str r3, [sp, 0x4c]                                    |     var_4ch = r3;
    0x0000c114 movs r3, 0                                            |     r3 = 0;
    0x0000c116 str r3, [sp, 0x18]                                    |     var_18h = r3;
    0x0000c118 add r3, sp, 0x58                                      |     r3 += var_58h;
    0x0000c11a vstr d16, [sp, 0x10]                                  |     __asm ("vstr d16, [sp, 0x10]");
    0x0000c11e ldm r3, {r0, r1, r2, r3}                              |     r0 = *(r3);
                                                                     |     r1 = *((r3 + 4));
                                                                     |     r2 = *((r3 + 8));
                                                                     |     r3 = *((r3 + 12));
    0x0000c120 stm.w sp, {r0, r1, r2, r3}                            |     *(sp) = r0;
                                                                     |     *((sp + 4)) = r1;
                                                                     |     *((sp + 8)) = r2;
                                                                     |     *((sp + 12)) = r3;
    0x0000c124 mov r0, r6                                            |     r0 = r6;
    0x0000c126 ldm.w r5, {r1, r2, r3}                                |     r1 = *(r5);
                                                                     |     r2 = *((r5 + 4));
                                                                     |     r3 = *((r5 + 8));
    0x0000c12a bl 0x11860                                            |     r0 = fcn_00011860 (r0, r1, r2, r3, r4, r5, r6);
    0x0000c12e ldm r6!, {r0, r1, r2, r3}                             |     r0 = *(r6!);
                                                                     |     r1 = *((r6! + 4));
                                                                     |     r2 = *((r6! + 8));
                                                                     |     r3 = *((r6! + 12));
    0x0000c130 mov ip, r5                                            |     
    0x0000c132 stm.w ip!, {r0, r1, r2, r3}                           |     *(ip!) = r0;
                                                                     |     *((ip! + 4)) = r1;
                                                                     |     *((ip! + 8)) = r2;
                                                                     |     *((ip! + 12)) = r3;
    0x0000c136 mov fp, r0                                            |     
    0x0000c138 ldm.w r6, {r0, r1, r2}                                |     r0 = *(r6);
                                                                     |     r1 = *((r6 + 4));
                                                                     |     r2 = *((r6 + 8));
    0x0000c13c stm.w ip, {r0, r1, r2}                                |     *(ip) = r0;
                                                                     |     *((ip + 4)) = r1;
                                                                     |     *((ip + 8)) = r2;
    0x0000c140 b 0xbeee                                              |     goto label_0;
                                                                     | label_13:
    0x0000c142 add.w fp, r6, 0x28                                    |     
    0x0000c146 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000c148 bne.w 0xc040                                          |         goto label_1;
                                                                     |     }
    0x0000c14c b 0xc044                                              |     goto label_2;
                                                                     | label_14:
    0x0000c14e blx 0x1e20                                            |     fcn_00001e20 ();
                                                                     | label_15:
    0x0000c152 blx 0x2008                                            |     fcn_00002008 ();
                                                                     |     do {
    0x0000c156 add r0, sp, 0xe4                                      |         r0 += var_e4h;
    0x0000c158 bl 0xb864                                             |         fcn_0000b864 (r0);
    0x0000c15c add r0, sp, 0xd4                                      |         r0 += var_d4h;
    0x0000c15e bl 0xb864                                             |         fcn_0000b864 (r0);
    0x0000c162 ldr r5, [r4, 0x50]                                    |         r5 = *((r4 + 0x50));
                                                                     |         if (r5 == 0) {
    0x0000c164 cbz r5, 0xc1a6                                        |             goto label_16;
                                                                     |         }
    0x0000c166 ldrd r6, sl, [r5, 0x38]                               |         __asm ("ldrd r6, sl, [r5, 0x38]");
    0x0000c16a add.w r8, sp, 0x4c                                    |         r8 += var_4ch;
    0x0000c16e add.w r7, r5, 0x28                                    |         r7 = r5 + 0x28;
                                                                     | label_5:
    0x0000c172 cmp sl, r6                                            |         
                                                                     |         if (sl == r6) {
    0x0000c174 beq 0xc18c                                            |             goto label_17;
                                                                     |         }
    0x0000c176 ldr r3, [r5, 0x30]                                    |         r3 = *((r5 + 0x30));
    0x0000c178 ldr r2, [r6], 4                                       |         r2 = *(r6);
                                                                     |         r6 += 4;
    0x0000c17c str r2, [sp, 0x4c]                                    |         var_4ch = r2;
    0x0000c17e cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x0000c180 bne 0xc206                                            |             goto label_18;
                                                                     |         }
    0x0000c182 blx 0x1e20                                            |         fcn_00001e20 ();
    0x0000c186 b 0xc156                                              |         
                                                                     |     } while (1);
                                                                     | label_17:
    0x0000c18c ldr r0, [r5, 0x38]                                    |     r0 = *((r5 + 0x38));
    0x0000c18e cbnz r0, 0xc1f0                                       |     
                                                                     |     while (1) {
    0x0000c190 ldr r3, [r5, 0x30]                                    |         r3 = *((r5 + 0x30));
    0x0000c192 add.w r1, r5, 0x28                                    |         r1 = r5 + 0x28;
                                                                     |         if (r3 != 0) {
    0x0000c196 cbnz r3, 0xc1f6                                       |             goto label_19;
                                                                     |         }
                                                                     | label_3:
    0x0000c198 ldr r3, [r5, 0x20]                                    |         r3 = *((r5 + 0x20));
    0x0000c19a add.w r1, r5, 0x18                                    |         r1 = r5 + 0x18;
                                                                     |         if (r3 != 0) {
    0x0000c19e cbnz r3, 0xc1fe                                       |             goto label_20;
                                                                     |         }
                                                                     | label_4:
    0x0000c1a0 mov r0, r5                                            |         r0 = r5;
    0x0000c1a2 blx 0x1fa8                                            |         fcn_00001fa8 ();
                                                                     | label_16:
    0x0000c1a6 ldr r5, [r4, 0x4c]                                    |         r5 = *((r4 + 0x4c));
                                                                     |         if (r5 != 0) {
    0x0000c1a8 cbz r5, 0xc1e2                                        |             
    0x0000c1aa ldrd r6, sl, [r5, 0x38]                               |             __asm ("ldrd r6, sl, [r5, 0x38]");
    0x0000c1ae add.w r8, sp, 0x4c                                    |             r8 += var_4ch;
    0x0000c1b2 add.w r7, r5, 0x28                                    |             r7 = r5 + 0x28;
                                                                     | label_9:
    0x0000c1b6 cmp r6, sl                                            |             
                                                                     |             if (r6 != sl) {
    0x0000c1b8 beq 0xc1c8                                            |                 
    0x0000c1ba ldr r3, [r5, 0x30]                                    |                 r3 = *((r5 + 0x30));
    0x0000c1bc ldr r2, [r6], 4                                       |                 r2 = *(r6);
                                                                     |                 r6 += 4;
    0x0000c1c0 str r2, [sp, 0x4c]                                    |                 var_4ch = r2;
                                                                     |                 if (r3 != 0) {
    0x0000c1c2 cbnz r3, 0xc226                                       |                     goto label_21;
                                                                     |                 }
    0x0000c1c4 blx 0x1e20                                            |                 fcn_00001e20 ();
                                                                     |             }
    0x0000c1c8 ldr r0, [r5, 0x38]                                    |             r0 = *((r5 + 0x38));
                                                                     |             if (r0 != 0) {
    0x0000c1ca cbnz r0, 0xc210                                       |                 goto label_22;
                                                                     |             }
                                                                     | label_6:
    0x0000c1cc ldr r3, [r5, 0x30]                                    |             r3 = *((r5 + 0x30));
    0x0000c1ce add.w r1, r5, 0x28                                    |             r1 = r5 + 0x28;
                                                                     |             if (r3 != 0) {
    0x0000c1d2 cbnz r3, 0xc216                                       |                 goto label_23;
                                                                     |             }
                                                                     | label_7:
    0x0000c1d4 ldr r3, [r5, 0x20]                                    |             r3 = *((r5 + 0x20));
    0x0000c1d6 add.w r1, r5, 0x18                                    |             r1 = r5 + 0x18;
                                                                     |             if (r3 != 0) {
    0x0000c1da cbnz r3, 0xc21e                                       |                 goto label_24;
                                                                     |             }
                                                                     | label_8:
    0x0000c1dc mov r0, r5                                            |             r0 = r5;
    0x0000c1de blx 0x1fa8                                            |             fcn_00001fa8 ();
                                                                     |         }
    0x0000c1e2 ldr r0, [r4, 0x34]                                    |         r0 = *((r4 + 0x34));
    0x0000c1e4 cmp sb, r0                                            |         
                                                                     |         if (sb != r0) {
    0x0000c1e6 beq 0xc1ec                                            |             
    0x0000c1e8 blx 0x1fa8                                            |             fcn_00001fa8 ();
                                                                     |         }
    0x0000c1ec blx 0x2014                                            |         fcn_00002014 ();
    0x0000c1f0 blx 0x1fa8                                            |         fcn_00001fa8 ();
    0x0000c1f4 b 0xc190                                              |         
                                                                     |     }
                                                                     | label_19:
    0x0000c1f6 movs r2, 3                                            |     r2 = 3;
    0x0000c1f8 mov r0, r1                                            |     r0 = r1;
    0x0000c1fa blx r3                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r2);
    0x0000c1fc b 0xc198                                              |     goto label_3;
                                                                     | label_20:
    0x0000c1fe movs r2, 3                                            |     r2 = 3;
    0x0000c200 mov r0, r1                                            |     r0 = r1;
    0x0000c202 blx r3                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r2);
    0x0000c204 b 0xc1a0                                              |     goto label_4;
                                                                     | label_18:
    0x0000c206 ldr r3, [r5, 0x34]                                    |     r3 = *((r5 + 0x34));
    0x0000c208 mov r1, r8                                            |     r1 = r8;
    0x0000c20a mov r0, r7                                            |     r0 = r7;
    0x0000c20c blx r3                                                |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000c20e b 0xc172                                              |     goto label_5;
                                                                     | label_22:
    0x0000c210 blx 0x1fa8                                            |     fcn_00001fa8 ();
    0x0000c214 b 0xc1cc                                              |     goto label_6;
                                                                     | label_23:
    0x0000c216 movs r2, 3                                            |     r2 = 3;
    0x0000c218 mov r0, r1                                            |     r0 = r1;
    0x0000c21a blx r3                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r2);
    0x0000c21c b 0xc1d4                                              |     goto label_7;
                                                                     | label_24:
    0x0000c21e movs r2, 3                                            |     r2 = 3;
    0x0000c220 mov r0, r1                                            |     r0 = r1;
    0x0000c222 blx r3                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r2);
    0x0000c224 b 0xc1dc                                              |     goto label_8;
                                                                     | label_21:
    0x0000c226 ldr r3, [r5, 0x34]                                    |     r3 = *((r5 + 0x34));
    0x0000c228 mov r1, r8                                            |     r1 = r8;
    0x0000c22a mov r0, r7                                            |     r0 = r7;
    0x0000c22c blx r3                                                |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000c22e b 0xc1b6                                              |     goto label_9;
                                                                     | }

[*] Function system used 1 times pzstd