[*] Binary protection state of ip.iproute2

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


[*] Function fprintf tear down of ip.iproute2

    ; 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 @ 0x4d094 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.print_color_0xhex ()                             | void print_color_0xhex (int16_t arg_78h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_70h;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_8h_2;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_54h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0004d094 push.w {r4, r5, r6, r7, r8, sl, fp, lr}           |     
    0x0004d098 mov r7, r2                                        |     r7 = r2;
    0x0004d09a ldr r2, [pc, 0xac]                                |     
    0x0004d09c mov r6, r3                                        |     r6 = r3;
    0x0004d09e sub sp, 0x58                                      |     
    0x0004d0a0 mov r4, r0                                        |     r4 = r0;
    0x0004d0a2 ldr r3, [pc, 0xa8]                                |     r3 = *(0x4d14e);
    0x0004d0a4 mov r8, r1                                        |     r8 = r1;
    0x0004d0a6 add r2, pc                                        |     r2 = 0x9a1f4;
    0x0004d0a8 ldr r5, [pc, 0xa4]                                |     
    0x0004d0aa ldrd sl, fp, [sp, 0x78]                           |     __asm ("ldrd sl, fp, [arg_78h]");
    0x0004d0ae ldr r3, [r2, r3]                                  |     
    0x0004d0b0 add r5, pc                                        |     r5 = 0x9a204;
    0x0004d0b2 ldr r3, [r3]                                      |     r3 = imp._ITM_deregisterTMCloneTable;
    0x0004d0b4 str r3, [sp, 0x54]                                |     var_54h = r3;
    0x0004d0b6 mov.w r3, 0                                       |     r3 = 0;
    0x0004d0ba bl 0x4c8c4                                        |     r0 = is_json_context ();
                                                                 |     if (r0 != 0) {
    0x0004d0be cbz r0, 0x4d0c6                                   |         
    0x0004d0c0 tst.w r4, 6                                       |         
                                                                 |         if ((r4 & 6) != 0) {
    0x0004d0c4 bne 0x4d11a                                       |             goto label_1;
                                                                 |         }
                                                                 |     }
    0x0004d0c6 bl 0x4c8c4                                        |     r0 = is_json_context ();
    0x0004d0ca cbz r0, 0x4d0e8                                   |     
                                                                 |     while ((r4 & 5) == 0) {
                                                                 | label_0:
    0x0004d0cc ldr r2, [pc, 0x84]                                |         
    0x0004d0ce ldr r3, [pc, 0x7c]                                |         r3 = *(0x4d14e);
    0x0004d0d0 add r2, pc                                        |         r2 = 0x9a228;
    0x0004d0d2 ldr r3, [r2, r3]                                  |         r3 = imp._ITM_deregisterTMCloneTable;
    0x0004d0d4 ldr r2, [r3]                                      |         r2 = imp._ITM_deregisterTMCloneTable;
    0x0004d0d6 ldr r3, [sp, 0x54]                                |         r3 = var_54h;
    0x0004d0d8 eors r2, r3                                       |         r2 ^= r3;
    0x0004d0da mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0004d0de bne 0x4d142                                       |             goto label_2;
                                                                 |         }
    0x0004d0e0 movs r0, 0                                        |         r0 = 0;
    0x0004d0e2 add sp, 0x58                                      |         
    0x0004d0e4 pop.w {r4, r5, r6, r7, r8, sl, fp, pc}            |         
    0x0004d0e8 tst.w r4, 5                                       |         
    0x0004d0ec beq 0x4d0cc                                       |         
                                                                 |     }
    0x0004d0ee ldr r2, [pc, 0x68]                                |     
    0x0004d0f0 ldr r3, [pc, 0x58]                                |     r3 = *(0x4d14c);
    0x0004d0f2 add r2, pc                                        |     r2 = 0x9a250;
    0x0004d0f4 ldr r3, [r2, r3]                                  |     r3 = imp._ITM_deregisterTMCloneTable;
    0x0004d0f6 ldr r2, [r3]                                      |     r2 = imp._ITM_deregisterTMCloneTable;
    0x0004d0f8 ldr r3, [sp, 0x54]                                |     r3 = var_54h;
    0x0004d0fa eors r2, r3                                       |     r2 ^= r3;
    0x0004d0fc mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 == r3) {
    0x0004d100 bne 0x4d142                                       |         
    0x0004d102 ldr r3, [pc, 0x58]                                |         r3 = *(0x4d15e);
    0x0004d104 mov r2, r6                                        |         r2 = r6;
    0x0004d106 mov r1, r8                                        |         r1 = r8;
    0x0004d108 ldr r3, [r5, r3]                                  |         r3 = *((r5 + r3));
    0x0004d10a strd sl, fp, [sp, 0x78]                           |         __asm ("strd sl, fp, [var_70hx78]");
    0x0004d10e ldr r0, [r3]                                      |         r0 = *(0x4d15e);
    0x0004d110 add sp, 0x58                                      |         
    0x0004d112 pop.w {r4, r5, r6, r7, r8, sl, fp, lr}            |         
    0x0004d116 b.w 0x4d604                                       |         void (*0x4d604)() ();
                                                                 | label_1:
    0x0004d11a ldr r1, [pc, 0x44]                                |         
    0x0004d11c movs r3, 0x40                                     |         r3 = 0x40;
    0x0004d11e add r4, sp, 0x14                                  |         r4 += var_14h;
    0x0004d120 movs r2, 1                                        |         r2 = 1;
    0x0004d122 mov r0, r4                                        |         r0 = r4;
    0x0004d124 strd sl, fp, [sp, 8]                              |         __asm ("strd sl, fp, [var_8h]");
    0x0004d128 add r1, pc                                        |         r1 = 0x9a28e;
    0x0004d12a str r1, [sp]                                      |         *(sp) = r1;
    0x0004d12c mov r1, r3                                        |         r1 = r3;
    0x0004d12e blx 0x8e10                                        |         fcn_00008e10 ();
    0x0004d132 movs r3, 0                                        |         r3 = 0;
    0x0004d134 mov r2, r7                                        |         r2 = r7;
    0x0004d136 movs r1, 6                                        |         r1 = 6;
    0x0004d138 str r4, [sp]                                      |         *(sp) = r4;
    0x0004d13a movs r0, 2                                        |         r0 = 2;
    0x0004d13c bl 0x4ce6c                                        |         print_color_string ();
    0x0004d140 b 0x4d0cc                                         |         goto label_0;
                                                                 |     }
                                                                 | label_2:
    0x0004d142 blx 0x87f8                                        |     fcn_000087f8 ();
    0x0004d146 nop                                               |     
    0x0004d148 lsrs r2, r2, 0x10                                 |     r2 >>= 0x10;
    0x0004d14a movs r3, r0                                       |     r3 = r0;
    0x0004d14c lsls r4, r0, 0xb                                  |     r4 = r0 << 0xb;
    0x0004d14e movs r0, r0                                       |     
    0x0004d150 lsrs r0, r1, 0x10                                 |     r0 = r1 >> 0x10;
    0x0004d152 movs r3, r0                                       |     r3 = r0;
    0x0004d154 lsrs r0, r5, 0xf                                  |     r0 = r5 >> 0xf;
    0x0004d156 movs r3, r0                                       |     r3 = r0;
    0x0004d158 lsrs r6, r0, 0xf                                  |     r6 = r0 >> 0xf;
    0x0004d15a movs r3, r0                                       |     r3 = r0;
    0x0004d15c lsls r0, r4, 0xc                                  |     r0 = r4 << 0xc;
    0x0004d15e movs r0, r0                                       |     
    0x0004d160 stm r5!, {r7}                                     |     *(r5!) = r7;
    0x0004d162 movs r0, r0                                       |     
                                                                 | }
    ; 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 @ 0x4cf74 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.print_color_bool ()                          | void print_color_bool (int16_t arg_20h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
                                                             |     if (? >= ?) {
    0x0004cf74 ldrbmi lr, [r0, sp, lsr 18]!                  |         
                                                             |     }
    0x0004cf78 mov r4, r0                                    |     r4 = r0;
    0x0004cf7a ldrb.w r8, [sp, 0x20]                         |     r8 = *(arg_20h);
    0x0004cf7e mov r7, r1                                    |     r7 = r1;
    0x0004cf80 mov sb, r2                                    |     sb = r2;
    0x0004cf82 mov r6, r3                                    |     r6 = r3;
    0x0004cf84 ldr r5, [pc, 0x68]                            |     
    0x0004cf86 add r5, pc                                    |     r5 = 0x99f7a;
    0x0004cf88 cmp.w r8, 0                                   |     
                                                             |     if (r8 != 0) {
    0x0004cf8c bne 0x4cfdc                                   |         goto label_2;
                                                             |     }
    0x0004cf8e ldr.w sl, [pc, 0x64]                          |     sl = *(0x0004cff4);
    0x0004cf92 add sl, pc                                    |     sl += pc;
                                                             | label_1:
    0x0004cf94 bl 0x4c8c4                                    |     r0 = is_json_context ();
                                                             |     if (r0 == 0) {
    0x0004cf98 cbz r0, 0x4cfba                               |         goto label_3;
                                                             |     }
    0x0004cf9a tst.w r4, 6                                   |     
                                                             |     if ((r4 & 6) == 0) {
    0x0004cf9e beq 0x4cfba                                   |         goto label_3;
                                                             |     }
    0x0004cfa0 ldr r3, [pc, 0x54]                            |     
    0x0004cfa2 add r3, pc                                    |     r3 = 0x99f9e;
    0x0004cfa4 ldr r0, [r3]                                  |     r0 = imp._ITM_deregisterTMCloneTable;
    0x0004cfa6 cmp.w sb, 0                                   |     
                                                             |     if (sb == 0) {
    0x0004cfaa beq 0x4cfe4                                   |         goto label_4;
                                                             |     }
    0x0004cfac mov r2, r8                                    |     r2 = r8;
    0x0004cfae mov r1, sb                                    |     r1 = sb;
    0x0004cfb0 bl 0x4c6a0                                    |     jsonw_bool_field ();
                                                             |     do {
                                                             | label_0:
    0x0004cfb4 movs r0, 0                                    |         r0 = 0;
    0x0004cfb6 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_3:
    0x0004cfba bl 0x4c8c4                                    |         r0 = is_json_context ();
    0x0004cfbe cmp r0, 0                                     |         
    0x0004cfc0 bne 0x4cfb4                                   |         
                                                             |     } while (r0 != 0);
    0x0004cfc2 tst.w r4, 5                                   |     
                                                             |     if ((r4 & 5) == 0) {
    0x0004cfc6 beq 0x4cfb4                                   |         goto label_0;
                                                             |     }
    0x0004cfc8 ldr r0, [pc, 0x30]                            |     
    0x0004cfca mov r3, sl                                    |     r3 = sl;
    0x0004cfcc mov r2, r6                                    |     r2 = r6;
    0x0004cfce mov r1, r7                                    |     r1 = r7;
    0x0004cfd0 ldr r0, [r5, r0]                              |     r0 = *((r5 + r0));
    0x0004cfd2 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x0004cfd6 ldr r0, [r0]                                  |     r0 = *(0x4cffc);
    0x0004cfd8 b.w 0x4d604                                   |     void (*0x4d604)() ();
                                                             | label_2:
    0x0004cfdc ldr.w sl, [pc, 0x20]                          |     
    0x0004cfe0 add sl, pc                                    |     sl = 0x99fe4;
    0x0004cfe2 b 0x4cf94                                     |     goto label_1;
                                                             | label_4:
    0x0004cfe4 mov r1, r8                                    |     r1 = r8;
    0x0004cfe6 bl 0x4c5cc                                    |     jsonw_bool ();
    0x0004cfea movs r0, 0                                    |     r0 = 0;
    0x0004cfec pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |     
                                                             | }
    ; 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 @ 0x4cd70 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.print_color_float ()                     | void print_color_float (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
                                                         |     r3 = arg4;
    0x0004cd70 push.w {r4, r5, r6, r7, r8, lr}           |     
    0x0004cd74 mov r8, r0                                |     r8 = r0;
    0x0004cd76 ldr r5, [pc, 0x80]                        |     
    0x0004cd78 mov r7, r1                                |     r7 = r1;
    0x0004cd7a mov r6, r2                                |     r6 = r2;
    0x0004cd7c mov r4, r3                                |     r4 = r3;
    0x0004cd7e vpush {d8}                                |     __asm ("vpush {d8}");
    0x0004cd82 sub sp, 8                                 |     
    0x0004cd84 vmov.f64 d8, d0                           |     __asm ("vmov.f64 d8, d0");
    0x0004cd88 add r5, pc                                |     r5 = 0x99b86;
    0x0004cd8a bl 0x4c8c4                                |     r0 = is_json_context ();
                                                         |     if (r0 == 0) {
    0x0004cd8e cbz r0, 0x4cdb4                           |         goto label_0;
                                                         |     }
    0x0004cd90 tst.w r8, 6                               |     
                                                         |     if ((r8 & 6) == 0) {
    0x0004cd94 beq 0x4cdb4                               |         goto label_0;
                                                         |     }
    0x0004cd96 ldr r3, [pc, 0x64]                        |     
    0x0004cd98 vmov.f64 d0, d8                           |     __asm ("vmov.f64 d0, d8");
    0x0004cd9c add r3, pc                                |     r3 = 0x99b9e;
    0x0004cd9e ldr r0, [r3]                              |     r0 = imp._ITM_deregisterTMCloneTable;
                                                         |     if (r6 == 0) {
    0x0004cda0 cbz r6, 0x4cde8                           |         goto label_1;
                                                         |     }
    0x0004cda2 mov r1, r6                                |     r1 = r6;
    0x0004cda4 bl 0x4c6b8                                |     jsonw_float_field ();
    0x0004cda8 movs r0, 0                                |     r0 = 0;
                                                         |     do {
    0x0004cdaa add sp, 8                                 |         
    0x0004cdac vpop {d8}                                 |         __asm ("vpop {d8}");
    0x0004cdb0 pop.w {r4, r5, r6, r7, r8, pc}            |         
                                                         | label_0:
    0x0004cdb4 bl 0x4c8c4                                |         r0 = is_json_context ();
                                                         |         if (r0 != 0) {
    0x0004cdb8 cbnz r0, 0x4cddc                          |             goto label_2;
                                                         |         }
    0x0004cdba ands r0, r8, 5                            |         r0 = r8 & 5;
    0x0004cdbe beq 0x4cdaa                               |         
                                                         |     } while (r0 == r8);
    0x0004cdc0 ldr r3, [pc, 0x3c]                        |     r3 = *(0x4ce00);
    0x0004cdc2 mov r2, r4                                |     r2 = r4;
    0x0004cdc4 mov r1, r7                                |     r1 = r7;
    0x0004cdc6 ldr r3, [r5, r3]                          |     r3 = *((r5 + r3));
    0x0004cdc8 vstr d8, [sp]                             |     __asm ("vstr d8, [sp]");
    0x0004cdcc ldr r0, [r3]                              |     r0 = *(0x4ce00);
    0x0004cdce bl 0x4d604                                |     color_fprintf ()
    0x0004cdd2 add sp, 8                                 |     
    0x0004cdd4 vpop {d8}                                 |     __asm ("vpop {d8}");
    0x0004cdd8 pop.w {r4, r5, r6, r7, r8, pc}            |     
                                                         | label_2:
    0x0004cddc movs r0, 0                                |     r0 = 0;
    0x0004cdde add sp, 8                                 |     
    0x0004cde0 vpop {d8}                                 |     __asm ("vpop {d8}");
    0x0004cde4 pop.w {r4, r5, r6, r7, r8, pc}            |     
                                                         | label_1:
    0x0004cde8 bl 0x4c5f8                                |     jsonw_float ();
    0x0004cdec mov r0, r6                                |     r0 = r6;
    0x0004cdee add sp, 8                                 |     
    0x0004cdf0 vpop {d8}                                 |     __asm ("vpop {d8}");
    0x0004cdf4 pop.w {r4, r5, r6, r7, r8, pc}            |     
                                                         | }
    ; 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 @ 0x4d164 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.print_color_hex ()                           | void print_color_hex (int16_t arg_338h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_ch;
                                                             |     int16_t var_4ch;
                                                             |     int16_t var_70h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x0004d164 push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x0004d168 mov sb, r2                                    |     sb = r2;
    0x0004d16a ldr r2, [pc, 0xbc]                            |     
    0x0004d16c mov r6, r3                                    |     r6 = r3;
    0x0004d16e sub sp, 0x54                                  |     
    0x0004d170 mov r4, r0                                    |     r4 = r0;
    0x0004d172 ldr r3, [pc, 0xb8]                            |     r3 = *(0x4d22e);
    0x0004d174 mov r7, r1                                    |     r7 = r1;
    0x0004d176 add r2, pc                                    |     r2 = 0x9a3a4;
    0x0004d178 ldr r5, [pc, 0xb4]                            |     
    0x0004d17a ldr.w r8, [sp, 0x70]                          |     r8 = var_70h;
    0x0004d17e ldr r3, [r2, r3]                              |     
    0x0004d180 add r5, pc                                    |     r5 = 0x9a3b4;
    0x0004d182 ldr r3, [r3]                                  |     r3 = imp._ITM_deregisterTMCloneTable;
    0x0004d184 str r3, [sp, 0x4c]                            |     var_4ch = r3;
    0x0004d186 mov.w r3, 0                                   |     r3 = 0;
    0x0004d18a bl 0x4c8c4                                    |     r0 = is_json_context ();
                                                             |     if (r0 != 0) {
    0x0004d18e cbz r0, 0x4d196                               |         
    0x0004d190 tst.w r4, 6                                   |         
                                                             |         if ((r4 & 6) != 0) {
    0x0004d194 bne 0x4d1e8                                   |             goto label_1;
                                                             |         }
                                                             |     }
    0x0004d196 bl 0x4c8c4                                    |     r0 = is_json_context ();
    0x0004d19a cbz r0, 0x4d1b8                               |     
                                                             |     while ((r4 & 5) == 0) {
                                                             | label_0:
    0x0004d19c ldr r2, [pc, 0x94]                            |         
    0x0004d19e ldr r3, [pc, 0x8c]                            |         r3 = *(0x4d22e);
    0x0004d1a0 add r2, pc                                    |         r2 = 0x9a3d8;
    0x0004d1a2 ldr r3, [r2, r3]                              |         r3 = imp._ITM_deregisterTMCloneTable;
    0x0004d1a4 ldr r2, [r3]                                  |         r2 = imp._ITM_deregisterTMCloneTable;
    0x0004d1a6 ldr r3, [sp, 0x4c]                            |         r3 = var_4ch;
    0x0004d1a8 eors r2, r3                                   |         r2 ^= r3;
    0x0004d1aa mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0004d1ae bne 0x4d222                                   |             goto label_2;
                                                             |         }
    0x0004d1b0 movs r0, 0                                    |         r0 = 0;
    0x0004d1b2 add sp, 0x54                                  |         
    0x0004d1b4 pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
    0x0004d1b8 tst.w r4, 5                                   |         
    0x0004d1bc beq 0x4d19c                                   |         
                                                             |     }
    0x0004d1be ldr r2, [pc, 0x78]                            |     
    0x0004d1c0 ldr r3, [pc, 0x68]                            |     r3 = *(0x4d22c);
    0x0004d1c2 add r2, pc                                    |     r2 = 0x9a400;
    0x0004d1c4 ldr r3, [r2, r3]                              |     r3 = imp._ITM_deregisterTMCloneTable;
    0x0004d1c6 ldr r2, [r3]                                  |     r2 = imp._ITM_deregisterTMCloneTable;
    0x0004d1c8 ldr r3, [sp, 0x4c]                            |     r3 = var_4ch;
    0x0004d1ca eors r2, r3                                   |     r2 ^= r3;
    0x0004d1cc mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 == r3) {
    0x0004d1d0 bne 0x4d222                                   |         
    0x0004d1d2 ldr r0, [pc, 0x68]                            |         
    0x0004d1d4 mov r3, r8                                    |         r3 = r8;
    0x0004d1d6 mov r2, r6                                    |         r2 = r6;
    0x0004d1d8 mov r1, r7                                    |         r1 = r7;
    0x0004d1da ldr r0, [r5, r0]                              |         r0 = *((r5 + r0));
    0x0004d1dc ldr r0, [r0]                                  |         r0 = *(0x4d23e);
    0x0004d1de add sp, 0x54                                  |         
    0x0004d1e0 pop.w {r4, r5, r6, r7, r8, sb, lr}            |         
    0x0004d1e4 b.w 0x4d604                                   |         void (*0x4d604)() ();
                                                             | label_1:
    0x0004d1e8 ldr r2, [pc, 0x54]                            |         
    0x0004d1ea add r4, sp, 0xc                               |         r4 += var_ch;
    0x0004d1ec movs r3, 0x40                                 |         r3 = 0x40;
    0x0004d1ee mov r0, r4                                    |         r0 = r4;
    0x0004d1f0 mov r1, r3                                    |         r1 = r3;
    0x0004d1f2 add r2, pc                                    |         r2 = 0x9a436;
    0x0004d1f4 strd r2, r8, [sp]                             |         __asm ("strd r2, r8, [sp]");
    0x0004d1f8 movs r2, 1                                    |         r2 = 1;
    0x0004d1fa blx 0x8e10                                    |         fcn_00008e10 ();
    0x0004d1fe cmp.w sb, 0                                   |         
                                                             |         if (sb != 0) {
    0x0004d202 beq 0x4d214                                   |             
    0x0004d204 ldr r3, [pc, 0x3c]                            |             
    0x0004d206 mov r2, r4                                    |             r2 = r4;
    0x0004d208 mov r1, sb                                    |             r1 = sb;
    0x0004d20a add r3, pc                                    |             r3 = 0x9a452;
    0x0004d20c ldr r0, [r3]                                  |             r0 = imp._ITM_deregisterTMCloneTable;
    0x0004d20e bl 0x4c688                                    |             jsonw_string_field ();
    0x0004d212 b 0x4d19c                                     |             goto label_0;
                                                             |         }
    0x0004d214 ldr r3, [pc, 0x30]                            |         
    0x0004d216 mov r1, r4                                    |         r1 = r4;
    0x0004d218 add r3, pc                                    |         r3 = 0x9a464;
    0x0004d21a ldr r0, [r3]                                  |         r0 = imp._ITM_deregisterTMCloneTable;
    0x0004d21c bl 0x4c5ac                                    |         jsonw_string ();
    0x0004d220 b 0x4d19c                                     |         goto label_0;
                                                             |     }
                                                             | label_2:
    0x0004d222 blx 0x87f8                                    |     fcn_000087f8 ();
    0x0004d226 nop                                           |     
    0x0004d228 lsrs r2, r0, 0xd                              |     r2 = r0 >> 0xd;
    0x0004d22a movs r3, r0                                   |     r3 = r0;
    0x0004d22c lsls r4, r0, 0xb                              |     r4 = r0 << 0xb;
    0x0004d22e movs r0, r0                                   |     
    0x0004d230 lsrs r0, r7, 0xc                              |     r0 = r7 >> 0xc;
    0x0004d232 movs r3, r0                                   |     r3 = r0;
    0x0004d234 lsrs r0, r3, 0xc                              |     r0 = r3 >> 0xc;
    0x0004d236 movs r3, r0                                   |     r3 = r0;
    0x0004d238 lsrs r6, r6, 0xb                              |     r6 >>= 0xb;
    0x0004d23a movs r3, r0                                   |     r3 = r0;
    0x0004d23c lsls r0, r4, 0xc                              |     r0 = r4 << 0xc;
    0x0004d23e movs r0, r0                                   |     
    0x0004d240 ldr r0, [sp, 0x338]                           |     r0 = *(arg_338h);
    0x0004d242 movs r0, r0                                   |     
    0x0004d244 strh r6, [r3, 0x30]                           |     *((r3 + 0x30)) = r6;
    0x0004d246 movs r7, r0                                   |     r7 = r0;
    0x0004d248 strh r0, [r2, 0x30]                           |     *((r2 + 0x30)) = r0;
    0x0004d24a movs r7, r0                                   |     r7 = r0;
                                                             | }
    ; 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 @ 0x4cab8 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.print_color_hhu ()                           | void print_color_hhu (int16_t arg_20h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
                                                             |     if (? >= ?) {
    0x0004cab8 ldrbmi lr, [r0, sp, lsr 18]!                  |         
                                                             |     }
    0x0004cabc mov r4, r0                                    |     r4 = r0;
    0x0004cabe ldr r6, [pc, 0x60]                            |     
    0x0004cac0 mov r7, r1                                    |     r7 = r1;
    0x0004cac2 mov sb, r2                                    |     sb = r2;
    0x0004cac4 mov r5, r3                                    |     r5 = r3;
    0x0004cac6 ldrb.w r8, [sp, 0x20]                         |     r8 = *(arg_20h);
    0x0004caca add r6, pc                                    |     r6 = 0x995f0;
    0x0004cacc bl 0x4c8c4                                    |     r0 = is_json_context ();
                                                             |     if (r0 == 0) {
    0x0004cad0 cbz r0, 0x4caf2                               |         goto label_1;
                                                             |     }
    0x0004cad2 tst.w r4, 6                                   |     
                                                             |     if ((r4 & 6) == 0) {
    0x0004cad6 beq 0x4caf2                                   |         goto label_1;
                                                             |     }
    0x0004cad8 ldr r3, [pc, 0x48]                            |     
    0x0004cada add r3, pc                                    |     r3 = 0x99602;
    0x0004cadc ldr r0, [r3]                                  |     r0 = imp._ITM_deregisterTMCloneTable;
    0x0004cade cmp.w sb, 0                                   |     
                                                             |     if (sb == 0) {
    0x0004cae2 beq 0x4cb14                                   |         goto label_2;
                                                             |     }
    0x0004cae4 mov r2, r8                                    |     r2 = r8;
    0x0004cae6 mov r1, sb                                    |     r1 = sb;
    0x0004cae8 bl 0x4c728                                    |     jsonw_hhu_field ();
                                                             |     do {
                                                             | label_0:
    0x0004caec movs r0, 0                                    |         r0 = 0;
    0x0004caee pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_1:
    0x0004caf2 bl 0x4c8c4                                    |         r0 = is_json_context ();
    0x0004caf6 cmp r0, 0                                     |         
    0x0004caf8 bne 0x4caec                                   |         
                                                             |     } while (r0 != 0);
    0x0004cafa tst.w r4, 5                                   |     
                                                             |     if ((r4 & 5) == 0) {
    0x0004cafe beq 0x4caec                                   |         goto label_0;
                                                             |     }
    0x0004cb00 ldr r0, [pc, 0x24]                            |     
    0x0004cb02 mov r3, r8                                    |     r3 = r8;
    0x0004cb04 mov r2, r5                                    |     r2 = r5;
    0x0004cb06 mov r1, r7                                    |     r1 = r7;
    0x0004cb08 ldr r0, [r6, r0]                              |     r0 = *((r6 + r0));
    0x0004cb0a pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x0004cb0e ldr r0, [r0]                                  |     r0 = *(0x4cb28);
    0x0004cb10 b.w 0x4d604                                   |     void (*0x4d604)() ();
                                                             | label_2:
    0x0004cb14 mov r1, r8                                    |     r1 = r8;
    0x0004cb16 bl 0x4c608                                    |     jsonw_hhu ();
    0x0004cb1a movs r0, 0                                    |     r0 = 0;
    0x0004cb1c pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |     
                                                             | }
    ; 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 @ 0x4cb2c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.print_color_hu ()                                | void print_color_hu (int16_t arg_20h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0004cb2c push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0004cb30 mov r4, r0                                        |     r4 = r0;
    0x0004cb32 ldr r6, [pc, 0x60]                                |     
    0x0004cb34 mov r7, r1                                        |     r7 = r1;
    0x0004cb36 mov sb, r2                                        |     sb = r2;
    0x0004cb38 mov r5, r3                                        |     r5 = r3;
    0x0004cb3a ldrh.w r8, [sp, 0x20]                             |     r8 = *(arg_20h);
    0x0004cb3e add r6, pc                                        |     r6 = 0x996d8;
    0x0004cb40 bl 0x4c8c4                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x0004cb44 cbz r0, 0x4cb66                                   |         goto label_1;
                                                                 |     }
    0x0004cb46 tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x0004cb4a beq 0x4cb66                                       |         goto label_1;
                                                                 |     }
    0x0004cb4c ldr r3, [pc, 0x48]                                |     
    0x0004cb4e add r3, pc                                        |     r3 = 0x996ea;
    0x0004cb50 ldr r0, [r3]                                      |     r0 = imp._ITM_deregisterTMCloneTable;
    0x0004cb52 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x0004cb56 beq 0x4cb88                                       |         goto label_2;
                                                                 |     }
    0x0004cb58 mov r2, r8                                        |     r2 = r8;
    0x0004cb5a mov r1, sb                                        |     r1 = sb;
    0x0004cb5c bl 0x4c740                                        |     jsonw_hu_field ();
                                                                 |     do {
                                                                 | label_0:
    0x0004cb60 movs r0, 0                                        |         r0 = 0;
    0x0004cb62 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_1:
    0x0004cb66 bl 0x4c8c4                                        |         r0 = is_json_context ();
    0x0004cb6a cmp r0, 0                                         |         
    0x0004cb6c bne 0x4cb60                                       |         
                                                                 |     } while (r0 != 0);
    0x0004cb6e tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x0004cb72 beq 0x4cb60                                       |         goto label_0;
                                                                 |     }
    0x0004cb74 ldr r0, [pc, 0x24]                                |     
    0x0004cb76 mov r3, r8                                        |     r3 = r8;
    0x0004cb78 mov r2, r5                                        |     r2 = r5;
    0x0004cb7a mov r1, r7                                        |     r1 = r7;
    0x0004cb7c ldr r0, [r6, r0]                                  |     r0 = *((r6 + r0));
    0x0004cb7e pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x0004cb82 ldr r0, [r0]                                      |     r0 = *(0x4cb9c);
    0x0004cb84 b.w 0x4d604                                       |     void (*0x4d604)() ();
                                                                 | label_2:
    0x0004cb88 mov r1, r8                                        |     r1 = r8;
    0x0004cb8a bl 0x4c618                                        |     jsonw_hu ();
    0x0004cb8e movs r0, 0                                        |     r0 = 0;
    0x0004cb90 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |     
                                                                 | }
    ; 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 @ 0x4c9d0 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.print_color_int ()                               | void print_color_int (int16_t arg_20h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0004c9d0 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0004c9d4 mov r4, r0                                        |     r4 = r0;
    0x0004c9d6 ldr r6, [pc, 0x60]                                |     
    0x0004c9d8 mov r7, r1                                        |     r7 = r1;
    0x0004c9da mov sb, r2                                        |     sb = r2;
    0x0004c9dc mov r5, r3                                        |     r5 = r3;
    0x0004c9de ldr.w r8, [sp, 0x20]                              |     r8 = *(arg_20h);
    0x0004c9e2 add r6, pc                                        |     r6 = 0x99420;
    0x0004c9e4 bl 0x4c8c4                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x0004c9e8 cbz r0, 0x4ca0a                                   |         goto label_1;
                                                                 |     }
    0x0004c9ea tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x0004c9ee beq 0x4ca0a                                       |         goto label_1;
                                                                 |     }
    0x0004c9f0 ldr r3, [pc, 0x48]                                |     
    0x0004c9f2 add r3, pc                                        |     r3 = 0x99432;
    0x0004c9f4 ldr r0, [r3]                                      |     r0 = imp._ITM_deregisterTMCloneTable;
    0x0004c9f6 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x0004c9fa beq 0x4ca2c                                       |         goto label_2;
                                                                 |     }
    0x0004c9fc mov r2, r8                                        |     r2 = r8;
    0x0004c9fe mov r1, sb                                        |     r1 = sb;
    0x0004ca00 bl 0x4c78c                                        |     jsonw_int_field ();
                                                                 |     do {
                                                                 | label_0:
    0x0004ca04 movs r0, 0                                        |         r0 = 0;
    0x0004ca06 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_1:
    0x0004ca0a bl 0x4c8c4                                        |         r0 = is_json_context ();
    0x0004ca0e cmp r0, 0                                         |         
    0x0004ca10 bne 0x4ca04                                       |         
                                                                 |     } while (r0 != 0);
    0x0004ca12 tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x0004ca16 beq 0x4ca04                                       |         goto label_0;
                                                                 |     }
    0x0004ca18 ldr r0, [pc, 0x24]                                |     
    0x0004ca1a mov r3, r8                                        |     r3 = r8;
    0x0004ca1c mov r2, r5                                        |     r2 = r5;
    0x0004ca1e mov r1, r7                                        |     r1 = r7;
    0x0004ca20 ldr r0, [r6, r0]                                  |     r0 = *((r6 + r0));
    0x0004ca22 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x0004ca26 ldr r0, [r0]                                      |     r0 = *(0x4ca40);
    0x0004ca28 b.w 0x4d604                                       |     void (*0x4d604)() ();
                                                                 | label_2:
    0x0004ca2c mov r1, r8                                        |     r1 = r8;
    0x0004ca2e bl 0x4c66c                                        |     jsonw_int ();
    0x0004ca32 movs r0, 0                                        |     r0 = 0;
    0x0004ca34 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |     
                                                                 | }
    ; 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 @ 0x4ccfc */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.print_color_lluint ()                            | void print_color_lluint (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_20h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0004ccfc push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0004cd00 mov r4, r0                                        |     r4 = r0;
    0x0004cd02 ldr r7, [pc, 0x60]                                |     
    0x0004cd04 mov r6, r1                                        |     r6 = r1;
    0x0004cd06 mov r5, r2                                        |     r5 = r2;
    0x0004cd08 mov sl, r3                                        |     sl = r3;
    0x0004cd0a ldrd r8, sb, [sp, 0x20]                           |     __asm ("ldrd r8, sb, [var_20h]");
    0x0004cd0e add r7, pc                                        |     r7 = 0x99a78;
    0x0004cd10 bl 0x4c8c4                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x0004cd14 cbz r0, 0x4cd34                                   |         goto label_1;
                                                                 |     }
    0x0004cd16 tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x0004cd1a beq 0x4cd34                                       |         goto label_1;
                                                                 |     }
    0x0004cd1c ldr r3, [pc, 0x48]                                |     
    0x0004cd1e mov r2, r8                                        |     r2 = r8;
    0x0004cd20 add r3, pc                                        |     r3 = 0x99a8c;
    0x0004cd22 ldr r0, [r3]                                      |     r0 = imp._ITM_deregisterTMCloneTable;
    0x0004cd24 mov r3, sb                                        |     r3 = sb;
                                                                 |     if (r5 == 0) {
    0x0004cd26 cbz r5, 0x4cd58                                   |         goto label_2;
                                                                 |     }
    0x0004cd28 mov r1, r5                                        |     r1 = r5;
    0x0004cd2a bl 0x4c770                                        |     jsonw_lluint_field ();
                                                                 |     do {
                                                                 | label_0:
    0x0004cd2e movs r0, 0                                        |         r0 = 0;
    0x0004cd30 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_1:
    0x0004cd34 bl 0x4c8c4                                        |         r0 = is_json_context ();
    0x0004cd38 cmp r0, 0                                         |         
    0x0004cd3a bne 0x4cd2e                                       |         
                                                                 |     } while (r0 != 0);
    0x0004cd3c tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x0004cd40 beq 0x4cd2e                                       |         goto label_0;
                                                                 |     }
    0x0004cd42 ldr r3, [pc, 0x28]                                |     r3 = *(0x4cd6e);
    0x0004cd44 mov r2, sl                                        |     r2 = sl;
    0x0004cd46 mov r1, r6                                        |     r1 = r6;
    0x0004cd48 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x0004cd4a strd r8, sb, [sp, 0x20]                           |     __asm ("strd r8, sb, [sp, 0x20]");
    0x0004cd4e pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x0004cd52 ldr r0, [r3]                                      |     r0 = *(0x4cd6e);
    0x0004cd54 b.w 0x4d604                                       |     void (*0x4d604)() ();
                                                                 | label_2:
    0x0004cd58 bl 0x4c660                                        |     jsonw_lluint ();
    0x0004cd5c movs r0, 0                                        |     r0 = 0;
    0x0004cd5e pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |     
                                                                 | }
    ; 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 @ 0x4cc88 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.print_color_luint ()                             | void print_color_luint (int16_t arg_20h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0004cc88 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0004cc8c mov r4, r0                                        |     r4 = r0;
    0x0004cc8e ldr r6, [pc, 0x60]                                |     
    0x0004cc90 mov r7, r1                                        |     r7 = r1;
    0x0004cc92 mov sb, r2                                        |     sb = r2;
    0x0004cc94 mov r5, r3                                        |     r5 = r3;
    0x0004cc96 ldr.w r8, [sp, 0x20]                              |     r8 = *(arg_20h);
    0x0004cc9a add r6, pc                                        |     r6 = 0x99990;
    0x0004cc9c bl 0x4c8c4                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x0004cca0 cbz r0, 0x4ccc2                                   |         goto label_1;
                                                                 |     }
    0x0004cca2 tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x0004cca6 beq 0x4ccc2                                       |         goto label_1;
                                                                 |     }
    0x0004cca8 ldr r3, [pc, 0x48]                                |     
    0x0004ccaa add r3, pc                                        |     r3 = 0x999a2;
    0x0004ccac ldr r0, [r3]                                      |     r0 = imp._ITM_deregisterTMCloneTable;
    0x0004ccae cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x0004ccb2 beq 0x4cce4                                       |         goto label_2;
                                                                 |     }
    0x0004ccb4 mov r2, r8                                        |     r2 = r8;
    0x0004ccb6 mov r1, sb                                        |     r1 = sb;
    0x0004ccb8 bl 0x4c758                                        |     jsonw_luint_field ();
                                                                 |     do {
                                                                 | label_0:
    0x0004ccbc movs r0, 0                                        |         r0 = 0;
    0x0004ccbe pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_1:
    0x0004ccc2 bl 0x4c8c4                                        |         r0 = is_json_context ();
    0x0004ccc6 cmp r0, 0                                         |         
    0x0004ccc8 bne 0x4ccbc                                       |         
                                                                 |     } while (r0 != 0);
    0x0004ccca tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x0004ccce beq 0x4ccbc                                       |         goto label_0;
                                                                 |     }
    0x0004ccd0 ldr r0, [pc, 0x24]                                |     
    0x0004ccd2 mov r3, r8                                        |     r3 = r8;
    0x0004ccd4 mov r2, r5                                        |     r2 = r5;
    0x0004ccd6 mov r1, r7                                        |     r1 = r7;
    0x0004ccd8 ldr r0, [r6, r0]                                  |     r0 = *((r6 + r0));
    0x0004ccda pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x0004ccde ldr r0, [r0]                                      |     r0 = *(0x4ccf8);
    0x0004cce0 b.w 0x4d604                                       |     void (*0x4d604)() ();
                                                                 | label_2:
    0x0004cce4 mov r1, r8                                        |     r1 = r8;
    0x0004cce6 bl 0x4c650                                        |     jsonw_luint ();
    0x0004ccea movs r0, 0                                        |     r0 = 0;
    0x0004ccec pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |     
                                                                 | }
    ; 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 @ 0x4d24c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.print_color_null ()                              | void print_color_null (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_20h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0004d24c push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0004d250 mov r4, r0                                        |     r4 = r0;
    0x0004d252 ldr r6, [pc, 0x5c]                                |     
    0x0004d254 mov r7, r1                                        |     r7 = r1;
    0x0004d256 mov sb, r2                                        |     sb = r2;
    0x0004d258 mov r5, r3                                        |     r5 = r3;
    0x0004d25a ldr.w r8, [sp, 0x20]                              |     r8 = var_20h;
    0x0004d25e add r6, pc                                        |     r6 = 0x9a514;
    0x0004d260 bl 0x4c8c4                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x0004d264 cbz r0, 0x4d284                                   |         goto label_1;
                                                                 |     }
    0x0004d266 tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x0004d26a beq 0x4d284                                       |         goto label_1;
                                                                 |     }
    0x0004d26c ldr r3, [pc, 0x44]                                |     
    0x0004d26e add r3, pc                                        |     r3 = 0x9a526;
    0x0004d270 ldr r0, [r3]                                      |     r0 = imp._ITM_deregisterTMCloneTable;
    0x0004d272 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x0004d276 beq 0x4d2a6                                       |         goto label_2;
                                                                 |     }
    0x0004d278 mov r1, sb                                        |     r1 = sb;
    0x0004d27a bl 0x4c7c0                                        |     jsonw_null_field ();
                                                                 |     do {
                                                                 | label_0:
    0x0004d27e movs r0, 0                                        |         r0 = 0;
    0x0004d280 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_1:
    0x0004d284 bl 0x4c8c4                                        |         r0 = is_json_context ();
    0x0004d288 cmp r0, 0                                         |         
    0x0004d28a bne 0x4d27e                                       |         
                                                                 |     } while (r0 != 0);
    0x0004d28c tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x0004d290 beq 0x4d27e                                       |         goto label_0;
                                                                 |     }
    0x0004d292 ldr r0, [pc, 0x24]                                |     
    0x0004d294 mov r3, r8                                        |     r3 = r8;
    0x0004d296 mov r2, r5                                        |     r2 = r5;
    0x0004d298 mov r1, r7                                        |     r1 = r7;
    0x0004d29a ldr r0, [r6, r0]                                  |     r0 = *((r6 + r0));
    0x0004d29c pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x0004d2a0 ldr r0, [r0]                                      |     r0 = *(0x4d2ba);
    0x0004d2a2 b.w 0x4d604                                       |     void (*0x4d604)() ();
                                                                 | label_2:
    0x0004d2a6 bl 0x4c5ec                                        |     jsonw_null ();
    0x0004d2aa movs r0, 0                                        |     r0 = 0;
    0x0004d2ac pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |     
                                                                 | }
    ; 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 @ 0x4d004 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.print_color_on_off ()                            | void print_color_on_off (int16_t arg_20h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0004d004 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0004d008 mov r4, r0                                        |     r4 = r0;
    0x0004d00a ldrb.w r8, [sp, 0x20]                             |     r8 = *(arg_20h);
    0x0004d00e mov r7, r1                                        |     r7 = r1;
    0x0004d010 mov sb, r2                                        |     sb = r2;
    0x0004d012 mov r6, r3                                        |     r6 = r3;
    0x0004d014 ldr r5, [pc, 0x68]                                |     
    0x0004d016 add r5, pc                                        |     r5 = 0x9a09a;
    0x0004d018 cmp.w r8, 0                                       |     
                                                                 |     if (r8 != 0) {
    0x0004d01c bne 0x4d06c                                       |         goto label_2;
                                                                 |     }
    0x0004d01e ldr.w sl, [pc, 0x64]                              |     sl = *(0x0004d084);
    0x0004d022 add sl, pc                                        |     sl += pc;
                                                                 | label_1:
    0x0004d024 bl 0x4c8c4                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x0004d028 cbz r0, 0x4d04a                                   |         goto label_3;
                                                                 |     }
    0x0004d02a tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x0004d02e beq 0x4d04a                                       |         goto label_3;
                                                                 |     }
    0x0004d030 ldr r3, [pc, 0x54]                                |     
    0x0004d032 add r3, pc                                        |     r3 = 0x9a0be;
    0x0004d034 ldr r0, [r3]                                      |     r0 = imp._ITM_deregisterTMCloneTable;
    0x0004d036 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x0004d03a beq 0x4d074                                       |         goto label_4;
                                                                 |     }
    0x0004d03c mov r2, r8                                        |     r2 = r8;
    0x0004d03e mov r1, sb                                        |     r1 = sb;
    0x0004d040 bl 0x4c6a0                                        |     jsonw_bool_field ();
                                                                 |     do {
                                                                 | label_0:
    0x0004d044 movs r0, 0                                        |         r0 = 0;
    0x0004d046 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_3:
    0x0004d04a bl 0x4c8c4                                        |         r0 = is_json_context ();
    0x0004d04e cmp r0, 0                                         |         
    0x0004d050 bne 0x4d044                                       |         
                                                                 |     } while (r0 != 0);
    0x0004d052 tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x0004d056 beq 0x4d044                                       |         goto label_0;
                                                                 |     }
    0x0004d058 ldr r0, [pc, 0x30]                                |     
    0x0004d05a mov r3, sl                                        |     r3 = sl;
    0x0004d05c mov r2, r6                                        |     r2 = r6;
    0x0004d05e mov r1, r7                                        |     r1 = r7;
    0x0004d060 ldr r0, [r5, r0]                                  |     r0 = *((r5 + r0));
    0x0004d062 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x0004d066 ldr r0, [r0]                                      |     r0 = *(0x4d08c);
    0x0004d068 b.w 0x4d604                                       |     void (*0x4d604)() ();
                                                                 | label_2:
    0x0004d06c ldr.w sl, [pc, 0x20]                              |     
    0x0004d070 add sl, pc                                        |     sl = 0x9a104;
    0x0004d072 b 0x4d024                                         |     goto label_1;
                                                                 | label_4:
    0x0004d074 mov r1, r8                                        |     r1 = r8;
    0x0004d076 bl 0x4c5cc                                        |     jsonw_bool ();
    0x0004d07a movs r0, 0                                        |     r0 = 0;
    0x0004d07c pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |     
                                                                 | }
    ; 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 @ 0x4ca44 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.print_color_s64 ()                               | void print_color_s64 (int16_t arg_20h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0004ca44 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0004ca48 mov r4, r0                                        |     r4 = r0;
    0x0004ca4a ldr r7, [pc, 0x60]                                |     
    0x0004ca4c mov r6, r1                                        |     r6 = r1;
    0x0004ca4e mov r5, r2                                        |     r5 = r2;
    0x0004ca50 mov sl, r3                                        |     sl = r3;
    0x0004ca52 ldrd r8, sb, [sp, 0x20]                           |     __asm ("ldrd r8, sb, [arg_20h]");
    0x0004ca56 add r7, pc                                        |     r7 = 0x99508;
    0x0004ca58 bl 0x4c8c4                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x0004ca5c cbz r0, 0x4ca7c                                   |         goto label_1;
                                                                 |     }
    0x0004ca5e tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x0004ca62 beq 0x4ca7c                                       |         goto label_1;
                                                                 |     }
    0x0004ca64 ldr r3, [pc, 0x48]                                |     
    0x0004ca66 mov r2, r8                                        |     r2 = r8;
    0x0004ca68 add r3, pc                                        |     r3 = 0x9951c;
    0x0004ca6a ldr r0, [r3]                                      |     r0 = imp._ITM_deregisterTMCloneTable;
    0x0004ca6c mov r3, sb                                        |     r3 = sb;
                                                                 |     if (r5 == 0) {
    0x0004ca6e cbz r5, 0x4caa0                                   |         goto label_2;
                                                                 |     }
    0x0004ca70 mov r1, r5                                        |     r1 = r5;
    0x0004ca72 bl 0x4c7a4                                        |     jsonw_s64_field ();
                                                                 |     do {
                                                                 | label_0:
    0x0004ca76 movs r0, 0                                        |         r0 = 0;
    0x0004ca78 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_1:
    0x0004ca7c bl 0x4c8c4                                        |         r0 = is_json_context ();
    0x0004ca80 cmp r0, 0                                         |         
    0x0004ca82 bne 0x4ca76                                       |         
                                                                 |     } while (r0 != 0);
    0x0004ca84 tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x0004ca88 beq 0x4ca76                                       |         goto label_0;
                                                                 |     }
    0x0004ca8a ldr r3, [pc, 0x28]                                |     r3 = *(0x4cab6);
    0x0004ca8c mov r2, sl                                        |     r2 = sl;
    0x0004ca8e mov r1, r6                                        |     r1 = r6;
    0x0004ca90 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x0004ca92 strd r8, sb, [sp, 0x20]                           |     __asm ("strd r8, sb, [sp, 0x20]");
    0x0004ca96 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x0004ca9a ldr r0, [r3]                                      |     r0 = *(0x4cab6);
    0x0004ca9c b.w 0x4d604                                       |     void (*0x4d604)() ();
                                                                 | label_2:
    0x0004caa0 bl 0x4c67c                                        |     jsonw_s64 ();
    0x0004caa4 movs r0, 0                                        |     r0 = 0;
    0x0004caa6 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |     
                                                                 | }
    ; 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 @ 0x4ce6c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.print_color_string ()                            | void print_color_string (int16_t arg_20h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0004ce6c push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0004ce70 mov r4, r0                                        |     r4 = r0;
    0x0004ce72 ldr r6, [pc, 0x8c]                                |     
    0x0004ce74 mov r7, r1                                        |     r7 = r1;
    0x0004ce76 mov sb, r2                                        |     sb = r2;
    0x0004ce78 mov r5, r3                                        |     r5 = r3;
    0x0004ce7a ldr.w r8, [sp, 0x20]                              |     r8 = *(arg_20h);
    0x0004ce7c strh r0, [r4]                                     |     *(r4) = r0;
    0x0004ce7e add r6, pc                                        |     r6 = 0x99d84;
    0x0004ce80 bl 0x4c8c4                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x0004ce84 cbz r0, 0x4cec2                                   |         goto label_1;
                                                                 |     }
    0x0004ce86 tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x0004ce8a beq 0x4cec2                                       |         goto label_1;
                                                                 |     }
    0x0004ce8c subs.w r2, sb, 0                                  |     r2 = sb - 0;
    0x0004ce90 ldr r3, [pc, 0x70]                                |     
    0x0004ce92 it ne                                             |     
                                                                 |     if (r2 == sb) {
    0x0004ce94 movne r2, 1                                       |         r2 = 1;
                                                                 |     }
    0x0004ce96 cmp.w r8, 0                                       |     
    0x0004ce9a it ne                                             |     
                                                                 |     if (r8 == 0) {
    0x0004ce9c movne r2, 0                                       |         r2 = 0;
                                                                 |     }
    0x0004ce9e add r3, pc                                        |     r3 = 0x99da6;
    0x0004cea0 ldr r0, [r3]                                      |     r0 = imp._ITM_deregisterTMCloneTable;
                                                                 |     if (r2 != 0) {
    0x0004cea2 cbnz r2, 0x4cef2                                  |         goto label_2;
                                                                 |     }
    0x0004cea4 clz r3, sb                                        |     r3 &= sb;
    0x0004cea8 cmp.w r8, 0                                       |     
    0x0004ceac lsr.w r3, r3, 5                                   |     r3 >>= 5;
    0x0004ceb0 it eq                                             |     
                                                                 |     if (r8 != 0) {
    0x0004ceb2 moveq r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 == 0) {
    0x0004ceb4 cbz r3, 0x4cee4                                   |         goto label_3;
                                                                 |     }
    0x0004ceb6 mov r1, r8                                        |     r1 = r8;
    0x0004ceb8 bl 0x4c5ac                                        |     jsonw_string ();
                                                                 |     do {
                                                                 | label_0:
    0x0004cebc movs r0, 0                                        |         r0 = 0;
    0x0004cebe pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_1:
    0x0004cec2 bl 0x4c8c4                                        |         r0 = is_json_context ();
    0x0004cec6 cmp r0, 0                                         |         
    0x0004cec8 bne 0x4cebc                                       |         
                                                                 |     } while (r0 != 0);
    0x0004ceca tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x0004cece beq 0x4cebc                                       |         goto label_0;
                                                                 |     }
    0x0004ced0 ldr r0, [pc, 0x34]                                |     
    0x0004ced2 mov r3, r8                                        |     r3 = r8;
    0x0004ced4 mov r2, r5                                        |     r2 = r5;
    0x0004ced6 mov r1, r7                                        |     r1 = r7;
    0x0004ced8 ldr r0, [r6, r0]                                  |     r0 = *((r6 + r0));
    0x0004ceda pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x0004cede ldr r0, [r0]                                      |     r0 = *(0x4cf08);
    0x0004cee0 b.w 0x4d604                                       |     void (*0x4d604)() ();
                                                                 | label_3:
    0x0004cee4 mov r2, r8                                        |     r2 = r8;
    0x0004cee6 mov r1, sb                                        |     r1 = sb;
    0x0004cee8 bl 0x4c688                                        |     jsonw_string_field ();
    0x0004ceec movs r0, 0                                        |     r0 = 0;
    0x0004ceee pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |     
                                                                 | label_2:
    0x0004cef2 mov r1, sb                                        |     r1 = sb;
    0x0004cef4 bl 0x4c3ec                                        |     jsonw_name ();
    0x0004cef8 movs r0, 0                                        |     r0 = 0;
    0x0004cefa pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |     
                                                                 | }
    ; 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 @ 0x4cc14 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.print_color_u64 ()                               | void print_color_u64 (int16_t arg_20h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0004cc14 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0004cc18 mov r4, r0                                        |     r4 = r0;
    0x0004cc1a ldr r7, [pc, 0x60]                                |     
    0x0004cc1c mov r6, r1                                        |     r6 = r1;
    0x0004cc1e mov r5, r2                                        |     r5 = r2;
    0x0004cc20 mov sl, r3                                        |     sl = r3;
    0x0004cc22 ldrd r8, sb, [sp, 0x20]                           |     __asm ("ldrd r8, sb, [arg_20h]");
    0x0004cc26 add r7, pc                                        |     r7 = 0x998a8;
    0x0004cc28 bl 0x4c8c4                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x0004cc2c cbz r0, 0x4cc4c                                   |         goto label_1;
                                                                 |     }
    0x0004cc2e tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x0004cc32 beq 0x4cc4c                                       |         goto label_1;
                                                                 |     }
    0x0004cc34 ldr r3, [pc, 0x48]                                |     
    0x0004cc36 mov r2, r8                                        |     r2 = r8;
    0x0004cc38 add r3, pc                                        |     r3 = 0x998bc;
    0x0004cc3a ldr r0, [r3]                                      |     r0 = imp._ITM_deregisterTMCloneTable;
    0x0004cc3c mov r3, sb                                        |     r3 = sb;
                                                                 |     if (r5 == 0) {
    0x0004cc3e cbz r5, 0x4cc70                                   |         goto label_2;
                                                                 |     }
    0x0004cc40 mov r1, r5                                        |     r1 = r5;
    0x0004cc42 bl 0x4c6f0                                        |     jsonw_u64_field ();
                                                                 |     do {
                                                                 | label_0:
    0x0004cc46 movs r0, 0                                        |         r0 = 0;
    0x0004cc48 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_1:
    0x0004cc4c bl 0x4c8c4                                        |         r0 = is_json_context ();
    0x0004cc50 cmp r0, 0                                         |         
    0x0004cc52 bne 0x4cc46                                       |         
                                                                 |     } while (r0 != 0);
    0x0004cc54 tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x0004cc58 beq 0x4cc46                                       |         goto label_0;
                                                                 |     }
    0x0004cc5a ldr r3, [pc, 0x28]                                |     r3 = *(0x4cc86);
    0x0004cc5c mov r2, sl                                        |     r2 = sl;
    0x0004cc5e mov r1, r6                                        |     r1 = r6;
    0x0004cc60 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x0004cc62 strd r8, sb, [sp, 0x20]                           |     __asm ("strd r8, sb, [sp, 0x20]");
    0x0004cc66 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x0004cc6a ldr r0, [r3]                                      |     r0 = *(0x4cc86);
    0x0004cc6c b.w 0x4d604                                       |     void (*0x4d604)() ();
                                                                 | label_2:
    0x0004cc70 bl 0x4c638                                        |     jsonw_u64 ();
    0x0004cc74 movs r0, 0                                        |     r0 = 0;
    0x0004cc76 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |     
                                                                 | }
    ; 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 @ 0x4cba0 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.print_color_uint ()                              | void print_color_uint (int16_t arg_20h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0004cba0 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0004cba4 mov r4, r0                                        |     r4 = r0;
    0x0004cba6 ldr r6, [pc, 0x60]                                |     
    0x0004cba8 mov r7, r1                                        |     r7 = r1;
    0x0004cbaa mov sb, r2                                        |     sb = r2;
    0x0004cbac mov r5, r3                                        |     r5 = r3;
    0x0004cbae ldr.w r8, [sp, 0x20]                              |     r8 = *(arg_20h);
    0x0004cbb2 add r6, pc                                        |     r6 = 0x997c0;
    0x0004cbb4 bl 0x4c8c4                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x0004cbb8 cbz r0, 0x4cbda                                   |         goto label_1;
                                                                 |     }
    0x0004cbba tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x0004cbbe beq 0x4cbda                                       |         goto label_1;
                                                                 |     }
    0x0004cbc0 ldr r3, [pc, 0x48]                                |     
    0x0004cbc2 add r3, pc                                        |     r3 = 0x997d2;
    0x0004cbc4 ldr r0, [r3]                                      |     r0 = imp._ITM_deregisterTMCloneTable;
    0x0004cbc6 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x0004cbca beq 0x4cbfc                                       |         goto label_2;
                                                                 |     }
    0x0004cbcc mov r2, r8                                        |     r2 = r8;
    0x0004cbce mov r1, sb                                        |     r1 = sb;
    0x0004cbd0 bl 0x4c6d8                                        |     jsonw_uint_field ();
                                                                 |     do {
                                                                 | label_0:
    0x0004cbd4 movs r0, 0                                        |         r0 = 0;
    0x0004cbd6 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_1:
    0x0004cbda bl 0x4c8c4                                        |         r0 = is_json_context ();
    0x0004cbde cmp r0, 0                                         |         
    0x0004cbe0 bne 0x4cbd4                                       |         
                                                                 |     } while (r0 != 0);
    0x0004cbe2 tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x0004cbe6 beq 0x4cbd4                                       |         goto label_0;
                                                                 |     }
    0x0004cbe8 ldr r0, [pc, 0x24]                                |     
    0x0004cbea mov r3, r8                                        |     r3 = r8;
    0x0004cbec mov r2, r5                                        |     r2 = r5;
    0x0004cbee mov r1, r7                                        |     r1 = r7;
    0x0004cbf0 ldr r0, [r6, r0]                                  |     r0 = *((r6 + r0));
    0x0004cbf2 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x0004cbf6 ldr r0, [r0]                                      |     r0 = *(0x4cc10);
    0x0004cbf8 b.w 0x4d604                                       |     void (*0x4d604)() ();
                                                                 | label_2:
    0x0004cbfc mov r1, r8                                        |     r1 = r8;
    0x0004cbfe bl 0x4c628                                        |     jsonw_uint ();
    0x0004cc02 movs r0, 0                                        |     r0 = 0;
    0x0004cc04 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |     
                                                                 | }
    ; 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 @ 0x11a1c */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.print_rta_if ()                  | void print_rta_if (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                 |     int16_t var_0h;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
                                                 |     r2 = arg3;
    0x00011a1c push {r4, r5, r6, r7, lr}         |     
    0x00011a1e mov r5, r0                        |     r5 = r0;
    0x00011a20 sub sp, 0xc                       |     
    0x00011a22 ldr r0, [r1, 4]                   |     r0 = *((r1 + 4));
    0x00011a24 mov r7, r2                        |     r7 = r2;
    0x00011a26 bl 0x4b730                        |     r0 = ll_index_to_name ();
    0x00011a2a mov r6, r0                        |     r6 = r0;
    0x00011a2c bl 0x4c8c4                        |     r0 = is_json_context ();
                                                 |     if (r0 != 0) {
    0x00011a30 cbz r0, 0x11a44                   |         
    0x00011a32 movs r3, 0                        |         r3 = 0;
    0x00011a34 mov r2, r7                        |         r2 = r7;
    0x00011a36 movs r1, 6                        |         r1 = 6;
    0x00011a38 str r6, [sp]                      |         *(sp) = r6;
    0x00011a3a movs r0, 2                        |         r0 = 2;
    0x00011a3c bl 0x4ce6c                        |         print_color_string ();
    0x00011a40 add sp, 0xc                       |         
    0x00011a42 pop {r4, r5, r6, r7, pc}          |         
                                                 |     }
    0x00011a44 ldr r2, [pc, 0x20]                |     
    0x00011a46 mov r4, r0                        |     r4 = r0;
    0x00011a48 mov r3, r7                        |     r3 = r7;
    0x00011a4a movs r1, 1                        |     r1 = 1;
    0x00011a4c mov r0, r5                        |     r0 = r5;
    0x00011a4e add r2, pc                        |     r2 = 0x234ba;
    0x00011a50 mov r7, r2                        |     r7 = r2;
    0x00011a52 blx 0x8be8                        |     fcn_00008be8 ();
    0x00011a56 mov r3, r6                        |     r3 = r6;
    0x00011a58 mov r2, r7                        |     r2 = r7;
    0x00011a5a mov r1, r4                        |     r1 = r4;
    0x00011a5c mov r0, r5                        |     r0 = r5;
    0x00011a5e add sp, 0xc                       |     
    0x00011a60 pop.w {r4, r5, r6, r7, lr}        |     
    0x00011a64 b.w 0x4d604                       |     return void (*0x4d604)() ();
                                                 | }

[*] Function fprintf used 2 times ip.iproute2