[*] Binary protection state of libattr.so.1.1.2501

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


[*] Function strcat tear down of libattr.so.1.1.2501

    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libattr.so.1.1.2501 @ 0x1a98 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00001a98 ()                          | void fcn_00001a98 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
                                                     |     r3 = arg4;
    0x00001a98 invalid                               |     
    0x00001a9c mov r0, r1                            |     r0 = r1;
    0x00001a9e mov r7, r1                            |     r7 = r1;
    0x00001aa0 mov r5, r2                            |     r5 = r2;
    0x00001aa2 mov r6, r3                            |     r6 = r3;
    0x00001aa4 blx 0xe68                             |     r0 = fcn_00000e68 ();
    0x00001aa8 cmp r0, 0xff                          |     
                                                     |     if (r0 > 0xff) {
    0x00001aaa bhi 0x1afe                            |         goto label_1;
                                                     |     }
    0x00001aac lsls r2, r5, 0x1e                     |     r2 = r5 << 0x1e;
                                                     |     if (r2 < r5) {
    0x00001aae bpl 0x1acc                            |         
                                                     |         if (r6 == 0) {
    0x00001ab0 cbz r6, 0x1af8                        |             goto label_2;
                                                     |         }
    0x00001ab2 ldr r3, [pc, 0x5c]                    |         
    0x00001ab4 add r3, pc                            |         r3 = 0x35ca;
                                                     | label_0:
    0x00001ab6 ldm r3!, {r0, r1}                     |         r0 = *(r3!);
                                                     |         r1 = *((r3! + 4));
    0x00001ab8 ldrb r3, [r3]                         |         r3 = *(r3);
    0x00001aba str r0, [r4]                          |         *(r4) = r0;
    0x00001abc mov r0, r4                            |         r0 = r4;
    0x00001abe str r1, [r4, 4]                       |         *((r4 + 4)) = r1;
    0x00001ac0 mov r1, r7                            |         r1 = r7;
    0x00001ac2 strb r3, [r4, 8]                      |         *((r4 + 8)) = r3;
    0x00001ac4 blx 0xdd4                             |         strcat (r0, r1)
    0x00001ac8 movs r0, 0                            |         r0 = 0;
    0x00001aca pop {r3, r4, r5, r6, r7, pc}          |         
                                                     |     }
    0x00001acc lsls r3, r5, 0x1c                     |     r3 = r5 << 0x1c;
                                                     |     if (r3 >= r5) {
    0x00001ace bpl 0x1aea                            |         goto label_3;
                                                     |     }
    0x00001ad0 ldr r3, [pc, 0x40]                    |     
    0x00001ad2 add r3, pc                            |     r3 = 0x35ea;
    0x00001ad4 ldm r3!, {r0, r1}                     |     r0 = *(r3!);
                                                     |     r1 = *((r3! + 4));
    0x00001ad6 ldrh r3, [r3]                         |     r3 = *(r3);
    0x00001ad8 str r0, [r4]                          |     *(r4) = r0;
    0x00001ada str r1, [r4, 4]                       |     *((r4 + 4)) = r1;
    0x00001adc strh r3, [r4, 8]                      |     *((r4 + 8)) = r3;
                                                     |     do {
    0x00001ade mov r1, r7                            |         r1 = r7;
    0x00001ae0 mov r0, r4                            |         r0 = r4;
    0x00001ae2 blx 0xdd4                             |         strcat (r0, r1)
    0x00001ae6 movs r0, 0                            |         r0 = 0;
    0x00001ae8 pop {r3, r4, r5, r6, r7, pc}          |         
                                                     | label_3:
    0x00001aea ldr r3, [pc, 0x2c]                    |         
    0x00001aec add r3, pc                            |         r3 = 0x360a;
    0x00001aee ldr r0, [r3]                          |         r0 = *(0x360a);
    0x00001af0 ldrh r3, [r3, 4]                      |         r3 = *((r3 + 4));
    0x00001af2 str r0, [r4]                          |         *(r4) = r0;
    0x00001af4 strh r3, [r4, 4]                      |         *((r4 + 4)) = r3;
    0x00001af6 b 0x1ade                              |         
                                                     |     } while (1);
                                                     | label_2:
    0x00001af8 ldr r3, [pc, 0x20]                    |     
    0x00001afa add r3, pc                            |     r3 = 0x361a;
    0x00001afc b 0x1ab6                              |     goto label_0;
                                                     | label_1:
    0x00001afe blx 0xe80                             |     fcn_00000e80 ();
    0x00001b02 movs r2, 0x16                         |     r2 = 0x16;
    0x00001b04 mov r3, r0                            |     r3 = r0;
    0x00001b06 str r2, [r3]                          |     *(r3) = r2;
    0x00001b08 mov.w r0, -1                          |     r0 = -1;
    0x00001b0c pop {r3, r4, r5, r6, r7, pc}          |     
                                                     | }

[*] Function strcat used 3 times libattr.so.1.1.2501