[*] 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-80367616.squashfs_v4_le_extract/usr/lib/libnxp_iot_agent_common.so @ 0x45a0 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.pb_encode_delimited ()               | void pb_encode_delimited () {
    0x000045a0 stcllt p7, c15, [r6], -0x3f4          |     return __asm ("stcllt p7, c15, [r6], -0x3f4");
                                                     | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libnxp_iot_agent_common.so @ 0x44a8 */
                                                         | #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;
    0x000044a8 push.w {r4, r5, r6, r7, r8, sb, lr}       |     
    0x000044ac mov r6, r0                                |     r6 = r0;
    0x000044ae ldr r0, [pc, 0xbc]                        |     
    0x000044b0 sub sp, 0x1c                              |     
    0x000044b2 mov r5, sp                                |     r5 = sp;
    0x000044b4 movs r4, 0                                |     r4 = 0;
    0x000044b6 ldr r3, [pc, 0xb8]                        |     r3 = *(0x4572);
    0x000044b8 mov r8, r1                                |     r8 = r1;
    0x000044ba add r0, pc                                |     r0 = 0x8a2c;
    0x000044bc mov r7, r2                                |     r7 = r2;
    0x000044be ldr r3, [r0, r3]                          |     
    0x000044c0 mov r0, r5                                |     r0 = r5;
    0x000044c2 ldr r3, [r3]                              |     r3 = *(0x8a2c);
    0x000044c4 str r3, [sp, 0x14]                        |     var_14h = r3;
    0x000044c6 mov.w r3, 0                               |     r3 = 0;
    0x000044ca str r4, [sp]                              |     *(sp) = r4;
    0x000044cc strd r4, r4, [r5, 4]                      |     __asm ("strd r4, r4, [var_4h]");
    0x000044d0 strd r4, r4, [r5, 0xc]                    |     __asm ("strd r4, r4, [var_ch]");
    0x000044d4 blx 0x1f84                                |     r0 = fcn_00001f84 ();
                                                         |     if (r0 != 0) {
    0x000044d8 cbnz r0, 0x44fa                           |         goto label_3;
                                                         |     }
    0x000044da ldr r3, [sp, 0x10]                        |     r3 = var_10h;
    0x000044dc str r3, [r6, 0x10]                        |     *((r6 + 0x10)) = r3;
                                                         |     do {
                                                         | label_0:
    0x000044de movs r0, 0                                |         r0 = 0;
                                                         | label_1:
    0x000044e0 ldr r2, [pc, 0x90]                        |         
    0x000044e2 ldr r3, [pc, 0x8c]                        |         r3 = *(0x4572);
    0x000044e4 add r2, pc                                |         r2 = 0x8a5c;
    0x000044e6 ldr r3, [r2, r3]                          |         r3 = *(0x8a5c);
    0x000044e8 ldr r2, [r3]                              |         r2 = *(0x8a5c);
    0x000044ea ldr r3, [sp, 0x14]                        |         r3 = var_14h;
    0x000044ec eors r2, r3                               |         r2 ^= r3;
    0x000044ee mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x000044f2 bne 0x4568                                |             goto label_4;
                                                         |         }
    0x000044f4 add sp, 0x1c                              |         
    0x000044f6 pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
    0x000044f8 strh r0, [r6, 0x1e]                       |         *((r6 + 0x1e)) = r0;
                                                         | label_3:
    0x000044fa ldr.w sb, [sp, 0xc]                       |         sb = var_ch;
    0x000044fe mov r3, r4                                |         r3 = r4;
    0x00004500 mov r0, r6                                |         r0 = r6;
    0x00004502 mov r2, sb                                |         r2 = sb;
    0x00004504 blx 0x1e1c                                |         r0 = fcn_00001e1c ();
    0x00004508 cmp r0, 0                                 |         
    0x0000450a beq 0x44de                                |         
                                                         |     } while (r0 == 0);
    0x0000450c ldr r1, [r6]                              |     r1 = *(r6);
                                                         |     if (r1 == 0) {
    0x0000450e cbz r1, 0x455e                            |         goto label_5;
                                                         |     }
    0x00004510 ldr r3, [r6, 0xc]                         |     r3 = *((r6 + 0xc));
    0x00004512 ldr r2, [r6, 8]                           |     r2 = *((r6 + 8));
    0x00004514 add r3, sb                                |     r3 += sb;
    0x00004516 cmp r3, r2                                |     
                                                         |     if (r3 >= r2) {
    0x00004518 bls 0x4522                                |         
    0x0000451a ldr r3, [r6, 0x10]                        |         r3 = *((r6 + 0x10));
                                                         |         if (r3 == 0) {
    0x0000451c cbz r3, 0x4558                            |             goto label_6;
                                                         |         }
                                                         | label_2:
    0x0000451e str r3, [r6, 0x10]                        |         *((r6 + 0x10)) = r3;
    0x00004520 b 0x44de                                  |         goto label_0;
                                                         |     }
    0x00004522 ldr r3, [r6, 4]                           |     r3 = *((r6 + 4));
    0x00004524 mov r2, r7                                |     r2 = r7;
    0x00004526 str r1, [sp]                              |     *(sp) = r1;
    0x00004528 mov r0, r5                                |     r0 = r5;
    0x0000452a mov r1, r8                                |     r1 = r8;
    0x0000452c strd sb, r4, [sp, 8]                      |     __asm ("strd sb, r4, [var_ch]");
    0x00004530 str r3, [sp, 4]                           |     var_4h = r3;
    0x00004532 str r4, [sp, 0x10]                        |     var_10h = r4;
    0x00004534 blx 0x1f84                                |     fcn_00001f84 ();
    0x00004538 ldr r3, [r6, 0xc]                         |     r3 = *((r6 + 0xc));
    0x0000453a ldr r2, [sp, 0xc]                         |     r2 = var_ch;
    0x0000453c add r3, r2                                |     r3 += r2;
    0x0000453e cmp r2, sb                                |     
    0x00004540 str r3, [r6, 0xc]                         |     *((r6 + 0xc)) = r3;
    0x00004542 ldr r3, [sp, 4]                           |     r3 = var_4h;
    0x00004544 str r3, [r6, 4]                           |     *((r6 + 4)) = r3;
    0x00004546 ldr r3, [sp, 0x10]                        |     r3 = var_10h;
    0x00004548 it eq                                     |     
                                                         |     if (r2 == sb) {
    0x0000454a streq r3, [r6, 0x10]                      |         *((r6 + 0x10)) = r3;
                                                         |         goto label_7;
                                                         |     }
                                                         |     if (r2 == sb) {
                                                         | label_7:
    0x0000454c beq 0x44e0                                |         goto label_1;
                                                         |     }
    0x0000454e cmp r3, 0                                 |     
                                                         |     if (r3 != 0) {
    0x00004550 bne 0x451e                                |         goto label_2;
                                                         |     }
    0x00004552 ldr r3, [pc, 0x24]                        |     
    0x00004554 add r3, pc                                |     r3 = 0x8ad2;
    0x00004556 b 0x451e                                  |     goto label_2;
                                                         | label_6:
    0x00004558 ldr r3, [pc, 0x20]                        |     
    0x0000455a add r3, pc                                |     r3 = 0x8ada;
    0x0000455c b 0x451e                                  |     goto label_2;
                                                         | label_5:
    0x0000455e mov r2, sb                                |     r2 = sb;
    0x00004560 mov r0, r6                                |     r0 = r6;
    0x00004562 blx 0x1e0c                                |     fcn_00001e0c ();
    0x00004566 b 0x44e0                                  |     goto label_1;
                                                         | label_4:
    0x00004568 blx 0x1df0                                |     fcn_00001df0 ();
    0x0000456c subs r2, 0x2a                             |     r2 -= 0x2a;
    0x0000456e movs r0, r0                               |     
    0x00004570 lsls r0, r3, 3                            |     r0 = r3 << 3;
    0x00004572 movs r0, r0                               |     
    0x00004574 subs r2, 0                                |     
    0x00004576 movs r0, r0                               |     
    0x00004578 asrs r4, r7, 0x1a                         |     r4 = r7 >> 0x1a;
    0x0000457a movs r0, r0                               |     
    0x0000457c asrs r6, r5, 0x19                         |     r6 = r5 >> 0x19;
    0x0000457e movs r0, r0                               |     
    0x00004580 ldr.w r1, [r1, 0x15]                      |     r1 = *((r1 + 0x15));
    0x00004584 mov r3, r0                                |     r3 = r0;
                                                         |     if (r1 != 0) {
    0x00004586 cbz r1, 0x458c                            |         
    0x00004588 b.w 0x1e70                                |         void (*0x1e70)() ();
                                                         |     }
    0x0000458c ldr r2, [r0, 0x10]                        |     r2 = *((r0 + 0x10));
    0x0000458e cbz r2, 0x4596                            |     
                                                         |     while (1) {
    0x00004590 movs r0, 0                                |         r0 = 0;
    0x00004592 str r2, [r3, 0x10]                        |         *((r3 + 0x10)) = r2;
    0x00004594 bx lr                                     |         return;
    0x00004596 ldr r2, [pc, 4]                           |         
    0x00004598 add r2, pc                                |         r2 = 0x8b3a;
    0x0000459a b 0x4590                                  |         
                                                         |     }
                                                         | }

[*] Function printf used 1 times libnxp_iot_agent_common.so