[*] Binary protection state of libuuid.so.1.3.0

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


[*] Function popen tear down of libuuid.so.1.3.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/libuuid.so.1.3.0 @ 0x3998 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.00003998 ()                      | void fcn_00003998 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
                                                 |     r2 = arg3;
    0x00003998 mvnsmi lr, sp, lsr 18             |     __asm ("mvnsmi lr, sp, lsr 18");
    0x0000399c mov r6, r2                        |     r6 = r2;
    0x0000399e ldr r2, [r0, 0x14]                |     r2 = *((r0 + 0x14));
    0x000039a0 lsls r3, r6, 3                    |     r3 = r6 << 3;
    0x000039a2 mov r5, r0                        |     r5 = r0;
    0x000039a4 mov r7, r1                        |     r7 = r1;
    0x000039a6 adds r3, r3, r2                   |     r3 += r2;
    0x000039a8 ubfx r8, r2, 3, 6                 |     r8 = (r2 >> 3) & ((1 << 6) - 1);
    0x000039ac str r3, [r0, 0x14]                |     *((r0 + 0x14)) = r3;
    0x000039ae ldr r3, [r0, 0x18]                |     r3 = *((r0 + 0x18));
    0x000039b0 it hs                             |     
                                                 |     if (r3 < r3) {
    0x000039b2 addhs r3, 1                       |         r3++;
                                                 |     }
    0x000039b4 add.w r3, r3, r6, lsr 29          |     r3 += (r6 >> 29);
    0x000039b8 str r3, [r0, 0x18]                |     *((r0 + 0x18)) = r3;
    0x000039ba add.w r3, r6, r8                  |     r3 = r6 + r8;
    0x000039be cmp r3, 0x3f                      |     
    0x000039c0 add.w r0, r8, 0x1c                |     r0 = r8 + 0x1c;
    0x000039c4 bhi 0x39d4                        |     
                                                 |     while (r0 < 0x1c) {
    0x000039c6 mov r2, r6                        |         r2 = r6;
    0x000039c8 mov r1, r7                        |         r1 = r7;
    0x000039ca add r0, r5                        |         r0 += r5;
    0x000039cc pop.w {r4, r5, r6, r7, r8, lr}    |         
    0x000039d0 b.w 0xea0                         |         void (*0xea0)() ();
    0x000039d4 rsb.w r4, r8, 0x40                |         r4 = 0x40 - r8;
    0x000039d8 add r0, r5                        |         r0 += r5;
    0x000039da mov r2, r4                        |         r2 = r4;
    0x000039dc blx 0xea4                         |         fcn_00000ea4 ();
    0x000039e0 mov r0, r5                        |         r0 = r5;
    0x000039e2 add.w r1, r5, 0x1c                |         r1 = r5 + 0x1c;
    0x000039e6 bl 0x2af0                         |         fcn_00002af0 (r0, r1);
    0x000039ea rsb.w r3, r8, 0x7f                |         r3 = 0x7f - r8;
    0x000039ee cmp r6, r3                        |         
    0x000039f0 itttt ls                          |         
                                                 |         if (r6 > r3) {
    0x000039f2 subls r2, r8, 0x40                |             r2 = r8 - 0x40;
                                                 |         }
                                                 |         if (r6 > r3) {
    0x000039f6 addls r7, r7, r4                  |             r7 += r4;
                                                 |         }
                                                 |         if (r6 > r3) {
    0x000039f8 addls r6, r6, r2                  |             r6 += r2;
                                                 |         }
                                                 |         if (r6 <= r3) {
    0x000039fa movs r0, 0x1c                     |             r0 = 0x1c;
                                                 |         }
    0x000039fc bls 0x39c6                        |         
                                                 |     }
                                                 |     do {
    0x000039fe adds r1, r7, r4                   |         r1 = r7 + r4;
    0x00003a00 mov r0, r5                        |         r0 = r5;
    0x00003a02 bl 0x2af0                         |         fcn_00002af0 (r0, r1);
    0x00003a06 mov r3, r4                        |         r3 = r4;
    0x00003a08 adds r4, 0x40                     |         r4 += 0x40;
    0x00003a0a adds r3, 0x7f                     |         r3 += 0x7f;
    0x00003a0c cmp r6, r3                        |         
    0x00003a0e bhi 0x39fe                        |         
                                                 |     } while (r6 > r3);
    0x00003a10 add r7, r4                        |     r7 += r4;
    0x00003a12 subs r6, r6, r4                   |     r6 -= r4;
    0x00003a14 movs r0, 0x1c                     |     r0 = 0x1c;
    0x00003a16 mov r2, r6                        |     r2 = r6;
    0x00003a18 mov r1, r7                        |     r1 = r7;
    0x00003a1a add r0, r5                        |     r0 += r5;
    0x00003a1c pop.w {r4, r5, r6, r7, r8, lr}    |     
    0x00003a20 b.w 0xea0                         |     return void (*0xea0)() ();
                                                 | }

[*] Function popen used 1 times libuuid.so.1.3.0