[*] Binary protection state of libarchive.so.13.6.2

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


[*] Function popen tear down of libarchive.so.13.6.2

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libarchive.so.13.6.2 @ 0xe018 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0000e018 ()                  | void fcn_0000e018 (int16_t arg_290h, int16_t arg_3c0h, int16_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4) {
                                             |     int16_t var_0h;
                                             |     int32_t var_0h_2;
                                             |     uint32_t var_8h;
                                             |     int16_t var_ch;
                                             |     int16_t var_14h;
                                             |     int16_t var_54h;
                                             |     int16_t var_94h;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
                                             |     r2 = arg3;
                                             |     r3 = arg4;
    0x0000e018 ldr.w ip, [pc, 0x108]         |     
    0x0000e01c push {r4, r5, lr}             |     
    0x0000e01e mov r5, r0                    |     r5 = r0;
    0x0000e020 ldr r4, [r0]                  |     r4 = *(r0);
    0x0000e022 sub sp, 0x9c                  |     
    0x0000e024 add ip, pc                    |     ip = 0x1c14c;
    0x0000e026 ldr r0, [pc, 0x100]           |     r0 = *(0xe12a);
    0x0000e028 ldr.w r0, [ip, r0]            |     
    0x0000e02c ldr r0, [r0]                  |     r0 = *(0x1c14c);
    0x0000e02e str r0, [sp, 0x94]            |     var_94h = r0;
    0x0000e030 mov.w r0, 0                   |     r0 = 0;
    0x0000e034 movw r0, 0x11c9               |     
    0x0000e038 movt r0, 0xcad                |     r0 = 0xcad11c9;
    0x0000e03c cmp r4, r0                    |     
                                             |     if (r4 == r0) {
    0x0000e03e beq 0xe0ae                    |         goto label_2;
                                             |     }
                                             |     if (r4 < r0) {
    0x0000e040 bls 0xe084                    |         goto label_3;
                                             |     }
    0x0000e042 movw r0, 0xc0de               |     
    0x0000e046 movt r0, 0xb0c5               |     r0 = 0xb0c5c0de;
    0x0000e04a cmp r4, r0                    |     
                                             |     if (r4 == r0) {
    0x0000e04c beq 0xe0a2                    |         goto label_4;
                                             |     }
    0x0000e04e movw r0, 0xb0c5               |     
    0x0000e052 movt r0, 0xc001               |     r0 = 0xc001b0c5;
    0x0000e056 cmp r4, r0                    |     
                                             |     if (r4 != r0) {
    0x0000e058 bne 0xe106                    |         goto label_5;
                                             |     }
    0x0000e05a ldr r0, [pc, 0xd0]            |     
    0x0000e05c add r0, pc                    |     r0 = 0x1c18e;
                                             |     do {
                                             | label_0:
    0x0000e05e cmp r4, r1                    |         
                                             |         if (r4 != r1) {
    0x0000e060 bne 0xe0f0                    |             goto label_6;
                                             |         }
    0x0000e062 ldr r1, [r5, 4]               |         r1 = *((r5 + 4));
    0x0000e064 tst r1, r2                    |         
    0x0000e066 it ne                         |         
                                             |         if ((r1 & r2) == 0) {
    0x0000e068 movne r0, 0                   |             r0 = 0;
                                             |         }
                                             |         if ((r1 & r2) == 0) {
    0x0000e06a beq 0xe0b4                    |             goto label_7;
                                             |         }
                                             | label_1:
    0x0000e06c ldr r2, [pc, 0xc0]            |         
    0x0000e06e ldr r3, [pc, 0xb8]            |         r3 = *(0xe12a);
    0x0000e070 add r2, pc                    |         r2 = 0x1c1a4;
    0x0000e072 ldr r3, [r2, r3]              |         r3 = *(0x1c1a4);
    0x0000e074 ldr r2, [r3]                  |         r2 = *(0x1c1a4);
    0x0000e076 ldr r3, [sp, 0x94]            |         r3 = var_94h;
    0x0000e078 eors r2, r3                   |         r2 ^= r3;
    0x0000e07a mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x0000e07e bne 0xe102                    |             goto label_8;
                                             |         }
    0x0000e080 add sp, 0x9c                  |         
    0x0000e082 pop {r4, r5, pc}              |         
                                             | label_3:
    0x0000e084 movw r0, 0xb0c5               |         
    0x0000e088 movt r0, 0xde                 |         r0 = 0xdeb0c5;
    0x0000e08c cmp r4, r0                    |         
                                             |         if (r4 == r0) {
    0x0000e08e beq 0xe0a8                    |             goto label_9;
                                             |         }
    0x0000e090 movw r0, 0xb0c5               |         
    0x0000e094 movt r0, 0xbad                |         r0 = 0xbadb0c5;
    0x0000e098 cmp r4, r0                    |         
                                             |         if (r4 != r0) {
    0x0000e09a bne 0xe106                    |             goto label_5;
                                             |         }
    0x0000e09c ldr r0, [pc, 0x94]            |         
    0x0000e09e add r0, pc                    |         r0 = 0x1c1d6;
    0x0000e0a0 b 0xe05e                      |         
                                             |     } while (1);
                                             | label_4:
    0x0000e0a2 ldr r0, [pc, 0x94]            |     
    0x0000e0a4 add r0, pc                    |     r0 = 0x1c1e2;
    0x0000e0a6 b 0xe05e                      |     goto label_0;
                                             | label_9:
    0x0000e0a8 ldr r0, [pc, 0x90]            |     
    0x0000e0aa add r0, pc                    |     r0 = 0x1c1ea;
    0x0000e0ac b 0xe05e                      |     goto label_0;
                                             | label_2:
    0x0000e0ae ldr r0, [pc, 0x90]            |     
    0x0000e0b0 add r0, pc                    |     r0 = 0x1c1f6;
    0x0000e0b2 b 0xe05e                      |     goto label_0;
                                             | label_7:
    0x0000e0b4 cmp.w r1, 0x8000              |     
    0x0000e0b8 strd r2, r3, [sp, 8]          |     __asm ("strd r2, r3, [var_8h]");
                                             |     if (r1 == 0x8000) {
    0x0000e0bc beq 0xe0e4                    |         goto label_10;
                                             |     }
    0x0000e0be add r0, sp, 0x14              |     r0 += var_14h;
    0x0000e0c0 bl 0xdf34                     |     fcn_0000df34 (r0, r1);
    0x0000e0c4 ldr r2, [sp, 8]               |     r2 = var_8h;
    0x0000e0c6 mov r4, r0                    |     r4 = r0;
    0x0000e0c8 add r0, sp, 0x54              |     r0 += var_54h;
    0x0000e0ca mov r1, r2                    |     r1 = r2;
    0x0000e0cc bl 0xdf34                     |     fcn_0000df34 (r0, r1);
    0x0000e0d0 ldr r2, [pc, 0x70]            |     
    0x0000e0d2 mov.w r1, -1                  |     r1 = -1;
    0x0000e0d6 strd r4, r0, [sp]             |     __asm ("strd r4, r0, [sp]");
    0x0000e0da mov r0, r5                    |     r0 = r5;
    0x0000e0dc ldr r3, [sp, 0xc]             |     r3 = var_ch;
    0x0000e0de add r2, pc                    |     r2 = 0x1c226;
    0x0000e0e0 blx 0xad24                    |     fcn_0000ad24 ();
                                             |     do {
                                             | label_10:
    0x0000e0e4 mov.w r3, 0x8000              |         r3 = 0x8000;
    0x0000e0e8 mvn r0, 0x1d                  |         r0 = ~0x1d;
    0x0000e0ec str r3, [r5, 4]               |         *((r5 + 4)) = r3;
    0x0000e0ee b 0xe06c                      |         goto label_1;
                                             | label_6:
    0x0000e0f0 ldr r2, [pc, 0x54]            |         
    0x0000e0f2 mov.w r1, -1                  |         r1 = -1;
    0x0000e0f6 str r0, [sp]                  |         *(sp) = r0;
    0x0000e0f8 mov r0, r5                    |         r0 = r5;
    0x0000e0fa add r2, pc                    |         r2 = 0x1c246;
    0x0000e0fc blx 0xad24                    |         fcn_0000ad24 ();
    0x0000e100 b 0xe0e4                      |         
                                             |     } while (1);
                                             | label_8:
    0x0000e102 blx 0xa9ec                    |     fcn_0000a9ec ();
                                             | label_5:
    0x0000e106 ldr r0, [pc, 0x44]            |     
    0x0000e108 str r3, [sp, 8]               |     var_8h = r3;
    0x0000e10a add r0, pc                    |     r0 = 0x1c25c;
    0x0000e10c bl 0xb290                     |     entry0 (r0);
    0x0000e110 ldr r3, [sp, 8]               |     r3 = var_8h;
    0x0000e112 mov r0, r3                    |     r0 = r3;
    0x0000e114 bl 0xb290                     |     entry0 (r0);
    0x0000e118 ldr r0, [pc, 0x34]            |     
    0x0000e11a add r0, pc                    |     r0 = 0x1c26e;
    0x0000e11c bl 0xb290                     |     r0 = entry0 (r0);
    0x0000e120 blx 0xa64c                    |     ZSTD_maxCLevel ();
    0x0000e124 add r0, sp, 0x3c0             |     r0 += arg_3c0h;
    0x0000e126 movs r6, r0                   |     r6 = r0;
    0x0000e128 lsls r0, r0, 0x1b             |     r0 <<= 0x1b;
    0x0000e12a movs r0, r0                   |     
    0x0000e12c rsbs r4, r7, 0                |     r4 = r7 - ;
    0x0000e12e movs r5, r0                   |     r5 = r0;
    0x0000e130 add r0, sp, 0x290             |     r0 += arg_290h;
    0x0000e132 movs r6, r0                   |     r6 = r0;
    0x0000e134 tst r6, r4                    |     
    0x0000e136 movs r5, r0                   |     r5 = r0;
    0x0000e138 tst r0, r0                    |     
    0x0000e13a movs r5, r0                   |     r5 = r0;
    0x0000e13c rors r2, r5                   |     __asm ("rors r2, r5");
    0x0000e13e movs r5, r0                   |     r5 = r0;
    0x0000e140 tst r4, r0                    |     
    0x0000e142 movs r5, r0                   |     r5 = r0;
    0x0000e144 cmp r2, r5                    |     
    0x0000e146 movs r5, r0                   |     r5 = r0;
    0x0000e148 tst r6, r6                    |     
    0x0000e14a movs r5, r0                   |     r5 = r0;
    0x0000e14c rors r2, r4                   |     __asm ("rors r2, r4");
    0x0000e14e movs r5, r0                   |     r5 = r0;
    0x0000e150 rors r6, r5                   |     __asm ("rors r6, r5");
    0x0000e152 movs r5, r0                   |     r5 = r0;
                                             | }

[*] Function popen used 1 times libarchive.so.13.6.2