[*] Binary protection state of libnxp_iot_agent_common.so

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


[*] Function printf tear down of libnxp_iot_agent_common.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/libnxp_iot_agent_common.so @ 0x44dc */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.pb_encode_delimited ()               | void pb_encode_delimited () {
    0x000044dc ldcllt p7, c15, [r4], -0x3f4          |     return __asm ("ldcllt p7, c15, [r4], -0x3f4");
                                                     | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnxp_iot_agent_common.so @ 0x43e8 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.pb_encode_submessage ()                  | void pb_encode_submessage (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                         |     int16_t var_0h;
                                                         |     int16_t var_4h;
                                                         |     int32_t var_4h_2;
                                                         |     int16_t var_ch;
                                                         |     int16_t var_10h;
                                                         |     int16_t var_14h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
    0x000043e8 push.w {r4, r5, r6, r7, r8, sb, lr}       |     
    0x000043ec mov r6, r0                                |     r6 = r0;
    0x000043ee ldr r0, [pc, 0xb8]                        |     
    0x000043f0 sub sp, 0x1c                              |     
    0x000043f2 mov r5, sp                                |     r5 = sp;
    0x000043f4 movs r4, 0                                |     r4 = 0;
    0x000043f6 ldr r3, [pc, 0xb4]                        |     r3 = *(0x44ae);
    0x000043f8 mov r8, r1                                |     r8 = r1;
    0x000043fa add r0, pc                                |     r0 = 0x88a8;
    0x000043fc mov r7, r2                                |     r7 = r2;
    0x000043fe ldr r3, [r0, r3]                          |     
    0x00004400 mov r0, r5                                |     r0 = r5;
    0x00004402 ldr r3, [r3]                              |     r3 = *(0x88a8);
    0x00004404 str r3, [sp, 0x14]                        |     var_14h = r3;
    0x00004406 mov.w r3, 0                               |     r3 = 0;
    0x0000440a str r4, [sp]                              |     *(sp) = r4;
    0x0000440c strd r4, r4, [r5, 4]                      |     __asm ("strd r4, r4, [var_4h]");
    0x00004410 strd r4, r4, [r5, 0xc]                    |     __asm ("strd r4, r4, [var_ch]");
    0x00004414 blx 0x1edc                                |     r0 = fcn_00001edc ();
                                                         |     if (r0 != 0) {
    0x00004418 cbnz r0, 0x4438                           |         goto label_2;
                                                         |     }
    0x0000441a ldr r3, [sp, 0x10]                        |     r3 = var_10h;
    0x0000441c str r3, [r6, 0x10]                        |     *((r6 + 0x10)) = r3;
                                                         |     do {
                                                         | label_0:
    0x0000441e ldr r2, [pc, 0x90]                        |         
    0x00004420 ldr r3, [pc, 0x88]                        |         r3 = *(0x44ac);
    0x00004422 add r2, pc                                |         r2 = 0x88d8;
    0x00004424 ldr r3, [r2, r3]                          |         r3 = *(0x88d8);
    0x00004426 ldr r2, [r3]                              |         r2 = *(0x88d8);
    0x00004428 ldr r3, [sp, 0x14]                        |         r3 = var_14h;
    0x0000442a eors r2, r3                               |         r2 ^= r3;
    0x0000442c mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x00004430 bne 0x44a4                                |             goto label_3;
                                                         |         }
    0x00004432 add sp, 0x1c                              |         
    0x00004434 pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
                                                         | label_2:
    0x00004438 ldr.w sb, [sp, 0xc]                       |         sb = var_ch;
    0x0000443c mov r3, r4                                |         r3 = r4;
    0x0000443e mov r0, r6                                |         r0 = r6;
    0x00004440 mov r2, sb                                |         r2 = sb;
    0x00004442 blx 0x1d74                                |         r0 = fcn_00001d74 ();
    0x00004446 cmp r0, 0                                 |         
    0x00004448 beq 0x441e                                |         
                                                         |     } while (r0 == 0);
    0x0000444a ldr r1, [r6]                              |     r1 = *(r6);
                                                         |     if (r1 == 0) {
    0x0000444c cbz r1, 0x449a                            |         goto label_4;
                                                         |     }
    0x0000444e ldr r3, [r6, 0xc]                         |     r3 = *((r6 + 0xc));
    0x00004450 ldr r2, [r6, 8]                           |     r2 = *((r6 + 8));
    0x00004452 add r3, sb                                |     r3 += sb;
    0x00004454 cmp r3, r2                                |     
                                                         |     if (r3 < r2) {
    0x00004456 bls 0x4462                                |         goto label_5;
                                                         |     }
    0x00004458 ldr r3, [r6, 0x10]                        |     r3 = *((r6 + 0x10));
                                                         |     if (r3 == 0) {
    0x0000445a cbz r3, 0x4494                            |         goto label_6;
                                                         |     }
                                                         | label_1:
    0x0000445c movs r0, 0                                |     r0 = 0;
                                                         |     do {
    0x0000445e str r3, [r6, 0x10]                        |         *((r6 + 0x10)) = r3;
    0x00004460 b 0x441e                                  |         goto label_0;
                                                         | label_5:
    0x00004462 ldr r3, [r6, 4]                           |         r3 = *((r6 + 4));
    0x00004464 mov r2, r7                                |         r2 = r7;
    0x00004466 str r1, [sp]                              |         *(sp) = r1;
    0x00004468 mov r0, r5                                |         r0 = r5;
    0x0000446a mov r1, r8                                |         r1 = r8;
    0x0000446c strd sb, r4, [sp, 8]                      |         __asm ("strd sb, r4, [var_ch]");
    0x00004470 str r3, [sp, 4]                           |         var_4h = r3;
    0x00004472 str r4, [sp, 0x10]                        |         var_10h = r4;
    0x00004474 blx 0x1edc                                |         fcn_00001edc ();
    0x00004478 ldr r3, [r6, 0xc]                         |         r3 = *((r6 + 0xc));
    0x0000447a ldr r2, [sp, 0xc]                         |         r2 = var_ch;
    0x0000447c add r3, r2                                |         r3 += r2;
    0x0000447e cmp r2, sb                                |         
    0x00004480 str r3, [r6, 0xc]                         |         *((r6 + 0xc)) = r3;
    0x00004482 ldr r3, [sp, 4]                           |         r3 = var_4h;
    0x00004484 str r3, [r6, 4]                           |         *((r6 + 4)) = r3;
    0x00004486 ldr r3, [sp, 0x10]                        |         r3 = var_10h;
    0x00004488 beq 0x445e                                |         
                                                         |     } while (r2 == sb);
    0x0000448a cmp r3, 0                                 |     
                                                         |     if (r3 != 0) {
    0x0000448c bne 0x445c                                |         goto label_1;
                                                         |     }
    0x0000448e ldr r3, [pc, 0x24]                        |     
    0x00004490 add r3, pc                                |     r3 = 0x894a;
    0x00004492 b 0x445c                                  |     goto label_1;
                                                         | label_6:
    0x00004494 ldr r3, [pc, 0x20]                        |     
    0x00004496 add r3, pc                                |     r3 = 0x8952;
    0x00004498 b 0x445c                                  |     goto label_1;
                                                         | label_4:
    0x0000449a mov r2, sb                                |     r2 = sb;
    0x0000449c mov r0, r6                                |     r0 = r6;
    0x0000449e blx 0x1d64                                |     fcn_00001d64 ();
    0x000044a2 b 0x441e                                  |     goto label_0;
                                                         | label_3:
    0x000044a4 blx 0x1d48                                |     fcn_00001d48 ();
    0x000044a8 cmp r2, 0xee                              |     
    0x000044aa movs r1, r0                               |     r1 = r0;
    0x000044ac lsls r0, r3, 3                            |     r0 = r3 << 3;
    0x000044ae movs r0, r0                               |     
    0x000044b0 cmp r2, 0xc6                              |     
    0x000044b2 movs r1, r0                               |     r1 = r0;
    0x000044b4 asrs r0, r5, 0x1a                         |     r0 = r5 >> 0x1a;
    0x000044b6 movs r0, r0                               |     
    0x000044b8 asrs r2, r3, 0x19                         |     r2 = r3 >> 0x19;
    0x000044ba movs r0, r0                               |     
    0x000044bc ldr.w r1, [r1, 0x15]                      |     r1 = *((r1 + 0x15));
    0x000044c0 mov r3, r0                                |     r3 = r0;
                                                         |     if (r1 != 0) {
    0x000044c2 cbz r1, 0x44c8                            |         
    0x000044c4 b.w 0x1dc8                                |         void (*0x1dc8)() ();
                                                         |     }
    0x000044c8 ldr r2, [r0, 0x10]                        |     r2 = *((r0 + 0x10));
    0x000044ca cbz r2, 0x44d2                            |     
                                                         |     while (1) {
    0x000044cc movs r0, 0                                |         r0 = 0;
    0x000044ce str r2, [r3, 0x10]                        |         *((r3 + 0x10)) = r2;
    0x000044d0 bx lr                                     |         return;
    0x000044d2 ldr r2, [pc, 4]                           |         
    0x000044d4 add r2, pc                                |         r2 = 0x89b2;
    0x000044d6 b 0x44cc                                  |         
                                                         |     }
                                                         | }

[*] Function printf used 1 times libnxp_iot_agent_common.so