[*] Binary protection state of libimpl_wsd_tev.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of libimpl_wsd_tev.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libimpl_wsd_tev.so @ 0x4794 */
| #include <stdint.h>
|
; (fcn) fcn.00004794 () | void fcn_00004794 (int16_t arg1, int16_t arg2) {
| int16_t var_30h;
| int16_t var_34h_2;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int32_t var_2ch_2;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_80h;
| int16_t var_88h;
| int16_t var_a8h;
| int32_t var_0h_2;
| int16_t var_10ch;
| r0 = arg1;
| r1 = arg2;
0x00004794 ldr.w r2, [pc, 0x488] | r2 = *(0x00004c20);
0x00004798 ldr.w r3, [pc, 0x488] |
0x0000479c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000047a0 sub sp, 0x114 |
0x000047a2 add r2, pc | r2 += pc;
0x000047a4 str r0, [sp, 0x18] | var_18h = r0;
0x000047a6 str r1, [sp, 0x20] | var_20h = r1;
0x000047a8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000047aa ldr.w r6, [pc, 0x47c] | r6 = *(0x00004c28);
0x000047ae ldr r3, [r3] | r3 = *(0x4c24);
0x000047b0 str r3, [sp, 0x10c] | var_10ch = r3;
0x000047b2 mov.w r3, 0 | r3 = 0;
0x000047b6 bl 0x58e8 | fcn_000058e8 ();
0x000047ba ldr r4, [r0, 0x18] | r4 = *((r0 + 0x18));
0x000047bc add r6, pc | r6 += pc;
0x000047be str r0, [sp, 0xc] | var_ch = r0;
0x000047c0 cmp r4, 0 |
| if (r4 == 0) {
0x000047c2 beq.w 0x4ad0 | goto label_12;
| }
| label_6:
0x000047c6 ldr r2, [sp, 0xc] | r2 = var_ch;
0x000047c8 ldr r3, [r2, 0x1c] | r3 = *((r2 + 0x1c));
| if (r3 == 0) {
0x000047ca cbnz r3, 0x47fa |
0x000047cc ldr r4, [r2, 4] | r4 = *((r2 + 4));
0x000047ce cmp r4, 0 |
| if (r4 != 0) {
0x000047d0 bne.w 0x49d2 | goto label_13;
| }
0x000047d4 mov r3, r2 | r3 = r2;
0x000047d6 ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x000047d8 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x000047da cmp r2, r3 |
0x000047dc it gt |
| if (r2 <= r3) {
0x000047de strgt r4, [sp, 0x1c] | var_1ch = r4;
| }
| if (r2 > r3) {
0x000047e0 bgt 0x47fe | goto label_2;
| }
0x000047e2 ldr r2, [sp, 0xc] | r2 = var_ch;
0x000047e4 movs r3, 1 | r3 = 1;
0x000047e6 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000047e8 str r3, [r2, 0x1c] | *((r2 + 0x1c)) = r3;
0x000047ea bl 0x46ec | r0 = fcn_000046ec (r0);
0x000047ee mov r1, r0 | r1 = r0;
0x000047f0 mov r0, r4 | r0 = r4;
0x000047f2 blx 0x2f80 | fcn_00002f80 ();
0x000047f6 str r0, [sp, 0x1c] | var_1ch = r0;
0x000047f8 b 0x47fe |
| } else {
0x000047fa movs r3, 0 | r3 = 0;
0x000047fc str r3, [sp, 0x1c] | var_1ch = r3;
| }
| label_2:
0x000047fe ldr r3, [sp, 0xc] | r3 = var_ch;
0x00004800 ldr r0, [r3, 0x20] | r0 = *((r3 + 0x20));
| if (r0 != 0) {
0x00004802 cbz r0, 0x484a |
0x00004804 blx 0x31bc | loc_imp_soap_begin_recv ();
0x00004808 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000480a cmp r0, r3 |
| if (r0 <= r3) {
0x0000480c blo 0x484a | goto label_14;
| }
| label_7:
0x0000480e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00004810 ldr r0, [r3, 0x20] | r0 = *((r3 + 0x20));
0x00004812 blx 0x31bc | r0 = loc_imp_soap_begin_recv ();
0x00004816 cmp r0, 0 |
| if (r0 != 0) {
0x00004818 bne.w 0x4a8a | goto label_15;
| }
| label_5:
0x0000481c ldr r2, [sp, 0xc] | r2 = var_ch;
0x0000481e ldr r3, [r2, 0x1c] | r3 = *((r2 + 0x1c));
| if (r3 == 0) {
0x00004820 cbnz r3, 0x482a |
0x00004822 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00004824 cmp r3, 0 |
| if (r3 != 0) {
0x00004826 bne.w 0x4b62 | goto label_16;
| }
| }
| label_8:
0x0000482a ldr.w r2, [pc, 0x400] | r2 = *(0x00004c2c);
0x0000482e ldr r3, [pc, 0x3f4] | r3 = *(0x4c26);
0x00004830 add r2, pc | r2 += pc;
0x00004832 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00004834 ldr r2, [r3] | r2 = *(0x4c26);
0x00004836 ldr r3, [sp, 0x10c] | r3 = var_10ch;
0x00004838 eors r2, r3 | r2 ^= r3;
0x0000483a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000483e bne.w 0x4c1c | goto label_17;
| }
0x00004842 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00004844 add sp, 0x114 |
0x00004846 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
| label_14:
0x0000484a add r3, sp, 0x50 | r3 += var_50h;
0x0000484c add.w sb, sp, 0x34 | sb += var_34h;
0x00004850 mov r0, r3 | r0 = r3;
0x00004852 str r3, [sp, 0x24] | var_24h = r3;
0x00004854 movs r3, 0 | r3 = 0;
0x00004856 add.w sl, sp, 0x28 | sl += var_28h;
0x0000485a str r3, [sp, 0x34] | var_34h = r3;
0x0000485c str r3, [sp, 0x28] | var_28h = r3;
0x0000485e strd r3, r3, [sp, 0x38] | __asm ("strd r3, r3, [var_38h]");
0x00004862 strd r3, r3, [sp, 0x40] | __asm ("strd r3, r3, [var_44h]");
0x00004866 strd r3, r3, [sp, 0x48] | __asm ("strd r3, r3, [var_4ch]");
0x0000486a strd r3, r3, [sp, 0x2c] | __asm ("strd r3, r3, [var_2ch]");
0x0000486e blx 0x36f4 | fcn_000036f4 ();
0x00004872 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00004874 bl 0x58ec | r0 = fcn_000058ec (r0);
0x00004878 mov r8, r0 | r8 = r0;
0x0000487a blx 0x31bc | r0 = loc_imp_soap_begin_recv ();
0x0000487e cmp r0, 1 |
0x00004880 it ne |
| if (r0 == 1) {
0x00004882 addne r5, sp, 0xa8 | r5 += var_a8h;
| }
| if (r0 == 1) {
0x00004884 beq.w 0x4b9e | goto label_18;
| }
| label_10:
0x00004888 mov r0, r8 | r0 = r8;
0x0000488a blx 0x34ec | g_hash_table_unref ();
0x0000488e ldr r0, [sp, 0x18] | r0 = var_18h;
0x00004890 bl 0x58e8 | fcn_000058e8 ();
0x00004894 movs r1, 4 | r1 = 4;
0x00004896 mov r4, r0 | r4 = r0;
0x00004898 mov r0, r5 | r0 = r5;
0x0000489a blx 0x33b4 | loc_imp_wsd_serialize_capabilities ();
0x0000489e movs r1, 4 | r1 = 4;
0x000048a0 str r0, [sp, 0x34] | var_34h = r0;
0x000048a2 mov r0, r5 | r0 = r5;
0x000048a4 blx 0x33b4 | loc_imp_wsd_serialize_capabilities ();
0x000048a8 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000048aa movs r2, 0 | r2 = 0;
0x000048ac str r0, [sp, 0x38] | var_38h = r0;
0x000048ae strb r2, [r3] | *(r3) = r2;
0x000048b0 movs r2, 0xff | r2 = 0xff;
0x000048b2 ldr r3, [sp, 0x38] | r3 = var_38h;
0x000048b4 strb r2, [r3] | *(r3) = r2;
0x000048b6 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000048b8 cmp r3, 0 |
| if (r3 != 0) {
0x000048ba bne.w 0x49ca | goto label_19;
| }
0x000048be ldr r3, [sp, 0x34] | r3 = var_34h;
0x000048c0 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x000048c2 strb r2, [r3] | *(r3) = r2;
| label_1:
0x000048c4 movs r1, 4 | r1 = 4;
0x000048c6 mov r0, r5 | r0 = r5;
0x000048c8 blx 0x33b4 | loc_imp_wsd_serialize_capabilities ();
0x000048cc ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000048ce movs r1, 4 | r1 = 4;
0x000048d0 str r0, [sp, 0x4c] | var_4ch = r0;
0x000048d2 str r3, [r0] | *(r0) = r3;
0x000048d4 mov r0, r5 | r0 = r5;
0x000048d6 blx 0x33b4 | loc_imp_wsd_serialize_capabilities ();
0x000048da ldr r2, [sp, 0x20] | r2 = var_20h;
0x000048dc ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000048de str r0, [sp, 0x44] | var_44h = r0;
0x000048e0 cmp r2, 0x64 |
0x000048e2 it lt |
| if (r2 >= 0x64) {
0x000048e4 movlt r2, 0x64 | r2 = 0x64;
| }
0x000048e6 cmp r3, 0 |
0x000048e8 str r2, [r0] | *(r0) = r2;
| if (r3 >= 0) {
0x000048ea blt 0x48fe |
0x000048ec mov r0, r5 | r0 = r5;
0x000048ee movs r1, 8 | r1 = 8;
0x000048f0 blx 0x33b4 | loc_imp_wsd_serialize_capabilities ();
0x000048f4 ldrd r2, r3, [r4, 0x10] | __asm ("ldrd r2, r3, [r4, 0x10]");
0x000048f8 str r0, [sp, 0x48] | var_48h = r0;
0x000048fa strd r2, r3, [r0] | __asm ("strd r2, r3, [r0]");
| }
0x000048fe ldr r1, [pc, 0x330] | r1 = *(0x4c32);
0x00004900 mov r2, sb | r2 = sb;
0x00004902 ldr r3, [pc, 0x330] | r3 = *(0x4c36);
0x00004904 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00004906 ldr r1, [r6, r1] | r1 = *((r6 + r1));
0x00004908 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000490a strd sl, r1, [sp] | __asm ("strd sl, r1, [sp]");
0x0000490e movs r1, 0 | r1 = 0;
0x00004910 blx 0x2ff8 | fcn_00002ff8 ();
0x00004914 ldr r2, [sp, 0x80] | r2 = var_80h;
0x00004916 str r2, [sp, 0x10] | var_10h = r2;
0x00004918 cmp r2, 0 |
| if (r2 != 0) {
0x0000491a bne.w 0x4b4c | goto label_20;
| }
0x0000491e ldr r3, [sp, 0x28] | r3 = var_28h;
0x00004920 cmp r3, 0 |
| if (r3 <= 0) {
0x00004922 ble.w 0x4a60 | goto label_21;
| }
0x00004926 ldr.w sb, [pc, 0x310] |
0x0000492a ldr.w fp, [pc, 0x310] | fp = *(0x00004c3c);
0x0000492e str r2, [sp, 0x14] | var_14h = r2;
0x00004930 add sb, pc | sb = 0x956e;
0x00004932 add fp, pc |
| label_4:
0x00004934 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00004936 movs r0, 0 | r0 = 0;
0x00004938 ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x0000493a add r5, r3 | r5 += r3;
0x0000493c blx 0x3450 | memset (r0, r1, r2);
0x00004940 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x00004942 mov r7, r0 | r7 = r0;
0x00004944 cmp r3, 0 |
| if (r3 <= 0) {
0x00004946 ble 0x495e | goto label_22;
| }
0x00004948 movs r4, 0 | r4 = 0;
| do {
0x0000494a ldr r3, [r5, 0x20] | r3 = *((r5 + 0x20));
0x0000494c mov r0, r7 | r0 = r7;
0x0000494e ldr.w r1, [r3, r4, lsl 2] | offset_0 = r4 << 2;
| r1 = *((r3 + offset_0));
0x00004952 adds r4, 1 | r4++;
0x00004954 blx 0x31b0 | loc_imp_soap_begin ();
0x00004958 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x0000495a cmp r4, r3 |
0x0000495c blt 0x494a |
| } while (r4 < r3);
| label_22:
0x0000495e ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x00004960 cmp r3, 0 |
| if (r3 <= 0) {
0x00004962 ble 0x49e2 | goto label_23;
| }
0x00004964 ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x00004966 mov.w sl, 0 | sl = 0;
0x0000496a mov r8, r7 | r8 = r7;
| label_3:
0x0000496c lsl.w r6, sl, 4 | r6 = sl << 4;
0x00004970 movs r3, 4 | r3 = 4;
0x00004972 mov r0, r8 | r0 = r8;
0x00004974 ldr r7, [r2, r6] | r7 = *((r2 + r6));
0x00004976 add r2, r6 | r2 += r6;
0x00004978 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x0000497a mov r1, r7 | r1 = r7;
0x0000497c blx 0x31ec | g_idle_add ();
0x00004980 ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x00004982 adds r3, r2, r6 | r3 = r2 + r6;
0x00004984 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x00004986 cmp r1, 0 |
| if (r1 <= 0) {
0x00004988 ble 0x49d6 | goto label_24;
| }
0x0000498a movs r4, 0 | r4 = 0;
0x0000498c b 0x499a |
| while (r0 != 0) {
| label_0:
0x0000498e ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x00004990 adds r4, 1 | r4++;
0x00004992 adds r3, r2, r6 | r3 = r2 + r6;
0x00004994 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x00004996 cmp r4, r1 |
| if (r4 >= r1) {
0x00004998 bge 0x49d6 | goto label_24;
| }
0x0000499a ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0000499c mov r1, r7 | r1 = r7;
0x0000499e mov r0, r8 | r0 = r8;
0x000049a0 ldr.w r2, [r3, r4, lsl 2] | offset_1 = r4 << 2;
| r2 = *((r3 + offset_1));
0x000049a4 blx 0x3540 | event_get_complex_type_name_at ();
0x000049a8 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x000049aa mov r1, sb | r1 = sb;
0x000049ac add r3, r6 | r3 += r6;
0x000049ae ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000049b0 ldr.w r0, [r3, r4, lsl 2] | offset_2 = r4 << 2;
| r0 = *((r3 + offset_2));
0x000049b4 blx 0x32f8 | r0 = fcn_000032f8 ();
0x000049b8 cmp r0, 0 |
0x000049ba bne 0x498e |
| }
0x000049bc mov r3, r0 | r3 = r0;
0x000049be mov r2, fp | r2 = fp;
0x000049c0 mov r1, r7 | r1 = r7;
0x000049c2 mov r0, r8 | r0 = r8;
0x000049c4 blx 0x3294 | event_get_tags_at ();
0x000049c8 b 0x498e | goto label_0;
| label_19:
0x000049ca ldr r3, [sp, 0x38] | r3 = var_38h;
0x000049cc ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x000049ce strb r2, [r3] | *(r3) = r2;
0x000049d0 b 0x48c4 | goto label_1;
| label_13:
0x000049d2 str r3, [sp, 0x1c] | var_1ch = r3;
0x000049d4 b 0x47fe | goto label_2;
| label_24:
0x000049d6 ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x000049d8 add.w sl, sl, 1 | sl++;
0x000049dc cmp sl, r3 |
| if (sl < r3) {
0x000049de blt 0x496c | goto label_3;
| }
0x000049e0 mov r7, r8 | r7 = r8;
| label_23:
0x000049e2 mov r0, r7 | r0 = r7;
0x000049e4 blx 0x32d4 | fcn_000032d4 ();
0x000049e8 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000049ea mov r4, r0 | r4 = r0;
0x000049ec mov r0, r3 | r0 = r3;
0x000049ee asrs r1, r3, 0x1f | r1 = r3 >> 0x1f;
0x000049f0 blx 0x3304 | r0 = fcn_00003304 ();
0x000049f4 mov r5, r0 | r5 = r0;
0x000049f6 mov r0, r4 | r0 = r4;
0x000049f8 mov r1, r5 | r1 = r5;
0x000049fa blx 0x2fa4 | fcn_00002fa4 ();
0x000049fe mov r0, r5 | r0 = r5;
0x00004a00 blx 0x2f4c | g_date_time_unref ();
0x00004a04 mov r0, r7 | r0 = r7;
0x00004a06 blx 0x3468 | loc_imp_soap_body_end_out ();
0x00004a0a ldr r6, [sp, 0x18] | r6 = var_18h;
0x00004a0c mov r1, r4 | r1 = r4;
0x00004a0e mov r0, r6 | r0 = r6;
0x00004a10 bl 0x5858 | r0 = fcn_00005858 (r0, r1);
0x00004a14 cmp r0, 3 |
0x00004a16 mov r5, r0 | r5 = r0;
| if (r0 != 3) {
0x00004a18 beq 0x4a38 |
0x00004a1a mov r0, r6 | r0 = r6;
0x00004a1c bl 0x58e4 | fcn_000058e4 (r0);
0x00004a20 mov r1, r5 | r1 = r5;
0x00004a22 mov r2, r0 | r2 = r0;
0x00004a24 mov r0, r4 | r0 = r4;
0x00004a26 bl 0x44e4 | r0 = fcn_000044e4 (r0, r1, r2);
0x00004a2a mov r1, r0 | r1 = r0;
| if (r0 == 0) {
0x00004a2c cbz r0, 0x4a38 | goto label_25;
| }
0x00004a2e ldr r5, [sp, 0xc] | r5 = var_ch;
0x00004a30 ldr r0, [r5, 0x20] | r0 = *((r5 + 0x20));
0x00004a32 blx 0x2f80 | fcn_00002f80 ();
0x00004a36 str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
| }
| label_25:
0x00004a38 ldr r1, [sp, 0x10] | r1 = var_10h;
0x00004a3a mov r0, r4 | r0 = r4;
0x00004a3c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00004a3e ldr r4, [sp, 0x14] | r4 = var_14h;
0x00004a40 add r3, r1 | r3 += r1;
0x00004a42 adds r1, 0x28 | r1 += 0x28;
0x00004a44 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x00004a48 adds r4, 1 | r4++;
0x00004a4a str r1, [sp, 0x10] | var_10h = r1;
0x00004a4c ldr r1, [sp, 0xc] | r1 = var_ch;
0x00004a4e str r4, [sp, 0x14] | var_14h = r4;
0x00004a50 strd r2, r3, [r1, 0x10] | __asm ("strd r2, r3, [r1, 0x10]");
0x00004a54 blx 0x3018 | event_get_key_count ();
0x00004a58 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00004a5a cmp r3, r4 |
| if (r3 > r4) {
0x00004a5c bgt.w 0x4934 | goto label_4;
| }
| label_21:
0x00004a60 ldr r4, [sp, 0xc] | r4 = var_ch;
0x00004a62 ldr r1, [pc, 0x1dc] |
0x00004a64 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x00004a66 add r1, pc | r1 = 0x96ac;
0x00004a68 blx 0x31e0 | g_main_context_default ();
0x00004a6c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00004a6e str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x00004a70 cmp r3, 0 |
| if (r3 != 0) {
0x00004a72 bne.w 0x4b94 | goto label_26;
| }
| label_9:
0x00004a76 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00004a78 blx 0x339c | notification_get_declaration ();
0x00004a7c ldr r3, [sp, 0xc] | r3 = var_ch;
0x00004a7e ldr r0, [r3, 0x20] | r0 = *((r3 + 0x20));
0x00004a80 blx 0x31bc | r0 = loc_imp_soap_begin_recv ();
0x00004a84 cmp r0, 0 |
| if (r0 == 0) {
0x00004a86 beq.w 0x481c | goto label_5;
| }
| label_15:
0x00004a8a ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x00004a8c mov r0, r7 | r0 = r7;
0x00004a8e blx 0x31bc | loc_imp_soap_begin_recv ();
0x00004a92 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00004a94 mov r5, r0 | r5 = r0;
0x00004a96 cmp r3, r0 |
| if (r3 <= r0) {
0x00004a98 ble.w 0x481c | goto label_5;
| }
0x00004a9c ldr r6, [sp, 0xc] | r6 = var_ch;
0x00004a9e mov r8, r3 | r8 = r3;
| do {
0x00004aa0 ldr r0, [r6, 0x20] | r0 = *((r6 + 0x20));
0x00004aa2 blx 0x342c | r0 = event_declaration_new ();
0x00004aa6 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x00004aa8 cbz r0, 0x4ac6 |
0x00004aaa ldr r1, [r0] | r1 = *(r0);
0x00004aac mov r0, r7 | r0 = r7;
0x00004aae blx 0x2f80 | fcn_00002f80 ();
0x00004ab2 mov r1, r4 | r1 = r4;
0x00004ab4 mov r7, r0 | r7 = r0;
0x00004ab6 ldr r0, [r6, 0x20] | r0 = *((r6 + 0x20));
0x00004ab8 blx 0x32ec | r0 = fcn_000032ec ();
0x00004abc mov r3, r0 | r3 = r0;
0x00004abe mov r0, r4 | r0 = r4;
0x00004ac0 str r3, [r6, 0x20] | *((r6 + 0x20)) = r3;
0x00004ac2 blx 0x3588 | g_string_append ();
| }
0x00004ac6 adds r5, 1 | r5++;
0x00004ac8 cmp r8, r5 |
0x00004aca bne 0x4aa0 |
| } while (r8 != r5);
0x00004acc str r7, [sp, 0x1c] | var_1ch = r7;
0x00004ace b 0x481c | goto label_5;
| label_12:
0x00004ad0 add r3, sp, 0x50 | r3 += var_50h;
0x00004ad2 str r4, [sp, 0x34] | var_34h = r4;
0x00004ad4 mov r0, r3 | r0 = r3;
0x00004ad6 mov r7, r3 | r7 = r3;
0x00004ad8 str r3, [sp, 0x24] | var_24h = r3;
0x00004ada movs r5, 0xc8 | r5 = 0xc8;
0x00004adc str r4, [sp, 0x28] | var_28h = r4;
0x00004ade strd r4, r4, [sp, 0x38] | __asm ("strd r4, r4, [var_38h]");
0x00004ae2 strd r4, r4, [sp, 0x40] | __asm ("strd r4, r4, [var_44h]");
0x00004ae6 strd r4, r4, [sp, 0x48] | __asm ("strd r4, r4, [var_4ch]");
0x00004aea strd r4, r4, [sp, 0x2c] | __asm ("strd r4, r4, [var_2ch]");
0x00004aee blx 0x36f4 | fcn_000036f4 ();
0x00004af2 movs r1, 4 | r1 = 4;
0x00004af4 add r0, sp, 0xa8 | r0 += var_a8h;
0x00004af6 blx 0x33b4 | loc_imp_wsd_serialize_capabilities ();
0x00004afa ldr r1, [pc, 0x134] | r1 = *(0x4c32);
0x00004afc mov r3, r0 | r3 = r0;
0x00004afe str r0, [sp, 0x44] | var_44h = r0;
0x00004b00 add r2, sp, 0x34 | r2 += var_34h;
0x00004b02 str r5, [r3] | *(r3) = r5;
0x00004b04 ldr r0, [pc, 0x12c] | r0 = *(0x4c34);
0x00004b06 ldr r1, [r6, r1] | r1 = *((r6 + r1));
0x00004b08 ldr r3, [r6, r0] | r3 = *((r6 + r0));
0x00004b0a mov r0, r7 | r0 = r7;
0x00004b0c str r1, [sp, 4] | var_4h = r1;
0x00004b0e add r1, sp, 0x28 | r1 += var_28h;
0x00004b10 str r1, [sp] | *(sp) = r1;
0x00004b12 mov r1, r4 | r1 = r4;
0x00004b14 blx 0x2ff8 | r0 = fcn_00002ff8 ();
0x00004b16 orns fp, r0, r0, asr 4 | __asm ("orns fp, r0, r0, asr 4");
0x00004b1a cmp r3, 0 |
| if (r3 != 0) {
0x00004b1c bne 0x4bfc | goto label_27;
| }
0x00004b1e ldr r2, [sp, 0x28] | r2 = var_28h;
0x00004b20 cmp r2, 0 |
| if (r2 <= 0) {
0x00004b22 ble 0x4b40 | goto label_28;
| }
0x00004b24 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00004b26 add.w r2, r2, r2, lsl 2 | r2 += (r2 << 2);
0x00004b2a mvn r4, 0x80000000 | r4 = ~0x80000000;
0x00004b2e add.w r2, r3, r2, lsl 3 | r2 = r3 + (r2 << 3);
| do {
0x00004b32 ldr r1, [r3, 0x10] | r1 = *((r3 + 0x10));
0x00004b34 adds r3, 0x28 | r3 += 0x28;
0x00004b36 cmp r4, r1 |
0x00004b38 it hs |
| if (r4 < r1) {
0x00004b3a movhs r4, r1 | r4 = r1;
| }
0x00004b3c cmp r2, r3 |
0x00004b3e bne 0x4b32 |
| } while (r2 != r3);
| label_28:
0x00004b40 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00004b42 blx 0x339c | notification_get_declaration ();
0x00004b46 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00004b48 str r4, [r3, 0x18] | *((r3 + 0x18)) = r4;
0x00004b4a b 0x47c6 | goto label_6;
| label_20:
0x00004b4c ldr r3, [sp, 0x88] | r3 = var_88h;
0x00004b4e movs r1, 0x10 | r1 = 0x10;
0x00004b50 ldr r2, [pc, 0xf0] |
0x00004b52 movs r0, 0 | r0 = 0;
0x00004b54 str r3, [sp] | *(sp) = r3;
0x00004b56 ldr r3, [pc, 0xf0] |
0x00004b58 add r2, pc | r2 = 0x97a0;
0x00004b5a add r3, pc | r3 = 0x97a8;
0x00004b5c blx 0x3504 | loc_imp_soap_copy ();
0x00004b60 b 0x480e | goto label_7;
| label_16:
0x00004b62 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00004b64 blx 0x31bc | loc_imp_soap_begin_recv ();
0x00004b68 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00004b6a cmp r0, r3 |
| if (r0 >= r3) {
0x00004b6c bhs.w 0x482a | goto label_8;
| }
0x00004b70 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00004b72 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00004b74 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00004b76 cmp r2, r3 |
| if (r2 < r3) {
0x00004b78 blt.w 0x482a | goto label_8;
| }
0x00004b7c ldr r2, [sp, 0xc] | r2 = var_ch;
0x00004b7e movs r3, 1 | r3 = 1;
0x00004b80 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00004b82 str r3, [r2, 0x1c] | *((r2 + 0x1c)) = r3;
0x00004b84 bl 0x46ec | r0 = fcn_000046ec (r0);
0x00004b88 mov r1, r0 | r1 = r0;
0x00004b8a ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00004b8c blx 0x2f80 | fcn_00002f80 ();
0x00004b90 str r0, [sp, 0x1c] | var_1ch = r0;
0x00004b92 b 0x482a | goto label_8;
| label_26:
0x00004b94 blx 0x2fbc | fcn_00002fbc ();
0x00004b98 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00004b9a str r0, [r3, 0x20] | *((r3 + 0x20)) = r0;
0x00004b9c b 0x4a76 | goto label_9;
| label_18:
0x00004b9e ldr.w r0, [r8] | r0 = *(r8);
0x00004ba2 add r5, sp, 0xa8 | r5 += var_a8h;
0x00004ba4 blx 0x342c | r0 = event_declaration_new ();
0x00004ba8 mov r4, r0 | r4 = r0;
0x00004baa blx 0x31bc | r0 = loc_imp_soap_begin_recv ();
0x00004bae lsls r1, r0, 3 | r1 = r0 << 3;
0x00004bb0 mov r0, r5 | r0 = r5;
0x00004bb2 blx 0x3210 | event_query_free ();
0x00004bb6 str r0, [sp, 0x40] | var_40h = r0;
| label_11:
0x00004bb8 cmp r4, 0 |
| if (r4 == 0) {
0x00004bba beq.w 0x4888 | goto label_10;
| }
0x00004bbe ldrd r7, r4, [r4] | __asm ("ldrd r7, r4, [r4]");
0x00004bc2 ldr r1, [r7] | r1 = *(r7);
0x00004bc4 cmp r1, 0 |
| if (r1 == 0) {
0x00004bc6 beq 0x4bb8 | goto label_11;
| }
0x00004bc8 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00004bca cmp r3, 0 |
| if (r3 != 0) {
0x00004bcc bne 0x4bb8 | goto label_11;
| }
0x00004bce ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00004bd0 mov r0, r5 | r0 = r5;
0x00004bd2 ldr.w fp, [sp, 0x40] | fp = var_40h;
0x00004bd6 str r3, [sp, 0x10] | var_10h = r3;
0x00004bd8 blx 0x3258 | event_consumer_new ();
0x00004bdc ldr r3, [sp, 0x10] | r3 = var_10h;
0x00004bde ldr r1, [r7, 4] | r1 = *((r7 + 4));
0x00004be0 str.w r0, [fp, r3, lsl 3] | __asm ("str.w r0, [fp, r3, lsl 3]");
0x00004be4 mov r0, r5 | r0 = r5;
0x00004be6 ldrd r2, r3, [sp, 0x3c] | __asm ("ldrd r2, r3, [var_40h]");
0x00004bea add.w r7, r3, r2, lsl 3 | r7 = r3 + (r2 << 3);
0x00004bee blx 0x3258 | event_consumer_new ();
0x00004bf2 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00004bf4 str r0, [r7, 4] | *((r7 + 4)) = r0;
0x00004bf6 adds r3, 1 | r3++;
0x00004bf8 str r3, [sp, 0x3c] | var_3ch = r3;
0x00004bfa b 0x4bb8 | goto label_11;
| label_27:
0x00004bfc ldr r3, [sp, 0x88] | r3 = var_88h;
0x00004bfe movs r1, 0x10 | r1 = 0x10;
0x00004c00 ldr r2, [pc, 0x48] |
0x00004c02 mov r0, r4 | r0 = r4;
0x00004c04 str r3, [sp] | *(sp) = r3;
0x00004c06 ldr r3, [pc, 0x48] |
0x00004c08 add r2, pc | r2 = 0x9858;
0x00004c0a add r3, pc | r3 = 0x9860;
0x00004c0c blx 0x3504 | loc_imp_soap_copy ();
0x00004c10 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00004c12 blx 0x339c | notification_get_declaration ();
0x00004c16 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00004c18 str r4, [r3, 0x18] | *((r3 + 0x18)) = r4;
0x00004c1a b 0x47c6 | goto label_6;
| label_17:
0x00004c1c blx 0x31a4 | g_list_length ();
0x00004c20 cmp r6, r8 |
0x00004c22 movs r1, r0 | r1 = r0;
0x00004c24 lsls r0, r6, 0xb | r0 = r6 << 0xb;
0x00004c26 movs r0, r0 |
0x00004c28 cmp r4, r5 |
0x00004c2a movs r1, r0 | r1 = r0;
0x00004c2c add r8, r7 | r8 += r7;
0x00004c2e movs r1, r0 | r1 = r0;
0x00004c30 lsls r0, r5, 0xb | r0 = r5 << 0xb;
0x00004c32 movs r0, r0 |
0x00004c34 lsls r0, r0, 0xc | r0 <<= 0xc;
0x00004c36 movs r0, r0 |
0x00004c38 movs r7, 0x88 | r7 = 0x88;
0x00004c3a movs r0, r0 |
0x00004c3c stc2 p15, c15, [r7, 0x3fc] | __asm ("stc2 p15, c15, [r7, 0x3fc]");
0x00004c40 mrrc2 p15, 0xf, pc, r7, c15 | __asm ("mrrc2 p15, 0xf, pc, r7, c15");
0x00004c44 movs r5, 0x50 | r5 = 0x50;
0x00004c46 movs r0, r0 |
0x00004c48 cmp r4, 0x56 |
0x00004c4a movs r0, r0 |
0x00004c4c movs r4, 0xa0 | r4 = 0xa0;
0x00004c4e movs r0, r0 |
0x00004c50 cmp r3, 0xa6 |
0x00004c52 movs r0, r0 |
| }
[*] Function fprintf used 1 times libimpl_wsd_tev.so