[*] Binary protection state of libgobject-2.0.so.0.7200.3

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


[*] Function strcat tear down of libgobject-2.0.so.0.7200.3

    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.7200.3 @ 0x119ec */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.g_cclosure_marshal_VOID__VARIANTv ()         | void g_cclosure_marshal_VOID_VARIANTv (int16_t arg_28h, int16_t arg_30h, int16_t arg1, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_4h;
                                                             |     r0 = arg1;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x000119ec push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x000119f0 sub sp, 0xc                                   |     
    0x000119f2 ldr r7, [sp, 0x30]                            |     r7 = *(arg_30h);
    0x000119f4 adds r1, r3, 4                                |     r1 = r3 + 4;
    0x000119f6 mov r4, r2                                    |     r4 = r2;
    0x000119f8 mov r5, r0                                    |     r5 = r0;
    0x000119fa str r1, [sp, 4]                               |     var_4h = r1;
    0x000119fc ldr r1, [r7]                                  |     r1 = *(r7);
    0x000119fe ldr.w r8, [sp, 0x28]                          |     r8 = *(arg_28h);
    0x00011a02 ldr r6, [r3]                                  |     r6 = *(r3);
    0x00011a04 lsls r2, r1, 0x1f                             |     r2 = r1 << 0x1f;
                                                             |     if (r2 >= r1) {
    0x00011a06 bmi 0x11a14                                   |         
    0x00011a08 mov sb, r6                                    |         sb = r6;
                                                             |         if (r6 == 0) {
    0x00011a0a cbz r6, 0x11a1e                               |             goto label_0;
                                                             |         }
    0x00011a0c mov r0, r6                                    |         r0 = r6;
    0x00011a0e blx 0xa1a8                                    |         r0 = fcn_0000a1a8 ();
    0x00011a12 mov r6, r0                                    |         r6 = r0;
                                                             |     }
    0x00011a14 subs.w sb, r6, 0                              |     sb = r6 - 0;
    0x00011a18 it ne                                         |     
                                                             |     if (sb == r6) {
    0x00011a1a movne sb, 1                                   |         sb = 1;
                                                             |     }
                                                             | label_0:
    0x00011a1e ldrb r3, [r5, 3]                              |     r3 = *((r5 + 3));
    0x00011a20 lsls r3, r3, 0x1a                             |     r3 <<= 0x1a;
    0x00011a22 ittee mi                                      |     
                                                             |     if (r3 >= r3) {
    0x00011a24 ldrmi r0, [r5, 8]                             |         r0 = *((r5 + 8));
                                                             |     }
                                                             |     if (r3 >= r3) {
    0x00011a26 movmi r2, r4                                  |         r2 = r4;
                                                             |     }
                                                             |     if (r3 < r3) {
    0x00011a28 ldrpl r2, [r5, 8]                             |         r2 = *((r5 + 8));
                                                             |     }
                                                             |     if (r3 < r3) {
    0x00011a2a movpl r0, r4                                  |         r0 = r4;
                                                             |     }
    0x00011a2c cmp.w r8, 0                                   |     
                                                             |     if (r8 == 0) {
    0x00011a30 beq 0x11a44                                   |         goto label_1;
                                                             |     }
    0x00011a32 mov r1, r6                                    |     r1 = r6;
    0x00011a34 blx r8                                        |     uint32_t (*r8)(uint32_t) (r1);
    0x00011a36 ldr r3, [r7]                                  |     r3 = *(r7);
    0x00011a38 bics.w r3, sb, r3                             |     __asm ("bics.w r3, sb, r3");
                                                             |     if (r8 != 0) {
    0x00011a3c bne 0x11a54                                   |         goto label_2;
                                                             |     }
                                                             |     do {
    0x00011a3e add sp, 0xc                                   |         
    0x00011a40 pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
                                                             | label_1:
    0x00011a44 ldr.w r8, [r5, 0x10]                          |         r8 = *((r5 + 0x10));
    0x00011a48 mov r1, r6                                    |         r1 = r6;
    0x00011a4a blx r8                                        |         uint32_t (*r8)(uint32_t) (r1);
    0x00011a4c ldr r3, [r7]                                  |         r3 = *(r7);
    0x00011a4e bics.w r3, sb, r3                             |         __asm ("bics.w r3, sb, r3");
    0x00011a52 beq 0x11a3e                                   |         
                                                             |     } while (r8 == 0);
                                                             | label_2:
    0x00011a54 mov r0, r6                                    |     r0 = r6;
    0x00011a56 blx 0xa56c                                    |     strcat (r0, r1)
    0x00011a58 stc p0, c11, [sl, 0xc]                        |     __asm ("stc p0, c11, [sl, 0xc]");
    0x00011a5c pop.w {r4, r5, r6, r7, r8, sb, pc}            |     
                                                             | }

[*] Function strcat used 2 times libgobject-2.0.so.0.7200.3