[*] Binary protection state of libimpl_wsd_tds.so

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


[*] Function printf tear down of libimpl_wsd_tds.so

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libimpl_wsd_tds.so @ 0x5d28 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.__tds__AddIPAddressFilter ()                     | void tds_AddIPAddressFilter (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00005d28 ldr r2, [pc, 0x2c8]                               |     
    0x00005d2a ldr r3, [pc, 0x2cc]                               |     r3 = *(0x5ffa);
    0x00005d2c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00005d30 mov r4, r1                                        |     r4 = r1;
    0x00005d32 add r2, pc                                        |     r2 = 0xbd2a;
    0x00005d34 ldr r1, [pc, 0x2c4]                               |     
    0x00005d36 sub sp, 0x1c                                      |     
    0x00005d38 movs r5, 0                                        |     r5 = 0;
    0x00005d3a ldr r3, [r2, r3]                                  |     
    0x00005d3c mov r6, r0                                        |     r6 = r0;
    0x00005d3e add r1, pc                                        |     r1 = 0xbd3e;
    0x00005d40 ldr r3, [r3]                                      |     r3 = *(0xbd2a);
    0x00005d42 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00005d44 mov.w r3, 0                                       |     r3 = 0;
    0x00005d48 str r5, [sp, 0x10]                                |     var_10h = r5;
    0x00005d4a blx 0x5414                                        |     r0 = wssecurity_uh_allowed_access ();
    0x00005d4e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005d50 beq.w 0x5eba                                      |         goto label_12;
                                                                 |     }
    0x00005d54 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00005d56 beq.w 0x5e9c                                      |         goto label_13;
                                                                 |     }
    0x00005d5a ldr r3, [r4]                                      |     r3 = *(r4);
    0x00005d5c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00005d5e beq.w 0x5e9c                                      |         goto label_13;
                                                                 |     }
    0x00005d62 ldr.w r8, [r3, 4]                                 |     r8 = *((r3 + 4));
    0x00005d66 ldr.w sb, [r3, 0xc]                               |     sb = *((r3 + 0xc));
    0x00005d6a cmp.w r8, 0                                       |     
    0x00005d6e it le                                             |     
                                                                 |     if (r8 <= 0) {
    0x00005d70 cmple sb, 0                                       |         __asm ("cmple sb, 0");
                                                                 |     }
                                                                 |     if (r8 > 0) {
    0x00005d74 ble 0x5dbc                                        |         
    0x00005d76 ldr r2, [r3, 8]                                   |         r2 = *((r3 + 8));
    0x00005d78 cmp.w r8, 0                                       |         
    0x00005d7c ldr r0, [r3, 0x10]                                |         r0 = *((r3 + 0x10));
    0x00005d7e mov r1, r2                                        |         r1 = r2;
    0x00005d80 mov fp, r2                                        |         
    0x00005d82 ite le                                            |         
                                                                 |         if (r8 > 0) {
    0x00005d84 movle r2, 0                                       |             r2 = 0;
                                                                 |         }
                                                                 |         if (r8 <= 0) {
    0x00005d86 movgt r2, 1                                       |             r2 = 1;
                                                                 |         }
    0x00005d88 cmp r1, 0                                         |         
    0x00005d8a str r0, [sp]                                      |         *(sp) = r0;
    0x00005d8c it ne                                             |         
                                                                 |         if (r1 == 0) {
    0x00005d8e movne r2, 0                                       |             r2 = 0;
                                                                 |         }
    0x00005d90 cmp r2, 0                                         |         
                                                                 |         if (r2 != 0) {
    0x00005d92 bne 0x5e8e                                        |             goto label_14;
                                                                 |         }
    0x00005d94 cmp.w sb, 0                                       |         
    0x00005d98 ite le                                            |         
                                                                 |         if (sb > 0) {
    0x00005d9a movle r2, 0                                       |             r2 = 0;
                                                                 |         }
                                                                 |         if (sb <= 0) {
    0x00005d9c movgt r2, 1                                       |             r2 = 1;
                                                                 |         }
    0x00005d9e cmp r0, 0                                         |         
    0x00005da0 it ne                                             |         
                                                                 |         if (r0 == 0) {
    0x00005da2 movne r2, 0                                       |             r2 = 0;
                                                                 |         }
    0x00005da4 cmp r2, 0                                         |         
                                                                 |         if (r2 != 0) {
    0x00005da6 bne 0x5e8e                                        |             goto label_14;
                                                                 |         }
    0x00005da8 ldr r3, [r3]                                      |         r3 = *(r3);
    0x00005daa str r3, [sp, 4]                                   |         var_4h = r3;
                                                                 |         if (r3 == 0) {
    0x00005dac cbz r3, 0x5dda                                    |             goto label_15;
                                                                 |         }
    0x00005dae cmp r3, 1                                         |         
                                                                 |         if (r3 == 1) {
    0x00005db0 beq 0x5dda                                        |             goto label_15;
                                                                 |         }
    0x00005db2 movs r1, 0xa                                      |         r1 = 0xa;
    0x00005db4 mov r0, r6                                        |         r0 = r6;
    0x00005db6 movs r5, 0xc                                      |         r5 = 0xc;
    0x00005db8 blx 0x527c                                        |         soap_fault_generic ();
                                                                 |     }
                                                                 | label_1:
    0x00005dbc ldr r2, [pc, 0x240]                               |     
    0x00005dbe ldr r3, [pc, 0x238]                               |     r3 = *(0x5ffa);
    0x00005dc0 add r2, pc                                        |     r2 = 0xbdc4;
    0x00005dc2 ldr r3, [r2, r3]                                  |     r3 = *(0xbdc4);
    0x00005dc4 ldr r2, [r3]                                      |     r2 = *(0xbdc4);
    0x00005dc6 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x00005dc8 eors r2, r3                                       |     r2 ^= r3;
    0x00005dca mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00005dce bne.w 0x5fee                                      |         goto label_16;
                                                                 |     }
    0x00005dd2 mov r0, r5                                        |     r0 = r5;
    0x00005dd4 add sp, 0x1c                                      |     
    0x00005dd6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_15:
    0x00005dda blx 0x5090                                        |     r0 = net_init ();
    0x00005dde mov r5, r0                                        |     r5 = r0;
    0x00005de0 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00005de2 bne.w 0x5f72                                      |         goto label_17;
                                                                 |     }
    0x00005de6 add r0, sp, 0x10                                  |     r0 += var_10h;
    0x00005de8 blx 0x5764                                        |     r0 = fcn_00005764 ();
    0x00005dec mov r4, r0                                        |     r4 = r0;
    0x00005dee cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00005df0 bne 0x5ec8                                        |         goto label_18;
                                                                 |     }
    0x00005df2 ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x00005df4 blx 0x55f8                                        |     fcn_000055f8 ();
    0x00005df8 add.w r3, r8, sb                                  |     r3 = r8 + sb;
    0x00005dfc adds r3, 1                                        |     r3++;
    0x00005dfe add r0, r3                                        |     r0 += r3;
    0x00005e00 lsls r0, r0, 2                                    |     r0 <<= 2;
    0x00005e02 blx 0x59e4                                        |     r0 = net_device_ipv4_config_array_free ();
    0x00005e06 mov r7, r0                                        |     r7 = r0;
    0x00005e08 ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x00005e0a ldr r5, [r0]                                      |     r5 = *(r0);
    0x00005e0c cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00005e0e beq.w 0x5fb4                                      |         goto label_19;
                                                                 |     }
    0x00005e12 subs r2, r7, 4                                    |     r2 = r7 - 4;
    0x00005e14 mov r3, r0                                        |     r3 = r0;
                                                                 |     do {
    0x00005e16 str r5, [r2, 4]!                                  |         *((r2 += 4)) = r5;
    0x00005e1a adds r4, 1                                        |         r4++;
    0x00005e1c ldr r5, [r3, 4]!                                  |         r5 = *((r3 += 4));
    0x00005e20 cmp r5, 0                                         |         
    0x00005e22 bne 0x5e16                                        |         
                                                                 |     } while (r5 != 0);
    0x00005e24 blx 0x56a4                                        |     fcn_000056a4 ();
    0x00005e28 cmp.w r8, 0                                       |     
    0x00005e2c str r5, [sp, 0x10]                                |     var_10h = r5;
                                                                 |     if (r8 <= 0) {
    0x00005e2e ble 0x5eec                                        |         goto label_20;
                                                                 |     }
                                                                 | label_9:
    0x00005e30 ldr r2, [pc, 0x1d0]                               |     
    0x00005e32 mov.w sl, 0                                       |     sl = 0;
    0x00005e36 mov r3, fp                                        |     r3 = fp;
    0x00005e38 str.w sb, [sp, 0xc]                               |     __asm ("str.w sb, [var_ch]");
    0x00005e3c str r6, [sp, 8]                                   |     var_8h = r6;
    0x00005e3e add.w fp, fp, 4                                   |     
    0x00005e42 add r2, pc                                        |     r2 = 0xbe4a;
    0x00005e44 mov r6, sl                                        |     r6 = sl;
    0x00005e46 mov sb, r3                                        |     sb = r3;
    0x00005e48 mov sl, r8                                        |     sl = r8;
    0x00005e4a mov r8, r2                                        |     r8 = r2;
    0x00005e4c b 0x5e62                                          |     
                                                                 |     while (r0 == 0) {
    0x00005e4e ldr.w r2, [fp, r6, lsl 3]                         |         offset_0 = r6 << 3;
                                                                 |         r2 = *((fp + offset_0));
    0x00005e52 cmp r2, 0x20                                      |         
                                                                 |         if (r2 == 0x20) {
    0x00005e54 beq 0x5eaa                                        |             goto label_21;
                                                                 |         }
                                                                 | label_2:
    0x00005e56 str.w r5, [r7, r4, lsl 2]                         |         __asm ("str.w r5, [r7, r4, lsl 2]");
    0x00005e5a adds r4, 1                                        |         r4++;
                                                                 | label_0:
    0x00005e5c adds r6, 1                                        |         r6++;
    0x00005e5e cmp sl, r6                                        |         
                                                                 |         if (sl == r6) {
    0x00005e60 beq 0x5ee8                                        |             goto label_22;
                                                                 |         }
    0x00005e62 ldr.w r2, [fp, r6, lsl 3]                         |         offset_1 = r6 << 3;
                                                                 |         r2 = *((fp + offset_1));
    0x00005e66 mov r0, r8                                        |         r0 = r8;
    0x00005e68 ldr.w r1, [sb, r6, lsl 3]                         |         offset_2 = r6 << 3;
                                                                 |         r1 = *((sb + offset_2));
    0x00005e6c blx 0x5330                                        |         r0 = g_strdup_printf ()
    0x00005e70 mov r5, r0                                        |         r5 = r0;
    0x00005e72 blx 0x557c                                        |         r0 = fcn_0000557c ();
    0x00005e76 cmp r0, 1                                         |         
                                                                 |         if (r0 != 1) {
    0x00005e78 bne 0x5f5c                                        |             goto label_23;
                                                                 |         }
    0x00005e7a mov r1, r5                                        |         r1 = r5;
    0x00005e7c mov r0, r7                                        |         r0 = r7;
    0x00005e7e blx 0x5b94                                        |         r0 = wsd_set_relay_output_settings ();
    0x00005e82 cmp r0, 0                                         |         
    0x00005e84 beq 0x5e4e                                        |         
                                                                 |     }
                                                                 | label_3:
    0x00005e86 mov r0, r5                                        |     r0 = r5;
    0x00005e88 blx 0x56a4                                        |     fcn_000056a4 ();
    0x00005e8c b 0x5e5c                                          |     goto label_0;
                                                                 | label_14:
    0x00005e8e movs r2, 0                                        |     r2 = 0;
    0x00005e90 movs r1, 7                                        |     r1 = 7;
    0x00005e92 mov r0, r6                                        |     r0 = r6;
    0x00005e94 movs r5, 0xc                                      |     r5 = 0xc;
    0x00005e96 blx 0x527c                                        |     soap_fault_generic ();
    0x00005e9a b 0x5dbc                                          |     goto label_1;
                                                                 | label_13:
    0x00005e9c movs r2, 0                                        |     r2 = 0;
    0x00005e9e movs r1, 3                                        |     r1 = 3;
    0x00005ea0 mov r0, r6                                        |     r0 = r6;
    0x00005ea2 movs r5, 0xc                                      |     r5 = 0xc;
    0x00005ea4 blx 0x527c                                        |     soap_fault_generic ();
    0x00005ea8 b 0x5dbc                                          |     goto label_1;
                                                                 | label_21:
    0x00005eaa ldr.w r1, [sb, r6, lsl 3]                         |     offset_3 = r6 << 3;
                                                                 |     r1 = *((sb + offset_3));
    0x00005eae mov r0, r7                                        |     r0 = r7;
    0x00005eb0 blx 0x5b94                                        |     r0 = wsd_set_relay_output_settings ();
    0x00005eb4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005eb6 beq 0x5e56                                        |         goto label_2;
                                                                 |     }
    0x00005eb8 b 0x5e86                                          |     goto label_3;
                                                                 | label_12:
    0x00005eba mov r2, r0                                        |     r2 = r0;
    0x00005ebc movs r1, 0xd                                      |     r1 = 0xd;
    0x00005ebe mov r0, r6                                        |     r0 = r6;
    0x00005ec0 movs r5, 0xc                                      |     r5 = 0xc;
    0x00005ec2 blx 0x527c                                        |     soap_fault_generic ();
    0x00005ec6 b 0x5dbc                                          |     goto label_1;
                                                                 | label_18:
    0x00005ec8 mov r2, r5                                        |     r2 = r5;
    0x00005eca movs r1, 0xf                                      |     r1 = 0xf;
    0x00005ecc mov r0, r6                                        |     r0 = r6;
    0x00005ece mov r7, r5                                        |     r7 = r5;
    0x00005ed0 movs r5, 0xc                                      |     r5 = 0xc;
    0x00005ed2 blx 0x527c                                        |     soap_fault_generic ();
                                                                 | label_7:
    0x00005ed6 blx 0x5860                                        |     fcn_00005860 ();
    0x00005eda ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x00005edc blx 0x55e0                                        |     fcn_000055e0 ();
    0x00005ee0 mov r0, r7                                        |     r0 = r7;
    0x00005ee2 blx 0x55e0                                        |     fcn_000055e0 ();
    0x00005ee6 b 0x5dbc                                          |     goto label_1;
                                                                 | label_22:
    0x00005ee8 ldrd r6, sb, [sp, 8]                              |     __asm ("ldrd r6, sb, [var_ch]");
                                                                 | label_20:
    0x00005eec cmp.w sb, 0                                       |     
                                                                 |     if (sb <= 0) {
    0x00005ef0 ble 0x5f82                                        |         goto label_24;
                                                                 |     }
                                                                 | label_10:
    0x00005ef2 ldr r3, [sp]                                      |     r3 = *(sp);
    0x00005ef4 mov.w fp, 0                                       |     
    0x00005ef8 ldr.w sl, [pc, 0x10c]                             |     
    0x00005efc str r6, [sp]                                      |     *(sp) = r6;
    0x00005efe mov r6, fp                                        |     r6 = fp;
    0x00005f00 add.w r8, r3, 4                                   |     r8 = r3 + 4;
    0x00005f04 mov fp, sb                                        |     
    0x00005f06 add sl, pc                                        |     sl = 0xbf12;
    0x00005f08 mov sb, r3                                        |     sb = r3;
    0x00005f0a b 0x5f20                                          |     
                                                                 |     while (r0 == 0) {
    0x00005f0c ldr.w r2, [r8, r6, lsl 3]                         |         offset_4 = r6 << 3;
                                                                 |         r2 = *((r8 + offset_4));
    0x00005f10 cmp r2, 0x80                                      |         
                                                                 |         if (r2 == 0x80) {
    0x00005f12 beq 0x5f4c                                        |             goto label_25;
                                                                 |         }
                                                                 | label_5:
    0x00005f14 str.w r5, [r7, r4, lsl 2]                         |         __asm ("str.w r5, [r7, r4, lsl 2]");
    0x00005f18 adds r4, 1                                        |         r4++;
                                                                 | label_4:
    0x00005f1a adds r6, 1                                        |         r6++;
    0x00005f1c cmp fp, r6                                        |         
                                                                 |         if (fp == r6) {
    0x00005f1e beq 0x5f80                                        |             goto label_26;
                                                                 |         }
    0x00005f20 ldr.w r2, [r8, r6, lsl 3]                         |         offset_5 = r6 << 3;
                                                                 |         r2 = *((r8 + offset_5));
    0x00005f24 mov r0, sl                                        |         r0 = sl;
    0x00005f26 ldr.w r1, [sb, r6, lsl 3]                         |         offset_6 = r6 << 3;
                                                                 |         r1 = *((sb + offset_6));
    0x00005f2a blx 0x5330                                        |         r0 = g_strdup_printf ()
    0x00005f2e mov r5, r0                                        |         r5 = r0;
    0x00005f30 blx 0x557c                                        |         r0 = fcn_0000557c ();
    0x00005f34 cmp r0, 2                                         |         
                                                                 |         if (r0 != 2) {
    0x00005f36 bne 0x5fac                                        |             goto label_27;
                                                                 |         }
    0x00005f38 mov r1, r5                                        |         r1 = r5;
    0x00005f3a mov r0, r7                                        |         r0 = r7;
    0x00005f3c blx 0x5b94                                        |         r0 = wsd_set_relay_output_settings ();
    0x00005f40 cmp r0, 0                                         |         
    0x00005f42 beq 0x5f0c                                        |         
                                                                 |     }
                                                                 | label_6:
    0x00005f44 mov r0, r5                                        |     r0 = r5;
    0x00005f46 blx 0x56a4                                        |     fcn_000056a4 ();
    0x00005f4a b 0x5f1a                                          |     goto label_4;
                                                                 | label_25:
    0x00005f4c ldr.w r1, [sb, r6, lsl 3]                         |     offset_7 = r6 << 3;
                                                                 |     r1 = *((sb + offset_7));
    0x00005f50 mov r0, r7                                        |     r0 = r7;
    0x00005f52 blx 0x5b94                                        |     r0 = wsd_set_relay_output_settings ();
    0x00005f56 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005f58 beq 0x5f14                                        |         goto label_5;
                                                                 |     }
    0x00005f5a b 0x5f44                                          |     goto label_6;
                                                                 | label_23:
    0x00005f5c ldr r6, [sp, 8]                                   |     r6 = var_8h;
    0x00005f5e movs r2, 0                                        |     r2 = 0;
    0x00005f60 movs r1, 0x16                                     |     r1 = 0x16;
                                                                 | label_8:
    0x00005f62 mov r0, r6                                        |     r0 = r6;
    0x00005f64 blx 0x5258                                        |     soap_fault_device_management ();
    0x00005f68 mov r0, r5                                        |     r0 = r5;
    0x00005f6a movs r5, 0xc                                      |     r5 = 0xc;
    0x00005f6c blx 0x56a4                                        |     fcn_000056a4 ();
    0x00005f70 b 0x5ed6                                          |     goto label_7;
                                                                 | label_17:
    0x00005f72 movs r2, 0                                        |     r2 = 0;
    0x00005f74 movs r1, 0xf                                      |     r1 = 0xf;
    0x00005f76 mov r0, r6                                        |     r0 = r6;
    0x00005f78 movs r5, 0xc                                      |     r5 = 0xc;
    0x00005f7a blx 0x527c                                        |     soap_fault_generic ();
    0x00005f7e b 0x5dbc                                          |     goto label_1;
                                                                 | label_26:
    0x00005f80 ldr r6, [sp]                                      |     r6 = *(sp);
                                                                 | label_24:
    0x00005f82 cmp.w r4, 0x100                                   |     
                                                                 |     if (r4 > 0x100) {
    0x00005f86 bgt 0x5fd2                                        |         goto label_28;
                                                                 |     }
                                                                 | label_11:
    0x00005f88 ldr r0, [sp, 4]                                   |     r0 = var_4h;
    0x00005f8a mov r1, r7                                        |     r1 = r7;
    0x00005f8c blx 0x533c                                        |     r0 = net_ipfilter_set_input_config ();
    0x00005f90 mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r0 != 0) {
    0x00005f92 cbnz r0, 0x5fe0                                   |         goto label_29;
                                                                 |     }
    0x00005f94 blx 0x5694                                        |     r0 = fcn_00005694 ();
    0x00005f98 mov r5, r0                                        |     r5 = r0;
    0x00005f9a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005f9c beq 0x5ed6                                        |         goto label_7;
                                                                 |     }
    0x00005f9e mov r2, r4                                        |     r2 = r4;
    0x00005fa0 movs r1, 0xf                                      |     r1 = 0xf;
    0x00005fa2 mov r0, r6                                        |     r0 = r6;
    0x00005fa4 movs r5, 0xc                                      |     r5 = 0xc;
    0x00005fa6 blx 0x527c                                        |     soap_fault_generic ();
    0x00005faa b 0x5ed6                                          |     goto label_7;
                                                                 | label_27:
    0x00005fac ldr r6, [sp]                                      |     r6 = *(sp);
    0x00005fae movs r2, 0                                        |     r2 = 0;
    0x00005fb0 movs r1, 0x18                                     |     r1 = 0x18;
    0x00005fb2 b 0x5f62                                          |     goto label_8;
                                                                 | label_19:
    0x00005fb4 blx 0x56a4                                        |     fcn_000056a4 ();
    0x00005fb8 cmp.w r8, 0                                       |     
    0x00005fbc str r5, [sp, 0x10]                                |     var_10h = r5;
    0x00005fbe it gt                                             |     
                                                                 |     if (r8 > 0) {
    0x00005fc0 movgt r4, r5                                      |         r4 = r5;
                                                                 |         goto label_30;
                                                                 |     }
                                                                 |     if (r8 > 0) {
                                                                 | label_30:
    0x00005fc2 bgt.w 0x5e30                                      |         goto label_9;
                                                                 |     }
    0x00005fc6 cmp.w sb, 0                                       |     
    0x00005fca it gt                                             |     
                                                                 |     if (sb > 0) {
    0x00005fcc movgt r4, r5                                      |         r4 = r5;
                                                                 |         goto label_31;
                                                                 |     }
                                                                 |     if (sb > 0) {
                                                                 | label_31:
    0x00005fce bgt 0x5ef2                                        |         goto label_10;
                                                                 |     }
    0x00005fd0 b 0x5f88                                          |     goto label_11;
                                                                 | label_28:
    0x00005fd2 movs r2, 0                                        |     r2 = 0;
    0x00005fd4 movs r1, 0x1d                                     |     r1 = 0x1d;
    0x00005fd6 mov r0, r6                                        |     r0 = r6;
    0x00005fd8 movs r5, 0xc                                      |     r5 = 0xc;
    0x00005fda blx 0x5258                                        |     soap_fault_device_management ();
    0x00005fde b 0x5ed6                                          |     goto label_7;
                                                                 | label_29:
    0x00005fe0 movs r2, 0                                        |     r2 = 0;
    0x00005fe2 movs r1, 0xf                                      |     r1 = 0xf;
    0x00005fe4 mov r0, r6                                        |     r0 = r6;
    0x00005fe6 movs r5, 0xc                                      |     r5 = 0xc;
    0x00005fe8 blx 0x527c                                        |     soap_fault_generic ();
    0x00005fec b 0x5ed6                                          |     goto label_7;
                                                                 | label_16:
    0x00005fee blx 0x561c                                        |     fcn_0000561c ();
    0x00005ff2 nop                                               |     
    0x00005ff4 ldm r6!, {r1}                                     |     r1 = *(r6!);
    0x00005ff6 movs r1, r0                                       |     r1 = r0;
    0x00005ff8 lsls r0, r3, 0x12                                 |     r0 = r3 << 0x12;
    0x00005ffa movs r0, r0                                       |     
    0x00005ffc adr r7, 0x98                                      |     r7 = 0x98;
    0x00005ffe movs r0, r0                                       |     
    0x00006000 ldm r5, {r2, r4, r5, r6}                          |     r2 = *(r5);
                                                                 |     r4 = *((r5 + 4));
                                                                 |     r5 = *((r5 + 8));
                                                                 |     r6 = *((r5 + 12));
    0x00006002 movs r1, r0                                       |     r1 = r0;
    0x00006004 adr r6, 0xe8                                      |     r6 = 0xe8;
    0x00006006 movs r0, r0                                       |     
    0x00006008 adr r5, 0x1d8                                     |     r5 = 0x1d8;
    0x0000600a movs r0, r0                                       |     
                                                                 | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libimpl_wsd_tds.so @ 0xb9b0 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.__tds__RemoveIPAddressFilter ()                      | void tds_RemoveIPAddressFilter (int16_t arg1, int16_t arg2) {
                                                                     |     int16_t var_0h_2;
                                                                     |     int16_t var_4h_2;
                                                                     |     int16_t var_8h_2;
                                                                     |     int16_t var_ch_2;
                                                                     |     int16_t var_10h;
                                                                     |     int16_t var_14h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0000b9b0 blmi 0xff59e50c                                       |     __asm ("blmi 0xff59e50c");
    0x0000b9b4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000b9b8 mov r4, r1                                            |     r4 = r1;
    0x0000b9ba add r2, pc                                            |     r2 += pc;
    0x0000b9bc ldr r1, [pc, 0x350]                                   |     
    0x0000b9be sub sp, 0x1c                                          |     
    0x0000b9c0 movs r5, 0                                            |     r5 = 0;
    0x0000b9c2 ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000b9c4 mov r8, r0                                            |     r8 = r0;
    0x0000b9c6 add r1, pc                                            |     r1 = 0x176da;
    0x0000b9c8 ldr r3, [r3]                                          |     r3 = *(r3);
    0x0000b9ca str r3, [sp, 0x14]                                    |     var_14h = r3;
    0x0000b9cc mov.w r3, 0                                           |     r3 = 0;
    0x0000b9d0 str r5, [sp, 0x10]                                    |     var_10h = r5;
    0x0000b9d2 blx 0x5414                                            |     r0 = wssecurity_uh_allowed_access ();
    0x0000b9d6 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000b9d8 beq.w 0xbc34                                          |         goto label_12;
                                                                     |     }
    0x0000b9dc cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x0000b9de beq.w 0xbc26                                          |         goto label_13;
                                                                     |     }
    0x0000b9e2 ldr r3, [r4]                                          |     r3 = *(r4);
    0x0000b9e4 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000b9e6 beq.w 0xbc26                                          |         goto label_13;
                                                                     |     }
    0x0000b9ea ldr.w sb, [r3, 4]                                     |     sb = *((r3 + 4));
    0x0000b9ee ldr.w sl, [r3, 0xc]                                   |     sl = *((r3 + 0xc));
    0x0000b9f2 cmp.w sb, 0                                           |     
    0x0000b9f6 it le                                                 |     
                                                                     |     if (sb <= 0) {
    0x0000b9f8 cmple sl, 0                                           |         __asm ("cmple sl, 0");
                                                                     |     }
                                                                     |     if (sb <= 0) {
    0x0000b9fc ble.w 0xbbf2                                          |         goto label_6;
                                                                     |     }
    0x0000ba00 ldr r7, [r3, 8]                                       |     r7 = *((r3 + 8));
    0x0000ba02 cmp.w sb, 0                                           |     
    0x0000ba06 ldr r3, [r3, 0x10]                                    |     r3 = *((r3 + 0x10));
    0x0000ba08 mov r2, r3                                            |     r2 = r3;
    0x0000ba0a str r3, [sp]                                          |     *(sp) = r3;
    0x0000ba0c ite le                                                |     
                                                                     |     if (sb > 0) {
    0x0000ba0e movle r3, 0                                           |         r3 = 0;
                                                                     |     }
                                                                     |     if (sb <= 0) {
    0x0000ba10 movgt r3, 1                                           |         r3 = 1;
                                                                     |     }
    0x0000ba12 cmp r7, 0                                             |     
    0x0000ba14 it ne                                                 |     
                                                                     |     if (r7 == 0) {
    0x0000ba16 movne r3, 0                                           |         r3 = 0;
                                                                     |     }
    0x0000ba18 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000ba1a bne.w 0xbc0e                                          |         goto label_14;
                                                                     |     }
    0x0000ba1e cmp.w sl, 0                                           |     
    0x0000ba22 ite le                                                |     
                                                                     |     if (sl > 0) {
    0x0000ba24 movle r5, 0                                           |         r5 = 0;
                                                                     |     }
                                                                     |     if (sl <= 0) {
    0x0000ba26 movgt r5, 1                                           |         r5 = 1;
                                                                     |     }
    0x0000ba28 cmp r2, 0                                             |     
    0x0000ba2a it ne                                                 |     
                                                                     |     if (r2 == 0) {
    0x0000ba2c movne r5, 0                                           |         r5 = 0;
                                                                     |     }
    0x0000ba2e cmp r5, 0                                             |     
                                                                     |     if (r5 != 0) {
    0x0000ba30 bne.w 0xbc0e                                          |         goto label_14;
                                                                     |     }
    0x0000ba34 blx 0x5090                                            |     r0 = net_init ();
    0x0000ba38 mov r4, r0                                            |     r4 = r0;
    0x0000ba3a cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ba3c bne.w 0xbc42                                          |         goto label_15;
                                                                     |     }
    0x0000ba40 add r0, sp, 0x10                                      |     r0 += var_10h;
    0x0000ba42 blx 0x5764                                            |     fcn_00005764 ();
    0x0000ba46 str r0, [sp, 4]                                       |     var_4h_2 = r0;
    0x0000ba48 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ba4a bne.w 0xbbce                                          |         goto label_16;
                                                                     |     }
    0x0000ba4e ldr r0, [sp, 0x10]                                    |     r0 = var_10h;
    0x0000ba50 blx 0x55f8                                            |     fcn_000055f8 ();
    0x0000ba54 str r0, [sp, 8]                                       |     var_8h_2 = r0;
    0x0000ba56 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000ba58 beq.w 0xbc5a                                          |         goto label_17;
                                                                     |     }
    0x0000ba5c cmp.w sb, 0                                           |     
                                                                     |     if (sb <= 0) {
    0x0000ba60 ble 0xbaf2                                            |         goto label_18;
                                                                     |     }
    0x0000ba62 ldr r3, [pc, 0x2b0]                                   |     
    0x0000ba64 mov r5, r7                                            |     r5 = r7;
    0x0000ba66 movs r6, 0                                            |     r6 = 0;
    0x0000ba68 str.w sl, [sp, 0xc]                                   |     __asm ("str.w sl, [var_ch_2]");
    0x0000ba6c add r3, pc                                            |     r3 = 0x17786;
    0x0000ba6e mov fp, r3                                            |     
                                                                     | label_1:
    0x0000ba70 ldr r2, [r5, 4]                                       |     r2 = *((r5 + 4));
    0x0000ba72 mov r0, fp                                            |     r0 = fp;
    0x0000ba74 ldr.w r1, [r7, r6, lsl 3]                             |     offset_0 = r6 << 3;
                                                                     |     r1 = *((r7 + offset_0));
    0x0000ba78 blx 0x5330                                            |     r0 = g_strdup_printf ()
    0x0000ba7c mov r4, r0                                            |     r4 = r0;
    0x0000ba7e blx 0x557c                                            |     r0 = fcn_0000557c ();
    0x0000ba82 cmp r0, 1                                             |     
                                                                     |     if (r0 != 1) {
    0x0000ba84 bne.w 0xbc74                                          |         goto label_19;
                                                                     |     }
    0x0000ba88 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000ba8a ldr r0, [r3]                                          |     r0 = *(r3);
    0x0000ba8c mov sl, r0                                            |     sl = r0;
                                                                     |     if (r0 == 0) {
    0x0000ba8e cbz r0, 0xbad4                                        |         goto label_5;
                                                                     |     }
    0x0000ba90 mov.w sl, 0                                           |     sl = 0;
    0x0000ba94 b 0xbaa0                                              |     
                                                                     |     while (r2 != 0x20) {
    0x0000ba96 add.w sl, sl, 4                                       |         sl += 4;
    0x0000ba9a ldr.w r0, [r3, sl]                                    |         r0 = *((r3 + sl));
                                                                     |         if (r0 == 0) {
    0x0000ba9e cbz r0, 0xbad4                                        |             goto label_5;
                                                                     |         }
                                                                     | label_0:
    0x0000baa0 mov r1, r4                                            |         r1 = r4;
    0x0000baa2 blx 0x5c00                                            |         r0 = g_hash_table_new ();
    0x0000baa6 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000baa8 beq.w 0xbc1c                                          |             goto label_20;
                                                                     |         }
    0x0000baac ldr r2, [r5, 4]                                       |         r2 = *((r5 + 4));
    0x0000baae ldr r3, [sp, 0x10]                                    |         r3 = var_10h;
    0x0000bab0 cmp r2, 0x20                                          |         
    0x0000bab2 bne 0xba96                                            |         
                                                                     |     }
    0x0000bab4 ldr.w r0, [r3, sl]                                    |     r0 = *((r3 + sl));
    0x0000bab8 ldr.w r1, [r7, r6, lsl 3]                             |     offset_1 = r6 << 3;
                                                                     |     r1 = *((r7 + offset_1));
    0x0000babc blx 0x5c00                                            |     r0 = g_hash_table_new ();
    0x0000bac0 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000bac2 beq.w 0xbc1c                                          |         goto label_20;
                                                                     |     }
    0x0000bac6 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000bac8 add.w sl, sl, 4                                       |     sl += 4;
    0x0000bacc ldr.w r0, [r3, sl]                                    |     r0 = *((r3 + sl));
    0x0000bad0 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000bad2 bne 0xbaa0                                            |         goto label_0;
                                                                     |     }
                                                                     | label_5:
    0x0000bad4 mov r0, r4                                            |     r0 = r4;
    0x0000bad6 blx 0x56a4                                            |     fcn_000056a4 ();
    0x0000bada ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0000badc ldr.w r3, [r2, sl]                                    |     r3 = *((r2 + sl));
    0x0000bae0 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000bae2 beq.w 0xbc8c                                          |         goto label_21;
                                                                     |     }
    0x0000bae6 adds r6, 1                                            |     r6++;
    0x0000bae8 adds r5, 8                                            |     r5 += 8;
    0x0000baea cmp sb, r6                                            |     
                                                                     |     if (sb != r6) {
    0x0000baec bne 0xba70                                            |         goto label_1;
                                                                     |     }
    0x0000baee ldr.w sl, [sp, 0xc]                                   |     sl = var_ch_2;
                                                                     | label_18:
    0x0000baf2 cmp.w sl, 0                                           |     
                                                                     |     if (sl <= 0) {
    0x0000baf6 ble 0xbb88                                            |         goto label_22;
                                                                     |     }
    0x0000baf8 ldr.w fp, [sp]                                        |     fp = *(sp);
    0x0000bafc movs r6, 0                                            |     r6 = 0;
    0x0000bafe ldr r7, [pc, 0x218]                                   |     
    0x0000bb00 str.w sb, [sp]                                        |     __asm ("str.w sb, [sp]");
    0x0000bb04 mov r5, fp                                            |     r5 = fp;
    0x0000bb06 add r7, pc                                            |     r7 = 0x17824;
                                                                     | label_3:
    0x0000bb08 ldr r2, [r5, 4]                                       |     r2 = *((r5 + 4));
    0x0000bb0a mov r0, r7                                            |     r0 = r7;
    0x0000bb0c ldr.w r1, [fp, r6, lsl 3]                             |     offset_2 = r6 << 3;
                                                                     |     r1 = *((fp + offset_2));
    0x0000bb10 blx 0x5330                                            |     r0 = g_strdup_printf ()
    0x0000bb14 mov r4, r0                                            |     r4 = r0;
    0x0000bb16 blx 0x557c                                            |     r0 = fcn_0000557c ();
    0x0000bb1a cmp r0, 2                                             |     
                                                                     |     if (r0 != 2) {
    0x0000bb1c bne.w 0xbcd4                                          |         goto label_23;
                                                                     |     }
    0x0000bb20 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000bb22 ldr r0, [r3]                                          |     r0 = *(r3);
    0x0000bb24 mov sb, r0                                            |     sb = r0;
                                                                     |     if (r0 == 0) {
    0x0000bb26 cbz r0, 0xbb6a                                        |         goto label_7;
                                                                     |     }
    0x0000bb28 mov.w sb, 0                                           |     sb = 0;
    0x0000bb2c b 0xbb38                                              |     
                                                                     |     while (r2 != 0x80) {
    0x0000bb2e add.w sb, sb, 4                                       |         sb += 4;
    0x0000bb32 ldr.w r0, [r3, sb]                                    |         r0 = *((r3 + sb));
                                                                     |         if (r0 == 0) {
    0x0000bb36 cbz r0, 0xbb6a                                        |             goto label_7;
                                                                     |         }
                                                                     | label_2:
    0x0000bb38 mov r1, r4                                            |         r1 = r4;
    0x0000bb3a blx 0x5c00                                            |         r0 = g_hash_table_new ();
    0x0000bb3e cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000bb40 beq.w 0xbc50                                          |             goto label_24;
                                                                     |         }
    0x0000bb44 ldr r2, [r5, 4]                                       |         r2 = *((r5 + 4));
    0x0000bb46 ldr r3, [sp, 0x10]                                    |         r3 = var_10h;
    0x0000bb48 cmp r2, 0x80                                          |         
    0x0000bb4a bne 0xbb2e                                            |         
                                                                     |     }
    0x0000bb4c ldr.w r0, [r3, sb]                                    |     r0 = *((r3 + sb));
    0x0000bb50 ldr.w r1, [fp, r6, lsl 3]                             |     offset_3 = r6 << 3;
                                                                     |     r1 = *((fp + offset_3));
    0x0000bb54 blx 0x5c00                                            |     r0 = g_hash_table_new ();
    0x0000bb58 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000bb5a beq 0xbc50                                            |         goto label_24;
                                                                     |     }
    0x0000bb5c ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000bb5e add.w sb, sb, 4                                       |     sb += 4;
    0x0000bb62 ldr.w r0, [r3, sb]                                    |     r0 = *((r3 + sb));
    0x0000bb66 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000bb68 bne 0xbb38                                            |         goto label_2;
                                                                     |     }
                                                                     | label_7:
    0x0000bb6a mov r0, r4                                            |     r0 = r4;
    0x0000bb6c blx 0x56a4                                            |     fcn_000056a4 ();
    0x0000bb70 ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0000bb72 ldr.w r3, [r2, sb]                                    |     r3 = *((r2 + sb));
    0x0000bb76 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000bb78 beq.w 0xbcda                                          |         goto label_25;
                                                                     |     }
    0x0000bb7c adds r6, 1                                            |     r6++;
    0x0000bb7e adds r5, 8                                            |     r5 += 8;
    0x0000bb80 cmp sl, r6                                            |     
                                                                     |     if (sl != r6) {
    0x0000bb82 bne 0xbb08                                            |         goto label_3;
                                                                     |     }
    0x0000bb84 ldr.w sb, [sp]                                        |     sb = *(sp);
                                                                     | label_22:
    0x0000bb88 ldr r3, [sp, 8]                                       |     r3 = var_8h_2;
    0x0000bb8a add.w r0, sb, sl                                      |     r0 = sb + sl;
    0x0000bb8e rsb.w r0, r0, 1                                       |     r0 = 1 - r0;
    0x0000bb92 add r0, r3                                            |     r0 += r3;
    0x0000bb94 lsls r0, r0, 2                                        |     r0 <<= 2;
    0x0000bb96 blx 0x59e4                                            |     r0 = net_device_ipv4_config_array_free ();
    0x0000bb9a mov r3, r0                                            |     r3 = r0;
    0x0000bb9c ldr r0, [sp, 0x10]                                    |     r0 = var_10h;
    0x0000bb9e ldr r4, [r0]                                          |     r4 = *(r0);
    0x0000bba0 cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x0000bba2 beq.w 0xbcec                                          |         goto label_26;
                                                                     |     }
    0x0000bba6 mov r1, r0                                            |     r1 = r0;
    0x0000bba8 movs r5, 4                                            |     r5 = 4;
    0x0000bbaa mov r0, r4                                            |     r0 = r4;
    0x0000bbac mov r6, r3                                            |     r6 = r3;
    0x0000bbae ldr r4, [sp, 4]                                       |     r4 = var_4h_2;
    0x0000bbb0 b 0xbbc0                                              |     
                                                                     |     while (r2 != 0) {
    0x0000bbb2 str.w r0, [r6, r4, lsl 2]                             |         __asm ("str.w r0, [r6, r4, lsl 2]");
    0x0000bbb6 adds r4, 1                                            |         r4++;
                                                                     | label_4:
    0x0000bbb8 ldr r0, [r1, r5]                                      |         r0 = *((r1 + r5));
    0x0000bbba adds r5, 4                                            |         r5 += 4;
    0x0000bbbc cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000bbbe beq 0xbc9e                                            |             goto label_27;
                                                                     |         }
    0x0000bbc0 ldrb r2, [r0]                                         |         r2 = *(r0);
    0x0000bbc2 cmp r2, 0                                             |         
    0x0000bbc4 bne 0xbbb2                                            |         
                                                                     |     }
    0x0000bbc6 blx 0x56a4                                            |     fcn_000056a4 ();
    0x0000bbca ldr r1, [sp, 0x10]                                    |     r1 = var_10h;
    0x0000bbcc b 0xbbb8                                              |     goto label_4;
                                                                     | label_16:
    0x0000bbce mov r2, r4                                            |     r2 = r4;
    0x0000bbd0 movs r1, 0xf                                          |     r1 = 0xf;
    0x0000bbd2 mov r0, r8                                            |     r0 = r8;
    0x0000bbd4 str r4, [sp]                                          |     *(sp) = r4;
    0x0000bbd6 blx 0x527c                                            |     soap_fault_generic ();
    0x0000bbda ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000bbdc movs r5, 0xc                                          |     r5 = 0xc;
                                                                     | label_8:
    0x0000bbde str r3, [sp]                                          |     *(sp) = r3;
    0x0000bbe0 blx 0x5860                                            |     fcn_00005860 ();
    0x0000bbe4 ldr r0, [sp, 0x10]                                    |     r0 = var_10h;
    0x0000bbe6 blx 0x55e0                                            |     fcn_000055e0 ();
    0x0000bbea ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000bbec mov r0, r3                                            |     r0 = r3;
    0x0000bbee blx 0x55e0                                            |     fcn_000055e0 ();
                                                                     |     do {
                                                                     | label_6:
    0x0000bbf2 ldr r2, [pc, 0x128]                                   |         
    0x0000bbf4 ldr r3, [pc, 0x114]                                   |         r3 = *(0xbd0c);
    0x0000bbf6 add r2, pc                                            |         r2 = 0x17918;
    0x0000bbf8 ldr r3, [r2, r3]                                      |         r3 = *(0x17918);
    0x0000bbfa ldr r2, [r3]                                          |         r2 = *(0x17918);
    0x0000bbfc ldr r3, [sp, 0x14]                                    |         r3 = var_14h;
    0x0000bbfe eors r2, r3                                           |         r2 ^= r3;
    0x0000bc00 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000bc04 bne 0xbd04                                            |             goto label_28;
                                                                     |         }
    0x0000bc06 mov r0, r5                                            |         r0 = r5;
    0x0000bc08 add sp, 0x1c                                          |         
    0x0000bc0a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_14:
    0x0000bc0e movs r2, 0                                            |         r2 = 0;
    0x0000bc10 movs r1, 7                                            |         r1 = 7;
    0x0000bc12 mov r0, r8                                            |         r0 = r8;
    0x0000bc14 movs r5, 0xc                                          |         r5 = 0xc;
    0x0000bc16 blx 0x527c                                            |         soap_fault_generic ();
    0x0000bc1a b 0xbbf2                                              |         
                                                                     |     } while (1);
                                                                     | label_20:
    0x0000bc1c ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0000bc1e ldr.w r2, [r2, sl]                                    |     r2 = *((r2 + sl));
    0x0000bc22 strb r0, [r2]                                         |     *(r2) = r0;
    0x0000bc24 b 0xbad4                                              |     goto label_5;
                                                                     | label_13:
    0x0000bc26 movs r2, 0                                            |     r2 = 0;
    0x0000bc28 movs r1, 3                                            |     r1 = 3;
    0x0000bc2a mov r0, r8                                            |     r0 = r8;
    0x0000bc2c movs r5, 0xc                                          |     r5 = 0xc;
    0x0000bc2e blx 0x527c                                            |     soap_fault_generic ();
    0x0000bc32 b 0xbbf2                                              |     goto label_6;
                                                                     | label_12:
    0x0000bc34 mov r2, r0                                            |     r2 = r0;
    0x0000bc36 movs r1, 0xd                                          |     r1 = 0xd;
    0x0000bc38 mov r0, r8                                            |     r0 = r8;
    0x0000bc3a movs r5, 0xc                                          |     r5 = 0xc;
    0x0000bc3c blx 0x527c                                            |     soap_fault_generic ();
    0x0000bc40 b 0xbbf2                                              |     goto label_6;
                                                                     | label_15:
    0x0000bc42 mov r2, r5                                            |     r2 = r5;
    0x0000bc44 movs r1, 0xf                                          |     r1 = 0xf;
    0x0000bc46 mov r0, r8                                            |     r0 = r8;
    0x0000bc48 movs r5, 0xc                                          |     r5 = 0xc;
    0x0000bc4a blx 0x527c                                            |     soap_fault_generic ();
    0x0000bc4e b 0xbbf2                                              |     goto label_6;
                                                                     | label_24:
    0x0000bc50 ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0000bc52 ldr.w r2, [r2, sb]                                    |     r2 = *((r2 + sb));
    0x0000bc56 strb r0, [r2]                                         |     *(r2) = r0;
    0x0000bc58 b 0xbb6a                                              |     goto label_7;
                                                                     | label_17:
    0x0000bc5a ldr r2, [sp, 8]                                       |     r2 = var_8h_2;
    0x0000bc5c cmp.w sb, 0                                           |     
    0x0000bc60 ite gt                                                |     
                                                                     |     if (sb <= 0) {
    0x0000bc62 movgt r1, 0x17                                        |         r1 = 0x17;
                                                                     |     }
                                                                     |     if (sb > 0) {
    0x0000bc64 movle r1, 0x19                                        |         r1 = 0x19;
                                                                     |     }
    0x0000bc66 mov r0, r8                                            |     r0 = r8;
    0x0000bc68 movs r5, 0xc                                          |     r5 = 0xc;
    0x0000bc6a str r2, [sp]                                          |     *(sp) = r2;
    0x0000bc6c blx 0x5258                                            |     soap_fault_device_management ();
    0x0000bc70 ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000bc72 b 0xbbde                                              |     goto label_8;
                                                                     | label_19:
    0x0000bc74 movs r2, 0                                            |     r2 = 0;
    0x0000bc76 movs r1, 0x16                                         |     r1 = 0x16;
                                                                     | label_9:
    0x0000bc78 mov r0, r8                                            |     r0 = r8;
    0x0000bc7a str r2, [sp]                                          |     *(sp) = r2;
    0x0000bc7c blx 0x5258                                            |     soap_fault_device_management ();
    0x0000bc80 mov r0, r4                                            |     r0 = r4;
    0x0000bc82 movs r5, 0xc                                          |     r5 = 0xc;
    0x0000bc84 blx 0x56a4                                            |     fcn_000056a4 ();
    0x0000bc88 ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000bc8a b 0xbbde                                              |     goto label_8;
                                                                     | label_21:
    0x0000bc8c mov r2, r3                                            |     r2 = r3;
    0x0000bc8e movs r1, 0x17                                         |     r1 = 0x17;
    0x0000bc90 mov r0, r8                                            |     r0 = r8;
    0x0000bc92 str r3, [sp]                                          |     *(sp) = r3;
    0x0000bc94 movs r5, 0xc                                          |     r5 = 0xc;
    0x0000bc96 blx 0x5258                                            |     soap_fault_device_management ();
    0x0000bc9a ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000bc9c b 0xbbde                                              |     goto label_8;
                                                                     | label_27:
    0x0000bc9e str r4, [sp, 4]                                       |     var_4h_2 = r4;
    0x0000bca0 mov r4, r0                                            |     r4 = r0;
    0x0000bca2 mov r0, r1                                            |     r0 = r1;
    0x0000bca4 str r6, [sp]                                          |     *(sp) = r6;
    0x0000bca6 blx 0x56a4                                            |     fcn_000056a4 ();
    0x0000bcaa ldrd r3, r2, [sp]                                     |     __asm ("ldrd r3, r2, [sp]");
    0x0000bcae str r4, [sp, 0x10]                                    |     var_10h = r4;
                                                                     |     if (r2 == 0) {
    0x0000bcb0 cbz r2, 0xbcf6                                        |         goto label_29;
                                                                     |     }
                                                                     | label_10:
    0x0000bcb2 mov r1, r3                                            |     r1 = r3;
    0x0000bcb4 movs r0, 2                                            |     r0 = 2;
    0x0000bcb6 str r3, [sp]                                          |     *(sp) = r3;
    0x0000bcb8 blx 0x533c                                            |     net_ipfilter_set_input_config ();
    0x0000bcbc ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000bcbe mov r5, r0                                            |     r5 = r0;
    0x0000bcc0 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000bcc2 beq 0xbbde                                            |         goto label_8;
                                                                     |     }
                                                                     | label_11:
    0x0000bcc4 movs r2, 0                                            |     r2 = 0;
    0x0000bcc6 movs r1, 0xf                                          |     r1 = 0xf;
    0x0000bcc8 mov r0, r8                                            |     r0 = r8;
    0x0000bcca movs r5, 0xc                                          |     r5 = 0xc;
    0x0000bccc blx 0x527c                                            |     soap_fault_generic ();
    0x0000bcd0 ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000bcd2 b 0xbbde                                              |     goto label_8;
                                                                     | label_23:
    0x0000bcd4 movs r2, 0                                            |     r2 = 0;
    0x0000bcd6 movs r1, 0x18                                         |     r1 = 0x18;
    0x0000bcd8 b 0xbc78                                              |     goto label_9;
                                                                     | label_25:
    0x0000bcda mov r2, r3                                            |     r2 = r3;
    0x0000bcdc movs r1, 0x19                                         |     r1 = 0x19;
    0x0000bcde mov r0, r8                                            |     r0 = r8;
    0x0000bce0 str r3, [sp]                                          |     *(sp) = r3;
    0x0000bce2 movs r5, 0xc                                          |     r5 = 0xc;
    0x0000bce4 blx 0x5258                                            |     soap_fault_device_management ();
    0x0000bce8 ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000bcea b 0xbbde                                              |     goto label_8;
                                                                     | label_26:
    0x0000bcec str r3, [sp]                                          |     *(sp) = r3;
    0x0000bcee blx 0x56a4                                            |     fcn_000056a4 ();
    0x0000bcf2 ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000bcf4 str r4, [sp, 0x10]                                    |     var_10h = r4;
                                                                     | label_29:
    0x0000bcf6 str r3, [sp]                                          |     *(sp) = r3;
    0x0000bcf8 blx 0x5420                                            |     net_ipfilter_disable ();
    0x0000bcfc ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000bcfe cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000bd00 beq 0xbcb2                                            |         goto label_10;
                                                                     |     }
    0x0000bd02 b 0xbcc4                                              |     goto label_11;
                                                                     | label_28:
    0x0000bd04 blx 0x561c                                            |     fcn_0000561c ();
    0x0000bd08 strb r2, [r7, 5]                                      |     *((r7 + 5)) = r2;
    0x0000bd0a movs r1, r0                                           |     r1 = r0;
    0x0000bd0c lsls r0, r3, 0x12                                     |     r0 = r3 << 0x12;
    0x0000bd0e movs r0, r0                                           |     
    0x0000bd10 ldr r2, [r0, r5]                                      |     r2 = *((r0 + r5));
    0x0000bd12 movs r0, r0                                           |     
    0x0000bd14 ldr r2, [pc, 0x40]                                    |     r2 = *(0xbd58);
    0x0000bd16 movs r0, r0                                           |     
    0x0000bd18 ldr r1, [pc, 0x1d8]                                   |     r1 = *(0xbef4);
    0x0000bd1a movs r0, r0                                           |     
    0x0000bd1c ldr r6, [r7, 0x70]                                    |     r6 = *((r7 + 0x70));
    0x0000bd1e movs r1, r0                                           |     r1 = r0;
                                                                     | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libimpl_wsd_tds.so @ 0xdbc4 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.__tds__SetDynamicDNS ()                              | void tds_SetDynamicDNS (int16_t arg1, int16_t arg2) {
                                                                     |     int16_t var_4h;
                                                                     |     char * * endptr;
                                                                     |     int16_t var_ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0000dbc4 blmi 0xfe3a0600                                       |     __asm ("blmi 0xfe3a0600");
    0x0000dbc8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000dbcc mov r4, r1                                            |     r4 = r1;
    0x0000dbce add r2, pc                                            |     r2 += pc;
    0x0000dbd0 ldr r1, [pc, 0x230]                                   |     
    0x0000dbd2 sub sp, 0x14                                          |     
    0x0000dbd4 mov r8, r0                                            |     r8 = r0;
    0x0000dbd6 ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000dbd8 add r1, pc                                            |     r1 = 0x1b9e0;
    0x0000dbda ldr r3, [r3]                                          |     r3 = *(r3);
    0x0000dbdc str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x0000dbde mov.w r3, 0                                           |     r3 = 0;
    0x0000dbe2 blx 0x5414                                            |     r0 = wssecurity_uh_allowed_access ();
    0x0000dbe6 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000dbe8 beq.w 0xddc6                                          |         goto label_10;
                                                                     |     }
    0x0000dbec cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x0000dbee beq.w 0xddd4                                          |         goto label_11;
                                                                     |     }
    0x0000dbf2 ldr r3, [r4]                                          |     r3 = *(r4);
    0x0000dbf4 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000dbf6 beq 0xdc86                                            |         goto label_12;
                                                                     |     }
    0x0000dbf8 ldr r1, [pc, 0x20c]                                   |     
    0x0000dbfa ldr r0, [pc, 0x210]                                   |     
    0x0000dbfc add r1, pc                                            |     r1 = 0x1ba08;
    0x0000dbfe add r0, pc                                            |     r0 = 0x1ba10;
    0x0000dc00 blx 0x5234                                            |     r0 = wsd_util_set_parameter ();
    0x0000dc04 mov r5, r0                                            |     r5 = r0;
                                                                     | label_2:
    0x0000dc06 ldr.w sl, [r4, 4]                                     |     sl = *((r4 + 4));
    0x0000dc0a cmp r5, 0                                             |     
    0x0000dc0c itete eq                                              |     
                                                                     |     if (r5 != 0) {
    0x0000dc0e moveq sb, r5                                          |         sb = r5;
                                                                     |     }
                                                                     |     if (r5 == 0) {
    0x0000dc10 movne sb, 1                                           |         sb = 1;
                                                                     |     }
                                                                     |     if (r5 == 0) {
    0x0000dc14 movne r7, r5                                          |         r7 = r5;
                                                                     |     }
                                                                     |     if (r5 != 0) {
    0x0000dc16 movs r7, 2                                            |         r7 = 2;
                                                                     |     }
    0x0000dc18 cmp.w sl, 0                                           |     
                                                                     |     if (sl == 0) {
    0x0000dc1c beq 0xdcd8                                            |         goto label_13;
                                                                     |     }
    0x0000dc1e mov r0, sl                                            |     r0 = sl;
    0x0000dc20 blx 0x58f0                                            |     r0 = fcn_000058f0 ();
    0x0000dc24 cmp r0, 0xff                                          |     
    0x0000dc26 mov fp, r0                                            |     
                                                                     |     if (r0 > 0xff) {
    0x0000dc28 bhi 0xdcca                                            |         goto label_6;
                                                                     |     }
    0x0000dc2a add.w r3, sl, r0                                      |     r3 = sl + r0;
    0x0000dc2e ldrb r3, [r3, -0x1]                                   |     r3 = *((r3 - 0x1));
    0x0000dc32 cmp r3, 0x2d                                          |     
                                                                     |     if (r3 == 0x2d) {
    0x0000dc34 beq 0xdcca                                            |         goto label_6;
                                                                     |     }
    0x0000dc36 ldrb.w r6, [sl]                                       |     r6 = *(sl);
    0x0000dc3a sub.w r2, r6, 0x2d                                    |     r2 = r6 - 0x2d;
    0x0000dc3e cmp r3, 0x2e                                          |     
    0x0000dc40 it ne                                                 |     
                                                                     |     if (r3 != 0x2e) {
    0x0000dc42 cmpne r2, 1                                           |         __asm ("cmpne r2, 1");
                                                                     |     }
                                                                     |     if (r3 < 0x2e) {
    0x0000dc44 bls 0xdcca                                            |         goto label_6;
                                                                     |     }
                                                                     |     if (r0 == 0) {
    0x0000dc46 cbz r0, 0xdc96                                        |         goto label_14;
                                                                     |     }
    0x0000dc48 blx 0x5794                                            |     fcn_00005794 ();
    0x0000dc4c add.w r3, sl, -1                                      |     r3 = sl + -1;
    0x0000dc50 ldr r1, [r0]                                          |     r1 = *(r0);
    0x0000dc52 add.w r0, r3, fp                                      |     r0 = r3 + fp;
    0x0000dc56 mov r3, sl                                            |     r3 = sl;
    0x0000dc58 b 0xdc72                                              |     
                                                                     |     while (r2 >= r2) {
    0x0000dc5a cmp r6, 0x2d                                          |         
                                                                     |         if (r6 == 0x2d) {
    0x0000dc5c beq.w 0xdd9e                                          |             goto label_15;
                                                                     |         }
    0x0000dc60 cmp r6, 0x2e                                          |         
                                                                     |         if (r6 != 0x2e) {
    0x0000dc62 bne 0xdcca                                            |             goto label_6;
                                                                     |         }
                                                                     | label_1:
    0x0000dc64 ldrb r2, [r3, 1]                                      |         r2 = *((r3 + 1));
    0x0000dc66 cmp r2, 0x2d                                          |         
                                                                     |         if (r2 == 0x2d) {
    0x0000dc68 beq 0xdcca                                            |             goto label_6;
                                                                     |         }
                                                                     | label_0:
    0x0000dc6a cmp r0, r3                                            |         
                                                                     |         if (r0 == r3) {
    0x0000dc6c beq 0xdc96                                            |             goto label_14;
                                                                     |         }
    0x0000dc6e ldrb r6, [r3, 1]!                                     |         r6 = *((r3 += 1));
    0x0000dc72 ldrh.w r2, [r1, r6, lsl 1]                            |         offset_0 = r6 << 1;
                                                                     |         r2 = *((r1 + offset_0));
    0x0000dc76 lsls r2, r2, 0x1c                                     |         r2 <<= 0x1c;
    0x0000dc78 bpl 0xdc5a                                            |         
                                                                     |     }
    0x0000dc7a cmp r6, 0x2d                                          |     
                                                                     |     if (r6 == 0x2d) {
    0x0000dc7c beq.w 0xdd9e                                          |         goto label_15;
                                                                     |     }
    0x0000dc80 cmp r6, 0x2e                                          |     
                                                                     |     if (r6 != 0x2e) {
    0x0000dc82 bne 0xdc6a                                            |         goto label_0;
                                                                     |     }
    0x0000dc84 b 0xdc64                                              |     goto label_1;
                                                                     | label_12:
    0x0000dc86 ldr r1, [pc, 0x188]                                   |     
    0x0000dc88 ldr r0, [pc, 0x188]                                   |     
    0x0000dc8a add r1, pc                                            |     r1 = 0x1baa0;
    0x0000dc8c add r0, pc                                            |     r0 = 0x1baa4;
    0x0000dc8e blx 0x5234                                            |     r0 = wsd_util_set_parameter ();
    0x0000dc92 mov r5, r0                                            |     r5 = r0;
    0x0000dc94 b 0xdc06                                              |     goto label_2;
                                                                     | label_14:
    0x0000dc96 ldr r1, [pc, 0x180]                                   |     
    0x0000dc98 mov r0, sl                                            |     r0 = sl;
    0x0000dc9a movs r2, 0                                            |     r2 = 0;
    0x0000dc9c add r1, pc                                            |     r1 = 0x1baba;
    0x0000dc9e blx 0x53fc                                            |     r0 = g_strsplit ();
    0x0000dca2 mov r6, r0                                            |     r6 = r0;
    0x0000dca4 ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000dca6 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000dca8 beq.w 0xdde2                                          |         goto label_16;
                                                                     |     }
    0x0000dcac mov sl, r6                                            |     sl = r6;
    0x0000dcae b 0xdcba                                              |     
                                                                     |     while (r0 < 0x3e) {
    0x0000dcb0 ldr r0, [sl, 4]!                                      |         r0 = *((sl += 4));
    0x0000dcb4 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000dcb6 beq.w 0xdde2                                          |             goto label_16;
                                                                     |         }
    0x0000dcba blx 0x58f0                                            |         fcn_000058f0 ();
    0x0000dcbe subs r0, 1                                            |         r0--;
    0x0000dcc0 cmp r0, 0x3e                                          |         
    0x0000dcc2 bls 0xdcb0                                            |         
                                                                     |     }
    0x0000dcc4 mov r0, r6                                            |     r0 = r6;
    0x0000dcc6 blx 0x55e0                                            |     fcn_000055e0 ();
                                                                     | label_6:
    0x0000dcca add.w sb, sb, 1                                       |     sb++;
    0x0000dcce movs r7, 2                                            |     r7 = 2;
                                                                     |     if (r5 != 0) {
                                                                     | label_9:
    0x0000dcd0 cbz r5, 0xdcd8                                        |         
    0x0000dcd2 add.w sb, sb, 1                                       |         sb++;
    0x0000dcd6 movs r7, 2                                            |         r7 = 2;
                                                                     |     }
                                                                     | label_13:
    0x0000dcd8 ldr r6, [r4]                                          |     r6 = *(r4);
    0x0000dcda cmp r6, 2                                             |     
                                                                     |     if (r6 == 2) {
    0x0000dcdc beq 0xdda8                                            |         goto label_17;
                                                                     |     }
                                                                     | label_7:
    0x0000dcde ldr r5, [r4, 8]                                       |     r5 = *((r4 + 8));
    0x0000dce0 cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000dce2 beq 0xdd82                                            |         goto label_18;
                                                                     |     }
                                                                     | label_8:
    0x0000dce4 mov.w sl, 0                                           |     sl = 0;
    0x0000dce8 str.w sl, [sp, 4]                                     |     __asm ("str.w sl, [var_4h]");
    0x0000dcec blx 0x5a80                                            |     strncpy (r0, r1, r2);
    0x0000dcf0 add r1, sp, 8                                         |     r1 += endptr;
    0x0000dcf2 mov r6, r0                                            |     r6 = r0;
    0x0000dcf4 str.w sl, [r0]                                        |     __asm ("str.w sl, [r0]");
    0x0000dcf8 mov r0, r5                                            |     r0 = r5;
    0x0000dcfa blx 0x5558                                            |     strtod (r0, r1);
    0x0000dcfe ldr r3, [r6]                                          |     r3 = *(r6);
                                                                     |     if (r3 != 0) {
    0x0000dd00 cbnz r3, 0xdd4e                                       |         goto label_19;
                                                                     |     }
    0x0000dd02 ldr r2, [sp, 8]                                       |     r2 = endptr;
    0x0000dd04 ldr r3, [r4, 8]                                       |     r3 = *((r4 + 8));
    0x0000dd06 ldrb r1, [r2]                                         |     r1 = *(r2);
                                                                     |     if (r1 != 0) {
    0x0000dd08 cbnz r1, 0xdd50                                       |         goto label_20;
                                                                     |     }
    0x0000dd0a cmp r2, r5                                            |     
                                                                     |     if (r2 == r5) {
    0x0000dd0c beq 0xdd50                                            |         goto label_20;
                                                                     |     }
    0x0000dd0e vcmpe.f64 d0, 0                                       |     __asm ("vcmpe.f64 d0, 0");
    0x0000dd12 vmrs apsr_nzcv, fpscr                                 |     __asm ("vmrs apsr_nzcv, fpscr");
                                                                     |     if (r2 < r5) {
    0x0000dd16 bmi 0xdd50                                            |         goto label_20;
                                                                     |     }
    0x0000dd18 ldr r0, [pc, 0x100]                                   |     
    0x0000dd1a mov r1, r3                                            |     r1 = r3;
    0x0000dd1c add r0, pc                                            |     r0 = 0x1bb3c;
    0x0000dd1e blx 0x5234                                            |     r0 = wsd_util_set_parameter ();
                                                                     |     if (r0 == 0) {
    0x0000dd22 cbz r0, 0xdd82                                        |         goto label_18;
                                                                     |     }
                                                                     |     do {
                                                                     | label_3:
    0x0000dd24 blx 0x51e0                                            |         wsd_util_sync_parameters ();
                                                                     | label_5:
    0x0000dd28 mov r0, r8                                            |         r0 = r8;
    0x0000dd2a movs r2, 0                                            |         r2 = 0;
    0x0000dd2c movs r1, 0xa                                          |         r1 = 0xa;
    0x0000dd2e blx 0x527c                                            |         soap_fault_generic ();
    0x0000dd32 movs r0, 0xc                                          |         r0 = 0xc;
                                                                     | label_4:
    0x0000dd34 ldr r2, [pc, 0xe8]                                    |         
    0x0000dd36 ldr r3, [pc, 0xc8]                                    |         r3 = *(0xde02);
    0x0000dd38 add r2, pc                                            |         r2 = 0x1bb5c;
    0x0000dd3a ldr r3, [r2, r3]                                      |         r3 = *(0x1bb5c);
    0x0000dd3c ldr r2, [r3]                                          |         r2 = *(0x1bb5c);
    0x0000dd3e ldr r3, [sp, 0xc]                                     |         r3 = var_ch;
    0x0000dd40 eors r2, r3                                           |         r2 ^= r3;
    0x0000dd42 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000dd46 bne 0xddf6                                            |             goto label_21;
                                                                     |         }
    0x0000dd48 add sp, 0x14                                          |         
    0x0000dd4a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_19:
    0x0000dd4e ldr r3, [r4, 8]                                       |         r3 = *((r4 + 8));
                                                                     | label_20:
    0x0000dd50 add r1, sp, 4                                         |         r1 += var_4h;
    0x0000dd52 mov r0, r3                                            |         r0 = r3;
    0x0000dd54 blx 0x5588                                            |         r0 = wsd_parse_xsd_duration ();
    0x0000dd58 cmp r0, 0                                             |         
    0x0000dd5a bne 0xdd24                                            |         
                                                                     |     } while (r0 != 0);
    0x0000dd5c ldr r1, [sp, 4]                                       |     r1 = var_4h;
    0x0000dd5e cmp r1, 0                                             |     
                                                                     |     if (r1 < 0) {
    0x0000dd60 blt 0xdd24                                            |         goto label_3;
                                                                     |     }
    0x0000dd62 ldr r0, [pc, 0xc0]                                    |     
    0x0000dd64 add r0, pc                                            |     r0 = 0x1bb8e;
    0x0000dd66 blx 0x5330                                            |     r0 = g_strdup_printf ()
    0x0000dd6a mov r4, r0                                            |     r4 = r0;
    0x0000dd6c mov r1, r0                                            |     r1 = r0;
    0x0000dd6e ldr r0, [pc, 0xb8]                                    |     
    0x0000dd70 add r0, pc                                            |     r0 = 0x1bb9e;
    0x0000dd72 blx 0x5234                                            |     r0 = wsd_util_set_parameter ();
    0x0000dd76 mov r5, r0                                            |     r5 = r0;
    0x0000dd78 mov r0, r4                                            |     r0 = r4;
    0x0000dd7a blx 0x56a4                                            |     fcn_000056a4 ();
    0x0000dd7e cmp r5, 0                                             |     
                                                                     |     if (r5 != 0) {
    0x0000dd80 bne 0xdd24                                            |         goto label_3;
                                                                     |     }
                                                                     | label_18:
    0x0000dd82 blx 0x51e0                                            |     wsd_util_sync_parameters ();
    0x0000dd86 orrs r0, r7                                           |     r0 |= r7;
                                                                     |     if (r0 == r7) {
    0x0000dd88 beq 0xdd34                                            |         goto label_4;
                                                                     |     }
    0x0000dd8a cmp.w sb, 0                                           |     
                                                                     |     if (sb != 0) {
    0x0000dd8e bne 0xdd28                                            |         goto label_5;
                                                                     |     }
    0x0000dd90 mov r0, r8                                            |     r0 = r8;
    0x0000dd92 mov r2, sb                                            |     r2 = sb;
    0x0000dd94 movs r1, 0xf                                          |     r1 = 0xf;
    0x0000dd96 blx 0x527c                                            |     soap_fault_generic ();
    0x0000dd9a movs r0, 0xc                                          |     r0 = 0xc;
    0x0000dd9c b 0xdd34                                              |     goto label_4;
                                                                     | label_15:
    0x0000dd9e ldrb r2, [r3, 1]                                      |     r2 = *((r3 + 1));
    0x0000dda0 cmp r2, 0x2e                                          |     
                                                                     |     if (r2 != 0x2e) {
    0x0000dda2 bne.w 0xdc6a                                          |         goto label_0;
                                                                     |     }
    0x0000dda6 b 0xdcca                                              |     goto label_6;
                                                                     | label_17:
    0x0000dda8 ldr r1, [pc, 0x80]                                    |     
    0x0000ddaa ldr r0, [pc, 0x84]                                    |     
    0x0000ddac add r1, pc                                            |     r1 = 0x1bbdc;
    0x0000ddae add r0, pc                                            |     r0 = 0x1bbe4;
    0x0000ddb0 blx 0x5234                                            |     r0 = wsd_util_set_parameter ();
    0x0000ddb4 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000ddb6 beq 0xdcde                                            |         goto label_7;
                                                                     |     }
    0x0000ddb8 ldr r5, [r4, 8]                                       |     r5 = *((r4 + 8));
    0x0000ddba add.w sb, sb, 1                                       |     sb++;
    0x0000ddbe mov r7, r6                                            |     r7 = r6;
    0x0000ddc0 cmp r5, 0                                             |     
                                                                     |     if (r5 != 0) {
    0x0000ddc2 bne 0xdce4                                            |         goto label_8;
                                                                     |     }
    0x0000ddc4 b 0xdd24                                              |     goto label_3;
                                                                     | label_10:
    0x0000ddc6 mov r2, r0                                            |     r2 = r0;
    0x0000ddc8 movs r1, 0xd                                          |     r1 = 0xd;
    0x0000ddca mov r0, r8                                            |     r0 = r8;
    0x0000ddcc blx 0x527c                                            |     soap_fault_generic ();
    0x0000ddd0 movs r0, 0xc                                          |     r0 = 0xc;
    0x0000ddd2 b 0xdd34                                              |     goto label_4;
                                                                     | label_11:
    0x0000ddd4 mov r0, r8                                            |     r0 = r8;
    0x0000ddd6 mov r2, r4                                            |     r2 = r4;
    0x0000ddd8 movs r1, 3                                            |     r1 = 3;
    0x0000ddda blx 0x527c                                            |     soap_fault_generic ();
    0x0000ddde movs r0, 0xc                                          |     r0 = 0xc;
    0x0000dde0 b 0xdd34                                              |     goto label_4;
                                                                     | label_16:
    0x0000dde2 mov r0, r6                                            |     r0 = r6;
    0x0000dde4 blx 0x55e0                                            |     fcn_000055e0 ();
    0x0000dde8 ldr r0, [pc, 0x48]                                    |     
    0x0000ddea ldr r1, [r4, 4]                                       |     r1 = *((r4 + 4));
    0x0000ddec add r0, pc                                            |     r0 = 0x1bc24;
    0x0000ddee blx 0x5234                                            |     r0 = wsd_util_set_parameter ();
    0x0000ddf2 mov r5, r0                                            |     r5 = r0;
    0x0000ddf4 b 0xdcd0                                              |     goto label_9;
                                                                     | label_21:
    0x0000ddf6 blx 0x561c                                            |     fcn_0000561c ();
    0x0000ddfa nop                                                   |     
    0x0000ddfc ldr r7, [pc, 0x198]                                   |     r7 = *(0xdf98);
    0x0000ddfe movs r1, r0                                           |     r1 = r0;
    0x0000de00 lsls r0, r3, 0x12                                     |     r0 = r3 << 0x12;
    0x0000de02 movs r0, r0                                           |     
    0x0000de04 subs r4, 0xac                                         |     r4 -= 0xac;
    0x0000de06 movs r0, r0                                           |     
    0x0000de08 cmp r4, 0x18                                          |     
    0x0000de0a movs r0, r0                                           |     
    0x0000de0c cmp r7, 0x32                                          |     
    0x0000de0e movs r0, r0                                           |     
    0x0000de10 cmp r3, 0x86                                          |     
    0x0000de12 movs r0, r0                                           |     
    0x0000de14 cmp r6, 0xa4                                          |     
    0x0000de16 movs r0, r0                                           |     
    0x0000de18 subs r3, 0xfc                                         |     r3 -= 0xfc;
    0x0000de1a movs r0, r0                                           |     
    0x0000de1c cmp r6, 0x54                                          |     
    0x0000de1e movs r0, r0                                           |     
    0x0000de20 ldr r5, [pc, 0x3f0]                                   |     r5 = *(0xe214);
    0x0000de22 movs r1, r0                                           |     r1 = r0;
    0x0000de24 adds r0, 0xbc                                         |     r0 += 0xbc;
    0x0000de26 movs r0, r0                                           |     
    0x0000de28 cmp r6, 0                                             |     
    0x0000de2a movs r0, r0                                           |     
    0x0000de2c movs r7, 0x4c                                         |     r7 = 0x4c;
    0x0000de2e movs r0, r0                                           |     
    0x0000de30 cmp r5, 0xa2                                          |     
    0x0000de32 movs r0, r0                                           |     
    0x0000de34 cmp r5, 0x64                                          |     
    0x0000de36 movs r0, r0                                           |     
                                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libimpl_wsd_tds.so @ 0xdee4 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.__tds__SetIPAddressFilter ()                     | void tds_SetIPAddressFilter (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0000dee4 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x0000dee8 mov r4, r1                                        |     r4 = r1;
    0x0000deea ldr r1, [pc, 0x214]                               |     
    0x0000deec sub sp, 0x14                                      |     
    0x0000deee str r0, [sp]                                      |     *(sp) = r0;
    0x0000def0 add r1, pc                                        |     r1 = 0x1bff6;
    0x0000def2 blx 0x5414                                        |     r0 = wssecurity_uh_allowed_access ();
    0x0000def6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000def8 beq.w 0xe076                                      |         goto label_9;
                                                                 |     }
    0x0000defc cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x0000defe beq.w 0xe062                                      |         goto label_10;
                                                                 |     }
    0x0000df02 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0000df04 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000df06 beq.w 0xe062                                      |         goto label_10;
                                                                 |     }
    0x0000df0a ldr r2, [r3]                                      |     r2 = *(r3);
    0x0000df0c str r2, [sp, 0xc]                                 |     var_ch = r2;
                                                                 |     if (r2 != 0) {
    0x0000df0e cbz r2, 0xdf14                                    |         
    0x0000df10 cmp r2, 1                                         |         
                                                                 |         if (r2 != 1) {
    0x0000df12 bne 0xdff8                                        |             goto label_11;
                                                                 |         }
                                                                 |     }
    0x0000df14 ldr r7, [r3, 8]                                   |     r7 = *((r3 + 8));
    0x0000df16 ldr r2, [r3, 0x10]                                |     r2 = *((r3 + 0x10));
    0x0000df18 str r2, [sp, 4]                                   |     var_4h = r2;
    0x0000df1a cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x0000df1c beq.w 0xe02c                                      |         goto label_12;
                                                                 |     }
    0x0000df20 ldr.w r8, [r3, 4]                                 |     r8 = *((r3 + 4));
    0x0000df24 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0000df26 beq.w 0xe09e                                      |         goto label_13;
                                                                 |     }
                                                                 | label_2:
    0x0000df2a ldr r3, [r3, 0xc]                                 |     r3 = *((r3 + 0xc));
    0x0000df2c add.w r0, r3, r8                                  |     r0 = r3 + r8;
    0x0000df30 str r3, [sp, 8]                                   |     var_8h = r3;
                                                                 | label_4:
    0x0000df32 cmp.w r0, 0x100                                   |     
                                                                 |     if (r0 > 0x100) {
    0x0000df36 bgt.w 0xe08a                                      |         goto label_14;
                                                                 |     }
    0x0000df3a adds r0, 1                                        |     r0++;
    0x0000df3c lsls r0, r0, 2                                    |     r0 <<= 2;
    0x0000df3e blx 0x59e4                                        |     net_device_ipv4_config_array_free ();
    0x0000df42 cmp.w r8, 0                                       |     
    0x0000df46 mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r8 <= 0) {
    0x0000df48 ble.w 0xe0f2                                      |         goto label_15;
                                                                 |     }
    0x0000df4c ldr.w fp, [pc, 0x1b4]                             |     
    0x0000df50 movs r4, 0                                        |     r4 = 0;
    0x0000df52 mov r5, r4                                        |     r5 = r4;
    0x0000df54 add.w sl, r7, 4                                   |     sl = r7 + 4;
    0x0000df58 mov sb, r4                                        |     sb = r4;
    0x0000df5a add fp, pc                                        |     fp = 0x1c062;
    0x0000df5c b 0xdf6e                                          |     
                                                                 |     while (r0 == 0) {
    0x0000df5e add.w sb, sb, 1                                   |         sb++;
    0x0000df62 str.w r4, [r6, r5, lsl 2]                         |         __asm ("str.w r4, [r6, r5, lsl 2]");
    0x0000df66 cmp sb, r8                                        |         
    0x0000df68 add.w r5, r5, 1                                   |         r5++;
                                                                 |         if (sb == r8) {
    0x0000df6c beq 0xdfa2                                        |             goto label_16;
                                                                 |         }
                                                                 | label_0:
    0x0000df6e ldr.w r1, [r7, sb, lsl 3]                         |         offset_0 = sb << 3;
                                                                 |         r1 = *((r7 + offset_0));
    0x0000df72 mov r0, fp                                        |         r0 = fp;
    0x0000df74 ldr.w r2, [sl, sb, lsl 3]                         |         offset_1 = sb << 3;
                                                                 |         r2 = *((sl + offset_1));
    0x0000df78 blx 0x5330                                        |         r0 = g_strdup_printf ()
    0x0000df7c mov r4, r0                                        |         r4 = r0;
    0x0000df7e blx 0x557c                                        |         r0 = fcn_0000557c ();
    0x0000df82 mov r3, r0                                        |         r3 = r0;
    0x0000df84 mov r1, r4                                        |         r1 = r4;
    0x0000df86 cmp r3, 1                                         |         
    0x0000df88 mov r0, r6                                        |         r0 = r6;
                                                                 |         if (r3 != 1) {
    0x0000df8a bne 0xe00c                                        |             goto label_17;
                                                                 |         }
    0x0000df8c blx 0x5b94                                        |         r0 = wsd_set_relay_output_settings ();
    0x0000df90 cmp r0, 0                                         |         
    0x0000df92 beq 0xdf5e                                        |         
                                                                 |     }
    0x0000df94 mov r0, r4                                        |     r0 = r4;
    0x0000df96 add.w sb, sb, 1                                   |     sb++;
    0x0000df9a blx 0x56a4                                        |     fcn_000056a4 ();
    0x0000df9e cmp sb, r8                                        |     
                                                                 |     if (sb != r8) {
    0x0000dfa0 bne 0xdf6e                                        |         goto label_0;
                                                                 |     }
                                                                 | label_16:
    0x0000dfa2 ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x0000dfa4 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x0000dfa6 ble 0xe0a6                                        |         goto label_18;
                                                                 |     }
                                                                 | label_7:
    0x0000dfa8 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x0000dfaa mov.w sl, 0                                       |     sl = 0;
    0x0000dfae ldr.w r8, [pc, 0x158]                             |     
    0x0000dfb2 ldr.w fp, [sp, 8]                                 |     fp = var_8h;
    0x0000dfb6 adds r7, r3, 4                                    |     r7 = r3 + 4;
    0x0000dfb8 mov sb, r3                                        |     sb = r3;
    0x0000dfba add r8, pc                                        |     r8 = 0x1c0c8;
    0x0000dfbc b 0xdfcc                                          |     
                                                                 |     while (r0 == 0) {
    0x0000dfbe str.w r4, [r6, r5, lsl 2]                         |         __asm ("str.w r4, [r6, r5, lsl 2]");
    0x0000dfc2 adds r5, 1                                        |         r5++;
                                                                 | label_1:
    0x0000dfc4 add.w sl, sl, 1                                   |         sl++;
    0x0000dfc8 cmp fp, sl                                        |         
                                                                 |         if (fp <= sl) {
    0x0000dfca ble 0xe0a6                                        |             goto label_18;
                                                                 |         }
    0x0000dfcc ldr.w r1, [sb, sl, lsl 3]                         |         offset_2 = sl << 3;
                                                                 |         r1 = *((sb + offset_2));
    0x0000dfd0 mov r0, r8                                        |         r0 = r8;
    0x0000dfd2 ldr.w r2, [r7, sl, lsl 3]                         |         offset_3 = sl << 3;
                                                                 |         r2 = *((r7 + offset_3));
    0x0000dfd6 blx 0x5330                                        |         r0 = g_strdup_printf ()
    0x0000dfda mov r4, r0                                        |         r4 = r0;
    0x0000dfdc blx 0x557c                                        |         r0 = fcn_0000557c ();
    0x0000dfe0 cmp r0, 2                                         |         
    0x0000dfe2 mov r1, r4                                        |         r1 = r4;
                                                                 |         if (r0 != 2) {
    0x0000dfe4 bne 0xe0d0                                        |             goto label_19;
                                                                 |         }
    0x0000dfe6 mov r0, r6                                        |         r0 = r6;
    0x0000dfe8 blx 0x5b94                                        |         r0 = wsd_set_relay_output_settings ();
    0x0000dfec cmp r0, 0                                         |         
    0x0000dfee beq 0xdfbe                                        |         
                                                                 |     }
    0x0000dff0 mov r0, r4                                        |     r0 = r4;
    0x0000dff2 blx 0x56a4                                        |     fcn_000056a4 ();
    0x0000dff6 b 0xdfc4                                          |     goto label_1;
                                                                 | label_11:
    0x0000dff8 ldr r0, [sp]                                      |     r0 = *(sp);
    0x0000dffa movs r2, 0                                        |     r2 = 0;
    0x0000dffc movs r1, 0xa                                      |     r1 = 0xa;
    0x0000dffe movs r4, 0xc                                      |     r4 = 0xc;
    0x0000e000 blx 0x527c                                        |     soap_fault_generic ();
    0x0000e004 mov r0, r4                                        |     r0 = r4;
    0x0000e006 add sp, 0x14                                      |     
    0x0000e008 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_17:
    0x0000e00c ldr r0, [sp]                                      |     r0 = *(sp);
    0x0000e00e movs r2, 0                                        |     r2 = 0;
    0x0000e010 movs r1, 0x16                                     |     r1 = 0x16;
    0x0000e012 blx 0x5258                                        |     soap_fault_device_management ();
    0x0000e016 mov r0, r4                                        |     r0 = r4;
    0x0000e018 movs r4, 0xc                                      |     r4 = 0xc;
    0x0000e01a blx 0x56a4                                        |     fcn_000056a4 ();
                                                                 | label_3:
    0x0000e01e mov r0, r6                                        |     r0 = r6;
    0x0000e020 blx 0x55e0                                        |     fcn_000055e0 ();
    0x0000e024 mov r0, r4                                        |     r0 = r4;
    0x0000e026 add sp, 0x14                                      |     
    0x0000e028 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_12:
    0x0000e02c ldr r2, [sp, 4]                                   |     r2 = var_4h;
    0x0000e02e mov r8, r7                                        |     r8 = r7;
    0x0000e030 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x0000e032 bne.w 0xdf2a                                      |         goto label_2;
                                                                 |     }
    0x0000e036 movs r0, 4                                        |     r0 = 4;
    0x0000e038 blx 0x59e4                                        |     r0 = net_device_ipv4_config_array_free ();
    0x0000e03c mov r6, r0                                        |     r6 = r0;
                                                                 | label_8:
    0x0000e03e blx 0x5090                                        |     r0 = net_init ();
    0x0000e042 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000e044 bne 0xe0e4                                        |         goto label_20;
                                                                 |     }
                                                                 |     do {
    0x0000e046 blx 0x5420                                        |         r0 = net_ipfilter_disable ();
    0x0000e04a cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0000e04c bne 0xe0c2                                        |             goto label_21;
                                                                 |         }
    0x0000e04e ldr r0, [sp, 0xc]                                 |         r0 = var_ch;
    0x0000e050 mov r1, r6                                        |         r1 = r6;
    0x0000e052 blx 0x533c                                        |         r0 = net_ipfilter_set_input_config ();
    0x0000e056 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0000e058 bne 0xe0c2                                        |             goto label_21;
                                                                 |         }
                                                                 | label_5:
    0x0000e05a movs r4, 0                                        |         r4 = 0;
                                                                 | label_6:
    0x0000e05c blx 0x5860                                        |         fcn_00005860 ();
    0x0000e060 b 0xe01e                                          |         goto label_3;
                                                                 | label_10:
    0x0000e062 ldr r0, [sp]                                      |         r0 = *(sp);
    0x0000e064 movs r2, 0                                        |         r2 = 0;
    0x0000e066 movs r1, 3                                        |         r1 = 3;
    0x0000e068 movs r4, 0xc                                      |         r4 = 0xc;
    0x0000e06a blx 0x527c                                        |         soap_fault_generic ();
    0x0000e06e mov r0, r4                                        |         r0 = r4;
    0x0000e070 add sp, 0x14                                      |         
    0x0000e072 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_9:
    0x0000e076 mov r2, r0                                        |         r2 = r0;
    0x0000e078 movs r1, 0xd                                      |         r1 = 0xd;
    0x0000e07a ldr r0, [sp]                                      |         r0 = *(sp);
    0x0000e07c movs r4, 0xc                                      |         r4 = 0xc;
    0x0000e07e blx 0x527c                                        |         soap_fault_generic ();
    0x0000e082 mov r0, r4                                        |         r0 = r4;
    0x0000e084 add sp, 0x14                                      |         
    0x0000e086 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_14:
    0x0000e08a ldr r0, [sp]                                      |         r0 = *(sp);
    0x0000e08c movs r2, 0                                        |         r2 = 0;
    0x0000e08e movs r1, 0x1d                                     |         r1 = 0x1d;
    0x0000e090 movs r4, 0xc                                      |         r4 = 0xc;
    0x0000e092 blx 0x5258                                        |         soap_fault_device_management ();
    0x0000e096 mov r0, r4                                        |         r0 = r4;
    0x0000e098 add sp, 0x14                                      |         
    0x0000e09a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_13:
    0x0000e09e ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x0000e0a0 mov r0, r8                                        |         r0 = r8;
    0x0000e0a2 str r3, [sp, 8]                                   |         var_8h = r3;
    0x0000e0a4 b 0xdf32                                          |         goto label_4;
                                                                 | label_18:
    0x0000e0a6 blx 0x5090                                        |         r0 = net_init ();
                                                                 |         if (r0 != 0) {
    0x0000e0aa cbnz r0, 0xe0e4                                   |             goto label_20;
                                                                 |         }
    0x0000e0ac cmp r5, 0                                         |         
    0x0000e0ae beq 0xe046                                        |         
                                                                 |     } while (r5 == 0);
    0x0000e0b0 ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x0000e0b2 mov r1, r6                                        |     r1 = r6;
    0x0000e0b4 blx 0x533c                                        |     r0 = net_ipfilter_set_input_config ();
                                                                 |     if (r0 != 0) {
    0x0000e0b8 cbnz r0, 0xe0c2                                   |         goto label_21;
                                                                 |     }
    0x0000e0ba blx 0x5694                                        |     r0 = fcn_00005694 ();
    0x0000e0be cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000e0c0 beq 0xe05a                                        |         goto label_5;
                                                                 |     }
                                                                 | label_21:
    0x0000e0c2 ldr r0, [sp]                                      |     r0 = *(sp);
    0x0000e0c4 movs r2, 0                                        |     r2 = 0;
    0x0000e0c6 movs r1, 0xf                                      |     r1 = 0xf;
    0x0000e0c8 movs r4, 0xc                                      |     r4 = 0xc;
    0x0000e0ca blx 0x527c                                        |     soap_fault_generic ();
    0x0000e0ce b 0xe05c                                          |     goto label_6;
                                                                 | label_19:
    0x0000e0d0 ldr r0, [sp]                                      |     r0 = *(sp);
    0x0000e0d2 movs r2, 0                                        |     r2 = 0;
    0x0000e0d4 movs r1, 0x18                                     |     r1 = 0x18;
    0x0000e0d6 blx 0x5258                                        |     soap_fault_device_management ();
    0x0000e0da mov r0, r4                                        |     r0 = r4;
    0x0000e0dc movs r4, 0xc                                      |     r4 = 0xc;
    0x0000e0de blx 0x56a4                                        |     fcn_000056a4 ();
    0x0000e0e2 b 0xe01e                                          |     goto label_3;
                                                                 | label_20:
    0x0000e0e4 ldr r0, [sp]                                      |     r0 = *(sp);
    0x0000e0e6 movs r2, 0                                        |     r2 = 0;
    0x0000e0e8 movs r1, 0xf                                      |     r1 = 0xf;
    0x0000e0ea movs r4, 0xc                                      |     r4 = 0xc;
    0x0000e0ec blx 0x527c                                        |     soap_fault_generic ();
    0x0000e0f0 b 0xe01e                                          |     goto label_3;
                                                                 | label_15:
    0x0000e0f2 ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x0000e0f4 cmp r3, 0                                         |     
    0x0000e0f6 it gt                                             |     
                                                                 |     if (r3 > 0) {
    0x0000e0f8 movgt r5, 0                                       |         r5 = 0;
                                                                 |         goto label_22;
                                                                 |     }
                                                                 |     if (r3 > 0) {
                                                                 | label_22:
    0x0000e0fa bgt.w 0xdfa8                                      |         goto label_7;
                                                                 |     }
    0x0000e0fe b 0xe03e                                          |     goto label_8;
                                                                 | }

[*] Function printf used 8 times libimpl_wsd_tds.so