[*] Binary protection state of tc.iproute2

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


[*] Function fprintf tear down of tc.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/tc.iproute2 @ 0x405d4 */
                                                             | #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_0h;
                                                             |     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;
    0x000405d4 push.w {r4, r5, r6, r7, r8, sl, fp, lr}       |     
    0x000405d8 mov r7, r2                                    |     r7 = r2;
    0x000405da ldr r2, [pc, 0xac]                            |     
    0x000405dc mov r6, r3                                    |     r6 = r3;
    0x000405de sub sp, 0x58                                  |     
    0x000405e0 mov r4, r0                                    |     r4 = r0;
    0x000405e2 ldr r3, [pc, 0xa8]                            |     r3 = *(0x4068e);
    0x000405e4 mov r8, r1                                    |     r8 = r1;
    0x000405e6 add r2, pc                                    |     r2 = 0x80c74;
    0x000405e8 ldr r5, [pc, 0xa4]                            |     
    0x000405ea ldrd sl, fp, [sp, 0x78]                       |     __asm ("ldrd sl, fp, [arg_78h]");
    0x000405ee ldr r3, [r2, r3]                              |     
    0x000405f0 add r5, pc                                    |     r5 = 0x80c84;
    0x000405f2 ldr r3, [r3]                                  |     r3 = *(0x80c74);
    0x000405f4 str r3, [sp, 0x54]                            |     var_54h = r3;
    0x000405f6 mov.w r3, 0                                   |     r3 = 0;
    0x000405fa bl 0x3fe04                                    |     r0 = is_json_context ();
                                                             |     if (r0 != 0) {
    0x000405fe cbz r0, 0x40606                               |         
    0x00040600 tst.w r4, 6                                   |         
                                                             |         if ((r4 & 6) != 0) {
    0x00040604 bne 0x4065a                                   |             goto label_1;
                                                             |         }
                                                             |     }
    0x00040606 bl 0x3fe04                                    |     r0 = is_json_context ();
    0x0004060a cbz r0, 0x40628                               |     
                                                             |     while ((r4 & 5) == 0) {
                                                             | label_0:
    0x0004060c ldr r2, [pc, 0x84]                            |         
    0x0004060e ldr r3, [pc, 0x7c]                            |         r3 = *(0x4068e);
    0x00040610 add r2, pc                                    |         r2 = 0x80ca8;
    0x00040612 ldr r3, [r2, r3]                              |         r3 = *(0x80ca8);
    0x00040614 ldr r2, [r3]                                  |         r2 = *(0x80ca8);
    0x00040616 ldr r3, [sp, 0x54]                            |         r3 = var_54h;
    0x00040618 eors r2, r3                                   |         r2 ^= r3;
    0x0004061a mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0004061e bne 0x40682                                   |             goto label_2;
                                                             |         }
    0x00040620 movs r0, 0                                    |         r0 = 0;
    0x00040622 add sp, 0x58                                  |         
    0x00040624 pop.w {r4, r5, r6, r7, r8, sl, fp, pc}        |         
    0x00040628 tst.w r4, 5                                   |         
    0x0004062c beq 0x4060c                                   |         
                                                             |     }
    0x0004062e ldr r2, [pc, 0x68]                            |     
    0x00040630 ldr r3, [pc, 0x58]                            |     r3 = *(0x4068c);
    0x00040632 add r2, pc                                    |     r2 = 0x80cd0;
    0x00040634 ldr r3, [r2, r3]                              |     r3 = *(0x80cd0);
    0x00040636 ldr r2, [r3]                                  |     r2 = *(0x80cd0);
    0x00040638 ldr r3, [sp, 0x54]                            |     r3 = var_54h;
    0x0004063a eors r2, r3                                   |     r2 ^= r3;
    0x0004063c mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 == r3) {
    0x00040640 bne 0x40682                                   |         
    0x00040642 ldr r3, [pc, 0x58]                            |         r3 = *(0x4069e);
    0x00040644 mov r2, r6                                    |         r2 = r6;
    0x00040646 mov r1, r8                                    |         r1 = r8;
    0x00040648 ldr r3, [r5, r3]                              |         r3 = *((r5 + r3));
    0x0004064a strd sl, fp, [sp, 0x78]                       |         __asm ("strd sl, fp, [var_0hx78]");
    0x0004064e ldr r0, [r3]                                  |         r0 = *(0x4069e);
    0x00040650 add sp, 0x58                                  |         
    0x00040652 pop.w {r4, r5, r6, r7, r8, sl, fp, lr}        |         
    0x00040656 b.w 0x40fac                                   |         void (*0x40fac)() ();
                                                             | label_1:
    0x0004065a ldr r1, [pc, 0x44]                            |         
    0x0004065c movs r3, 0x40                                 |         r3 = 0x40;
    0x0004065e add r4, sp, 0x14                              |         r4 += var_14h;
    0x00040660 movs r2, 1                                    |         r2 = 1;
    0x00040662 mov r0, r4                                    |         r0 = r4;
    0x00040664 strd sl, fp, [sp, 8]                          |         __asm ("strd sl, fp, [var_8h]");
    0x00040668 add r1, pc                                    |         r1 = 0x80d0e;
    0x0004066a str r1, [sp]                                  |         *(sp) = r1;
    0x0004066c mov r1, r3                                    |         r1 = r3;
    0x0004066e blx 0x9330                                    |         fcn_00009330 ();
    0x00040672 movs r3, 0                                    |         r3 = 0;
    0x00040674 mov r2, r7                                    |         r2 = r7;
    0x00040676 movs r1, 6                                    |         r1 = 6;
    0x00040678 str r4, [sp]                                  |         *(sp) = r4;
    0x0004067a movs r0, 2                                    |         r0 = 2;
    0x0004067c bl 0x403ac                                    |         print_color_string ();
    0x00040680 b 0x4060c                                     |         goto label_0;
                                                             |     }
                                                             | label_2:
    0x00040682 blx 0x8d58                                    |     fcn_00008d58 ();
    0x00040686 nop                                           |     
    0x00040688 b 0x40430                                     |     return void (*0x40430)() ();
                                                             | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x404b4 */
                                                             | #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;
    0x000404b4 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x000404b8 mov r4, r0                                    |     r4 = r0;
    0x000404ba ldrb.w r8, [sp, 0x20]                         |     r8 = *(arg_20h);
    0x000404be mov r7, r1                                    |     r7 = r1;
    0x000404c0 mov sb, r2                                    |     sb = r2;
    0x000404c2 mov r6, r3                                    |     r6 = r3;
    0x000404c4 ldr r5, [pc, 0x68]                            |     
    0x000404c6 add r5, pc                                    |     r5 = 0x809fa;
    0x000404c8 cmp.w r8, 0                                   |     
                                                             |     if (r8 != 0) {
    0x000404cc bne 0x4051c                                   |         goto label_2;
                                                             |     }
    0x000404ce ldr.w sl, [pc, 0x64]                          |     sl = *(0x00040534);
    0x000404d2 add sl, pc                                    |     sl += pc;
                                                             | label_1:
    0x000404d4 bl 0x3fe04                                    |     r0 = is_json_context ();
                                                             |     if (r0 == 0) {
    0x000404d8 cbz r0, 0x404fa                               |         goto label_3;
                                                             |     }
    0x000404da tst.w r4, 6                                   |     
                                                             |     if ((r4 & 6) == 0) {
    0x000404de beq 0x404fa                                   |         goto label_3;
                                                             |     }
    0x000404e0 ldr r3, [pc, 0x54]                            |     
    0x000404e2 add r3, pc                                    |     r3 = 0x80a1e;
    0x000404e4 ldr r0, [r3]                                  |     r0 = *(0x80a1e);
    0x000404e6 cmp.w sb, 0                                   |     
                                                             |     if (sb == 0) {
    0x000404ea beq 0x40524                                   |         goto label_4;
                                                             |     }
    0x000404ec mov r2, r8                                    |     r2 = r8;
    0x000404ee mov r1, sb                                    |     r1 = sb;
    0x000404f0 bl 0x45f78                                    |     jsonw_bool_field ();
                                                             |     do {
                                                             | label_0:
    0x000404f4 movs r0, 0                                    |         r0 = 0;
    0x000404f6 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_3:
    0x000404fa bl 0x3fe04                                    |         r0 = is_json_context ();
    0x000404fe cmp r0, 0                                     |         
    0x00040500 bne 0x404f4                                   |         
                                                             |     } while (r0 != 0);
    0x00040502 tst.w r4, 5                                   |     
                                                             |     if ((r4 & 5) == 0) {
    0x00040506 beq 0x404f4                                   |         goto label_0;
                                                             |     }
    0x00040508 ldr r0, [pc, 0x30]                            |     
    0x0004050a mov r3, sl                                    |     r3 = sl;
    0x0004050c mov r2, r6                                    |     r2 = r6;
    0x0004050e mov r1, r7                                    |     r1 = r7;
    0x00040510 ldr r0, [r5, r0]                              |     r0 = *((r5 + r0));
    0x00040512 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x00040516 ldr r0, [r0]                                  |     r0 = *(0x4053c);
    0x00040518 b.w 0x40fac                                   |     void (*0x40fac)() ();
                                                             | label_2:
    0x0004051c ldr.w sl, [pc, 0x20]                          |     
    0x00040520 add sl, pc                                    |     sl = 0x80a64;
    0x00040522 b 0x404d4                                     |     goto label_1;
                                                             | label_4:
    0x00040524 mov r1, r8                                    |     r1 = r8;
    0x00040526 bl 0x45ea4                                    |     jsonw_bool ();
    0x0004052a movs r0, 0                                    |     r0 = 0;
    0x0004052c 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/tc.iproute2 @ 0x402b0 */
                                                     | #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;
    0x000402b0 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x000402b4 mov r8, r0                            |     r8 = r0;
    0x000402b6 ldr r5, [pc, 0x80]                    |     
    0x000402b8 mov r7, r1                            |     r7 = r1;
    0x000402ba mov r6, r2                            |     r6 = r2;
    0x000402bc mov r4, r3                            |     r4 = r3;
    0x000402be vpush {d8}                            |     __asm ("vpush {d8}");
    0x000402c2 sub sp, 8                             |     
    0x000402c4 vmov.f64 d8, d0                       |     __asm ("vmov.f64 d8, d0");
    0x000402c8 add r5, pc                            |     r5 = 0x80606;
    0x000402ca bl 0x3fe04                            |     r0 = is_json_context ();
                                                     |     if (r0 == 0) {
    0x000402ce cbz r0, 0x402f4                       |         goto label_0;
                                                     |     }
    0x000402d0 tst.w r8, 6                           |     
                                                     |     if ((r8 & 6) == 0) {
    0x000402d4 beq 0x402f4                           |         goto label_0;
                                                     |     }
    0x000402d6 ldr r3, [pc, 0x64]                    |     
    0x000402d8 vmov.f64 d0, d8                       |     __asm ("vmov.f64 d0, d8");
    0x000402dc add r3, pc                            |     r3 = 0x8061e;
    0x000402de ldr r0, [r3]                          |     r0 = *(0x8061e);
                                                     |     if (r6 == 0) {
    0x000402e0 cbz r6, 0x40328                       |         goto label_1;
                                                     |     }
    0x000402e2 mov r1, r6                            |     r1 = r6;
    0x000402e4 bl 0x45f90                            |     jsonw_float_field ();
    0x000402e8 movs r0, 0                            |     r0 = 0;
                                                     |     do {
    0x000402ea add sp, 8                             |         
    0x000402ec vpop {d8}                             |         __asm ("vpop {d8}");
    0x000402f0 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_0:
    0x000402f4 bl 0x3fe04                            |         r0 = is_json_context ();
                                                     |         if (r0 != 0) {
    0x000402f8 cbnz r0, 0x4031c                      |             goto label_2;
                                                     |         }
    0x000402fa ands r0, r8, 5                        |         r0 = r8 & 5;
    0x000402fe beq 0x402ea                           |         
                                                     |     } while (r0 == r8);
    0x00040300 ldr r3, [pc, 0x3c]                    |     r3 = *(0x40340);
    0x00040302 mov r2, r4                            |     r2 = r4;
    0x00040304 mov r1, r7                            |     r1 = r7;
    0x00040306 ldr r3, [r5, r3]                      |     r3 = *((r5 + r3));
    0x00040308 vstr d8, [sp]                         |     __asm ("vstr d8, [sp]");
    0x0004030c ldr r0, [r3]                          |     r0 = *(0x40340);
    0x0004030e bl 0x40fac                            |     color_fprintf ()
    0x00040312 add sp, 8                             |     
    0x00040314 vpop {d8}                             |     __asm ("vpop {d8}");
    0x00040318 pop.w {r4, r5, r6, r7, r8, pc}        |     
                                                     | label_2:
    0x0004031c movs r0, 0                            |     r0 = 0;
    0x0004031e add sp, 8                             |     
    0x00040320 vpop {d8}                             |     __asm ("vpop {d8}");
    0x00040324 pop.w {r4, r5, r6, r7, r8, pc}        |     
                                                     | label_1:
    0x00040328 bl 0x45ed0                            |     jsonw_float ();
    0x0004032c mov r0, r6                            |     r0 = r6;
    0x0004032e add sp, 8                             |     
    0x00040330 vpop {d8}                             |     __asm ("vpop {d8}");
    0x00040334 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/tc.iproute2 @ 0x406a4 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.print_color_hex ()                       | void print_color_hex (int16_t arg_70h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                         |     int32_t var_0h;
                                                         |     int32_t var_0h_2;
                                                         |     int16_t var_ch;
                                                         |     int16_t var_4ch;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
                                                         |     r3 = arg4;
    0x000406a4 push.w {r4, r5, r6, r7, r8, sb, lr}       |     
    0x000406a8 mov sb, r2                                |     sb = r2;
    0x000406aa ldr r2, [pc, 0xbc]                        |     
    0x000406ac mov r6, r3                                |     r6 = r3;
    0x000406ae sub sp, 0x54                              |     
    0x000406b0 mov r4, r0                                |     r4 = r0;
    0x000406b2 ldr r3, [pc, 0xb8]                        |     r3 = *(0x4076e);
    0x000406b4 mov r7, r1                                |     r7 = r1;
    0x000406b6 add r2, pc                                |     r2 = 0x80e24;
    0x000406b8 ldr r5, [pc, 0xb4]                        |     
    0x000406ba ldr.w r8, [sp, 0x70]                      |     r8 = *(arg_70h);
    0x000406be ldr r3, [r2, r3]                          |     
    0x000406c0 add r5, pc                                |     r5 = 0x80e34;
    0x000406c2 ldr r3, [r3]                              |     r3 = *(0x80e24);
    0x000406c4 str r3, [sp, 0x4c]                        |     var_4ch = r3;
    0x000406c6 mov.w r3, 0                               |     r3 = 0;
    0x000406ca bl 0x3fe04                                |     r0 = is_json_context ();
                                                         |     if (r0 != 0) {
    0x000406ce cbz r0, 0x406d6                           |         
    0x000406d0 tst.w r4, 6                               |         
                                                         |         if ((r4 & 6) != 0) {
    0x000406d4 bne 0x40728                               |             goto label_1;
                                                         |         }
                                                         |     }
    0x000406d6 bl 0x3fe04                                |     r0 = is_json_context ();
    0x000406da cbz r0, 0x406f8                           |     
                                                         |     while ((r4 & 5) == 0) {
                                                         | label_0:
    0x000406dc ldr r2, [pc, 0x94]                        |         
    0x000406de ldr r3, [pc, 0x8c]                        |         r3 = *(0x4076e);
    0x000406e0 add r2, pc                                |         r2 = 0x80e58;
    0x000406e2 ldr r3, [r2, r3]                          |         r3 = *(0x80e58);
    0x000406e4 ldr r2, [r3]                              |         r2 = *(0x80e58);
    0x000406e6 ldr r3, [sp, 0x4c]                        |         r3 = var_4ch;
    0x000406e8 eors r2, r3                               |         r2 ^= r3;
    0x000406ea mov.w r3, 0                               |         r3 = 0;
    0x000406ec lsls r0, r0, 0xc                          |         r0 <<= 0xc;
                                                         |         if (r0 != r0) {
    0x000406ee bne 0x40762                               |             goto label_2;
                                                         |         }
    0x000406f0 movs r0, 0                                |         r0 = 0;
    0x000406f2 add sp, 0x54                              |         
    0x000406f4 pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
    0x000406f8 tst.w r4, 5                               |         
    0x000406fc beq 0x406dc                               |         
                                                         |     }
    0x000406fe ldr r2, [pc, 0x78]                        |     
    0x00040700 ldr r3, [pc, 0x68]                        |     r3 = *(0x4076c);
    0x00040702 add r2, pc                                |     r2 = 0x80e80;
    0x00040704 ldr r3, [r2, r3]                          |     r3 = *(0x80e80);
    0x00040706 ldr r2, [r3]                              |     r2 = *(0x80e80);
    0x00040708 ldr r3, [sp, 0x4c]                        |     r3 = var_4ch;
    0x0004070a eors r2, r3                               |     r2 ^= r3;
    0x0004070c mov.w r3, 0                               |     r3 = 0;
                                                         |     if (r2 == r3) {
    0x00040710 bne 0x40762                               |         
    0x00040712 ldr r0, [pc, 0x68]                        |         
    0x00040714 mov r3, r8                                |         r3 = r8;
    0x00040716 mov r2, r6                                |         r2 = r6;
    0x00040718 mov r1, r7                                |         r1 = r7;
    0x0004071a ldr r0, [r5, r0]                          |         r0 = *((r5 + r0));
    0x0004071c ldr r0, [r0]                              |         r0 = *(0x4077e);
    0x0004071e add sp, 0x54                              |         
    0x00040720 pop.w {r4, r5, r6, r7, r8, sb, lr}        |         
    0x00040724 b.w 0x40fac                               |         void (*0x40fac)() ();
                                                         | label_1:
    0x00040728 ldr r2, [pc, 0x54]                        |         
    0x0004072a add r4, sp, 0xc                           |         r4 += var_ch;
    0x0004072c movs r3, 0x40                             |         r3 = 0x40;
    0x0004072e mov r0, r4                                |         r0 = r4;
    0x00040730 mov r1, r3                                |         r1 = r3;
    0x00040732 add r2, pc                                |         r2 = 0x80eb6;
    0x00040734 strd r2, r8, [sp]                         |         __asm ("strd r2, r8, [sp]");
    0x00040738 movs r2, 1                                |         r2 = 1;
    0x0004073a blx 0x9330                                |         fcn_00009330 ();
    0x0004073e cmp.w sb, 0                               |         
                                                         |         if (sb != 0) {
    0x00040742 beq 0x40754                               |             
    0x00040744 ldr r3, [pc, 0x3c]                        |             
    0x00040746 mov r2, r4                                |             r2 = r4;
    0x00040748 mov r1, sb                                |             r1 = sb;
    0x0004074a add r3, pc                                |             r3 = 0x80ed2;
    0x0004074c ldr r0, [r3]                              |             r0 = *(0x80ed2);
    0x0004074e bl 0x45f60                                |             jsonw_string_field ();
    0x00040752 b 0x406dc                                 |             goto label_0;
                                                         |         }
    0x00040754 ldr r3, [pc, 0x30]                        |         
    0x00040756 mov r1, r4                                |         r1 = r4;
    0x00040758 add r3, pc                                |         r3 = 0x80ee4;
    0x0004075a ldr r0, [r3]                              |         r0 = *(0x80ee4);
    0x0004075c bl 0x45e84                                |         jsonw_string ();
    0x00040760 b 0x406dc                                 |         goto label_0;
                                                         |     }
                                                         | label_2:
    0x00040762 blx 0x8d58                                |     fcn_00008d58 ();
    0x00040766 nop                                       |     
    0x00040768 b 0x40370                                 |     return void (*0x40370)() ();
                                                         | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x3fff8 */
                                                             | #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;
    0x0003fff8 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x0003fffc mov r4, r0                                    |     r4 = r0;
    0x0003fffe ldr r6, [pc, 0x60]                            |     
    0x00040000 mov r7, r1                                    |     r7 = r1;
    0x00040002 mov sb, r2                                    |     sb = r2;
    0x00040004 mov r5, r3                                    |     r5 = r3;
    0x00040006 ldrb.w r8, [sp, 0x20]                         |     r8 = *(arg_20h);
    0x0004000a add r6, pc                                    |     r6 = 0x80070;
    0x0004000c bl 0x3fe04                                    |     r0 = is_json_context ();
                                                             |     if (r0 == 0) {
    0x00040010 cbz r0, 0x40032                               |         goto label_1;
                                                             |     }
    0x00040012 tst.w r4, 6                                   |     
                                                             |     if ((r4 & 6) == 0) {
    0x00040016 beq 0x40032                                   |         goto label_1;
                                                             |     }
    0x00040018 ldr r3, [pc, 0x48]                            |     
    0x0004001a add r3, pc                                    |     r3 = 0x80082;
    0x0004001c ldr r0, [r3]                                  |     r0 = *(0x80082);
    0x0004001e cmp.w sb, 0                                   |     
                                                             |     if (sb == 0) {
    0x00040022 beq 0x40054                                   |         goto label_2;
                                                             |     }
    0x00040024 mov r2, r8                                    |     r2 = r8;
    0x00040026 mov r1, sb                                    |     r1 = sb;
    0x00040028 bl 0x46000                                    |     jsonw_hhu_field ();
                                                             |     do {
                                                             | label_0:
    0x0004002c movs r0, 0                                    |         r0 = 0;
    0x0004002e pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_1:
    0x00040032 bl 0x3fe04                                    |         r0 = is_json_context ();
    0x00040036 cmp r0, 0                                     |         
    0x00040038 bne 0x4002c                                   |         
                                                             |     } while (r0 != 0);
    0x0004003a tst.w r4, 5                                   |     
                                                             |     if ((r4 & 5) == 0) {
    0x0004003e beq 0x4002c                                   |         goto label_0;
                                                             |     }
    0x00040040 ldr r0, [pc, 0x24]                            |     
    0x00040042 mov r3, r8                                    |     r3 = r8;
    0x00040044 mov r2, r5                                    |     r2 = r5;
    0x00040046 mov r1, r7                                    |     r1 = r7;
    0x00040048 ldr r0, [r6, r0]                              |     r0 = *((r6 + r0));
    0x0004004a pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x0004004e ldr r0, [r0]                                  |     r0 = *(0x40068);
    0x00040050 b.w 0x40fac                                   |     void (*0x40fac)() ();
                                                             | label_2:
    0x00040054 mov r1, r8                                    |     r1 = r8;
    0x00040056 bl 0x45ee0                                    |     jsonw_hhu ();
    0x0004005a movs r0, 0                                    |     r0 = 0;
    0x0004005c 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/tc.iproute2 @ 0x4006c */
                                                             | #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;
    0x0004006c push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00040070 mov r4, r0                                    |     r4 = r0;
    0x00040072 ldr r6, [pc, 0x60]                            |     
    0x00040074 mov r7, r1                                    |     r7 = r1;
    0x00040076 mov sb, r2                                    |     sb = r2;
    0x00040078 mov r5, r3                                    |     r5 = r3;
    0x0004007a ldrh.w r8, [sp, 0x20]                         |     r8 = *(arg_20h);
    0x0004007e add r6, pc                                    |     r6 = 0x80158;
    0x00040080 bl 0x3fe04                                    |     r0 = is_json_context ();
                                                             |     if (r0 == 0) {
    0x00040084 cbz r0, 0x400a6                               |         goto label_1;
                                                             |     }
    0x00040086 tst.w r4, 6                                   |     
                                                             |     if ((r4 & 6) == 0) {
    0x0004008a beq 0x400a6                                   |         goto label_1;
                                                             |     }
    0x0004008c ldr r3, [pc, 0x48]                            |     
    0x0004008e add r3, pc                                    |     r3 = 0x8016a;
    0x00040090 ldr r0, [r3]                                  |     r0 = *(0x8016a);
    0x00040092 cmp.w sb, 0                                   |     
                                                             |     if (sb == 0) {
    0x00040096 beq 0x400c8                                   |         goto label_2;
                                                             |     }
    0x00040098 mov r2, r8                                    |     r2 = r8;
    0x0004009a mov r1, sb                                    |     r1 = sb;
    0x0004009c bl 0x46018                                    |     jsonw_hu_field ();
                                                             |     do {
                                                             | label_0:
    0x000400a0 movs r0, 0                                    |         r0 = 0;
    0x000400a2 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_1:
    0x000400a6 bl 0x3fe04                                    |         r0 = is_json_context ();
    0x000400aa cmp r0, 0                                     |         
    0x000400ac bne 0x400a0                                   |         
                                                             |     } while (r0 != 0);
    0x000400ae tst.w r4, 5                                   |     
                                                             |     if ((r4 & 5) == 0) {
    0x000400b2 beq 0x400a0                                   |         goto label_0;
                                                             |     }
    0x000400b4 ldr r0, [pc, 0x24]                            |     
    0x000400b6 mov r3, r8                                    |     r3 = r8;
    0x000400b8 mov r2, r5                                    |     r2 = r5;
    0x000400ba mov r1, r7                                    |     r1 = r7;
    0x000400bc ldr r0, [r6, r0]                              |     r0 = *((r6 + r0));
    0x000400be pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x000400c2 ldr r0, [r0]                                  |     r0 = *(0x400dc);
    0x000400c4 b.w 0x40fac                                   |     void (*0x40fac)() ();
                                                             | label_2:
    0x000400c8 mov r1, r8                                    |     r1 = r8;
    0x000400ca bl 0x45ef0                                    |     jsonw_hu ();
    0x000400ce movs r0, 0                                    |     r0 = 0;
    0x000400d0 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/tc.iproute2 @ 0x4023c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.print_color_lluint ()                        | void print_color_lluint (int16_t arg_20h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x0004023c push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00040240 mov r4, r0                                    |     r4 = r0;
    0x00040242 ldr r7, [pc, 0x60]                            |     
    0x00040244 mov r6, r1                                    |     r6 = r1;
    0x00040246 mov r5, r2                                    |     r5 = r2;
    0x00040248 mov sl, r3                                    |     sl = r3;
    0x0004024a ldrd r8, sb, [sp, 0x20]                       |     __asm ("ldrd r8, sb, [arg_20h]");
    0x0004024e add r7, pc                                    |     r7 = 0x804f8;
    0x00040250 bl 0x3fe04                                    |     r0 = is_json_context ();
                                                             |     if (r0 == 0) {
    0x00040254 cbz r0, 0x40274                               |         goto label_1;
                                                             |     }
    0x00040256 tst.w r4, 6                                   |     
                                                             |     if ((r4 & 6) == 0) {
    0x0004025a beq 0x40274                                   |         goto label_1;
                                                             |     }
    0x0004025c ldr r3, [pc, 0x48]                            |     
    0x0004025e mov r2, r8                                    |     r2 = r8;
    0x00040260 add r3, pc                                    |     r3 = 0x8050c;
    0x00040262 ldr r0, [r3]                                  |     r0 = *(0x8050c);
    0x00040264 mov r3, sb                                    |     r3 = sb;
                                                             |     if (r5 == 0) {
    0x00040266 cbz r5, 0x40298                               |         goto label_2;
                                                             |     }
    0x00040268 mov r1, r5                                    |     r1 = r5;
    0x0004026a bl 0x46048                                    |     jsonw_lluint_field ();
    0x0004026c invalid                                       |     
                                                             |     do {
                                                             | label_0:
    0x0004026e movs r0, 0                                    |         r0 = 0;
    0x00040270 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_1:
    0x00040274 bl 0x3fe04                                    |         r0 = is_json_context ();
    0x00040278 cmp r0, 0                                     |         
    0x0004027a bne 0x4026e                                   |         
                                                             |     } while (r0 != 0);
    0x0004027c tst.w r4, 5                                   |     
                                                             |     if ((r4 & 5) == 0) {
    0x00040280 beq 0x4026e                                   |         goto label_0;
                                                             |     }
    0x00040282 ldr r3, [pc, 0x28]                            |     r3 = *(0x402ae);
    0x00040284 mov r2, sl                                    |     r2 = sl;
    0x00040286 mov r1, r6                                    |     r1 = r6;
    0x00040288 ldr r3, [r7, r3]                              |     r3 = *((r7 + r3));
    0x0004028a strd r8, sb, [sp, 0x20]                       |     __asm ("strd r8, sb, [sp, 0x20]");
    0x0004028e pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x00040292 ldr r0, [r3]                                  |     r0 = *(0x402ae);
    0x00040294 b.w 0x40fac                                   |     void (*0x40fac)() ();
                                                             | label_2:
    0x00040298 bl 0x45f38                                    |     jsonw_lluint ();
    0x0004029c movs r0, 0                                    |     r0 = 0;
    0x0004029e 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/tc.iproute2 @ 0x401c8 */
                                                             | #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;
    0x000401c8 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x000401cc mov r4, r0                                    |     r4 = r0;
    0x000401ce ldr r6, [pc, 0x60]                            |     
    0x000401d0 mov r7, r1                                    |     r7 = r1;
    0x000401d2 mov sb, r2                                    |     sb = r2;
    0x000401d4 mov r5, r3                                    |     r5 = r3;
    0x000401d6 ldr.w r8, [sp, 0x20]                          |     r8 = *(arg_20h);
    0x000401da add r6, pc                                    |     r6 = 0x80410;
    0x000401dc bl 0x3fe04                                    |     r0 = is_json_context ();
                                                             |     if (r0 == 0) {
    0x000401e0 cbz r0, 0x40202                               |         goto label_1;
                                                             |     }
    0x000401e2 tst.w r4, 6                                   |     
                                                             |     if ((r4 & 6) == 0) {
    0x000401e6 beq 0x40202                                   |         goto label_1;
                                                             |     }
    0x000401e8 ldr r3, [pc, 0x48]                            |     
    0x000401ea add r3, pc                                    |     r3 = 0x80422;
    0x000401ec ldr r0, [r3]                                  |     r0 = *(0x80422);
    0x000401ee cmp.w sb, 0                                   |     
                                                             |     if (sb == 0) {
    0x000401f2 beq 0x40224                                   |         goto label_2;
                                                             |     }
    0x000401f4 mov r2, r8                                    |     r2 = r8;
    0x000401f6 mov r1, sb                                    |     r1 = sb;
    0x000401f8 bl 0x46030                                    |     jsonw_luint_field ();
                                                             |     do {
                                                             | label_0:
    0x000401fc movs r0, 0                                    |         r0 = 0;
    0x000401fe pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_1:
    0x00040202 bl 0x3fe04                                    |         r0 = is_json_context ();
    0x00040206 cmp r0, 0                                     |         
    0x00040208 bne 0x401fc                                   |         
                                                             |     } while (r0 != 0);
    0x0004020a tst.w r4, 5                                   |     
                                                             |     if ((r4 & 5) == 0) {
    0x0004020e beq 0x401fc                                   |         goto label_0;
                                                             |     }
    0x00040210 ldr r0, [pc, 0x24]                            |     
    0x00040212 mov r3, r8                                    |     r3 = r8;
    0x00040214 mov r2, r5                                    |     r2 = r5;
    0x00040216 mov r1, r7                                    |     r1 = r7;
    0x00040218 ldr r0, [r6, r0]                              |     r0 = *((r6 + r0));
    0x0004021a pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x0004021e ldr r0, [r0]                                  |     r0 = *(0x40238);
    0x00040220 b.w 0x40fac                                   |     void (*0x40fac)() ();
                                                             | label_2:
    0x00040224 mov r1, r8                                    |     r1 = r8;
    0x00040226 bl 0x45f28                                    |     jsonw_luint ();
    0x0004022a movs r0, 0                                    |     r0 = 0;
    0x0004022c 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/tc.iproute2 @ 0x4078c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.print_color_null ()                          | void print_color_null (int16_t arg_20h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x0004078c push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00040790 mov r4, r0                                    |     r4 = r0;
    0x00040792 ldr r6, [pc, 0x5c]                            |     
    0x00040794 mov r7, r1                                    |     r7 = r1;
    0x00040796 mov sb, r2                                    |     sb = r2;
    0x00040798 mov r5, r3                                    |     r5 = r3;
    0x0004079a ldr.w r8, [sp, 0x20]                          |     r8 = *(arg_20h);
    0x0004079e add r6, pc                                    |     r6 = 0x80f94;
    0x000407a0 bl 0x3fe04                                    |     r0 = is_json_context ();
                                                             |     if (r0 == 0) {
    0x000407a4 cbz r0, 0x407c4                               |         goto label_1;
                                                             |     }
    0x000407a6 tst.w r4, 6                                   |     
                                                             |     if ((r4 & 6) == 0) {
    0x000407aa beq 0x407c4                                   |         goto label_1;
                                                             |     }
    0x000407ac ldr r3, [pc, 0x44]                            |     
    0x000407ae add r3, pc                                    |     r3 = 0x80fa6;
    0x000407b0 ldr r0, [r3]                                  |     r0 = *(0x80fa6);
    0x000407b2 cmp.w sb, 0                                   |     
                                                             |     if (sb == 0) {
    0x000407b6 beq 0x407e6                                   |         goto label_2;
                                                             |     }
    0x000407b8 mov r1, sb                                    |     r1 = sb;
    0x000407ba bl 0x46098                                    |     jsonw_null_field ();
                                                             |     do {
                                                             | label_0:
    0x000407be movs r0, 0                                    |         r0 = 0;
    0x000407c0 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_1:
    0x000407c4 bl 0x3fe04                                    |         r0 = is_json_context ();
    0x000407c8 cmp r0, 0                                     |         
    0x000407ca bne 0x407be                                   |         
                                                             |     } while (r0 != 0);
    0x000407cc tst.w r4, 5                                   |     
                                                             |     if ((r4 & 5) == 0) {
    0x000407d0 beq 0x407be                                   |         goto label_0;
                                                             |     }
    0x000407d2 ldr r0, [pc, 0x24]                            |     
    0x000407d4 mov r3, r8                                    |     r3 = r8;
    0x000407d6 mov r2, r5                                    |     r2 = r5;
    0x000407d8 mov r1, r7                                    |     r1 = r7;
    0x000407da ldr r0, [r6, r0]                              |     r0 = *((r6 + r0));
    0x000407dc pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x000407e0 ldr r0, [r0]                                  |     r0 = *(0x407fa);
    0x000407e2 b.w 0x40fac                                   |     void (*0x40fac)() ();
                                                             | label_2:
    0x000407e6 bl 0x45ec4                                    |     jsonw_null ();
    0x000407ea movs r0, 0                                    |     r0 = 0;
    0x000407ec 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/tc.iproute2 @ 0x40544 */
                                                             | #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;
    0x00040544 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00040548 mov r4, r0                                    |     r4 = r0;
    0x0004054a ldrb.w r8, [sp, 0x20]                         |     r8 = *(arg_20h);
    0x0004054e mov r7, r1                                    |     r7 = r1;
    0x00040550 mov sb, r2                                    |     sb = r2;
    0x00040552 mov r6, r3                                    |     r6 = r3;
    0x00040554 ldr r5, [pc, 0x68]                            |     
    0x00040556 add r5, pc                                    |     r5 = 0x80b1a;
    0x00040558 cmp.w r8, 0                                   |     
                                                             |     if (r8 != 0) {
    0x0004055c bne 0x405ac                                   |         goto label_2;
                                                             |     }
    0x0004055e ldr.w sl, [pc, 0x64]                          |     sl = *(0x000405c4);
    0x00040562 add sl, pc                                    |     sl += pc;
                                                             | label_1:
    0x00040564 bl 0x3fe04                                    |     r0 = is_json_context ();
                                                             |     if (r0 == 0) {
    0x00040568 cbz r0, 0x4058a                               |         goto label_3;
                                                             |     }
    0x0004056a tst.w r4, 6                                   |     
                                                             |     if ((r4 & 6) == 0) {
    0x0004056e beq 0x4058a                                   |         goto label_3;
                                                             |     }
    0x00040570 ldr r3, [pc, 0x54]                            |     
    0x00040572 add r3, pc                                    |     r3 = 0x80b3e;
    0x00040574 ldr r0, [r3]                                  |     r0 = *(0x80b3e);
    0x00040576 cmp.w sb, 0                                   |     
                                                             |     if (sb == 0) {
    0x0004057a beq 0x405b4                                   |         goto label_4;
                                                             |     }
    0x0004057c mov r2, r8                                    |     r2 = r8;
    0x0004057e mov r1, sb                                    |     r1 = sb;
    0x00040580 bl 0x45f78                                    |     jsonw_bool_field ();
                                                             |     do {
                                                             | label_0:
    0x00040584 movs r0, 0                                    |         r0 = 0;
    0x00040586 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_3:
    0x0004058a bl 0x3fe04                                    |         r0 = is_json_context ();
    0x0004058e cmp r0, 0                                     |         
    0x00040590 bne 0x40584                                   |         
                                                             |     } while (r0 != 0);
    0x00040592 tst.w r4, 5                                   |     
                                                             |     if ((r4 & 5) == 0) {
    0x00040596 beq 0x40584                                   |         goto label_0;
                                                             |     }
    0x00040598 ldr r0, [pc, 0x30]                            |     
    0x0004059a mov r3, sl                                    |     r3 = sl;
    0x0004059c mov r2, r6                                    |     r2 = r6;
    0x0004059e mov r1, r7                                    |     r1 = r7;
    0x000405a0 ldr r0, [r5, r0]                              |     r0 = *((r5 + r0));
    0x000405a2 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x000405a6 ldr r0, [r0]                                  |     r0 = *(0x405cc);
    0x000405a8 b.w 0x40fac                                   |     void (*0x40fac)() ();
                                                             | label_2:
    0x000405ac ldr.w sl, [pc, 0x20]                          |     
    0x000405b0 add sl, pc                                    |     sl = 0x80b84;
    0x000405b2 b 0x40564                                     |     goto label_1;
                                                             | label_4:
    0x000405b4 mov r1, r8                                    |     r1 = r8;
    0x000405b6 bl 0x45ea4                                    |     jsonw_bool ();
    0x000405ba movs r0, 0                                    |     r0 = 0;
    0x000405bc 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/tc.iproute2 @ 0x3ff84 */
                                                                 | #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;
    0x0003ff84 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0003ff88 mov r4, r0                                        |     r4 = r0;
    0x0003ff8a ldr r7, [pc, 0x60]                                |     
    0x0003ff8c mov r6, r1                                        |     r6 = r1;
    0x0003ff8e mov r5, r2                                        |     r5 = r2;
    0x0003ff90 mov sl, r3                                        |     sl = r3;
    0x0003ff92 ldrd r8, sb, [sp, 0x20]                           |     __asm ("ldrd r8, sb, [arg_20h]");
    0x0003ff96 add r7, pc                                        |     r7 = 0x7ff88;
    0x0003ff98 bl 0x3fe04                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x0003ff9c cbz r0, 0x3ffbc                                   |         goto label_1;
                                                                 |     }
    0x0003ff9e tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x0003ffa2 beq 0x3ffbc                                       |         goto label_1;
                                                                 |     }
    0x0003ffa4 ldr r3, [pc, 0x48]                                |     
    0x0003ffa6 mov r2, r8                                        |     r2 = r8;
    0x0003ffa8 add r3, pc                                        |     r3 = 0x7ff9c;
    0x0003ffaa ldr r0, [r3]                                      |     r0 = *(0x7ff9c);
    0x0003ffac mov r3, sb                                        |     r3 = sb;
                                                                 |     if (r5 == 0) {
    0x0003ffae cbz r5, 0x3ffe0                                   |         goto label_2;
                                                                 |     }
    0x0003ffb0 mov r1, r5                                        |     r1 = r5;
    0x0003ffb2 bl 0x4607c                                        |     jsonw_s64_field ();
                                                                 |     do {
                                                                 | label_0:
    0x0003ffb6 movs r0, 0                                        |         r0 = 0;
    0x0003ffb8 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_1:
    0x0003ffbc bl 0x3fe04                                        |         r0 = is_json_context ();
    0x0003ffc0 cmp r0, 0                                         |         
    0x0003ffc2 bne 0x3ffb6                                       |         
                                                                 |     } while (r0 != 0);
    0x0003ffc4 tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x0003ffc8 beq 0x3ffb6                                       |         goto label_0;
                                                                 |     }
    0x0003ffca ldr r3, [pc, 0x28]                                |     r3 = *(0x3fff6);
    0x0003ffcc mov r2, sl                                        |     r2 = sl;
    0x0003ffce mov r1, r6                                        |     r1 = r6;
    0x0003ffd0 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x0003ffd2 strd r8, sb, [sp, 0x20]                           |     __asm ("strd r8, sb, [sp, 0x20]");
    0x0003ffd6 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x0003ffda ldr r0, [r3]                                      |     r0 = *(0x3fff6);
    0x0003ffdc b.w 0x40fac                                       |     void (*0x40fac)() ();
                                                                 | label_2:
    0x0003ffe0 bl 0x45f54                                        |     jsonw_s64 ();
    0x0003ffe4 movs r0, 0                                        |     r0 = 0;
    0x0003ffe6 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/tc.iproute2 @ 0x403ac */
                                                             | #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;
    0x000403ac push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x000403b0 mov r4, r0                                    |     r4 = r0;
    0x000403b2 ldr r6, [pc, 0x8c]                            |     
    0x000403b4 mov r7, r1                                    |     r7 = r1;
    0x000403b6 mov sb, r2                                    |     sb = r2;
    0x000403b8 mov r5, r3                                    |     r5 = r3;
    0x000403ba ldr.w r8, [sp, 0x20]                          |     r8 = *(arg_20h);
    0x000403be add r6, pc                                    |     r6 = 0x80804;
    0x000403c0 bl 0x3fe04                                    |     r0 = is_json_context ();
                                                             |     if (r0 == 0) {
    0x000403c4 cbz r0, 0x40402                               |         goto label_1;
                                                             |     }
    0x000403c6 tst.w r4, 6                                   |     
                                                             |     if ((r4 & 6) == 0) {
    0x000403ca beq 0x40402                                   |         goto label_1;
                                                             |     }
    0x000403cc subs.w r2, sb, 0                              |     r2 = sb - 0;
    0x000403d0 ldr r3, [pc, 0x70]                            |     
    0x000403d2 it ne                                         |     
                                                             |     if (r2 == sb) {
    0x000403d4 movne r2, 1                                   |         r2 = 1;
                                                             |     }
    0x000403d6 cmp.w r8, 0                                   |     
    0x000403da it ne                                         |     
                                                             |     if (r8 == 0) {
    0x000403dc movne r2, 0                                   |         r2 = 0;
                                                             |     }
    0x000403de add r3, pc                                    |     r3 = 0x80826;
    0x000403e0 ldr r0, [r3]                                  |     r0 = *(0x80826);
                                                             |     if (r2 != 0) {
    0x000403e2 cbnz r2, 0x40432                              |         goto label_2;
                                                             |     }
    0x000403e4 clz r3, sb                                    |     r3 &= sb;
    0x000403e8 cmp.w r8, 0                                   |     
    0x000403ec lsr.w r3, r3, 5                               |     r3 >>= 5;
    0x000403f0 it eq                                         |     
                                                             |     if (r8 != 0) {
    0x000403f2 moveq r3, 0                                   |         r3 = 0;
                                                             |     }
                                                             |     if (r3 == 0) {
    0x000403f4 cbz r3, 0x40424                               |         goto label_3;
                                                             |     }
    0x000403f6 mov r1, r8                                    |     r1 = r8;
    0x000403f8 bl 0x45e84                                    |     jsonw_string ();
                                                             |     do {
                                                             | label_0:
    0x000403fc movs r0, 0                                    |         r0 = 0;
    0x000403fe pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_1:
    0x00040402 bl 0x3fe04                                    |         r0 = is_json_context ();
    0x00040406 cmp r0, 0                                     |         
    0x00040408 bne 0x403fc                                   |         
                                                             |     } while (r0 != 0);
    0x0004040a tst.w r4, 5                                   |     
                                                             |     if ((r4 & 5) == 0) {
    0x0004040e beq 0x403fc                                   |         goto label_0;
                                                             |     }
    0x00040410 ldr r0, [pc, 0x34]                            |     
    0x00040412 mov r3, r8                                    |     r3 = r8;
    0x00040414 mov r2, r5                                    |     r2 = r5;
    0x00040416 mov r1, r7                                    |     r1 = r7;
    0x00040418 ldr r0, [r6, r0]                              |     r0 = *((r6 + r0));
    0x0004041a pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x0004041e ldr r0, [r0]                                  |     r0 = *(0x40448);
    0x00040420 b.w 0x40fac                                   |     void (*0x40fac)() ();
                                                             | label_3:
    0x00040424 mov r2, r8                                    |     r2 = r8;
    0x00040426 mov r1, sb                                    |     r1 = sb;
    0x00040428 bl 0x45f60                                    |     jsonw_string_field ();
    0x0004042c movs r0, 0                                    |     r0 = 0;
    0x0004042e invalid                                       |     
    0x00040430 strh r0, [r6, 0x3e]                           |     *((r6 + 0x3e)) = r0;
                                                             | label_2:
    0x00040432 mov r1, sb                                    |     r1 = sb;
    0x00040434 bl 0x45cc4                                    |     jsonw_name ();
    0x00040438 movs r0, 0                                    |     r0 = 0;
    0x0004043a 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/tc.iproute2 @ 0x40154 */
                                                             | #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;
    0x00040154 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00040158 mov r4, r0                                    |     r4 = r0;
    0x0004015a ldr r7, [pc, 0x60]                            |     
    0x0004015c mov r6, r1                                    |     r6 = r1;
    0x0004015e mov r5, r2                                    |     r5 = r2;
    0x00040160 mov sl, r3                                    |     sl = r3;
    0x00040162 ldrd r8, sb, [sp, 0x20]                       |     __asm ("ldrd r8, sb, [arg_20h]");
    0x00040166 add r7, pc                                    |     r7 = 0x80328;
    0x00040168 bl 0x3fe04                                    |     r0 = is_json_context ();
                                                             |     if (r0 == 0) {
    0x0004016c cbz r0, 0x4018c                               |         goto label_1;
                                                             |     }
    0x0004016e tst.w r4, 6                                   |     
                                                             |     if ((r4 & 6) == 0) {
    0x00040172 beq 0x4018c                                   |         goto label_1;
                                                             |     }
    0x00040174 ldr r3, [pc, 0x48]                            |     
    0x00040176 mov r2, r8                                    |     r2 = r8;
    0x00040178 add r3, pc                                    |     r3 = 0x8033c;
    0x0004017a ldr r0, [r3]                                  |     r0 = *(0x8033c);
    0x0004017c mov r3, sb                                    |     r3 = sb;
                                                             |     if (r5 == 0) {
    0x0004017e cbz r5, 0x401b0                               |         goto label_2;
                                                             |     }
    0x00040180 mov r1, r5                                    |     r1 = r5;
    0x00040182 bl 0x45fc8                                    |     jsonw_u64_field ();
                                                             |     do {
                                                             | label_0:
    0x00040186 movs r0, 0                                    |         r0 = 0;
    0x00040188 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_1:
    0x0004018c bl 0x3fe04                                    |         r0 = is_json_context ();
    0x00040190 cmp r0, 0                                     |         
    0x00040192 bne 0x40186                                   |         
                                                             |     } while (r0 != 0);
    0x00040194 tst.w r4, 5                                   |     
                                                             |     if ((r4 & 5) == 0) {
    0x00040198 beq 0x40186                                   |         goto label_0;
                                                             |     }
    0x0004019a ldr r3, [pc, 0x28]                            |     r3 = *(0x401c6);
    0x0004019c mov r2, sl                                    |     r2 = sl;
    0x0004019e mov r1, r6                                    |     r1 = r6;
    0x000401a0 ldr r3, [r7, r3]                              |     r3 = *((r7 + r3));
    0x000401a2 strd r8, sb, [sp, 0x20]                       |     __asm ("strd r8, sb, [sp, 0x20]");
    0x000401a6 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x000401a8 blx lr                                        |     lr ();
    0x000401aa ldr r0, [r3]                                  |     r0 = *(0x401c6);
    0x000401ac b.w 0x40fac                                   |     void (*0x40fac)() ();
                                                             | label_2:
    0x000401b0 bl 0x45f10                                    |     jsonw_u64 ();
    0x000401b4 movs r0, 0                                    |     r0 = 0;
    0x000401b6 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/tc.iproute2 @ 0x400e0 */
                                                             | #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;
    0x000400e0 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x000400e4 mov r4, r0                                    |     r4 = r0;
    0x000400e6 ldr r6, [pc, 0x60]                            |     
    0x000400e8 mov r7, r1                                    |     r7 = r1;
    0x000400ea mov sb, r2                                    |     sb = r2;
    0x000400ec mov r5, r3                                    |     r5 = r3;
    0x000400ee ldr.w r8, [sp, 0x20]                          |     r8 = *(arg_20h);
    0x000400f2 add r6, pc                                    |     r6 = 0x80240;
    0x000400f4 bl 0x3fe04                                    |     r0 = is_json_context ();
                                                             |     if (r0 == 0) {
    0x000400f8 cbz r0, 0x4011a                               |         goto label_1;
                                                             |     }
    0x000400fa tst.w r4, 6                                   |     
                                                             |     if ((r4 & 6) == 0) {
    0x000400fe beq 0x4011a                                   |         goto label_1;
                                                             |     }
    0x00040100 ldr r3, [pc, 0x48]                            |     
    0x00040102 add r3, pc                                    |     r3 = 0x80252;
    0x00040104 ldr r0, [r3]                                  |     r0 = *(0x80252);
    0x00040106 cmp.w sb, 0                                   |     
                                                             |     if (sb == 0) {
    0x0004010a beq 0x4013c                                   |         goto label_2;
                                                             |     }
    0x0004010c mov r2, r8                                    |     r2 = r8;
    0x0004010e mov r1, sb                                    |     r1 = sb;
    0x00040110 bl 0x45fb0                                    |     jsonw_uint_field ();
                                                             |     do {
                                                             | label_0:
    0x00040114 movs r0, 0                                    |         r0 = 0;
    0x00040116 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_1:
    0x0004011a bl 0x3fe04                                    |         r0 = is_json_context ();
    0x0004011e cmp r0, 0                                     |         
    0x00040120 bne 0x40114                                   |         
                                                             |     } while (r0 != 0);
    0x00040122 tst.w r4, 5                                   |     
                                                             |     if ((r4 & 5) == 0) {
    0x00040126 beq 0x40114                                   |         goto label_0;
                                                             |     }
    0x00040128 ldr r0, [pc, 0x24]                            |     
    0x0004012a mov r3, r8                                    |     r3 = r8;
    0x0004012c mov r2, r5                                    |     r2 = r5;
    0x0004012e mov r1, r7                                    |     r1 = r7;
    0x00040130 ldr r0, [r6, r0]                              |     r0 = *((r6 + r0));
    0x00040132 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x00040136 ldr r0, [r0]                                  |     r0 = *(0x40150);
    0x00040138 b.w 0x40fac                                   |     void (*0x40fac)() ();
                                                             | label_2:
    0x0004013c mov r1, r8                                    |     r1 = r8;
    0x0004013e bl 0x45f00                                    |     jsonw_uint ();
    0x00040142 movs r0, 0                                    |     r0 = 0;
    0x00040144 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |     
                                                             | }

[*] Function fprintf used 2 times tc.iproute2