[*] 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-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x3d344).
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-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x52344 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.jsonw_bool ()            | void jsonw_bool (int16_t arg1) {
                                         |     r0 = arg1;
    0x00052344 invalid                   |     goto label_0;
    0x00052346 ldr r2, [pc, 0x10]        |     
    0x00052348 add r2, pc                |     r2 = 0xa46a6;
                                         |     do {
    0x0005234a ldr r1, [pc, 0x10]        |         
    0x0005234c add r1, pc                |         r1 = 0xa46ae;
    0x0005234e b.w 0x521d4               |         void (*0x521d4)() ();
                                         | label_0:
    0x00052352 ldr r2, [pc, 0xc]         |         
    0x00052354 add r2, pc                |         r2 = 0xa46ba;
    0x00052356 b 0x5234a                 |         
                                         |     } while (1);
                                         | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x52418 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.jsonw_bool_field ()          | void jsonw_bool_field (int16_t arg1, int16_t arg2, int16_t arg3) {
                                             |     r0 = arg1;
                                             |     r1 = arg2;
                                             |     r2 = arg3;
    0x00052418 push {r3, r4, r5, lr}         |     
    0x0005241a mov r4, r0                    |     r4 = r0;
    0x0005241c mov r5, r2                    |     r5 = r2;
    0x0005241e bl 0x52164                    |     jsonw_name ();
    0x00052422 mov r1, r5                    |     r1 = r5;
    0x00052424 mov r0, r4                    |     r0 = r4;
    0x00052426 pop.w {r3, r4, r5, lr}        |     
    0x0005242a b.w 0x52344                   |     return void (*0x52344)() ();
                                             | }
    ; assembly                       | /* r2dec pseudo code output */
                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x52370 */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) sym.jsonw_float ()       | void jsonw_float (int16_t arg1) {
                                     |     r0 = arg1;
    0x00052370 ldr r1, [pc, 8]       |     r1 = *(0x0005237c);
    0x00052372 vmov r2, r3, d0       |     __asm ("vmov r2, r3, d0");
    0x00052376 add r1, pc            |     r1 += pc;
    0x00052378 b.w 0x521d4           |     return void (*0x521d4)() ();
                                     | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x52430 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.jsonw_float_field ()     | void jsonw_float_field (int16_t arg1, int16_t arg2) {
                                         |     r0 = arg1;
                                         |     r1 = arg2;
    0x00052430 push {r4, lr}             |     
    0x00052432 mov r4, r0                |     r4 = r0;
    0x00052434 vpush {d8}                |     __asm ("vpush {d8}");
    0x00052438 vmov.f64 d8, d0           |     __asm ("vmov.f64 d8, d0");
    0x0005243c bl 0x52164                |     jsonw_name ();
    0x00052440 vmov.f64 d0, d8           |     __asm ("vmov.f64 d0, d8");
    0x00052444 mov r0, r4                |     r0 = r4;
    0x00052446 vpop {d8}                 |     __asm ("vpop {d8}");
    0x0005244a pop.w {r4, lr}            |     
    0x0005244e b.w 0x52370               |     return void (*0x52370)() ();
                                         | }
    ; assembly                       | /* r2dec pseudo code output */
                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x52380 */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) sym.jsonw_hhu ()         | void jsonw_hhu (int16_t arg1, int16_t arg2) {
                                     |     r0 = arg1;
                                     |     r1 = arg2;
    0x00052380 mov r2, r1            |     r2 = r1;
    0x00052382 ldr r1, [pc, 8]       |     
    0x00052384 add r1, pc            |     r1 = 0xa4716;
    0x00052386 b.w 0x521d4           |     return void (*0x521d4)() ();
                                     | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x524a4 */
                                             | #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;
    0x000524a4 push {r3, r4, r5, lr}         |     
    0x000524a6 mov r4, r0                    |     r4 = r0;
    0x000524a8 mov r5, r2                    |     r5 = r2;
    0x000524aa bl 0x52164                    |     jsonw_name ();
    0x000524ae mov r1, r5                    |     r1 = r5;
    0x000524b0 mov r0, r4                    |     r0 = r4;
    0x000524b2 pop.w {r3, r4, r5, lr}        |     
    0x000524b6 b.w 0x52380                   |     return void (*0x52380)() ();
                                             | }
    ; assembly                       | /* r2dec pseudo code output */
                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x52390 */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) sym.jsonw_hu ()          | void jsonw_hu (int16_t arg1, int16_t arg2) {
                                     |     r0 = arg1;
                                     |     r1 = arg2;
    0x00052390 mov r2, r1            |     r2 = r1;
    0x00052392 ldr r1, [pc, 8]       |     
    0x00052394 add r1, pc            |     r1 = 0xa4736;
    0x00052396 b.w 0x521d4           |     return void (*0x521d4)() ();
                                     | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x524bc */
                                             | #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;
    0x000524bc push {r3, r4, r5, lr}         |     
    0x000524be mov r4, r0                    |     r4 = r0;
    0x000524c0 mov r5, r2                    |     r5 = r2;
    0x000524c2 bl 0x52164                    |     jsonw_name ();
    0x000524c6 mov r1, r5                    |     r1 = r5;
    0x000524c8 mov r0, r4                    |     r0 = r4;
    0x000524ca pop.w {r3, r4, r5, lr}        |     
    0x000524ce b.w 0x52390                   |     return void (*0x52390)() ();
                                             | }
    ; assembly                       | /* r2dec pseudo code output */
                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x523e4 */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) sym.jsonw_int ()         | void jsonw_int (int16_t arg1, int16_t arg2) {
                                     |     r0 = arg1;
                                     |     r1 = arg2;
    0x000523e4 mov r2, r1            |     r2 = r1;
    0x000523e6 ldr r1, [pc, 8]       |     
    0x000523e8 add r1, pc            |     r1 = 0xa47de;
    0x000523ea b.w 0x521d4           |     return void (*0x521d4)() ();
                                     | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x52508 */
                                             | #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;
    0x00052508 push {r3, r4, r5, lr}         |     
    0x0005250a mov r4, r0                    |     r4 = r0;
    0x0005250c mov r5, r2                    |     r5 = r2;
    0x0005250e bl 0x52164                    |     jsonw_name ();
    0x00052512 mov r1, r5                    |     r1 = r5;
    0x00052514 mov r0, r4                    |     r0 = r4;
    0x00052516 pop.w {r3, r4, r5, lr}        |     
    0x0005251a b.w 0x523e4                   |     return void (*0x523e4)() ();
                                             | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x523d8 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.jsonw_lluint ()          | void jsonw_lluint (int16_t arg1) {
                                         |     r0 = arg1;
    0x000523d8 ldr r1, [pc, 4]           |     r1 = *(0x000523e0);
    0x000523da add r1, pc                |     r1 += pc;
    0x000523dc b.w 0x521d4               |     return void (*0x521d4)() ();
                                         | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x524ec */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.jsonw_lluint_field ()        | void jsonw_lluint_field (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                             |     r0 = arg1;
                                             |     r1 = arg2;
                                             |     r2 = arg3;
                                             |     r3 = arg4;
    0x000524ec push {r4, r5, r6, lr}         |     
    0x000524ee mov r4, r0                    |     r4 = r0;
    0x000524f0 mov r6, r2                    |     r6 = r2;
    0x000524f2 mov r5, r3                    |     r5 = r3;
    0x000524f4 bl 0x52164                    |     jsonw_name ();
    0x000524f8 mov r2, r6                    |     r2 = r6;
    0x000524fa mov r3, r5                    |     r3 = r5;
    0x000524fc mov r0, r4                    |     r0 = r4;
    0x000524fe pop.w {r4, r5, r6, lr}        |     
    0x00052500 eors r0, r6                   |     r0 ^= r6;
    0x00052502 b.w 0x523d8                   |     return void (*0x523d8)() ();
                                             | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x523c8 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.jsonw_luint ()           | void jsonw_luint (int16_t arg1, int16_t arg2) {
                                         |     r0 = arg1;
                                         |     r1 = arg2;
    0x000523c8 mov r2, r1                |     r2 = r1;
    0x000523ca ldr r1, [pc, 8]           |     
    0x000523cc add r1, pc                |     r1 = 0xa47a6;
    0x000523ce b.w 0x521d4               |     return void (*0x521d4)() ();
                                         | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x524d4 */
                                             | #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;
    0x000524d4 push {r3, r4, r5, lr}         |     
    0x000524d6 mov r4, r0                    |     r4 = r0;
    0x000524d8 mov r5, r2                    |     r5 = r2;
    0x000524da bl 0x52164                    |     jsonw_name ();
    0x000524de mov r1, r5                    |     r1 = r5;
    0x000524e0 mov r0, r4                    |     r0 = r4;
    0x000524e2 pop.w {r3, r4, r5, lr}        |     
    0x000524e6 b.w 0x523c8                   |     return void (*0x523c8)() ();
                                             | }
    ; assembly                       | /* r2dec pseudo code output */
                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x52364 */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) sym.jsonw_null ()        | void jsonw_null (int16_t arg1) {
                                     |     r0 = arg1;
    0x00052364 ldr r1, [pc, 4]       |     r1 = *(0x0005236c);
    0x00052366 add r1, pc            |     r1 += pc;
    0x00052368 b.w 0x521d4           |     return void (*0x521d4)() ();
                                     | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x5253c */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.jsonw_null_field ()      | void jsonw_null_field (int16_t arg1, int16_t arg2) {
                                         |     r0 = arg1;
                                         |     r1 = arg2;
    0x0005253c push {r4, lr}             |     
    0x0005253e mov r4, r0                |     r4 = r0;
    0x00052540 bl 0x52164                |     jsonw_name ();
    0x00052544 mov r0, r4                |     r0 = r4;
    0x00052546 pop.w {r4, lr}            |     
    0x0005254a b.w 0x52364               |     return void (*0x52364)() ();
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x523f4 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.jsonw_s64 ()             | void jsonw_s64 (int16_t arg1) {
                                         |     r0 = arg1;
    0x000523f4 ldr r1, [pc, 4]           |     r1 = *(0x000523fc);
    0x000523f6 add r1, pc                |     r1 += pc;
    0x000523f8 b.w 0x521d4               |     return void (*0x521d4)() ();
                                         | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x52520 */
                                             | #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;
    0x00052520 push {r4, r5, r6, lr}         |     
    0x00052522 mov r4, r0                    |     r4 = r0;
    0x00052524 mov r6, r2                    |     r6 = r2;
    0x00052526 mov r5, r3                    |     r5 = r3;
    0x00052528 bl 0x52164                    |     jsonw_name ();
    0x0005252c mov r2, r6                    |     r2 = r6;
    0x0005252e mov r3, r5                    |     r3 = r5;
    0x00052530 mov r0, r4                    |     r0 = r4;
    0x00052532 pop.w {r4, r5, r6, lr}        |     
    0x00052536 b.w 0x523f4                   |     return void (*0x523f4)() ();
                                             | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x523b0 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.jsonw_u64 ()             | void jsonw_u64 (int16_t arg1) {
                                         |     r0 = arg1;
    0x000523b0 ldr r1, [pc, 4]           |     r1 = *(0x000523b8);
    0x000523b2 add r1, pc                |     r1 += pc;
    0x000523b4 b.w 0x521d4               |     return void (*0x521d4)() ();
                                         | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x5246c */
                                             | #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;
    0x0005246c push {r4, r5, r6, lr}         |     
    0x0005246e mov r4, r0                    |     r4 = r0;
    0x00052470 mov r6, r2                    |     r6 = r2;
    0x00052472 mov r5, r3                    |     r5 = r3;
    0x00052474 bl 0x52164                    |     jsonw_name ();
    0x00052478 mov r2, r6                    |     r2 = r6;
    0x0005247a mov r3, r5                    |     r3 = r5;
    0x0005247c mov r0, r4                    |     r0 = r4;
    0x0005247e pop.w {r4, r5, r6, lr}        |     
    0x00052482 b.w 0x523b0                   |     return void (*0x523b0)() ();
                                             | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x523a0 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.jsonw_uint ()            | void jsonw_uint (int16_t arg1, int16_t arg2) {
                                         |     r0 = arg1;
                                         |     r1 = arg2;
    0x000523a0 mov r2, r1                |     r2 = r1;
    0x000523a2 ldr r1, [pc, 8]           |     
    0x000523a4 add r1, pc                |     r1 = 0xa4756;
    0x000523a6 b.w 0x521d4               |     return void (*0x521d4)() ();
                                         | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x52454 */
                                             | #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;
    0x00052454 push {r3, r4, r5, lr}         |     
    0x00052456 mov r4, r0                    |     r4 = r0;
    0x00052458 mov r5, r2                    |     r5 = r2;
    0x0005245a bl 0x52164                    |     jsonw_name ();
    0x0005245e mov r1, r5                    |     r1 = r5;
    0x00052460 mov r0, r4                    |     r0 = r4;
    0x00052462 pop.w {r3, r4, r5, lr}        |     
    0x00052466 b.w 0x523a0                   |     return void (*0x523a0)() ();
                                             | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x523bc */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.jsonw_xint ()            | void jsonw_xint (int16_t arg1) {
                                         |     r0 = arg1;
    0x000523bc ldr r1, [pc, 4]           |     r1 = *(0x000523c4);
    0x000523be add r1, pc                |     r1 += pc;
    0x000523c0 b.w 0x521d4               |     return void (*0x521d4)() ();
                                         | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x52488 */
                                             | #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;
    0x00052488 push {r4, r5, r6, lr}         |     
    0x0005248a mov r4, r0                    |     r4 = r0;
    0x0005248c mov r6, r2                    |     r6 = r2;
    0x0005248e mov r5, r3                    |     r5 = r3;
    0x00052490 bl 0x52164                    |     jsonw_name ();
    0x00052494 mov r2, r6                    |     r2 = r6;
    0x00052496 mov r3, r5                    |     r3 = r5;
    0x00052498 mov r0, r4                    |     r0 = r4;
    0x0005249a pop.w {r4, r5, r6, lr}        |     
    0x0005249e b.w 0x523bc                   |     return void (*0x523bc)() ();
                                             | }

[*] Function printf used 1 times ip.iproute2