[*] Binary protection state of libimpl_wsd_aentry.so

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


[*] Function strcpy tear down of libimpl_wsd_aentry.so

    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libimpl_wsd_aentry.so @ 0x8d4 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.000008d4 ()                                  | void fcn_000008d4 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_bp_4h;
                                                             |     int16_t var_bp_ch;
                                                             |     int16_t var_ch_2;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_11ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x000008d4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}   |     
    0x000008d8 mov sl, r1                                    |     sl = r1;
    0x000008da sub sp, 0x124                                 |     
    0x000008dc ldr r1, [pc, 0x1c0]                           |     
    0x000008de mov r4, r3                                    |     r4 = r3;
    0x000008e0 mov r8, r0                                    |     r8 = r0;
    0x000008e2 str r3, [sp, 8]                               |     var_8h = r3;
    0x000008e4 mov r7, r2                                    |     r7 = r2;
    0x000008e6 ldr r3, [pc, 0x1bc]                           |     r3 = *(0xaa6);
    0x000008e8 add r1, pc                                    |     r1 = 0x138c;
    0x000008ea movs r2, 4                                    |     r2 = 4;
    0x000008ec ldr r3, [r1, r3]                              |     
    0x000008ee movs r1, 0                                    |     r1 = 0;
    0x000008f0 mov r0, r1                                    |     r0 = r1;
    0x000008f2 ldr r3, [r3]                                  |     r3 = *(0x138c);
    0x000008f4 str r3, [sp, 0x11c]                           |     var_11ch = r3;
    0x000008f6 mov.w r3, 0                                   |     r3 = 0;
    0x000008fa blx 0x6d8                                     |     g_array_new ();
    0x000008fe mov r1, r4                                    |     r1 = r4;
    0x00000900 mov sb, r0                                    |     sb = r0;
    0x00000902 blx 0x76c                                     |     fcn_0000076c ();
    0x00000906 ldr.w r1, [sb, 4]                             |     r1 = *((sb + 4));
    0x0000090a mov r0, r8                                    |     r0 = r8;
    0x0000090c str.w r1, [sl]                                |     __asm ("str.w r1, [sl]");
    0x00000910 lsls r1, r1, 4                                |     r1 <<= 4;
    0x00000912 blx 0x760                                     |     fcn_00000760 ();
    0x00000916 str r0, [r7]                                  |     *(r7) = r0;
    0x00000918 mov r0, r8                                    |     r0 = r8;
    0x0000091a blx 0x790                                     |     r0 = fcn_00000790 ();
    0x0000091e mov r4, r0                                    |     r4 = r0;
    0x00000920 mov r0, r8                                    |     r0 = r8;
    0x00000922 blx 0x784                                     |     r0 = fcn_00000784 ();
    0x00000926 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00000928 beq.w 0xa96                                   |         goto label_3;
                                                             |     }
    0x0000092c ldr r3, [r0]                                  |     r3 = *(r0);
    0x0000092e str r3, [sp, 4]                               |     var_4h = r3;
                                                             | label_2:
    0x00000930 add.w fp, sp, 0x1c                            |     
    0x00000934 mov r1, r4                                    |     r1 = r4;
    0x00000936 mov.w r2, 0x100                               |     r2 = 0x100;
    0x0000093a mov r0, fp                                    |     r0 = fp;
    0x0000093c blx 0x6fc                                     |     stpcpy_chk ();
    0x00000940 ldr r1, [pc, 0x164]                           |     
    0x00000942 sub.w r3, fp, r0                              |     r3 = fp - r0;
    0x00000946 add.w r3, r3, 0x100                           |     r3 += 0x100;
    0x0000094a movs r2, 2                                    |     r2 = 2;
    0x0000094c mov r4, r0                                    |     r4 = r0;
    0x0000094e add r1, pc                                    |     r1 = 0x13fa;
    0x00000950 sub.w r4, r4, fp                              |     r4 -= fp;
    0x00000954 blx 0x6e4                                     |     memcpy_chk ();
    0x00000958 ldr.w r3, [sl]                                |     r3 = *(sl);
    0x0000095c cmp r3, 0                                     |     
    0x0000095e itttt gt                                      |     
                                                             |     if (r3 <= 0) {
    0x00000960 addgt r3, r4, 2                               |         r3 = r4 + 2;
                                                             |     }
                                                             |     if (r3 <= 0) {
    0x00000962 movgt r6, 0                                   |         r6 = 0;
                                                             |     }
                                                             |     if (r3 <= 0) {
    0x00000964 strgt r3, [sp, 0xc]                           |         var_ch = r3;
                                                             |     }
                                                             |     if (r3 <= 0) {
    0x00000966 strgt fp, [sp, 0x10]                          |         var_10h = fp;
                                                             |     }
                                                             |     if (r3 > 0) {
    0x0000096a bgt 0x9e2                                     |         goto label_4;
                                                             |     }
    0x0000096c b 0xa34                                       |     goto label_5;
                                                             |     do {
    0x0000096e ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x00000970 blx 0x748                                     |         fcn_00000748 ();
    0x00000974 ldr r3, [sp, 0xc]                             |         r3 = var_ch;
    0x00000976 adds r1, r0, r3                               |         r1 = r0 + r3;
    0x00000978 mov r0, r8                                    |         r0 = r8;
    0x0000097a blx 0x6c0                                     |         loc_imp_xsoap_malloc ();
    0x0000097e ldr r1, [sp, 0x10]                            |         r1 = var_10h;
    0x00000980 str r0, [sp, 0x14]                            |         var_14h = r0;
    0x00000982 blx 0x6f0                                     |         g_stpcpy ();
    0x00000986 ldr r1, [r4, 8]                               |         r1 = *((r4 + 8));
    0x00000988 blx 0x6f0                                     |         g_stpcpy ();
    0x0000098c ldr r2, [sp, 0x14]                            |         r2 = var_14h;
                                                             | label_0:
    0x0000098e ldr r3, [r7]                                  |         r3 = *(r7);
    0x00000990 movs r1, 8                                    |         r1 = 8;
    0x00000992 mov r0, r8                                    |         r0 = r8;
    0x00000994 add.w fp, r3, r5                              |         
    0x00000998 str.w r2, [fp, 4]                             |         __asm ("str.w r2, [var_bp_4h]");
    0x0000099c blx 0x760                                     |         fcn_00000760 ();
    0x000009a0 ldr r3, [r7]                                  |         r3 = *(r7);
    0x000009a2 ldr r1, [r4, 0x10]                            |         r1 = *((r4 + 0x10));
    0x000009a4 str.w r0, [fp, 0xc]                           |         __asm ("str.w r0, [var_bp_ch]");
    0x000009a8 add r3, r5                                    |         r3 += r5;
    0x000009aa ldr r2, [r3, 0xc]                             |         r2 = *((r3 + 0xc));
    0x000009ac str r1, [r2]                                  |         *(r2) = r1;
    0x000009ae ldr r1, [r4, 0x14]                            |         r1 = *((r4 + 0x14));
    0x000009b0 str r1, [r2, 4]                               |         *((r2 + 4)) = r1;
    0x000009b2 ldr r2, [sp, 8]                               |         r2 = var_8h;
                                                             |         if (r2 != 0) {
    0x000009b4 cbz r2, 0x9c0                                 |             
    0x000009b6 ldr r2, [r4, 0xc]                             |             r2 = *((r4 + 0xc));
                                                             |             if (r2 == 0) {
    0x000009b8 cbz r2, 0x9c0                                 |                 goto label_1;
                                                             |             }
    0x000009ba ldrb r2, [r2]                                 |             r2 = *(r2);
    0x000009bc cmp r2, 0                                     |             
                                                             |             if (r2 != 0) {
    0x000009be bne 0xa58                                     |                 goto label_6;
                                                             |             }
                                                             |         }
                                                             | label_1:
    0x000009c0 ldr r0, [r4, 4]                               |         r0 = *((r4 + 4));
    0x000009c2 adds r6, 1                                    |         r6++;
    0x000009c4 blx 0x6b4                                     |         g_free ();
    0x000009c8 ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x000009ca blx 0x6b4                                     |         g_free ();
    0x000009ce ldr r0, [r4]                                  |         r0 = *(r4);
    0x000009d0 blx 0x6b4                                     |         g_free ();
    0x000009d4 mov r0, r4                                    |         r0 = r4;
    0x000009d6 blx 0x6b4                                     |         g_free ();
    0x000009da ldr.w r3, [sl]                                |         r3 = *(sl);
    0x000009de cmp r3, r6                                    |         
                                                             |         if (r3 <= r6) {
    0x000009e0 ble 0xa34                                     |             goto label_5;
                                                             |         }
                                                             | label_4:
    0x000009e2 ldr.w r3, [sb]                                |         r3 = *(sb);
    0x000009e6 lsls r5, r6, 4                                |         r5 = r6 << 4;
    0x000009e8 ldr.w r4, [r3, r6, lsl 2]                     |         offset_0 = r6 << 2;
                                                             |         r4 = *((r3 + offset_0));
    0x000009ec ldr r0, [r4]                                  |         r0 = *(r4);
    0x000009ee blx 0x748                                     |         r0 = fcn_00000748 ();
    0x000009f2 adds r1, r0, 1                                |         r1 = r0 + 1;
    0x000009f4 mov r0, r8                                    |         r0 = r8;
    0x000009f6 ldr.w fp, [r7]                                |         fp = *(r7);
    0x000009fa blx 0x760                                     |         fcn_00000760 ();
    0x000009fe ldr r3, [r7]                                  |         r3 = *(r7);
    0x00000a00 str.w r0, [fp, r5]                            |         __asm ("str.w r0, [fp, r5]");
    0x00000a04 ldr r1, [r4]                                  |         r1 = *(r4);
    0x00000a06 ldr r0, [r3, r5]                              |         r0 = *((r3 + r5));
    0x00000a08 blx 0x708                                     |         strcpy (r0, r1)
    0x00000a0c ldr r3, [sp, 4]                               |         r3 = var_4h;
    0x00000a0e cmp r3, 0                                     |         
    0x00000a10 bne 0x96e                                     |         
                                                             |     } while (r3 != 0);
    0x00000a12 ldr r0, [r4, 4]                               |     r0 = *((r4 + 4));
    0x00000a14 blx 0x748                                     |     fcn_00000748 ();
    0x00000a16 vfnms.f64 d9, d8, d3                          |     __asm ("vfnms.f64 d9, d8, d3");
    0x00000a1a adds r1, r0, r3                               |     r1 = r0 + r3;
    0x00000a1c mov r0, r8                                    |     r0 = r8;
    0x00000a1e blx 0x6c0                                     |     loc_imp_xsoap_malloc ();
    0x00000a22 ldr r1, [sp, 0x10]                            |     r1 = var_10h;
    0x00000a24 str r0, [sp, 0x14]                            |     var_14h = r0;
    0x00000a26 blx 0x6f0                                     |     g_stpcpy ();
    0x00000a2a ldr r1, [r4, 4]                               |     r1 = *((r4 + 4));
    0x00000a2c blx 0x6f0                                     |     g_stpcpy ();
    0x00000a30 ldr r2, [sp, 0x14]                            |     r2 = var_14h;
    0x00000a32 b 0x98e                                       |     goto label_0;
                                                             | label_5:
    0x00000a34 movs r1, 1                                    |     r1 = 1;
    0x00000a36 mov r0, sb                                    |     r0 = sb;
    0x00000a38 blx 0x714                                     |     g_array_free ();
    0x00000a3c ldr r2, [pc, 0x6c]                            |     
    0x00000a3e ldr r3, [pc, 0x64]                            |     r3 = *(0xaa6);
    0x00000a40 add r2, pc                                    |     r2 = 0x14f0;
    0x00000a42 ldr r3, [r2, r3]                              |     r3 = *(0x14f0);
    0x00000a44 ldr r2, [r3]                                  |     r2 = *(0x14f0);
    0x00000a46 ldr r3, [sp, 0x11c]                           |     r3 = var_11ch;
    0x00000a48 eors r2, r3                                   |     r2 ^= r3;
    0x00000a4a mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 == r3) {
    0x00000a4e bne 0xa9a                                     |         
    0x00000a50 movs r0, 1                                    |         r0 = 1;
    0x00000a52 add sp, 0x124                                 |         
    0x00000a54 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             | label_6:
    0x00000a58 movs r1, 4                                    |         r1 = 4;
    0x00000a5a mov r0, r8                                    |         r0 = r8;
    0x00000a5c str r3, [sp, 0x14]                            |         var_14h = r3;
    0x00000a5e blx 0x760                                     |         fcn_00000760 ();
    0x00000a62 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x00000a64 str r0, [r3, 8]                               |         *((r3 + 8)) = r0;
    0x00000a66 ldr r0, [r4, 0xc]                             |         r0 = *((r4 + 0xc));
    0x00000a68 blx 0x748                                     |         fcn_00000748 ();
    0x00000a6c ldr r3, [r7]                                  |         r3 = *(r7);
    0x00000a6e adds r1, r0, 1                                |         r1 = r0 + 1;
    0x00000a70 mov r0, r8                                    |         r0 = r8;
    0x00000a72 add r3, r5                                    |         r3 += r5;
    0x00000a74 ldr r3, [r3, 8]                               |         r3 = *((r3 + 8));
    0x00000a76 str r3, [sp, 0x14]                            |         var_14h = r3;
    0x00000a78 blx 0x760                                     |         fcn_00000760 ();
    0x00000a7c ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x00000a7e ldr r1, [r4, 0xc]                             |         r1 = *((r4 + 0xc));
    0x00000a80 str r0, [r3]                                  |         *(r3) = r0;
    0x00000a82 ldr r3, [r7]                                  |         r3 = *(r7);
    0x00000a84 add r3, r5                                    |         r3 += r5;
    0x00000a86 ldr r3, [r3, 8]                               |         r3 = *((r3 + 8));
    0x00000a88 ldr r0, [r3]                                  |         r0 = *(r3);
    0x00000a8a blx 0x708                                     |         strcpy (r0, r1)
    0x00000a8e ldr r0, [r4, 0xc]                             |         r0 = *((r4 + 0xc));
    0x00000a90 blx 0x6b4                                     |         g_free ();
    0x00000a94 b 0x9c0                                       |         goto label_1;
                                                             | label_3:
    0x00000a96 str r0, [sp, 4]                               |         var_4h = r0;
    0x00000a98 b 0x930                                       |         goto label_2;
                                                             |     }
    0x00000a9a blx 0x6cc                                     |     stack_chk_fail ();
    0x00000a9e nop                                           |     
    0x00000aa0 lsls r4, r4, 0x1a                             |     r4 <<= 0x1a;
    0x00000aa2 movs r1, r0                                   |     r1 = r0;
    0x00000aa4 lsls r4, r4, 1                                |     r4 <<= 1;
    0x00000aa6 movs r0, r0                                   |     
    0x00000aa8 lsls r2, r6, 0xb                              |     r2 = r6 << 0xb;
    0x00000aaa movs r0, r0                                   |     
    0x00000aac lsls r4, r1, 0x15                             |     r4 = r1 << 0x15;
    0x00000aae movs r1, r0                                   |     r1 = r0;
                                                             | }

[*] Function strcpy used 3 times libimpl_wsd_aentry.so