[*] Binary protection state of libimpl_wsd_tds.so

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


[*] Function strcpy tear down of libimpl_wsd_tds.so

    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libimpl_wsd_tds.so @ 0xa1cc */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000a1cc ()                                          | void fcn_0000a1cc (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                     |     int16_t var_ch_2;
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_10h;
                                                                     |     int16_t var_14h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_11ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
                                                                     |     r3 = arg4;
    0x0000a1cc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000a1d0 mov sb, r1                                            |     sb = r1;
    0x0000a1d2 sub sp, 0x124                                         |     
    0x0000a1d4 ldr r1, [pc, 0x1b0]                                   |     
    0x0000a1d6 mov r4, r3                                            |     r4 = r3;
    0x0000a1d8 mov sl, r2                                            |     sl = r2;
    0x0000a1da str r3, [sp, 0x10]                                    |     var_10h = r3;
    0x0000a1dc movs r2, 4                                            |     r2 = 4;
    0x0000a1de ldr r3, [pc, 0x1ac]                                   |     r3 = *(0xa38e);
    0x0000a1e0 add r1, pc                                            |     r1 = 0x1456c;
    0x0000a1e2 str.w sl, [sp, 0xc]                                   |     __asm ("str.w sl, [var_ch]");
    0x0000a1e6 mov r7, r0                                            |     r7 = r0;
    0x0000a1e8 ldr r3, [r1, r3]                                      |     
    0x0000a1ea movs r1, 0                                            |     r1 = 0;
    0x0000a1ec mov r0, r1                                            |     r0 = r1;
    0x0000a1ee ldr r3, [r3]                                          |     r3 = *(0x1456c);
    0x0000a1f0 str r3, [sp, 0x11c]                                   |     var_11ch = r3;
    0x0000a1f2 mov.w r3, 0                                           |     r3 = 0;
    0x0000a1f6 blx 0x5510                                            |     g_array_new ();
    0x0000a1fa mov r1, r4                                            |     r1 = r4;
    0x0000a1fc mov r8, r0                                            |     r8 = r0;
    0x0000a1fe blx 0x5318                                            |     wsd_services_get_services ();
    0x0000a202 ldr.w r1, [r8, 4]                                     |     r1 = *((r8 + 4));
    0x0000a206 mov r0, r7                                            |     r0 = r7;
    0x0000a208 str.w r1, [sb]                                        |     __asm ("str.w r1, [sb]");
    0x0000a20c add.w r1, r1, r1, lsl 1                               |     r1 += (r1 << 1);
    0x0000a210 lsls r1, r1, 4                                        |     r1 <<= 4;
    0x0000a212 blx 0x4ee0                                            |     xsoap_malloc0 ();
    0x0000a216 str.w r0, [sl]                                        |     __asm ("str.w r0, [sl]");
    0x0000a21a mov r0, r7                                            |     r0 = r7;
    0x0000a21c blx 0x4fdc                                            |     r0 = wsd_get_wsscheme_addr_userdata ();
    0x0000a220 mov r4, r0                                            |     r4 = r0;
    0x0000a222 mov r0, r7                                            |     r0 = r7;
    0x0000a224 blx 0x4eec                                            |     r0 = wsd_get_wsservice_userdata ();
    0x0000a228 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000a22a beq.w 0xa380                                          |         goto label_3;
                                                                     |     }
    0x0000a22e ldr r3, [r0]                                          |     r3 = *(r0);
    0x0000a230 str r3, [sp, 8]                                       |     var_8h = r3;
                                                                     | label_2:
    0x0000a232 add.w fp, sp, 0x1c                                    |     
    0x0000a236 mov r1, r4                                            |     r1 = r4;
    0x0000a238 mov.w r2, 0x100                                       |     r2 = 0x100;
    0x0000a23c mov r0, fp                                            |     r0 = fp;
    0x0000a23e blx 0x5960                                            |     fcn_00005960 ();
    0x0000a242 ldr r1, [pc, 0x14c]                                   |     
    0x0000a244 sub.w r3, fp, r0                                      |     r3 = fp - r0;
    0x0000a248 add.w r3, r3, 0x100                                   |     r3 += 0x100;
    0x0000a24c movs r2, 2                                            |     r2 = 2;
    0x0000a24e mov r4, r0                                            |     r4 = r0;
    0x0000a250 add r1, pc                                            |     r1 = 0x145e6;
    0x0000a252 sub.w r4, r4, fp                                      |     r4 -= fp;
    0x0000a256 blx 0x4f04                                            |     memcpy_chk ();
    0x0000a25a ldr.w r3, [sb]                                        |     r3 = *(sb);
    0x0000a25e cmp r3, 0                                             |     
    0x0000a260 ittt gt                                               |     
                                                                     |     if (r3 <= 0) {
    0x0000a262 addgt r3, r4, 2                                       |         r3 = r4 + 2;
                                                                     |     }
                                                                     |     if (r3 <= 0) {
    0x0000a264 movgt r5, 0                                           |         r5 = 0;
                                                                     |     }
                                                                     |     if (r3 <= 0) {
    0x0000a266 strgt r3, [sp, 0x14]                                  |         var_14h = r3;
                                                                     |     }
                                                                     |     if (r3 > 0) {
    0x0000a268 bgt 0xa2d2                                            |         goto label_4;
                                                                     |     }
    0x0000a26a b 0xa32c                                              |     goto label_5;
                                                                     |     do {
    0x0000a26c ldr r0, [r4, 8]                                       |         r0 = *((r4 + 8));
    0x0000a26e blx 0x58f0                                            |         fcn_000058f0 ();
    0x0000a272 ldr r3, [sp, 0x14]                                    |         r3 = var_14h;
    0x0000a274 adds r1, r0, r3                                       |         r1 = r0 + r3;
    0x0000a276 mov r0, r7                                            |         r0 = r7;
    0x0000a278 blx 0x57dc                                            |         fcn_000057dc ();
    0x0000a27c mov r1, fp                                            |         r1 = fp;
    0x0000a27e mov sl, r0                                            |         sl = r0;
    0x0000a280 blx 0x57e8                                            |         fcn_000057e8 ();
    0x0000a284 ldr r1, [r4, 8]                                       |         r1 = *((r4 + 8));
    0x0000a286 blx 0x57e8                                            |         fcn_000057e8 ();
                                                                     | label_0:
    0x0000a28a movs r1, 8                                            |         r1 = 8;
    0x0000a28c mov r0, r7                                            |         r0 = r7;
    0x0000a28e str.w sl, [r6, 4]                                     |         __asm ("str.w sl, [r6, 4]");
    0x0000a292 blx 0x57dc                                            |         fcn_000057dc ();
    0x0000a296 str r0, [r6, 0xc]                                     |         *((r6 + 0xc)) = r0;
    0x0000a298 ldr r3, [r4, 0x10]                                    |         r3 = *((r4 + 0x10));
    0x0000a29a str r3, [r0]                                          |         *(r0) = r3;
    0x0000a29c ldr r3, [r6, 0xc]                                     |         r3 = *((r6 + 0xc));
    0x0000a29e ldr r2, [r4, 0x14]                                    |         r2 = *((r4 + 0x14));
    0x0000a2a0 str r2, [r3, 4]                                       |         *((r3 + 4)) = r2;
    0x0000a2a2 ldr r3, [sp, 0x10]                                    |         r3 = var_10h;
                                                                     |         if (r3 != 0) {
    0x0000a2a4 cbz r3, 0xa2b0                                        |             
    0x0000a2a6 ldr r3, [r4, 0xc]                                     |             r3 = *((r4 + 0xc));
                                                                     |             if (r3 == 0) {
    0x0000a2a8 cbz r3, 0xa2b0                                        |                 goto label_1;
                                                                     |             }
    0x0000a2aa ldrb r3, [r3]                                         |             r3 = *(r3);
    0x0000a2ac cmp r3, 0                                             |             
                                                                     |             if (r3 != 0) {
    0x0000a2ae bne 0xa350                                            |                 goto label_6;
                                                                     |             }
                                                                     |         }
                                                                     | label_1:
    0x0000a2b0 ldr r0, [r4, 4]                                       |         r0 = *((r4 + 4));
    0x0000a2b2 adds r5, 1                                            |         r5++;
    0x0000a2b4 blx 0x56a4                                            |         fcn_000056a4 ();
    0x0000a2b8 ldr r0, [r4, 8]                                       |         r0 = *((r4 + 8));
    0x0000a2ba blx 0x56a4                                            |         fcn_000056a4 ();
    0x0000a2be ldr r0, [r4]                                          |         r0 = *(r4);
    0x0000a2c0 blx 0x56a4                                            |         fcn_000056a4 ();
    0x0000a2c4 mov r0, r4                                            |         r0 = r4;
    0x0000a2c6 blx 0x56a4                                            |         fcn_000056a4 ();
    0x0000a2ca ldr.w r3, [sb]                                        |         r3 = *(sb);
    0x0000a2ce cmp r3, r5                                            |         
                                                                     |         if (r3 <= r5) {
    0x0000a2d0 ble 0xa32c                                            |             goto label_5;
                                                                     |         }
                                                                     | label_4:
    0x0000a2d2 ldr.w r1, [r8]                                        |         r1 = *(r8);
    0x0000a2d6 add.w r3, r5, r5, lsl 1                               |         r3 = r5 + (r5 << 1);
    0x0000a2da ldr r2, [sp, 0xc]                                     |         r2 = var_ch;
    0x0000a2dc lsl.w sl, r3, 4                                       |         sl = r3 << 4;
    0x0000a2e0 ldr.w r4, [r1, r5, lsl 2]                             |         offset_0 = r5 << 2;
                                                                     |         r4 = *((r1 + offset_0));
    0x0000a2e4 ldr r2, [r2]                                          |         r2 = *(r2);
    0x0000a2e6 ldr r0, [r4]                                          |         r0 = *(r4);
    0x0000a2e8 add.w r6, r2, sl                                      |         r6 = r2 + sl;
    0x0000a2ea lsls r2, r1, 0x18                                     |         r2 = r1 << 0x18;
    0x0000a2ec str r2, [sp, 4]                                       |         var_4h = r2;
    0x0000a2ee blx 0x58f0                                            |         r0 = fcn_000058f0 ();
    0x0000a2f2 adds r1, r0, 1                                        |         r1 = r0 + 1;
    0x0000a2f4 mov r0, r7                                            |         r0 = r7;
    0x0000a2f6 blx 0x57dc                                            |         fcn_000057dc ();
    0x0000a2fa ldr r2, [sp, 4]                                       |         r2 = var_4h;
    0x0000a2fc str.w r0, [r2, sl]                                    |         __asm ("str.w r0, [r2, sl]");
    0x0000a300 ldr r1, [r4]                                          |         r1 = *(r4);
    0x0000a302 blx 0x54d4                                            |         strcpy (r0, r1)
    0x0000a306 ldr r3, [sp, 8]                                       |         r3 = var_8h;
    0x0000a308 cmp r3, 0                                             |         
    0x0000a30a bne 0xa26c                                            |         
                                                                     |     } while (r3 != 0);
    0x0000a30c ldr r0, [r4, 4]                                       |     r0 = *((r4 + 4));
    0x0000a30e blx 0x58f0                                            |     fcn_000058f0 ();
    0x0000a312 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0000a314 adds r1, r0, r3                                       |     r1 = r0 + r3;
    0x0000a316 mov r0, r7                                            |     r0 = r7;
    0x0000a318 blx 0x57dc                                            |     fcn_000057dc ();
    0x0000a31c mov r1, fp                                            |     r1 = fp;
    0x0000a31e mov sl, r0                                            |     sl = r0;
    0x0000a320 blx 0x57e8                                            |     fcn_000057e8 ();
    0x0000a324 ldr r1, [r4, 4]                                       |     r1 = *((r4 + 4));
    0x0000a326 blx 0x57e8                                            |     fcn_000057e8 ();
    0x0000a32a b 0xa28a                                              |     goto label_0;
                                                                     | label_5:
    0x0000a32c movs r1, 1                                            |     r1 = 1;
    0x0000a32e mov r0, r8                                            |     r0 = r8;
    0x0000a330 blx 0x4f1c                                            |     g_array_free ();
    0x0000a334 ldr r2, [pc, 0x5c]                                    |     
    0x0000a336 ldr r3, [pc, 0x54]                                    |     r3 = *(0xa38e);
    0x0000a338 add r2, pc                                            |     r2 = 0x146d0;
    0x0000a33a ldr r3, [r2, r3]                                      |     r3 = *(0x146d0);
    0x0000a33c ldr r2, [r3]                                          |     r2 = *(0x146d0);
    0x0000a33e ldr r3, [sp, 0x11c]                                   |     r3 = var_11ch;
    0x0000a340 eors r2, r3                                           |     r2 ^= r3;
    0x0000a342 mov.w r3, 0                                           |     r3 = 0;
                                                                     |     if (r2 == r3) {
    0x0000a346 bne 0xa384                                            |         
    0x0000a348 movs r0, 1                                            |         r0 = 1;
    0x0000a34a add sp, 0x124                                         |         
    0x0000a34c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_6:
    0x0000a350 movs r1, 4                                            |         r1 = 4;
    0x0000a352 mov r0, r7                                            |         r0 = r7;
    0x0000a354 blx 0x57dc                                            |         fcn_000057dc ();
    0x0000a358 str r0, [r6, 8]                                       |         *((r6 + 8)) = r0;
    0x0000a35a str r0, [sp, 4]                                       |         var_4h = r0;
    0x0000a35c ldr r0, [r4, 0xc]                                     |         r0 = *((r4 + 0xc));
    0x0000a35e blx 0x58f0                                            |         r0 = fcn_000058f0 ();
    0x0000a362 adds r1, r0, 1                                        |         r1 = r0 + 1;
    0x0000a364 mov r0, r7                                            |         r0 = r7;
    0x0000a366 blx 0x57dc                                            |         fcn_000057dc ();
    0x0000a36a ldr r3, [sp, 4]                                       |         r3 = var_4h;
    0x0000a36c str r0, [r3]                                          |         *(r3) = r0;
    0x0000a36e ldr r3, [r6, 8]                                       |         r3 = *((r6 + 8));
    0x0000a370 ldr r1, [r4, 0xc]                                     |         r1 = *((r4 + 0xc));
    0x0000a372 ldr r0, [r3]                                          |         r0 = *(r3);
    0x0000a374 blx 0x54d4                                            |         strcpy (r0, r1)
    0x0000a378 ldr r0, [r4, 0xc]                                     |         r0 = *((r4 + 0xc));
    0x0000a37a blx 0x56a4                                            |         fcn_000056a4 ();
    0x0000a37e b 0xa2b0                                              |         goto label_1;
                                                                     | label_3:
    0x0000a380 str r0, [sp, 8]                                       |         var_8h = r0;
    0x0000a382 b 0xa232                                              |         goto label_2;
                                                                     |     }
    0x0000a384 blx 0x561c                                            |     fcn_0000561c ();
    0x0000a388 ldrh r4, [r2, 0xa]                                    |     r4 = *((r2 + 0xa));
    0x0000a38a movs r1, r0                                           |     r1 = r0;
    0x0000a38c lsls r0, r3, 0x12                                     |     r0 = r3 << 0x12;
    0x0000a38e movs r0, r0                                           |     
    0x0000a390 ldr r0, [r6, 0x40]                                    |     r0 = *((r6 + 0x40));
    0x0000a392 movs r0, r0                                           |     
    0x0000a394 strh r4, [r7, 0x3e]                                   |     *((r7 + 0x3e)) = r4;
    0x0000a396 movs r1, r0                                           |     r1 = r0;
                                                                     | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libimpl_wsd_tds.so @ 0x70b8 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.__tds__GetCACertificates ()                  | void tds_GetCACertificates (int16_t arg_0h, int16_t arg_4h, int16_t arg_8h, int16_t arg_ch, int16_t arg_68h, int16_t arg_84h, int16_t arg_108h, int16_t arg_2d0h, int16_t arg1, int16_t arg3) {
                                                             |     int16_t var_70h;
                                                             |     int16_t var_80h;
                                                             |     int16_t var_144h;
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_20h;
                                                             |     int16_t var_24h;
                                                             |     int16_t var_28h;
                                                             |     int16_t var_2ch;
                                                             |     int16_t var_30h;
                                                             |     int16_t var_34h;
                                                             |     int16_t var_38h;
                                                             |     int16_t var_3ch;
                                                             |     int16_t var_40h;
                                                             |     int16_t var_44h;
                                                             |     r0 = arg1;
                                                             |     r2 = arg3;
    0x000070b8 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x000070bc sub sp, 0x8c                                  |     
    0x000070be str r2, [sp, 0x70]                            |     var_70h = r2;
    0x000070c0 movs r4, 0                                    |     r4 = 0;
    0x000070c2 mov r7, r0                                    |     r7 = r0;
    0x000070c4 ldr r2, [pc, 0x1a8]                           |     
    0x000070c6 ldr r3, [pc, 0x1ac]                           |     r3 = *(0x7276);
    0x000070c8 ldr r1, [pc, 0x1ac]                           |     
    0x000070ca add r2, pc                                    |     r2 = 0xe33e;
    0x000070cc ldr r3, [r2, r3]                              |     
    0x000070ce add r1, pc                                    |     r1 = 0xe34a;
    0x000070d0 ldr r3, [r3]                                  |     r3 = *(0xe33e);
    0x000070d2 str r3, [sp, 0x84]                            |     var_144h = r3;
    0x000070d4 mov.w r3, 0                                   |     r3 = 0;
    0x000070d8 str r4, [sp, 0x80]                            |     var_80h = r4;
    0x000070da blx 0x5414                                    |     r0 = wssecurity_uh_allowed_access ();
    0x000070de cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000070e0 beq.w 0x7244                                  |         
    0x000070e4 blx 0x56f8                                    |         r0 = fcn_000056f8 ();
    0x000070e8 mov sb, r0                                    |         sb = r0;
    0x000070ea blx 0x56f8                                    |         r0 = fcn_000056f8 ();
    0x000070ee mov r5, r0                                    |         r5 = r0;
    0x000070f0 blx 0x56f8                                    |         fcn_000056f8 ();
    0x000070f2 invalid                                       |         
    0x0000718c ldr r2, [pc, 0xf0]                            |         
    0x0000718e ldr r3, [pc, 0xe4]                            |         r3 = *(0x7276);
    0x00007190 add r2, pc                                    |         r2 = 0xe414;
    0x00007192 ldr r3, [r2, r3]                              |         r3 = *(0xe414);
    0x00007194 ldr r2, [r3]                                  |         r2 = *(0xe414);
    0x00007196 ldr r3, [sp, 0x84]                            |         r3 = *(arg_84h);
    0x00007198 eors r2, r3                                   |         r2 ^= r3;
    0x0000719a mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0000719e bne 0x726a                                    |             goto label_12;
                                                             |         }
    0x000071a0 mov r0, r8                                    |         r0 = r8;
    0x000071a2 add sp, 0x8c                                  |         
    0x000071a4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             |     }
    0x00007244 mov r2, r0                                    |     r2 = r0;
    0x00007246 movs r1, 0xd                                  |     r1 = 0xd;
    0x00007248 mov r0, r7                                    |     r0 = r7;
    0x0000724a mov.w r8, 0xc                                 |     r8 = 0xc;
    0x0000724e blx 0x527c                                    |     soap_fault_generic ();
    0x00007250 invalid                                       |     
                                                             | label_12:
    0x0000726a blx 0x561c                                    |     fcn_0000561c ();
    0x0000726e nop                                           |     
    0x00007270 rev16 r2, r5                                  |     __asm ("rev16 r2, r5");
    0x00007272 movs r1, r0                                   |     r1 = r0;
    0x00007274 lsls r0, r3, 0x12                             |     r0 = r3 << 0x12;
    0x00007276 movs r0, r0                                   |     
    0x00007278 str r6, [sp, 0x68]                            |     *(arg_68h) = r6;
    0x0000727a movs r0, r0                                   |     
    0x0000727c str r5, [sp, 0x2d0]                           |     *(arg_2d0h) = r5;
    0x0000727e movs r0, r0                                   |     
                                                             |     if (r4 == 0) {
    0x00007280 cbnz r4, 0x72ac                               |         
    0x00007282 movs r1, r0                                   |         r1 = r0;
    0x00007284 str r5, [sp, 0x108]                           |         *(arg_108h) = r5;
    0x00007286 movs r0, r0                                   |         
                                                             |     }
    0x000072ac lsls r0, r0, 0xc                              |     r0 <<= 0xc;
    0x000072ae blx 0x5414                                    |     wssecurity_uh_allowed_access ();
    0x000072b0 ldm.w r2!, {fp, sp}                           |     fp = *(r2!);
                                                             |     sp = *((r2! + 4));
                                                             |     if (r0 == r0) {
    0x000072b4 beq.w 0x7702                                  |         goto label_13;
                                                             |     }
    0x000072b8 cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x000072ba beq.w 0x775e                                  |         goto label_14;
                                                             |     }
    0x000072be ldr r1, [r5, 4]                               |     r1 = *((r5 + 4));
    0x000072c0 cmp r1, 0                                     |     
                                                             |     if (r1 == 0) {
    0x000072c2 beq.w 0x74a4                                  |         goto label_15;
                                                             |     }
    0x000072c6 ldr r0, [r5]                                  |     r0 = *(r5);
    0x000072c8 cmp r0, 0                                     |     
                                                             |     if (r0 <= 0) {
    0x000072ca ble.w 0x776c                                  |         goto label_16;
                                                             |     }
    0x000072ce movs r2, 0                                    |     r2 = 0;
    0x000072d0 subs r1, 4                                    |     r1 -= 4;
    0x000072d2 mov r7, r2                                    |     r7 = r2;
    0x000072d4 mov r8, r2                                    |     r8 = r2;
    0x000072d6 mov r5, r2                                    |     r5 = r2;
    0x000072d8 mov fp, r2                                    |     
    0x000072da strd r2, r2, [sp, 0x20]                       |     __asm ("strd r2, r2, [var_10h]");
                                                             |     do {
    0x000072de ldr r3, [r1, 4]!                              |         r3 = *((r1 += 4));
    0x000072e2 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x000072e4 beq.w 0x74a4                                  |             goto label_15;
                                                             |         }
    0x000072e8 subs r3, 1                                    |         r3--;
    0x000072ea cmp r3, 5                                     |         
                                                             |         if (r3 > 5) {
    0x000072ec bhi.w 0x77a6                                  |             goto label_17;
                                                             |         }
                                                             |         /* switch table (6 cases) at 0x72f4 */
    0x000072f0 tbb [pc, r3]                                  |         __asm ("tbb [0x000072f8]");
    0x000072fa mov.w r8, 1                                   |         r8 = 1;
                                                             | label_0:
    0x000072fe adds r2, 1                                    |         r2++;
    0x00007300 cmp r2, r0                                    |         
    0x00007302 bne 0x72de                                    |         
                                                             |     } while (r2 != r0);
    0x00007304 movs r1, 0x34                                 |     r1 = 0x34;
    0x00007306 mov r0, r4                                    |     r0 = r4;
    0x00007308 blx 0x4ee0                                    |     xsoap_malloc0 ();
    0x0000730a stcl p1, c15, [sl, 0x34]!                     |     __asm ("stcl p1, c15, [sl, 0x34]!");
    0x0000730e lsrs r4, r0, 9                                |     r4 = r0 >> 9;
    0x00007310 str.w r0, [sb]                                |     __asm ("str.w r0, [sb]");
    0x00007314 mov r6, r0                                    |     r6 = r0;
    0x00007316 mov r0, r4                                    |     r0 = r4;
    0x00007318 blx 0x4fdc                                    |     wsd_get_wsscheme_addr_userdata ();
    0x0000731c mov.w r2, 0x100                               |     r2 = 0x100;
    0x00007320 mov r1, r0                                    |     r1 = r0;
    0x00007322 mov r0, sl                                    |     r0 = sl;
    0x00007324 blx 0x5960                                    |     r0 = fcn_00005960 ();
    0x00007326 adds.w fp, ip, r0, asr 26                     |     
    0x0000732a lsls r2, r1, 0xc                              |     r2 = r1 << 0xc;
    0x0000732c str r3, [sp, 0x28]                            |     var_28h = r3;
    0x0000732e cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x00007330 bne.w 0x747e                                  |         goto label_18;
                                                             |     }
    0x00007332 strh r5, [r4, 4]                              |     *((r4 + 4)) = r5;
                                                             | label_6:
    0x00007334 cmp.w fp, 0                                   |     
                                                             |     if (fp != 0) {
    0x00007338 bne.w 0x74f0                                  |         goto label_19;
                                                             |     }
                                                             | label_1:
    0x0000733c ldr r3, [sp, 0x20]                            |     r3 = var_20h;
    0x0000733e orrs.w sb, r7, r3                             |     sb = r7 | r3;
                                                             |     if (sb != r7) {
    0x00007342 beq 0x738c                                    |         
    0x00007344 movs r1, 0x30                                 |         r1 = 0x30;
    0x00007346 mov r0, r4                                    |         r0 = r4;
    0x00007348 blx 0x4ee0                                    |         xsoap_malloc0 ();
    0x0000734c str r0, [r6, 8]                               |         *((r6 + 8)) = r0;
    0x0000734e movs r0, 0                                    |         r0 = 0;
    0x00007350 blx 0x50cc                                    |         r0 = wsd_util_event_xaddr_path ();
    0x00007354 mov fp, r0                                    |         
    0x00007356 mov sb, r7                                    |         sb = r7;
    0x00007358 blx 0x58f0                                    |         fcn_000058f0 ();
    0x0000735c ldr r3, [sp, 0x28]                            |         r3 = var_28h;
    0x0000735e adds r1, r3, 1                                |         r1 = r3 + 1;
    0x00007360 ldr r3, [r6, 8]                               |         r3 = *((r6 + 8));
    0x00007362 add r1, r0                                    |         r1 += r0;
    0x00007364 mov r0, r4                                    |         r0 = r4;
    0x00007366 str r3, [sp, 0x20]                            |         var_20h = r3;
    0x00007368 blx 0x57dc                                    |         fcn_000057dc ();
    0x0000736c mov r1, sl                                    |         r1 = sl;
    0x0000736e mov r7, r0                                    |         r7 = r0;
    0x00007370 blx 0x5174                                    |         stpcpy ();
    0x00007372 invalid                                       |         
    0x00007376 blx 0x54d4                                    |         strcpy (r0, r1)
    0x0000737a ldr r3, [sp, 0x20]                            |         r3 = var_20h;
    0x0000737c str r7, [r3]                                  |         *(r3) = r7;
    0x0000737e movs r3, 0                                    |         r3 = 0;
    0x00007380 ldr r2, [r6, 8]                               |         r2 = *((r6 + 8));
    0x00007382 str r3, [r2, 4]                               |         *((r2 + 4)) = r3;
    0x00007384 ldr r2, [r6, 8]                               |         r2 = *((r6 + 8));
    0x00007386 str r3, [r2, 8]                               |         *((r2 + 8)) = r3;
    0x00007388 ldr r2, [r6, 8]                               |         r2 = *((r6 + 8));
    0x0000738a str r3, [r2, 0xc]                             |         *((r2 + 0xc)) = r3;
                                                             |     }
    0x0000738c ldr r2, [sp, 0x24]                            |     r2 = var_24h;
    0x0000738e orrs.w r3, r2, sb                             |     r3 = r2 | sb;
                                                             |     if (r3 != r2) {
    0x00007392 beq 0x73e0                                    |         
    0x00007394 cmp r2, 0                                     |         
                                                             |         if (r2 == 0) {
    0x00007396 beq.w 0x766e                                  |             goto label_20;
                                                             |         }
    0x0000739a ldr.w r0, [pc, 0x424]                         |         
    0x0000739e add r0, pc                                    |         r0 = 0xeb64;
    0x000073a0 blx 0x539c                                    |         r0 = media_is_onvif_profile_supported ();
    0x000073a4 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x000073a6 beq 0x7496                                    |             goto label_21;
                                                             |         }
                                                             | label_3:
    0x000073a8 movs r1, 0x1c                                 |         r1 = 0x1c;
    0x000073aa mov r0, r4                                    |         r0 = r4;
    0x000073ac blx 0x4ee0                                    |         xsoap_malloc0 ();
    0x000073b0 str r0, [r6, 0xc]                             |         *((r6 + 0xc)) = r0;
    0x000073b2 movs r0, 0                                    |         r0 = 0;
    0x000073b4 blx 0x509c                                    |         r0 = wsd_util_imaging_xaddr_path ();
    0x000073b8 mov fp, r0                                    |         
    0x000073ba blx 0x58f0                                    |         fcn_000058f0 ();
    0x000073be ldr r3, [sp, 0x28]                            |         r3 = var_28h;
    0x000073c0 adds r1, r3, 1                                |         r1 = r3 + 1;
    0x000073c2 ldr r3, [r6, 0xc]                             |         r3 = *((r6 + 0xc));
    0x000073c4 add r1, r0                                    |         r1 += r0;
    0x000073c6 mov r0, r4                                    |         r0 = r4;
    0x000073c8 str r3, [sp, 0x20]                            |         var_20h = r3;
    0x000073ca blx 0x57dc                                    |         fcn_000057dc ();
    0x000073ce mov r1, sl                                    |         r1 = sl;
    0x000073d0 mov r7, r0                                    |         r7 = r0;
    0x000073d2 blx 0x5174                                    |         stpcpy ();
    0x000073d6 mov r1, fp                                    |         r1 = fp;
    0x000073d8 blx 0x54d4                                    |         strcpy (r0, r1)
    0x000073dc ldr r3, [sp, 0x20]                            |         r3 = var_20h;
    0x000073de str r7, [r3]                                  |         *(r3) = r7;
                                                             |     }
                                                             | label_2:
    0x000073e0 cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x000073e2 bne 0x7496                                    |         goto label_21;
                                                             |     }
                                                             | label_10:
    0x000073e4 orrs.w sb, r8, sb                             |     sb = r8 | sb;
                                                             |     if (sb == r8) {
    0x000073e8 beq 0x7446                                    |         goto label_4;
                                                             |     }
    0x000073ea cmp.w r8, 0                                   |     
                                                             |     if (r8 == 0) {
    0x000073ee beq.w 0x767e                                  |         goto label_22;
                                                             |     }
    0x000073f2 blx 0x4f58                                    |     wsd_util_ptz_service_disabled ();
    0x000073f6 ldr r1, [pc, 0x3cc]                           |     
    0x000073f8 mov r7, r0                                    |     r7 = r0;
    0x000073fa ldr r0, [pc, 0x3cc]                           |     
    0x000073fc movs r2, 0                                    |     r2 = 0;
    0x000073fe add r1, pc                                    |     r1 = 0xebc8;
    0x00007400 add r0, pc                                    |     r0 = 0xebce;
    0x00007402 blx 0x5634                                    |     r0 = fcn_00005634 ();
    0x00007406 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00007408 beq 0x7496                                    |         goto label_21;
                                                             |     }
    0x0000740a blx 0x56a4                                    |     fcn_000056a4 ();
    0x0000740e cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x00007410 bne 0x7496                                    |         goto label_21;
                                                             |     }
                                                             | label_5:
    0x00007412 movs r1, 0x24                                 |     r1 = 0x24;
    0x00007414 mov r0, r4                                    |     r0 = r4;
    0x00007416 blx 0x4ee0                                    |     xsoap_malloc0 ();
    0x0000741a str r0, [r6, 0x14]                            |     *((r6 + 0x14)) = r0;
    0x0000741c movs r0, 0                                    |     r0 = 0;
    0x0000741e blx 0x5210                                    |     r0 = wsd_util_ptz_xaddr_path ();
    0x00007422 mov r7, r0                                    |     r7 = r0;
    0x00007424 blx 0x58f0                                    |     fcn_000058f0 ();
    0x00007428 ldr r1, [sp, 0x28]                            |     r1 = var_28h;
    0x0000742a ldr r6, [r6, 0x14]                            |     r6 = *((r6 + 0x14));
    0x0000742c adds r1, 1                                    |     r1++;
    0x0000742e add r1, r0                                    |     r1 += r0;
    0x00007430 mov r0, r4                                    |     r0 = r4;
    0x00007432 blx 0x57dc                                    |     fcn_000057dc ();
    0x00007436 mov r1, sl                                    |     r1 = sl;
    0x00007438 mov r4, r0                                    |     r4 = r0;
    0x0000743a blx 0x5174                                    |     stpcpy ();
    0x0000743e mov r1, r7                                    |     r1 = r7;
    0x00007440 blx 0x54d4                                    |     strcpy (r0, r1)
    0x00007444 str r4, [r6]                                  |     *(r6) = r4;
                                                             |     do {
                                                             | label_4:
    0x00007446 ldr r2, [pc, 0x384]                           |         
    0x00007448 ldr r3, [pc, 0x36c]                           |         r3 = *(0x77b8);
    0x0000744a add r2, pc                                    |         r2 = 0xec1c;
    0x0000744c ldr r3, [r2, r3]                              |         r3 = *(0xec1c);
    0x0000744e ldr r2, [r3]                                  |         r2 = *(0xec1c);
    0x00007450 ldr r3, [sp, 0x144]                           |         r3 = *((sp + 0x144));
    0x00007452 eors r2, r3                                   |         r2 ^= r3;
    0x00007454 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00007458 bne.w 0x779e                                  |             goto label_23;
                                                             |         }
    0x0000745c mov r0, r5                                    |         r0 = r5;
    0x0000745e add sp, 0x14c                                 |         
    0x00007460 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
    0x00007464 movs r5, 1                                    |         r5 = 1;
    0x00007466 b 0x72fe                                      |         goto label_0;
    0x00007468 movs r7, 1                                    |         r7 = 1;
    0x0000746a b 0x72fe                                      |         goto label_0;
    0x0000746c mov.w fp, 1                                   |         
    0x00007470 b 0x72fe                                      |         goto label_0;
    0x00007472 movs r3, 1                                    |         r3 = 1;
    0x00007474 str r3, [sp, 0x24]                            |         var_24h = r3;
    0x00007476 b 0x72fe                                      |         goto label_0;
    0x00007478 movs r3, 1                                    |         r3 = 1;
    0x0000747a str r3, [sp, 0x20]                            |         var_20h = r3;
    0x0000747c b 0x72fe                                      |         goto label_0;
                                                             | label_18:
    0x0000747e ldr r0, [pc, 0x350]                           |         
    0x00007480 add r0, pc                                    |         r0 = 0xec56;
    0x00007482 blx 0x539c                                    |         r0 = media_is_onvif_profile_supported ();
    0x00007486 mov r7, r0                                    |         r7 = r0;
    0x00007488 ldr r0, [pc, 0x348]                           |         
    0x0000748a add r0, pc                                    |         r0 = 0xec62;
    0x0000748c blx 0x539c                                    |         r0 = media_is_onvif_profile_supported ();
    0x00007490 orrs r7, r0                                   |         r7 |= r0;
                                                             |         if (r7 != r0) {
    0x00007492 bne.w 0x77a2                                  |             goto label_24;
                                                             |         }
                                                             | label_21:
    0x00007496 movs r2, 0                                    |         r2 = 0;
    0x00007498 movs r1, 8                                    |         r1 = 8;
    0x0000749a mov r0, r4                                    |         r0 = r4;
    0x0000749c movs r5, 0xc                                  |         r5 = 0xc;
    0x0000749e blx 0x5258                                    |         soap_fault_device_management ();
    0x000074a2 b 0x7446                                      |         
                                                             |     } while (1);
                                                             | label_15:
    0x000074a4 movs r1, 0x34                                 |     r1 = 0x34;
    0x000074a6 mov r0, r4                                    |     r0 = r4;
    0x000074a8 blx 0x4ee0                                    |     r0 = xsoap_malloc0 ();
    0x000074ac mov r6, r0                                    |     r6 = r0;
    0x000074ae add.w sl, sp, 0x44                            |     sl += var_44h;
    0x000074b2 mov r0, r4                                    |     r0 = r4;
    0x000074b4 str.w r6, [sb]                                |     __asm ("str.w r6, [sb]");
    0x000074b8 blx 0x4fdc                                    |     wsd_get_wsscheme_addr_userdata ();
    0x000074bc mov.w r2, 0x100                               |     r2 = 0x100;
    0x000074c0 mov r1, r0                                    |     r1 = r0;
    0x000074c2 mov r0, sl                                    |     r0 = sl;
    0x000074c4 blx 0x5960                                    |     r0 = fcn_00005960 ();
    0x000074c8 mov r3, r0                                    |     r3 = r0;
    0x000074ca ldr r0, [pc, 0x30c]                           |     
    0x000074cc sub.w r3, r3, sl                              |     r3 -= sl;
    0x000074d0 str r3, [sp, 0x28]                            |     var_28h = r3;
    0x000074d2 add r0, pc                                    |     r0 = 0xecb0;
    0x000074d4 blx 0x539c                                    |     r0 = media_is_onvif_profile_supported ();
    0x000074d8 mov r5, r0                                    |     r5 = r0;
    0x000074da ldr r0, [pc, 0x300]                           |     
    0x000074dc add r0, pc                                    |     r0 = 0xecbe;
    0x000074de blx 0x539c                                    |     r0 = media_is_onvif_profile_supported ();
    0x000074e2 orrs r5, r0                                   |     r5 |= r0;
                                                             |     if (r5 != r0) {
    0x000074e4 bne.w 0x76a4                                  |         goto label_25;
                                                             |     }
    0x000074e8 mov r8, r5                                    |     r8 = r5;
    0x000074ea movs r7, 1                                    |     r7 = 1;
    0x000074ec strd r5, r5, [sp, 0x20]                       |     __asm ("strd r5, r5, [var_10h]");
                                                             | label_19:
    0x000074f0 movs r1, 0x30                                 |     r1 = 0x30;
    0x000074f2 mov r0, r4                                    |     r0 = r4;
    0x000074f4 blx 0x4ee0                                    |     xsoap_malloc0 ();
    0x000074f8 str r0, [r6, 4]                               |     *((r6 + 4)) = r0;
    0x000074fa movs r0, 0                                    |     r0 = 0;
    0x000074fc blx 0x5198                                    |     r0 = wsd_util_device_xaddr_path ();
    0x00007500 mov fp, r0                                    |     
    0x00007502 blx 0x58f0                                    |     fcn_000058f0 ();
    0x00007506 ldr r3, [sp, 0x28]                            |     r3 = var_28h;
    0x00007508 adds r1, r3, 1                                |     r1 = r3 + 1;
    0x0000750a ldr r3, [r6, 4]                               |     r3 = *((r6 + 4));
    0x0000750c add r1, r0                                    |     r1 += r0;
    0x0000750e mov r0, r4                                    |     r0 = r4;
    0x00007510 str r3, [sp, 0x2c]                            |     var_2ch = r3;
    0x00007512 blx 0x57dc                                    |     fcn_000057dc ();
    0x00007516 mov r1, sl                                    |     r1 = sl;
    0x00007518 mov sb, r0                                    |     sb = r0;
    0x0000751a blx 0x5174                                    |     stpcpy ();
    0x0000751e mov r1, fp                                    |     r1 = fp;
    0x00007520 blx 0x54d4                                    |     strcpy (r0, r1)
    0x00007524 ldr r3, [sp, 0x2c]                            |     r3 = var_2ch;
    0x00007526 movs r1, 0x2c                                 |     r1 = 0x2c;
    0x00007528 mov r0, r4                                    |     r0 = r4;
    0x0000752a str.w sb, [r3]                                |     __asm ("str.w sb, [r3]");
    0x0000752e mov.w sb, 1                                   |     sb = 1;
    0x00007532 blx 0x4ee0                                    |     xsoap_malloc0 ();
    0x00007536 movs r1, 4                                    |     r1 = 4;
    0x00007538 mov fp, r0                                    |     
    0x0000753a mov r0, r4                                    |     r0 = r4;
    0x0000753c blx 0x57dc                                    |     fcn_000057dc ();
    0x00007540 movs r1, 4                                    |     r1 = 4;
    0x00007542 str.w r0, [fp]                                |     __asm ("str.w r0, [fp]");
    0x00007546 str.w sb, [r0]                                |     __asm ("str.w sb, [r0]");
    0x0000754a mov r0, r4                                    |     r0 = r4;
    0x0000754c blx 0x57dc                                    |     fcn_000057dc ();
    0x00007550 movs r1, 4                                    |     r1 = 4;
    0x00007552 str.w r0, [fp, 4]                             |     __asm ("str.w r0, [arg_4h]");
    0x00007556 str.w sb, [r0]                                |     __asm ("str.w sb, [r0]");
    0x0000755a mov r0, r4                                    |     r0 = r4;
    0x0000755c blx 0x57dc                                    |     fcn_000057dc ();
    0x00007560 movs r1, 4                                    |     r1 = 4;
    0x00007562 str.w r0, [fp, 8]                             |     __asm ("str.w r0, [arg_8h]");
    0x00007566 str.w sb, [r0]                                |     __asm ("str.w sb, [r0]");
    0x0000756a mov r0, r4                                    |     r0 = r4;
    0x0000756c blx 0x57dc                                    |     fcn_000057dc ();
    0x00007570 str.w r0, [fp, 0xc]                           |     __asm ("str.w r0, [arg_ch]");
    0x00007574 movs r1, 0x3c                                 |     r1 = 0x3c;
    0x00007576 str.w sb, [r0]                                |     __asm ("str.w sb, [r0]");
    0x0000757a mov r0, r4                                    |     r0 = r4;
    0x0000757c ldr r3, [r6, 4]                               |     r3 = *((r6 + 4));
    0x0000757e str.w fp, [r3, 4]                             |     __asm ("str.w fp, [r3, 4]");
    0x00007582 mov.w fp, 0                                   |     
    0x00007586 blx 0x4ee0                                    |     xsoap_malloc0 ();
    0x0000758a movs r1, 8                                    |     r1 = 8;
    0x0000758c strd sb, sb, [r0]                             |     __asm ("strd sb, sb, [r0]");
    0x00007590 str.w sb, [r0, 0x10]                          |     __asm ("str.w sb, [r0, 0x10]");
    0x00007594 str.w sb, [r0, 0x18]                          |     __asm ("str.w sb, [r0, 0x18]");
    0x00007598 strd fp, fp, [r0, 8]                          |     __asm ("strd fp, fp, [r0, 8]");
    0x0000759c str.w fp, [r0, 0x14]                          |     __asm ("str.w fp, [r0, 0x14]");
    0x000075a0 str r0, [sp, 0x2c]                            |     var_2ch = r0;
    0x000075a2 mov r0, r4                                    |     r0 = r4;
    0x000075a4 blx 0x4ee0                                    |     xsoap_malloc0 ();
    0x000075a8 ldr r3, [sp, 0x2c]                            |     r3 = var_2ch;
    0x000075aa movs r1, 2                                    |     r1 = 2;
    0x000075ac str r0, [r3, 0x1c]                            |     *((r3 + 0x1c)) = r0;
    0x000075ae str.w sb, [r0]                                |     __asm ("str.w sb, [r0]");
    0x000075b0 str r0, [sp]                                  |     *(sp) = r0;
    0x000075b2 mov r0, r4                                    |     r0 = r4;
    0x000075b4 ldr r2, [r3, 0x1c]                            |     r2 = *((r3 + 0x1c));
    0x000075b6 str r1, [r2, 4]                               |     *((r2 + 4)) = r1;
    0x000075b8 movs r1, 0x24                                 |     r1 = 0x24;
    0x000075ba ldr r2, [r6, 4]                               |     r2 = *((r6 + 4));
    0x000075bc str r3, [r2, 8]                               |     *((r2 + 8)) = r3;
    0x000075be blx 0x4ee0                                    |     xsoap_malloc0 ();
    0x000075c2 movs r1, 4                                    |     r1 = 4;
    0x000075c4 str r0, [sp, 0x30]                            |     var_20h = r0;
    0x000075c6 mov r0, r4                                    |     r0 = r4;
    0x000075c8 blx 0x57dc                                    |     fcn_000057dc ();
    0x000075cc ldr r3, [sp, 0x30]                            |     r3 = var_20h;
    0x000075ce movs r1, 4                                    |     r1 = 4;
    0x000075d0 str r0, [r3]                                  |     *(r3) = r0;
    0x000075d2 mov r0, r4                                    |     r0 = r4;
    0x000075d4 blx 0x57dc                                    |     fcn_000057dc ();
    0x000075d6 invalid                                       |     
    0x000075da add r2, sp, 0x40                              |     r2 += var_30h;
    0x000075dc str r0, [sp, 0x38]                            |     var_28h = r0;
    0x000075de mov r1, fp                                    |     r1 = fp;
    0x000075e0 str r2, [sp, 0x2c]                            |     var_2ch = r2;
    0x000075e2 str r0, [r3, 4]                               |     *((r3 + 4)) = r0;
    0x000075e4 mov r0, sb                                    |     r0 = sb;
    0x000075e6 ldr r3, [r3]                                  |     r3 = *(r3);
    0x000075e8 str.w fp, [r2]                                |     __asm ("str.w fp, [r2]");
    0x000075ec str r3, [sp, 0x3c]                            |     var_2ch = r3;
    0x000075ee blx 0x4ed4                                    |     g_bus_get_sync ();
    0x000075f2 ldr r3, [sp, 0x2c]                            |     r3 = var_2ch;
    0x000075f4 str r0, [sp, 0x34]                            |     var_24h = r0;
    0x000075f6 ldr r3, [r3]                                  |     r3 = *(r3);
    0x000075f8 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000075fa beq.w 0x7714                                  |         goto label_26;
                                                             |     }
                                                             | label_7:
    0x000075fe mov.w sb, 0                                   |     sb = 0;
                                                             | label_9:
    0x00007602 mov r0, r4                                    |     r0 = r4;
    0x00007604 movs r2, 0                                    |     r2 = 0;
    0x00007606 movs r1, 0xf                                  |     r1 = 0xf;
    0x00007608 blx 0x527c                                    |     soap_fault_generic ();
    0x0000760c ldr r3, [sp, 0x2c]                            |     r3 = var_2ch;
    0x0000760e ldr r0, [r3]                                  |     r0 = *(r3);
    0x00007610 blx 0x4fac                                    |     g_error_free ();
                                                             | label_8:
    0x00007614 ldr r3, [sp, 0x34]                            |     r3 = var_24h;
                                                             |     if (r3 != 0) {
    0x00007616 cbz r3, 0x761e                                |         
    0x00007618 mov r0, r3                                    |         r0 = r3;
    0x0000761a blx 0x58e4                                    |         fcn_000058e4 ();
                                                             |     }
    0x0000761e cmp.w fp, 0                                   |     
                                                             |     if (fp != 0) {
    0x00007622 beq 0x762a                                    |         
    0x00007624 mov r0, fp                                    |         r0 = fp;
    0x00007626 blx 0x5740                                    |         fcn_00005740 ();
                                                             |     }
    0x0000762a cmp.w sb, 0                                   |     
                                                             |     if (sb == 0) {
    0x0000762e beq 0x7710                                    |         goto label_27;
                                                             |     }
    0x00007630 ldr r3, [r6, 4]                               |     r3 = *((r6 + 4));
    0x00007632 movs r1, 0x44                                 |     r1 = 0x44;
    0x00007634 ldr r2, [sp, 0x30]                            |     r2 = var_20h;
    0x00007636 mov r0, r4                                    |     r0 = r4;
    0x00007638 mov.w fp, 1                                   |     
    0x0000763c str r2, [r3, 0xc]                             |     *((r3 + 0xc)) = r2;
    0x0000763e blx 0x4ee0                                    |     xsoap_malloc0 ();
    0x00007642 movs r3, 0                                    |     r3 = 0;
    0x00007644 mov sb, r0                                    |     sb = r0;
    0x00007646 strd r3, r3, [r0, 0x10]                       |     __asm ("strd r3, r3, [r0, 0x10]");
    0x0000764a movs r1, 8                                    |     r1 = 8;
    0x0000764c strd r3, r3, [r0, 0x18]                       |     __asm ("strd r3, r3, [r0, 0x18]");
    0x00007650 strd fp, fp, [r0]                             |     __asm ("strd fp, fp, [r0]");
    0x00007654 strd fp, fp, [r0, 8]                          |     __asm ("strd fp, fp, [r0, 8]");
    0x00007658 mov r0, r4                                    |     r0 = r4;
    0x0000765a blx 0x4ee0                                    |     r0 = xsoap_malloc0 ();
    0x0000765e str.w fp, [r0]                                |     __asm ("str.w fp, [r0]");
    0x00007662 str.w r0, [sb, 0x28]                          |     __asm ("str.w r0, [sb, 0x28]");
    0x00007666 ldr r3, [r6, 4]                               |     r3 = *((r6 + 4));
    0x00007668 str.w sb, [r3, 0x10]                          |     __asm ("str.w sb, [r3, 0x10]");
    0x0000766c b 0x733c                                      |     goto label_1;
                                                             | label_20:
    0x0000766e ldr r0, [pc, 0x170]                           |     
    0x00007670 add r0, pc                                    |     r0 = 0xee56;
    0x00007672 blx 0x539c                                    |     r0 = media_is_onvif_profile_supported ();
    0x00007676 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00007678 beq.w 0x73e0                                  |         goto label_2;
                                                             |     }
    0x0000767c b 0x73a8                                      |     goto label_3;
                                                             | label_22:
    0x0000767e blx 0x4f58                                    |     wsd_util_ptz_service_disabled ();
    0x00007682 ldr r1, [pc, 0x160]                           |     
    0x00007684 mov r7, r0                                    |     r7 = r0;
    0x00007686 ldr r0, [pc, 0x160]                           |     
    0x00007688 mov r2, r8                                    |     r2 = r8;
    0x0000768a add r1, pc                                    |     r1 = 0xee74;
    0x0000768c add r0, pc                                    |     r0 = 0xee7a;
    0x0000768e blx 0x5634                                    |     r0 = fcn_00005634 ();
    0x00007692 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00007694 beq.w 0x7446                                  |         goto label_4;
                                                             |     }
    0x00007698 blx 0x56a4                                    |     fcn_000056a4 ();
    0x0000769c cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x0000769e bne.w 0x7446                                  |         goto label_4;
                                                             |     }
    0x000076a2 b 0x7412                                      |     goto label_5;
                                                             | label_25:
    0x000076a4 movs r3, 0                                    |     r3 = 0;
    0x000076a6 mov.w fp, 1                                   |     
    0x000076aa mov r5, r3                                    |     r5 = r3;
    0x000076ac mov r8, r3                                    |     r8 = r3;
    0x000076ae mov r7, fp                                    |     r7 = fp;
    0x000076b0 str r3, [sp, 0x24]                            |     var_24h = r3;
    0x000076b2 str r3, [sp, 0x20]                            |     var_20h = r3;
                                                             | label_11:
    0x000076b4 movs r1, 0x2c                                 |     r1 = 0x2c;
    0x000076b6 mov r0, r4                                    |     r0 = r4;
    0x000076b8 blx 0x4ee0                                    |     xsoap_malloc0 ();
    0x000076bc str r0, [r6]                                  |     *(r6) = r0;
    0x000076be movs r0, 0                                    |     r0 = 0;
    0x000076c0 blx 0x57f4                                    |     r0 = fcn_000057f4 ();
    0x000076c4 mov sb, r0                                    |     sb = r0;
    0x000076c6 blx 0x58f0                                    |     fcn_000058f0 ();
    0x000076ca ldr r3, [sp, 0x28]                            |     r3 = var_28h;
    0x000076cc ldr r2, [r6]                                  |     r2 = *(r6);
    0x000076ce adds r1, r3, 1                                |     r1 = r3 + 1;
    0x000076d0 add r1, r0                                    |     r1 += r0;
    0x000076d2 mov r0, r4                                    |     r0 = r4;
    0x000076d4 str r2, [sp, 0x30]                            |     var_20h = r2;
    0x000076d6 blx 0x57dc                                    |     fcn_000057dc ();
    0x000076da mov r1, sl                                    |     r1 = sl;
    0x000076dc str r0, [sp, 0x2c]                            |     var_2ch = r0;
    0x000076de blx 0x5174                                    |     stpcpy ();
    0x000076e2 mov r1, sb                                    |     r1 = sb;
    0x000076e4 blx 0x54d4                                    |     strcpy (r0, r1)
    0x000076e8 ldrd r3, r2, [sp, 0x2c]                       |     __asm ("ldrd r3, r2, [var_20h]");
    0x000076ec ldr r0, [pc, 0xfc]                            |     
    0x000076ee str r3, [r2]                                  |     *(r2) = r3;
    0x000076f0 movs r2, 1                                    |     r2 = 1;
    0x000076f2 ldr r3, [r6]                                  |     r3 = *(r6);
    0x000076f4 add r0, pc                                    |     r0 = 0xeee4;
    0x000076f6 str r2, [r3, 4]                               |     *((r3 + 4)) = r2;
    0x000076f8 blx 0x539c                                    |     media_is_onvif_profile_supported ();
    0x000076fc ldr r3, [r6]                                  |     r3 = *(r6);
    0x000076fe str r0, [r3, 8]                               |     *((r3 + 8)) = r0;
    0x00007700 b 0x7334                                      |     goto label_6;
                                                             | label_13:
    0x00007702 mov r2, r0                                    |     r2 = r0;
    0x00007704 movs r1, 0xd                                  |     r1 = 0xd;
    0x00007706 mov r0, r4                                    |     r0 = r4;
    0x00007708 movs r5, 0xc                                  |     r5 = 0xc;
    0x0000770a blx 0x527c                                    |     soap_fault_generic ();
    0x0000770e b 0x7446                                      |     goto label_4;
                                                             | label_27:
    0x00007710 movs r5, 0xc                                  |     r5 = 0xc;
    0x00007712 b 0x7446                                      |     goto label_4;
                                                             | label_26:
    0x00007714 ldr r2, [sp, 0x2c]                            |     r2 = var_2ch;
    0x00007716 strd r3, r3, [sp, 8]                          |     __asm ("strd r3, r3, [sp, 8]");
    0x0000771a str r3, [sp, 4]                               |     var_4h = r3;
    0x0000771c strd r3, r2, [sp, 0x14]                       |     __asm ("strd r3, r2, [var_4h]");
    0x00007720 ldr r2, [pc, 0xcc]                            |     
    0x00007722 ldr r3, [pc, 0xd0]                            |     
    0x00007724 add r2, pc                                    |     r2 = 0xef18;
    0x00007726 str r2, [sp]                                  |     *(sp) = r2;
    0x00007728 mov.w r2, -1                                  |     r2 = -1;
    0x0000772c str r2, [sp, 0x10]                            |     var_0h = r2;
    0x0000772e add r3, pc                                    |     r3 = 0xef28;
    0x00007730 ldr r2, [pc, 0xc4]                            |     
    0x00007732 mov r1, r3                                    |     r1 = r3;
    0x00007734 add r2, pc                                    |     r2 = 0xef30;
    0x00007736 blx 0x5594                                    |     g_dbus_connection_call_sync ();
    0x0000773a ldr r2, [sp, 0x2c]                            |     r2 = var_2ch;
    0x0000773c mov fp, r0                                    |     
    0x0000773e ldr r3, [r2]                                  |     r3 = *(0xef30);
    0x00007740 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00007742 bne.w 0x75fe                                  |         goto label_7;
                                                             |     }
    0x00007746 ldr r1, [pc, 0xb4]                            |     
    0x00007748 ldrd r3, r2, [sp, 0x38]                       |     __asm ("ldrd r3, r2, [var_28h]");
    0x0000774c add r1, pc                                    |     r1 = 0xef4e;
    0x0000774e blx 0x5610                                    |     fcn_00005610 ();
    0x00007752 ldr r3, [sp, 0x2c]                            |     r3 = var_2ch;
    0x00007754 ldr r3, [r3]                                  |     r3 = *(r3);
    0x00007756 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00007758 beq.w 0x7614                                  |         goto label_8;
                                                             |     }
    0x0000775c b 0x7602                                      |     goto label_9;
                                                             | label_14:
    0x0000775e mov r2, r5                                    |     r2 = r5;
    0x00007760 movs r1, 5                                    |     r1 = 5;
    0x00007762 mov r0, r4                                    |     r0 = r4;
    0x00007764 movs r5, 0xc                                  |     r5 = 0xc;
    0x00007766 blx 0x527c                                    |     soap_fault_generic ();
    0x0000776a b 0x7446                                      |     goto label_4;
                                                             | label_16:
    0x0000776c movs r1, 0x34                                 |     r1 = 0x34;
    0x0000776e mov r0, r4                                    |     r0 = r4;
    0x00007770 blx 0x4ee0                                    |     r0 = xsoap_malloc0 ();
    0x00007774 mov r6, r0                                    |     r6 = r0;
    0x00007776 add.w sl, sp, 0x44                            |     sl += var_44h;
    0x0000777a str.w r6, [sb]                                |     __asm ("str.w r6, [sb]");
    0x0000777e mov r0, r4                                    |     r0 = r4;
    0x00007780 blx 0x4fdc                                    |     wsd_get_wsscheme_addr_userdata ();
    0x00007784 mov.w r2, 0x100                               |     r2 = 0x100;
    0x00007788 mov r1, r0                                    |     r1 = r0;
    0x0000778a mov r0, sl                                    |     r0 = sl;
    0x0000778c movs r5, 0                                    |     r5 = 0;
    0x0000778e blx 0x5960                                    |     r0 = fcn_00005960 ();
    0x00007792 sub.w r3, r0, sl                              |     r3 = r0 - sl;
    0x00007796 mov sb, r5                                    |     sb = r5;
    0x00007798 mov r8, r5                                    |     r8 = r5;
    0x0000779a str r3, [sp, 0x28]                            |     var_28h = r3;
    0x0000779c b 0x73e4                                      |     goto label_10;
                                                             | label_23:
    0x0000779e blx 0x561c                                    |     fcn_0000561c ();
                                                             | label_24:
    0x000077a2 movs r7, 0                                    |     r7 = 0;
    0x000077a4 b 0x76b4                                      |     goto label_11;
                                                             | label_17:
    0x000077a6 movs r2, 0                                    |     r2 = 0;
    0x000077a8 movs r1, 0xf                                  |     r1 = 0xf;
    0x000077aa mov r0, r4                                    |     r0 = r4;
    0x000077ac movs r5, 0xc                                  |     r5 = 0xc;
    0x000077ae blx 0x527c                                    |     soap_fault_generic ();
    0x000077b2 b 0x7446                                      |     goto label_4;
                                                             | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libimpl_wsd_tds.so @ 0xbd20 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.__tds__RemoveScopes ()                               | void tds_RemoveScopes (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                     |     int16_t var_bp_4h;
                                                                     |     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;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_24h;
                                                                     |     int16_t var_2ch;
                                                                     |     int16_t var_30h;
                                                                     |     int16_t var_34h;
                                                                     |     int16_t var_38h;
                                                                     |     int16_t var_3ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
    0x0000bd20 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000bd24 mov r5, r2                                            |     r5 = r2;
    0x0000bd26 ldr.w r2, [pc, 0x53c]                                 |     r2 = *(0x0000c264);
    0x0000bd2a mov r6, r1                                            |     r6 = r1;
    0x0000bd2c sub sp, 0x44                                          |     
    0x0000bd2e mov sl, r0                                            |     sl = r0;
    0x0000bd30 ldr.w r3, [pc, 0x534]                                 |     
    0x0000bd34 add r2, pc                                            |     r2 += pc;
    0x0000bd36 ldr.w r1, [pc, 0x534]                                 |     
    0x0000bd3a ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000bd3c add r1, pc                                            |     r1 = 0x17fae;
    0x0000bd3e ldr r3, [r3]                                          |     r3 = *(0xc268);
    0x0000bd40 str r3, [sp, 0x3c]                                    |     var_3ch = r3;
    0x0000bd42 mov.w r3, 0                                           |     r3 = 0;
    0x0000bd46 blx 0x5414                                            |     r0 = wssecurity_uh_allowed_access ();
    0x0000bd4a cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000bd4c beq.w 0xc154                                          |         goto label_9;
                                                                     |     }
    0x0000bd50 cmp r6, 0                                             |     
                                                                     |     if (r6 == 0) {
    0x0000bd52 beq.w 0xc17c                                          |         goto label_10;
                                                                     |     }
    0x0000bd56 ldr r1, [r6]                                          |     r1 = *(r6);
    0x0000bd58 cmp r1, 0                                             |     
                                                                     |     if (r1 == 0) {
    0x0000bd5a beq.w 0xc146                                          |         goto label_11;
                                                                     |     }
    0x0000bd5e ldr r2, [r6, 4]                                       |     r2 = *((r6 + 4));
    0x0000bd60 cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000bd62 beq.w 0xc162                                          |         goto label_12;
                                                                     |     }
    0x0000bd66 lsls r1, r1, 2                                        |     r1 <<= 2;
    0x0000bd68 mov r0, sl                                            |     r0 = sl;
    0x0000bd6a blx 0x57dc                                            |     fcn_000057dc ();
    0x0000bd6e movs r3, 0                                            |     r3 = 0;
    0x0000bd70 mov r7, r0                                            |     r7 = r0;
    0x0000bd72 strd r3, r0, [r5]                                     |     __asm ("strd r3, r0, [r5]");
    0x0000bd76 ldr.w r8, [r6]                                        |     r8 = *(r6);
    0x0000bd7a cmp r8, r3                                            |     
                                                                     |     if (r8 <= r3) {
    0x0000bd7c ble 0xbdb6                                            |         goto label_13;
                                                                     |     }
    0x0000bd7e ldr r4, [r6, 4]                                       |     r4 = *((r6 + 4));
    0x0000bd80 mov sb, r3                                            |     sb = r3;
    0x0000bd82 add.w r8, r4, r8, lsl 2                               |     r8 = r4 + (r8 << 2);
                                                                     |     do {
    0x0000bd86 ldr r0, [r4], 4                                       |         r0 = *(r4);
                                                                     |         r4 += 4;
    0x0000bd8a blx 0x58f0                                            |         fcn_000058f0 ();
    0x0000bd8e adds r0, 1                                            |         r0++;
    0x0000bd90 cmp sb, r0                                            |         
    0x0000bd92 it lo                                                 |         
                                                                     |         if (sb >= r0) {
    0x0000bd94 movlo sb, r0                                          |             sb = r0;
                                                                     |         }
    0x0000bd96 cmp r4, r8                                            |         
    0x0000bd98 bne 0xbd86                                            |         
                                                                     |     } while (r4 != r8);
    0x0000bd9a movs r4, 0                                            |     r4 = 0;
    0x0000bd9c b 0xbda0                                              |     
                                                                     |     while (r3 > r4) {
    0x0000bd9e ldr r7, [r5, 4]                                       |         r7 = *((r5 + 4));
    0x0000bda0 mov r1, sb                                            |         r1 = sb;
    0x0000bda2 mov r0, sl                                            |         r0 = sl;
    0x0000bda4 blx 0x57dc                                            |         fcn_000057dc ();
    0x0000bda8 str.w r0, [r7, r4, lsl 2]                             |         __asm ("str.w r0, [r7, r4, lsl 2]");
    0x0000bdac adds r4, 1                                            |         r4++;
    0x0000bdae ldr r3, [r6]                                          |         r3 = *(r6);
    0x0000bdb0 cmp r3, r4                                            |         
    0x0000bdb2 bgt 0xbd9e                                            |         
                                                                     |     }
    0x0000bdb4 mov r8, r3                                            |     r8 = r3;
                                                                     | label_13:
    0x0000bdb6 movs r4, 0                                            |     r4 = 0;
    0x0000bdb8 ldr r6, [r6, 4]                                       |     r6 = *((r6 + 4));
    0x0000bdba strd r4, r4, [sp, 0x2c]                               |     __asm ("strd r4, r4, [sp, 0x2c]");
    0x0000bdbe strd r4, r4, [sp, 0x34]                               |     __asm ("strd r4, r4, [sp, 0x34]");
    0x0000bdc2 blx 0x5878                                            |     fcn_00005878 ();
    0x0000bdc6 movs r1, 0x20                                         |     r1 = 0x20;
    0x0000bdc8 mov fp, r0                                            |     
    0x0000bdca blx 0x54c8                                            |     g_key_file_set_list_separator ();
    0x0000bdce ldr.w r1, [pc, 0x4a0]                                 |     
    0x0000bdd2 add r3, sp, 0x2c                                      |     r3 += var_2ch;
    0x0000bdd4 movs r2, 1                                            |     r2 = 1;
    0x0000bdd6 mov r0, fp                                            |     r0 = fp;
    0x0000bdd8 str r3, [sp, 0x14]                                    |     var_14h_2 = r3;
    0x0000bdda add r1, pc                                            |     r1 = 0x18050;
    0x0000bddc blx 0x5000                                            |     g_key_file_load_from_file ();
    0x0000bde0 ldr r3, [sp, 0x2c]                                    |     r3 = var_2ch;
    0x0000bde2 str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x0000bde4 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000bde6 bne.w 0xc1a6                                          |         goto label_14;
                                                                     |     }
    0x0000bdea ldr.w r4, [pc, 0x488]                                 |     
    0x0000bdee mov r0, fp                                            |     r0 = fp;
    0x0000bdf0 ldr r3, [sp, 0x14]                                    |     r3 = var_14h_2;
    0x0000bdf2 ldr.w r1, [pc, 0x484]                                 |     
    0x0000bdf6 add r4, pc                                            |     r4 = 0x18070;
    0x0000bdf8 str r3, [sp]                                          |     *(sp) = r3;
    0x0000bdfa mov r2, r4                                            |     r2 = r4;
    0x0000bdfc add r3, sp, 0x30                                      |     r3 += var_30h;
    0x0000bdfe add r1, pc                                            |     r1 = 0x1807c;
    0x0000be00 blx 0x4f40                                            |     g_key_file_get_string_list ();
    0x0000be04 ldr r3, [sp, 0x2c]                                    |     r3 = var_2ch;
    0x0000be06 str r0, [sp, 8]                                       |     var_8h = r0;
    0x0000be08 str r3, [sp, 0x10]                                    |     var_10h_2 = r3;
    0x0000be0a cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000be0c bne.w 0xc1d4                                          |         goto label_15;
                                                                     |     }
    0x0000be10 ldr r3, [sp, 0x14]                                    |     r3 = var_14h_2;
    0x0000be12 mov r2, r4                                            |     r2 = r4;
    0x0000be14 ldr.w r1, [pc, 0x464]                                 |     
    0x0000be16 asrs r4, r4, 0x11                                     |     r4 >>= 0x11;
    0x0000be18 mov r0, fp                                            |     r0 = fp;
    0x0000be1a str r3, [sp]                                          |     *(sp) = r3;
    0x0000be1c add r3, sp, 0x34                                      |     r3 += var_34h;
    0x0000be1e add r1, pc                                            |     r1 = 0x1809e;
    0x0000be20 blx 0x4f40                                            |     g_key_file_get_string_list ();
    0x0000be24 ldr r3, [sp, 0x2c]                                    |     r3 = var_2ch;
    0x0000be26 str r0, [sp, 0xc]                                     |     var_ch = r0;
    0x0000be28 str r3, [sp, 0x18]                                    |     var_18h = r3;
    0x0000be2a cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000be2c bne.w 0xc1fc                                          |         goto label_16;
                                                                     |     }
    0x0000be30 movs r1, 1                                            |     r1 = 1;
    0x0000be32 movs r2, 4                                            |     r2 = 4;
    0x0000be34 mov r0, r1                                            |     r0 = r1;
    0x0000be36 blx 0x5510                                            |     g_array_new ();
    0x0000be3a str r0, [sp, 0x10]                                    |     var_10h_2 = r0;
    0x0000be3c blx 0x59c0                                            |     g_snprintf ();
    0x0000be40 cmp.w r8, 0                                           |     
    0x0000be44 mov sb, r0                                            |     sb = r0;
                                                                     |     if (r8 <= 0) {
    0x0000be46 ble 0xbf1a                                            |         goto label_17;
                                                                     |     }
    0x0000be48 ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x0000be4a str.w r8, [sp, 0x24]                                  |     __asm ("str.w r8, [var_24h]");
    0x0000be4e str r3, [sp, 0x20]                                    |     var_20h = r3;
    0x0000be50 subs r3, r0, 4                                        |     r3 = r0 - 4;
    0x0000be52 str r3, [sp, 0x1c]                                    |     var_1ch = r3;
                                                                     | label_2:
    0x0000be54 ldr r7, [sp, 0x1c]                                    |     r7 = var_1ch;
    0x0000be56 movs r4, 0                                            |     r4 = 0;
    0x0000be58 b 0xbe6c                                              |     
                                                                     |     while (r4 <= r0) {
    0x0000be5a ldr r1, [r7, 4]!                                      |         r1 = *((r7 += 4));
    0x0000be5e ldr r0, [r6]                                          |         r0 = *(r6);
    0x0000be60 blx 0x5c00                                            |         r0 = g_hash_table_new ();
    0x0000be64 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000be66 beq.w 0xc0e8                                          |             goto label_18;
                                                                     |         }
    0x0000be6a adds r4, 1                                            |         r4++;
    0x0000be6c mov r0, sb                                            |         r0 = sb;
    0x0000be6e blx 0x55f8                                            |         r0 = fcn_000055f8 ();
    0x0000be72 cmp r4, r0                                            |         
    0x0000be74 blo 0xbe5a                                            |         
                                                                     |     }
    0x0000be76 ldr r7, [sp, 0x30]                                    |     r7 = var_30h;
    0x0000be78 cmp r7, 0                                             |     
                                                                     |     if (r7 == 0) {
    0x0000be7a beq.w 0xc16e                                          |         goto label_19;
                                                                     |     }
    0x0000be7e ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000be80 movs r7, 0                                            |     r7 = 0;
    0x0000be82 mov r8, r7                                            |     r8 = r7;
    0x0000be84 subs r4, r3, 4                                        |     r4 = r3 - 4;
    0x0000be86 b 0xbe92                                              |     
                                                                     |     while (r0 != 0) {
    0x0000be88 ldr r3, [sp, 0x30]                                    |         r3 = var_30h;
    0x0000be8a add.w r8, r8, 1                                       |         r8++;
    0x0000be8e cmp r8, r3                                            |         
                                                                     |         if (r8 >= r3) {
    0x0000be90 bhs 0xbec0                                            |             goto label_20;
                                                                     |         }
                                                                     | label_0:
    0x0000be92 ldr r1, [r6]                                          |         r1 = *(r6);
    0x0000be94 ldr r0, [r4, 4]!                                      |         r0 = *((r4 += 4));
    0x0000be98 blx 0x5c00                                            |         r0 = g_hash_table_new ();
    0x0000be9c cmp r0, 0                                             |         
    0x0000be9e bne 0xbe88                                            |         
                                                                     |     }
    0x0000bea0 ldrd r2, r3, [r5]                                     |     __asm ("ldrd r2, r3, [r5]");
    0x0000bea4 add.w r8, r8, 1                                       |     r8++;
    0x0000bea8 ldr r1, [r4]                                          |     r1 = *(r4);
    0x0000beaa movs r7, 1                                            |     r7 = 1;
    0x0000beac ldr.w r0, [r3, r2, lsl 2]                             |     offset_0 = r2 << 2;
                                                                     |     r0 = *((r3 + offset_0));
    0x0000beb0 blx 0x54d4                                            |     strcpy (r0, r1)
    0x0000beb4 ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000beb6 adds r3, 1                                            |     r3++;
    0x0000beb8 str r3, [r5]                                          |     *(r5) = r3;
    0x0000beba ldr r3, [sp, 0x30]                                    |     r3 = var_30h;
    0x0000bebc cmp r8, r3                                            |     
                                                                     |     if (r8 <= r3) {
    0x0000bebe blo 0xbe92                                            |         goto label_0;
                                                                     |     }
                                                                     | label_20:
    0x0000bec0 ldr r3, [sp, 0x34]                                    |     r3 = var_34h;
                                                                     |     if (r3 == 0) {
    0x0000bec2 cbz r3, 0xbf06                                        |         goto label_21;
                                                                     |     }
                                                                     | label_7:
    0x0000bec4 ldr r3, [sp, 0xc]                                     |     r3 = var_ch;
    0x0000bec6 mov.w r8, 0                                           |     r8 = 0;
    0x0000beca subs r4, r3, 4                                        |     r4 = r3 - 4;
    0x0000becc b 0xbed8                                              |     
                                                                     |     while (r0 != 0) {
    0x0000bece ldr r3, [sp, 0x34]                                    |         r3 = var_34h;
    0x0000bed0 add.w r8, r8, 1                                       |         r8++;
    0x0000bed4 cmp r8, r3                                            |         
                                                                     |         if (r8 >= r3) {
    0x0000bed6 bhs 0xbf06                                            |             goto label_21;
                                                                     |         }
                                                                     | label_1:
    0x0000bed8 ldr r1, [r6]                                          |         r1 = *(r6);
    0x0000beda ldr r0, [r4, 4]!                                      |         r0 = *((r4 += 4));
    0x0000bede blx 0x5c00                                            |         r0 = g_hash_table_new ();
    0x0000bee2 cmp r0, 0                                             |         
    0x0000bee4 bne 0xbece                                            |         
                                                                     |     }
    0x0000bee6 ldrd r2, r3, [r5]                                     |     __asm ("ldrd r2, r3, [r5]");
    0x0000beea add.w r8, r8, 1                                       |     r8++;
    0x0000beee ldr r1, [r4]                                          |     r1 = *(r4);
    0x0000bef0 movs r7, 1                                            |     r7 = 1;
    0x0000bef2 ldr.w r0, [r3, r2, lsl 2]                             |     offset_1 = r2 << 2;
                                                                     |     r0 = *((r3 + offset_1));
    0x0000bef6 blx 0x54d4                                            |     strcpy (r0, r1)
    0x0000befa ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000befc adds r3, 1                                            |     r3++;
    0x0000befe str r3, [r5]                                          |     *(r5) = r3;
    0x0000bf00 ldr r3, [sp, 0x34]                                    |     r3 = var_34h;
    0x0000bf02 cmp r8, r3                                            |     
                                                                     |     if (r8 <= r3) {
    0x0000bf04 blo 0xbed8                                            |         goto label_1;
                                                                     |     }
                                                                     | label_21:
    0x0000bf06 cmp r7, 0                                             |     
                                                                     |     if (r7 == 0) {
    0x0000bf08 beq.w 0xc176                                          |         goto label_22;
                                                                     |     }
    0x0000bf0c ldr r3, [sp, 0x20]                                    |     r3 = var_20h;
    0x0000bf0e adds r6, 4                                            |     r6 += 4;
    0x0000bf10 ldr r2, [sp, 0x24]                                    |     r2 = var_24h;
    0x0000bf12 adds r3, 1                                            |     r3++;
    0x0000bf14 cmp r2, r3                                            |     
    0x0000bf16 str r3, [sp, 0x20]                                    |     var_20h = r3;
                                                                     |     if (r2 != r3) {
    0x0000bf18 bne 0xbe54                                            |         goto label_2;
                                                                     |     }
                                                                     | label_17:
    0x0000bf1a ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000bf1c cmp r3, 0                                             |     
                                                                     |     if (r3 <= 0) {
    0x0000bf1e ble.w 0xc176                                          |         goto label_22;
                                                                     |     }
    0x0000bf22 str.w fp, [sp, 0x1c]                                  |     __asm ("str.w fp, [var_1ch]");
    0x0000bf26 movs r3, 0                                            |     r3 = 0;
    0x0000bf28 ldr r1, [sp, 0x30]                                    |     r1 = var_30h;
    0x0000bf2a mov r7, r3                                            |     r7 = r3;
    0x0000bf2c ldr.w fp, [sp, 0xc]                                   |     fp = var_ch;
    0x0000bf30 mov r6, r3                                            |     r6 = r3;
    0x0000bf32 mov r8, r3                                            |     r8 = r3;
    0x0000bf34 str.w sb, [sp, 0x20]                                  |     __asm ("str.w sb, [var_20h]");
    0x0000bf38 str.w sl, [sp, 0x24]                                  |     __asm ("str.w sl, [var_24h]");
                                                                     |     if (r1 == 0) {
                                                                     | label_5:
    0x0000bf3c cbz r1, 0xbfa0                                        |         goto label_23;
                                                                     |     }
    0x0000bf3e ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000bf40 lsls r4, r6, 2                                        |     r4 = r6 << 2;
    0x0000bf42 mov.w sb, 0                                           |     sb = 0;
    0x0000bf46 sub.w sl, r3, 4                                       |     sl = r3 - 4;
    0x0000bf4a b 0xbf56                                              |     
                                                                     |     while (r0 != 0) {
    0x0000bf4c ldr r1, [sp, 0x30]                                    |         r1 = var_30h;
    0x0000bf4e add.w sb, sb, 1                                       |         sb++;
    0x0000bf52 cmp sb, r1                                            |         
                                                                     |         if (sb >= r1) {
    0x0000bf54 bhs 0xbfa0                                            |             goto label_23;
                                                                     |         }
                                                                     | label_3:
    0x0000bf56 ldr r3, [r5, 4]                                       |         r3 = *((r5 + 4));
    0x0000bf58 ldr r0, [sl, 4]!                                      |         r0 = *((sl += 4));
    0x0000bf5c ldr r1, [r3, r4]                                      |         r1 = *((r3 + r4));
    0x0000bf5e blx 0x5c00                                            |         r0 = g_hash_table_new ();
    0x0000bf62 cmp r0, 0                                             |         
    0x0000bf64 bne 0xbf4c                                            |         
                                                                     |     }
    0x0000bf66 ldr.w r0, [sl]                                        |     r0 = *(sl);
    0x0000bf6a blx 0x4fc4                                            |     free (r0);
    0x0000bf6e ldr r2, [sp, 0x30]                                    |     r2 = var_30h;
    0x0000bf70 cmp r2, sb                                            |     
                                                                     |     if (r2 < sb) {
    0x0000bf72 bls 0xbf86                                            |         goto label_24;
                                                                     |     }
    0x0000bf74 mov r1, sl                                            |     r1 = sl;
    0x0000bf76 mov r3, sb                                            |     r3 = sb;
                                                                     |     do {
    0x0000bf78 ldr r2, [r1, 4]                                       |         r2 = *((r1 + 4));
    0x0000bf7a adds r3, 1                                            |         r3++;
    0x0000bf7c str r2, [r1], 4                                       |         *(r1) = r2;
                                                                     |         r1 += 4;
    0x0000bf80 ldr r2, [sp, 0x30]                                    |         r2 = var_30h;
    0x0000bf82 cmp r3, r2                                            |         
    0x0000bf84 blo 0xbf78                                            |         
                                                                     |     } while (r3 <= r2);
                                                                     | label_24:
    0x0000bf86 ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000bf88 add.w r2, r2, 0x40000000                              |     r2 += 0x40000000;
    0x0000bf8c movs r1, 0                                            |     r1 = 0;
    0x0000bf8e subs r2, 1                                            |     r2--;
    0x0000bf90 add.w sb, sb, 1                                       |     sb++;
    0x0000bf94 adds r7, 1                                            |     r7++;
    0x0000bf96 str.w r1, [r3, r2, lsl 2]                             |     __asm ("str.w r1, [r3, r2, lsl 2]");
    0x0000bf9a ldr r1, [sp, 0x30]                                    |     r1 = var_30h;
    0x0000bf9c cmp sb, r1                                            |     
                                                                     |     if (sb <= r1) {
    0x0000bf9e blo 0xbf56                                            |         goto label_3;
                                                                     |     }
                                                                     | label_23:
    0x0000bfa0 ldr r3, [sp, 0x34]                                    |     r3 = var_34h;
                                                                     |     if (r3 == 0) {
    0x0000bfa2 cbz r3, 0xc006                                        |         goto label_25;
                                                                     |     }
    0x0000bfa4 lsls r4, r6, 2                                        |     r4 = r6 << 2;
    0x0000bfa6 sub.w sb, fp, 4                                       |     sb = fp - 4;
    0x0000bfaa mov.w sl, 0                                           |     sl = 0;
    0x0000bfae b 0xbfba                                              |     
                                                                     |     while (r0 != 0) {
    0x0000bfb0 ldr r3, [sp, 0x34]                                    |         r3 = var_34h;
    0x0000bfb2 add.w sl, sl, 1                                       |         sl++;
    0x0000bfb6 cmp sl, r3                                            |         
                                                                     |         if (sl >= r3) {
    0x0000bfb8 bhs 0xc004                                            |             goto label_26;
                                                                     |         }
                                                                     | label_4:
    0x0000bfba ldr r3, [r5, 4]                                       |         r3 = *((r5 + 4));
    0x0000bfbc ldr r0, [sb, 4]!                                      |         r0 = *((sb += 4));
    0x0000bfc0 ldr r1, [r3, r4]                                      |         r1 = *((r3 + r4));
    0x0000bfc2 blx 0x5c00                                            |         r0 = g_hash_table_new ();
    0x0000bfc6 cmp r0, 0                                             |         
    0x0000bfc8 bne 0xbfb0                                            |         
                                                                     |     }
    0x0000bfca ldr.w r0, [sb]                                        |     r0 = *(sb);
    0x0000bfce blx 0x4fc4                                            |     free (r0);
    0x0000bfd2 ldr r2, [sp, 0x34]                                    |     r2 = var_34h;
    0x0000bfd4 cmp r2, sl                                            |     
                                                                     |     if (r2 < sl) {
    0x0000bfd6 bls 0xbfea                                            |         goto label_27;
                                                                     |     }
    0x0000bfd8 mov r1, sb                                            |     r1 = sb;
    0x0000bfda mov r3, sl                                            |     r3 = sl;
                                                                     |     do {
    0x0000bfdc ldr r2, [r1, 4]                                       |         r2 = *((r1 + 4));
    0x0000bfde adds r3, 1                                            |         r3++;
    0x0000bfe0 str r2, [r1], 4                                       |         *(r1) = r2;
                                                                     |         r1 += 4;
    0x0000bfe4 ldr r2, [sp, 0x34]                                    |         r2 = var_34h;
    0x0000bfe6 cmp r3, r2                                            |         
    0x0000bfe8 blo 0xbfdc                                            |         
                                                                     |     } while (r3 <= r2);
                                                                     | label_27:
    0x0000bfea add.w r2, r2, 0x40000000                              |     r2 += 0x40000000;
    0x0000bfee movs r3, 0                                            |     r3 = 0;
    0x0000bff0 subs r2, 1                                            |     r2--;
    0x0000bff2 add.w sl, sl, 1                                       |     sl++;
    0x0000bff6 str.w r3, [fp, r2, lsl 2]                             |     __asm ("str.w r3, [fp, r2, lsl 2]");
    0x0000bffa add.w r8, r8, 1                                       |     r8++;
    0x0000bffe ldr r3, [sp, 0x34]                                    |     r3 = var_34h;
    0x0000c000 cmp sl, r3                                            |     
                                                                     |     if (sl <= r3) {
    0x0000c002 blo 0xbfba                                            |         goto label_4;
                                                                     |     }
                                                                     | label_26:
    0x0000c004 ldr r1, [sp, 0x30]                                    |     r1 = var_30h;
                                                                     | label_25:
    0x0000c006 ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000c008 adds r6, 1                                            |     r6++;
    0x0000c00a cmp r6, r3                                            |     
                                                                     |     if (r6 < r3) {
    0x0000c00c blt 0xbf3c                                            |         goto label_5;
                                                                     |     }
    0x0000c00e ldrd fp, sb, [sp, 0x1c]                               |     __asm ("ldrd fp, sb, [var_1ch]");
    0x0000c012 ldr.w sl, [sp, 0x24]                                  |     sl = var_24h;
                                                                     |     if (r1 == 0) {
    0x0000c016 cbz r1, 0xc04e                                        |         goto label_28;
                                                                     |     }
    0x0000c018 cmp r7, r1                                            |     
                                                                     |     if (r7 == r1) {
    0x0000c01a beq 0xc038                                            |         goto label_29;
                                                                     |     }
    0x0000c01c ldr r5, [sp, 8]                                       |     r5 = var_8h;
    0x0000c01e movs r4, 0                                            |     r4 = 0;
    0x0000c020 ldr r6, [sp, 0x10]                                    |     r6 = var_10h_2;
                                                                     |     do {
    0x0000c022 mov r1, r5                                            |         r1 = r5;
    0x0000c024 movs r2, 1                                            |         r2 = 1;
    0x0000c026 mov r0, r6                                            |         r0 = r6;
    0x0000c028 adds r4, 1                                            |         r4++;
    0x0000c02a blx 0x530c                                            |         g_array_append_vals ();
    0x0000c02e ldr r3, [sp, 0x30]                                    |         r3 = var_30h;
    0x0000c030 adds r5, 4                                            |         r5 += 4;
    0x0000c032 subs r3, r3, r7                                       |         r3 -= r7;
    0x0000c034 cmp r4, r3                                            |         
    0x0000c036 blo 0xc022                                            |         
                                                                     |     } while (r4 <= r3);
                                                                     | label_29:
    0x0000c038 ldr r2, [sp, 0x10]                                    |     r2 = var_10h_2;
    0x0000c03a mov r0, fp                                            |     r0 = fp;
    0x0000c03c ldr r1, [pc, 0x240]                                   |     
    0x0000c03e ldrd r3, r2, [r2]                                     |     __asm ("ldrd r3, r2, [r2]");
    0x0000c042 add r1, pc                                            |     r1 = 0x182c6;
    0x0000c044 str r2, [sp]                                          |     *(sp) = r2;
    0x0000c046 ldr r2, [pc, 0x23c]                                   |     
    0x0000c048 add r2, pc                                            |     r2 = 0x182d2;
    0x0000c04a blx 0x53b4                                            |     g_key_file_set_string_list ();
                                                                     | label_28:
    0x0000c04e movs r1, 1                                            |     r1 = 1;
    0x0000c050 ldr r0, [sp, 0x10]                                    |     r0 = var_10h_2;
    0x0000c052 blx 0x4f1c                                            |     g_array_free ();
    0x0000c056 movs r1, 1                                            |     r1 = 1;
    0x0000c058 movs r2, 4                                            |     r2 = 4;
    0x0000c05a mov r0, r1                                            |     r0 = r1;
    0x0000c05c blx 0x5510                                            |     g_array_new ();
    0x0000c060 ldr r3, [sp, 0x34]                                    |     r3 = var_34h;
    0x0000c062 str r0, [sp, 0x10]                                    |     var_10h_2 = r0;
                                                                     |     if (r3 == 0) {
    0x0000c064 cbz r3, 0xc09e                                        |         goto label_30;
                                                                     |     }
    0x0000c066 cmp r3, r8                                            |     
                                                                     |     if (r3 == r8) {
    0x0000c068 beq 0xc088                                            |         goto label_31;
                                                                     |     }
    0x0000c06a ldr r5, [sp, 0xc]                                     |     r5 = var_ch;
    0x0000c06c movs r4, 0                                            |     r4 = 0;
    0x0000c06e ldr r6, [sp, 0x10]                                    |     r6 = var_10h_2;
    0x0000c070 mov r7, r8                                            |     r7 = r8;
                                                                     |     do {
    0x0000c072 mov r1, r5                                            |         r1 = r5;
    0x0000c074 movs r2, 1                                            |         r2 = 1;
    0x0000c076 mov r0, r6                                            |         r0 = r6;
    0x0000c078 adds r4, 1                                            |         r4++;
    0x0000c07a blx 0x530c                                            |         g_array_append_vals ();
    0x0000c07e ldr r3, [sp, 0x34]                                    |         r3 = var_34h;
    0x0000c080 adds r5, 4                                            |         r5 += 4;
    0x0000c082 subs r3, r3, r7                                       |         r3 -= r7;
    0x0000c084 cmp r4, r3                                            |         
    0x0000c086 blo 0xc072                                            |         
                                                                     |     } while (r4 <= r3);
                                                                     | label_31:
    0x0000c088 ldr r2, [sp, 0x10]                                    |     r2 = var_10h_2;
    0x0000c08a mov r0, fp                                            |     r0 = fp;
    0x0000c08c ldr r1, [pc, 0x1f8]                                   |     
    0x0000c08e ldrd r3, r2, [r2]                                     |     __asm ("ldrd r3, r2, [r2]");
    0x0000c092 add r1, pc                                            |     r1 = 0x1831e;
    0x0000c094 str r2, [sp]                                          |     *(sp) = r2;
    0x0000c096 ldr r2, [pc, 0x1f4]                                   |     
    0x0000c098 add r2, pc                                            |     r2 = 0x1832a;
    0x0000c09a blx 0x53b4                                            |     g_key_file_set_string_list ();
                                                                     | label_30:
    0x0000c09e ldr r5, [pc, 0x1f0]                                   |     
    0x0000c0a0 mov r0, fp                                            |     r0 = fp;
    0x0000c0a2 ldr r3, [sp, 0x14]                                    |     r3 = var_14h_2;
    0x0000c0a4 add r5, pc                                            |     r5 = 0x1833a;
    0x0000c0a6 mov r2, r5                                            |     r2 = r5;
    0x0000c0a8 mov r1, r5                                            |     r1 = r5;
    0x0000c0aa blx 0x58d8                                            |     fcn_000058d8 ();
    0x0000c0ae ldr r4, [sp, 0x2c]                                    |     r4 = var_2ch;
    0x0000c0b0 cmp r4, 0                                             |     
                                                                     |     if (r4 != 0) {
    0x0000c0b2 bne.w 0xc222                                          |         goto label_32;
                                                                     |     }
    0x0000c0b6 adds r3, r0, 1                                        |     r3 = r0 + 1;
    0x0000c0b8 mov r1, r5                                            |     r1 = r5;
    0x0000c0ba mov r2, r5                                            |     r2 = r5;
    0x0000c0bc mov r0, fp                                            |     r0 = fp;
    0x0000c0be blx 0x5108                                            |     g_key_file_set_integer ();
    0x0000c0c2 mov r2, r4                                            |     r2 = r4;
    0x0000c0c4 add r1, sp, 0x38                                      |     r1 += var_38h;
    0x0000c0c6 mov r0, fp                                            |     r0 = fp;
    0x0000c0c8 blx 0x57c4                                            |     r0 = fcn_000057c4 ();
    0x0000c0cc mov r1, r0                                            |     r1 = r0;
    0x0000c0ce str r0, [sp, 0x18]                                    |     var_18h = r0;
    0x0000c0d0 ldr r0, [pc, 0x1c0]                                   |     
    0x0000c0d2 ldr r3, [sp, 0x14]                                    |     r3 = var_14h_2;
    0x0000c0d4 ldr r2, [sp, 0x38]                                    |     r2 = var_38h;
    0x0000c0d6 add r0, pc                                            |     r0 = 0x1836e;
    0x0000c0d8 blx 0x53d8                                            |     g_file_set_contents ();
    0x0000c0dc ldr r3, [sp, 0x2c]                                    |     r3 = var_2ch;
    0x0000c0de cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000c0e0 bne.w 0xc244                                          |         goto label_33;
                                                                     |     }
    0x0000c0e4 mov r4, r3                                            |     r4 = r3;
    0x0000c0e6 b 0xc0ec                                              |     goto label_8;
                                                                     | label_18:
    0x0000c0e8 mvn r4, 1                                             |     r4 = ~1;
                                                                     | label_8:
    0x0000c0ec mov r0, sb                                            |     r0 = sb;
    0x0000c0ee blx 0x55e0                                            |     fcn_000055e0 ();
    0x0000c0f2 ldr r0, [sp, 8]                                       |     r0 = var_8h;
    0x0000c0f4 blx 0x55e0                                            |     fcn_000055e0 ();
    0x0000c0f8 ldr r0, [sp, 0xc]                                     |     r0 = var_ch;
    0x0000c0fa blx 0x55e0                                            |     fcn_000055e0 ();
    0x0000c0fe movs r1, 1                                            |     r1 = 1;
    0x0000c100 ldr r0, [sp, 0x10]                                    |     r0 = var_10h_2;
    0x0000c102 blx 0x4f1c                                            |     g_array_free ();
    0x0000c106 ldr r0, [sp, 0x18]                                    |     r0 = var_18h;
    0x0000c108 blx 0x56a4                                            |     fcn_000056a4 ();
    0x0000c10c ldr r0, [sp, 0x2c]                                    |     r0 = var_2ch;
                                                                     |     if (r0 != 0) {
    0x0000c10e cbz r0, 0xc114                                        |         
    0x0000c110 blx 0x4fac                                            |         g_error_free ();
                                                                     |     }
    0x0000c114 mov r0, fp                                            |     r0 = fp;
    0x0000c116 blx 0x59a8                                            |     wssecurity_uh_set_users ();
    0x0000c11a adds r2, r4, 3                                        |     r2 = r4 + 3;
                                                                     |     if (r2 == r4) {
    0x0000c11c beq 0xc18a                                            |         goto label_34;
                                                                     |     }
    0x0000c11e adds r3, r4, 2                                        |     r3 = r4 + 2;
                                                                     |     if (r3 == r4) {
    0x0000c120 beq 0xc198                                            |         goto label_35;
                                                                     |     }
    0x0000c122 adds r4, 1                                            |     r4++;
                                                                     |     if (r4 == 1) {
    0x0000c124 beq 0xc146                                            |         goto label_11;
                                                                     |     }
    0x0000c126 blx 0x596c                                            |     net_set_static_name_servers ();
    0x0000c12a movs r0, 0                                            |     r0 = 0;
                                                                     |     do {
                                                                     | label_6:
    0x0000c12c ldr r2, [pc, 0x168]                                   |         
    0x0000c12e ldr r3, [pc, 0x138]                                   |         r3 = *(0xc26a);
    0x0000c130 add r2, pc                                            |         r2 = 0x183cc;
    0x0000c132 ldr r3, [r2, r3]                                      |         r3 = *(0x183cc);
    0x0000c134 ldr r2, [r3]                                          |         r2 = *(0x183cc);
    0x0000c136 ldr r3, [sp, 0x3c]                                    |         r3 = var_3ch;
    0x0000c138 eors r2, r3                                           |         r2 ^= r3;
    0x0000c13a mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000c13e bne 0xc240                                            |             goto label_36;
                                                                     |         }
    0x0000c140 add sp, 0x44                                          |         
    0x0000c142 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_11:
    0x0000c146 mov r0, sl                                            |         r0 = sl;
    0x0000c148 movs r2, 0                                            |         r2 = 0;
    0x0000c14a movs r1, 0x26                                         |         r1 = 0x26;
    0x0000c14c blx 0x5258                                            |         soap_fault_device_management ();
    0x0000c150 movs r0, 0xc                                          |         r0 = 0xc;
    0x0000c152 b 0xc12c                                              |         
                                                                     |     } while (1);
                                                                     | label_9:
    0x0000c154 mov r2, r0                                            |     r2 = r0;
    0x0000c156 movs r1, 0xd                                          |     r1 = 0xd;
    0x0000c158 mov r0, sl                                            |     r0 = sl;
    0x0000c15a blx 0x527c                                            |     soap_fault_generic ();
    0x0000c15e movs r0, 0xc                                          |     r0 = 0xc;
    0x0000c160 b 0xc12c                                              |     goto label_6;
                                                                     | label_12:
    0x0000c162 mov r0, sl                                            |     r0 = sl;
    0x0000c164 movs r1, 5                                            |     r1 = 5;
    0x0000c166 blx 0x527c                                            |     soap_fault_generic ();
    0x0000c16a movs r0, 0xc                                          |     r0 = 0xc;
    0x0000c16c b 0xc12c                                              |     goto label_6;
                                                                     | label_19:
    0x0000c16e ldr r3, [sp, 0x34]                                    |     r3 = var_34h;
    0x0000c170 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000c172 bne.w 0xbec4                                          |         goto label_7;
                                                                     |     }
                                                                     | label_22:
    0x0000c176 mov.w r4, -1                                          |     r4 = -1;
    0x0000c17a b 0xc0ec                                              |     goto label_8;
                                                                     | label_10:
    0x0000c17c mov r0, sl                                            |     r0 = sl;
    0x0000c17e mov r2, r6                                            |     r2 = r6;
    0x0000c180 movs r1, 3                                            |     r1 = 3;
    0x0000c182 blx 0x527c                                            |     soap_fault_generic ();
    0x0000c186 movs r0, 0xc                                          |     r0 = 0xc;
    0x0000c188 b 0xc12c                                              |     goto label_6;
                                                                     | label_34:
    0x0000c18a mov r0, sl                                            |     r0 = sl;
    0x0000c18c movs r2, 0                                            |     r2 = 0;
    0x0000c18e movs r1, 0xf                                          |     r1 = 0xf;
    0x0000c190 blx 0x527c                                            |     soap_fault_generic ();
    0x0000c194 movs r0, 0xc                                          |     r0 = 0xc;
    0x0000c196 b 0xc12c                                              |     goto label_6;
                                                                     | label_35:
    0x0000c198 mov r0, sl                                            |     r0 = sl;
    0x0000c19a movs r2, 0                                            |     r2 = 0;
    0x0000c19c movs r1, 0x25                                         |     r1 = 0x25;
    0x0000c19e blx 0x5258                                            |     soap_fault_device_management ();
    0x0000c1a2 movs r0, 0xc                                          |     r0 = 0xc;
    0x0000c1a4 b 0xc12c                                              |     goto label_6;
                                                                     | label_14:
    0x0000c1a6 mov r2, r3                                            |     r2 = r3;
    0x0000c1a8 ldr r3, [r3, 8]                                       |     r3 = *((r3 + 8));
    0x0000c1aa mov sb, r4                                            |     sb = r4;
    0x0000c1ac mov r0, r4                                            |     r0 = r4;
    0x0000c1ae movs r1, 0x10                                         |     r1 = 0x10;
    0x0000c1b0 mvn r4, 2                                             |     r4 = ~2;
    0x0000c1b4 str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000c1b6 ldr r2, [r2, 4]                                       |     r2 = *((r2 + 4));
    0x0000c1b8 ldr r3, [pc, 0xe0]                                    |     
    0x0000c1ba str r2, [sp]                                          |     *(sp) = r2;
    0x0000c1bc ldr r2, [pc, 0xe0]                                    |     
    0x0000c1be add r3, pc                                            |     r3 = 0x1845e;
    0x0000c1c0 add r2, pc                                            |     r2 = 0x18464;
    0x0000c1c2 blx 0x50fc                                            |     g_log ();
    0x0000c1c6 str.w sb, [sp, 0x10]                                  |     __asm ("str.w sb, [var_10h_2]");
    0x0000c1ca str.w sb, [sp, 0x18]                                  |     __asm ("str.w sb, [var_18h]");
    0x0000c1ce strd sb, sb, [sp, 8]                                  |     __asm ("strd sb, sb, [sp, 8]");
    0x0000c1d2 b 0xc0ec                                              |     goto label_8;
                                                                     | label_15:
    0x0000c1d4 mov r2, r3                                            |     r2 = r3;
    0x0000c1d6 ldr r3, [r3, 8]                                       |     r3 = *((r3 + 8));
    0x0000c1d8 ldr r4, [sp, 0xc]                                     |     r4 = var_ch;
    0x0000c1da movs r1, 0x10                                         |     r1 = 0x10;
    0x0000c1dc str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000c1de ldr r3, [r2, 4]                                       |     r3 = *((r2 + 4));
    0x0000c1e0 mov r0, r4                                            |     r0 = r4;
    0x0000c1e2 ldr r2, [pc, 0xc0]                                    |     
    0x0000c1e4 mov sb, r4                                            |     sb = r4;
    0x0000c1e6 str r3, [sp]                                          |     *(sp) = r3;
    0x0000c1e8 ldr r3, [pc, 0xbc]                                    |     
    0x0000c1ea add r2, pc                                            |     r2 = 0x18494;
    0x0000c1ec add r3, pc                                            |     r3 = 0x18498;
    0x0000c1ee blx 0x50fc                                            |     g_log ();
    0x0000c1f2 str r4, [sp, 0x10]                                    |     var_10h_2 = r4;
    0x0000c1f4 str r4, [sp, 0x18]                                    |     var_18h = r4;
    0x0000c1f6 mvn r4, 2                                             |     r4 = ~2;
    0x0000c1fa b 0xc0ec                                              |     goto label_8;
                                                                     | label_16:
    0x0000c1fc mov r2, r3                                            |     r2 = r3;
    0x0000c1fe ldr r3, [r3, 8]                                       |     r3 = *((r3 + 8));
    0x0000c200 ldr r4, [sp, 0x10]                                    |     r4 = var_10h_2;
    0x0000c202 movs r1, 0x10                                         |     r1 = 0x10;
    0x0000c204 str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000c206 ldr r3, [r2, 4]                                       |     r3 = *((r2 + 4));
    0x0000c208 mov r0, r4                                            |     r0 = r4;
    0x0000c20a ldr r2, [pc, 0xa0]                                    |     
    0x0000c20c mov sb, r4                                            |     sb = r4;
    0x0000c20e str r3, [sp]                                          |     *(sp) = r3;
    0x0000c210 ldr r3, [pc, 0x9c]                                    |     
    0x0000c212 add r2, pc                                            |     r2 = 0x184c4;
    0x0000c214 add r3, pc                                            |     r3 = 0x184c8;
    0x0000c216 blx 0x50fc                                            |     g_log ();
    0x0000c21a str r4, [sp, 0x18]                                    |     var_18h = r4;
    0x0000c21c mvn r4, 2                                             |     r4 = ~2;
    0x0000c220 b 0xc0ec                                              |     goto label_8;
                                                                     | label_32:
    0x0000c222 ldr r3, [r4, 8]                                       |     r3 = *((r4 + 8));
    0x0000c224 movs r1, 0x10                                         |     r1 = 0x10;
    0x0000c226 ldr r2, [pc, 0x8c]                                    |     
    0x0000c228 movs r0, 0                                            |     r0 = 0;
    0x0000c22a str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000c22c ldr r3, [r4, 4]                                       |     r3 = *((r4 + 4));
    0x0000c22e add r2, pc                                            |     r2 = 0x184e8;
    0x0000c230 mvn r4, 2                                             |     r4 = ~2;
    0x0000c234 str r3, [sp]                                          |     *(sp) = r3;
    0x0000c236 ldr r3, [pc, 0x80]                                    |     
    0x0000c238 add r3, pc                                            |     r3 = 0x184f6;
    0x0000c23a blx 0x50fc                                            |     g_log ();
    0x0000c23e b 0xc0ec                                              |     goto label_8;
                                                                     | label_36:
    0x0000c240 blx 0x561c                                            |     fcn_0000561c ();
                                                                     | label_33:
    0x0000c244 ldr r2, [r3, 8]                                       |     r2 = *((r3 + 8));
    0x0000c246 mov r0, r4                                            |     r0 = r4;
    0x0000c248 movs r1, 0x10                                         |     r1 = 0x10;
    0x0000c24a mvn r4, 2                                             |     r4 = ~2;
    0x0000c24e str r2, [sp, 4]                                       |     var_4h = r2;
    0x0000c250 ldr r3, [r3, 4]                                       |     r3 = *((r3 + 4));
    0x0000c252 ldr r2, [pc, 0x68]                                    |     
    0x0000c254 str r3, [sp]                                          |     *(sp) = r3;
    0x0000c256 ldr r3, [pc, 0x68]                                    |     
    0x0000c258 add r2, pc                                            |     r2 = 0x1851a;
    0x0000c25a add r3, pc                                            |     r3 = 0x18520;
    0x0000c25c blx 0x50fc                                            |     g_log ();
    0x0000c260 b 0xc0ec                                              |     goto label_8;
                                                                     | }

[*] Function strcpy used 10 times libimpl_wsd_tds.so