[*] 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