[*] Binary protection state of libopkg.so.1.0.0

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


[*] Function popen tear down of libopkg.so.1.0.0

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libopkg.so.1.0.0 @ 0x15bbc */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00015bbc ()                                      | void fcn_00015bbc (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_4h_2;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00015bbc push {r0, r1, r7, r8, sb, fp, sp, lr}             |     
    0x00015bc0 ldr r7, [pc, 0x3c0]                               |     r7 = *(0x15f84);
    0x00015bc2 mov r4, r0                                        |     r4 = r0;
    0x00015bc4 sub sp, 0x14                                      |     
    0x00015bc6 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00015bc8 ands r5, r3, 2                                    |     r5 = r3 & 2;
                                                                 |     if (r5 != r3) {
    0x00015bcc bne 0x15c60                                       |         goto label_1;
                                                                 |     }
    0x00015bce ands r8, r3, 4                                    |     r8 = r3 & 4;
                                                                 |     if (r8 == r3) {
    0x00015bd2 bne 0x15c4c                                       |         
    0x00015bd4 mov r7, r1                                        |         r7 = r1;
    0x00015bd6 blx 0x61b0                                        |         r0 = fcn_000061b0 ();
    0x00015bda mov r6, r0                                        |         r6 = r0;
    0x00015bdc mov r0, r4                                        |         r0 = r4;
    0x00015bde cmp r6, 0                                         |         
                                                                 |         if (r6 == 0) {
    0x00015be0 beq 0x15c9e                                       |             goto label_2;
                                                                 |         }
    0x00015be2 blx 0x63fc                                        |         r0 = fcn_000063fc ();
    0x00015be6 mov sb, r0                                        |         sb = r0;
    0x00015be8 mov r0, r6                                        |         r0 = r6;
    0x00015bea blx 0x63fc                                        |         fcn_000063fc ();
    0x00015bee ldr.w fp, [pc, 0xe0]                              |         
    0x00015bf2 mov sl, r0                                        |         sl = r0;
    0x00015bf4 mov r1, r6                                        |         r1 = r6;
    0x00015bf6 mov r0, r4                                        |         r0 = r4;
    0x00015bf8 blx 0x6c3c                                        |         fcn_00006c3c ();
    0x00015bfc ldr r1, [pc, 0xd4]                                |         
    0x00015bfe add fp, pc                                        |         fp = 0x2b8d4;
    0x00015c00 strd sl, r0, [sp, 4]                              |         __asm ("strd sl, r0, [var_4h]");
    0x00015c04 mov r5, r0                                        |         r5 = r0;
    0x00015c06 str.w sb, [sp]                                    |         __asm ("str.w sb, [sp]");
    0x00015c0a mov r2, fp                                        |         r2 = fp;
    0x00015c0c ldr r3, [r4]                                      |         r3 = *(r4);
    0x00015c0e add r1, pc                                        |         r1 = 0x2b8e6;
    0x00015c10 movs r0, 3                                        |         r0 = 3;
    0x00015c12 blx 0x5a60                                        |         fcn_00005a60 ();
    0x00015c16 cmp r5, 0                                         |         
                                                                 |         if (r5 == 0) {
    0x00015c18 beq 0x15cbc                                       |             goto label_3;
                                                                 |         }
    0x00015c1a ldr r3, [r4, 0x18]                                |         r3 = *((r4 + 0x18));
                                                                 |         if (r5 > 0) {
    0x00015c1c bgt 0x15c76                                       |             goto label_4;
                                                                 |         }
    0x00015c1e str r3, [r6, 0x18]                                |         *((r6 + 0x18)) = r3;
    0x00015c20 movs r3, 3                                        |         r3 = 3;
    0x00015c22 str r3, [r4, 0x30]                                |         *((r4 + 0x30)) = r3;
    0x00015c24 mov r0, sb                                        |         r0 = sb;
    0x00015c26 blx 0x5c30                                        |         archive_entry_free ();
    0x00015c2a mov r0, sl                                        |         r0 = sl;
    0x00015c2c movs r5, 1                                        |         r5 = 1;
    0x00015c2e blx 0x5c30                                        |         archive_entry_free ();
    0x00015c32 ldr r2, [r4, 0x38]                                |         r2 = *((r4 + 0x38));
    0x00015c34 movs r1, 2                                        |         r1 = 2;
    0x00015c36 ldr.w r3, [r4, 0xe0]                              |         r3 = *((r4 + 0xe0));
    0x00015c3a mov r0, r5                                        |         r0 = r5;
    0x00015c3c str r1, [r6, 0x30]                                |         *((r6 + 0x30)) = r1;
    0x00015c3e str r2, [r6, 0x38]                                |         *((r6 + 0x38)) = r2;
    0x00015c40 str.w r3, [r6, 0xe0]                              |         __asm ("str.w r3, [r6, 0xe0]");
    0x00015c44 str r6, [r7]                                      |         *(r7) = r6;
    0x00015c46 add sp, 0x14                                      |         
    0x00015c48 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 |     }
    0x00015c4c ldr r1, [pc, 0x88]                                |     
    0x00015c4e mov r2, r0                                        |     r2 = r0;
    0x00015c50 movs r0, 1                                        |     r0 = 1;
    0x00015c52 add r1, pc                                        |     r1 = 0x2b92e;
    0x00015c54 blx 0x5a60                                        |     fcn_00005a60 ();
                                                                 |     do {
    0x00015c58 mov r0, r5                                        |         r0 = r5;
    0x00015c5a add sp, 0x14                                      |         
    0x00015c5c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_1:
    0x00015c60 ldr r1, [pc, 0x78]                                |         
    0x00015c62 mov r2, r0                                        |         r2 = r0;
    0x00015c64 movs r5, 0                                        |         r5 = 0;
    0x00015c66 movs r0, 1                                        |         r0 = 1;
    0x00015c68 add r1, pc                                        |         r1 = 0x2b948;
    0x00015c6a blx 0x5a60                                        |         fcn_00005a60 ();
    0x00015c6e mov r0, r5                                        |         r0 = r5;
    0x00015c70 add sp, 0x14                                      |         
    0x00015c72 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_4:
    0x00015c76 ldr r1, [pc, 0x68]                                |         
    0x00015c78 mov r5, r8                                        |         r5 = r8;
    0x00015c7a movs r0, 1                                        |         r0 = 1;
    0x00015c7c ldr r3, [r3]                                      |         r3 = *(r3);
    0x00015c7e ldr r2, [r4]                                      |         r2 = *(r4);
    0x00015c80 add r1, pc                                        |         r1 = 0x2b966;
    0x00015c82 strd sb, sl, [sp]                                 |         __asm ("strd sb, sl, [sp]");
                                                                 | label_0:
    0x00015c86 blx 0x5a60                                        |         fcn_00005a60 ();
    0x00015c8a mov r0, sb                                        |         r0 = sb;
    0x00015c8c blx 0x5c30                                        |         archive_entry_free ();
    0x00015c90 mov r0, sl                                        |         r0 = sl;
    0x00015c92 blx 0x5c30                                        |         archive_entry_free ();
    0x00015c96 mov r0, r5                                        |         r0 = r5;
    0x00015c98 add sp, 0x14                                      |         
    0x00015c9a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_2:
    0x00015c9e blx 0x63fc                                        |         fcn_000063fc ();
    0x00015ca2 ldr r1, [pc, 0x40]                                |         
    0x00015ca4 mov r3, r0                                        |         r3 = r0;
    0x00015ca6 ldr r2, [r4]                                      |         r2 = *(r4);
    0x00015ca8 mov r5, r6                                        |         r5 = r6;
    0x00015caa mov r6, r0                                        |         r6 = r0;
    0x00015cac movs r0, 1                                        |         r0 = 1;
    0x00015cae add r1, pc                                        |         r1 = 0x2b998;
    0x00015cb0 blx 0x5a60                                        |         fcn_00005a60 ();
    0x00015cb4 mov r0, r6                                        |         r0 = r6;
    0x00015cb6 blx 0x5c30                                        |         archive_entry_free ();
    0x00015cba b 0x15c58                                         |         
                                                                 |     } while (1);
                                                                 | label_3:
    0x00015cbc ldr r1, [r4, 0x18]                                |     r1 = *((r4 + 0x18));
    0x00015cbe mov r2, fp                                        |     r2 = fp;
    0x00015cc0 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00015cc2 movs r0, 2                                        |     r0 = 2;
    0x00015cc4 ldr r1, [r1]                                      |     r1 = *(r1);
    0x00015cc6 strd sb, r1, [sp]                                 |     __asm ("strd sb, r1, [sp]");
    0x00015cca ldr r1, [pc, 0x1c]                                |     
    0x00015ccc add r1, pc                                        |     r1 = 0x2b9ba;
    0x00015cce b 0x15c86                                         |     goto label_0;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libopkg.so.1.0.0 @ 0x1602c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0001602c ()                                      | void fcn_0001602c (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x0001602c ldrd r3, r2, [r0, 0x7c]                           |     __asm ("ldrd r3, r2, [r0, 0x7c]");
    0x00016030 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00016032 ble.w 0x16154                                     |         goto label_6;
                                                                 |     }
    0x00016036 add.w r3, r3, r3, lsl 1                           |     r3 += (r3 << 1);
    0x0001603a push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0001603e sub sp, 0x14                                      |     
    0x00016040 mov r4, r0                                        |     r4 = r0;
    0x00016042 mov sb, r1                                        |     sb = r1;
    0x00016044 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00016046 add.w r3, r2, 8                                   |     r3 = r2 + 8;
    0x0001604a movs r7, 0                                        |     r7 = 0;
    0x0001604c str r3, [sp, 4]                                   |     var_4h = r3;
    0x0001604e b 0x16058                                         |     
                                                                 |     while (r8 == 0) {
                                                                 | label_0:
    0x00016050 ldr r3, [sp, 8]                                   |         r3 = var_8h;
    0x00016052 adds r7, 3                                        |         r7 += 3;
    0x00016054 cmp r3, r7                                        |         
                                                                 |         if (r3 == r7) {
    0x00016056 beq 0x1614e                                       |             goto label_7;
                                                                 |         }
    0x00016058 ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x0001605a ldr.w r3, [r3, r7, lsl 2]                         |         offset_0 = r7 << 2;
                                                                 |         r3 = *((r3 + offset_0));
    0x0001605e ldr r3, [r3]                                      |         r3 = *(r3);
    0x00016060 ldr.w r8, [r3, 8]                                 |         r8 = *((r3 + 8));
    0x00016064 ldr.w r3, [r8, 0x18]                              |         r3 = *((r8 + 0x18));
                                                                 |         if (r3 != 0) {
    0x00016068 cbz r3, 0x16074                                   |             
    0x0001606a mov r1, r8                                        |             r1 = r8;
    0x0001606c mov r0, r4                                        |             r0 = r4;
    0x0001606e blx 0x6c30                                        |             r0 = fcn_00006c30 ();
                                                                 |             if (r0 != 0) {
    0x00016072 cbnz r0, 0x160d8                                  |                 goto label_8;
                                                                 |             }
                                                                 |         }
                                                                 | label_2:
    0x00016074 ldr.w r8, [r8, 8]                                 |         r8 = *((r8 + 8));
    0x00016078 cmp.w r8, 0                                       |         
    0x0001607c beq 0x16050                                       |         
                                                                 |     }
    0x0001607e ldr.w r3, [r8, 4]                                 |     r3 = *((r8 + 4));
    0x00016082 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00016084 beq 0x16050                                       |         goto label_0;
                                                                 |     }
    0x00016086 ldr.w sl, [sp, 4]                                 |     sl = var_4h;
    0x0001608a movs r5, 0                                        |     r5 = 0;
    0x0001608c b 0x16096                                         |     goto label_9;
                                                                 | label_1:
    0x0001608e ldr.w r3, [r8, 4]                                 |     r3 = *((r8 + 4));
    0x00016092 cmp r5, r3                                        |     
                                                                 |     if (r5 >= r3) {
    0x00016094 bhs 0x16050                                       |         goto label_0;
                                                                 |     }
                                                                 | label_9:
    0x00016096 ldr.w r3, [r8]                                    |     r3 = *(r8);
    0x0001609a mov r0, r4                                        |     r0 = r4;
    0x0001609c ldr.w r6, [r3, r5, lsl 2]                         |     offset_1 = r5 << 2;
                                                                 |     r6 = *((r3 + offset_1));
    0x000160a0 adds r5, 1                                        |     r5++;
    0x000160a2 mov r1, r6                                        |     r1 = r6;
    0x000160a4 blx 0x6b2c                                        |     r0 = fcn_00006b2c ();
    0x000160a8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000160aa beq 0x1608e                                       |         goto label_1;
                                                                 |     }
    0x000160ac ldr r3, [r6, 0x3c]                                |     r3 = *((r6 + 0x3c));
    0x000160ae cmp r3, 4                                         |     
                                                                 |     if (r3 != 4) {
    0x000160b0 bne 0x1608e                                       |         goto label_1;
                                                                 |     }
    0x000160b2 ldr.w r3, [sl, r7, lsl 2]                         |     offset_2 = r7 << 2;
                                                                 |     r3 = *((sl + offset_2));
    0x000160b6 mov r1, r4                                        |     r1 = r4;
    0x000160b8 ldr r0, [r3]                                      |     r0 = *(r3);
    0x000160ba blx 0x6560                                        |     r0 = fcn_00006560 ();
    0x000160be cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000160c0 beq 0x1608e                                       |         goto label_1;
                                                                 |     }
    0x000160c2 mov r1, r6                                        |     r1 = r6;
    0x000160c4 mov r0, sb                                        |     r0 = sb;
    0x000160c6 blx 0x59f0                                        |     r0 = fcn_000059f0 ();
    0x000160ca cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000160cc bne 0x1608e                                       |         goto label_1;
                                                                 |     }
    0x000160ce mov r1, r6                                        |     r1 = r6;
    0x000160d0 mov r0, sb                                        |     r0 = sb;
    0x000160d2 blx 0x65e4                                        |     fcn_000065e4 ();
    0x000160d6 b 0x1608e                                         |     goto label_1;
                                                                 | label_8:
    0x000160d8 ldr.w sl, [r8, 0x18]                              |     sl = *((r8 + 0x18));
    0x000160dc ldr.w r1, [sl, 4]                                 |     r1 = *((sl + 4));
    0x000160e0 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000160e2 beq 0x16074                                       |         goto label_2;
                                                                 |     }
    0x000160e4 movs r3, 0                                        |     r3 = 0;
    0x000160e6 str r7, [sp, 0xc]                                 |     var_ch = r7;
    0x000160e8 mov fp, r3                                        |     
                                                                 | label_5:
    0x000160ea ldr.w r3, [sl]                                    |     r3 = *(sl);
    0x000160ee ldr.w r6, [r3, fp, lsl 2]                         |     offset_3 = fp << 2;
                                                                 |     r6 = *((r3 + offset_3));
    0x000160f2 ldr r3, [r6, 8]                                   |     r3 = *((r6 + 8));
                                                                 |     if (r3 == 0) {
    0x000160f4 cbz r3, 0x16142                                   |         goto label_10;
                                                                 |     }
    0x000160f6 ldr r2, [r3, 4]                                   |     r2 = *((r3 + 4));
                                                                 |     if (r2 == 0) {
    0x000160f8 cbz r2, 0x16142                                   |         goto label_10;
                                                                 |     }
    0x000160fa movs r5, 0                                        |     r5 = 0;
    0x000160fc b 0x16106                                         |     
                                                                 |     while (r7 == r0) {
                                                                 | label_3:
    0x000160fe ldr r3, [r6, 8]                                   |         r3 = *((r6 + 8));
    0x00016100 ldr r2, [r3, 4]                                   |         r2 = *((r3 + 4));
    0x00016102 cmp r2, r5                                        |         
                                                                 |         if (r2 < r5) {
    0x00016104 bls 0x1613e                                       |             goto label_11;
                                                                 |         }
                                                                 | label_4:
    0x00016106 ldr r3, [r3]                                      |         r3 = *(r3);
    0x00016108 ldr r0, [r4]                                      |         r0 = *(r4);
    0x0001610a ldr.w r7, [r3, r5, lsl 2]                         |         offset_4 = r5 << 2;
                                                                 |         r7 = *((r3 + offset_4));
    0x0001610e adds r5, 1                                        |         r5++;
    0x00016110 blx 0x5a6c                                        |         r0 = fcn_00005a6c ();
    0x00016114 cmp r7, r0                                        |         
    0x00016116 beq 0x160fe                                       |         
                                                                 |     }
    0x00016118 ldr r3, [r7, 0x3c]                                |     r3 = *((r7 + 0x3c));
    0x0001611a subs r3, 2                                        |     r3 -= 2;
    0x0001611c bics r3, r3, 2                                    |     __asm ("bics r3, r3, 2");
                                                                 |     if (r3 != 2) {
    0x00016120 bne 0x160fe                                       |         goto label_3;
                                                                 |     }
    0x00016122 mov r1, r7                                        |     r1 = r7;
    0x00016124 mov r0, sb                                        |     r0 = sb;
    0x00016126 blx 0x59f0                                        |     r0 = fcn_000059f0 ();
    0x0001612a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001612c bne 0x160fe                                       |         goto label_3;
                                                                 |     }
    0x0001612e mov r1, r7                                        |     r1 = r7;
    0x00016130 mov r0, sb                                        |     r0 = sb;
    0x00016132 blx 0x65e4                                        |     fcn_000065e4 ();
    0x00016136 ldr r3, [r6, 8]                                   |     r3 = *((r6 + 8));
    0x00016138 ldr r2, [r3, 4]                                   |     r2 = *((r3 + 4));
    0x0001613a cmp r2, r5                                        |     
                                                                 |     if (r2 > r5) {
    0x0001613c bhi 0x16106                                       |         goto label_4;
                                                                 |     }
                                                                 | label_11:
    0x0001613e ldr.w r1, [sl, 4]                                 |     r1 = *((sl + 4));
                                                                 | label_10:
    0x00016142 add.w fp, fp, 1                                   |     
    0x00016146 cmp r1, fp                                        |     
                                                                 |     if (r1 > fp) {
    0x00016148 bhi 0x160ea                                       |         goto label_5;
                                                                 |     }
    0x0001614a ldr r7, [sp, 0xc]                                 |     r7 = var_ch;
    0x0001614c b 0x16074                                         |     goto label_2;
                                                                 | label_7:
    0x0001614e add sp, 0x14                                      |     
    0x00016150 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_6:
    0x00016154 bx lr                                             |     return;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libopkg.so.1.0.0 @ 0x169e4 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000169e4 ()                                      | void fcn_000169e4 (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int32_t var_0h_2;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x000169e4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000169e8 mov r7, r1                                        |     r7 = r1;
    0x000169ea ldr r4, [pc, 0x1f8]                               |     
    0x000169ec sub sp, 0x24                                      |     
    0x000169ee add r3, sp, 0x18                                  |     r3 += var_18h;
    0x000169f0 add r2, sp, 0x10                                  |     r2 += var_10h;
    0x000169f2 ldr r1, [pc, 0x1f4]                               |     r1 = *(0x16bea);
    0x000169f4 mov r6, r0                                        |     r6 = r0;
    0x000169f6 add r4, pc                                        |     r4 = 0x2d5e0;
    0x000169f8 ldr.w r8, [pc, 0x1f0]                             |     
    0x000169fc ldr r1, [r4, r1]                                  |     
    0x000169fe add r8, pc                                        |     r8 = 0x2d5ee;
    0x00016a00 ldr r1, [r1]                                      |     r1 = *(0x2d5e0);
    0x00016a02 str r1, [sp, 0x1c]                                |     var_1ch = r1;
    0x00016a04 mov.w r1, 0                                       |     r1 = 0;
    0x00016a08 add r1, sp, 0x14                                  |     r1 += var_14h;
    0x00016a0a blx 0x6430                                        |     fcn_00006430 ();
    0x00016a0e ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00016a10 blx 0x690c                                        |     r0 = fcn_0000690c ();
    0x00016a14 mov r4, r0                                        |     r4 = r0;
    0x00016a16 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00016a18 blx 0x5a6c                                        |     r0 = fcn_00005a6c ();
    0x00016a1c mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 != 0) {
    0x00016a1e cbz r0, 0x16a30                                   |         
    0x00016a20 ldr r2, [pc, 0x1cc]                               |         
    0x00016a22 ldr r1, [pc, 0x1d0]                               |         
    0x00016a24 ldr r3, [r0, 8]                                   |         r3 = *((r0 + 8));
    0x00016a26 movs r0, 4                                        |         r0 = 4;
    0x00016a28 add r2, pc                                        |         r2 = 0x2d61c;
    0x00016a2a add r1, pc                                        |         r1 = 0x2d624;
    0x00016a2c blx 0x5a60                                        |         fcn_00005a60 ();
                                                                 |     }
    0x00016a30 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00016a32 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00016a34 beq.w 0x16b86                                     |         goto label_4;
                                                                 |     }
    0x00016a38 movs r0, 0xc                                      |     r0 = 0xc;
    0x00016a3a blx 0x5f84                                        |     waitpid ();
    0x00016a3e ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00016a40 mov sb, r0                                        |     sb = r0;
    0x00016a42 str r4, [r0, 8]                                   |     *((r0 + 8)) = r4;
    0x00016a44 mov r2, sb                                        |     r2 = sb;
    0x00016a46 mov r0, r4                                        |     r0 = r4;
    0x00016a48 str.w r3, [sb]                                    |     __asm ("str.w r3, [sb]");
    0x00016a4c ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00016a4e str.w r3, [sb, 4]                                 |     __asm ("str.w r3, [sb, 4]");
    0x00016a52 ldr r3, [pc, 0x1a4]                               |     r3 = *(0x16bfa);
    0x00016a54 ldr.w r1, [r8, r3]                                |     r1 = *((r8 + r3));
    0x00016a58 movs r3, 1                                        |     r3 = 1;
    0x00016a5a str r3, [sp]                                      |     *(sp) = r3;
    0x00016a5c movs r3, 0                                        |     r3 = 0;
    0x00016a5e blx 0x60a0                                        |     r0 = fcn_000060a0 ();
    0x00016a62 mov r4, r0                                        |     r4 = r0;
    0x00016a64 mov r0, sb                                        |     r0 = sb;
    0x00016a66 blx 0x5c30                                        |     archive_entry_free ();
                                                                 | label_0:
    0x00016a6a ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00016a6c blx 0x5c30                                        |     archive_entry_free ();
    0x00016a70 ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x00016a72 blx 0x5c30                                        |     archive_entry_free ();
    0x00016a76 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00016a78 beq.w 0x16b90                                     |         goto label_5;
                                                                 |     }
    0x00016a7c ldr.w fp, [pc, 0x17c]                             |     fp = fcn.00006c0c;
    0x00016a80 movs r0, 4                                        |     r0 = 4;
    0x00016a82 ldr r1, [pc, 0x17c]                               |     
    0x00016a84 add fp, pc                                        |     
    0x00016a86 add r1, pc                                        |     r1 = 0x2d68c;
    0x00016a88 mov r2, fp                                        |     r2 = fp;
    0x00016a8a blx 0x5a60                                        |     fcn_00005a60 ();
    0x00016a8e cmp r5, 0                                         |     
                                                                 |     if (r5 != 0) {
    0x00016a90 beq 0x16b1c                                       |         
    0x00016a92 ldr r1, [pc, 0x170]                               |         
    0x00016a94 movs r0, 4                                        |         r0 = 4;
    0x00016a96 ldr r2, [r5, 8]                                   |         r2 = *((r5 + 8));
    0x00016a98 add r1, pc                                        |         r1 = 0x2d6a2;
    0x00016a9a blx 0x5a60                                        |         fcn_00005a60 ();
    0x00016a9e ldr r1, [pc, 0x168]                               |         
    0x00016aa0 movs r0, 4                                        |         r0 = 4;
    0x00016aa2 ldr r2, [r4, 8]                                   |         r2 = *((r4 + 8));
    0x00016aa4 add r1, pc                                        |         r1 = 0x2d6b2;
    0x00016aa6 blx 0x5a60                                        |         fcn_00005a60 ();
    0x00016aaa ldr r3, [r4, 0x38]                                |         r3 = *((r4 + 0x38));
    0x00016aac mov r0, r5                                        |         r0 = r5;
    0x00016aae orr r3, r3, 0x100                                 |         r3 |= 0x100;
    0x00016ab2 str r3, [r4, 0x38]                                |         *((r4 + 0x38)) = r3;
    0x00016ab4 blx 0x63fc                                        |         r0 = fcn_000063fc ();
    0x00016ab8 mov sb, r0                                        |         sb = r0;
    0x00016aba mov r0, r4                                        |         r0 = r4;
    0x00016abc blx 0x63fc                                        |         fcn_000063fc ();
    0x00016ac0 mov r1, r4                                        |         r1 = r4;
    0x00016ac2 mov sl, r0                                        |         sl = r0;
    0x00016ac4 mov r0, r5                                        |         r0 = r5;
    0x00016ac6 blx 0x6c3c                                        |         fcn_00006c3c ();
    0x00016aca ldr r3, [pc, 0x140]                               |         
    0x00016acc ldr.w r3, [r8, r3]                                |         r3 = *((r8 + r3));
    0x00016ad0 ldr r3, [r3]                                      |         
    0x00016ad2 ldr.w r3, [r3, 0x88]                              |         r3 = *(0x16c96);
    0x00016ad6 cmp r3, 1                                         |         
                                                                 |         if (r3 == 1) {
    0x00016ad8 beq 0x16b52                                       |             goto label_6;
                                                                 |         }
    0x00016ada ldr r1, [pc, 0x134]                               |         
    0x00016adc mov r3, r6                                        |         r3 = r6;
    0x00016ade strd sl, r0, [sp, 4]                              |         __asm ("strd sl, r0, [var_8h]");
    0x00016ae2 mov r6, r0                                        |         r6 = r0;
    0x00016ae4 mov r2, fp                                        |         r2 = fp;
    0x00016ae6 movs r0, 3                                        |         r0 = 3;
    0x00016ae8 add r1, pc                                        |         r1 = 0x2d6fe;
    0x00016aea str.w sb, [sp]                                    |         __asm ("str.w sb, [sp]");
    0x00016aee blx 0x5a60                                        |         fcn_00005a60 ();
    0x00016af2 cmp r6, 0                                         |         
                                                                 |         if (r6 == 0) {
    0x00016af4 beq 0x16ba2                                       |             goto label_7;
                                                                 |         }
    0x00016af6 ldr r3, [r5, 0x18]                                |         r3 = *((r5 + 0x18));
                                                                 |         if (r6 <= 0) {
    0x00016af8 ble 0x16b72                                       |             goto label_3;
                                                                 |         }
    0x00016afa ldr r1, [pc, 0x118]                               |         
    0x00016afc movs r0, 1                                        |         r0 = 1;
    0x00016afe ldr r3, [r3]                                      |         r3 = *(r3);
    0x00016b00 ldr r2, [r5]                                      |         r2 = *(r5);
    0x00016b02 add r1, pc                                        |         r1 = 0x2d71c;
    0x00016b04 strd sb, sl, [sp]                                 |         __asm ("strd sb, sl, [sp]");
    0x00016b08 blx 0x5a60                                        |         fcn_00005a60 ();
                                                                 | label_2:
    0x00016b0c mov r0, sb                                        |         r0 = sb;
    0x00016b0e blx 0x5c30                                        |         archive_entry_free ();
    0x00016b12 mov r0, sl                                        |         r0 = sl;
    0x00016b14 blx 0x5c30                                        |         archive_entry_free ();
    0x00016b16 invalid                                           |         
    0x00016b1a b 0x16b38                                         |         goto label_1;
                                                                 |     }
    0x00016b1c ldr r1, [pc, 0xf8]                                |     
    0x00016b1e movs r0, 4                                        |     r0 = 4;
    0x00016b20 ldr r2, [r4, 8]                                   |     r2 = *((r4 + 8));
    0x00016b22 add r1, pc                                        |     r1 = 0x2d73e;
    0x00016b24 blx 0x5a60                                        |     fcn_00005a60 ();
    0x00016b28 ldr r3, [r4, 0x38]                                |     r3 = *((r4 + 0x38));
    0x00016b2a orr r3, r3, 0x100                                 |     r3 |= 0x100;
    0x00016b2e str r3, [r4, 0x38]                                |     *((r4 + 0x38)) = r3;
                                                                 |     do {
    0x00016b30 movs r0, 1                                        |         r0 = 1;
    0x00016b32 movs r3, 2                                        |         r3 = 2;
    0x00016b34 str r3, [r4, 0x30]                                |         *((r4 + 0x30)) = r3;
    0x00016b36 str r4, [r7]                                      |         *(r7) = r4;
                                                                 | label_1:
    0x00016b38 ldr r2, [pc, 0xe0]                                |         
    0x00016b3a ldr r3, [pc, 0xac]                                |         r3 = *(0x16bea);
    0x00016b3c add r2, pc                                        |         r2 = 0x2d75c;
    0x00016b3e ldr r3, [r2, r3]                                  |         r3 = *(0x2d75c);
    0x00016b40 ldr r2, [r3]                                      |         r2 = *(0x2d75c);
    0x00016b42 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x00016b44 eors r2, r3                                       |         r2 ^= r3;
    0x00016b46 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00016b4a bne 0x16be0                                       |             goto label_8;
                                                                 |         }
    0x00016b4c add sp, 0x24                                      |         
    0x00016b4e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_6:
    0x00016b52 cmp r0, 0                                         |         
                                                                 |         if (r0 > 0) {
    0x00016b54 bgt 0x16bb8                                       |             goto label_9;
                                                                 |         }
    0x00016b56 ldr r1, [pc, 0xc8]                                |         
    0x00016b58 mov r3, r6                                        |         r3 = r6;
    0x00016b5a mov r6, r0                                        |         r6 = r0;
    0x00016b5c strd sl, r0, [sp, 4]                              |         __asm ("strd sl, r0, [var_8h]");
    0x00016b60 mov r2, fp                                        |         r2 = fp;
    0x00016b62 movs r0, 3                                        |         r0 = 3;
    0x00016b64 add r1, pc                                        |         r1 = 0x2d78a;
    0x00016b66 str.w sb, [sp]                                    |         __asm ("str.w sb, [sp]");
    0x00016b6a blx 0x5a60                                        |         fcn_00005a60 ();
                                                                 |         if (r6 == 0) {
    0x00016b6e cbz r6, 0x16ba2                                   |             goto label_7;
                                                                 |         }
    0x00016b70 ldr r3, [r5, 0x18]                                |         r3 = *((r5 + 0x18));
                                                                 | label_3:
    0x00016b72 str r3, [r4, 0x18]                                |         *((r4 + 0x18)) = r3;
    0x00016b74 movs r3, 3                                        |         r3 = 3;
    0x00016b76 mov r0, sb                                        |         r0 = sb;
    0x00016b78 str r3, [r5, 0x30]                                |         *((r5 + 0x30)) = r3;
    0x00016b7a blx 0x5c30                                        |         archive_entry_free ();
    0x00016b7e mov r0, sl                                        |         r0 = sl;
    0x00016b80 blx 0x5c30                                        |         archive_entry_free ();
    0x00016b84 b 0x16b30                                         |         
                                                                 |     } while (1);
                                                                 | label_4:
    0x00016b86 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00016b88 blx 0x61b0                                        |     r0 = fcn_000061b0 ();
    0x00016b8c mov r4, r0                                        |     r4 = r0;
    0x00016b8e b 0x16a6a                                         |     goto label_0;
                                                                 | label_5:
    0x00016b90 ldr r1, [pc, 0x90]                                |     
    0x00016b92 movs r0, 1                                        |     r0 = 1;
    0x00016b94 mov r2, r6                                        |     r2 = r6;
    0x00016b96 add r1, pc                                        |     r1 = 0x2d7be;
    0x00016b98 blx 0x5a60                                        |     fcn_00005a60 ();
    0x00016b9c mov.w r0, -1                                      |     r0 = -1;
    0x00016ba0 b 0x16b38                                         |     goto label_1;
                                                                 | label_7:
    0x00016ba2 ldr r1, [r5, 0x18]                                |     r1 = *((r5 + 0x18));
    0x00016ba4 mov r3, sb                                        |     r3 = sb;
    0x00016ba6 ldr r2, [r5]                                      |     r2 = *(r5);
    0x00016ba8 movs r0, 1                                        |     r0 = 1;
    0x00016baa ldr r1, [r1]                                      |     r1 = *(r1);
    0x00016bac str r1, [sp]                                      |     *(sp) = r1;
    0x00016bae ldr r1, [pc, 0x78]                                |     
    0x00016bb0 add r1, pc                                        |     r1 = 0x2d7de;
    0x00016bb2 blx 0x5a60                                        |     fcn_00005a60 ();
    0x00016bb6 b 0x16b0c                                         |     goto label_2;
                                                                 | label_9:
    0x00016bb8 ldr r1, [pc, 0x70]                                |     
    0x00016bba mov r2, fp                                        |     r2 = fp;
    0x00016bbc movs r0, 3                                        |     r0 = 3;
    0x00016bbe add r1, pc                                        |     r1 = 0x2d7ee;
    0x00016bc0 blx 0x5a60                                        |     fcn_00005a60 ();
    0x00016bc4 mov.w r1, -1                                      |     r1 = -1;
    0x00016bc8 mov r3, r6                                        |     r3 = r6;
    0x00016bca str r1, [sp, 8]                                   |     var_8h = r1;
    0x00016bcc mov r2, fp                                        |     r2 = fp;
    0x00016bce ldr r1, [pc, 0x60]                                |     
    0x00016bd0 movs r0, 3                                        |     r0 = 3;
    0x00016bd2 strd sb, sl, [sp]                                 |     __asm ("strd sb, sl, [sp]");
    0x00016bd6 add r1, pc                                        |     r1 = 0x2d80c;
    0x00016bd8 blx 0x5a60                                        |     fcn_00005a60 ();
    0x00016bdc ldr r3, [r5, 0x18]                                |     r3 = *((r5 + 0x18));
    0x00016bde b 0x16b72                                         |     goto label_3;
                                                                 | label_8:
    0x00016be0 blx 0x5dac                                        |     fcn_00005dac ();
    0x00016be4 ldrb r2, [r2, 0x1f]                               |     r2 = *((r2 + 0x1f));
    0x00016be6 movs r1, r0                                       |     r1 = r0;
    0x00016be8 lsls r4, r1, 0x18                                 |     r4 = r1 << 0x18;
    0x00016bea movs r0, r0                                       |     
    0x00016bec ldrb r2, [r1, 0x1f]                               |     r2 = *((r1 + 0x1f));
    0x00016bee movs r1, r0                                       |     r1 = r0;
    0x00016bf0 ldr r0, [r5, 0x44]                                |     r0 = *((r5 + 0x44));
    0x00016bf2 movs r0, r0                                       |     
    0x00016bf4 ldr r2, [r4, 0x38]                                |     r2 = *((r4 + 0x38));
    0x00016bf6 movs r0, r0                                       |     
    0x00016bf8 lsls r0, r7, 0x17                                 |     r0 = r7 << 0x17;
    0x00016bfa movs r0, r0                                       |     
    0x00016bfc ldr r4, [r1, 0x40]                                |     r4 = *((r1 + 0x40));
    0x00016bfe movs r0, r0                                       |     
    0x00016c00 ldr r2, [r1, 0x38]                                |     r2 = *((r1 + 0x38));
    0x00016c02 movs r0, r0                                       |     
    0x00016c04 ldr r4, [r3, 0x38]                                |     r4 = *((r3 + 0x38));
    0x00016c06 movs r0, r0                                       |     
    0x00016c08 ldr r4, [r3, 0x38]                                |     r4 = *((r3 + 0x38));
    0x00016c0a movs r0, r0                                       |     
    0x00016c0c lsls r0, r1, 0x18                                 |     r0 = r1 << 0x18;
    0x00016c0e movs r0, r0                                       |     
    0x00016c10 str r4, [r6, 0x5c]                                |     *((r6 + 0x5c)) = r4;
    0x00016c12 movs r0, r0                                       |     
    0x00016c14 str r2, [r7, 0x64]                                |     *((r7 + 0x64)) = r2;
    0x00016c16 movs r0, r0                                       |     
    0x00016c18 ldr r6, [r3, 0x30]                                |     r6 = *((r3 + 0x30));
    0x00016c1a movs r0, r0                                       |     
    0x00016c1c ldrb r4, [r1, 0x1a]                               |     r4 = *((r1 + 0x1a));
    0x00016c1e movs r1, r0                                       |     r1 = r0;
    0x00016c20 str r0, [r7, 0x54]                                |     *((r7 + 0x54)) = r0;
    0x00016c22 movs r0, r0                                       |     
    0x00016c24 ldr r2, [r4, 0x24]                                |     r2 = *((r4 + 0x24));
    0x00016c26 movs r0, r0                                       |     
    0x00016c28 str r4, [r3, 0x58]                                |     *((r3 + 0x58)) = r4;
    0x00016c2a movs r0, r0                                       |     
    0x00016c2c ldr r6, [r1, 0x28]                                |     r6 = *((r1 + 0x28));
    0x00016c2e movs r0, r0                                       |     
    0x00016c30 str r6, [r0, 0x50]                                |     *((r0 + 0x50)) = r6;
    0x00016c32 movs r0, r0                                       |     
                                                                 | }


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libopkg.so.1.0.0 @ 0x8f80).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libopkg.so.1.0.0 @ 0xfbf4).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libopkg.so.1.0.0 @ 0x10378 */
                                                                             | #include <stdint.h>
                                                                             |  
    ; (fcn) sym.pkg_hash_fetch_best_installation_candidate_by_name ()        | void pkg_hash_fetch_best_installation_candidate_by_name () {
                                                                             |     int16_t var_0h;
    0x00010378 push {lr}                                                     |     
    0x0001037a sub sp, 0xc                                                   |     
    0x0001037c blx 0x690c                                                    |     r0 = fcn_0000690c ();
    0x00010380 mov r3, r0                                                    |     r3 = r0;
                                                                             |     if (r0 != 0) {
    0x00010382 cbz r0, 0x10392                                               |         
    0x00010384 movs r3, 0                                                    |         r3 = 0;
    0x00010386 mov r2, r3                                                    |         r2 = r3;
    0x00010388 mov r1, r3                                                    |         r1 = r3;
    0x0001038a str r3, [sp]                                                  |         *(sp) = r3;
    0x0001038c blx 0x60a0                                                    |         r0 = fcn_000060a0 ();
    0x00010390 mov r3, r0                                                    |         r3 = r0;
                                                                             |     }
    0x00010392 mov r0, r3                                                    |     r0 = r3;
    0x00010394 add sp, 0xc                                                   |     
    0x00010396 ldr pc, [sp], 4                                               |     pc = *(sp);
                                                                             |     sp += 4;
                                                                             | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libopkg.so.1.0.0 @ 0x11df8 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.pkg_src_verify ()                    | void pkg_src_verify (int16_t arg_c8h, int16_t arg_100h, int16_t arg_270h, int16_t arg_278h, int16_t arg_280h, int16_t arg1) {
                                                     |     int16_t var_4h;
                                                     |     int16_t var_8h;
                                                     |     int16_t var_ch;
                                                     |     r0 = arg1;
                                                     |     if (? >= ?) {
    0x00011df8 addlt fp, r4, r0, ror r5              |         
                                                     |     }
    0x00011dfc ldr r4, [pc, 0xf0]                    |     
    0x00011dfe ldr r1, [pc, 0xf4]                    |     r1 = *(0x11ef6);
    0x00011e00 add r4, pc                            |     r4 = 0x23cf4;
    0x00011e02 ldr r3, [pc, 0xf4]                    |     
    0x00011e04 ldr r2, [pc, 0xf4]                    |     r2 = *(0x11efc);
    0x00011e06 ldr r1, [r4, r1]                      |     
    0x00011e08 mov r4, r0                            |     r4 = r0;
    0x00011e0a add r3, pc                            |     r3 = 0x23d08;
    0x00011e0c ldr r1, [r1]                          |     r1 = *(0x23cf4);
    0x00011e0e str r1, [sp, 0xc]                     |     var_ch = r1;
    0x00011e10 mov.w r1, 0                           |     r1 = 0;
    0x00011e14 ldr r1, [pc, 0xe8]                    |     
    0x00011e16 ldr r2, [r3, r2]                      |     r2 = *(0x23d08);
    0x00011e18 add r1, pc                            |     r1 = 0x23d1c;
    0x00011e1a ldr r5, [r2]                          |     r5 = *(0x23d08);
    0x00011e1c ldr.w r0, [r5, 0xbc]                  |     r0 = *(0x23dc4);
    0x00011e20 blx 0x5abc                            |     r0 = fcn_00005abc ();
    0x00011e24 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00011e26 beq 0x11eb8                           |         goto label_1;
                                                     |     }
    0x00011e28 ldr r6, [pc, 0xd8]                    |     
    0x00011e2a add r6, pc                            |     r6 = 0x23d32;
                                                     |     do {
    0x00011e2c ldr r1, [pc, 0xd8]                    |         
    0x00011e2e add r0, sp, 4                         |         r0 += var_4h;
    0x00011e30 ldr r2, [r5, 0x50]                    |         r2 = *((r5 + 0x50));
    0x00011e32 ldr r3, [r4]                          |         r3 = *(r4);
    0x00011e34 add r1, pc                            |         r1 = 0x23d40;
    0x00011e36 ldr r5, [pc, 0xd4]                    |         
    0x00011e38 blx 0x5f44                            |         fcn_00005f44 ();
    0x00011e3c ldr r1, [pc, 0xd0]                    |         
    0x00011e3e mov r3, r6                            |         r3 = r6;
    0x00011e40 ldr r2, [sp, 4]                       |         r2 = var_4h;
    0x00011e42 add r0, sp, 8                         |         r0 += var_8h;
    0x00011e44 add r5, pc                            |         r5 = 0x23d56;
    0x00011e46 add r1, pc                            |         r1 = 0x23d5a;
    0x00011e48 blx 0x5f44                            |         fcn_00005f44 ();
    0x00011e4c ldr r1, [pc, 0xc4]                    |         
    0x00011e4e movs r0, 3                            |         r0 = 3;
    0x00011e50 ldr r3, [sp, 4]                       |         r3 = var_4h;
    0x00011e52 mov r2, r5                            |         r2 = r5;
    0x00011e54 add r1, pc                            |         r1 = 0x23d6c;
    0x00011e56 blx 0x5a60                            |         fcn_00005a60 ();
    0x00011e5a ldr r1, [pc, 0xbc]                    |         
    0x00011e5c movs r0, 3                            |         r0 = 3;
    0x00011e5e ldr r3, [sp, 8]                       |         r3 = var_8h;
    0x00011e60 mov r2, r5                            |         r2 = r5;
    0x00011e62 add r1, pc                            |         r1 = 0x23d80;
    0x00011e64 blx 0x5a60                            |         fcn_00005a60 ();
    0x00011e68 ldr r0, [sp, 8]                       |         r0 = var_8h;
    0x00011e6a blx 0x5ba8                            |         r0 = fcn_00005ba8 ();
    0x00011e6e cmp r0, 0                             |         
                                                     |         if (r0 == 0) {
    0x00011e70 beq 0x11ed8                           |             goto label_2;
                                                     |         }
    0x00011e72 ldrd r0, r1, [sp, 4]                  |         __asm ("ldrd r0, r1, [var_4h]");
    0x00011e76 blx 0x5b30                            |         fcn_00005b30 ();
    0x00011e7a ldr r3, [r4]                          |         r3 = *(r4);
    0x00011e7c mov r6, r0                            |         r6 = r0;
                                                     |         if (r0 != 0) {
    0x00011e7e cbnz r0, 0x11ebe                      |             goto label_3;
                                                     |         }
    0x00011e80 ldr r1, [pc, 0x98]                    |         
    0x00011e82 mov r2, r5                            |         r2 = r5;
    0x00011e84 movs r0, 3                            |         r0 = 3;
    0x00011e86 add r1, pc                            |         r1 = 0x23da6;
    0x00011e88 blx 0x5a60                            |         fcn_00005a60 ();
    0x00011e8c ldr r3, [r4, 8]                       |         r3 = *((r4 + 8));
    0x00011e8e movs r2, 1                            |         r2 = 1;
    0x00011e90 str r2, [r3]                          |         *(r3) = r2;
                                                     | label_0:
    0x00011e92 ldr r0, [sp, 8]                       |         r0 = var_8h;
    0x00011e94 blx 0x5c30                            |         archive_entry_free ();
    0x00011e98 ldr r0, [sp, 4]                       |         r0 = var_4h;
    0x00011e9a blx 0x5c30                            |         archive_entry_free ();
    0x00011e9e ldr r2, [pc, 0x80]                    |         
    0x00011ea0 ldr r3, [pc, 0x50]                    |         r3 = *(0x11ef4);
    0x00011ea2 add r2, pc                            |         r2 = 0x23dc8;
    0x00011ea4 ldr r3, [r2, r3]                      |         r3 = *(0x23dc8);
    0x00011ea6 ldr r2, [r3]                          |         r2 = *(0x23dc8);
    0x00011ea8 ldr r3, [sp, 0xc]                     |         r3 = var_ch;
    0x00011eaa eors r2, r3                           |         r2 ^= r3;
    0x00011eac mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x00011eb0 bne 0x11eea                           |             goto label_4;
                                                     |         }
    0x00011eb2 mov r0, r6                            |         r0 = r6;
    0x00011eb4 add sp, 0x10                          |         
    0x00011eb6 pop {r4, r5, r6, pc}                  |         
                                                     | label_1:
    0x00011eb8 ldr r6, [pc, 0x68]                    |         
    0x00011eba add r6, pc                            |         r6 = 0x23de2;
    0x00011ebc b 0x11e2c                             |         
                                                     |     } while (1);
                                                     | label_3:
    0x00011ebe ldr r1, [pc, 0x68]                    |     
    0x00011ec0 mov r2, r5                            |     r2 = r5;
    0x00011ec2 movs r0, 0                            |     r0 = 0;
    0x00011ec4 add r1, pc                            |     r1 = 0x23df2;
    0x00011ec6 blx 0x5a60                            |     fcn_00005a60 ();
                                                     |     do {
    0x00011eca ldr r0, [sp, 4]                       |         r0 = var_4h;
    0x00011ecc blx 0x5df4                            |         fcn_00005df4 ();
    0x00011ed0 ldr r0, [sp, 8]                       |         r0 = var_8h;
    0x00011ed2 blx 0x5df4                            |         fcn_00005df4 ();
    0x00011ed6 b 0x11e92                             |         goto label_0;
                                                     | label_2:
    0x00011ed8 ldr r1, [pc, 0x50]                    |         
    0x00011eda mov r2, r5                            |         r2 = r5;
    0x00011edc ldr r3, [r4]                          |         r3 = *(r4);
    0x00011ede mov.w r6, -1                          |         r6 = -1;
    0x00011ee2 add r1, pc                            |         r1 = 0x23e12;
    0x00011ee4 blx 0x5a60                            |         fcn_00005a60 ();
    0x00011ee8 b 0x11eca                             |         
                                                     |     } while (1);
                                                     | label_4:
    0x00011eea blx 0x5dac                            |     fcn_00005dac ();
    0x00011eee nop                                   |     
    0x00011ef0 ldm r3, {r3, r6, r7}                  |     r3 = *(r3);
                                                     |     r6 = *((r3 + 4));
                                                     |     r7 = *((r3 + 8));
    0x00011ef2 movs r1, r0                           |     r1 = r0;
    0x00011ef4 lsls r4, r1, 0x18                     |     r4 = r1 << 0x18;
    0x00011ef6 movs r0, r0                           |     
    0x00011ef8 ldm r3, {r1, r2, r3, r4, r5, r7}      |     r1 = *(r3);
                                                     |     r2 = *((r3 + 4));
                                                     |     r3 = *((r3 + 8));
                                                     |     r4 = *((r3 + 12));
                                                     |     r5 = *((r3 + 16));
                                                     |     r7 = *((r3 + 20));
    0x00011efa movs r1, r0                           |     r1 = r0;
    0x00011efc lsls r0, r1, 0x18                     |     r0 = r1 << 0x18;
    0x00011efe movs r0, r0                           |     
    0x00011f00 ldr r0, [r1, 0x44]                    |     r0 = *((r1 + 0x44));
    0x00011f02 movs r0, r0                           |     
    0x00011f04 ldr r2, [r6, 0x40]                    |     r2 = *((r6 + 0x40));
    0x00011f06 movs r0, r0                           |     
    0x00011f08 str r4, [r0, 0x14]                    |     *((r0 + 0x14)) = r4;
    0x00011f0a movs r0, r0                           |     
    0x00011f0c ldr r7, [sp, 0x100]                   |     r7 = *(arg_100h);
    0x00011f0e movs r0, r0                           |     
    0x00011f10 ldr r2, [r4, 0x40]                    |     r2 = *((r4 + 0x40));
    0x00011f12 movs r0, r0                           |     
    0x00011f14 ldr r5, [sp, 0x270]                   |     r5 = *(arg_270h);
    0x00011f16 movs r0, r0                           |     
    0x00011f18 ldr r5, [sp, 0x278]                   |     r5 = *(arg_278h);
    0x00011f1a movs r0, r0                           |     
    0x00011f1c ldrh r2, [r4, 0x34]                   |     r2 = *((r4 + 0x34));
    0x00011f1e movs r0, r0                           |     
    0x00011f20 ldm r3!, {r1, r2, r5}                 |     r1 = *(r3!);
                                                     |     r2 = *((r3! + 4));
                                                     |     r5 = *((r3! + 8));
    0x00011f22 movs r1, r0                           |     r1 = r0;
    0x00011f24 ldr r2, [r5, 0x38]                    |     r2 = *((r5 + 0x38));
    0x00011f26 movs r0, r0                           |     
    0x00011f28 ldr r5, [sp, 0x280]                   |     r5 = *(arg_280h);
    0x00011f2a movs r0, r0                           |     
    0x00011f2c ldr r5, [sp, 0xc8]                    |     r5 = *(arg_c8h);
    0x00011f2e movs r0, r0                           |     
                                                     | }

[*] Function popen used 1 times libopkg.so.1.0.0