[*] Binary protection state of ip.iproute2
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function printf tear down of ip.iproute2
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x39e8c).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x3b0f0).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c5cc */
| #include <stdint.h>
|
; (fcn) sym.jsonw_bool () | void jsonw_bool (int16_t arg1) {
| r0 = arg1;
0x0004c5cc invalid | goto label_0;
0x0004c5ce ldr r2, [pc, 0x10] |
0x0004c5d0 add r2, pc | r2 = 0x98bb6;
| do {
0x0004c5d2 ldr r1, [pc, 0x10] |
0x0004c5d4 add r1, pc | r1 = 0x98bbe;
0x0004c5d6 b.w 0x4c45c | void (*0x4c45c)() ();
| label_0:
0x0004c5da ldr r2, [pc, 0xc] |
0x0004c5dc add r2, pc | r2 = 0x98bca;
0x0004c5de b 0x4c5d2 |
| } while (1);
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c6a0).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c5f8 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_float () | void jsonw_float (int16_t arg1) {
| r0 = arg1;
0x0004c5f8 ldr r1, [pc, 8] | r1 = *(0x0004c604);
0x0004c5fa vmov r2, r3, d0 | __asm ("vmov r2, r3, d0");
0x0004c5fe add r1, pc | r1 += pc;
0x0004c600 b.w 0x4c45c | return void (*0x4c45c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c6b8 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_float_field () | void jsonw_float_field (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0004c6b8 pushls {r4, lr} | __asm ("pushls {r4, lr}");
| if (? <= ?) {
0x0004c6ba movhi r4, r0 | r4 = r0;
| }
| if (? > ?) {
0x0004c6bc subls sp, 8 |
| }
0x0004c6be vstr d0, [sp] | __asm ("vstr d0, [sp]");
0x0004c6c2 bl 0x4c3ec | jsonw_name ();
0x0004c6c4 mrc2 p13, 4, lr, c3, c13, 4 | __asm ("mrc2 p13, 4, lr, c3, c13, 4");
0x0004c6c8 lsrs r0, r0, 0xc | r0 >>= 0xc;
0x0004c6ca mov r0, r4 | r0 = r4;
0x0004c6cc add sp, 8 |
0x0004c6ce pop.w {r4, lr} |
0x0004c6d2 b.w 0x4c5f8 | return void (*0x4c5f8)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c608 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_hhu () | void jsonw_hhu (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0004c608 mov r2, r1 | r2 = r1;
0x0004c60a ldr r1, [pc, 8] |
0x0004c60c add r1, pc | r1 = 0x98c26;
0x0004c60e b.w 0x4c45c | return void (*0x4c45c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c728 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_hhu_field () | void jsonw_hhu_field (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0004c728 push {r3, r4, r5, lr} |
0x0004c72a mov r4, r0 | r4 = r0;
0x0004c72c mov r5, r2 | r5 = r2;
0x0004c72e bl 0x4c3ec | jsonw_name ();
0x0004c730 cdp2 p6, 5, c4, c13, c9, 1 | __asm ("cdp2 p6, 5, c4, c13, c9, 1");
0x0004c734 mov r0, r4 | r0 = r4;
0x0004c736 pop.w {r3, r4, r5, lr} |
0x0004c73a b.w 0x4c608 | return void (*0x4c608)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c618 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_hu () | void jsonw_hu (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0004c618 mov r2, r1 | r2 = r1;
0x0004c61a ldr r1, [pc, 8] |
0x0004c61c add r1, pc | r1 = 0x98c46;
0x0004c61e b.w 0x4c45c | return void (*0x4c45c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c740 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_hu_field () | void jsonw_hu_field (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0004c740 push {r3, r4, r5, lr} |
0x0004c742 mov r4, r0 | r4 = r0;
0x0004c744 mov r5, r2 | r5 = r2;
0x0004c746 bl 0x4c3ec | jsonw_name ();
0x0004c74a mov r1, r5 | r1 = r5;
0x0004c74c mov r0, r4 | r0 = r4;
0x0004c74e pop.w {r3, r4, r5, lr} |
0x0004c752 b.w 0x4c618 | return void (*0x4c618)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c66c */
| #include <stdint.h>
|
; (fcn) sym.jsonw_int () | void jsonw_int (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0004c66c mov r2, r1 | r2 = r1;
0x0004c66e ldr r1, [pc, 8] |
0x0004c670 add r1, pc | r1 = 0x98cee;
0x0004c672 b.w 0x4c45c | return void (*0x4c45c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c78c */
| #include <stdint.h>
|
; (fcn) sym.jsonw_int_field () | void jsonw_int_field (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0004c78c push {r3, r4, r5, lr} |
0x0004c78e mov r4, r0 | r4 = r0;
0x0004c790 mov r5, r2 | r5 = r2;
0x0004c792 bl 0x4c3ec | jsonw_name ();
0x0004c796 mov r1, r5 | r1 = r5;
0x0004c798 mov r0, r4 | r0 = r4;
0x0004c79a pop.w {r3, r4, r5, lr} |
0x0004c79e b.w 0x4c66c | return void (*0x4c66c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c660 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_lluint () | void jsonw_lluint (int16_t arg1) {
| r0 = arg1;
0x0004c660 ldr r1, [pc, 4] | r1 = *(0x0004c668);
0x0004c662 add r1, pc | r1 += pc;
0x0004c664 b.w 0x4c45c | return void (*0x4c45c)() ();
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c770).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c650 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_luint () | void jsonw_luint (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0004c650 mov r2, r1 | r2 = r1;
0x0004c652 ldr r1, [pc, 8] |
0x0004c654 add r1, pc | r1 = 0x98cb6;
0x0004c656 b.w 0x4c45c | return void (*0x4c45c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c758 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_luint_field () | void jsonw_luint_field (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0004c758 push {r3, r4, r5, lr} |
0x0004c75a mov r4, r0 | r4 = r0;
0x0004c75c mov r5, r2 | r5 = r2;
0x0004c75e bl 0x4c3ec | jsonw_name ();
0x0004c762 mov r1, r5 | r1 = r5;
0x0004c764 mov r0, r4 | r0 = r4;
0x0004c766 pop.w {r3, r4, r5, lr} |
0x0004c76a b.w 0x4c650 | return void (*0x4c650)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c5ec */
| #include <stdint.h>
|
; (fcn) sym.jsonw_null () | void jsonw_null (int16_t arg1) {
| r0 = arg1;
0x0004c5ec ldr r1, [pc, 4] | r1 = *(0x0004c5f4);
0x0004c5ee add r1, pc | r1 += pc;
0x0004c5f0 b.w 0x4c45c | return void (*0x4c45c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c7c0 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_null_field () | void jsonw_null_field (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0004c7c0 push {r4, lr} |
0x0004c7c2 mov r4, r0 | r4 = r0;
0x0004c7c4 bl 0x4c3ec | jsonw_name ();
0x0004c7c8 mov r0, r4 | r0 = r4;
0x0004c7ca pop.w {r4, lr} |
0x0004c7ce b.w 0x4c5ec | return void (*0x4c5ec)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c67c */
| #include <stdint.h>
|
; (fcn) sym.jsonw_s64 () | void jsonw_s64 (int16_t arg1) {
| r0 = arg1;
0x0004c67c ldr r1, [pc, 4] | r1 = *(0x0004c684);
0x0004c67e add r1, pc | r1 += pc;
0x0004c680 b.w 0x4c45c | return void (*0x4c45c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c7a4 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_s64_field () | void jsonw_s64_field (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0004c7a4 push {r4, r5, r6, lr} |
0x0004c7a6 mov r4, r0 | r4 = r0;
0x0004c7a8 mov r6, r2 | r6 = r2;
0x0004c7aa mov r5, r3 | r5 = r3;
0x0004c7ac bl 0x4c3ec | jsonw_name ();
0x0004c7b0 mov r2, r6 | r2 = r6;
0x0004c7b2 mov r3, r5 | r3 = r5;
0x0004c7b4 mov r0, r4 | r0 = r4;
0x0004c7b6 pop.w {r4, r5, r6, lr} |
0x0004c7ba b.w 0x4c67c | return void (*0x4c67c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c638 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_u64 () | void jsonw_u64 (int16_t arg1) {
| r0 = arg1;
0x0004c638 ldr r1, [pc, 4] | r1 = *(0x0004c640);
0x0004c63a add r1, pc | r1 += pc;
0x0004c63c b.w 0x4c45c | return void (*0x4c45c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c6f0 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_u64_field () | void jsonw_u64_field (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0004c6f0 push {r4, r5, r6, lr} |
0x0004c6f2 mov r4, r0 | r4 = r0;
0x0004c6f4 mov r6, r2 | r6 = r2;
0x0004c6f6 mov r5, r3 | r5 = r3;
0x0004c6f8 bl 0x4c3ec | jsonw_name ();
0x0004c6fc mov r2, r6 | r2 = r6;
0x0004c6fe mov r3, r5 | r3 = r5;
0x0004c700 mov r0, r4 | r0 = r4;
0x0004c702 pop.w {r4, r5, r6, lr} |
0x0004c706 b.w 0x4c638 | return void (*0x4c638)() ();
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c628).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c6d8 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_uint_field () | void jsonw_uint_field (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0004c6d8 push {r3, r4, r5, lr} |
0x0004c6da mov r4, r0 | r4 = r0;
0x0004c6dc mov r5, r2 | r5 = r2;
0x0004c6de bl 0x4c3ec | jsonw_name ();
0x0004c6e2 mov r1, r5 | r1 = r5;
0x0004c6e4 mov r0, r4 | r0 = r4;
0x0004c6e6 pop.w {r3, r4, r5, lr} |
0x0004c6ea b.w 0x4c628 | return void (*0x4c628)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c644 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_xint () | void jsonw_xint (int16_t arg1) {
| r0 = arg1;
0x0004c644 ldr r1, [pc, 4] | r1 = *(0x0004c64c);
0x0004c646 add r1, pc | r1 += pc;
0x0004c648 b.w 0x4c45c | return void (*0x4c45c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x4c70c */
| #include <stdint.h>
|
; (fcn) sym.jsonw_xint_field () | void jsonw_xint_field (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0004c70c push {r4, r5, r6, lr} |
0x0004c70e mov r4, r0 | r4 = r0;
0x0004c710 mov r6, r2 | r6 = r2;
0x0004c712 mov r5, r3 | r5 = r3;
0x0004c714 bl 0x4c3ec | jsonw_name ();
0x0004c718 mov r2, r6 | r2 = r6;
0x0004c71a mov r3, r5 | r3 = r5;
0x0004c71c mov r0, r4 | r0 = r4;
0x0004c71e pop.w {r4, r5, r6, lr} |
0x0004c722 b.w 0x4c644 | return void (*0x4c644)() ();
| }
[*] Function printf used 1 times ip.iproute2