[*] Binary protection state of libimpl_wsd_tev.so

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


[*] Function mmap 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 mmap used 1 times libimpl_wsd_tev.so