[*] Binary protection state of libnl-route-3.so.200.26.0

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


[*] Function printf tear down of libnl-route-3.so.200.26.0

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libnl-route-3.so.200.26.0 @ 0x390f0 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.000390f0 ()                  | void fcn_000390f0 () {
                                             |     int16_t var_0h;
                                             |     int32_t var_4h;
                                             |     int32_t var_4h_2;
                                             |     int16_t var_10h;
                                             |     int16_t var_14h;
                                             |     int16_t var_18h;
                                             |     int16_t var_58h;
                                             |     int16_t var_74h;
    0x000390f0 ldr r1, [pc, 0x16c]           |     
    0x000390f2 movs r3, 0                    |     r3 = 0;
    0x000390f4 ldr r2, [pc, 0x16c]           |     r2 = *(0x39264);
    0x000390f6 ldr r0, [pc, 0x170]           |     
    0x000390f8 add r1, pc                    |     r1 = 0x7235c;
    0x000390fa push {r4, r5, r6, r7, lr}     |     
    0x000390fc ldr r5, [pc, 0x16c]           |     
    0x000390fe add r0, pc                    |     r0 = 0x7236c;
    0x00039100 vpush {d8}                    |     __asm ("vpush {d8}");
    0x00039104 sub sp, 0x7c                  |     
    0x00039106 ldr r2, [r1, r2]              |     
    0x00039108 add r5, pc                    |     r5 = 0x72378;
    0x0003910a ldr r2, [r2]                  |     r2 = *(0x7235c);
    0x0003910c str r2, [sp, 0x74]            |     var_74h = r2;
    0x0003910e mov.w r2, 0                   |     r2 = 0;
    0x00039112 str r3, [sp, 0x10]            |     var_10h = r3;
    0x00039114 blx 0x144c8                   |     r0 = fcn_000144c8 ();
    0x00039118 mov r3, r0                    |     r3 = r0;
    0x0003911a cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x0003911c beq.w 0x3923c                 |         goto label_6;
                                             |     }
                                             | label_3:
    0x00039120 ldr r0, [pc, 0x14c]           |     
    0x00039122 movs r1, 1                    |     r1 = 1;
    0x00039124 ldr r2, [pc, 0x14c]           |     
    0x00039126 add r0, pc                    |     r0 = 0x7239a;
    0x00039128 str r0, [sp]                  |     *(sp) = r0;
    0x0003912a add r2, pc                    |     r2 = 0x723a2;
    0x0003912c add r0, sp, 0x14              |     r0 += var_14h;
    0x0003912e blx 0x148cc                   |     r0 = fcn_000148cc ();
    0x00039132 cmp r0, 0                     |     
                                             |     if (r0 < 0) {
    0x00039134 blt.w 0x39256                 |         goto label_7;
                                             |     }
    0x00039138 ldr r0, [sp, 0x14]            |     r0 = var_14h;
    0x0003913a add r1, sp, 0x18              |     r1 += var_18h;
    0x0003913c blx 0x15558                   |     r0 = fcn_00015558 ();
    0x00039140 mov r4, r0                    |     r4 = r0;
    0x00039142 cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x00039144 beq 0x3922c                   |         goto label_8;
                                             |     }
                                             | label_1:
    0x00039146 ldr r3, [pc, 0x130]           |     
    0x00039148 ldr r3, [r5, r3]              |     r3 = *((r5 + r3));
    0x0003914a ldr r3, [r3]                  |     r3 = *(0x3927a);
    0x0003914c cmp r3, 1                     |     
                                             |     if (r3 > 1) {
    0x0003914e ble 0x3917c                   |         
    0x00039150 blx 0x15610                   |         fcn_00015610 ();
    0x00039154 ldr r3, [pc, 0x124]           |         r3 = *(0x3927c);
    0x00039156 mov r4, r0                    |         r4 = r0;
    0x00039158 ldr r2, [sp, 0x14]            |         r2 = var_14h;
    0x0003915a movs r1, 0x68                 |         r1 = 0x68;
    0x0003915c ldr r0, [r5, r3]              |         r0 = *((r5 + r3));
    0x0003915e ldr r3, [pc, 0x120]           |         
    0x00039160 ldr r5, [r4]                  |         r5 = *(r4);
    0x00039162 ldr r0, [r0]                  |         r0 = *(r0);
    0x00039164 add r3, pc                    |         r3 = 0x723ea;
    0x00039166 str r1, [sp]                  |         *(sp) = r1;
    0x00039168 strd r3, r2, [sp, 4]          |         __asm ("strd r3, r2, [var_4h]");
    0x0003916c movs r1, 1                    |         r1 = 1;
    0x0003916e ldr r3, [pc, 0x114]           |         
    0x00039170 ldr r2, [pc, 0x114]           |         
    0x00039172 add r3, pc                    |         r3 = 0x723fc;
    0x00039174 add r2, pc                    |         r2 = 0x72400;
    0x00039176 blx 0x15038                   |         strtok_r ();
    0x0003917a str r5, [r4]                  |         *(r4) = r5;
                                             |     }
    0x0003917c ldr r1, [pc, 0x10c]           |     
    0x0003917e ldr r0, [sp, 0x14]            |     r0 = var_14h;
    0x00039180 add r1, pc                    |     r1 = 0x72410;
    0x00039182 blx 0x14644                   |     r0 = fcn_00014644 ();
    0x00039186 mov r7, r0                    |     r7 = r0;
    0x00039188 cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x0003918a beq 0x39250                   |         goto label_9;
                                             |     }
    0x0003918c ldr r5, [pc, 0x100]           |     
    0x0003918e add r5, pc                    |     r5 = 0x72422;
    0x00039190 add.w r6, r5, 0x800           |     r6 = r5 + 0x800;
                                             | label_0:
    0x00039194 ldr r3, [r5]                  |     r3 = *(r5);
    0x00039196 vdup.32 d8, r5                |     __asm ("vdup.32 d8, r5");
    0x0003919a mov r0, r3                    |     r0 = r3;
    0x0003919c cmp r5, r3                    |     
    0x0003919e ldr r4, [r0], -0x14           |     r4 = *(r0);
                                             |     r0 += -0x14;
    0x000391a2 sub.w r4, r4, 0x14            |     r4 -= 0x14;
                                             |     if (r5 == r3) {
    0x000391a6 beq 0x391bc                   |         goto label_10;
                                             |     }
                                             |     do {
    0x000391a8 blx 0x14adc                   |         fcn_00014adc ();
    0x000391ac add.w r3, r4, 0x14            |         r3 = r4 + 0x14;
    0x000391ae lsls r4, r2, 0xc              |         r4 = r2 << 0xc;
    0x000391b0 ldr r2, [r4, 0x14]            |         r2 = *((r4 + 0x14));
    0x000391b2 cmp r3, r5                    |         
    0x000391b4 mov r0, r4                    |         r0 = r4;
    0x000391b6 sub.w r4, r2, 0x14            |         r4 = r2 - 0x14;
    0x000391ba bne 0x391a8                   |         
                                             |     } while (r3 != r5);
                                             | label_10:
    0x000391bc vst1.32 {d8}, [r5]!           |     __asm ("vst1.32 {d8}, [r5]!");
    0x000391c0 cmp r5, r6                    |     
                                             |     if (r5 != r6) {
    0x000391c2 bne 0x39194                   |         goto label_0;
                                             |     }
    0x000391c4 add r0, sp, 0x10              |     r0 += var_10h;
    0x000391c6 bl 0x45354                    |     r0 = fcn_00045354 (r0);
    0x000391ca cmp r0, 0                     |     
    0x000391cc it lt                         |     
                                             |     if (r0 >= 0) {
    0x000391ce movlt r4, -1                  |         r4 = -1;
                                             |     }
                                             |     if (r0 >= 0) {
    0x000391d2 blt 0x39202                   |         
    0x000391d4 ldr r2, [sp, 0x10]            |         r2 = var_10h;
    0x000391d6 mov.w r1, 0x4000              |         r1 = 0x4000;
    0x000391da mov r0, r7                    |         r0 = r7;
    0x000391dc bl 0x45314                    |         fcn_00045314 (r0, r1, r2);
    0x000391e0 ldr r1, [sp, 0x10]            |         r1 = var_10h;
    0x000391e2 mov r5, r0                    |         r5 = r0;
    0x000391e4 bl 0x4552c                    |         fcn_0004552c (r0, r1);
    0x000391e8 ldr r0, [sp, 0x10]            |         r0 = var_10h;
    0x000391ea bl 0x46104                    |         r0 = fcn_00046104 (r0, r1);
    0x000391ee mov r4, r0                    |         r4 = r0;
                                             |         if (r0 != 0) {
    0x000391f0 cbnz r0, 0x39242              |             goto label_11;
                                             |         }
    0x000391f2 ldr r3, [pc, 0xa0]            |         
    0x000391f4 ldr r2, [sp, 0x58]            |         r2 = var_58h;
    0x000391f6 add r3, pc                    |         r3 = 0x72490;
    0x000391f8 str.w r2, [r3, 0x800]         |         __asm ("str.w r2, [r3, 0x800]");
                                             | label_4:
    0x000391fc ldr r0, [sp, 0x10]            |         r0 = var_10h;
    0x000391fe bl 0x45e18                    |         fcn_00045e18 (r0);
                                             |     }
    0x00039202 mov r0, r7                    |     r0 = r7;
    0x00039204 blx 0x144b0                   |     printf_chk ()
                                             | label_2:
    0x00039208 ldr r0, [sp, 0x14]            |     r0 = var_14h;
    0x0003920a blx 0x14868                   |     fcn_00014868 ();
                                             | label_5:
    0x0003920e ldr r2, [pc, 0x88]            |     
    0x00039210 ldr r3, [pc, 0x50]            |     r3 = *(0x39264);
    0x00039212 add r2, pc                    |     r2 = 0x724b0;
    0x00039214 ldr r3, [r2, r3]              |     r3 = *(0x724b0);
    0x00039216 ldr r2, [r3]                  |     r2 = *(0x724b0);
    0x00039218 ldr r3, [sp, 0x74]            |     r3 = var_74h;
    0x0003921a eors r2, r3                   |     r2 ^= r3;
    0x0003921c mov.w r3, 0                   |     r3 = 0;
                                             |     if (r2 != r3) {
    0x00039220 bne 0x3925c                   |         goto label_12;
                                             |     }
    0x00039222 mov r0, r4                    |     r0 = r4;
    0x00039224 add sp, 0x7c                  |     
    0x00039226 vpop {d8}                     |     __asm ("vpop {d8}");
    0x0003922a pop {r4, r5, r6, r7, pc}      |     
                                             | label_8:
    0x0003922c ldr r3, [pc, 0x6c]            |     
    0x0003922e ldr r2, [sp, 0x58]            |     r2 = var_58h;
    0x00039230 add r3, pc                    |     
    0x00039232 ldr.w r3, [r3, 0x800]         |     r3 = *(0x72cd0);
    0x00039236 cmp r2, r3                    |     
                                             |     if (r2 != r3) {
    0x00039238 bne 0x39146                   |         goto label_1;
                                             |     }
    0x0003923a b 0x39208                     |     goto label_2;
                                             | label_6:
    0x0003923c ldr r3, [pc, 0x60]            |     
    0x0003923e add r3, pc                    |     r3 = 0x724e2;
    0x00039240 b 0x39120                     |     goto label_3;
                                             | label_11:
    0x00039242 ldr r1, [sp, 0x10]            |     r1 = var_10h;
    0x00039244 mov r0, r5                    |     r0 = r5;
    0x00039246 mvn r4, 0x1d                  |     r4 = ~0x1d;
    0x0003924a bl 0x45d88                    |     fcn_00045d88 (r0, r1);
    0x0003924e b 0x391fc                     |     goto label_4;
                                             | label_9:
    0x00039250 mvn r4, 0x1c                  |     r4 = ~0x1c;
    0x00039254 b 0x39208                     |     goto label_2;
                                             | label_7:
    0x00039256 mvn r4, 4                     |     r4 = ~4;
    0x0003925a b 0x3920e                     |     goto label_5;
                                             | label_12:
    0x0003925c blx 0x15004                   |     r0 = fcn_00015004 ();
    0x00039260 adds r0, r0, r0               |     r0 += r0;
    0x00039262 movs r2, r0                   |     r2 = r0;
    0x00039264 lsls r0, r5, 0x1b             |     r0 = r5 << 0x1b;
    0x00039266 movs r0, r0                   |     
    0x00039268 invalid                       |     
                                             | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libnl-route-3.so.200.26.0 @ 0x19584 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.rtnl_classid_generate ()                     | void rtnl_classid_generate (int16_t arg1, int16_t arg2, uint32_t arg3) {
                                                             |     int16_t var_0h;
                                                             |     int32_t var_4h;
                                                             |     int32_t var_4h_2;
                                                             |     int16_t var_14h;
                                                             |     int32_t var_14h_2;
                                                             |     int16_t var_1ch;
                                                             |     int16_t var_20h;
                                                             |     int16_t var_24h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     if (? >= ?) {
    0x00019584 ldrbmi lr, [r0, sp, lsr 18]!                  |         
                                                             |     }
    0x00019588 cmn.w r2, 0xf                                 |     
    0x0001958c it ne                                         |     
                                                             |     if (r2 != 0xf) {
    0x0001958e cmpne r2, -1                                  |         __asm ("cmpne r2, -1");
                                                             |     }
    0x00019592 ldr r4, [pc, 0x1cc]                           |     
    0x00019594 sub sp, 0x28                                  |     
    0x00019596 mov r6, r0                                    |     r6 = r0;
    0x00019598 mov r7, r1                                    |     r7 = r1;
    0x0001959a ldr r3, [pc, 0x1c8]                           |     r3 = *(0x19766);
    0x0001959c add r4, pc                                    |     r4 = 0x32d02;
    0x0001959e ldr.w r8, [pc, 0x1c8]                         |     
    0x000195a2 ldr r3, [r4, r3]                              |     
    0x000195a4 add r8, pc                                    |     r8 = 0x32d12;
    0x000195a6 ldr r3, [r3]                                  |     r3 = *(0x32d02);
    0x000195a8 str r3, [sp, 0x24]                            |     var_24h = r3;
    0x000195aa mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 != 0xf) {
    0x000195ae bne 0x196a2                                   |         goto label_8;
                                                             |     }
    0x000195b0 ldr.w sb, [pc, 0x1b8]                         |     
    0x000195b4 add.w sl, sp, 0x1c                            |     sl += var_1ch;
    0x000195b8 ldr r4, [pc, 0x1b4]                           |     
    0x000195ba add r5, sp, 0x14                              |     r5 += var_14h;
    0x000195bc add sb, pc                                    |     
    0x000195be add.w sb, sb, 0x800                           |     sb = 0x3352c;
    0x000195c2 add r4, pc                                    |     r4 = 0x32d36;
                                                             |     do {
    0x000195c4 ldr r3, [r4]                                  |         r3 = *(r4);
    0x000195c6 movs r1, 0                                    |         r1 = 0;
    0x000195c8 ldr r2, [pc, 0x1a8]                           |         
    0x000195ca strd r1, r1, [sl]                             |         __asm ("strd r1, r1, [sl]");
    0x000195ce mov r1, sb                                    |         r1 = sb;
    0x000195d0 cmn.w r3, 0x20000                             |         
    0x000195d4 add.w ip, r3, 0x10000                         |         
    0x000195d8 ldr r3, [pc, 0x19c]                           |         
    0x000195da itet eq                                       |         
                                                             |         if (r3 != 0x20000) {
    0x000195dc moveq r0, 0x40000000                          |             r0 = 0x40000000;
                                                             |         }
                                                             |         if (r3 != 0x20000) {
    0x000195e0 moveq r0, ip                                  |             r0 = ip;
                                                             |         }
                                                             |         if (r3 == 0x20000) {
    0x000195e2 mov ip, r0                                    |             
                                                             |         }
    0x000195e4 str r0, [r4]                                  |         *(r4) = r0;
    0x000195e6 add r2, pc                                    |         r2 = 0x32d5e;
    0x000195e8 add r3, pc                                    |         r3 = 0x32d64;
    0x000195ea mov r0, r5                                    |         r0 = r5;
    0x000195ec strd ip, r3, [sp, 0x14]                       |         __asm ("strd ip, r3, [var_14h]");
    0x000195f0 blx 0x14a3c                                   |         r0 = fcn_00014a3c ();
                                                             |         if (r0 == 0) {
    0x000195f4 cbz r0, 0x195fe                               |             goto label_9;
                                                             |         }
    0x000195f6 ldr r3, [r0]                                  |         r3 = *(r0);
    0x000195f8 ldr r3, [r3, 4]                               |         r3 = *((r3 + 4));
    0x000195fa cmp r3, 0                                     |         
    0x000195fc bne 0x195c4                                   |         
                                                             |     } while (r3 != 0);
                                                             | label_9:
    0x000195fe ldr r3, [pc, 0x17c]                           |     
    0x00019600 add r3, pc                                    |     r3 = 0x32d82;
    0x00019602 ldr r4, [r3]                                  |     r4 = *(0x32d82);
                                                             |     do {
                                                             | label_0:
    0x00019604 ldr r3, [pc, 0x178]                           |         
    0x00019606 ldr.w r3, [r8, r3]                            |         r3 = *((r8 + r3));
    0x0001960a ldr r3, [r3]                                  |         r3 = *(0x19780);
    0x0001960c cmp r3, 1                                     |         
                                                             |         if (r3 > 1) {
    0x0001960e bgt 0x196f8                                   |             goto label_10;
                                                             |         }
                                                             | label_3:
    0x00019610 ldr r0, [pc, 0x170]                           |         
    0x00019612 add r0, pc                                    |         r0 = 0x32d9a;
    0x00019614 blx 0x144c8                                   |         r0 = fcn_000144c8 ();
    0x00019618 mov r3, r0                                    |         r3 = r0;
    0x0001961a cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x0001961c beq.w 0x1973a                                 |             goto label_11;
                                                             |         }
                                                             | label_5:
    0x00019620 ldr r2, [pc, 0x164]                           |         
    0x00019622 mov r0, r5                                    |         r0 = r5;
    0x00019624 movs r1, 1                                    |         r1 = 1;
    0x00019626 add r2, pc                                    |         r2 = 0x32db2;
    0x00019628 str r2, [sp]                                  |         *(sp) = r2;
    0x0001962a ldr r2, [pc, 0x160]                           |         
    0x0001962c add r2, pc                                    |         r2 = 0x32dbe;
    0x0001962e blx 0x148cc                                   |         r0 = fcn_000148cc ();
    0x00019632 cmp r0, 0                                     |         
                                                             |         if (r0 < 0) {
    0x00019634 blt.w 0x19746                                 |             goto label_12;
                                                             |         }
    0x00019638 ldr r1, [pc, 0x154]                           |         
    0x0001963a ldr r0, [sp, 0x14]                            |         r0 = var_14h;
    0x0001963c add r1, pc                                    |         r1 = 0x32dd0;
    0x0001963e blx 0x14644                                   |         r0 = fcn_00014644 ();
    0x00019642 mov r5, r0                                    |         r5 = r0;
    0x00019644 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00019646 beq.w 0x19750                                 |             goto label_13;
                                                             |         }
    0x0001964a ldr r2, [pc, 0x148]                           |         
    0x0001964c lsrs r3, r4, 0x10                             |         r3 = r4 >> 0x10;
    0x0001964e movs r1, 1                                    |         r1 = 1;
    0x00019650 add r2, pc                                    |         r2 = 0x32dea;
    0x00019652 blx 0x15038                                   |         strtok_r ();
    0x00019656 uxth r3, r4                                   |         r3 = (int16_t) r4;
    0x00019658 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x0001965a bne 0x1972c                                   |             goto label_14;
                                                             |         }
                                                             | label_4:
    0x0001965c ldr r2, [pc, 0x138]                           |         
    0x0001965e mov r3, r6                                    |         r3 = r6;
    0x00019660 movs r1, 1                                    |         r1 = 1;
    0x00019662 mov r0, r5                                    |         r0 = r5;
    0x00019664 add r2, pc                                    |         r2 = 0x32e00;
    0x00019666 blx 0x15038                                   |         strtok_r ();
    0x0001966a mov r0, r5                                    |         r0 = r5;
    0x0001966c blx 0x144b0                                   |         printf_chk ()
    0x00019670 mov r1, r6                                    |         r1 = r6;
    0x00019672 mov r0, r4                                    |         r0 = r4;
    0x00019674 bl 0x190cc                                    |         r0 = fcn_000190cc (r0, r1);
    0x00019678 cmp r0, 0                                     |         
                                                             |         if (r0 < 0) {
    0x0001967a blt 0x19740                                   |             goto label_15;
                                                             |         }
                                                             | label_6:
    0x0001967c movs r5, 0                                    |         r5 = 0;
    0x0001967e str r4, [r7]                                  |         *(r7) = r4;
                                                             | label_7:
    0x00019680 ldr r0, [sp, 0x14]                            |         r0 = var_14h;
    0x00019682 blx 0x14868                                   |         fcn_00014868 ();
                                                             | label_2:
    0x00019686 ldr r2, [pc, 0x114]                           |         
    0x00019688 ldr r3, [pc, 0xd8]                            |         r3 = *(0x19764);
    0x0001968a add r2, pc                                    |         r2 = 0x32e2c;
    0x0001968c ldr r3, [r2, r3]                              |         r3 = *(0x32e2c);
    0x0001968e ldr r2, [r3]                                  |         r2 = *(0x32e2c);
    0x00019690 ldr r3, [sp, 0x24]                            |         r3 = var_24h;
    0x00019692 eors r2, r3                                   |         r2 ^= r3;
    0x00019694 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00019698 bne 0x1974c                                   |             goto label_16;
                                                             |         }
    0x0001969a mov r0, r5                                    |         r0 = r5;
    0x0001969c add sp, 0x28                                  |         
    0x0001969e pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_8:
    0x000196a2 lsrs r4, r2, 0x10                             |         r4 = r2 >> 0x10;
    0x000196a4 ldr.w sb, [pc, 0xf8]                          |         
    0x000196a8 ldr.w sl, [pc, 0xf8]                          |         
    0x000196ac movw r3, 0xffff                               |         r3 = 0xffff;
    0x000196b0 lsls r4, r4, 0x10                             |         r4 <<= 0x10;
    0x000196b2 add sb, pc                                    |         
    0x000196b4 adds r4, 1                                    |         r4++;
    0x000196b6 add sl, pc                                    |         sl = 0x32e5e;
    0x000196b8 uxth r2, r4                                   |         r2 = (int16_t) r4;
    0x000196ba add.w sb, sb, 0x800                           |         sb = 0x33656;
    0x000196be cmp r2, r3                                    |         
                                                             |         if (r2 == r3) {
    0x000196c0 beq 0x196f2                                   |             goto label_17;
                                                             |         }
                                                             | label_1:
    0x000196c2 ldr r2, [pc, 0xe4]                            |         
    0x000196c4 add r5, sp, 0x14                              |         r5 += var_14h;
    0x000196c6 movs r3, 0                                    |         r3 = 0;
    0x000196c8 mov r1, sb                                    |         r1 = sb;
    0x000196ca mov r0, r5                                    |         r0 = r5;
    0x000196cc str r3, [sp, 0x1c]                            |         var_1ch = r3;
    0x000196ce add r2, pc                                    |         r2 = 0x32e7c;
    0x000196d0 strd r4, sl, [sp, 0x14]                       |         __asm ("strd r4, sl, [var_14h]");
    0x000196d4 str r3, [sp, 0x20]                            |         var_20h = r3;
    0x000196d6 blx 0x14a3c                                   |         r0 = fcn_00014a3c ();
    0x000196da cmp r0, 0                                     |         
    0x000196dc beq 0x19604                                   |         
                                                             |     } while (r0 == 0);
    0x000196de ldr r3, [r0]                                  |     r3 = *(r0);
    0x000196e0 ldr r3, [r3, 4]                               |     r3 = *((r3 + 4));
    0x000196e2 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000196e4 beq 0x19604                                   |         goto label_0;
                                                             |     }
    0x000196e6 adds r4, 1                                    |     r4++;
    0x000196e8 movw r3, 0xffff                               |     r3 = 0xffff;
    0x000196ec uxth r2, r4                                   |     r2 = (int16_t) r4;
    0x000196ee cmp r2, r3                                    |     
                                                             |     if (r2 != r3) {
    0x000196f0 bne 0x196c2                                   |         goto label_1;
                                                             |     }
                                                             | label_17:
    0x000196f2 mvn r5, 7                                     |     r5 = ~7;
    0x000196f6 b 0x19686                                     |     goto label_2;
                                                             | label_10:
    0x000196f8 blx 0x15610                                   |     fcn_00015610 ();
    0x000196fc ldr r3, [pc, 0xac]                            |     r3 = *(0x197ac);
    0x000196fe mov sb, r0                                    |     sb = r0;
    0x00019700 ldr r2, [pc, 0xac]                            |     
    0x00019702 movs r1, 1                                    |     r1 = 1;
    0x00019704 ldr.w r3, [r8, r3]                            |     r3 = *((r8 + r3));
    0x00019708 ldr.w r8, [sb]                                |     r8 = *(sb);
    0x0001970c add r2, pc                                    |     r2 = 0x32ec0;
    0x0001970e ldr r0, [r3]                                  |     r0 = *(0x197ac);
    0x00019710 ldr r3, [pc, 0xa0]                            |     
    0x00019712 add r3, pc                                    |     r3 = 0x32eca;
    0x00019714 strd r3, r4, [sp, 4]                          |     __asm ("strd r3, r4, [var_4h]");
    0x00019718 mov.w r3, 0x18a                               |     r3 = 0x18a;
    0x0001971c str r3, [sp]                                  |     *(sp) = r3;
    0x0001971e ldr r3, [pc, 0x98]                            |     
    0x00019720 add r3, pc                                    |     r3 = 0x32ede;
    0x00019722 blx 0x15038                                   |     strtok_r ();
    0x00019726 str.w r8, [sb]                                |     __asm ("str.w r8, [sb]");
    0x0001972a b 0x19610                                     |     goto label_3;
                                                             | label_14:
    0x0001972c ldr r2, [pc, 0x8c]                            |     
    0x0001972e movs r1, 1                                    |     r1 = 1;
    0x00019730 mov r0, r5                                    |     r0 = r5;
    0x00019732 add r2, pc                                    |     r2 = 0x32ef2;
    0x00019734 blx 0x15038                                   |     strtok_r ();
    0x00019738 b 0x1965c                                     |     goto label_4;
                                                             | label_11:
    0x0001973a ldr r3, [pc, 0x84]                            |     
    0x0001973c add r3, pc                                    |     r3 = 0x32f02;
    0x0001973e b 0x19620                                     |     goto label_5;
                                                             | label_15:
    0x00019740 blx 0x14660                                   |     memset (r0, r1, r2);
    0x00019744 b 0x1967c                                     |     goto label_6;
                                                             | label_12:
    0x00019746 mvn r5, 4                                     |     r5 = ~4;
    0x0001974a b 0x19686                                     |     goto label_2;
                                                             | label_16:
    0x0001974c blx 0x15004                                   |     fcn_00015004 ();
                                                             | label_13:
    0x00019750 blx 0x15610                                   |     r0 = fcn_00015610 ();
    0x00019754 ldr r0, [r0]                                  |     r0 = *(r0);
    0x00019756 blx 0x149dc                                   |     r0 = fcn_000149dc ();
    0x0001975a rsbs r5, r0, 0                                |     r5 = r0 - ;
    0x0001975c b 0x19680                                     |     goto label_7;
                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libnl-route-3.so.200.26.0 @ 0x3d310 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.rtnl_netem_set_delay_distribution_data ()        | void rtnl_netem_set_delay_distribution_data (int16_t arg2, int16_t arg3) {
                                                                 |     int16_t var_0h_7;
                                                                 |     int16_t var_4h_7;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x0003d310 push {r4, r5, r6, r7, lr}                         |     
    0x0003d312 sub sp, 0xc                                       |     
    0x0003d314 mov r7, r1                                        |     r7 = r1;
    0x0003d316 mov r5, r2                                        |     r5 = r2;
    0x0003d318 blx 0x15498                                       |     fcn_00015498 ();
    0x0003d31c ldr r3, [pc, 0x7c]                                |     
    0x0003d31e add r3, pc                                        |     r3 = 0x7a6be;
                                                                 |     if (r0 == 0) {
    0x0003d320 cbz r0, 0x3d35e                                   |         goto label_1;
                                                                 |     }
    0x0003d322 cmp.w r5, 0x10000                                 |     
                                                                 |     if (r5 > 0x10000) {
    0x0003d326 bhi 0x3d358                                       |         goto label_2;
                                                                 |     }
    0x0003d328 mov r4, r0                                        |     r4 = r0;
    0x0003d32a movs r1, 2                                        |     r1 = 2;
    0x0003d32c mov r0, r5                                        |     r0 = r5;
    0x0003d32e blx 0x14588                                       |     r0 = fcn_00014588 ();
    0x0003d332 mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r0 == 0) {
    0x0003d334 cbz r0, 0x3d394                                   |         goto label_3;
                                                                 |     }
    0x0003d336 ldr r0, [r4, 0x38]                                |     r0 = *((r4 + 0x38));
    0x0003d338 blx 0x14868                                       |     fcn_00014868 ();
    0x0003d33c lsls r2, r5, 1                                    |     r2 = r5 << 1;
    0x0003d33e mov r1, r7                                        |     r1 = r7;
    0x0003d340 mov r0, r6                                        |     r0 = r6;
    0x0003d342 str r6, [r4, 0x38]                                |     *((r4 + 0x38)) = r6;
    0x0003d344 blx 0x14b74                                       |     fcn_00014b74 ();
    0x0003d348 ldr r3, [r4, 0x18]                                |     r3 = *((r4 + 0x18));
    0x0003d34a movs r0, 0                                        |     r0 = 0;
    0x0003d34c str r5, [r4, 0x3c]                                |     *((r4 + 0x3c)) = r5;
    0x0003d34e orr r3, r3, 0x2000                                |     r3 |= 0x2000;
    0x0003d352 str r3, [r4, 0x18]                                |     *((r4 + 0x18)) = r3;
                                                                 |     do {
                                                                 | label_0:
    0x0003d354 add sp, 0xc                                       |         
    0x0003d356 pop {r4, r5, r6, r7, pc}                          |         
                                                                 | label_2:
    0x0003d358 mvn r0, 6                                         |         r0 = ~6;
    0x0003d35c b 0x3d354                                         |         
                                                                 |     } while (1);
                                                                 | label_1:
    0x0003d35e ldr r2, [pc, 0x40]                                |     r2 = *(0x3d3a2);
    0x0003d360 movw r6, 0x36f                                    |     r6 = 0x36f;
    0x0003d364 ldr r5, [pc, 0x3c]                                |     
    0x0003d366 movs r1, 1                                        |     r1 = 1;
    0x0003d368 ldr r4, [pc, 0x3c]                                |     
    0x0003d36a ldr r2, [r3, r2]                                  |     r2 = *((r3 + r2));
    0x0003d36c add r5, pc                                        |     r5 = 0x7a714;
    0x0003d36e str r6, [sp]                                      |     *(sp) = r6;
    0x0003d370 add.w r3, r5, 0x618                               |     r3 = r5 + 0x618;
    0x0003d374 add r4, pc                                        |     r4 = 0x7a720;
    0x0003d376 str r3, [sp, 4]                                   |     var_4h_7 = r3;
    0x0003d378 mov r3, r4                                        |     r3 = r4;
    0x0003d37a ldr r0, [r2]                                      |     r0 = *(0x3d3a2);
    0x0003d37c ldr r2, [pc, 0x2c]                                |     
    0x0003d37e add r2, pc                                        |     r2 = 0x7a72e;
    0x0003d380 blx 0x15038                                       |     strtok_r ();
    0x0003d384 ldr r0, [pc, 0x28]                                |     
    0x0003d386 add.w r3, r5, 0x640                               |     r3 = r5 + 0x640;
    0x0003d38a mov r2, r6                                        |     r2 = r6;
    0x0003d38c mov r1, r4                                        |     r1 = r4;
    0x0003d38e add r0, pc                                        |     r0 = 0x7a742;
    0x0003d390 blx 0x14728                                       |     fcn_00014728 ();
                                                                 | label_3:
    0x0003d394 mvn r0, 4                                         |     r0 = ~4;
    0x0003d398 b 0x3d354                                         |     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/lib/libnl-route-3.so.200.26.0 @ 0x3d3b4 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.rtnl_netem_set_delay_distribution ()                 | void rtnl_netem_set_delay_distribution (int16_t arg1, int16_t arg2) {
                                                                     |     int16_t var_0h_6;
                                                                     |     int16_t var_4h_6;
                                                                     |     int16_t var_10h;
                                                                     |     int16_t var_14h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_24h;
                                                                     |     int16_t var_28h;
                                                                     |     int16_t var_3ch;
                                                                     |     int16_t var_40h;
                                                                     |     int16_t var_44h;
                                                                     |     int16_t var_144h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0003d3b4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0003d3b8 mov r7, r1                                            |     r7 = r1;
    0x0003d3ba ldr r1, [pc, 0x188]                                   |     
    0x0003d3bc sub sp, 0x14c                                         |     
    0x0003d3be mov.w r3, 0x800                                       |     r3 = 0x800;
    0x0003d3c2 add r6, sp, 0x1c                                      |     r6 += var_1ch;
    0x0003d3c4 ldr r2, [pc, 0x180]                                   |     r2 = *(0x3d548);
    0x0003d3c6 add.w sb, sp, 0x3c                                    |     sb += var_3ch;
    0x0003d3ca add r1, pc                                            |     r1 = 0x7a914;
    0x0003d3cc str r0, [sp, 0x14]                                    |     var_14h = r0;
    0x0003d3ce ldr r5, [pc, 0x17c]                                   |     
    0x0003d3d0 add.w r8, sp, 0x28                                    |     r8 += var_28h;
    0x0003d3d4 ldr r2, [r1, r2]                                      |     
    0x0003d3d6 mov ip, r8                                            |     
    0x0003d3d8 add r4, sp, 0x20                                      |     r4 += var_20h;
    0x0003d3da mov.w sl, 0                                           |     sl = 0;
    0x0003d3de add r5, pc                                            |     r5 = 0x7a930;
    0x0003d3e0 ldr r2, [r2]                                          |     r2 = *(0x7a914);
    0x0003d3e2 str r2, [sp, 0x144]                                   |     var_144h = r2;
    0x0003d3e4 mov.w r2, 0                                           |     r2 = 0;
    0x0003d3e8 str r3, [r6]                                          |     *(r6) = r3;
    0x0003d3ea ldr r3, [pc, 0x164]                                   |     
    0x0003d3ec adds r5, 0x54                                         |     r5 += 0x54;
    0x0003d3ee str.w sl, [r4]                                        |     __asm ("str.w sl, [r4]");
    0x0003d3f2 add r3, pc                                            |     r3 = 0x7a948;
    0x0003d3f4 ldm.w r3, {r0, r1}                                    |     r0 = *(r3);
                                                                     |     r1 = *((r3 + 4));
    0x0003d3f8 str.w r0, [sb]                                        |     __asm ("str.w r0, [sb]");
    0x0003d3fc strh.w r1, [sp, 0x40]                                 |     var_40h = r1;
    0x0003d400 ldm r5!, {r0, r1, r2, r3}                             |     r0 = *(r5!);
                                                                     |     r1 = *((r5! + 4));
                                                                     |     r2 = *((r5! + 8));
                                                                     |     r3 = *((r5! + 12));
    0x0003d402 stm.w ip!, {r0, r1, r2, r3}                           |     *(ip!) = r0;
                                                                     |     *((ip! + 4)) = r1;
                                                                     |     *((ip! + 8)) = r2;
                                                                     |     *((ip! + 12)) = r3;
    0x0003d406 mov r1, sb                                            |     r1 = sb;
    0x0003d408 ldr r3, [r5]                                          |     r3 = *(0x7a930);
    0x0003d40a mov r0, r7                                            |     r0 = r7;
    0x0003d40c str.w r3, [ip]                                        |     __asm ("str.w r3, [ip]");
    0x0003d410 blx 0x14e6c                                           |     r0 = fcn_00014e6c ();
                                                                     |     if (r0 != 0) {
    0x0003d414 cbz r0, 0x3d422                                       |         
    0x0003d416 blx 0x14b20                                           |         r0 = fcn_00014b20 ();
    0x0003d41a cmp r0, 5                                             |         
    0x0003d41c it eq                                                 |         
                                                                     |         if (r0 == 5) {
    0x0003d41e strbeq sl, [sb]                                       |             *(sb) = sl;
                                                                     |             goto label_5;
                                                                     |         }
                                                                     |     }
                                                                     | label_5:
    0x0003d422 ldr.w fp, [pc, 0x130]                                 |     
    0x0003d426 add.w sl, sp, 0x44                                    |     sl += var_44h;
    0x0003d42a ldr r3, [pc, 0x12c]                                   |     
    0x0003d42c add fp, pc                                            |     fp = 0x7a986;
    0x0003d42e add r3, pc                                            |     r3 = 0x7a98c;
    0x0003d430 str r3, [sp, 0x10]                                    |     var_10h = r3;
                                                                     | label_4:
    0x0003d432 strd r7, sb, [sp, 8]                                  |     __asm ("strd r7, sb, [sp, 8]");
    0x0003d436 movs r2, 1                                            |     r2 = 1;
    0x0003d438 str.w fp, [sp]                                        |     __asm ("str.w fp, [sp]");
    0x0003d43c mov r0, sl                                            |     r0 = sl;
    0x0003d43e ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x0003d442 str r3, [sp, 4]                                       |     var_4h_6 = r3;
    0x0003d444 movs r3, 0xff                                         |     r3 = 0xff;
    0x0003d446 mov r1, r3                                            |     r1 = r3;
    0x0003d448 blx 0x14e18                                           |     fcn_00014e18 ();
    0x0003d44c ldr r1, [sp, 0x10]                                    |     r1 = var_10h;
    0x0003d44e mov r0, sl                                            |     r0 = sl;
    0x0003d450 blx 0x14644                                           |     r0 = fcn_00014644 ();
    0x0003d454 mov r5, r0                                            |     r5 = r0;
    0x0003d456 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0003d458 beq 0x3d52c                                           |         goto label_6;
                                                                     |     }
    0x0003d45a movs r1, 2                                            |     r1 = 2;
    0x0003d45c mov.w r0, 0x10000                                     |     r0 = 0x10000;
    0x0003d460 blx 0x14588                                           |     fcn_00014588 ();
    0x0003d464 ldr r1, [r6]                                          |     r1 = *(r6);
    0x0003d466 mov sl, r0                                            |     sl = r0;
    0x0003d468 movs r0, 1                                            |     r0 = 1;
    0x0003d46a adds r1, 1                                            |     r1++;
    0x0003d46c blx 0x14588                                           |     fcn_00014588 ();
    0x0003d470 str r0, [r4]                                          |     *(r4) = r0;
    0x0003d472 cmp.w sl, 0                                           |     
                                                                     |     if (sl == 0) {
    0x0003d476 beq 0x3d520                                           |         goto label_7;
                                                                     |     }
    0x0003d478 movs r7, 0                                            |     r7 = 0;
    0x0003d47a add.w r8, sp, 0x24                                    |     r8 += var_24h;
    0x0003d47e cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0003d480 beq 0x3d514                                           |         goto label_8;
                                                                     |     }
                                                                     |     do {
                                                                     | label_0:
    0x0003d482 mov r3, r5                                            |         r3 = r5;
    0x0003d484 movs r2, 0xa                                          |         r2 = 0xa;
    0x0003d486 mov r1, r6                                            |         r1 = r6;
    0x0003d488 mov r0, r4                                            |         r0 = r4;
    0x0003d48a blx 0x15044                                           |         nl_addr_clone ();
    0x0003d48e adds r0, 1                                            |         r0++;
                                                                     |         if (r0 == 1) {
    0x0003d490 beq 0x3d4fc                                           |             goto label_9;
                                                                     |         }
    0x0003d492 ldr.w fp, [r4]                                        |         fp = *(r4);
    0x0003d496 ldrb.w r3, [fp]                                       |         r3 = *(fp);
    0x0003d49a cmp r3, 0x23                                          |         
    0x0003d49c it ne                                                 |         
                                                                     |         if (r3 != 0x23) {
    0x0003d49e cmpne r3, 0xa                                         |             __asm ("cmpne r3, 0xa");
                                                                     |         }
    0x0003d4a0 beq 0x3d482                                           |         
                                                                     |     } while (r3 == 0x23);
    0x0003d4a2 add.w sb, sl, r7, lsl 1                               |     sb = sl + (r7 << 1);
    0x0003d4a6 b 0x3d4b0                                             |     goto label_10;
                                                                     | label_1:
    0x0003d4a8 adds r7, 1                                            |     r7++;
    0x0003d4aa mov fp, r3                                            |     
    0x0003d4ac strh r0, [sb], 2                                      |     *(sb) = r0;
                                                                     |     sb += 2;
                                                                     | label_10:
    0x0003d4b0 movs r2, 0                                            |     r2 = 0;
    0x0003d4b2 mov r1, r8                                            |     r1 = r8;
    0x0003d4b4 mov r0, fp                                            |     r0 = fp;
    0x0003d4b6 blx 0x14c6c                                           |     raise (r0);
    0x0003d4ba ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x0003d4be cmp r3, fp                                            |     
                                                                     |     if (r3 == fp) {
    0x0003d4c0 beq 0x3d482                                           |         goto label_0;
                                                                     |     }
    0x0003d4c2 cmp.w r7, 0x10000                                     |     
                                                                     |     if (r7 < 0x10000) {
    0x0003d4c6 blt 0x3d4a8                                           |         goto label_1;
                                                                     |     }
    0x0003d4c8 mov r0, r5                                            |     r0 = r5;
    0x0003d4ca mvn r5, 6                                             |     r5 = ~6;
    0x0003d4ce blx 0x144b0                                           |     printf_chk ()
                                                                     |     do {
                                                                     | label_2:
    0x0003d4d2 mov r0, sl                                            |         r0 = sl;
    0x0003d4d4 blx 0x14868                                           |         fcn_00014868 ();
                                                                     | label_3:
    0x0003d4d8 ldr r0, [r4]                                          |         r0 = *(r4);
                                                                     |         if (r0 != 0) {
    0x0003d4da cbz r0, 0x3d4e0                                       |             
    0x0003d4dc blx 0x14868                                           |             fcn_00014868 ();
                                                                     |         }
    0x0003d4e0 ldr r2, [pc, 0x78]                                    |         
    0x0003d4e2 ldr r3, [pc, 0x64]                                    |         r3 = *(0x3d54a);
    0x0003d4e4 add r2, pc                                            |         r2 = 0x7aa44;
    0x0003d4e6 ldr r3, [r2, r3]                                      |         r3 = *(0x7aa44);
    0x0003d4e8 ldr r2, [r3]                                          |         r2 = *(0x7aa44);
    0x0003d4ea ldr r3, [sp, 0x144]                                   |         r3 = var_144h;
    0x0003d4ec eors r2, r3                                           |         r2 ^= r3;
    0x0003d4ee mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0003d4f2 bne 0x3d510                                           |             goto label_11;
                                                                     |         }
    0x0003d4f4 mov r0, r5                                            |         r0 = r5;
    0x0003d4f6 add sp, 0x14c                                         |         
    0x0003d4f8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_9:
    0x0003d4fc mov r0, r5                                            |         r0 = r5;
    0x0003d4fe blx 0x144b0                                           |         printf_chk ()
    0x0003d502 ldr r0, [sp, 0x14]                                    |         r0 = var_14h;
    0x0003d504 mov r2, r7                                            |         r2 = r7;
    0x0003d506 mov r1, sl                                            |         r1 = sl;
    0x0003d508 blx 0x1469c                                           |         r0 = fcn_0001469c ();
    0x0003d50c mov r5, r0                                            |         r5 = r0;
    0x0003d50e b 0x3d4d2                                             |         
                                                                     |     } while (1);
                                                                     | label_11:
    0x0003d510 blx 0x15004                                           |     fcn_00015004 ();
                                                                     | label_8:
    0x0003d514 mov r0, r5                                            |     r0 = r5;
    0x0003d516 mvn r5, 4                                             |     r5 = ~4;
    0x0003d51a blx 0x144b0                                           |     printf_chk ()
    0x0003d51e b 0x3d4d2                                             |     goto label_2;
                                                                     | label_7:
    0x0003d520 mov r0, r5                                            |     r0 = r5;
    0x0003d522 mvn r5, 4                                             |     r5 = ~4;
    0x0003d526 blx 0x144b0                                           |     printf_chk ()
    0x0003d52a b 0x3d4d8                                             |     goto label_3;
                                                                     | label_6:
    0x0003d52c add.w r8, r8, 4                                       |     r8 += 4;
    0x0003d530 cmp r8, sb                                            |     
                                                                     |     if (r8 != sb) {
    0x0003d532 bne.w 0x3d432                                         |         goto label_4;
                                                                     |     }
    0x0003d536 blx 0x15610                                           |     r0 = fcn_00015610 ();
    0x0003d53a ldr r0, [r0]                                          |     r0 = *(r0);
    0x0003d53c blx 0x149dc                                           |     r0 = fcn_000149dc ();
    0x0003d540 rsbs r5, r0, 0                                        |     r5 = r0 - ;
    0x0003d542 b 0x3d4d8                                             |     goto label_3;
                                                                     | }

[*] Function printf used 7 times libnl-route-3.so.200.26.0