[*] 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-80367616.squashfs_v4_le_extract/usr/lib/libimpl_wsd_tds.so @ 0x875c */
| #include <stdint.h>
|
; (fcn) fcn.0000875c () | void fcn_0000875c (int16_t arg1) {
| int16_t var_0h_2;
| r0 = arg1;
0x0000875c push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00008760 movs r1, 0xe | r1 = 0xe;
0x00008762 sub sp, 0x10 |
0x00008764 mov r4, r0 | r4 = r0;
0x00008766 bl 0x86e4 | fcn_000086e4 (r0);
0x0000876a movs r1, 0x10 | r1 = 0x10;
0x0000876c mov sl, r0 | sl = r0;
0x0000876e mov r0, r4 | r0 = r4;
0x00008770 bl 0x86e4 | fcn_000086e4 (r0);
0x00008774 movs r1, 0xf | r1 = 0xf;
0x00008776 mov sb, r0 | sb = r0;
0x00008778 mov r0, r4 | r0 = r4;
0x0000877a bl 0x86e4 | fcn_000086e4 (r0);
0x0000877e movs r1, 0x11 | r1 = 0x11;
0x00008780 mov r8, r0 | r8 = r0;
0x00008782 mov r0, r4 | r0 = r4;
0x00008784 bl 0x86e4 | fcn_000086e4 (r0);
0x00008788 movs r1, 0x12 | r1 = 0x12;
0x0000878a mov r7, r0 | r7 = r0;
0x0000878c mov r0, r4 | r0 = r4;
0x0000878e bl 0x86e4 | fcn_000086e4 (r0);
0x00008792 movs r1, 0xd | r1 = 0xd;
0x00008794 mov r6, r0 | r6 = r0;
0x00008796 mov r0, r4 | r0 = r4;
0x00008798 bl 0x86e4 | fcn_000086e4 (r0);
0x0000879c mov r1, sl | r1 = sl;
0x0000879e mov r5, r0 | r5 = r0;
0x000087a0 cmp.w sl, 0 |
| if (sl == 0) {
0x000087a4 beq 0x8822 | goto label_4;
| }
0x000087a6 mov r2, sb | r2 = sb;
0x000087a8 cmp.w sb, 0 |
| if (sb == 0) {
0x000087ac beq 0x882e | goto label_5;
| }
| do {
0x000087ae mov r3, r8 | r3 = r8;
0x000087b0 cmp.w r8, 0 |
| if (r8 == 0) {
0x000087b4 beq 0x883a | goto label_6;
| }
| label_0:
0x000087b6 mov r0, r7 | r0 = r7;
0x000087b8 cmp r7, 0 |
| if (r7 == 0) {
0x000087ba beq 0x8844 | goto label_7;
| }
| label_1:
0x000087bc mov r4, r6 | r4 = r6;
0x000087be cmp r6, 0 |
| if (r6 == 0) {
0x000087c0 beq 0x884e | goto label_8;
| }
| label_2:
0x000087c2 mov ip, r5 |
0x000087c4 cmp r5, 0 |
| if (r5 == 0) {
0x000087c6 beq 0x8858 | goto label_9;
| }
| label_3:
0x000087c8 strd r4, ip, [sp, 4] | __asm ("strd r4, ip, [sp, 4]");
0x000087cc str r0, [sp] | *(sp) = r0;
0x000087ce ldr r4, [pc, 0x90] |
0x000087d0 ldr r0, [pc, 0x90] |
0x000087d2 add r4, pc | r4 = 0x11038;
0x000087d4 add r0, pc | r0 = 0x1103c;
0x000087d6 blx 0x5b50 | g_strdup_printf ()
0x000087da mov r1, r4 | r1 = r4;
0x000087dc mov r3, r0 | r3 = r0;
0x000087de movs r2, 0x65 | r2 = 0x65;
0x000087e0 mov r0, sl | r0 = sl;
0x000087e2 mov sl, r3 | sl = r3;
0x000087e4 blx 0x5fb4 | fcn_00005fb4 ();
0x000087e8 mov r0, sb | r0 = sb;
0x000087ea mov r1, r4 | r1 = r4;
0x000087ec movs r2, 0x66 | r2 = 0x66;
0x000087ee blx 0x5fb4 | fcn_00005fb4 ();
0x000087f2 mov r0, r8 | r0 = r8;
0x000087f4 mov r1, r4 | r1 = r4;
0x000087f6 movs r2, 0x67 | r2 = 0x67;
0x000087f8 blx 0x5fb4 | fcn_00005fb4 ();
0x000087fc mov r0, r7 | r0 = r7;
0x000087fe mov r1, r4 | r1 = r4;
0x00008800 movs r2, 0x68 | r2 = 0x68;
0x00008802 blx 0x5fb4 | fcn_00005fb4 ();
0x00008806 mov r0, r6 | r0 = r6;
0x00008808 mov r1, r4 | r1 = r4;
0x0000880a movs r2, 0x69 | r2 = 0x69;
0x0000880c blx 0x5fb4 | fcn_00005fb4 ();
0x00008810 mov r0, r5 | r0 = r5;
0x00008812 movs r2, 0x6a | r2 = 0x6a;
0x00008814 mov r1, r4 | r1 = r4;
0x00008816 blx 0x5fb4 | fcn_00005fb4 ();
0x0000881a mov r0, sl | r0 = sl;
0x0000881c add sp, 0x10 |
0x0000881e pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_4:
0x00008822 ldr r1, [pc, 0x44] |
0x00008824 mov r2, sb | r2 = sb;
0x00008826 add r1, pc | r1 = 0x11094;
0x00008828 cmp.w sb, 0 |
0x0000882c bne 0x87ae |
| } while (sb != 0);
| label_5:
0x0000882e ldr r2, [pc, 0x3c] |
0x00008830 mov r3, r8 | r3 = r8;
0x00008832 add r2, pc | r2 = 0x110a4;
0x00008834 cmp.w r8, 0 |
| if (r8 != 0) {
0x00008838 bne 0x87b6 | goto label_0;
| }
| label_6:
0x0000883a ldr r3, [pc, 0x34] |
0x0000883c mov r0, r7 | r0 = r7;
0x0000883e add r3, pc | r3 = 0x110b4;
0x00008840 cmp r7, 0 |
| if (r7 != 0) {
0x00008842 bne 0x87bc | goto label_1;
| }
| label_7:
0x00008844 ldr r0, [pc, 0x2c] |
0x00008846 mov r4, r6 | r4 = r6;
0x00008848 add r0, pc | r0 = 0x110c0;
0x0000884a cmp r6, 0 |
| if (r6 != 0) {
0x0000884c bne 0x87c2 | goto label_2;
| }
| label_8:
0x0000884e ldr r4, [pc, 0x28] |
0x00008850 mov ip, r5 |
0x00008852 add r4, pc | r4 = 0x110d0;
0x00008854 cmp r5, 0 |
| if (r5 != 0) {
0x00008856 bne 0x87c8 | goto label_3;
| }
| label_9:
0x00008858 ldr.w ip, [pc, 0x20] |
0x0000885c add ip, pc | ip = 0x110dc;
0x0000885e b 0x87c8 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libimpl_wsd_tds.so @ 0x6a98 */
| #include <stdint.h>
|
; (fcn) sym.__tds__AddIPAddressFilter () | void tds_AddIPAddressFilter (int16_t arg1, int16_t arg2) {
| int16_t var_34h;
| int16_t var_170h;
| int16_t var_170h_2;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_1h;
| int16_t var_1h_2;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x00006a98 ldr r2, [pc, 0x29c] |
0x00006a9a ldr r3, [pc, 0x2a0] | r3 = *(0x6d3e);
0x00006a9c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00006aa0 mov r4, r1 | r4 = r1;
0x00006aa2 sub sp, 0x1c |
0x00006aa4 add r2, pc | r2 = 0xd7e0;
0x00006aa6 movs r5, 0 | r5 = 0;
0x00006aa8 ldr r1, [pc, 0x294] |
0x00006aaa str r0, [sp] | *(sp) = r0;
0x00006aac ldr r3, [r2, r3] |
0x00006aae add r1, pc | r1 = 0xd7f2;
0x00006ab0 ldr r3, [r3] | r3 = *(0xd7e0);
0x00006ab2 str r3, [sp, 0x14] | var_14h = r3;
0x00006ab4 mov.w r3, 0 | r3 = 0;
0x00006ab8 str r5, [sp, 0x10] | var_10h = r5;
0x00006aba blx 0x59d0 | r0 = wssecurity_uh_allowed_access ();
0x00006abe cmp r0, 0 |
| if (r0 == 0) {
0x00006ac0 beq.w 0x6c1c | goto label_12;
| }
0x00006ac4 cmp r4, 0 |
| if (r4 == 0) {
0x00006ac6 beq.w 0x6c00 | goto label_13;
| }
0x00006aca ldr r3, [r4] | r3 = *(r4);
0x00006acc cmp r3, 0 |
| if (r3 == 0) {
0x00006ace beq.w 0x6c00 | goto label_13;
| }
0x00006ad2 ldr.w sl, [r3, 4] | sl = *((r3 + 4));
0x00006ad6 ldr r6, [r3, 0xc] | r6 = *((r3 + 0xc));
0x00006ad8 cmp.w sl, 0 |
0x00006adc it le |
| if (sl <= 0) {
0x00006ade cmple r6, 0 | __asm ("cmple r6, 0");
| }
| if (sl > 0) {
0x00006ae0 ble 0x6b28 |
0x00006ae2 ldr.w r8, [r3, 8] | r8 = *((r3 + 8));
0x00006ae6 cmp.w sl, 0 |
0x00006aea ite le |
| if (sl > 0) {
0x00006aec movle r0, 0 | r0 = 0;
| }
| if (sl <= 0) {
0x00006aee movgt r0, 1 | r0 = 1;
| }
0x00006af0 ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x00006af2 cmp.w r8, 0 |
0x00006af6 it ne |
| if (r8 == 0) {
0x00006af8 movne r0, 0 | r0 = 0;
| }
0x00006afa str r2, [sp, 4] | var_4h = r2;
0x00006afc cmp r0, 0 |
| if (r0 != 0) {
0x00006afe bne 0x6bf4 | goto label_14;
| }
0x00006b00 mov r1, r2 | r1 = r2;
0x00006b02 cmp r6, 0 |
0x00006b04 ite le |
| if (r6 > 0) {
0x00006b06 movle r2, 0 | r2 = 0;
| }
| if (r6 <= 0) {
0x00006b08 movgt r2, 1 | r2 = 1;
| }
0x00006b0a cmp r1, 0 |
0x00006b0c it ne |
| if (r1 == 0) {
0x00006b0e movne r2, 0 | r2 = 0;
| }
0x00006b10 cmp r2, 0 |
| if (r2 != 0) {
0x00006b12 bne 0x6bf4 | goto label_14;
| }
0x00006b14 ldr r3, [r3] | r3 = *(r3);
0x00006b16 str r3, [sp, 8] | var_8h = r3;
| if (r3 == 0) {
0x00006b18 cbz r3, 0x6b46 | goto label_15;
| }
0x00006b1a cmp r3, 1 |
| if (r3 == 1) {
0x00006b1c beq 0x6b46 | goto label_15;
| }
0x00006b1e ldr r0, [sp] | r0 = *(sp);
0x00006b20 movs r1, 0xa | r1 = 0xa;
0x00006b22 blx 0x67f4 | fcn_000067f4 ();
| label_0:
0x00006b26 movs r5, 0xc | r5 = 0xc;
| }
| label_3:
0x00006b28 ldr r2, [pc, 0x218] |
0x00006b2a ldr r3, [pc, 0x210] | r3 = *(0x6d3e);
0x00006b2c add r2, pc | r2 = 0xd874;
0x00006b2e ldr r3, [r2, r3] | r3 = *(0xd874);
0x00006b30 ldr r2, [r3] | r2 = *(0xd874);
0x00006b32 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00006b34 eors r2, r3 | r2 ^= r3;
0x00006b36 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00006b3a bne.w 0x6d34 | goto label_16;
| }
0x00006b3e mov r0, r5 | r0 = r5;
0x00006b40 add sp, 0x1c |
0x00006b42 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_15:
0x00006b46 blx 0x64dc | r0 = fcn_000064dc ();
0x00006b4a mov r4, r0 | r4 = r0;
0x00006b4c cmp r0, 0 |
| if (r0 != 0) {
0x00006b4e bne.w 0x6cc8 | goto label_17;
| }
0x00006b52 add r0, sp, 0x10 | r0 += var_10h;
0x00006b54 blx 0x60c8 | r0 = fcn_000060c8 ();
0x00006b58 mov fp, r0 |
0x00006b5a cmp r0, 0 |
| if (r0 != 0) {
0x00006b5c bne 0x6c28 | goto label_18;
| }
0x00006b5e ldr r0, [sp, 0x10] | r0 = var_10h;
0x00006b60 blx 0x680c | fcn_0000680c ();
0x00006b64 add.w r3, sl, r6 | r3 = sl + r6;
0x00006b68 adds r3, 1 | r3++;
0x00006b6a add r0, r3 | r0 += r3;
0x00006b6c lsls r0, r0, 2 | r0 <<= 2;
0x00006b6e blx 0x5b38 | r0 = g_malloc0 ();
0x00006b72 mov r7, r0 | r7 = r0;
0x00006b74 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00006b76 ldr r4, [r0] | r4 = *(r0);
0x00006b78 cmp r4, 0 |
| if (r4 == 0) {
0x00006b7a beq.w 0x6d0c | goto label_19;
| }
0x00006b7e sub.w ip, r7, 4 |
0x00006b82 mov r5, r0 | r5 = r0;
| do {
0x00006b84 str r4, [ip, 4]! | *((ip += 4)) = r4;
0x00006b88 add.w fp, fp, 1 |
0x00006b8c ldr r4, [r5, 4]! | r4 = *((r5 += 4));
0x00006b90 cmp r4, 0 |
0x00006b92 bne 0x6b84 |
| } while (r4 != 0);
0x00006b94 blx 0x5c3c | fcn_00005c3c ();
0x00006b98 cmp.w sl, 0 |
0x00006b9c str r4, [sp, 0x10] | var_10h = r4;
| if (sl <= 0) {
0x00006b9e ble 0x6c4a | goto label_20;
| }
| label_9:
0x00006ba0 ldr r3, [pc, 0x1a4] |
0x00006ba2 movs r4, 0 | r4 = 0;
0x00006ba4 str r6, [sp, 0xc] | var_ch = r6;
0x00006ba6 add.w sb, r8, 4 | sb = r8 + 4;
0x00006baa mov r6, r4 | r6 = r4;
0x00006bac add r3, pc | r3 = 0xd8f8;
0x00006bae mov r4, r3 | r4 = r3;
0x00006bb0 b 0x6bc8 |
| while (r0 == 0) {
0x00006bb2 ldr.w r2, [sb, r6, lsl 3] | offset_0 = r6 << 3;
| r2 = *((sb + offset_0));
0x00006bb6 cmp r2, 0x20 |
| if (r2 == 0x20) {
0x00006bb8 beq 0x6c0c | goto label_21;
| }
| label_1:
0x00006bba str.w r5, [r7, fp, lsl 2] | __asm ("str.w r5, [r7, fp, lsl 2]");
0x00006bbe add.w fp, fp, 1 |
0x00006bc2 adds r6, 1 | r6++;
0x00006bc4 cmp sl, r6 |
| if (sl == r6) {
0x00006bc6 beq 0x6c48 | goto label_22;
| }
0x00006bc8 ldr.w r2, [sb, r6, lsl 3] | offset_1 = r6 << 3;
| r2 = *((sb + offset_1));
0x00006bcc mov r0, r4 | r0 = r4;
0x00006bce ldr.w r1, [r8, r6, lsl 3] | offset_2 = r6 << 3;
| r1 = *((r8 + offset_2));
0x00006bd2 blx 0x5b50 | r0 = g_strdup_printf ()
0x00006bd6 mov r5, r0 | r5 = r0;
0x00006bd8 blx 0x6920 | r0 = fcn_00006920 ();
0x00006bdc cmp r0, 1 |
| if (r0 != 1) {
0x00006bde bne 0x6cb4 | goto label_23;
| }
0x00006be0 mov r1, r5 | r1 = r5;
0x00006be2 mov r0, r7 | r0 = r7;
0x00006be4 blx 0x65b4 | r0 = fcn_000065b4 ();
0x00006be8 cmp r0, 0 |
0x00006bea beq 0x6bb2 |
| }
| label_2:
0x00006bec mov r0, r5 | r0 = r5;
0x00006bee blx 0x5c3c | fcn_00005c3c ();
0x00006bf0 invalid |
| label_14:
0x00006bf4 ldr r0, [sp] | r0 = *(sp);
0x00006bf6 movs r2, 0 | r2 = 0;
0x00006bf8 movs r1, 7 | r1 = 7;
0x00006bfa blx 0x67f4 | fcn_000067f4 ();
0x00006bfe b 0x6b26 | goto label_0;
| label_13:
0x00006c00 ldr r0, [sp] | r0 = *(sp);
0x00006c02 movs r2, 0 | r2 = 0;
0x00006c04 movs r1, 3 | r1 = 3;
0x00006c06 blx 0x67f4 | fcn_000067f4 ();
0x00006c0a b 0x6b26 | goto label_0;
| label_21:
0x00006c0c ldr.w r1, [r8, r6, lsl 3] | offset_3 = r6 << 3;
| r1 = *((r8 + offset_3));
0x00006c10 mov r0, r7 | r0 = r7;
0x00006c12 blx 0x65b4 | r0 = fcn_000065b4 ();
0x00006c16 cmp r0, 0 |
| if (r0 == 0) {
0x00006c18 beq 0x6bba | goto label_1;
| }
0x00006c1a b 0x6bec | goto label_2;
| label_12:
0x00006c1c mov r2, r0 | r2 = r0;
0x00006c1e movs r1, 0xd | r1 = 0xd;
0x00006c20 ldr r0, [sp] | r0 = *(sp);
0x00006c22 blx 0x67f4 | fcn_000067f4 ();
0x00006c26 b 0x6b26 | goto label_0;
| label_18:
0x00006c28 ldr r0, [sp] | r0 = *(sp);
0x00006c2a mov r2, r4 | r2 = r4;
0x00006c2c movs r1, 0xf | r1 = 0xf;
0x00006c2e mov r7, r4 | r7 = r4;
0x00006c30 movs r5, 0xc | r5 = 0xc;
0x00006c32 blx 0x67f4 | fcn_000067f4 ();
| label_7:
0x00006c36 blx 0x6884 | fcn_00006884 ();
0x00006c3a ldr r0, [sp, 0x10] | r0 = var_10h;
0x00006c3c blx 0x693c | cert_prm_get_int ();
0x00006c40 mov r0, r7 | r0 = r7;
0x00006c42 blx 0x693c | cert_prm_get_int ();
0x00006c46 b 0x6b28 | goto label_3;
| label_22:
0x00006c48 ldr r6, [sp, 0xc] | r6 = var_ch;
| label_20:
0x00006c4a cmp r6, 0 |
| if (r6 <= 0) {
0x00006c4c ble 0x6cd4 | goto label_24;
| }
| label_10:
0x00006c4e ldr r3, [sp, 4] | r3 = var_4h;
0x00006c50 mov.w sb, 0 | sb = 0;
0x00006c54 ldr.w r8, [pc, 0xf4] |
0x00006c58 adds r5, r3, 4 | r5 = r3 + 4;
0x00006c5a mov sl, r3 | sl = r3;
0x00006c5c add r8, pc | r8 = 0xd9ac;
0x00006c5e b 0x6c78 |
| while (r0 == 0) {
0x00006c60 ldr.w r3, [r5, sb, lsl 3] | offset_4 = sb << 3;
| r3 = *((r5 + offset_4));
0x00006c64 cmp r3, 0x80 |
| if (r3 == 0x80) {
0x00006c66 beq 0x6ca4 | goto label_25;
| }
| label_5:
0x00006c68 str.w r4, [r7, fp, lsl 2] | __asm ("str.w r4, [r7, fp, lsl 2]");
0x00006c6c add.w fp, fp, 1 |
| label_4:
0x00006c70 add.w sb, sb, 1 | sb++;
0x00006c74 cmp r6, sb |
| if (r6 == sb) {
0x00006c76 beq 0x6cd4 | goto label_24;
| }
0x00006c78 ldr.w r2, [r5, sb, lsl 3] | offset_5 = sb << 3;
| r2 = *((r5 + offset_5));
0x00006c7c mov r0, r8 | r0 = r8;
0x00006c7e ldr.w r1, [sl, sb, lsl 3] | offset_6 = sb << 3;
| r1 = *((sl + offset_6));
0x00006c82 blx 0x5b50 | r0 = g_strdup_printf ()
0x00006c86 mov r4, r0 | r4 = r0;
0x00006c88 blx 0x6920 | r0 = fcn_00006920 ();
0x00006c8c cmp r0, 2 |
| if (r0 != 2) {
0x00006c8e bne 0x6cfa | goto label_26;
| }
0x00006c90 mov r1, r4 | r1 = r4;
0x00006c92 mov r0, r7 | r0 = r7;
0x00006c94 blx 0x65b4 | r0 = fcn_000065b4 ();
0x00006c98 cmp r0, 0 |
0x00006c9a beq 0x6c60 |
| }
| label_6:
0x00006c9c mov r0, r4 | r0 = r4;
0x00006c9e blx 0x5c3c | fcn_00005c3c ();
0x00006ca2 b 0x6c70 | goto label_4;
| label_25:
0x00006ca4 ldr.w r1, [sl, sb, lsl 3] | offset_7 = sb << 3;
| r1 = *((sl + offset_7));
0x00006ca8 mov r0, r7 | r0 = r7;
0x00006caa blx 0x65b4 | r0 = fcn_000065b4 ();
0x00006cae cmp r0, 0 |
| if (r0 == 0) {
0x00006cb0 beq 0x6c68 | goto label_5;
| }
0x00006cb2 b 0x6c9c | goto label_6;
| label_23:
0x00006cb4 ldr r0, [sp] | r0 = *(sp);
0x00006cb6 movs r2, 0 | r2 = 0;
0x00006cb8 movs r1, 0x16 | r1 = 0x16;
0x00006cba blx 0x6164 | fcn_00006164 ();
0x00006cbe mov r0, r5 | r0 = r5;
0x00006cc0 blx 0x5c3c | fcn_00005c3c ();
| label_8:
0x00006cc4 movs r5, 0xc | r5 = 0xc;
0x00006cc6 b 0x6c36 | goto label_7;
| label_17:
0x00006cc8 ldr r0, [sp] | r0 = *(sp);
0x00006cca movs r2, 0 | r2 = 0;
0x00006ccc movs r1, 0xf | r1 = 0xf;
0x00006cce blx 0x67f4 | fcn_000067f4 ();
0x00006cd2 b 0x6b26 | goto label_0;
| label_24:
0x00006cd4 cmp.w fp, 0x100 |
| if (fp > 0x100) {
0x00006cd8 bgt 0x6d28 | goto label_27;
| }
| label_11:
0x00006cda ldr r0, [sp, 8] | r0 = var_8h;
0x00006cdc mov r1, r7 | r1 = r7;
0x00006cde blx 0x5c60 | r0 = fcn_00005c60 ();
| if (r0 != 0) {
0x00006ce2 cbnz r0, 0x6cee | goto label_28;
| }
0x00006ce4 blx 0x5d38 | r0 = fcn_00005d38 ();
0x00006ce8 mov r5, r0 | r5 = r0;
0x00006cea cmp r0, 0 |
| if (r0 == 0) {
0x00006cec beq 0x6c36 | goto label_7;
| }
| label_28:
0x00006cee ldr r0, [sp] | r0 = *(sp);
0x00006cf0 movs r2, 0 | r2 = 0;
0x00006cf2 movs r1, 0xf | r1 = 0xf;
0x00006cf4 blx 0x67f4 | fcn_000067f4 ();
0x00006cf8 b 0x6cc4 | goto label_8;
| label_26:
0x00006cfa ldr r0, [sp] | r0 = *(sp);
0x00006cfc movs r2, 0 | r2 = 0;
0x00006cfe movs r1, 0x18 | r1 = 0x18;
0x00006d00 blx 0x6164 | fcn_00006164 ();
0x00006d04 mov r0, r4 | r0 = r4;
0x00006d06 blx 0x5c3c | fcn_00005c3c ();
0x00006d0a b 0x6cc4 | goto label_8;
| label_19:
0x00006d0c blx 0x5c3c | fcn_00005c3c ();
0x00006d10 cmp.w sl, 0 |
0x00006d14 str r4, [sp, 0x10] | var_10h = r4;
0x00006d16 it gt |
| if (sl > 0) {
0x00006d18 movgt fp, r4 | goto label_29;
| }
| if (sl > 0) {
| label_29:
0x00006d1a bgt.w 0x6ba0 | goto label_9;
| }
0x00006d1e cmp r6, 0 |
0x00006d20 it gt |
| if (r6 > 0) {
0x00006d22 movgt fp, r4 | goto label_30;
| }
| if (r6 > 0) {
| label_30:
0x00006d24 bgt 0x6c4e | goto label_10;
| }
0x00006d26 b 0x6cda | goto label_11;
| label_27:
0x00006d28 ldr r0, [sp] | r0 = *(sp);
0x00006d2a movs r2, 0 | r2 = 0;
0x00006d2c movs r1, 0x1d | r1 = 0x1d;
0x00006d2e blx 0x6164 | fcn_00006164 ();
0x00006d32 b 0x6cc4 | goto label_8;
| label_16:
0x00006d34 blx 0x5cb4 | fcn_00005cb4 ();
0x00006d38 svc 0xb4 | __asm ("svc 0xb4");
0x00006d3a movs r0, r0 |
0x00006d3c lsls r4, r2, 0x16 | r4 = r2 << 0x16;
0x00006d3e movs r0, r0 |
0x00006d40 sub sp, 0x1c8 |
0x00006d42 movs r0, r0 |
0x00006d44 svc 0x2c | __asm ("svc 0x2c");
0x00006d46 movs r0, r0 |
0x00006d48 add sp, 0x30 |
0x00006d4a movs r0, r0 |
0x00006d4c add r7, sp, 0x170 | r7 += var_170h;
0x00006d4e movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libimpl_wsd_tds.so @ 0x8904 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.__tds__GetCertificateInformation () | void tds_GetCertificateInformation (int16_t arg_60h, int16_t arg_68h, int16_t arg_88h, int16_t arg_b0h, int16_t arg_d0h, int16_t arg_e0h, int16_t arg_e8h, int16_t arg_f8h, int16_t arg_100h, int16_t arg_140h, int16_t arg_148h, int16_t arg_170h, int16_t arg_178h, int16_t arg_188h, int16_t arg_200h, int16_t arg_210h, int16_t arg_218h, int16_t arg_238h, int16_t arg_290h, int16_t arg_2a8h, int16_t arg_2b0h, int16_t arg_2b8h, int16_t arg_2f8h, int16_t arg_300h, int16_t arg_320h, int16_t arg_348h, int16_t arg_368h, int16_t arg_370h, int16_t arg_3a8h, int16_t arg_3b0h, int16_t arg_3d0h, int16_t arg_3d8h, int16_t arg_3e8h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h_2;
| int16_t var_14h_2;
| int16_t var_18h;
| int32_t var_18h_2;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_38h;
| int16_t var_40h;
| int16_t var_50h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00008904 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00008908 sub sp, 0x34 |
0x0000890a str r2, [sp, 8] | var_8h = r2;
0x0000890c mov r4, r1 | r4 = r1;
0x0000890e mov r5, r0 | r5 = r0;
0x00008910 ldr.w r2, [pc, 0x870] |
0x00008914 ldr.w r3, [pc, 0x870] | r3 = *(0x9188);
0x00008916 subs r0, 0x70 | r0 -= 0x70;
0x00008918 ldr.w r1, [pc, 0x870] |
0x0000891c add r2, pc | r2 = 0x11aa4;
0x0000891e ldr r3, [r2, r3] |
0x00008920 add r1, pc | r1 = 0x11ab0;
0x00008922 ldr r3, [r3] | r3 = *(0x11aa4);
0x00008924 str r3, [sp, 0x2c] | var_2ch = r3;
0x00008926 mov.w r3, 0 | r3 = 0;
0x00008928 lsls r0, r0, 0xc | r0 <<= 0xc;
0x0000892a blx 0x59d0 | r0 = wssecurity_uh_allowed_access ();
0x0000892e cmp r0, 0 |
| if (r0 == 0) {
0x00008930 beq.w 0x8f92 | goto label_27;
| }
0x00008934 cmp r4, 0 |
| if (r4 == 0) {
0x00008936 beq.w 0x8f0c | goto label_28;
| }
0x0000893a ldr r4, [r4] | r4 = *(r4);
0x0000893c cmp r4, 0 |
| if (r4 == 0) {
0x0000893e beq.w 0x8f0c | goto label_28;
| }
0x00008942 movs r1, 0 | r1 = 0;
0x00008944 mov r0, r4 | r0 = r4;
0x00008946 blx 0x6314 | fcn_00006314 ();
0x0000894a str r0, [sp, 4] | var_4h = r0;
0x0000894c cmp r0, 0 |
| if (r0 == 0) {
0x0000894e beq.w 0x8f36 | goto label_29;
| }
0x00008952 mov.w r1, -1 | r1 = -1;
0x00008956 blx 0x6464 | fcn_00006464 ();
0x0000895a str r0, [sp, 0xc] | var_ch = r0;
0x0000895c cmp r0, 0 |
| if (r0 == 0) {
0x0000895e beq.w 0x8f40 | goto label_30;
| }
0x00008962 movs r3, 0 | r3 = 0;
0x00008964 mov r2, r3 | r2 = r3;
0x00008966 mov r1, r3 | r1 = r3;
0x00008968 blx 0x6098 | r0 = fcn_00006098 ();
0x0000896c mov fp, r0 |
0x0000896e cmp r0, 0 |
| if (r0 == 0) {
0x00008970 beq.w 0x8faa | goto label_31;
| }
0x00008974 movs r1, 0x44 | r1 = 0x44;
0x00008976 mov r0, r5 | r0 = r5;
0x00008978 blx 0x6578 | fcn_00006578 ();
0x0000897c mov r1, r4 | r1 = r4;
0x0000897e mov sl, r0 | sl = r0;
0x00008980 mov r0, r5 | r0 = r5;
0x00008982 blx 0x6818 | fcn_00006818 ();
0x00008986 str.w r0, [sl] | __asm ("str.w r0, [sl]");
0x0000898a mov r0, fp | r0 = fp;
0x0000898c blx 0x5d68 | fcn_00005d68 ();
0x00008990 bl 0x875c | r0 = fcn_0000875c (r0);
0x00008994 mov r4, r0 | r4 = r0;
0x00008996 mov r0, r5 | r0 = r5;
0x00008998 mov r1, r4 | r1 = r4;
0x0000899a blx 0x6818 | r0 = fcn_00006818 ();
0x0000899e mov r6, r0 | r6 = r0;
0x000089a0 mov r0, r4 | r0 = r4;
0x000089a2 blx 0x5c3c | fcn_00005c3c ();
0x000089a6 str.w r6, [sl, 4] | __asm ("str.w r6, [sl, 4]");
0x000089aa mov r0, fp | r0 = fp;
0x000089ac blx 0x5d20 | fcn_00005d20 ();
0x000089b0 bl 0x875c | r0 = fcn_0000875c (r0);
0x000089b4 mov r4, r0 | r4 = r0;
0x000089b6 mov r0, r5 | r0 = r5;
0x000089b8 mov r1, r4 | r1 = r4;
0x000089ba blx 0x6818 | r0 = fcn_00006818 ();
0x000089be mov r6, r0 | r6 = r0;
0x000089c0 mov r0, r4 | r0 = r4;
0x000089c2 blx 0x5c3c | fcn_00005c3c ();
0x000089c6 str.w r6, [sl, 8] | __asm ("str.w r6, [sl, 8]");
0x000089ca mov r0, fp | r0 = fp;
0x000089cc blx 0x6200 | r0 = fcn_00006200 ();
0x000089d0 adds r1, r0, 1 | r1 = r0 + 1;
0x000089d2 ldr.w r0, [pc, 0x7bc] |
0x000089d6 add r0, pc | r0 = 0x11b6c;
0x000089d8 blx 0x5b50 | r0 = g_strdup_printf ()
0x000089dc mov r4, r0 | r4 = r0;
0x000089de mov r0, r5 | r0 = r5;
0x000089e0 mov r1, r4 | r1 = r4;
0x000089e2 blx 0x6818 | r0 = fcn_00006818 ();
0x000089e6 mov r6, r0 | r6 = r0;
0x000089e8 mov r0, r4 | r0 = r4;
0x000089ea blx 0x5c3c | fcn_00005c3c ();
0x000089ee mov r0, fp | r0 = fp;
0x000089f0 str.w r6, [sl, 0x18] | __asm ("str.w r6, [sl, 0x18]");
0x000089f4 blx 0x5f30 | fcn_00005f30 ();
0x000089f8 movs r1, 0 | r1 = 0;
0x000089fa blx 0x6914 | r0 = fcn_00006914 ();
0x000089fe mov sb, r0 | sb = r0;
0x00008a00 cmp r0, 0 |
| if (r0 == 0) {
0x00008a02 beq.w 0x909c | goto label_32;
| }
0x00008a06 blx 0x5cfc | r0 = fcn_00005cfc ();
0x00008a0a mov r4, r0 | r4 = r0;
0x00008a0c blx 0x61f4 | r0 = fcn_000061f4 ();
0x00008a10 mov r7, r0 | r7 = r0;
0x00008a12 mov r0, r5 | r0 = r5;
0x00008a14 lsrs r6, r7, 1 | r6 = r7 >> 1;
0x00008a16 bic r7, r7, 1 | r7 = BIT_MASK (r7, 1);
0x00008a18 lsls r1, r0, 0x1c | r1 = r0 << 0x1c;
0x00008a1a add r7, r6 | r7 += r6;
0x00008a1c adds r1, r7, 1 | r1 = r7 + 1;
0x00008a1e blx 0x597c | r0 = xsoap_malloc ();
0x00008a22 mov r8, r0 | r8 = r0;
0x00008a24 cmp r6, 0 |
| if (r6 == 0) {
0x00008a26 beq.w 0x8f56 | goto label_33;
| }
0x00008a2a mov r2, r0 | r2 = r0;
0x00008a2c movs r3, 0 | r3 = 0;
0x00008a2e add.w ip, r4, 1 |
0x00008a32 movs r0, 0x20 | r0 = 0x20;
| do {
0x00008a34 ldrb.w r1, [r4, r3, lsl 1] | offset_0 = r3 << 1;
| r1 = *((r4 + offset_0));
0x00008a38 adds r2, 3 | r2 += 3;
0x00008a3a strb r1, [r2, -0x3] | *((r2 - 0x3)) = r1;
0x00008a3e ldrb.w r1, [ip, r3, lsl 1] | offset_1 = r3 << 1;
| r1 = *((ip + offset_1));
0x00008a42 adds r3, 1 | r3++;
0x00008a44 cmp r6, r3 |
0x00008a46 strb r0, [r2, -0x1] | *((r2 - 0x1)) = r0;
0x00008a4a strb r1, [r2, -0x2] | *((r2 - 0x2)) = r1;
0x00008a4e bne 0x8a34 |
| } while (r6 != r3);
0x00008a50 add r7, r8 | r7 += r8;
0x00008a52 movs r3, 0 | r3 = 0;
0x00008a54 strb r3, [r7, -0x1] | *((r7 - 0x1)) = r3;
| label_0:
0x00008a58 mov r0, sb | r0 = sb;
0x00008a5a blx 0x5f9c | fcn_00005f9c ();
0x00008a5c invalid |
0x00008a5e ldr.w r1, [pc, 0x734] |
0x00008a62 movs r2, 0xe2 | r2 = 0xe2;
0x00008a64 mov r0, r4 | r0 = r4;
0x00008a66 add r1, pc | r1 = 0x11c00;
0x00008a68 blx 0x5fb4 | fcn_00005fb4 ();
0x00008a6c mov r0, fp | r0 = fp;
0x00008a6e str.w r8, [sl, 0x1c] | __asm ("str.w r8, [sl, 0x1c]");
0x00008a72 blx 0x5ec4 | fcn_00005ec4 ();
0x00008a74 bic.w r7, r8, sp, ror 31 | r7 = BIT_MASK (r8, sp);
0x00008a78 ldc p6, c4, [r2, 4] | __asm ("ldc p6, c4, [r2, 4]");
0x00008a7c mov r0, r5 | r0 = r5;
0x00008a7e blx 0x6818 | fcn_00006818 ();
0x00008a80 cdp p8, 0xc, c15, c12, c10, 6 | __asm ("cdp p8, 0xc, c15, c12, c10, 6");
0x00008a84 movs r0, r4 | r0 = r4;
0x00008a86 mov r0, fp | r0 = fp;
0x00008a88 blx 0x6260 | r0 = fcn_00006260 ();
0x00008a8c mov r4, r0 | r4 = r0;
0x00008a8e movs r1, 4 | r1 = 4;
0x00008a90 mov r0, r5 | r0 = r5;
0x00008a92 blx 0x597c | xsoap_malloc ();
0x00008a94 invalid |
| if (r4 != 0) {
0x00008a98 cbz r4, 0x8aa2 |
0x00008a9a mov r0, r4 | r0 = r4;
0x00008a9c blx 0x62b4 | r0 = fcn_000062b4 ();
0x00008aa0 mov r4, r0 | r4 = r0;
| }
0x00008aa2 ldr.w r8, [pc, 0x6f4] |
0x00008aa6 movs r1, 8 | r1 = 8;
0x00008aa8 str r4, [r6] | *(r6) = r4;
0x00008aaa mov r0, r5 | r0 = r5;
0x00008aac str.w r6, [sl, 0x14] | __asm ("str.w r6, [sl, 0x14]");
0x00008ab0 add r8, pc | r8 = 0x11c4e;
0x00008ab2 blx 0x6578 | r0 = fcn_00006578 ();
0x00008ab6 mov r7, r0 | r7 = r0;
0x00008ab8 mov r0, r8 | r0 = r8;
0x00008aba blx 0x5d5c | r0 = fcn_00005d5c ();
0x00008abe mov r4, r0 | r4 = r0;
0x00008ac0 mov r0, fp | r0 = fp;
0x00008ac2 blx 0x632c | r0 = fcn_0000632c ();
0x00008ac6 adds r1, r0, 1 | r1 = r0 + 1;
0x00008ac8 mov r6, r0 | r6 = r0;
| if (r1 != r0) {
0x00008aca beq.w 0x8c10 |
0x00008acc strh r1, [r4, 4] | *((r4 + 4)) = r1;
0x00008ace lsls r2, r0, 0x18 | r2 = r0 << 0x18;
| if (r2 < r0) {
0x00008ad0 bpl 0x8af0 |
0x00008ad2 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00008ad4 mov r2, r8 | r2 = r8;
| if (r3 != 0) {
0x00008ad6 cbz r3, 0x8ade |
0x00008ad8 ldr.w r2, [pc, 0x6c0] |
0x00008adc add r2, pc | r2 = "tt:WashingProcedure|Off";
| }
0x00008ade ldr.w r3, [pc, 0x6c0] |
0x00008ae2 mov r0, r4 | r0 = r4;
0x00008ae4 ldr.w r1, [pc, 0x6bc] |
0x00008ae8 add r3, pc | r3 = 0x11c8e;
0x00008aea add r1, pc | r1 = 0x11c92;
0x00008aec blx 0x5e04 | fcn_00005e04 ();
| }
0x00008af0 lsls r3, r6, 0x19 | r3 = r6 << 0x19;
| if (r3 < r6) {
0x00008af2 bpl 0x8b14 |
0x00008af4 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00008af6 cmp r3, 0 |
| if (r3 == 0) {
0x00008af8 beq.w 0x90dc | goto label_34;
| }
0x00008afc ldr.w r2, [pc, 0x6a8] |
0x00008b00 add r2, pc | r2 = 0x11cac;
| label_17:
0x00008b02 ldr.w r3, [pc, 0x6a8] |
0x00008b06 mov r0, r4 | r0 = r4;
0x00008b08 ldr.w r1, [pc, 0x6a4] |
0x00008b0c add r3, pc | r3 = 0x11cbe;
0x00008b0e add r1, pc | r1 = 0x11cc2;
0x00008b10 blx 0x5e04 | fcn_00005e04 ();
| }
0x00008b14 lsls r0, r6, 0x1a | r0 = r6 << 0x1a;
| if (r0 < r6) {
0x00008b16 bpl 0x8b38 |
0x00008b18 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00008b1a cmp r3, 0 |
| if (r3 == 0) {
0x00008b1c beq.w 0x90d6 | goto label_35;
| }
0x00008b20 ldr.w r2, [pc, 0x690] |
0x00008b24 add r2, pc | r2 = 0x11cdc;
| label_16:
0x00008b26 ldr.w r3, [pc, 0x690] |
0x00008b2a mov r0, r4 | r0 = r4;
0x00008b2c ldr.w r1, [pc, 0x68c] |
0x00008b30 add r3, pc | r3 = 0x11cee;
0x00008b32 add r1, pc | r1 = 0x11cf2;
0x00008b34 blx 0x5e04 | fcn_00005e04 ();
| }
0x00008b38 lsls r1, r6, 0x1b | r1 = r6 << 0x1b;
| if (r1 < r6) {
0x00008b3a bpl 0x8b5c |
0x00008b3c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00008b3e cmp r3, 0 |
| if (r3 == 0) {
0x00008b40 beq.w 0x90ac | goto label_36;
| }
0x00008b44 ldr.w r2, [pc, 0x678] |
0x00008b48 add r2, pc | r2 = 0x11d0c;
| label_9:
0x00008b4a ldr.w r3, [pc, 0x678] |
0x00008b4e mov r0, r4 | r0 = r4;
0x00008b50 ldr.w r1, [pc, 0x674] |
0x00008b54 add r3, pc | r3 = 0x11d1e;
0x00008b56 add r1, pc | r1 = 0x11d22;
0x00008b58 blx 0x5e04 | fcn_00005e04 ();
| }
0x00008b5c lsls r2, r6, 0x1c | r2 = r6 << 0x1c;
| if (r2 < r6) {
0x00008b5e bpl 0x8b80 |
0x00008b60 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00008b62 cmp r3, 0 |
| if (r3 == 0) {
0x00008b64 beq.w 0x90be | goto label_37;
| }
0x00008b68 ldr.w r2, [pc, 0x660] |
0x00008b6c add r2, pc | r2 = "tds:CreateUsers";
| label_12:
0x00008b6e ldr.w r3, [pc, 0x660] |
0x00008b72 mov r0, r4 | r0 = r4;
0x00008b74 ldr.w r1, [pc, 0x65c] |
0x00008b78 add r3, pc | r3 = 0x11d4e;
0x00008b7a add r1, pc | r1 = 0x11d52;
0x00008b7c blx 0x5e04 | fcn_00005e04 ();
| }
0x00008b80 lsls r3, r6, 0x1d | r3 = r6 << 0x1d;
| if (r3 < r6) {
0x00008b82 bpl 0x8ba4 |
0x00008b84 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00008b86 cmp r3, 0 |
| if (r3 == 0) {
0x00008b88 beq.w 0x90d0 | goto label_38;
| }
0x00008b8c ldr.w r2, [pc, 0x648] |
0x00008b90 add r2, pc | r2 = 0x11d6c;
| label_15:
0x00008b92 ldr.w r3, [pc, 0x648] |
0x00008b96 mov r0, r4 | r0 = r4;
0x00008b98 ldr.w r1, [pc, 0x644] |
0x00008b9c add r3, pc | r3 = 0x11d7e;
0x00008b9e add r1, pc | r1 = 0x11d82;
0x00008ba0 blx 0x5e04 | fcn_00005e04 ();
0x00008ba2 invalid |
| }
0x00008ba4 lsls r0, r6, 0x1e | r0 = r6 << 0x1e;
| if (r0 < r6) {
0x00008ba6 bpl 0x8bc8 |
0x00008ba8 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00008baa cmp r3, 0 |
| if (r3 == 0) {
0x00008bac beq.w 0x90ca | goto label_39;
| }
0x00008bb0 ldr.w r2, [pc, 0x630] |
0x00008bb4 add r2, pc | r2 = 0x11d9c;
| label_14:
0x00008bb6 ldr.w r3, [pc, 0x630] |
0x00008bba mov r0, r4 | r0 = r4;
0x00008bbc ldr.w r1, [pc, 0x62c] |
0x00008bc0 add r3, pc | r3 = 0x11dae;
0x00008bc2 add r1, pc | r1 = 0x11db2;
0x00008bc4 blx 0x5e04 | fcn_00005e04 ();
| }
0x00008bc8 lsls r1, r6, 0x1f | r1 = r6 << 0x1f;
| if (r1 < r6) {
0x00008bca bpl 0x8bec |
0x00008bcc ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00008bce cmp r3, 0 |
| if (r3 == 0) {
0x00008bd0 beq.w 0x90c4 | goto label_40;
| }
0x00008bd4 ldr.w r2, [pc, 0x618] |
0x00008bd8 add r2, pc | r2 = "%sFailed to delete %s";
| label_13:
0x00008bda ldr.w r3, [pc, 0x618] |
0x00008bde mov r0, r4 | r0 = r4;
0x00008be0 ldr.w r1, [pc, 0x614] |
0x00008be4 add r3, pc | r3 = 0x11dde;
0x00008be6 add r1, pc | r1 = 0x11de2;
0x00008be8 blx 0x5e04 | fcn_00005e04 ();
| }
0x00008bec lsls r2, r6, 0x10 | r2 = r6 << 0x10;
| if (r2 >= r6) {
0x00008bee bpl 0x8c10 | goto label_41;
| }
0x00008bf0 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00008bf2 cmp r3, 0 |
| if (r3 == 0) {
0x00008bf4 beq.w 0x9100 | goto label_42;
| }
0x00008bf8 ldr.w r2, [pc, 0x600] |
0x00008bfc add r2, pc | r2 = 0x11dfc;
| label_23:
0x00008bfe ldr.w r3, [pc, 0x600] |
0x00008c02 mov r0, r4 | r0 = r4;
0x00008c04 ldr.w r1, [pc, 0x5fc] |
0x00008c08 add r3, pc | r3 = 0x11e0e;
0x00008c0a add r1, pc | r1 = 0x11e12;
0x00008c0c blx 0x5e04 | fcn_00005e04 ();
| }
| label_41:
0x00008c10 ldr r1, [r4] | r1 = *(r4);
0x00008c12 mov r0, r5 | r0 = r5;
0x00008c14 blx 0x6818 | fcn_00006818 ();
0x00008c16 cdp p1, 0, c2, c0, c1, 0 | __asm ("cdp p1, 0, c2, c0, c1, 0");
0x00008c1a mov r6, r0 | r6 = r0;
0x00008c1c mov r0, r4 | r0 = r4;
0x00008c1e ldr.w r8, [pc, 0x5e8] |
0x00008c22 blx 0x5ab4 | g_string_free ();
0x00008c26 str r6, [r7] | *(r7) = r6;
0x00008c28 movs r1, 8 | r1 = 8;
0x00008c2a ldrb r3, [r6] | r3 = *(r6);
0x00008c2c add r8, pc | r8 = 0x11e3a;
0x00008c2e mov r0, r5 | r0 = r5;
0x00008c30 subs r3, 0 |
0x00008c32 it ne |
| if (r3 == 0) {
0x00008c34 movne r3, 1 | r3 = 1;
| }
0x00008c36 str r3, [r7, 4] | *((r7 + 4)) = r3;
0x00008c38 str.w r7, [sl, 0xc] | __asm ("str.w r7, [sl, 0xc]");
0x00008c3c blx 0x6578 | r0 = fcn_00006578 ();
0x00008c40 mov r7, r0 | r7 = r0;
0x00008c42 mov r0, r8 | r0 = r8;
0x00008c44 blx 0x5d5c | r0 = fcn_00005d5c ();
0x00008c48 mov r4, r0 | r4 = r0;
0x00008c4a mov r0, fp | r0 = fp;
0x00008c4c blx 0x6050 | r0 = fcn_00006050 ();
0x00008c50 adds r3, r0, 1 | r3 = r0 + 1;
0x00008c52 mov r6, r0 | r6 = r0;
| if (r3 != r0) {
0x00008c54 beq.w 0x8d76 |
0x00008c58 lsls r0, r6, 0x1f | r0 = r6 << 0x1f;
| if (r0 < r6) {
0x00008c5a bpl 0x8c7a |
0x00008c5c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00008c5e mov r2, r8 | r2 = r8;
| if (r3 != 0) {
0x00008c60 cbz r3, 0x8c68 |
0x00008c62 ldr.w r2, [pc, 0x5a8] |
0x00008c66 add r2, pc | r2 = "/com/axis/IOControl/State";
| }
0x00008c68 ldr.w r3, [pc, 0x5a4] |
0x00008c6c mov r0, r4 | r0 = r4;
0x00008c6e ldr.w r1, [pc, 0x5a4] |
0x00008c70 asrs r4, r4, 0x16 | r4 >>= 0x16;
0x00008c72 add r3, pc | r3 = 0x11e86;
0x00008c74 add r1, pc | r1 = 0x11e8e;
0x00008c76 blx 0x5e04 | fcn_00005e04 ();
| }
0x00008c7a lsls r1, r6, 0x1e | r1 = r6 << 0x1e;
| if (r1 < r6) {
0x00008c7c bpl 0x8c9e |
0x00008c7e ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00008c80 cmp r3, 0 |
| if (r3 == 0) {
0x00008c82 beq.w 0x90e8 | goto label_43;
| }
0x00008c86 ldr.w r2, [pc, 0x590] |
0x00008c8a add r2, pc | r2 = "/onvif/services";
| label_19:
0x00008c8c ldr.w r3, [pc, 0x58c] |
0x00008c90 mov r0, r4 | r0 = r4;
0x00008c92 ldr.w r1, [pc, 0x58c] |
0x00008c96 add r3, pc | r3 = 0x11eb6;
0x00008c98 add r1, pc | r1 = 0x11ebe;
0x00008c9a blx 0x5e04 | fcn_00005e04 ();
| }
0x00008c9e lsls r2, r6, 0x1d | r2 = r6 << 0x1d;
| if (r2 < r6) {
0x00008ca0 bpl 0x8cc2 |
0x00008ca2 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00008ca4 cmp r3, 0 |
| if (r3 == 0) {
0x00008ca6 beq.w 0x90e2 | goto label_44;
| }
0x00008caa ldr.w r2, [pc, 0x578] |
0x00008cae add r2, pc | r2 = 0x11ed8;
| label_18:
0x00008cb0 ldr.w r3, [pc, 0x574] |
0x00008cb4 mov r0, r4 | r0 = r4;
0x00008cb6 ldr.w r1, [pc, 0x574] |
0x00008cba add r3, pc | r3 = 0x11ee6;
0x00008cbc add r1, pc | r1 = 0x11eee;
0x00008cbe blx 0x5e04 | fcn_00005e04 ();
| }
0x00008cc2 lsls r3, r6, 0x1c | r3 = r6 << 0x1c;
| if (r3 < r6) {
0x00008cc4 bpl 0x8ce6 |
0x00008cc6 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00008cc8 cmp r3, 0 |
| if (r3 == 0) {
0x00008cca beq.w 0x90f4 | goto label_45;
| }
0x00008cce ldr.w r2, [pc, 0x560] |
0x00008cd2 add r2, pc | r2 = 0x11f08;
| label_21:
0x00008cd4 ldr.w r3, [pc, 0x55c] |
0x00008cd8 mov r0, r4 | r0 = r4;
0x00008cda ldr.w r1, [pc, 0x55c] |
0x00008cde add r3, pc | r3 = 0x11f16;
0x00008ce0 add r1, pc | r1 = 0x11f1e;
0x00008ce2 blx 0x5e04 | fcn_00005e04 ();
| }
0x00008ce6 lsls r0, r6, 0x1b | r0 = r6 << 0x1b;
| if (r0 < r6) {
0x00008ce8 bpl 0x8d0a |
0x00008cea ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00008cec cmp r3, 0 |
| if (r3 == 0) {
0x00008cee beq.w 0x90fa | goto label_46;
| }
0x00008cf2 ldr.w r2, [pc, 0x548] |
0x00008cf6 add r2, pc | r2 = 0x11f38;
| label_22:
0x00008cf8 ldr.w r3, [pc, 0x544] |
0x00008cfc mov r0, r4 | r0 = r4;
0x00008cfe ldr.w r1, [pc, 0x544] |
0x00008d02 add r3, pc | r3 = 0x11f46;
0x00008d04 add r1, pc | r1 = 0x11f4e;
0x00008d06 blx 0x5e04 | fcn_00005e04 ();
| }
0x00008d0a lsls r1, r6, 0x1a | r1 = r6 << 0x1a;
| if (r1 < r6) {
0x00008d0c bpl 0x8d2e |
0x00008d0e ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00008d10 cmp r3, 0 |
| if (r3 == 0) {
0x00008d12 beq.w 0x90b2 | goto label_47;
| }
0x00008d16 ldr.w r2, [pc, 0x530] |
0x00008d1a add r2, pc | r2 = 0x11f68;
| label_10:
0x00008d1c ldr.w r3, [pc, 0x52c] |
0x00008d20 mov r0, r4 | r0 = r4;
0x00008d22 ldr.w r1, [pc, 0x52c] |
0x00008d26 add r3, pc | r3 = 0x11f76;
0x00008d28 add r1, pc | r1 = 0x11f7e;
0x00008d2a blx 0x5e04 | fcn_00005e04 ();
| }
0x00008d2e lsls r2, r6, 0x19 | r2 = r6 << 0x19;
| if (r2 < r6) {
0x00008d30 bpl 0x8d52 |
0x00008d32 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00008d34 cmp r3, 0 |
| if (r3 == 0) {
0x00008d36 beq.w 0x90ee | goto label_48;
| }
0x00008d3a ldr.w r2, [pc, 0x518] |
0x00008d3e add r2, pc | r2 = 0x11f98;
| label_20:
0x00008d40 ldr.w r3, [pc, 0x514] |
0x00008d44 mov r0, r4 | r0 = r4;
0x00008d46 ldr.w r1, [pc, 0x514] |
0x00008d4a add r3, pc | r3 = 0x11fa6;
0x00008d4c add r1, pc | r1 = 0x11fae;
0x00008d4e blx 0x5e04 | fcn_00005e04 ();
| }
0x00008d52 lsls r3, r6, 0x18 | r3 = r6 << 0x18;
| if (r3 >= r6) {
0x00008d54 bpl 0x8d76 | goto label_49;
| }
0x00008d56 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00008d58 cmp r3, 0 |
| if (r3 == 0) {
0x00008d5a beq.w 0x90b8 | goto label_50;
| }
0x00008d5e ldr.w r2, [pc, 0x500] |
0x00008d62 add r2, pc | r2 = "serverAuth";
| label_11:
0x00008d64 ldr.w r3, [pc, 0x4fc] |
0x00008d68 mov r0, r4 | r0 = r4;
0x00008d6a ldr.w r1, [pc, 0x4fc] |
0x00008d6e add r3, pc | r3 = 0x11fd6;
0x00008d70 add r1, pc | r1 = 0x11fde;
0x00008d72 blx 0x5e04 | fcn_00005e04 ();
| }
| label_49:
0x00008d76 ldr r1, [r4] | r1 = *(r4);
0x00008d78 mov r0, r5 | r0 = r5;
0x00008d7a blx 0x6818 | fcn_00006818 ();
0x00008d7e movs r1, 1 | r1 = 1;
0x00008d80 mov r6, r0 | r6 = r0;
0x00008d82 mov r0, r4 | r0 = r4;
0x00008d84 blx 0x5ab4 | g_string_free ();
0x00008d86 mrc p0, 4, r6, c6, c14, 1 | __asm ("mrc p0, 4, r6, c6, c14, 1");
0x00008d8a movs r1, 0x30 | r1 = 0x30;
0x00008d8c ldrb r3, [r6] | r3 = *(r6);
0x00008d8e mov r0, r5 | r0 = r5;
0x00008d90 subs r3, 0 |
0x00008d92 it ne |
| if (r3 == 0) {
0x00008d94 movne r3, 1 | r3 = 1;
| }
0x00008d96 str r3, [r7, 4] | *((r7 + 4)) = r3;
0x00008d98 str.w r7, [sl, 0x10] | __asm ("str.w r7, [sl, 0x10]");
0x00008d9c blx 0x6578 | r0 = fcn_00006578 ();
0x00008da0 mov r4, r0 | r4 = r0;
0x00008da2 mov r0, fp | r0 = fp;
0x00008da4 blx 0x67ac | fcn_000067ac ();
0x00008da8 bl 0x8880 | fcn_00008880 ();
0x00008dac strd r0, r1, [r4] | __asm ("strd r0, r1, [r4]");
0x00008db0 mov r0, fp | r0 = fp;
0x00008db2 blx 0x60b0 | fcn_000060b0 ();
0x00008db6 bl 0x8880 | fcn_00008880 ();
0x00008dba strd r0, r1, [r4, 8] | __asm ("strd r0, r1, [r4, 8]");
0x00008dbe movs r1, 0xc | r1 = 0xc;
0x00008dc0 str.w r4, [sl, 0x24] | __asm ("str.w r4, [sl, 0x24]");
0x00008dc4 mov r0, r5 | r0 = r5;
0x00008dc6 blx 0x6578 | fcn_00006578 ();
0x00008dca movs r1, 0x14 | r1 = 0x14;
0x00008dcc str r0, [sp, 0x14] | var_14h_2 = r0;
0x00008dce mov r0, r5 | r0 = r5;
0x00008dd0 blx 0x6578 | fcn_00006578 ();
0x00008dd4 str r0, [sp] | *(sp) = r0;
0x00008dd6 ldr.w r0, [pc, 0x494] |
0x00008dda add r0, pc | r0 = 0x1204c;
0x00008ddc blx 0x5d5c | r0 = fcn_00005d5c ();
0x00008de0 mov r4, r0 | r4 = r0;
0x00008de2 mov r0, fp | r0 = fp;
0x00008de4 blx 0x6260 | fcn_00006260 ();
0x00008de6 bics.w r6, ip, r6, lsl 16 | __asm ("bics.w r6, ip, r6, lsl 16");
0x00008dea blx 0x5cf0 | r0 = fcn_00005cf0 ();
0x00008dee cmp.w r0, 0x198 |
| if (r0 == 0x198) {
0x00008df2 beq.w 0x8fb8 | goto label_51;
| }
0x00008df6 cmp r0, 6 |
| if (r0 == 6) {
0x00008df8 beq.w 0x9106 | goto label_52;
| }
0x00008dfc cmp r0, 0x74 |
| if (r0 == 0x74) {
0x00008dfe beq.w 0x9122 | goto label_53;
| }
0x00008e02 add r3, sp, 0x28 | r3 += var_28h;
0x00008e04 str r3, [sp, 0x10] | var_10h_2 = r3;
| label_5:
0x00008e06 ldr r1, [r4] | r1 = *(r4);
0x00008e08 mov r0, r5 | r0 = r5;
0x00008e0a blx 0x6818 | fcn_00006818 ();
0x00008e0e movs r1, 1 | r1 = 1;
0x00008e10 mov r6, r0 | r6 = r0;
0x00008e12 mov r0, r4 | r0 = r4;
0x00008e14 blx 0x5ab4 | g_string_free ();
0x00008e16 vmla.f64 d25, d14, d0 | __asm ("vmla.f64 d25, d14, d0");
0x00008e1a ldr.w r0, [pc, 0x454] |
0x00008e1e str r6, [r3] | *(r3) = r6;
0x00008e20 add r0, pc | r0 = 0x12096;
0x00008e22 blx 0x5d5c | fcn_00005d5c ();
0x00008e26 mov r2, fp | r2 = fp;
0x00008e28 mov r7, r0 | r7 = r0;
0x00008e2a movs r1, 0 | r1 = 0;
0x00008e2c ldr r0, [sp, 0x10] | r0 = var_10h_2;
0x00008e2e blx 0x6614 | fcn_00006614 ();
0x00008e32 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00008e34 ldr r6, [r3] | r6 = *(r3);
0x00008e36 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00008e38 cmp r6, 0 |
| if (r6 <= 0) {
0x00008e3a ble 0x8e7e | goto label_54;
| }
0x00008e3c ldr.w r2, [pc, 0x434] |
0x00008e40 add r6, r3 | r6 += r3;
0x00008e42 ldr.w r1, [pc, 0x434] |
0x00008e46 subs r6, 1 | r6--;
0x00008e48 ldr.w sb, [pc, 0x430] |
0x00008e4c subs r4, r3, 1 | r4 = r3 - 1;
0x00008e4e add r2, pc | r2 = 0x120c6;
0x00008e50 strd sl, r5, [sp, 0x18] | __asm ("strd sl, r5, [var_18h]");
0x00008e54 add r1, pc | r1 = 0x120d2;
0x00008e56 rsb.w r8, r3, 1 | r8 = 1 - r3;
0x00008e58 lsrs r1, r0, 0x20 | r1 = r0 >> 0x20;
0x00008e5a add sb, pc | sb = 0x120da;
0x00008e5c mov r5, r2 | r5 = r2;
0x00008e5e mov sl, r1 | sl = r1;
| do {
0x00008e60 cmn.w r8, r4 |
0x00008e64 ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00008e68 ite ne |
| if (r8 == r4) {
0x00008e6a movne r2, sl | r2 = sl;
| }
| if (r8 != r4) {
0x00008e6c moveq r2, r5 | r2 = r5;
| }
0x00008e6e mov r1, sb | r1 = sb;
0x00008e70 mov r0, r7 | r0 = r7;
0x00008e72 blx 0x5e04 | fcn_00005e04 ();
0x00008e76 cmp r6, r4 |
0x00008e78 bne 0x8e60 |
| } while (r6 != r4);
0x00008e7a ldrd sl, r5, [sp, 0x18] | __asm ("ldrd sl, r5, [var_18h]");
| label_54:
0x00008e7e ldr r1, [r7] | r1 = *(r7);
0x00008e80 mov r0, r5 | r0 = r5;
0x00008e82 blx 0x6818 | fcn_00006818 ();
0x00008e86 movs r1, 1 | r1 = 1;
0x00008e88 mov r4, r0 | r4 = r0;
0x00008e8a mov r0, r7 | r0 = r7;
0x00008e8c blx 0x5ab4 | g_string_free ();
0x00008e90 ldr r6, [sp] | r6 = *(sp);
0x00008e92 mov r0, r5 | r0 = r5;
0x00008e94 ldr r1, [sp, 4] | r1 = var_4h;
0x00008e96 str r4, [r6, 4] | *((r6 + 4)) = r4;
0x00008e98 blx 0x6818 | fcn_00006818 ();
0x00008e9c str r0, [r6, 8] | *((r6 + 8)) = r0;
0x00008e9e mov r0, fp | r0 = fp;
0x00008ea0 blx 0x6260 | fcn_00006260 ();
0x00008ea4 blx 0x5cf0 | r0 = fcn_00005cf0 ();
0x00008ea8 cmp.w r0, 0x198 |
| if (r0 == 0x198) {
0x00008eac beq.w 0x914a | goto label_55;
| }
0x00008eb0 cmp r0, 6 |
| if (r0 == 6) {
0x00008eb2 beq.w 0x9172 | goto label_56;
| }
0x00008eb6 cmp r0, 0x74 |
| if (r0 == 0x74) {
0x00008eb8 beq 0x8f9e | goto label_57;
| }
0x00008eba ldr r1, [pc, 0x3c4] |
0x00008ebc mov r0, r5 | r0 = r5;
0x00008ebe add r1, pc | r1 = 0x12144;
0x00008ec0 blx 0x6818 | fcn_00006818 ();
| label_3:
0x00008ec4 ldr r3, [sp] | r3 = *(sp);
0x00008ec6 str r0, [r3, 0xc] | *((r3 + 0xc)) = r0;
0x00008ec8 mov r0, fp | r0 = fp;
0x00008eca blx 0x6260 | r0 = fcn_00006260 ();
0x00008ece mov r4, r0 | r4 = r0;
0x00008ed0 blx 0x5cf0 | r0 = fcn_00005cf0 ();
0x00008ed4 cmp r0, 6 |
| if (r0 == 6) {
0x00008ed6 beq 0x8f5a | goto label_58;
| }
0x00008ed8 ldr r1, [pc, 0x3a8] |
0x00008eda mov r0, r5 | r0 = r5;
0x00008edc add r1, pc | r1 = "/com/axis/BasicDeviceInfo1";
0x00008ede blx 0x6818 | r0 = fcn_00006818 ();
0x00008ee2 mov r4, r0 | r4 = r0;
| label_1:
0x00008ee4 ldr r3, [sp] | r3 = *(sp);
0x00008ee6 ldr r2, [sp, 0x14] | r2 = var_14h_2;
0x00008ee8 str r4, [r3, 0x10] | *((r3 + 0x10)) = r4;
0x00008eea movs r4, 0 | r4 = 0;
0x00008eec str r3, [r2] | *(r2) = r3;
0x00008eee ldr r3, [sp, 8] | r3 = var_8h;
0x00008ef0 str.w r2, [sl, 0x28] | __asm ("str.w r2, [sl, 0x28]");
0x00008ef4 str.w sl, [r3] | __asm ("str.w sl, [r3]");
0x00008ef6 adr r0, 0 | r0 = 0;
| do {
| label_4:
0x00008ef8 ldr r0, [sp, 4] | r0 = var_4h;
0x00008efa blx 0x5c3c | fcn_00005c3c ();
0x00008efe ldr r0, [sp, 0xc] | r0 = var_ch;
0x00008f00 blx 0x6020 | fcn_00006020 ();
0x00008f04 mov r0, fp | r0 = fp;
0x00008f06 blx 0x66e0 | fcn_000066e0 ();
0x00008f0a b 0x8f18 | goto label_59;
| label_28:
0x00008f0c movs r2, 0 | r2 = 0;
0x00008f0e movs r1, 7 | r1 = 7;
0x00008f10 mov r0, r5 | r0 = r5;
0x00008f12 blx 0x67f4 | fcn_000067f4 ();
| label_2:
0x00008f16 movs r4, 0xc | r4 = 0xc;
| label_59:
0x00008f18 ldr r2, [pc, 0x36c] |
0x00008f1a ldr r3, [pc, 0x26c] | r3 = *(0x918a);
0x00008f1c add r2, pc | r2 = 0x121a8;
0x00008f1e ldr r3, [r2, r3] | r3 = *(0x121a8);
0x00008f20 ldr r2, [r3] | r2 = *(0x121a8);
0x00008f22 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00008f24 eors r2, r3 | r2 ^= r3;
0x00008f26 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00008f2a bne.w 0x917e | goto label_60;
| }
0x00008f2e mov r0, r4 | r0 = r4;
0x00008f30 add sp, 0x34 |
0x00008f32 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_29:
0x00008f36 blx 0x6890 | r0 = fcn_00006890 ();
0x00008f3a cmp r0, 0xd |
| if (r0 == 0xd) {
0x00008f3c beq.w 0x913e | goto label_61;
| }
| label_30:
0x00008f40 movs r2, 0 | r2 = 0;
0x00008f42 movs r1, 0xf | r1 = 0xf;
0x00008f44 mov r0, r5 | r0 = r5;
0x00008f46 blx 0x67f4 | fcn_000067f4 ();
| label_25:
0x00008f4a mov.w fp, 0 |
0x00008f4e movs r4, 0xc | r4 = 0xc;
0x00008f50 str.w fp, [sp, 0xc] | __asm ("str.w fp, [var_ch]");
0x00008f54 b 0x8ef8 |
| } while (1);
| label_33:
0x00008f56 strb r6, [r0] | *(r0) = r6;
0x00008f58 b 0x8a58 | goto label_0;
| label_58:
0x00008f5a mov r0, r4 | r0 = r4;
0x00008f5c blx 0x641c | fcn_0000641c ();
0x00008f60 ldr r3, [sp, 0x10] | r3 = var_10h_2;
0x00008f62 add r2, sp, 0x24 | r2 += var_24h;
0x00008f64 add r1, sp, 0x20 | r1 += var_20h;
0x00008f66 blx 0x5c54 | fcn_00005c54 ();
0x00008f6a ldr r0, [sp, 0x24] | r0 = var_24h;
0x00008f6c blx 0x59dc | r0 = BN_bn2dec ();
0x00008f70 mov r6, r0 | r6 = r0;
0x00008f72 mov r0, r5 | r0 = r5;
0x00008f74 cmp r6, 0 |
| if (r6 == 0) {
0x00008f76 beq.w 0x9166 | goto label_62;
| }
0x00008f7a mov r1, r6 | r1 = r6;
0x00008f7c blx 0x6818 | fcn_00006818 ();
0x00008f80 ldr r1, [pc, 0x308] |
0x00008f82 mov r4, r0 | r4 = r0;
0x00008f84 movw r2, 0x2f9 | r2 = 0x2f9;
0x00008f88 mov r0, r6 | r0 = r6;
0x00008f8a add r1, pc | r1 = 0x1221a;
0x00008f8c blx 0x5fb4 | fcn_00005fb4 ();
0x00008f90 b 0x8ee4 | goto label_1;
| label_27:
0x00008f92 mov r2, r0 | r2 = r0;
0x00008f94 movs r1, 0xd | r1 = 0xd;
0x00008f96 mov r0, r5 | r0 = r5;
0x00008f98 blx 0x67f4 | fcn_000067f4 ();
0x00008f9c b 0x8f16 | goto label_2;
| label_57:
0x00008f9e ldr r1, [pc, 0x2f0] |
0x00008fa0 mov r0, r5 | r0 = r5;
0x00008fa2 add r1, pc | r1 = 0x12238;
0x00008fa4 blx 0x6818 | fcn_00006818 ();
0x00008fa8 b 0x8ec4 | goto label_3;
| label_31:
0x00008faa mov r2, r0 | r2 = r0;
0x00008fac movs r1, 0xf | r1 = 0xf;
0x00008fae mov r0, r5 | r0 = r5;
0x00008fb0 movs r4, 0xc | r4 = 0xc;
0x00008fb2 blx 0x67f4 | fcn_000067f4 ();
0x00008fb6 b 0x8ef8 | goto label_4;
| label_51:
0x00008fb8 mov r0, r6 | r0 = r6;
0x00008fba blx 0x5a48 | r0 = EVP_PKEY_get0_EC_KEY ();
0x00008fbe mov r6, r0 | r6 = r0;
0x00008fc0 blx 0x68a8 | r0 = fcn_000068a8 ();
0x00008fc4 mov r1, r0 | r1 = r0;
0x00008fc6 mov r0, r6 | r0 = r6;
0x00008fc8 mov r6, r1 | r6 = r1;
0x00008fca blx 0x6308 | fcn_00006308 ();
0x00008fce movs r3, 0 | r3 = 0;
0x00008fd0 mov r1, r6 | r1 = r6;
0x00008fd2 movs r2, 4 | r2 = 4;
0x00008fd4 blx 0x5bb0 | r0 = EC_POINT_point2hex ();
0x00008fd8 mov sb, r0 | sb = r0;
0x00008fda add r3, sp, 0x28 | r3 += var_28h;
0x00008fdc str r3, [sp, 0x10] | var_10h_2 = r3;
| label_24:
0x00008fde cmp.w sb, 0 |
| if (sb == 0) {
0x00008fe2 beq.w 0x8e06 | goto label_5;
| }
0x00008fe6 ldrb.w r2, [sb] | r2 = *(sb);
0x00008fea cmp r2, 0x37 |
| if (r2 > 0x37) {
0x00008fec bhi.w 0x9156 | goto label_63;
| }
| label_26:
0x00008ff0 mov r6, sb | r6 = sb;
0x00008ff2 movs r7, 0 | r7 = 0;
0x00008ff4 mov.w r8, 0x20 | r8 = 0x20;
| if (r2 != 0) {
0x00008ff8 cbnz r2, 0x9016 | goto label_8;
| }
0x00008ffa b 0x906c | goto label_64;
| do {
0x00008ffc ldr r1, [r4] | r1 = *(r4);
0x00008ffe str r0, [r4, 4] | *((r4 + 4)) = r0;
0x00009000 strb r2, [r1, r3] | *((r1 + r3)) = r2;
0x00009002 ldrd r2, r3, [r4] | __asm ("ldrd r2, r3, [r4]");
0x00009006 strb r7, [r2, r3] | *((r2 + r3)) = r7;
0x00009008 ldrb r2, [r6, 1] | r2 = *((r6 + 1));
| if (r2 != 0) {
0x0000900a cbnz r2, 0x9030 | goto label_65;
| }
| label_6:
0x0000900c ldrb r3, [r6, 2] | r3 = *((r6 + 2));
| if (r3 != 0) {
0x0000900e cbnz r3, 0x904c | goto label_66;
| }
| label_7:
0x00009010 ldrb r2, [r6, 2]! | r2 = *((r6 += 2));
| if (r2 == 0) {
0x00009014 cbz r2, 0x906c | goto label_64;
| }
| label_8:
0x00009016 ldrd r3, r1, [r4, 4] | __asm ("ldrd r3, r1, [r4, 4]");
0x0000901a adds r0, r3, 1 | r0 = r3 + 1;
0x0000901c cmp r0, r1 |
0x0000901e blo 0x8ffc |
| } while (r0 <= r1);
0x00009020 mov.w r1, -1 | r1 = -1;
0x00009024 mov r0, r4 | r0 = r4;
0x00009026 blx 0x653c | fcn_0000653c ();
0x0000902a ldrb r2, [r6, 1] | r2 = *((r6 + 1));
0x0000902c cmp r2, 0 |
| if (r2 == 0) {
0x0000902e beq 0x900c | goto label_6;
| }
| label_65:
0x00009030 ldrd r3, r1, [r4, 4] | __asm ("ldrd r3, r1, [r4, 4]");
0x00009034 adds r0, r3, 1 | r0 = r3 + 1;
0x00009036 cmp r0, r1 |
| if (r0 >= r1) {
0x00009038 bhs 0x9090 | goto label_67;
| }
0x0000903a ldr r1, [r4] | r1 = *(r4);
0x0000903c str r0, [r4, 4] | *((r4 + 4)) = r0;
0x0000903e strb r2, [r1, r3] | *((r1 + r3)) = r2;
0x00009040 ldrd r2, r3, [r4] | __asm ("ldrd r2, r3, [r4]");
0x00009044 strb r7, [r2, r3] | *((r2 + r3)) = r7;
0x00009046 ldrb r3, [r6, 2] | r3 = *((r6 + 2));
0x00009048 cmp r3, 0 |
| if (r3 == 0) {
0x0000904a beq 0x9010 | goto label_7;
| }
| label_66:
0x0000904c ldrd r3, r1, [r4, 4] | __asm ("ldrd r3, r1, [r4, 4]");
0x00009050 adds r2, r3, 1 | r2 = r3 + 1;
0x00009052 cmp r2, r1 |
| if (r2 >= r1) {
0x00009054 bhs 0x9082 | goto label_68;
| }
0x00009056 str r2, [r4, 4] | *((r4 + 4)) = r2;
0x00009058 ldr r2, [r4] | r2 = *(r4);
0x0000905a strb.w r8, [r2, r3] | *((r2 + r3)) = r8;
0x0000905e ldrd r2, r3, [r4] | __asm ("ldrd r2, r3, [r4]");
0x00009062 strb r7, [r2, r3] | *((r2 + r3)) = r7;
0x00009064 ldrb r2, [r6, 2]! | r2 = *((r6 += 2));
0x00009068 cmp r2, 0 |
| if (r2 != 0) {
0x0000906a bne 0x9016 | goto label_8;
| }
| label_64:
0x0000906c mov r0, r4 | r0 = r4;
0x0000906e blx 0x5e34 | fcn_00005e34 ();
0x00009072 ldr r1, [pc, 0x220] |
0x00009074 mov r0, sb | r0 = sb;
0x00009076 mov.w r2, 0x284 | r2 = 0x284;
0x0000907a add r1, pc | r1 = 0x12314;
0x0000907c blx 0x5fb4 | fcn_00005fb4 ();
0x00009080 b 0x8e06 | goto label_5;
| label_68:
0x00009082 movs r2, 0x20 | r2 = 0x20;
0x00009084 mov.w r1, -1 | r1 = -1;
0x00009088 mov r0, r4 | r0 = r4;
0x0000908a blx 0x653c | fcn_0000653c ();
0x0000908e b 0x9010 | goto label_7;
| label_67:
0x00009090 mov.w r1, -1 | r1 = -1;
0x00009094 mov r0, r4 | r0 = r4;
0x00009096 blx 0x653c | fcn_0000653c ();
0x0000909a b 0x900c | goto label_6;
| label_32:
0x0000909c ldr r1, [pc, 0x1f8] |
0x0000909e mov r0, r5 | r0 = r5;
0x000090a0 mov r4, sb | r4 = sb;
0x000090a2 add r1, pc | r1 = 0x1233e;
0x000090a4 blx 0x6818 | r0 = fcn_00006818 ();
0x000090a8 mov r8, r0 | r8 = r0;
0x000090aa b 0x8a58 | goto label_0;
| label_36:
0x000090ac ldr r2, [pc, 0x1ec] |
0x000090ae add r2, pc | r2 = 0x1234e;
0x000090b0 b 0x8b4a | goto label_9;
| label_47:
0x000090b2 ldr r2, [pc, 0x1ec] |
0x000090b4 add r2, pc | r2 = 0x1235a;
0x000090b6 b 0x8d1c | goto label_10;
| label_50:
0x000090b8 ldr r2, [pc, 0x1e8] |
0x000090ba add r2, pc | r2 = 0x12362;
0x000090bc b 0x8d64 | goto label_11;
| label_37:
0x000090be ldr r2, [pc, 0x1e8] |
0x000090c0 add r2, pc | r2 = 0x1236e;
0x000090c2 b 0x8b6e | goto label_12;
| label_40:
0x000090c4 ldr r2, [pc, 0x1e4] |
0x000090c6 add r2, pc | r2 = 0x12376;
0x000090c8 b 0x8bda | goto label_13;
| label_39:
0x000090ca ldr r2, [pc, 0x1e4] |
0x000090cc add r2, pc | r2 = 0x12382;
0x000090ce b 0x8bb6 | goto label_14;
| label_38:
0x000090d0 ldr r2, [pc, 0x1e0] |
0x000090d2 add r2, pc | r2 = 0x1238a;
0x000090d4 b 0x8b92 | goto label_15;
| label_35:
0x000090d6 ldr r2, [pc, 0x1e0] |
0x000090d8 add r2, pc | r2 = 0x12396;
0x000090da b 0x8b26 | goto label_16;
| label_34:
0x000090dc ldr r2, [pc, 0x1dc] |
0x000090de add r2, pc | r2 = 0x1239e;
0x000090e0 b 0x8b02 | goto label_17;
| label_44:
0x000090e2 ldr r2, [pc, 0x1dc] |
0x000090e4 add r2, pc | r2 = 0x123aa;
0x000090e6 b 0x8cb0 | goto label_18;
| label_43:
0x000090e8 ldr r2, [pc, 0x1d8] |
0x000090ea add r2, pc | r2 = 0x123b2;
0x000090ec b 0x8c8c | goto label_19;
| label_48:
0x000090ee ldr r2, [pc, 0x1d8] |
0x000090f0 add r2, pc | r2 = 0x123be;
0x000090f2 b 0x8d40 | goto label_20;
| label_45:
0x000090f4 ldr r2, [pc, 0x1d4] |
0x000090f6 add r2, pc | r2 = 0x123c6;
0x000090f8 b 0x8cd4 | goto label_21;
| label_46:
0x000090fa ldr r2, [pc, 0x1d4] |
0x000090fc add r2, pc | r2 = 0x123d2;
0x000090fe b 0x8cf8 | goto label_22;
| label_42:
0x00009100 ldr r2, [pc, 0x1d0] |
0x00009102 add r2, pc | r2 = 0x123da;
0x00009104 b 0x8bfe | goto label_23;
| label_52:
0x00009106 mov r0, r6 | r0 = r6;
0x00009108 blx 0x641c | fcn_0000641c ();
0x0000910a invalid |
0x0000910e add r2, sp, 0x24 | r2 += var_24h;
0x00009110 add r1, sp, 0x20 | r1 += var_20h;
0x00009112 str r3, [sp, 0x10] | var_10h_2 = r3;
0x00009114 blx 0x5c54 | fcn_00005c54 ();
0x00009116 ldc p8, c9, [lr, 0x20] | __asm ("ldc p8, c9, [lr, 0x20]");
0x0000911a blx 0x5cfc | r0 = fcn_00005cfc ();
0x0000911e mov sb, r0 | sb = r0;
0x00009120 b 0x8fde | goto label_24;
| label_53:
0x00009122 mov r0, r6 | r0 = r6;
0x00009124 blx 0x5b98 | EVP_PKEY_get0_DSA ();
0x00009128 add r3, sp, 0x28 | r3 += var_28h;
0x0000912a add r1, sp, 0x24 | r1 += var_24h;
0x0000912c mov r2, r3 | r2 = r3;
0x0000912e str r3, [sp, 0x10] | var_10h_2 = r3;
0x00009130 blx 0x5f54 | fcn_00005f54 ();
0x00009134 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00009136 blx 0x5cfc | r0 = fcn_00005cfc ();
0x0000913a mov sb, r0 | sb = r0;
0x0000913c b 0x8fde | goto label_24;
| label_61:
0x0000913e ldr r2, [sp, 4] | r2 = var_4h;
0x00009140 movs r1, 0x33 | r1 = 0x33;
0x00009142 mov r0, r5 | r0 = r5;
0x00009144 blx 0x6164 | fcn_00006164 ();
0x00009148 b 0x8f4a | goto label_25;
| label_55:
0x0000914a ldr r1, [pc, 0x18c] |
0x0000914c mov r0, r5 | r0 = r5;
0x0000914e add r1, pc | r1 = 0x1242c;
0x00009150 blx 0x6818 | fcn_00006818 ();
0x00009154 b 0x8ec4 | goto label_3;
| label_63:
0x00009156 ldr r1, [pc, 0x184] |
0x00009158 mov r0, r4 | r0 = r4;
0x0000915a add r1, pc | r1 = 0x1243c;
0x0000915c blx 0x6068 | fcn_00006068 ();
0x00009160 ldrb.w r2, [sb] | r2 = *(sb);
0x00009164 b 0x8ff0 | goto label_26;
| label_62:
0x00009166 ldr r1, [pc, 0x178] |
0x00009168 add r1, pc | r1 = 0x1244e;
0x0000916a blx 0x6818 | r0 = fcn_00006818 ();
0x0000916e mov r4, r0 | r4 = r0;
0x00009170 b 0x8ee4 | goto label_1;
| label_56:
0x00009172 ldr r1, [pc, 0x170] |
0x00009174 mov r0, r5 | r0 = r5;
0x00009176 add r1, pc | r1 = "tds:GetEndpointReference";
0x00009178 blx 0x6818 | fcn_00006818 ();
0x0000917c b 0x8ec4 | goto label_3;
| label_60:
0x0000917e blx 0x5cb4 | fcn_00005cb4 ();
0x00009182 nop |
0x00009184 stm r1!, {r2, r3, r4, r5} | *(r1!) = r2;
| *((r1! + 4)) = r3;
| *((r1! + 8)) = r4;
| *((r1! + 12)) = r5;
0x00009186 movs r0, r0 |
0x00009188 lsls r4, r2, 0x16 | r4 = r2 << 0x16;
0x0000918a movs r0, r0 |
0x0000918c str r5, [sp, 0x3d0] | *(arg_3d0h) = r5;
0x0000918e movs r0, r0 |
0x00009190 str r5, [sp, 0x178] | *(arg_178h) = r5;
0x00009192 movs r0, r0 |
0x00009194 str r4, [sp, 0x238] | *(arg_238h) = r4;
0x00009196 movs r0, r0 |
0x00009198 str r1, [sp, 0x210] | *(arg_210h) = r1;
0x0000919a movs r0, r0 |
0x0000919c str r4, [sp, 0xd0] | *(arg_d0h) = r4;
0x0000919e movs r0, r0 |
0x000091a0 str r4, [sp, 0x140] | *(arg_140h) = r4;
0x000091a2 movs r0, r0 |
0x000091a4 adr r2, 0x388 | r2 = 0x388;
0x000091a6 movs r0, r0 |
0x000091a8 str r4, [sp, 0x40] | var_40h = r4;
0x000091aa movs r0, r0 |
0x000091ac str r4, [sp, 0x100] | *(arg_100h) = r4;
0x000091ae movs r0, r0 |
0x000091b0 adr r2, 0x2f8 | r2 = 0x2f8;
0x000091b2 movs r0, r0 |
0x000091b4 str r3, [sp, 0x3b0] | *(arg_3b0h) = r3;
0x000091b6 movs r0, r0 |
0x000091b8 str r4, [sp, 0xb0] | *(arg_b0h) = r4;
0x000091ba movs r0, r0 |
0x000091bc adr r2, 0x268 | r2 = 0x268;
0x000091be movs r0, r0 |
0x000091c0 str r3, [sp, 0x320] | *(arg_320h) = r3;
0x000091c2 movs r0, r0 |
0x000091c4 str r4, [sp, 0x60] | *(arg_60h) = r4;
0x000091c6 movs r0, r0 |
0x000091c8 adr r2, 0x1d8 | r2 = 0x1d8;
0x000091ca movs r0, r0 |
0x000091cc str r3, [sp, 0x290] | *(arg_290h) = r3;
0x000091ce movs r0, r0 |
0x000091d0 str r4, [sp, 0x20] | var_20h = r4;
0x000091d2 movs r0, r0 |
0x000091d4 adr r2, 0x148 | r2 = 0x148;
0x000091d6 movs r0, r0 |
0x000091d8 str r3, [sp, 0x200] | *(arg_200h) = r3;
0x000091da movs r0, r0 |
0x000091dc str r3, [sp, 0x3d0] | *(arg_3d0h) = r3;
0x000091de movs r0, r0 |
0x000091e0 adr r2, 0xb8 | r2 = 0xb8;
0x000091e2 movs r0, r0 |
0x000091e4 str r3, [sp, 0x170] | *(arg_170h) = r3;
0x000091e6 movs r0, r0 |
0x000091e8 str r3, [sp, 0x370] | *(arg_370h) = r3;
0x000091ea movs r0, r0 |
0x000091ec adr r2, 0x28 | r2 = 0x28;
0x000091ee movs r0, r0 |
0x000091f0 str r3, [sp, 0xe0] | *(arg_e0h) = r3;
0x000091f2 movs r0, r0 |
0x000091f4 str r3, [sp, 0x300] | *(arg_300h) = r3;
0x000091f6 movs r0, r0 |
0x000091f8 adr r1, 0x398 | r1 = 0x398;
0x000091fa movs r0, r0 |
0x000091fc str r3, [sp, 0x50] | var_50h = r3;
0x000091fe movs r0, r0 |
0x00009200 str r3, [sp, 0x2b0] | *(arg_2b0h) = r3;
0x00009202 movs r0, r0 |
0x00009204 adr r1, 0x308 | r1 = fcn.00000004;
0x00009206 movs r0, r0 |
0x00009208 str r0, [sp, 0x20] | var_20h = r0;
0x0000920a movs r0, r0 |
0x0000920c str r2, [sp, 0x2a8] | *(arg_2a8h) = r2;
0x0000920e movs r0, r0 |
0x00009210 str r3, [sp, 0x148] | *(arg_148h) = r3;
0x00009212 movs r0, r0 |
0x00009214 adr r1, 0x160 | r1 = 0x160;
0x00009216 movs r0, r0 |
0x00009218 str r2, [sp, 0x218] | *(arg_218h) = r2;
0x0000921a movs r0, r0 |
0x0000921c str r3, [sp, 0xe8] | *(arg_e8h) = r3;
0x0000921e movs r0, r0 |
0x00009220 adr r1, 0xd0 | r1 = 0xd0;
0x00009222 movs r0, r0 |
0x00009224 str r2, [sp, 0x188] | *(arg_188h) = r2;
0x00009226 movs r0, r0 |
0x00009228 str r3, [sp, 0x88] | *(arg_88h) = r3;
0x0000922a movs r0, r0 |
0x0000922c adr r1, 0x40 | r1 = 0x40;
0x0000922e movs r0, r0 |
0x00009230 str r2, [sp, 0xf8] | *(arg_f8h) = r2;
0x00009232 movs r0, r0 |
0x00009234 str r3, [sp, 0x38] | var_38h = r3;
0x00009236 movs r0, r0 |
0x00009238 adr r0, 0x3b0 | r0 = 0x3b0;
0x0000923a movs r0, r0 |
0x0000923c str r2, [sp, 0x68] | *(arg_68h) = r2;
0x0000923e movs r0, r0 |
0x00009240 str r2, [sp, 0x3d8] | *(arg_3d8h) = r2;
0x00009242 movs r0, r0 |
0x00009244 adr r0, 0x320 | r0 = 0x320;
0x00009246 movs r0, r0 |
0x00009248 str r1, [sp, 0x3d8] | *(arg_3d8h) = r1;
0x0000924a movs r0, r0 |
0x0000924c str r2, [sp, 0x3a8] | *(arg_3a8h) = r2;
0x0000924e movs r0, r0 |
0x00009250 adr r0, 0x290 | r0 = 0x290;
0x00009252 movs r0, r0 |
0x00009254 str r1, [sp, 0x348] | *(arg_348h) = r1;
0x00009256 movs r0, r0 |
0x00009258 str r2, [sp, 0x348] | *(arg_348h) = r2;
0x0000925a movs r0, r0 |
0x0000925c adr r0, 0x200 | r0 = 0x200;
0x0000925e movs r0, r0 |
0x00009260 str r1, [sp, 0x2b8] | *(arg_2b8h) = r1;
0x00009262 movs r0, r0 |
0x00009264 str r2, [sp, 0x2f8] | *(arg_2f8h) = r2;
0x00009266 movs r0, r0 |
0x00009268 adr r0, 0x170 | r0 = 0x170;
0x0000926a movs r0, r0 |
0x0000926c ldrh r2, [r3, 0x32] | r2 = *((r3 + 0x32));
0x0000926e movs r0, r0 |
0x00009270 ldrh r4, [r2, 0x30] | r4 = *((r2 + 0x30));
0x00009272 movs r0, r0 |
0x00009274 ldrh r6, [r4, 0x2e] | r6 = *((r4 + 0x2e));
0x00009276 movs r0, r0 |
0x00009278 ldrh r0, [r3, 0x32] | r0 = *((r3 + 0x32));
0x0000927a movs r0, r0 |
0x0000927c str r1, [sp, 0x3e8] | *(arg_3e8h) = r1;
0x0000927e movs r0, r0 |
0x00009280 ldrh r6, [r6, 0x2a] | r6 = *((r6 + 0x2a));
0x00009282 movs r0, r0 |
0x00009284 ldrh r0, [r3, 0x2a] | r0 = *((r3 + 0x2a));
0x00009286 movs r0, r0 |
| if (r4 == 0) {
0x00009288 cbnz r4, 0x92da |
0x0000928a movs r0, r0 |
0x0000928c ldrh r2, [r5, 0x3a] | r2 = *((r5 + 0x3a));
0x0000928e movs r0, r0 |
0x00009290 str r0, [sp, 0x368] | *(arg_368h) = r0;
0x00009292 movs r0, r0 |
0x00009294 ldrh r2, [r7, 0x32] | r2 = *((r7 + 0x32));
0x00009296 movs r0, r0 |
0x00009298 ldrh r2, [r2, 0x1c] | r2 = *((r2 + 0x1c));
0x0000929a movs r0, r0 |
0x0000929c ldrh r6, [r0, 0x1c] | r6 = *((r0 + 0x1c));
0x0000929e movs r0, r0 |
0x000092a0 ldrh r0, [r0, 0x1c] | r0 = *((r0 + 0x1c));
0x000092a2 movs r0, r0 |
0x000092a4 ldrh r2, [r7, 0x1a] | r2 = *((r7 + 0x1a));
0x000092a6 movs r0, r0 |
0x000092a8 ldrh r4, [r6, 0x1a] | r4 = *((r6 + 0x1a));
0x000092aa movs r0, r0 |
0x000092ac ldrh r6, [r5, 0x1a] | r6 = *((r5 + 0x1a));
0x000092ae movs r0, r0 |
0x000092b0 ldrh r0, [r5, 0x1a] | r0 = *((r5 + 0x1a));
0x000092b2 movs r0, r0 |
0x000092b4 ldrh r2, [r4, 0x1a] | r2 = *((r4 + 0x1a));
0x000092b6 movs r0, r0 |
0x000092b8 ldrh r4, [r3, 0x1a] | r4 = *((r3 + 0x1a));
0x000092ba movs r0, r0 |
0x000092bc ldrh r6, [r2, 0x1a] | r6 = *((r2 + 0x1a));
0x000092be movs r0, r0 |
0x000092c0 ldrh r0, [r2, 0x1a] | r0 = *((r2 + 0x1a));
0x000092c2 movs r0, r0 |
0x000092c4 ldrh r2, [r1, 0x1a] | r2 = *((r1 + 0x1a));
0x000092c6 movs r0, r0 |
0x000092c8 ldrh r4, [r0, 0x1a] | r4 = *((r0 + 0x1a));
0x000092ca movs r0, r0 |
0x000092cc ldrh r6, [r7, 0x18] | r6 = *((r7 + 0x18));
0x000092ce movs r0, r0 |
0x000092d0 ldrh r0, [r7, 0x18] | r0 = *((r7 + 0x18));
0x000092d2 movs r0, r0 |
0x000092d4 ldrh r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x000092d6 movs r0, r0 |
0x000092d8 ldrh r6, [r1, 0x38] | r6 = *((r1 + 0x38));
| }
0x000092da movs r0, r0 |
0x000092dc ldrh r6, [r6, 0x36] | r6 = *((r6 + 0x36));
0x000092de movs r0, r0 |
0x000092e0 ldrh r4, [r1, 0x16] | r4 = *((r1 + 0x16));
0x000092e2 movs r0, r0 |
0x000092e4 ldrh r6, [r6, 0x36] | r6 = *((r6 + 0x36));
0x000092e6 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libimpl_wsd_tds.so @ 0xd104 */
| #include <stdint.h>
|
; (fcn) sym.__tds__RemoveIPAddressFilter () | void tds_RemoveIPAddressFilter (int16_t arg1, int16_t arg2) {
| int16_t var_0h_2;
| int32_t var_0h;
| int16_t var_8h;
| int32_t var_8h_2;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x0000d104 ldr r2, [pc, 0x34c] |
0x0000d106 ldr r3, [pc, 0x350] | r3 = *(0xd45a);
0x0000d108 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000d10c mov r4, r1 | r4 = r1;
0x0000d10e add r2, pc | r2 = 0x1a566;
0x0000d110 ldr r1, [pc, 0x348] |
0x0000d112 sub sp, 0x1c |
0x0000d114 movs r5, 0 | r5 = 0;
0x0000d116 ldr r3, [r2, r3] |
0x0000d118 mov r8, r0 | r8 = r0;
0x0000d11a add r1, pc | r1 = 0x1a57a;
0x0000d11c ldr r3, [r3] | r3 = *(0x1a566);
0x0000d11e str r3, [sp, 0x14] | var_14h = r3;
0x0000d120 mov.w r3, 0 | r3 = 0;
0x0000d124 str r5, [sp, 0x10] | var_10h = r5;
0x0000d126 blx 0x59d0 | r0 = wssecurity_uh_allowed_access ();
0x0000d12a cmp r0, 0 |
| if (r0 == 0) {
0x0000d12c beq.w 0xd398 | goto label_12;
| }
0x0000d130 cmp r4, 0 |
| if (r4 == 0) {
0x0000d132 beq.w 0xd38c | goto label_13;
| }
0x0000d136 ldr r2, [r4] | r2 = *(r4);
0x0000d138 cmp r2, 0 |
| if (r2 == 0) {
0x0000d13a beq.w 0xd38c | goto label_13;
| }
0x0000d13e ldr.w fp, [r2, 4] | fp = *((r2 + 4));
0x0000d142 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x0000d144 cmp.w fp, 0 |
0x0000d148 it le |
| if (fp <= 0) {
0x0000d14a cmple r3, 0 | __asm ("cmple r3, 0");
| }
| if (fp <= 0) {
0x0000d14c ble.w 0xd358 | goto label_14;
| }
0x0000d150 ldr.w sl, [r2, 8] | sl = *((r2 + 8));
0x0000d154 cmp.w fp, 0 |
0x0000d158 ldr.w sb, [r2, 0x10] | sb = *((r2 + 0x10));
0x0000d15c ite le |
| if (fp > 0) {
0x0000d15e movle r2, 0 | r2 = 0;
| }
| if (fp <= 0) {
0x0000d160 movgt r2, 1 | r2 = 1;
| }
0x0000d162 cmp.w sl, 0 |
0x0000d166 it ne |
| if (sl == 0) {
0x0000d168 movne r2, 0 | r2 = 0;
| }
0x0000d16a cmp r2, 0 |
| if (r2 != 0) {
0x0000d16c bne.w 0xd374 | goto label_15;
| }
0x0000d170 cmp r3, 0 |
0x0000d172 ite le |
| if (r3 > 0) {
0x0000d174 movle r5, 0 | r5 = 0;
| }
| if (r3 <= 0) {
0x0000d176 movgt r5, 1 | r5 = 1;
| }
0x0000d178 cmp.w sb, 0 |
0x0000d17c it ne |
| if (sb == 0) {
0x0000d17e movne r5, 0 | r5 = 0;
| }
0x0000d180 cmp r5, 0 |
| if (r5 != 0) {
0x0000d182 bne.w 0xd374 | goto label_15;
| }
0x0000d186 str r3, [sp] | *(sp) = r3;
0x0000d188 blx 0x64dc | fcn_000064dc ();
0x0000d18c ldr r3, [sp] | r3 = *(sp);
0x0000d18e mov r4, r0 | r4 = r0;
0x0000d190 cmp r0, 0 |
| if (r0 != 0) {
0x0000d192 bne.w 0xd3a4 | goto label_16;
| }
0x0000d196 add r0, sp, 0x10 | r0 += var_10h;
0x0000d198 str r3, [sp] | *(sp) = r3;
0x0000d19a blx 0x60c8 | fcn_000060c8 ();
0x0000d19e ldr r3, [sp] | r3 = *(sp);
0x0000d1a0 cmp r0, 0 |
| if (r0 != 0) {
0x0000d1a2 bne.w 0xd33a | goto label_17;
| }
0x0000d1a6 strd r0, r3, [sp] | __asm ("strd r0, r3, [sp]");
0x0000d1aa ldr r0, [sp, 0x10] | r0 = var_10h;
0x0000d1ac blx 0x680c | r0 = fcn_0000680c ();
0x0000d1b0 mov ip, r0 |
0x0000d1b2 cmp r0, 0 |
| if (r0 == 0) {
0x0000d1b4 beq.w 0xd3ba | goto label_18;
| }
0x0000d1b8 cmp.w fp, 0 |
0x0000d1bc ldrd r2, r3, [sp] | __asm ("ldrd r2, r3, [sp]");
| if (fp <= 0) {
0x0000d1c0 ble 0xd258 | goto label_19;
| }
0x0000d1c2 ldr r4, [pc, 0x29c] |
0x0000d1c4 mov r6, sl | r6 = sl;
0x0000d1c6 movs r7, 0 | r7 = 0;
0x0000d1c8 strd r2, sb, [sp] | __asm ("strd r2, sb, [sp]");
0x0000d1cc strd r3, r0, [sp, 8] | __asm ("strd r3, r0, [var_8h]");
0x0000d1d0 add r4, pc | r4 = 0x1a636;
| label_1:
0x0000d1d2 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x0000d1d4 mov r0, r4 | r0 = r4;
0x0000d1d6 ldr.w r1, [sl, r7, lsl 3] | offset_0 = r7 << 3;
| r1 = *((sl + offset_0));
0x0000d1da blx 0x5b50 | r0 = g_strdup_printf ()
0x0000d1de mov r5, r0 | r5 = r0;
0x0000d1e0 blx 0x6920 | r0 = fcn_00006920 ();
0x0000d1e4 cmp r0, 1 |
| if (r0 != 1) {
0x0000d1e6 bne.w 0xd3d2 | goto label_20;
| }
0x0000d1ea ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000d1ec ldr r0, [r3] | r0 = *(r3);
0x0000d1ee mov sb, r0 | sb = r0;
| if (r0 == 0) {
0x0000d1f0 cbz r0, 0xd236 | goto label_5;
| }
0x0000d1f2 mov.w sb, 0 | sb = 0;
0x0000d1f6 b 0xd202 |
| while (r2 != 0x20) {
0x0000d1f8 add.w sb, sb, 4 | sb += 4;
0x0000d1fc ldr.w r0, [r3, sb] | r0 = *((r3 + sb));
| if (r0 == 0) {
0x0000d200 cbz r0, 0xd236 | goto label_5;
| }
| label_0:
0x0000d202 mov r1, r5 | r1 = r5;
0x0000d204 blx 0x6398 | r0 = fcn_00006398 ();
0x0000d208 cmp r0, 0 |
| if (r0 == 0) {
0x0000d20a beq.w 0xd382 | goto label_21;
| }
0x0000d20e ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x0000d210 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000d212 cmp r2, 0x20 |
0x0000d214 bne 0xd1f8 |
| }
0x0000d216 ldr.w r0, [r3, sb] | r0 = *((r3 + sb));
0x0000d21a ldr.w r1, [sl, r7, lsl 3] | offset_1 = r7 << 3;
| r1 = *((sl + offset_1));
0x0000d21e blx 0x6398 | r0 = fcn_00006398 ();
0x0000d222 cmp r0, 0 |
| if (r0 == 0) {
0x0000d224 beq.w 0xd382 | goto label_21;
| }
0x0000d228 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000d22a add.w sb, sb, 4 | sb += 4;
0x0000d22e ldr.w r0, [r3, sb] | r0 = *((r3 + sb));
0x0000d232 cmp r0, 0 |
| if (r0 != 0) {
0x0000d234 bne 0xd202 | goto label_0;
| }
| label_5:
0x0000d236 mov r0, r5 | r0 = r5;
0x0000d238 blx 0x5c3c | fcn_00005c3c ();
0x0000d23c ldr r2, [sp, 0x10] | r2 = var_10h;
0x0000d23e ldr.w r0, [r2, sb] | r0 = *((r2 + sb));
0x0000d242 cmp r0, 0 |
| if (r0 == 0) {
0x0000d244 beq.w 0xd3e4 | goto label_22;
| }
0x0000d248 adds r7, 1 | r7++;
0x0000d24a adds r6, 8 | r6 += 8;
0x0000d24c cmp fp, r7 |
| if (fp != r7) {
0x0000d24e bne 0xd1d2 | goto label_1;
| }
0x0000d250 ldrd r2, sb, [sp] | __asm ("ldrd r2, sb, [sp]");
0x0000d254 ldrd r3, ip, [sp, 8] | __asm ("ldrd r3, ip, [var_8h]");
| label_19:
0x0000d258 cmp r3, 0 |
| if (r3 <= 0) {
0x0000d25a ble 0xd2f4 | goto label_23;
| }
0x0000d25c ldr r7, [pc, 0x204] |
0x0000d25e mov r5, sb | r5 = sb;
0x0000d260 movs r6, 0 | r6 = 0;
0x0000d262 mov sl, r3 | sl = r3;
0x0000d264 strd r2, fp, [sp] | __asm ("strd r2, fp, [sp]");
0x0000d268 add r7, pc | r7 = 0x1a6d0;
0x0000d26a str.w ip, [sp, 8] | __asm ("str.w ip, [var_8h]");
| label_3:
0x0000d26e ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x0000d270 mov r0, r7 | r0 = r7;
0x0000d272 ldr.w r1, [sb, r6, lsl 3] | offset_2 = r6 << 3;
| r1 = *((sb + offset_2));
0x0000d276 blx 0x5b50 | r0 = g_strdup_printf ()
0x0000d27a mov r4, r0 | r4 = r0;
0x0000d27c blx 0x6920 | r0 = fcn_00006920 ();
0x0000d280 cmp r0, 2 |
| if (r0 != 2) {
0x0000d282 bne.w 0xd420 | goto label_24;
| }
0x0000d286 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000d288 ldr r0, [r3] | r0 = *(r3);
0x0000d28a mov fp, r0 |
| if (r0 == 0) {
0x0000d28c cbz r0, 0xd2d0 | goto label_7;
| }
0x0000d28e mov.w fp, 0 |
0x0000d292 b 0xd29e |
| while (r2 != 0x80) {
0x0000d294 add.w fp, fp, 4 |
0x0000d298 ldr.w r0, [r3, fp] | r0 = *((r3 + fp));
| if (r0 == 0) {
0x0000d29c cbz r0, 0xd2d0 | goto label_7;
| }
| label_2:
0x0000d29e mov r1, r4 | r1 = r4;
0x0000d2a0 blx 0x6398 | r0 = fcn_00006398 ();
0x0000d2a4 cmp r0, 0 |
| if (r0 == 0) {
0x0000d2a6 beq.w 0xd3b0 | goto label_25;
| }
0x0000d2aa ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x0000d2ac ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000d2ae cmp r2, 0x80 |
0x0000d2b0 bne 0xd294 |
| }
0x0000d2b2 ldr.w r0, [r3, fp] | r0 = *((r3 + fp));
0x0000d2b6 ldr.w r1, [sb, r6, lsl 3] | offset_3 = r6 << 3;
| r1 = *((sb + offset_3));
0x0000d2ba blx 0x6398 | r0 = fcn_00006398 ();
0x0000d2be cmp r0, 0 |
| if (r0 == 0) {
0x0000d2c0 beq 0xd3b0 | goto label_25;
| }
0x0000d2c2 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000d2c4 add.w fp, fp, 4 |
0x0000d2c8 ldr.w r0, [r3, fp] | r0 = *((r3 + fp));
0x0000d2cc cmp r0, 0 |
| if (r0 != 0) {
0x0000d2ce bne 0xd29e | goto label_2;
| }
| label_7:
0x0000d2d0 mov r0, r4 | r0 = r4;
0x0000d2d2 blx 0x5c3c | fcn_00005c3c ();
0x0000d2d6 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0000d2d8 ldr.w r0, [r2, fp] | r0 = *((r2 + fp));
0x0000d2dc cmp r0, 0 |
| if (r0 == 0) {
0x0000d2de beq.w 0xd432 | goto label_26;
| }
0x0000d2e2 adds r6, 1 | r6++;
0x0000d2e4 adds r5, 8 | r5 += 8;
0x0000d2e6 cmp sl, r6 |
| if (sl != r6) {
0x0000d2e8 bne 0xd26e | goto label_3;
| }
0x0000d2ea ldrd r2, fp, [sp] | __asm ("ldrd r2, fp, [sp]");
0x0000d2ee mov r3, sl | r3 = sl;
0x0000d2f0 ldr.w ip, [sp, 8] | ip = var_8h;
| label_23:
0x0000d2f4 add r3, fp | r3 += fp;
0x0000d2f6 str r2, [sp] | *(sp) = r2;
0x0000d2f8 rsb.w r3, r3, 1 | r3 = 1 - r3;
0x0000d2fc add r3, ip | r3 += ip;
0x0000d2fe lsls r0, r3, 2 | r0 = r3 << 2;
0x0000d300 blx 0x5b38 | r0 = g_malloc0 ();
0x0000d304 mov r4, r0 | r4 = r0;
0x0000d306 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0000d308 ldr r2, [sp] | r2 = *(sp);
0x0000d30a ldr r5, [r0] | r5 = *(r0);
0x0000d30c cmp r5, 0 |
| if (r5 == 0) {
0x0000d30e beq.w 0xd43e | goto label_27;
| }
0x0000d312 mov r3, r0 | r3 = r0;
0x0000d314 movs r6, 4 | r6 = 4;
0x0000d316 mov r0, r5 | r0 = r5;
0x0000d318 mov r5, r2 | r5 = r2;
0x0000d31a mov r2, r3 | r2 = r3;
0x0000d31c b 0xd32c |
| while (r3 != 0) {
0x0000d31e str.w r0, [r4, r5, lsl 2] | __asm ("str.w r0, [r4, r5, lsl 2]");
0x0000d322 adds r5, 1 | r5++;
| label_4:
0x0000d324 ldr r0, [r2, r6] | r0 = *((r2 + r6));
0x0000d326 adds r6, 4 | r6 += 4;
0x0000d328 cmp r0, 0 |
| if (r0 == 0) {
0x0000d32a beq 0xd3f0 | goto label_28;
| }
0x0000d32c ldrb r3, [r0] | r3 = *(r0);
0x0000d32e cmp r3, 0 |
0x0000d330 bne 0xd31e |
| }
0x0000d332 blx 0x5c3c | fcn_00005c3c ();
0x0000d336 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0000d338 b 0xd324 | goto label_4;
| label_17:
0x0000d33a mov r2, r4 | r2 = r4;
0x0000d33c movs r1, 0xf | r1 = 0xf;
0x0000d33e mov r0, r8 | r0 = r8;
0x0000d340 blx 0x67f4 | fcn_000067f4 ();
| label_9:
0x0000d344 movs r4, 0 | r4 = 0;
0x0000d346 movs r5, 0xc | r5 = 0xc;
| label_8:
0x0000d348 blx 0x6884 | fcn_00006884 ();
0x0000d34c ldr r0, [sp, 0x10] | r0 = var_10h;
0x0000d34e blx 0x693c | cert_prm_get_int ();
0x0000d352 mov r0, r4 | r0 = r4;
0x0000d354 blx 0x693c | cert_prm_get_int ();
| do {
| label_14:
0x0000d358 ldr r2, [pc, 0x10c] |
0x0000d35a ldr r3, [pc, 0xfc] | r3 = *(0xd45a);
0x0000d35c add r2, pc | r2 = 0x1a7c8;
0x0000d35e ldr r3, [r2, r3] | r3 = *(0x1a7c8);
0x0000d360 ldr r2, [r3] | r2 = *(0x1a7c8);
0x0000d362 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000d364 eors r2, r3 | r2 ^= r3;
0x0000d366 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000d36a bne 0xd44e | goto label_29;
| }
0x0000d36c mov r0, r5 | r0 = r5;
0x0000d36e add sp, 0x1c |
0x0000d370 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_15:
0x0000d374 movs r2, 0 | r2 = 0;
0x0000d376 movs r1, 7 | r1 = 7;
0x0000d378 mov r0, r8 | r0 = r8;
0x0000d37a blx 0x67f4 | fcn_000067f4 ();
| label_6:
0x0000d37e movs r5, 0xc | r5 = 0xc;
0x0000d380 b 0xd358 |
| } while (1);
| label_21:
0x0000d382 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0000d384 ldr.w r2, [r2, sb] | r2 = *((r2 + sb));
0x0000d388 strb r0, [r2] | *(r2) = r0;
0x0000d38a b 0xd236 | goto label_5;
| label_13:
0x0000d38c movs r2, 0 | r2 = 0;
0x0000d38e movs r1, 3 | r1 = 3;
0x0000d390 mov r0, r8 | r0 = r8;
0x0000d392 blx 0x67f4 | fcn_000067f4 ();
0x0000d396 b 0xd37e | goto label_6;
| label_12:
0x0000d398 mov r2, r0 | r2 = r0;
0x0000d39a movs r1, 0xd | r1 = 0xd;
0x0000d39c mov r0, r8 | r0 = r8;
0x0000d39e blx 0x67f4 | fcn_000067f4 ();
0x0000d3a2 b 0xd37e | goto label_6;
| label_16:
0x0000d3a4 mov r2, r5 | r2 = r5;
0x0000d3a6 movs r1, 0xf | r1 = 0xf;
0x0000d3a8 mov r0, r8 | r0 = r8;
0x0000d3aa blx 0x67f4 | fcn_000067f4 ();
0x0000d3ae b 0xd37e | goto label_6;
| label_25:
0x0000d3b0 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0000d3b2 ldr.w r2, [r2, fp] | r2 = *((r2 + fp));
0x0000d3b6 strb r0, [r2] | *(r2) = r0;
0x0000d3b8 b 0xd2d0 | goto label_7;
| label_18:
0x0000d3ba cmp.w fp, 0 |
0x0000d3be mov r2, r0 | r2 = r0;
0x0000d3c0 ite le |
| if (fp > 0) {
0x0000d3c2 movle r1, 0x19 | r1 = 0x19;
| }
| if (fp <= 0) {
0x0000d3c4 movgt r1, 0x17 | r1 = 0x17;
| }
0x0000d3c6 mov r0, r8 | r0 = r8;
0x0000d3c8 mov r4, ip | r4 = ip;
0x0000d3ca movs r5, 0xc | r5 = 0xc;
0x0000d3cc blx 0x6164 | fcn_00006164 ();
0x0000d3d0 b 0xd348 | goto label_8;
| label_20:
0x0000d3d2 mov r0, r8 | r0 = r8;
0x0000d3d4 movs r2, 0 | r2 = 0;
0x0000d3d6 movs r1, 0x16 | r1 = 0x16;
0x0000d3d8 blx 0x6164 | fcn_00006164 ();
0x0000d3dc mov r0, r5 | r0 = r5;
0x0000d3de blx 0x5c3c | fcn_00005c3c ();
0x0000d3e2 b 0xd344 | goto label_9;
| label_22:
0x0000d3e4 mov r2, r0 | r2 = r0;
0x0000d3e6 movs r1, 0x17 | r1 = 0x17;
0x0000d3e8 mov r0, r8 | r0 = r8;
0x0000d3ea blx 0x6164 | fcn_00006164 ();
0x0000d3ee b 0xd344 | goto label_9;
| label_28:
0x0000d3f0 mov r3, r2 | r3 = r2;
0x0000d3f2 mov r2, r5 | r2 = r5;
0x0000d3f4 mov r5, r0 | r5 = r0;
0x0000d3f6 mov r0, r3 | r0 = r3;
0x0000d3f8 str r2, [sp] | *(sp) = r2;
0x0000d3fa blx 0x5c3c | fcn_00005c3c ();
0x0000d3fe ldr r2, [sp] | r2 = *(sp);
0x0000d400 str r5, [sp, 0x10] | var_10h = r5;
| if (r2 == 0) {
0x0000d402 cbz r2, 0xd444 | goto label_30;
| }
| label_10:
0x0000d404 mov r1, r4 | r1 = r4;
0x0000d406 movs r0, 2 | r0 = 2;
0x0000d408 blx 0x5c60 | r0 = fcn_00005c60 ();
0x0000d40c mov r5, r0 | r5 = r0;
0x0000d40e cmp r0, 0 |
| if (r0 == 0) {
0x0000d410 beq 0xd348 | goto label_8;
| }
| label_11:
0x0000d412 movs r2, 0 | r2 = 0;
0x0000d414 movs r1, 0xf | r1 = 0xf;
0x0000d416 mov r0, r8 | r0 = r8;
0x0000d418 movs r5, 0xc | r5 = 0xc;
0x0000d41a blx 0x67f4 | fcn_000067f4 ();
0x0000d41e b 0xd348 | goto label_8;
| label_24:
0x0000d420 mov r0, r8 | r0 = r8;
0x0000d422 movs r2, 0 | r2 = 0;
0x0000d424 movs r1, 0x18 | r1 = 0x18;
0x0000d426 blx 0x6164 | fcn_00006164 ();
0x0000d42a mov r0, r4 | r0 = r4;
0x0000d42c blx 0x5c3c | fcn_00005c3c ();
0x0000d430 b 0xd344 | goto label_9;
| label_26:
0x0000d432 mov r2, r0 | r2 = r0;
0x0000d434 movs r1, 0x19 | r1 = 0x19;
0x0000d436 mov r0, r8 | r0 = r8;
0x0000d438 blx 0x6164 | fcn_00006164 ();
0x0000d43c b 0xd344 | goto label_9;
| label_27:
0x0000d43e blx 0x5c3c | fcn_00005c3c ();
0x0000d442 str r5, [sp, 0x10] | var_10h = r5;
| label_30:
0x0000d444 blx 0x629c | r0 = fcn_0000629c ();
0x0000d448 cmp r0, 0 |
| if (r0 == 0) {
0x0000d44a beq 0xd404 | goto label_10;
| }
0x0000d44c b 0xd412 | goto label_11;
| label_29:
0x0000d44e blx 0x5cb4 | fcn_00005cb4 ();
0x0000d452 nop |
0x0000d454 ldrb r2, [r1, 5] | r2 = *((r1 + 5));
0x0000d456 movs r0, r0 |
0x0000d458 lsls r4, r2, 0x16 | r4 = r2 << 0x16;
0x0000d45a movs r0, r0 |
0x0000d45c ldrh r6, [r7, r2] | r6 = *((r7 + r2));
0x0000d45e movs r0, r0 |
0x0000d460 ldr r1, [pc, 0x3a0] | r1 = *(0xd804);
0x0000d462 movs r0, r0 |
0x0000d464 ldr r1, [pc, 0x140] | r1 = *(0xd5a8);
0x0000d466 movs r0, r0 |
0x0000d468 strb r4, [r7, 0x1b] | *((r7 + 0x1b)) = r4;
0x0000d46a movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libimpl_wsd_tds.so @ 0xf30c */
| #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;
0x0000f30c blmi 0xfe2a1d38 | __asm ("blmi aav.0x00005742");
0x0000f310 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0000f314 mov r4, r1 | r4 = r1;
0x0000f316 add r2, pc | r2 += pc;
0x0000f318 ldr r1, [pc, 0x220] |
0x0000f31a sub sp, 0x10 |
0x0000f31c mov r6, r0 | r6 = r0;
0x0000f31e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000f320 add r1, pc | r1 = 0x1e860;
0x0000f322 ldr r3, [r3] | r3 = *(r3);
0x0000f324 str r3, [sp, 0xc] | var_ch = r3;
0x0000f326 mov.w r3, 0 | r3 = 0;
0x0000f32a blx 0x59d0 | r0 = wssecurity_uh_allowed_access ();
0x0000f32e cmp r0, 0 |
| if (r0 == 0) {
0x0000f330 beq.w 0xf504 | goto label_11;
| }
0x0000f334 cmp r4, 0 |
| if (r4 == 0) {
0x0000f336 beq.w 0xf510 | goto label_12;
| }
0x0000f33a ldr r3, [r4] | r3 = *(r4);
0x0000f33c cmp r3, 0 |
| if (r3 == 0) {
0x0000f33e beq 0xf3c2 | goto label_13;
| }
0x0000f340 ldr r1, [pc, 0x1fc] |
0x0000f342 ldr r0, [pc, 0x200] |
0x0000f344 add r1, pc | r1 = 0x1e888;
0x0000f346 add r0, pc | r0 = 0x1e890;
0x0000f348 blx 0x6110 | r0 = fcn_00006110 ();
0x0000f34c mov r5, r0 | r5 = r0;
| label_2:
0x0000f34e ldr.w sb, [r4, 4] | sb = *((r4 + 4));
0x0000f352 cmp r5, 0 |
0x0000f354 itete eq |
| if (r5 != 0) {
0x0000f356 moveq r7, r5 | r7 = r5;
| }
| if (r5 == 0) {
0x0000f358 movne r7, 1 | r7 = 1;
| }
| if (r5 != 0) {
0x0000f35a moveq r8, r5 | r8 = r5;
| }
| if (r5 == 0) {
0x0000f35c movne r8, 2 | r8 = 2;
| }
0x0000f360 cmp.w sb, 0 |
| if (sb == 0) {
0x0000f364 beq 0xf414 | goto label_14;
| }
0x0000f366 mov r0, sb | r0 = sb;
0x0000f368 blx 0x61f4 | r0 = fcn_000061f4 ();
0x0000f36c cmp r0, 0xff |
| if (r0 > 0xff) {
0x0000f36e bhi 0xf406 | goto label_7;
| }
0x0000f370 add.w sl, sb, r0 | sl = sb + r0;
0x0000f374 ldrb r2, [sl, -0x1] | r2 = *((sl - 0x1));
0x0000f378 cmp r2, 0x2d |
| if (r2 == 0x2d) {
0x0000f37a beq 0xf406 | goto label_7;
| }
0x0000f37c ldrb.w r3, [sb] | r3 = *(sb);
0x0000f380 subs r3, 0x2d | r3 -= 0x2d;
0x0000f382 cmp r2, 0x2e |
0x0000f384 it ne |
| if (r2 != 0x2e) {
0x0000f386 cmpne r3, 1 | __asm ("cmpne r3, 1");
| }
| if (r2 < 0x2e) {
0x0000f388 bls 0xf406 | goto label_7;
| }
| if (r0 == 0) {
0x0000f38a cbz r0, 0xf3d2 | goto label_15;
| }
0x0000f38c blx 0x5c14 | fcn_00005c14 ();
0x0000f390 mov r2, sb | r2 = sb;
0x0000f392 ldr r0, [r0] | r0 = *(r0);
0x0000f394 b 0xf3aa |
| while (r1 >= r1) {
0x0000f396 cmp r3, 0x2d |
| if (r3 == 0x2d) {
0x0000f398 beq.w 0xf4de | goto label_16;
| }
0x0000f39c cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x0000f39e bne 0xf406 | goto label_7;
| }
| label_1:
0x0000f3a0 ldrb r3, [r2] | r3 = *(r2);
0x0000f3a2 cmp r3, 0x2d |
| if (r3 == 0x2d) {
0x0000f3a4 beq 0xf406 | goto label_7;
| }
| label_0:
0x0000f3a6 cmp sl, r2 |
| if (sl == r2) {
0x0000f3a8 beq 0xf3d2 | goto label_15;
| }
0x0000f3aa ldrb r3, [r2], 1 | r3 = *(r2);
| r2++;
0x0000f3ae ldrh.w r1, [r0, r3, lsl 1] | offset_0 = r3 << 1;
| r1 = *((r0 + offset_0));
0x0000f3b2 lsls r1, r1, 0x1c | r1 <<= 0x1c;
0x0000f3b4 bpl 0xf396 |
| }
0x0000f3b6 cmp r3, 0x2d |
| if (r3 == 0x2d) {
0x0000f3b8 beq.w 0xf4de | goto label_16;
| }
0x0000f3bc cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x0000f3be bne 0xf3a6 | goto label_0;
| }
0x0000f3c0 b 0xf3a0 | goto label_1;
| label_13:
0x0000f3c2 ldr r1, [pc, 0x184] |
0x0000f3c4 ldr r0, [pc, 0x184] |
0x0000f3c6 add r1, pc | r1 = 0x1e914;
0x0000f3c8 add r0, pc | r0 = 0x1e918;
0x0000f3ca blx 0x6110 | r0 = fcn_00006110 ();
0x0000f3ce mov r5, r0 | r5 = r0;
0x0000f3d0 b 0xf34e | goto label_2;
| label_15:
0x0000f3d2 ldr r1, [pc, 0x17c] |
0x0000f3d4 mov r0, sb | r0 = sb;
0x0000f3d6 movs r2, 0 | r2 = 0;
0x0000f3d8 add r1, pc | r1 = 0x1e92e;
0x0000f3da blx 0x5f78 | r0 = fcn_00005f78 ();
0x0000f3de mov sb, r0 | sb = r0;
0x0000f3e0 ldr r0, [r0] | r0 = *(r0);
0x0000f3e2 cmp r0, 0 |
| if (r0 == 0) {
0x0000f3e4 beq.w 0xf51c | goto label_17;
| }
0x0000f3e8 mov sl, sb | sl = sb;
0x0000f3ea b 0xf3f6 |
| while (r0 < 0x3e) {
0x0000f3ec ldr r0, [sl, 4]! | r0 = *((sl += 4));
0x0000f3f0 cmp r0, 0 |
| if (r0 == 0) {
0x0000f3f2 beq.w 0xf51c | goto label_17;
| }
0x0000f3f6 blx 0x61f4 | fcn_000061f4 ();
0x0000f3fa subs r0, 1 | r0--;
0x0000f3fc cmp r0, 0x3e |
0x0000f3fe bls 0xf3ec |
| }
0x0000f400 mov r0, sb | r0 = sb;
0x0000f402 blx 0x693c | cert_prm_get_int ();
| label_7:
0x0000f406 adds r7, 1 | r7++;
0x0000f408 mov.w r8, 2 | r8 = 2;
| if (r5 != 0) {
| label_10:
0x0000f40c cbz r5, 0xf414 |
0x0000f40e adds r7, 1 | r7++;
0x0000f410 mov.w r8, 2 | r8 = 2;
| }
| label_14:
0x0000f414 ldr.w sb, [r4] | sb = *(r4);
0x0000f418 cmp.w sb, 2 |
| if (sb == 2) {
0x0000f41c beq 0xf4e8 | goto label_18;
| }
| label_8:
0x0000f41e ldr r5, [r4, 8] | r5 = *((r4 + 8));
0x0000f420 cmp r5, 0 |
| if (r5 == 0) {
0x0000f422 beq 0xf4c4 | goto label_19;
| }
| label_9:
0x0000f424 mov.w sl, 0 | sl = 0;
0x0000f428 str.w sl, [sp, 4] | __asm ("str.w sl, [var_4h]");
0x0000f42c blx 0x5dc8 | fcn_00005dc8 ();
0x0000f430 add r1, sp, 8 | r1 += endptr;
0x0000f432 mov sb, r0 | sb = r0;
0x0000f434 str.w sl, [r0] | __asm ("str.w sl, [r0]");
0x0000f438 mov r0, r5 | r0 = r5;
0x0000f43a blx 0x5a90 | strtod (r0, r1);
0x0000f43e ldr.w r3, [sb] | r3 = *(sb);
| if (r3 != 0) {
0x0000f442 cbnz r3, 0xf490 | goto label_20;
| }
0x0000f444 ldr r2, [sp, 8] | r2 = endptr;
0x0000f446 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000f448 ldrb r1, [r2] | r1 = *(r2);
| if (r1 != 0) {
0x0000f44a cbnz r1, 0xf492 | goto label_21;
| }
0x0000f44c cmp r5, r2 |
| if (r5 == r2) {
0x0000f44e beq 0xf492 | goto label_21;
| }
0x0000f450 vcmpe.f64 d0, 0 | __asm ("vcmpe.f64 d0, 0");
0x0000f454 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r5 < r2) {
0x0000f458 bmi 0xf492 | goto label_21;
| }
0x0000f45a ldr r0, [pc, 0xf8] |
0x0000f45c mov r1, r3 | r1 = r3;
0x0000f45e add r0, pc | r0 = 0x1e9b8;
0x0000f460 blx 0x6110 | r0 = fcn_00006110 ();
| if (r0 == 0) {
0x0000f464 cbz r0, 0xf4c4 | goto label_19;
| }
| do {
| label_3:
0x0000f466 blx 0x59b8 | wsd_util_sync_parameters ();
| label_5:
0x0000f46a movs r2, 0 | r2 = 0;
0x0000f46c movs r1, 0xa | r1 = 0xa;
0x0000f46e mov r0, r6 | r0 = r6;
0x0000f470 blx 0x67f4 | fcn_000067f4 ();
| label_6:
0x0000f474 movs r0, 0xc | r0 = 0xc;
| label_4:
0x0000f476 ldr r2, [pc, 0xe0] |
0x0000f478 ldr r3, [pc, 0xbc] | r3 = *(0xf538);
0x0000f47a add r2, pc | r2 = 0x1e9d8;
0x0000f47c ldr r3, [r2, r3] | r3 = *(0x1e9d8);
0x0000f47e ldr r2, [r3] | r2 = *(0x1e9d8);
0x0000f480 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000f482 eors r2, r3 | r2 ^= r3;
0x0000f484 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000f488 bne 0xf530 | goto label_22;
| }
0x0000f48a add sp, 0x10 |
0x0000f48c pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_20:
0x0000f490 ldr r3, [r4, 8] | r3 = *((r4 + 8));
| label_21:
0x0000f492 add r1, sp, 4 | r1 += var_4h;
0x0000f494 mov r0, r3 | r0 = r3;
0x0000f496 blx 0x5a9c | r0 = wsd_parse_xsd_duration ();
0x0000f49a cmp r0, 0 |
0x0000f49c bne 0xf466 |
| } while (r0 != 0);
0x0000f49e ldr r1, [sp, 4] | r1 = var_4h;
0x0000f4a0 cmp r1, 0 |
| if (r1 < 0) {
0x0000f4a2 blt 0xf466 | goto label_3;
| }
0x0000f4a4 ldr r0, [pc, 0xb4] |
0x0000f4a6 add r0, pc | r0 = 0x1ea06;
0x0000f4a8 blx 0x5b50 | r0 = g_strdup_printf ()
0x0000f4ac mov r4, r0 | r4 = r0;
0x0000f4ae mov r1, r0 | r1 = r0;
0x0000f4b0 ldr r0, [pc, 0xac] |
0x0000f4b2 add r0, pc | r0 = 0x1ea16;
0x0000f4b4 blx 0x6110 | r0 = fcn_00006110 ();
0x0000f4b8 mov r5, r0 | r5 = r0;
0x0000f4ba mov r0, r4 | r0 = r4;
0x0000f4bc blx 0x5c3c | fcn_00005c3c ();
0x0000f4c0 cmp r5, 0 |
| if (r5 != 0) {
0x0000f4c2 bne 0xf466 | goto label_3;
| }
| label_19:
0x0000f4c4 blx 0x59b8 | r0 = wsd_util_sync_parameters ();
0x0000f4c8 orrs.w r0, r0, r8 | r0 |= r8;
| if (r0 == r0) {
0x0000f4cc beq 0xf476 | goto label_4;
| }
0x0000f4ce cmp r7, 0 |
| if (r7 != 0) {
0x0000f4d0 bne 0xf46a | goto label_5;
| }
0x0000f4d2 mov r2, r7 | r2 = r7;
0x0000f4d4 movs r1, 0xf | r1 = 0xf;
0x0000f4d6 mov r0, r6 | r0 = r6;
0x0000f4d8 blx 0x67f4 | fcn_000067f4 ();
0x0000f4dc b 0xf474 | goto label_6;
| label_16:
0x0000f4de ldrb r3, [r2] | r3 = *(r2);
0x0000f4e0 cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x0000f4e2 bne.w 0xf3a6 | goto label_0;
| }
0x0000f4e6 b 0xf406 | goto label_7;
| label_18:
0x0000f4e8 ldr r1, [pc, 0x78] |
0x0000f4ea ldr r0, [pc, 0x7c] |
0x0000f4ec add r1, pc | r1 = 0x1ea54;
0x0000f4ee add r0, pc | r0 = 0x1ea5c;
0x0000f4f0 blx 0x6110 | r0 = fcn_00006110 ();
0x0000f4f4 cmp r0, 0 |
| if (r0 == 0) {
0x0000f4f6 beq 0xf41e | goto label_8;
| }
0x0000f4f8 ldr r5, [r4, 8] | r5 = *((r4 + 8));
0x0000f4fa adds r7, 1 | r7++;
0x0000f4fc mov r8, sb | r8 = sb;
0x0000f4fe cmp r5, 0 |
| if (r5 != 0) {
0x0000f500 bne 0xf424 | goto label_9;
| }
0x0000f502 b 0xf466 | goto label_3;
| label_11:
0x0000f504 mov r2, r0 | r2 = r0;
0x0000f506 movs r1, 0xd | r1 = 0xd;
0x0000f508 mov r0, r6 | r0 = r6;
0x0000f50a blx 0x67f4 | fcn_000067f4 ();
0x0000f50e b 0xf474 | goto label_6;
| label_12:
0x0000f510 mov r2, r4 | r2 = r4;
0x0000f512 movs r1, 3 | r1 = 3;
0x0000f514 mov r0, r6 | r0 = r6;
0x0000f516 blx 0x67f4 | fcn_000067f4 ();
0x0000f51a b 0xf474 | goto label_6;
| label_17:
0x0000f51c mov r0, sb | r0 = sb;
0x0000f51e blx 0x693c | cert_prm_get_int ();
0x0000f522 ldr r0, [pc, 0x48] |
0x0000f524 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0000f526 add r0, pc | r0 = 0x1ea98;
0x0000f528 blx 0x6110 | r0 = fcn_00006110 ();
0x0000f52c mov r5, r0 | r5 = r0;
0x0000f52e b 0xf40c | goto label_10;
| label_22:
0x0000f530 blx 0x5cb4 | fcn_00005cb4 ();
0x0000f534 ldrsb r2, [r0, r5] | r2 = *((r0 + r5));
0x0000f536 movs r0, r0 |
0x0000f538 lsls r4, r2, 0x16 | r4 = r2 << 0x16;
0x0000f53a movs r0, r0 |
0x0000f53c subs r6, 0x34 | r6 -= 0x34;
0x0000f53e movs r0, r0 |
0x0000f540 cmp r5, 0x88 |
0x0000f542 movs r0, r0 |
0x0000f544 adds r0, 0xba | r0 += 0xba;
0x0000f546 movs r0, r0 |
0x0000f548 cmp r5, 2 |
0x0000f54a movs r0, r0 |
0x0000f54c adds r0, 0x38 | r0 += 0x38;
0x0000f54e movs r0, r0 |
0x0000f550 subs r5, 0x90 | r5 -= 0x90;
0x0000f552 movs r0, r0 |
0x0000f554 cmp r7, 0xe2 |
0x0000f556 movs r0, r0 |
0x0000f558 strb r6, [r3, r7] | *((r3 + r7)) = r6;
0x0000f55a movs r0, r0 |
0x0000f55c adds r2, 0x4a | r2 += 0x4a;
0x0000f55e movs r0, r0 |
0x0000f560 cmp r7, 0x8e |
0x0000f562 movs r0, r0 |
0x0000f564 movs r7, 0x48 | r7 = 0x48;
0x0000f566 movs r0, r0 |
0x0000f568 cmp r7, 0x32 |
0x0000f56a movs r0, r0 |
0x0000f56c cmp r6, 0xfa |
0x0000f56e movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libimpl_wsd_tds.so @ 0xf618 */
| #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;
0x0000f618 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0000f61c mov r4, r1 | r4 = r1;
0x0000f61e ldr r1, [pc, 0x228] |
0x0000f620 sub sp, 0x14 |
0x0000f622 str r0, [sp] | *(sp) = r0;
0x0000f624 add r1, pc | r1 = 0x1ee72;
0x0000f626 blx 0x59d0 | r0 = wssecurity_uh_allowed_access ();
0x0000f62a cmp r0, 0 |
| if (r0 == 0) {
0x0000f62c beq.w 0xf7b4 | goto label_11;
| }
0x0000f630 cmp r4, 0 |
| if (r4 == 0) {
0x0000f632 beq.w 0xf7a8 | goto label_12;
| }
0x0000f636 ldr r0, [r4] | r0 = *(r4);
0x0000f638 cmp r0, 0 |
| if (r0 == 0) {
0x0000f63a beq.w 0xf7a8 | goto label_12;
| }
0x0000f63e ldr r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x0000f640 cbz r3, 0xf646 |
0x0000f642 cmp r3, 1 |
| if (r3 != 1) {
0x0000f644 bne 0xf732 | goto label_13;
| }
| }
0x0000f646 ldr r2, [r0, 0x10] | r2 = *((r0 + 0x10));
0x0000f648 ldr.w sb, [r0, 8] | sb = *((r0 + 8));
0x0000f64c str r2, [sp, 4] | var_4h = r2;
0x0000f64e cmp.w sb, 0 |
| if (sb == 0) {
0x0000f652 beq.w 0xf766 | goto label_14;
| }
0x0000f656 ldr r2, [sp, 4] | r2 = var_4h;
0x0000f658 ldr.w r8, [r0, 4] | r8 = *((r0 + 4));
0x0000f65c cmp r2, 0 |
| if (r2 == 0) {
0x0000f65e beq.w 0xf7cc | goto label_15;
| }
| label_2:
0x0000f662 ldr r2, [r0, 0xc] | r2 = *((r0 + 0xc));
0x0000f664 add.w r0, r8, r2 | r0 = r8 + r2;
0x0000f668 str r2, [sp, 8] | var_8h = r2;
| label_4:
0x0000f66a cmp.w r0, 0x100 |
| if (r0 > 0x100) {
0x0000f66e bgt.w 0xf7c0 | goto label_16;
| }
0x0000f672 adds r0, 1 | r0++;
0x0000f674 str r3, [sp, 0xc] | var_ch = r3;
0x0000f676 lsls r0, r0, 2 | r0 <<= 2;
0x0000f678 blx 0x5b38 | g_malloc0 ();
0x0000f67c cmp.w r8, 0 |
0x0000f680 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000f682 mov r7, r0 | r7 = r0;
| if (r8 <= 0) {
0x0000f684 ble.w 0xf812 | goto label_17;
| }
0x0000f688 ldr.w fp, [pc, 0x1c0] |
0x0000f68c movs r4, 0 | r4 = 0;
0x0000f68e mov r6, r4 | r6 = r4;
0x0000f690 add.w sl, sb, 4 | sl = sb + 4;
0x0000f694 add fp, pc | fp = 0x1eee4;
0x0000f696 b 0xf6a6 |
| while (r0 == 0) {
0x0000f698 adds r4, 1 | r4++;
0x0000f69a str.w r5, [r7, r6, lsl 2] | __asm ("str.w r5, [r7, r6, lsl 2]");
0x0000f69e cmp r4, r8 |
0x0000f6a0 add.w r6, r6, 1 | r6++;
| if (r4 == r8) {
0x0000f6a4 beq 0xf6d8 | goto label_18;
| }
| label_0:
0x0000f6a6 ldr.w r2, [sl, r4, lsl 3] | offset_0 = r4 << 3;
| r2 = *((sl + offset_0));
0x0000f6aa mov r0, fp | r0 = fp;
0x0000f6ac ldr.w r1, [sb, r4, lsl 3] | offset_1 = r4 << 3;
| r1 = *((sb + offset_1));
0x0000f6b0 blx 0x5b50 | r0 = g_strdup_printf ()
0x0000f6b4 mov r5, r0 | r5 = r0;
0x0000f6b6 blx 0x6920 | r0 = fcn_00006920 ();
0x0000f6ba mov r2, r0 | r2 = r0;
0x0000f6bc mov r1, r5 | r1 = r5;
0x0000f6be cmp r2, 1 |
0x0000f6c0 mov r0, r7 | r0 = r7;
| if (r2 != 1) {
0x0000f6c2 bne 0xf746 | goto label_19;
| }
0x0000f6c4 blx 0x65b4 | r0 = fcn_000065b4 ();
0x0000f6c8 cmp r0, 0 |
0x0000f6ca beq 0xf698 |
| }
0x0000f6cc mov r0, r5 | r0 = r5;
0x0000f6ce adds r4, 1 | r4++;
0x0000f6d0 blx 0x5c3c | fcn_00005c3c ();
0x0000f6d4 cmp r4, r8 |
| if (r4 != r8) {
0x0000f6d6 bne 0xf6a6 | goto label_0;
| }
| label_18:
0x0000f6d8 ldrd r2, r3, [sp, 8] | __asm ("ldrd r2, r3, [var_8h]");
0x0000f6dc cmp r2, 0 |
| if (r2 <= 0) {
0x0000f6de ble.w 0xf7e8 | goto label_20;
| }
| label_8:
0x0000f6e2 ldr r2, [sp, 4] | r2 = var_4h;
0x0000f6e4 movs r5, 0 | r5 = 0;
0x0000f6e6 ldr.w fp, [pc, 0x168] |
0x0000f6ea ldr.w sb, [sp, 8] | sb = var_8h;
0x0000f6ee add.w sl, r2, 4 | sl = r2 + 4;
0x0000f6f2 mov r8, r2 | r8 = r2;
0x0000f6f4 add fp, pc | fp = 0x1ef4a;
0x0000f6f6 str r3, [sp, 4] | var_4h = r3;
0x0000f6f8 b 0xf706 |
| while (r0 == 0) {
0x0000f6fa str.w r4, [r7, r6, lsl 2] | __asm ("str.w r4, [r7, r6, lsl 2]");
0x0000f6fe adds r6, 1 | r6++;
| label_1:
0x0000f700 adds r5, 1 | r5++;
0x0000f702 cmp sb, r5 |
| if (sb <= r5) {
0x0000f704 ble 0xf7e6 | goto label_21;
| }
0x0000f706 ldr.w r1, [r8, r5, lsl 3] | offset_2 = r5 << 3;
| r1 = *((r8 + offset_2));
0x0000f70a mov r0, fp | r0 = fp;
0x0000f70c ldr.w r2, [sl, r5, lsl 3] | offset_3 = r5 << 3;
| r2 = *((sl + offset_3));
0x0000f710 blx 0x5b50 | r0 = g_strdup_printf ()
0x0000f714 mov r4, r0 | r4 = r0;
0x0000f716 blx 0x6920 | r0 = fcn_00006920 ();
0x0000f71a cmp r0, 2 |
0x0000f71c mov r1, r4 | r1 = r4;
| if (r0 != 2) {
0x0000f71e bne 0xf7d4 | goto label_22;
| }
0x0000f720 mov r0, r7 | r0 = r7;
0x0000f722 blx 0x65b4 | r0 = fcn_000065b4 ();
0x0000f726 cmp r0, 0 |
0x0000f728 beq 0xf6fa |
| }
0x0000f72a mov r0, r4 | r0 = r4;
0x0000f72c blx 0x5c3c | fcn_00005c3c ();
0x0000f730 b 0xf700 | goto label_1;
| label_13:
0x0000f732 ldr r0, [sp] | r0 = *(sp);
0x0000f734 movs r2, 0 | r2 = 0;
0x0000f736 movs r1, 0xa | r1 = 0xa;
0x0000f738 blx 0x67f4 | fcn_000067f4 ();
| label_3:
0x0000f73c movs r4, 0xc | r4 = 0xc;
0x0000f73e mov r0, r4 | r0 = r4;
0x0000f740 add sp, 0x14 |
0x0000f742 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_19:
0x0000f746 ldr r0, [sp] | r0 = *(sp);
0x0000f748 movs r2, 0 | r2 = 0;
0x0000f74a movs r1, 0x16 | r1 = 0x16;
0x0000f74c blx 0x6164 | fcn_00006164 ();
0x0000f750 mov r0, r5 | r0 = r5;
0x0000f752 blx 0x5c3c | fcn_00005c3c ();
| label_5:
0x0000f756 movs r4, 0xc | r4 = 0xc;
| label_7:
0x0000f758 mov r0, r7 | r0 = r7;
0x0000f75a blx 0x693c | cert_prm_get_int ();
0x0000f75e mov r0, r4 | r0 = r4;
0x0000f760 add sp, 0x14 |
0x0000f762 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_14:
0x0000f766 mov r8, sb | r8 = sb;
0x0000f768 cmp r2, 0 |
| if (r2 != 0) {
0x0000f76a bne.w 0xf662 | goto label_2;
| }
0x0000f76e movs r0, 4 | r0 = 4;
0x0000f770 str r3, [sp, 4] | var_4h = r3;
0x0000f772 blx 0x5b38 | r0 = g_malloc0 ();
0x0000f776 mov r7, r0 | r7 = r0;
0x0000f778 blx 0x64dc | fcn_000064dc ();
0x0000f77c ldr r3, [sp, 4] | r3 = var_4h;
0x0000f77e cmp r0, 0 |
| if (r0 != 0) {
0x0000f780 bne 0xf82a | goto label_23;
| }
| do {
| label_9:
0x0000f782 str r3, [sp, 4] | var_4h = r3;
0x0000f784 blx 0x629c | fcn_0000629c ();
0x0000f788 ldr r3, [sp, 4] | r3 = var_4h;
| if (r0 == 0) {
0x0000f78a cbnz r0, 0xf79a |
0x0000f78c mov r1, r7 | r1 = r7;
0x0000f78e mov r0, r3 | r0 = r3;
0x0000f790 blx 0x5c60 | r0 = fcn_00005c60 ();
0x0000f794 mov r4, r0 | r4 = r0;
0x0000f796 cmp r0, 0 |
| if (r0 == 0) {
0x0000f798 beq 0xf80c | goto label_10;
| }
| }
| label_6:
0x0000f79a ldr r0, [sp] | r0 = *(sp);
0x0000f79c movs r2, 0 | r2 = 0;
0x0000f79e movs r1, 0xf | r1 = 0xf;
0x0000f7a0 movs r4, 0xc | r4 = 0xc;
0x0000f7a2 blx 0x67f4 | fcn_000067f4 ();
0x0000f7a6 b 0xf80c | goto label_10;
| label_12:
0x0000f7a8 ldr r0, [sp] | r0 = *(sp);
0x0000f7aa movs r2, 0 | r2 = 0;
0x0000f7ac movs r1, 3 | r1 = 3;
0x0000f7ae blx 0x67f4 | fcn_000067f4 ();
0x0000f7b2 b 0xf73c | goto label_3;
| label_11:
0x0000f7b4 mov r2, r0 | r2 = r0;
0x0000f7b6 movs r1, 0xd | r1 = 0xd;
0x0000f7b8 ldr r0, [sp] | r0 = *(sp);
0x0000f7ba blx 0x67f4 | fcn_000067f4 ();
0x0000f7be b 0xf73c | goto label_3;
| label_16:
0x0000f7c0 ldr r0, [sp] | r0 = *(sp);
0x0000f7c2 movs r2, 0 | r2 = 0;
0x0000f7c4 movs r1, 0x1d | r1 = 0x1d;
0x0000f7c6 blx 0x6164 | fcn_00006164 ();
0x0000f7ca b 0xf73c | goto label_3;
| label_15:
0x0000f7cc ldr r2, [sp, 4] | r2 = var_4h;
0x0000f7ce mov r0, r8 | r0 = r8;
0x0000f7d0 str r2, [sp, 8] | var_8h = r2;
0x0000f7d2 b 0xf66a | goto label_4;
| label_22:
0x0000f7d4 ldr r0, [sp] | r0 = *(sp);
0x0000f7d6 movs r2, 0 | r2 = 0;
0x0000f7d8 movs r1, 0x18 | r1 = 0x18;
0x0000f7da blx 0x6164 | fcn_00006164 ();
0x0000f7de mov r0, r4 | r0 = r4;
0x0000f7e0 blx 0x5c3c | fcn_00005c3c ();
0x0000f7e4 b 0xf756 | goto label_5;
| label_21:
0x0000f7e6 ldr r3, [sp, 4] | r3 = var_4h;
| label_20:
0x0000f7e8 str r3, [sp, 4] | var_4h = r3;
0x0000f7ea blx 0x64dc | fcn_000064dc ();
0x0000f7ee ldr r3, [sp, 4] | r3 = var_4h;
| if (r0 != 0) {
0x0000f7f0 cbnz r0, 0xf82a | goto label_23;
| }
0x0000f7f2 cmp r6, 0 |
0x0000f7f4 beq 0xf782 |
| } while (r6 == 0);
0x0000f7f6 mov r1, r7 | r1 = r7;
0x0000f7f8 mov r0, r3 | r0 = r3;
0x0000f7fa blx 0x5c60 | r0 = fcn_00005c60 ();
0x0000f7fe mov r5, r0 | r5 = r0;
0x0000f800 cmp r0, 0 |
| if (r0 != 0) {
0x0000f802 bne 0xf79a | goto label_6;
| }
0x0000f804 blx 0x5d38 | r0 = fcn_00005d38 ();
0x0000f808 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x0000f80a cbnz r0, 0xf838 | goto label_24;
| }
| label_10:
0x0000f80c blx 0x6884 | fcn_00006884 ();
0x0000f810 b 0xf758 | goto label_7;
| label_17:
0x0000f812 ldr r2, [sp, 8] | r2 = var_8h;
0x0000f814 cmp r2, 0 |
0x0000f816 it gt |
| if (r2 > 0) {
0x0000f818 movgt r6, 0 | r6 = 0;
| goto label_25;
| }
| if (r2 > 0) {
| label_25:
0x0000f81a bgt.w 0xf6e2 | goto label_8;
| }
0x0000f81e str r3, [sp, 4] | var_4h = r3;
0x0000f820 blx 0x64dc | fcn_000064dc ();
0x0000f824 ldr r3, [sp, 4] | r3 = var_4h;
0x0000f826 cmp r0, 0 |
| if (r0 == 0) {
0x0000f828 beq 0xf782 | goto label_9;
| }
| label_23:
0x0000f82a ldr r0, [sp] | r0 = *(sp);
0x0000f82c movs r2, 0 | r2 = 0;
0x0000f82e movs r1, 0xf | r1 = 0xf;
0x0000f830 movs r4, 0xc | r4 = 0xc;
0x0000f832 blx 0x67f4 | fcn_000067f4 ();
0x0000f836 b 0xf758 | goto label_7;
| label_24:
0x0000f838 ldr r0, [sp] | r0 = *(sp);
0x0000f83a mov r2, r5 | r2 = r5;
0x0000f83c movs r1, 0xf | r1 = 0xf;
0x0000f83e movs r4, 0xc | r4 = 0xc;
0x0000f840 blx 0x67f4 | fcn_000067f4 ();
0x0000f844 b 0xf80c | goto label_10;
| }
[*] Function printf used 10 times libimpl_wsd_tds.so