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