[*] 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