[*] Binary protection state of tc.iproute2

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


[*] Function printf tear down of tc.iproute2

    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x42078 */
                                                             | #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_20h;
                                                             |     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;
    0x00042078 push.w {r4, r5, r6, r7, r8, sl, fp, lr}       |     
    0x0004207c mov r7, r2                                    |     r7 = r2;
    0x0004207e ldr r2, [pc, 0xac]                            |     
    0x00042080 mov r6, r3                                    |     r6 = r3;
    0x00042082 sub sp, 0x58                                  |     
    0x00042084 mov r4, r0                                    |     r4 = r0;
    0x00042086 ldr r3, [pc, 0xa8]                            |     r3 = *(0x42132);
    0x00042088 mov r8, r1                                    |     r8 = r1;
    0x0004208a add r2, pc                                    |     r2 = 0x841bc;
    0x0004208c ldr r5, [pc, 0xa4]                            |     
    0x0004208e ldrd sl, fp, [sp, 0x78]                       |     __asm ("ldrd sl, fp, [arg_78h]");
    0x00042092 ldr r3, [r2, r3]                              |     
    0x00042094 add r5, pc                                    |     r5 = 0x841cc;
    0x00042096 ldr r3, [r3]                                  |     r3 = *(0x841bc);
    0x00042098 str r3, [sp, 0x54]                            |     var_54h = r3;
    0x0004209a mov.w r3, 0                                   |     r3 = 0;
    0x0004209e bl 0x418bc                                    |     r0 = is_json_context ();
                                                             |     if (r0 != 0) {
    0x000420a2 cbz r0, 0x420aa                               |         
    0x000420a4 tst.w r4, 6                                   |         
                                                             |         if ((r4 & 6) != 0) {
    0x000420a8 bne 0x420fe                                   |             goto label_1;
                                                             |         }
                                                             |     }
    0x000420aa bl 0x418bc                                    |     r0 = is_json_context ();
    0x000420ae cbz r0, 0x420cc                               |     
                                                             |     while ((r4 & 5) == 0) {
                                                             | label_0:
    0x000420b0 ldr r2, [pc, 0x84]                            |         
    0x000420b2 ldr r3, [pc, 0x7c]                            |         r3 = *(0x42132);
    0x000420b4 add r2, pc                                    |         r2 = 0x841f0;
    0x000420b6 ldr r3, [r2, r3]                              |         r3 = *(0x841f0);
    0x000420b8 ldr r2, [r3]                                  |         r2 = *(0x841f0);
    0x000420ba ldr r3, [sp, 0x54]                            |         r3 = var_54h;
    0x000420bc eors r2, r3                                   |         r2 ^= r3;
    0x000420be mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x000420c2 bne 0x42126                                   |             goto label_2;
                                                             |         }
    0x000420c4 movs r0, 0                                    |         r0 = 0;
    0x000420c6 add sp, 0x58                                  |         
    0x000420c8 pop.w {r4, r5, r6, r7, r8, sl, fp, pc}        |         
    0x000420cc tst.w r4, 5                                   |         
    0x000420d0 beq 0x420b0                                   |         
                                                             |     }
    0x000420d2 ldr r2, [pc, 0x68]                            |     
    0x000420d4 ldr r3, [pc, 0x58]                            |     r3 = *(0x42130);
    0x000420d6 add r2, pc                                    |     r2 = 0x84218;
    0x000420d8 ldr r3, [r2, r3]                              |     r3 = *(0x84218);
    0x000420da ldr r2, [r3]                                  |     r2 = *(0x84218);
    0x000420dc ldr r3, [sp, 0x54]                            |     r3 = var_54h;
    0x000420de eors r2, r3                                   |     r2 ^= r3;
    0x000420e0 mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 == r3) {
    0x000420e4 bne 0x42126                                   |         
    0x000420e6 ldr r3, [pc, 0x58]                            |         r3 = *(0x42142);
    0x000420e8 mov r2, r6                                    |         r2 = r6;
    0x000420ea mov r1, r8                                    |         r1 = r8;
    0x000420ec ldr r3, [r5, r3]                              |         r3 = *((r5 + r3));
    0x000420ee strd sl, fp, [sp, 0x78]                       |         __asm ("strd sl, fp, [var_20hx78]");
    0x000420f0 add r3, sp, 0x78                              |         r3 = sp + 0x78;
    0x000420f2 ldr r0, [r3]                                  |         r0 = *(0x42142);
    0x000420f4 add sp, 0x58                                  |         
    0x000420f6 pop.w {r4, r5, r6, r7, r8, sl, fp, lr}        |         
    0x000420fa b.w 0x42a14                                   |         void (*0x42a14)() ();
                                                             | label_1:
    0x000420fe ldr r1, [pc, 0x44]                            |         
    0x00042100 movs r3, 0x40                                 |         r3 = 0x40;
    0x00042102 add r4, sp, 0x14                              |         r4 += var_14h;
    0x00042104 movs r2, 1                                    |         r2 = 1;
    0x00042106 mov r0, r4                                    |         r0 = r4;
    0x00042108 strd sl, fp, [sp, 8]                          |         __asm ("strd sl, fp, [var_8h]");
    0x0004210c add r1, pc                                    |         r1 = 0x84256;
    0x0004210e str r1, [sp]                                  |         *(sp) = r1;
    0x00042110 mov r1, r3                                    |         r1 = r3;
    0x00042112 blx 0x92e0                                    |         fcn_000092e0 ();
    0x00042116 movs r3, 0                                    |         r3 = 0;
    0x00042118 mov r2, r7                                    |         r2 = r7;
    0x0004211a movs r1, 6                                    |         r1 = 6;
    0x0004211c str r4, [sp]                                  |         *(sp) = r4;
    0x0004211e movs r0, 2                                    |         r0 = 2;
    0x00042120 bl 0x41e50                                    |         print_color_string ();
    0x00042124 b 0x420b0                                     |         goto label_0;
                                                             |     }
                                                             | label_2:
    0x00042126 blx 0x93ac                                    |     fcn_000093ac ();
    0x0004212a nop                                           |     
    0x0004212c lsrs r6, r5, 0x10                             |     r6 = r5 >> 0x10;
    0x0004212e movs r2, r0                                   |     r2 = r0;
    0x00042130 lsls r0, r0, 0xc                              |     r0 <<= 0xc;
    0x00042132 movs r0, r0                                   |     
    0x00042134 lsrs r4, r4, 0x10                             |     r4 >>= 0x10;
    0x00042136 movs r2, r0                                   |     r2 = r0;
    0x00042138 lsrs r4, r0, 0x10                             |     r4 = r0 >> 0x10;
    0x0004213a movs r2, r0                                   |     r2 = r0;
    0x0004213c lsrs r2, r4, 0xf                              |     r2 = r4 >> 0xf;
    0x0004213e movs r2, r0                                   |     r2 = r0;
    0x00042140 lsls r0, r3, 0xc                              |     r0 = r3 << 0xc;
    0x00042142 movs r0, r0                                   |     
                                                             |     if (r4 != 0) {
    0x00042144 cbnz r4, 0x42192                              |         void (*0x42192)() ();
                                                             |     }
    0x00042146 movs r1, r0                                   |     r1 = r0;
                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x41f58 */
                                                                 | #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;
    0x00041f58 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x00041f5c mov r4, r0                                        |     r4 = r0;
    0x00041f5e ldrb.w r8, [sp, 0x20]                             |     r8 = *(arg_20h);
    0x00041f62 mov r7, r1                                        |     r7 = r1;
    0x00041f64 mov sb, r2                                        |     sb = r2;
    0x00041f66 mov r6, r3                                        |     r6 = r3;
    0x00041f68 ldr r5, [pc, 0x68]                                |     
    0x00041f6a add r5, pc                                        |     r5 = 0x83f42;
    0x00041f6c cmp.w r8, 0                                       |     
                                                                 |     if (r8 != 0) {
    0x00041f70 bne 0x41fc0                                       |         goto label_2;
                                                                 |     }
    0x00041f72 ldr.w sl, [pc, 0x64]                              |     sl = *(0x00041fd8);
    0x00041f76 add sl, pc                                        |     sl += pc;
                                                                 | label_1:
    0x00041f78 bl 0x418bc                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x00041f7c cbz r0, 0x41f9e                                   |         goto label_3;
                                                                 |     }
    0x00041f7e tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x00041f82 beq 0x41f9e                                       |         goto label_3;
                                                                 |     }
    0x00041f84 ldr r3, [pc, 0x54]                                |     
    0x00041f86 add r3, pc                                        |     r3 = 0x83f66;
    0x00041f88 ldr r0, [r3]                                      |     r0 = *(0x83f66);
    0x00041f8a cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00041f8e beq 0x41fc8                                       |         goto label_4;
                                                                 |     }
    0x00041f90 mov r2, r8                                        |     r2 = r8;
    0x00041f92 mov r1, sb                                        |     r1 = sb;
    0x00041f94 bl 0x47b7c                                        |     jsonw_bool_field ();
                                                                 |     do {
                                                                 | label_0:
    0x00041f98 movs r0, 0                                        |         r0 = 0;
    0x00041f9a pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_3:
    0x00041f9e bl 0x418bc                                        |         r0 = is_json_context ();
    0x00041fa2 cmp r0, 0                                         |         
    0x00041fa4 bne 0x41f98                                       |         
                                                                 |     } while (r0 != 0);
    0x00041fa6 tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x00041faa beq 0x41f98                                       |         goto label_0;
                                                                 |     }
    0x00041fac ldr r0, [pc, 0x30]                                |     
    0x00041fae mov r3, sl                                        |     r3 = sl;
    0x00041fb0 mov r2, r6                                        |     r2 = r6;
    0x00041fb2 mov r1, r7                                        |     r1 = r7;
    0x00041fb4 ldr r0, [r5, r0]                                  |     r0 = *((r5 + r0));
    0x00041fb6 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x00041fba ldr r0, [r0]                                      |     r0 = *(0x41fe0);
    0x00041fbc b.w 0x42a14                                       |     void (*0x42a14)() ();
                                                                 | label_2:
    0x00041fc0 ldr.w sl, [pc, 0x20]                              |     
    0x00041fc4 add sl, pc                                        |     sl = 0x83fac;
    0x00041fc6 b 0x41f78                                         |     goto label_1;
                                                                 | label_4:
    0x00041fc8 mov r1, r8                                        |     r1 = r8;
    0x00041fca bl 0x47aa8                                        |     jsonw_bool ();
    0x00041fce movs r0, 0                                        |     r0 = 0;
    0x00041fd0 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-80367616.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x41d68 */
                                                         | #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;
    0x00041d68 push.w {r4, r5, r6, r7, r8, lr}           |     
    0x00041d6c mov r4, r0                                |     r4 = r0;
    0x00041d6e ldr r6, [pc, 0x6c]                        |     
    0x00041d70 mov r8, r1                                |     r8 = r1;
    0x00041d72 mov r7, r2                                |     r7 = r2;
    0x00041d74 mov r5, r3                                |     r5 = r3;
    0x00041d76 vpush {d8}                                |     __asm ("vpush {d8}");
    0x00041d7a sub sp, 8                                 |     
    0x00041d7c vmov.f64 d8, d0                           |     __asm ("vmov.f64 d8, d0");
    0x00041d80 add r6, pc                                |     r6 = 0x83b62;
    0x00041d82 bl 0x418bc                                |     r0 = is_json_context ();
                                                         |     if (r0 == 0) {
    0x00041d86 cbz r0, 0x41dac                           |         goto label_1;
                                                         |     }
    0x00041d88 tst.w r4, 6                               |     
                                                         |     if ((r4 & 6) == 0) {
    0x00041d8c beq 0x41dac                               |         goto label_1;
                                                         |     }
    0x00041d8e ldr r3, [pc, 0x50]                        |     
    0x00041d90 vmov.f64 d0, d8                           |     __asm ("vmov.f64 d0, d8");
    0x00041d94 add r3, pc                                |     r3 = 0x83b7a;
    0x00041d96 ldr r0, [r3]                              |     r0 = *(0x83b7a);
                                                         |     if (r7 == 0) {
    0x00041d98 cbz r7, 0x41dd6                           |         goto label_2;
                                                         |     }
    0x00041d9a mov r1, r7                                |     r1 = r7;
    0x00041d9c bl 0x47b94                                |     jsonw_float_field ();
                                                         |     do {
                                                         | label_0:
    0x00041da0 movs r0, 0                                |         r0 = 0;
    0x00041da2 add sp, 8                                 |         
    0x00041da4 vpop {d8}                                 |         __asm ("vpop {d8}");
    0x00041da8 pop.w {r4, r5, r6, r7, r8, pc}            |         
                                                         | label_1:
    0x00041dac bl 0x418bc                                |         r0 = is_json_context ();
    0x00041db0 cmp r0, 0                                 |         
    0x00041db2 bne 0x41da0                               |         
                                                         |     } while (r0 != 0);
    0x00041db4 tst.w r4, 5                               |     
                                                         |     if ((r4 & 5) == 0) {
    0x00041db8 beq 0x41da0                               |         goto label_0;
                                                         |     }
    0x00041dba ldr r3, [pc, 0x28]                        |     r3 = *(0x41de6);
    0x00041dbc mov r2, r5                                |     r2 = r5;
    0x00041dbe mov r1, r8                                |     r1 = r8;
    0x00041dc0 ldr r3, [r6, r3]                          |     r3 = *((r6 + r3));
    0x00041dc2 vstr d8, [sp]                             |     __asm ("vstr d8, [sp]");
    0x00041dc6 ldr r0, [r3]                              |     r0 = *(0x41de6);
    0x00041dc8 bl 0x42a14                                |     color_fprintf ()
    0x00041dcc add sp, 8                                 |     
    0x00041dce vpop {d8}                                 |     __asm ("vpop {d8}");
    0x00041dd2 pop.w {r4, r5, r6, r7, r8, pc}            |     
                                                         | label_2:
    0x00041dd6 bl 0x47ad4                                |     jsonw_float ();
    0x00041dda b 0x41da0                                 |     goto label_0;
                                                         | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x42148 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.print_color_hex ()                       | void print_color_hex (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                         |     int16_t var_ch;
                                                         |     int16_t var_4ch;
                                                         |     int16_t var_20h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
                                                         |     r3 = arg4;
    0x00042148 push.w {r4, r5, r6, r7, r8, sb, lr}       |     
    0x0004214c mov sb, r2                                |     sb = r2;
    0x0004214e ldr r2, [pc, 0xbc]                        |     
    0x00042150 mov r6, r3                                |     r6 = r3;
    0x00042152 sub sp, 0x54                              |     
    0x00042154 mov r4, r0                                |     r4 = r0;
    0x00042156 ldr r3, [pc, 0xb8]                        |     r3 = *(0x42212);
    0x00042158 mov r7, r1                                |     r7 = r1;
    0x0004215a add r2, pc                                |     r2 = 0x8436c;
    0x0004215c ldr r5, [pc, 0xb4]                        |     
    0x0004215e ldr.w r8, [sp, 0x70]                      |     r8 = var_20h;
    0x00042162 ldr r3, [r2, r3]                          |     
    0x00042164 add r5, pc                                |     r5 = 0x8437c;
    0x00042166 ldr r3, [r3]                              |     r3 = *(0x8436c);
    0x00042168 str r3, [sp, 0x4c]                        |     var_4ch = r3;
    0x0004216a mov.w r3, 0                               |     r3 = 0;
    0x0004216e bl 0x418bc                                |     r0 = is_json_context ();
                                                         |     if (r0 != 0) {
    0x00042172 cbz r0, 0x4217a                           |         
    0x00042174 tst.w r4, 6                               |         
                                                         |         if ((r4 & 6) != 0) {
    0x00042178 bne 0x421cc                               |             goto label_1;
                                                         |         }
                                                         |     }
    0x0004217a bl 0x418bc                                |     r0 = is_json_context ();
    0x0004217e cbz r0, 0x4219c                           |     
                                                         |     while ((r4 & 5) == 0) {
                                                         | label_0:
    0x00042180 ldr r2, [pc, 0x94]                        |         
    0x00042182 ldr r3, [pc, 0x8c]                        |         r3 = *(0x42212);
    0x00042184 add r2, pc                                |         r2 = 0x843a0;
    0x00042186 ldr r3, [r2, r3]                          |         r3 = *(0x843a0);
    0x00042188 ldr r2, [r3]                              |         r2 = *(0x843a0);
    0x0004218a ldr r3, [sp, 0x4c]                        |         r3 = var_4ch;
    0x0004218c eors r2, r3                               |         r2 ^= r3;
    0x0004218e mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x00042192 bne 0x42206                               |             goto label_2;
                                                         |         }
    0x00042194 movs r0, 0                                |         r0 = 0;
    0x00042196 add sp, 0x54                              |         
    0x00042198 pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
    0x0004219c tst.w r4, 5                               |         
    0x000421a0 beq 0x42180                               |         
                                                         |     }
    0x000421a2 ldr r2, [pc, 0x78]                        |     
    0x000421a4 ldr r3, [pc, 0x68]                        |     r3 = *(0x42210);
    0x000421a6 add r2, pc                                |     r2 = 0x843c8;
    0x000421a8 ldr r3, [r2, r3]                          |     r3 = *(0x843c8);
    0x000421aa ldr r2, [r3]                              |     r2 = *(0x843c8);
    0x000421ac ldr r3, [sp, 0x4c]                        |     r3 = var_4ch;
    0x000421ae eors r2, r3                               |     r2 ^= r3;
    0x000421b0 mov.w r3, 0                               |     r3 = 0;
                                                         |     if (r2 == r3) {
    0x000421b4 bne 0x42206                               |         
    0x000421b6 ldr r0, [pc, 0x68]                        |         
    0x000421b8 mov r3, r8                                |         r3 = r8;
    0x000421ba mov r2, r6                                |         r2 = r6;
    0x000421bc mov r1, r7                                |         r1 = r7;
    0x000421be ldr r0, [r5, r0]                          |         r0 = *((r5 + r0));
    0x000421c0 ldr r0, [r0]                              |         r0 = *(0x42222);
    0x000421c2 add sp, 0x54                              |         
    0x000421c4 pop.w {r4, r5, r6, r7, r8, sb, lr}        |         
    0x000421c8 b.w 0x42a14                               |         void (*0x42a14)() ();
                                                         | label_1:
    0x000421cc ldr r2, [pc, 0x54]                        |         
    0x000421ce add r4, sp, 0xc                           |         r4 += var_ch;
    0x000421d0 movs r3, 0x40                             |         r3 = 0x40;
    0x000421d2 mov r0, r4                                |         r0 = r4;
    0x000421d4 mov r1, r3                                |         r1 = r3;
    0x000421d6 add r2, pc                                |         r2 = 0x843fe;
    0x000421d8 strd r2, r8, [sp]                         |         __asm ("strd r2, r8, [sp]");
    0x000421dc movs r2, 1                                |         r2 = 1;
    0x000421de blx 0x92e0                                |         fcn_000092e0 ();
    0x000421e2 cmp.w sb, 0                               |         
                                                         |         if (sb != 0) {
    0x000421e6 beq 0x421f8                               |             
    0x000421e8 ldr r3, [pc, 0x3c]                        |             
    0x000421ea mov r2, r4                                |             r2 = r4;
    0x000421ec mov r1, sb                                |             r1 = sb;
    0x000421ee add r3, pc                                |             r3 = 0x8441a;
    0x000421f0 ldr r0, [r3]                              |             r0 = *(0x8441a);
    0x000421f2 bl 0x47b64                                |             jsonw_string_field ();
    0x000421f6 b 0x42180                                 |             goto label_0;
                                                         |         }
    0x000421f8 ldr r3, [pc, 0x30]                        |         
    0x000421fa mov r1, r4                                |         r1 = r4;
    0x000421fc add r3, pc                                |         r3 = 0x8442c;
    0x000421fe ldr r0, [r3]                              |         r0 = *(0x8442c);
    0x00042200 bl 0x47a88                                |         jsonw_string ();
    0x00042204 b 0x42180                                 |         goto label_0;
                                                         |     }
                                                         | label_2:
    0x00042206 blx 0x93ac                                |     fcn_000093ac ();
    0x0004220a nop                                       |     
    0x0004220c lsrs r6, r3, 0xd                          |     r6 = r3 >> 0xd;
    0x0004220e movs r2, r0                               |     r2 = r0;
    0x00042210 lsls r0, r0, 0xc                          |     r0 <<= 0xc;
    0x00042212 movs r0, r0                               |     
    0x00042214 lsrs r4, r2, 0xd                          |     r4 = r2 >> 0xd;
    0x00042216 movs r2, r0                               |     r2 = r0;
    0x00042218 lsrs r4, r6, 0xc                          |     r4 = r6 >> 0xc;
    0x0004221a movs r2, r0                               |     r2 = r0;
    0x0004221c lsrs r2, r2, 0xc                          |     r2 >>= 0xc;
    0x0004221e movs r2, r0                               |     r2 = r0;
    0x00042220 lsls r0, r3, 0xc                          |     r0 = r3 << 0xc;
    0x00042222 movs r0, r0                               |     
    0x00042224 ldm r3, {r1, r2, r3, r4, r5}              |     r1 = *(r3);
                                                         |     r2 = *((r3 + 4));
                                                         |     r3 = *((r3 + 8));
                                                         |     r4 = *((r3 + 12));
                                                         |     r5 = *((r3 + 16));
    0x00042226 movs r0, r0                               |     
    0x00042228 ldr r6, [r0, 0x68]                        |     r6 = *((r0 + 0x68));
    0x0004222a movs r2, r0                               |     r2 = r0;
    0x0004222c ldr r0, [r7, 0x64]                        |     r0 = *((r7 + 0x64));
    0x0004222e movs r2, r0                               |     r2 = r0;
                                                         | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x41ab0 */
                                                             | #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 (? >= ?) {
    0x00041ab0 ldrbmi lr, [r0, sp, lsr 18]!                  |         
                                                             |     }
    0x00041ab4 mov r4, r0                                    |     r4 = r0;
    0x00041ab6 ldr r6, [pc, 0x60]                            |     
    0x00041ab8 mov r7, r1                                    |     r7 = r1;
    0x00041aba mov sb, r2                                    |     sb = r2;
    0x00041abc mov r5, r3                                    |     r5 = r3;
    0x00041abe ldrb.w r8, [sp, 0x20]                         |     r8 = *(arg_20h);
    0x00041ac2 add r6, pc                                    |     r6 = 0x835e0;
    0x00041ac4 bl 0x418bc                                    |     r0 = is_json_context ();
                                                             |     if (r0 == 0) {
    0x00041ac8 cbz r0, 0x41aea                               |         goto label_1;
                                                             |     }
    0x00041aca tst.w r4, 6                                   |     
                                                             |     if ((r4 & 6) == 0) {
    0x00041ace beq 0x41aea                                   |         goto label_1;
                                                             |     }
    0x00041ad0 ldr r3, [pc, 0x48]                            |     
    0x00041ad2 add r3, pc                                    |     r3 = 0x835f2;
    0x00041ad4 ldr r0, [r3]                                  |     r0 = *(0x835f2);
    0x00041ad6 cmp.w sb, 0                                   |     
                                                             |     if (sb == 0) {
    0x00041ada beq 0x41b0c                                   |         goto label_2;
                                                             |     }
    0x00041adc mov r2, r8                                    |     r2 = r8;
    0x00041ade mov r1, sb                                    |     r1 = sb;
    0x00041ae0 bl 0x47c08                                    |     jsonw_hhu_field ();
                                                             |     do {
                                                             | label_0:
    0x00041ae4 movs r0, 0                                    |         r0 = 0;
    0x00041ae6 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_1:
    0x00041aea bl 0x418bc                                    |         r0 = is_json_context ();
    0x00041aee cmp r0, 0                                     |         
    0x00041af0 bne 0x41ae4                                   |         
                                                             |     } while (r0 != 0);
    0x00041af2 tst.w r4, 5                                   |     
                                                             |     if ((r4 & 5) == 0) {
    0x00041af6 beq 0x41ae4                                   |         goto label_0;
                                                             |     }
    0x00041af8 ldr r0, [pc, 0x24]                            |     
    0x00041afa mov r3, r8                                    |     r3 = r8;
    0x00041afc mov r2, r5                                    |     r2 = r5;
    0x00041afe mov r1, r7                                    |     r1 = r7;
    0x00041b00 ldr r0, [r6, r0]                              |     r0 = *((r6 + r0));
    0x00041b02 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x00041b06 ldr r0, [r0]                                  |     r0 = *(0x41b20);
    0x00041b08 b.w 0x42a14                                   |     void (*0x42a14)() ();
                                                             | label_2:
    0x00041b0c mov r1, r8                                    |     r1 = r8;
    0x00041b0e bl 0x47ae4                                    |     jsonw_hhu ();
    0x00041b12 movs r0, 0                                    |     r0 = 0;
    0x00041b14 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-80367616.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x41b24 */
                                                                 | #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;
    0x00041b24 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x00041b28 mov r4, r0                                        |     r4 = r0;
    0x00041b2a ldr r6, [pc, 0x60]                                |     
    0x00041b2c mov r7, r1                                        |     r7 = r1;
    0x00041b2e mov sb, r2                                        |     sb = r2;
    0x00041b30 mov r5, r3                                        |     r5 = r3;
    0x00041b32 ldrh.w r8, [sp, 0x20]                             |     r8 = *(arg_20h);
    0x00041b34 strh r0, [r4]                                     |     *(r4) = r0;
    0x00041b36 add r6, pc                                        |     r6 = 0x836c8;
    0x00041b38 bl 0x418bc                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x00041b3c cbz r0, 0x41b5e                                   |         goto label_1;
                                                                 |     }
    0x00041b3e tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x00041b42 beq 0x41b5e                                       |         goto label_1;
                                                                 |     }
    0x00041b44 ldr r3, [pc, 0x48]                                |     
    0x00041b46 add r3, pc                                        |     r3 = 0x836da;
    0x00041b48 ldr r0, [r3]                                      |     r0 = *(0x836da);
    0x00041b4a cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00041b4e beq 0x41b80                                       |         goto label_2;
                                                                 |     }
    0x00041b50 mov r2, r8                                        |     r2 = r8;
    0x00041b52 mov r1, sb                                        |     r1 = sb;
    0x00041b54 bl 0x47c20                                        |     jsonw_hu_field ();
                                                                 |     do {
                                                                 | label_0:
    0x00041b58 movs r0, 0                                        |         r0 = 0;
    0x00041b5a pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_1:
    0x00041b5e bl 0x418bc                                        |         r0 = is_json_context ();
    0x00041b62 cmp r0, 0                                         |         
    0x00041b64 bne 0x41b58                                       |         
                                                                 |     } while (r0 != 0);
    0x00041b66 tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x00041b6a beq 0x41b58                                       |         goto label_0;
                                                                 |     }
    0x00041b6c ldr r0, [pc, 0x24]                                |     
    0x00041b6e mov r3, r8                                        |     r3 = r8;
    0x00041b70 mov r2, r5                                        |     r2 = r5;
    0x00041b72 mov r1, r7                                        |     r1 = r7;
    0x00041b74 ldr r0, [r6, r0]                                  |     r0 = *((r6 + r0));
    0x00041b76 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x00041b7a ldr r0, [r0]                                      |     r0 = *(0x41b94);
    0x00041b7c b.w 0x42a14                                       |     void (*0x42a14)() ();
                                                                 | label_2:
    0x00041b80 mov r1, r8                                        |     r1 = r8;
    0x00041b82 bl 0x47af4                                        |     jsonw_hu ();
    0x00041b86 movs r0, 0                                        |     r0 = 0;
    0x00041b88 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-80367616.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x41cf4 */
                                                                 | #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;
    0x00041cf4 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x00041cf8 mov r4, r0                                        |     r4 = r0;
    0x00041cfa ldr r7, [pc, 0x60]                                |     
    0x00041cfc mov r6, r1                                        |     r6 = r1;
    0x00041cfe mov r5, r2                                        |     r5 = r2;
    0x00041d00 mov sl, r3                                        |     sl = r3;
    0x00041d02 ldrd r8, sb, [sp, 0x20]                           |     __asm ("ldrd r8, sb, [arg_20h]");
    0x00041d06 add r7, pc                                        |     r7 = 0x83a68;
    0x00041d08 bl 0x418bc                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x00041d0c cbz r0, 0x41d2c                                   |         goto label_1;
                                                                 |     }
    0x00041d0e tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x00041d12 beq 0x41d2c                                       |         goto label_1;
                                                                 |     }
    0x00041d14 ldr r3, [pc, 0x48]                                |     
    0x00041d16 mov r2, r8                                        |     r2 = r8;
    0x00041d18 add r3, pc                                        |     r3 = 0x83a7c;
    0x00041d1a ldr r0, [r3]                                      |     r0 = *(0x83a7c);
    0x00041d1c mov r3, sb                                        |     r3 = sb;
                                                                 |     if (r5 == 0) {
    0x00041d1e cbz r5, 0x41d50                                   |         goto label_2;
                                                                 |     }
    0x00041d20 mov r1, r5                                        |     r1 = r5;
    0x00041d22 bl 0x47c50                                        |     jsonw_lluint_field ();
                                                                 |     do {
                                                                 | label_0:
    0x00041d26 movs r0, 0                                        |         r0 = 0;
    0x00041d28 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_1:
    0x00041d2c bl 0x418bc                                        |         r0 = is_json_context ();
    0x00041d30 cmp r0, 0                                         |         
    0x00041d32 bne 0x41d26                                       |         
                                                                 |     } while (r0 != 0);
    0x00041d34 tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x00041d38 beq 0x41d26                                       |         goto label_0;
                                                                 |     }
    0x00041d3a ldr r3, [pc, 0x28]                                |     r3 = *(0x41d66);
    0x00041d3c mov r2, sl                                        |     r2 = sl;
    0x00041d3e mov r1, r6                                        |     r1 = r6;
    0x00041d40 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x00041d42 strd r8, sb, [sp, 0x20]                           |     __asm ("strd r8, sb, [sp, 0x20]");
    0x00041d44 ldrh r0, [r1, 8]                                  |     r0 = *((r1 + 8));
    0x00041d46 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x00041d4a ldr r0, [r3]                                      |     r0 = *(0x41d66);
    0x00041d4c b.w 0x42a14                                       |     void (*0x42a14)() ();
                                                                 | label_2:
    0x00041d50 bl 0x47b3c                                        |     jsonw_lluint ();
    0x00041d54 movs r0, 0                                        |     r0 = 0;
    0x00041d56 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-80367616.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x41c80 */
                                                                 | #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;
    0x00041c80 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x00041c84 mov r4, r0                                        |     r4 = r0;
    0x00041c86 ldr r6, [pc, 0x60]                                |     
    0x00041c88 mov r7, r1                                        |     r7 = r1;
    0x00041c8a mov sb, r2                                        |     sb = r2;
    0x00041c8c mov r5, r3                                        |     r5 = r3;
    0x00041c8e ldr.w r8, [sp, 0x20]                              |     r8 = *(arg_20h);
    0x00041c92 add r6, pc                                        |     r6 = 0x83980;
    0x00041c94 bl 0x418bc                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x00041c98 cbz r0, 0x41cba                                   |         goto label_1;
                                                                 |     }
    0x00041c9a tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x00041c9e beq 0x41cba                                       |         goto label_1;
                                                                 |     }
    0x00041ca0 ldr r3, [pc, 0x48]                                |     
    0x00041ca2 add r3, pc                                        |     r3 = 0x83992;
    0x00041ca4 ldr r0, [r3]                                      |     r0 = *(0x83992);
    0x00041ca6 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00041caa beq 0x41cdc                                       |         goto label_2;
                                                                 |     }
    0x00041cac mov r2, r8                                        |     r2 = r8;
    0x00041cae mov r1, sb                                        |     r1 = sb;
    0x00041cb0 bl 0x47c38                                        |     jsonw_luint_field ();
                                                                 |     do {
                                                                 | label_0:
    0x00041cb4 movs r0, 0                                        |         r0 = 0;
    0x00041cb6 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_1:
    0x00041cba bl 0x418bc                                        |         r0 = is_json_context ();
    0x00041cbe cmp r0, 0                                         |         
    0x00041cc0 bne 0x41cb4                                       |         
                                                                 |     } while (r0 != 0);
    0x00041cc2 tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x00041cc6 beq 0x41cb4                                       |         goto label_0;
                                                                 |     }
    0x00041cc8 ldr r0, [pc, 0x24]                                |     
    0x00041cca mov r3, r8                                        |     r3 = r8;
    0x00041ccc mov r2, r5                                        |     r2 = r5;
    0x00041cce mov r1, r7                                        |     r1 = r7;
    0x00041cd0 ldr r0, [r6, r0]                                  |     r0 = *((r6 + r0));
    0x00041cd2 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x00041cd4 blx lr                                            |     r0 = lr (r4, r3, r2, r1, r0);
    0x00041cd6 ldr r0, [r0]                                      |     r0 = *(0x41cf0);
    0x00041cd8 b.w 0x42a14                                       |     void (*0x42a14)() ();
                                                                 | label_2:
    0x00041cdc mov r1, r8                                        |     r1 = r8;
    0x00041cde bl 0x47b2c                                        |     jsonw_luint ();
    0x00041ce2 movs r0, 0                                        |     r0 = 0;
    0x00041ce4 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-80367616.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x42230 */
                                                             | #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;
    0x00042230 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00042234 mov r4, r0                                    |     r4 = r0;
    0x00042236 ldr r6, [pc, 0x5c]                            |     
    0x00042238 mov r7, r1                                    |     r7 = r1;
    0x0004223a mov sb, r2                                    |     sb = r2;
    0x0004223c mov r5, r3                                    |     r5 = r3;
    0x0004223e ldr.w r8, [sp, 0x20]                          |     r8 = *(arg_20h);
    0x00042242 add r6, pc                                    |     r6 = 0x844dc;
    0x00042244 bl 0x418bc                                    |     r0 = is_json_context ();
                                                             |     if (r0 == 0) {
    0x00042248 cbz r0, 0x42268                               |         goto label_1;
                                                             |     }
    0x0004224a tst.w r4, 6                                   |     
                                                             |     if ((r4 & 6) == 0) {
    0x0004224e beq 0x42268                                   |         goto label_1;
                                                             |     }
    0x00042250 ldr r3, [pc, 0x44]                            |     
    0x00042252 add r3, pc                                    |     r3 = 0x844ee;
    0x00042254 ldr r0, [r3]                                  |     r0 = *(0x844ee);
    0x00042256 cmp.w sb, 0                                   |     
                                                             |     if (sb == 0) {
    0x0004225a beq 0x4228a                                   |         goto label_2;
                                                             |     }
    0x0004225c mov r1, sb                                    |     r1 = sb;
    0x0004225e bl 0x47ca0                                    |     jsonw_null_field ();
                                                             |     do {
                                                             | label_0:
    0x00042262 movs r0, 0                                    |         r0 = 0;
    0x00042264 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_1:
    0x00042268 bl 0x418bc                                    |         r0 = is_json_context ();
    0x0004226c cmp r0, 0                                     |         
    0x0004226e bne 0x42262                                   |         
                                                             |     } while (r0 != 0);
    0x00042270 tst.w r4, 5                                   |     
                                                             |     if ((r4 & 5) == 0) {
    0x00042274 beq 0x42262                                   |         goto label_0;
                                                             |     }
    0x00042276 ldr r0, [pc, 0x24]                            |     
    0x00042278 mov r3, r8                                    |     r3 = r8;
    0x0004227a mov r2, r5                                    |     r2 = r5;
    0x0004227c mov r1, r7                                    |     r1 = r7;
    0x0004227e ldr r0, [r6, r0]                              |     r0 = *((r6 + r0));
    0x00042280 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x00042284 ldr r0, [r0]                                  |     r0 = *(0x4229e);
    0x00042286 b.w 0x42a14                                   |     void (*0x42a14)() ();
                                                             | label_2:
    0x0004228a bl 0x47ac8                                    |     jsonw_null ();
    0x0004228e movs r0, 0                                    |     r0 = 0;
    0x00042290 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-80367616.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x41fe8 */
                                                             | #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;
    0x00041fe8 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00041fec mov r4, r0                                    |     r4 = r0;
    0x00041fee ldrb.w r8, [sp, 0x20]                         |     r8 = *(arg_20h);
    0x00041ff2 mov r7, r1                                    |     r7 = r1;
    0x00041ff4 mov sb, r2                                    |     sb = r2;
    0x00041ff6 mov r6, r3                                    |     r6 = r3;
    0x00041ff8 ldr r5, [pc, 0x68]                            |     
    0x00041ffa add r5, pc                                    |     r5 = 0x84062;
    0x00041ffc cmp.w r8, 0                                   |     
                                                             |     if (r8 != 0) {
    0x00042000 bne 0x42050                                   |         goto label_2;
                                                             |     }
    0x00042002 ldr.w sl, [pc, 0x64]                          |     sl = *(0x00042068);
    0x00042006 add sl, pc                                    |     sl += pc;
                                                             | label_1:
    0x00042008 bl 0x418bc                                    |     r0 = is_json_context ();
                                                             |     if (r0 == 0) {
    0x0004200c cbz r0, 0x4202e                               |         goto label_3;
                                                             |     }
    0x0004200e tst.w r4, 6                                   |     
                                                             |     if ((r4 & 6) == 0) {
    0x00042012 beq 0x4202e                                   |         goto label_3;
                                                             |     }
    0x00042014 ldr r3, [pc, 0x54]                            |     
    0x00042016 add r3, pc                                    |     r3 = 0x84086;
    0x00042018 ldr r0, [r3]                                  |     r0 = *(0x84086);
    0x0004201a cmp.w sb, 0                                   |     
                                                             |     if (sb == 0) {
    0x0004201e beq 0x42058                                   |         goto label_4;
                                                             |     }
    0x00042020 mov r2, r8                                    |     r2 = r8;
    0x00042022 mov r1, sb                                    |     r1 = sb;
    0x00042024 bl 0x47b7c                                    |     jsonw_bool_field ();
                                                             |     do {
                                                             | label_0:
    0x00042028 movs r0, 0                                    |         r0 = 0;
    0x0004202a pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_3:
    0x0004202e bl 0x418bc                                    |         r0 = is_json_context ();
    0x00042032 cmp r0, 0                                     |         
    0x00042034 bne 0x42028                                   |         
                                                             |     } while (r0 != 0);
    0x00042036 tst.w r4, 5                                   |     
                                                             |     if ((r4 & 5) == 0) {
    0x0004203a beq 0x42028                                   |         goto label_0;
                                                             |     }
    0x0004203c ldr r0, [pc, 0x30]                            |     
    0x0004203e mov r3, sl                                    |     r3 = sl;
    0x00042040 mov r2, r6                                    |     r2 = r6;
    0x00042042 mov r1, r7                                    |     r1 = r7;
    0x00042044 ldr r0, [r5, r0]                              |     r0 = *((r5 + r0));
    0x00042046 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x0004204a ldr r0, [r0]                                  |     r0 = *(0x42070);
    0x0004204c b.w 0x42a14                                   |     void (*0x42a14)() ();
                                                             | label_2:
    0x00042050 ldr.w sl, [pc, 0x20]                          |     
    0x00042054 add sl, pc                                    |     sl = 0x840cc;
    0x00042056 b 0x42008                                     |     goto label_1;
                                                             | label_4:
    0x00042058 mov r1, r8                                    |     r1 = r8;
    0x0004205a bl 0x47aa8                                    |     jsonw_bool ();
    0x0004205e movs r0, 0                                    |     r0 = 0;
    0x00042060 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-80367616.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x41a3c */
                                                                 | #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;
    0x00041a3c push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x00041a40 mov r4, r0                                        |     r4 = r0;
    0x00041a42 ldr r7, [pc, 0x60]                                |     
    0x00041a44 mov r6, r1                                        |     r6 = r1;
    0x00041a46 mov r5, r2                                        |     r5 = r2;
    0x00041a48 mov sl, r3                                        |     sl = r3;
    0x00041a4a ldrd r8, sb, [sp, 0x20]                           |     __asm ("ldrd r8, sb, [arg_20h]");
    0x00041a4e add r7, pc                                        |     r7 = 0x834f8;
    0x00041a50 bl 0x418bc                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x00041a54 cbz r0, 0x41a74                                   |         goto label_1;
                                                                 |     }
    0x00041a56 tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x00041a5a beq 0x41a74                                       |         goto label_1;
                                                                 |     }
    0x00041a5c ldr r3, [pc, 0x48]                                |     
    0x00041a5e mov r2, r8                                        |     r2 = r8;
    0x00041a60 add r3, pc                                        |     r3 = 0x8350c;
    0x00041a62 ldr r0, [r3]                                      |     r0 = *(0x8350c);
    0x00041a64 mov r3, sb                                        |     r3 = sb;
                                                                 |     if (r5 == 0) {
    0x00041a66 cbz r5, 0x41a98                                   |         goto label_2;
                                                                 |     }
    0x00041a68 mov r1, r5                                        |     r1 = r5;
    0x00041a6a bl 0x47c84                                        |     jsonw_s64_field ();
                                                                 |     do {
                                                                 | label_0:
    0x00041a6e movs r0, 0                                        |         r0 = 0;
    0x00041a70 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_1:
    0x00041a74 bl 0x418bc                                        |         r0 = is_json_context ();
    0x00041a78 cmp r0, 0                                         |         
    0x00041a7a bne 0x41a6e                                       |         
                                                                 |     } while (r0 != 0);
    0x00041a7c tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x00041a80 beq 0x41a6e                                       |         goto label_0;
                                                                 |     }
    0x00041a82 ldr r3, [pc, 0x28]                                |     r3 = *(0x41aae);
    0x00041a84 mov r2, sl                                        |     r2 = sl;
    0x00041a86 mov r1, r6                                        |     r1 = r6;
    0x00041a88 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x00041a8a strd r8, sb, [sp, 0x20]                           |     __asm ("strd r8, sb, [sp, 0x20]");
    0x00041a8e pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x00041a92 ldr r0, [r3]                                      |     r0 = *(0x41aae);
    0x00041a94 b.w 0x42a14                                       |     void (*0x42a14)() ();
                                                                 | label_2:
    0x00041a98 bl 0x47b58                                        |     jsonw_s64 ();
    0x00041a9c movs r0, 0                                        |     r0 = 0;
    0x00041a9e 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-80367616.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x41e50 */
                                                             | #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;
    0x00041e50 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00041e54 mov r4, r0                                    |     r4 = r0;
    0x00041e56 ldr r6, [pc, 0x8c]                            |     
    0x00041e58 mov r7, r1                                    |     r7 = r1;
    0x00041e5a mov sb, r2                                    |     sb = r2;
    0x00041e5c mov r5, r3                                    |     r5 = r3;
    0x00041e5e ldr.w r8, [sp, 0x20]                          |     r8 = *(arg_20h);
    0x00041e62 add r6, pc                                    |     r6 = 0x83d4c;
    0x00041e64 bl 0x418bc                                    |     r0 = is_json_context ();
                                                             |     if (r0 == 0) {
    0x00041e68 cbz r0, 0x41ea6                               |         goto label_1;
                                                             |     }
    0x00041e6a tst.w r4, 6                                   |     
                                                             |     if ((r4 & 6) == 0) {
    0x00041e6e beq 0x41ea6                                   |         goto label_1;
                                                             |     }
    0x00041e70 subs.w r2, sb, 0                              |     r2 = sb - 0;
    0x00041e74 ldr r3, [pc, 0x70]                            |     
    0x00041e76 it ne                                         |     
                                                             |     if (r2 == sb) {
    0x00041e78 movne r2, 1                                   |         r2 = 1;
                                                             |     }
    0x00041e7a cmp.w r8, 0                                   |     
    0x00041e7e it ne                                         |     
                                                             |     if (r8 == 0) {
    0x00041e80 movne r2, 0                                   |         r2 = 0;
                                                             |     }
    0x00041e82 add r3, pc                                    |     r3 = 0x83d6e;
    0x00041e84 ldr r0, [r3]                                  |     r0 = *(0x83d6e);
                                                             |     if (r2 != 0) {
    0x00041e86 cbnz r2, 0x41ed6                              |         goto label_2;
                                                             |     }
    0x00041e88 clz r3, sb                                    |     r3 &= sb;
    0x00041e8c cmp.w r8, 0                                   |     
    0x00041e90 lsr.w r3, r3, 5                               |     r3 >>= 5;
    0x00041e94 it eq                                         |     
                                                             |     if (r8 != 0) {
    0x00041e96 moveq r3, 0                                   |         r3 = 0;
                                                             |     }
                                                             |     if (r3 == 0) {
    0x00041e98 cbz r3, 0x41ec8                               |         goto label_3;
                                                             |     }
    0x00041e9a mov r1, r8                                    |     r1 = r8;
    0x00041e9c bl 0x47a88                                    |     jsonw_string ();
                                                             |     do {
                                                             | label_0:
    0x00041ea0 movs r0, 0                                    |         r0 = 0;
    0x00041ea2 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_1:
    0x00041ea6 bl 0x418bc                                    |         r0 = is_json_context ();
    0x00041eaa cmp r0, 0                                     |         
    0x00041eac bne 0x41ea0                                   |         
                                                             |     } while (r0 != 0);
    0x00041eae tst.w r4, 5                                   |     
                                                             |     if ((r4 & 5) == 0) {
    0x00041eb2 beq 0x41ea0                                   |         goto label_0;
                                                             |     }
    0x00041eb4 ldr r0, [pc, 0x34]                            |     
    0x00041eb6 mov r3, r8                                    |     r3 = r8;
    0x00041eb8 mov r2, r5                                    |     r2 = r5;
    0x00041eba mov r1, r7                                    |     r1 = r7;
    0x00041ebc ldr r0, [r6, r0]                              |     r0 = *((r6 + r0));
    0x00041ebe pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x00041ec2 ldr r0, [r0]                                  |     r0 = *(0x41eec);
    0x00041ec4 b.w 0x42a14                                   |     void (*0x42a14)() ();
                                                             | label_3:
    0x00041ec8 mov r2, r8                                    |     r2 = r8;
    0x00041eca mov r1, sb                                    |     r1 = sb;
    0x00041ecc bl 0x47b64                                    |     jsonw_string_field ();
    0x00041ed0 movs r0, 0                                    |     r0 = 0;
    0x00041ed2 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |     
                                                             | label_2:
    0x00041ed6 mov r1, sb                                    |     r1 = sb;
    0x00041ed8 bl 0x478c8                                    |     jsonw_name ();
    0x00041edc movs r0, 0                                    |     r0 = 0;
    0x00041ede 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-80367616.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x41c0c */
                                                                 | #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;
    0x00041c0c push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x00041c10 mov r4, r0                                        |     r4 = r0;
    0x00041c12 ldr r7, [pc, 0x60]                                |     
    0x00041c14 mov r6, r1                                        |     r6 = r1;
    0x00041c16 mov r5, r2                                        |     r5 = r2;
    0x00041c18 mov sl, r3                                        |     sl = r3;
    0x00041c1a ldrd r8, sb, [sp, 0x20]                           |     __asm ("ldrd r8, sb, [arg_20h]");
    0x00041c1e add r7, pc                                        |     r7 = 0x83898;
    0x00041c20 bl 0x418bc                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x00041c24 cbz r0, 0x41c44                                   |         goto label_1;
                                                                 |     }
    0x00041c26 tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x00041c2a beq 0x41c44                                       |         goto label_1;
                                                                 |     }
    0x00041c2c ldr r3, [pc, 0x48]                                |     
    0x00041c2e mov r2, r8                                        |     r2 = r8;
    0x00041c30 add r3, pc                                        |     r3 = 0x838ac;
    0x00041c32 ldr r0, [r3]                                      |     r0 = *(0x838ac);
    0x00041c34 mov r3, sb                                        |     r3 = sb;
                                                                 |     if (r5 == 0) {
    0x00041c36 cbz r5, 0x41c68                                   |         goto label_2;
                                                                 |     }
    0x00041c38 mov r1, r5                                        |     r1 = r5;
    0x00041c3a bl 0x47bd0                                        |     jsonw_u64_field ();
                                                                 |     do {
                                                                 | label_0:
    0x00041c3e movs r0, 0                                        |         r0 = 0;
    0x00041c40 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_1:
    0x00041c44 bl 0x418bc                                        |         r0 = is_json_context ();
    0x00041c48 cmp r0, 0                                         |         
    0x00041c4a bne 0x41c3e                                       |         
                                                                 |     } while (r0 != 0);
    0x00041c4c tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x00041c50 beq 0x41c3e                                       |         goto label_0;
                                                                 |     }
    0x00041c52 ldr r3, [pc, 0x28]                                |     r3 = *(0x41c7e);
    0x00041c54 mov r2, sl                                        |     r2 = sl;
    0x00041c56 mov r1, r6                                        |     r1 = r6;
    0x00041c58 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x00041c5a strd r8, sb, [sp, 0x20]                           |     __asm ("strd r8, sb, [sp, 0x20]");
    0x00041c5e pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x00041c62 ldr r0, [r3]                                      |     r0 = *(0x41c7e);
    0x00041c64 b.w 0x42a14                                       |     void (*0x42a14)() ();
                                                                 | label_2:
    0x00041c68 bl 0x47b14                                        |     jsonw_u64 ();
    0x00041c6c movs r0, 0                                        |     r0 = 0;
    0x00041c6e 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-80367616.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x41b98 */
                                                                 | #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;
    0x00041b98 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x00041b9c mov r4, r0                                        |     r4 = r0;
    0x00041b9e ldr r6, [pc, 0x60]                                |     
    0x00041ba0 mov r7, r1                                        |     r7 = r1;
    0x00041ba2 mov sb, r2                                        |     sb = r2;
    0x00041ba4 mov r5, r3                                        |     r5 = r3;
    0x00041ba6 ldr.w r8, [sp, 0x20]                              |     r8 = *(arg_20h);
    0x00041baa add r6, pc                                        |     r6 = 0x837b0;
    0x00041bac bl 0x418bc                                        |     r0 = is_json_context ();
                                                                 |     if (r0 == 0) {
    0x00041bb0 cbz r0, 0x41bd2                                   |         goto label_1;
                                                                 |     }
    0x00041bb2 tst.w r4, 6                                       |     
                                                                 |     if ((r4 & 6) == 0) {
    0x00041bb6 beq 0x41bd2                                       |         goto label_1;
                                                                 |     }
    0x00041bb8 ldr r3, [pc, 0x48]                                |     
    0x00041bba add r3, pc                                        |     r3 = 0x837c2;
    0x00041bbc ldr r0, [r3]                                      |     r0 = *(0x837c2);
    0x00041bbe cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00041bc2 beq 0x41bf4                                       |         goto label_2;
                                                                 |     }
    0x00041bc4 mov r2, r8                                        |     r2 = r8;
    0x00041bc6 mov r1, sb                                        |     r1 = sb;
    0x00041bc8 bl 0x47bb8                                        |     jsonw_uint_field ();
                                                                 |     do {
                                                                 | label_0:
    0x00041bcc movs r0, 0                                        |         r0 = 0;
    0x00041bce pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_1:
    0x00041bd2 bl 0x418bc                                        |         r0 = is_json_context ();
    0x00041bd6 cmp r0, 0                                         |         
    0x00041bd8 bne 0x41bcc                                       |         
                                                                 |     } while (r0 != 0);
    0x00041bda tst.w r4, 5                                       |     
                                                                 |     if ((r4 & 5) == 0) {
    0x00041bde beq 0x41bcc                                       |         goto label_0;
                                                                 |     }
    0x00041be0 ldr r0, [pc, 0x24]                                |     
    0x00041be2 mov r3, r8                                        |     r3 = r8;
    0x00041be4 mov r2, r5                                        |     r2 = r5;
    0x00041be6 mov r1, r7                                        |     r1 = r7;
    0x00041be8 ldr r0, [r6, r0]                                  |     r0 = *((r6 + r0));
    0x00041bea pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x00041bee ldr r0, [r0]                                      |     r0 = *(0x41c08);
    0x00041bf0 b.w 0x42a14                                       |     void (*0x42a14)() ();
                                                                 | label_2:
    0x00041bf4 mov r1, r8                                        |     r1 = r8;
    0x00041bf6 bl 0x47b04                                        |     jsonw_uint ();
    0x00041bfa movs r0, 0                                        |     r0 = 0;
    0x00041bfc pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |     
                                                                 | }

[*] Function printf used 2 times tc.iproute2