[*] Binary protection state of libwsevent.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of libwsevent.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libwsevent.so @ 0x243c */
| #include <stdint.h>
|
; (fcn) fcn.0000243c () | void fcn_0000243c (int16_t arg1) {
| r0 = arg1;
0x0000243c invalid |
0x00002440 bl 0x2fc0 | fcn_00002fc0 ();
0x00002444 cmp r4, 0 |
| if (r4 == 0) {
0x00002446 beq.w 0x25ce | goto label_2;
| }
0x0000244a ldr r3, [r4] | r3 = *(r4);
0x0000244c mov r1, r0 | r1 = r0;
| if (r3 != 0) {
0x0000244e cbz r3, 0x2456 |
0x00002450 ldr r3, [r3] | r3 = *(r3);
0x00002452 cmp r3, r0 |
| if (r3 == r0) {
0x00002454 beq 0x24d4 | goto label_3;
| }
| }
0x00002456 mov r0, r4 | r0 = r4;
0x00002458 blx 0x1ff4 | r0 = event_has_tag_at ();
0x0000245c cmp r0, 0 |
| if (r0 == 0) {
0x0000245e bne 0x24d4 |
0x00002460 bl 0x337c | fcn_0000337c ();
0x00002464 ldr r3, [r4] | r3 = *(r4);
0x00002466 mov r1, r0 | r1 = r0;
| if (r3 != 0) {
0x00002468 cbz r3, 0x2470 |
0x0000246a ldr r3, [r3] | r3 = *(r3);
0x0000246c cmp r3, r0 |
| if (r3 == r0) {
0x0000246e beq 0x2514 | goto label_4;
| }
| }
0x00002470 mov r0, r4 | r0 = r4;
0x00002472 blx 0x1ff4 | r0 = event_has_tag_at ();
0x00002476 cmp r0, 0 |
| if (r0 != 0) {
0x00002478 bne 0x2514 | goto label_4;
| }
0x0000247a bl 0x2da0 | fcn_00002da0 ();
0x0000247e ldr r3, [r4] | r3 = *(r4);
0x00002480 mov r1, r0 | r1 = r0;
| if (r3 != 0) {
0x00002482 cbz r3, 0x248a |
0x00002484 ldr r3, [r3] | r3 = *(r3);
0x00002486 cmp r3, r0 |
| if (r3 == r0) {
0x00002488 beq 0x2544 | goto label_5;
| }
| }
0x0000248a mov r0, r4 | r0 = r4;
0x0000248c blx 0x1ff4 | r0 = event_has_tag_at ();
0x00002490 cmp r0, 0 |
| if (r0 != 0) {
0x00002492 bne 0x2544 | goto label_5;
| }
0x00002494 bl 0x34e0 | fcn_000034e0 ();
0x00002498 ldr r3, [r4] | r3 = *(r4);
0x0000249a mov r1, r0 | r1 = r0;
| if (r3 != 0) {
0x0000249c cbz r3, 0x24a4 |
0x0000249e ldr r3, [r3] | r3 = *(r3);
0x000024a0 cmp r3, r0 |
| if (r3 == r0) {
0x000024a2 beq 0x258c | goto label_6;
| }
| }
0x000024a4 mov r0, r4 | r0 = r4;
0x000024a6 blx 0x1ff4 | r0 = event_has_tag_at ();
0x000024aa cmp r0, 0 |
| if (r0 != 0) {
0x000024ac bne 0x258c | goto label_6;
| }
0x000024ae bl 0x319c | fcn_0000319c ();
0x000024b2 ldr r3, [r4] | r3 = *(r4);
0x000024b4 mov r1, r0 | r1 = r0;
| if (r3 != 0) {
0x000024b6 cbz r3, 0x24c0 |
0x000024b8 ldr r3, [r3] | r3 = *(r3);
0x000024ba cmp r3, r0 |
| if (r3 == r0) {
0x000024bc beq.w 0x25c8 | goto label_7;
| }
| }
0x000024c0 mov r0, r4 | r0 = r4;
0x000024c2 blx 0x1ff4 | r0 = event_has_tag_at ();
0x000024c6 cmp r0, 0 |
| if (r0 != 0) {
0x000024c8 bne 0x25c8 | goto label_7;
| }
0x000024ca bl 0x36f8 | fcn_000036f8 ();
0x000024ce bl 0x31f4 | fcn_000031f4 ();
0x000024d2 b 0x2502 |
| } else {
| label_3:
0x000024d4 bl 0x2fc0 | r0 = fcn_00002fc0 ();
0x000024d8 mov r1, r0 | r1 = r0;
0x000024da mov r0, r4 | r0 = r4;
0x000024dc blx 0x2078 | r0 = fprintf_chk ()
0x000024e0 mov r4, r0 | r4 = r0;
0x000024e2 bl 0x30d8 | r0 = fcn_000030d8 (r0);
0x000024e6 mov r5, r0 | r5 = r0;
0x000024e8 mov r0, r4 | r0 = r4;
0x000024ea bl 0x30dc | r0 = fcn_000030dc (r0);
0x000024ee mov r1, r0 | r1 = r0;
0x000024f0 mov r0, r4 | r0 = r4;
0x000024f2 mov r4, r1 | r4 = r1;
0x000024f4 bl 0x30e0 | fcn_000030e0 (r0);
0x000024f8 mov r1, r4 | r1 = r4;
0x000024fa mov r2, r0 | r2 = r0;
0x000024fc mov r0, r5 | r0 = r5;
0x000024fe bl 0x3458 | r0 = fcn_00003458 (r0, r1, r2);
| }
| do {
| label_1:
0x00002502 mov r4, r0 | r4 = r0;
0x00002504 bl 0x3108 | r0 = fcn_00003108 ();
0x00002508 mov r1, r0 | r1 = r0;
0x0000250a mov r0, r4 | r0 = r4;
0x0000250c pop.w {r4, r5, r6, lr} |
0x00002510 b.w 0x2074 | void (*0x2074)() ();
| label_4:
0x00002514 bl 0x337c | r0 = fcn_0000337c ();
0x00002518 mov r1, r0 | r1 = r0;
0x0000251a mov r0, r4 | r0 = r4;
0x0000251c blx 0x2078 | r0 = fprintf_chk ()
0x00002520 mov r4, r0 | r4 = r0;
0x00002522 bl 0x3494 | r0 = fcn_00003494 (r0);
0x00002526 mov r5, r0 | r5 = r0;
0x00002528 mov r0, r4 | r0 = r4;
0x0000252a bl 0x3498 | r0 = fcn_00003498 (r0);
0x0000252e mov r1, r0 | r1 = r0;
0x00002530 mov r0, r4 | r0 = r4;
0x00002532 mov r4, r1 | r4 = r1;
0x00002534 bl 0x349c | fcn_0000349c (r0);
0x00002538 mov r1, r4 | r1 = r4;
0x0000253a mov r2, r0 | r2 = r0;
0x0000253c mov r0, r5 | r0 = r5;
0x0000253e bl 0x309c | fcn_0000309c (r0, r1, r2);
0x00002542 b 0x2502 |
| } while (1);
| label_5:
0x00002544 movs r0, 0 | r0 = 0;
0x00002546 bl 0x3630 | r0 = fcn_00003630 (r0);
0x0000254a mov r6, r0 | r6 = r0;
0x0000254c bl 0x2da0 | r0 = fcn_00002da0 ();
0x00002550 mov r1, r0 | r1 = r0;
0x00002552 mov r0, r4 | r0 = r4;
0x00002554 blx 0x2078 | fprintf_chk ()
0x00002558 bl 0x2f0c | r0 = fcn_00002f0c (r0);
0x0000255c mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0000255e cbz r0, 0x257c | goto label_0;
| }
| do {
0x00002560 ldr r0, [r5] | r0 = *(r5);
0x00002562 bl 0x243c | r0 = fcn_0000243c (r0);
0x00002566 mov r4, r0 | r4 = r0;
0x00002568 mov r0, r6 | r0 = r6;
0x0000256a mov r1, r4 | r1 = r4;
0x0000256c bl 0x35f4 | fcn_000035f4 (r0, r1);
0x00002570 mov r0, r4 | r0 = r4;
0x00002572 blx 0x1da4 | fcn_00001da4 ();
0x00002576 ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x00002578 cmp r5, 0 |
0x0000257a bne 0x2560 |
| } while (r5 != 0);
| do {
| label_0:
0x0000257c bl 0x3108 | r0 = fcn_00003108 ();
0x00002580 mov r1, r0 | r1 = r0;
0x00002582 mov r0, r6 | r0 = r6;
0x00002584 pop.w {r4, r5, r6, lr} |
0x00002588 b.w 0x2074 | void (*0x2074)() ();
| label_6:
0x0000258c movs r0, 0 | r0 = 0;
0x0000258e bl 0x2eec | r0 = fcn_00002eec (r0);
0x00002592 mov r6, r0 | r6 = r0;
0x00002594 bl 0x34e0 | r0 = fcn_000034e0 ();
0x00002598 mov r1, r0 | r1 = r0;
0x0000259a mov r0, r4 | r0 = r4;
0x0000259c blx 0x2078 | fprintf_chk ()
0x000025a0 bl 0x35f0 | r0 = fcn_000035f0 (r0);
0x000025a4 mov r5, r0 | r5 = r0;
0x000025a6 cmp r0, 0 |
0x000025a8 beq 0x257c |
| } while (r0 == 0);
| do {
0x000025aa ldr r0, [r5] | r0 = *(r5);
0x000025ac bl 0x243c | r0 = fcn_0000243c (r0);
0x000025b0 mov r4, r0 | r4 = r0;
0x000025b2 mov r0, r6 | r0 = r6;
0x000025b4 mov r1, r4 | r1 = r4;
0x000025b6 bl 0x2eb0 | fcn_00002eb0 (r0, r1);
0x000025ba mov r0, r4 | r0 = r4;
0x000025bc blx 0x1da4 | fcn_00001da4 ();
0x000025c0 ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x000025c2 cmp r5, 0 |
0x000025c4 bne 0x25aa |
| } while (r5 != 0);
0x000025c6 b 0x257c | goto label_0;
| label_7:
0x000025c8 bl 0x3750 | fcn_00003750 ();
0x000025cc b 0x2502 | goto label_1;
| label_2:
0x000025ce bl 0x337c | fcn_0000337c ();
0x000025d2 bl 0x2da0 | fcn_00002da0 ();
0x000025d6 bl 0x34e0 | fcn_000034e0 ();
0x000025da bl 0x319c | fcn_0000319c ();
0x000025de bl 0x36f8 | fcn_000036f8 ();
0x000025e2 nop |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libwsevent.so @ 0x25e4 */
| #include <stdint.h>
|
; (fcn) fcn.000025e4 () | void fcn_000025e4 (int16_t arg1) {
| r0 = arg1;
0x000025e4 push {r4, r5, r6, lr} |
0x000025e6 mov r4, r0 | r4 = r0;
0x000025e8 movs r0, 0 | r0 = 0;
0x000025ea bl 0x2eec | r0 = fcn_00002eec (r0);
0x000025ee mov r6, r0 | r6 = r0;
0x000025f0 bl 0x2da0 | r0 = fcn_00002da0 ();
0x000025f4 mov r1, r0 | r1 = r0;
0x000025f6 mov r0, r4 | r0 = r4;
0x000025f8 blx 0x2078 | fprintf_chk ()
0x000025fc bl 0x2f0c | r0 = fcn_00002f0c (r0);
| if (r0 == 0) {
0x00002600 cbz r0, 0x264e | goto label_1;
| }
0x00002602 mov r4, r0 | r4 = r0;
| do {
0x00002604 ldr r5, [r4] | r5 = *(r4);
0x00002606 bl 0x2da0 | r0 = fcn_00002da0 ();
0x0000260a mov r3, r0 | r3 = r0;
0x0000260c mov r1, r0 | r1 = r0;
0x0000260e mov r0, r5 | r0 = r5;
| if (r5 == 0) {
0x00002610 cbz r5, 0x265e | goto label_2;
| }
0x00002612 ldr r2, [r5] | r2 = *(r5);
| if (r2 != 0) {
0x00002614 cbz r2, 0x261c |
0x00002616 ldr r2, [r2] | r2 = *(r2);
0x00002618 cmp r2, r3 |
| if (r2 == r3) {
0x0000261a beq 0x2622 | goto label_3;
| }
| }
0x0000261c blx 0x1ff4 | r0 = event_has_tag_at ();
| if (r0 == 0) {
0x00002620 cbz r0, 0x265e | goto label_2;
| }
| label_3:
0x00002622 mov r0, r5 | r0 = r5;
0x00002624 bl 0x25e4 | r0 = fcn_000025e4 (r0);
0x00002628 mov r5, r0 | r5 = r0;
0x0000262a bl 0x2da0 | r0 = fcn_00002da0 ();
0x0000262e mov r1, r0 | r1 = r0;
0x00002630 mov r0, r5 | r0 = r5;
0x00002632 blx 0x2078 | fprintf_chk ()
0x00002636 bl 0x2f0c | r0 = fcn_00002f0c (r0);
0x0000263a mov r1, r0 | r1 = r0;
0x0000263c mov r0, r6 | r0 = r6;
0x0000263e bl 0x2ec8 | fcn_00002ec8 (r0, r1);
0x00002642 mov r0, r5 | r0 = r5;
0x00002644 blx 0x1da4 | fcn_00001da4 ();
| label_0:
0x00002648 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x0000264a cmp r4, 0 |
0x0000264c bne 0x2604 |
| } while (r4 != 0);
| label_1:
0x0000264e bl 0x3108 | r0 = fcn_00003108 ();
0x00002652 mov r1, r0 | r1 = r0;
0x00002654 mov r0, r6 | r0 = r6;
0x00002656 pop.w {r4, r5, r6, lr} |
0x0000265a b.w 0x2074 | void (*0x2074)() ();
| label_2:
0x0000265e mov r1, r5 | r1 = r5;
0x00002660 mov r0, r6 | r0 = r6;
0x00002662 bl 0x2eb0 | fcn_00002eb0 (r0, r1);
0x00002666 b 0x2648 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libwsevent.so @ 0x2668 */
| #include <stdint.h>
|
; (fcn) fcn.00002668 () | void fcn_00002668 (int16_t arg1) {
| r0 = arg1;
0x00002668 push.w {r3, r4, r5, r6, r7, r8, sb, lr} |
0x0000266c mov r7, r0 | r7 = r0;
0x0000266e bl 0x2da0 | r0 = fcn_00002da0 ();
0x00002672 mov r1, r0 | r1 = r0;
0x00002674 mov r0, r7 | r0 = r7;
0x00002676 blx 0x2078 | fprintf_chk ()
0x0000267a bl 0x2f0c | r0 = fcn_00002f0c (r0);
0x0000267e blx 0x1d68 | r0 = fcn_00001d68 ();
0x00002682 mov r6, r0 | r6 = r0;
| if (r0 == 0) {
0x00002684 cbz r0, 0x26ac | goto label_0;
| }
0x00002686 mov r4, r0 | r4 = r0;
| do {
0x00002688 ldr r5, [r4] | r5 = *(r4);
0x0000268a bl 0x34e0 | r0 = fcn_000034e0 ();
0x0000268e mov r3, r0 | r3 = r0;
0x00002690 mov r1, r0 | r1 = r0;
0x00002692 mov r0, r5 | r0 = r5;
| if (r5 != 0) {
0x00002694 cbz r5, 0x26a6 |
0x00002696 ldr r2, [r5] | r2 = *(r5);
| if (r2 != 0) {
0x00002698 cbz r2, 0x26a0 |
0x0000269a ldr r2, [r2] | r2 = *(r2);
0x0000269c cmp r2, r3 |
| if (r2 == r3) {
0x0000269e beq 0x26c0 | goto label_1;
| }
| }
0x000026a0 blx 0x1ff4 | r0 = event_has_tag_at ();
| if (r0 != 0) {
0x000026a4 cbnz r0, 0x26c0 | goto label_1;
| }
| }
0x000026a6 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x000026a8 cmp r4, 0 |
0x000026aa bne 0x2688 |
| } while (r4 != 0);
| do {
| label_0:
0x000026ac mov r0, r7 | r0 = r7;
0x000026ae mov r4, r7 | r4 = r7;
0x000026b0 blx 0x1ed0 | fcn_00001ed0 ();
0x000026b4 mov r0, r6 | r0 = r6;
0x000026b6 blx 0x1d44 | fcn_00001d44 ();
0x000026ba mov r0, r4 | r0 = r4;
0x000026bc pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_1:
0x000026c0 bl 0x34e0 | r0 = fcn_000034e0 ();
0x000026c4 mov r1, r0 | r1 = r0;
0x000026c6 mov r0, r5 | r0 = r5;
0x000026c8 blx 0x2078 | r0 = fprintf_chk ()
0x000026cc mov r4, r0 | r4 = r0;
0x000026ce cmp r0, 0 |
0x000026d0 beq 0x26ac |
| } while (r0 == 0);
0x000026d2 mov r1, r0 | r1 = r0;
0x000026d4 mov r0, r6 | r0 = r6;
0x000026d6 blx 0x1ce0 | fcn_00001ce0 ();
0x000026da movs r1, 0 | r1 = 0;
0x000026dc mov r5, r0 | r5 = r0;
0x000026de blx 0x21fc | r0 = fcn_000021fc ();
0x000026e2 mov r8, r0 | r8 = r0;
0x000026e4 mov r0, r5 | r0 = r5;
0x000026e6 mov r1, r8 | r1 = r8;
0x000026e8 blx 0x1ce0 | r0 = fcn_00001ce0 ();
0x000026ec mov r6, r0 | r6 = r0;
0x000026ee cmp.w r8, 0 |
| if (r8 == 0) {
0x000026f2 beq 0x27b4 | goto label_2;
| }
0x000026f4 movs r0, 0 | r0 = 0;
0x000026f6 bl 0x3630 | r0 = fcn_00003630 (r0);
0x000026fa mov sb, r0 | sb = r0;
0x000026fc mov r0, r4 | r0 = r4;
0x000026fe bl 0x35f0 | r0 = fcn_000035f0 (r0);
0x00002702 mov r7, r0 | r7 = r0;
| if (r0 == 0) {
0x00002704 cbz r0, 0x2748 | goto label_3;
| }
| do {
0x00002706 movs r0, 0 | r0 = 0;
0x00002708 bl 0x2eec | fcn_00002eec (r0);
0x0000270c mov r1, r8 | r1 = r8;
0x0000270e mov r4, r0 | r4 = r0;
0x00002710 bl 0x2eb0 | fcn_00002eb0 (r0, r1);
0x00002714 ldr r1, [r7] | r1 = *(r7);
0x00002716 mov r0, r4 | r0 = r4;
0x00002718 bl 0x2eb0 | r0 = fcn_00002eb0 (r0, r1);
0x0000271c bl 0x3108 | r0 = fcn_00003108 ();
0x00002720 mov r1, r0 | r1 = r0;
0x00002722 mov r0, r4 | r0 = r4;
0x00002724 blx 0x2078 | fprintf_chk ()
0x00002728 bl 0x25e4 | r0 = fcn_000025e4 (r0);
0x0000272c mov r5, r0 | r5 = r0;
0x0000272e mov r0, r4 | r0 = r4;
0x00002730 blx 0x1da4 | fcn_00001da4 ();
0x00002734 mov r1, r5 | r1 = r5;
0x00002736 mov r0, sb | r0 = sb;
0x00002738 bl 0x35f4 | fcn_000035f4 (r0, r1);
0x0000273c mov r0, r5 | r0 = r5;
0x0000273e blx 0x1da4 | fcn_00001da4 ();
0x00002742 ldr r7, [r7, 4] | r7 = *((r7 + 4));
0x00002744 cmp r7, 0 |
0x00002746 bne 0x2706 |
| } while (r7 != 0);
| label_3:
0x00002748 mov r0, r6 | r0 = r6;
0x0000274a blx 0x204c | r0 = fcn_0000204c ();
| if (r0 != 0) {
0x0000274e cbz r0, 0x279a |
0x00002750 mov r0, r6 | r0 = r6;
0x00002752 bl 0x2eec | r0 = fcn_00002eec (r0);
0x00002756 mov r4, r0 | r4 = r0;
0x00002758 bl 0x3108 | r0 = fcn_00003108 ();
0x0000275c mov r1, r0 | r1 = r0;
0x0000275e mov r0, r4 | r0 = r4;
0x00002760 blx 0x2078 | r0 = fprintf_chk ()
0x00002764 mov r4, r0 | r4 = r0;
0x00002766 bl 0x2da0 | r0 = fcn_00002da0 ();
0x0000276a mov r1, r0 | r1 = r0;
0x0000276c mov r0, r4 | r0 = r4;
0x0000276e blx 0x2078 | r0 = fprintf_chk ()
0x00002772 mov r5, r0 | r5 = r0;
0x00002774 bl 0x3108 | r0 = fcn_00003108 ();
0x00002778 mov r1, r0 | r1 = r0;
0x0000277a mov r0, sb | r0 = sb;
0x0000277c blx 0x2078 | r0 = fprintf_chk ()
0x00002780 mov r1, r0 | r1 = r0;
0x00002782 mov r0, r5 | r0 = r5;
0x00002784 bl 0x2eb0 | fcn_00002eb0 (r0, r1);
0x00002788 mov r0, sb | r0 = sb;
0x0000278a blx 0x1da4 | fcn_00001da4 ();
0x0000278e mov r0, r6 | r0 = r6;
0x00002790 blx 0x1d44 | fcn_00001d44 ();
0x00002794 mov r0, r4 | r0 = r4;
0x00002796 pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| }
0x0000279a bl 0x3108 | r0 = fcn_00003108 ();
0x0000279e mov r1, r0 | r1 = r0;
0x000027a0 mov r0, sb | r0 = sb;
0x000027a2 blx 0x2078 | r0 = fprintf_chk ()
0x000027a6 mov r4, r0 | r4 = r0;
0x000027a8 mov r0, r6 | r0 = r6;
0x000027aa blx 0x1d44 | fcn_00001d44 ();
0x000027ae mov r0, r4 | r0 = r4;
0x000027b0 pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_2:
0x000027b4 mov r0, r4 | r0 = r4;
0x000027b6 blx 0x1ed0 | fcn_00001ed0 ();
0x000027ba bl 0x3108 | r0 = fcn_00003108 ();
0x000027be mov r1, r0 | r1 = r0;
0x000027c0 mov r0, r4 | r0 = r4;
0x000027c2 blx 0x2078 | r0 = fprintf_chk ()
0x000027c6 mov r4, r0 | r4 = r0;
0x000027c8 mov r0, r6 | r0 = r6;
0x000027ca blx 0x1d44 | fcn_00001d44 ();
0x000027ce mov r0, r4 | r0 = r4;
0x000027d0 pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libwsevent.so @ 0x27d4 */
| #include <stdint.h>
|
; (fcn) fcn.000027d4 () | void fcn_000027d4 (int16_t arg1) {
| r0 = arg1;
0x000027d4 invalid |
0x000027d8 movs r0, 0 | r0 = 0;
0x000027da bl 0x3630 | r0 = fcn_00003630 (r0);
0x000027de mov r6, r0 | r6 = r0;
0x000027e0 bl 0x34e0 | r0 = fcn_000034e0 ();
0x000027e4 mov r1, r0 | r1 = r0;
0x000027e6 mov r0, r4 | r0 = r4;
0x000027e8 blx 0x2078 | fprintf_chk ()
0x000027ec bl 0x35f0 | r0 = fcn_000035f0 (r0);
| if (r0 == 0) {
0x000027f0 cbz r0, 0x283e | goto label_1;
| }
0x000027f2 mov r4, r0 | r4 = r0;
| do {
0x000027f4 ldr r5, [r4] | r5 = *(r4);
0x000027f6 bl 0x34e0 | r0 = fcn_000034e0 ();
0x000027fa mov r3, r0 | r3 = r0;
0x000027fc mov r1, r0 | r1 = r0;
0x000027fe mov r0, r5 | r0 = r5;
| if (r5 == 0) {
0x00002800 cbz r5, 0x284e | goto label_2;
| }
0x00002802 ldr r2, [r5] | r2 = *(r5);
| if (r2 != 0) {
0x00002804 cbz r2, 0x280c |
0x00002806 ldr r2, [r2] | r2 = *(r2);
0x00002808 cmp r2, r3 |
| if (r2 == r3) {
0x0000280a beq 0x2812 | goto label_3;
| }
| }
0x0000280c blx 0x1ff4 | r0 = event_has_tag_at ();
| if (r0 == 0) {
0x00002810 cbz r0, 0x284e | goto label_2;
| }
| label_3:
0x00002812 mov r0, r5 | r0 = r5;
0x00002814 bl 0x27d4 | fcn_000027d4 (r0);
0x00002816 invalid |
0x00002818 mov r5, r0 | r5 = r0;
0x0000281a bl 0x34e0 | r0 = fcn_000034e0 ();
0x0000281e mov r1, r0 | r1 = r0;
0x00002820 mov r0, r5 | r0 = r5;
0x00002822 blx 0x2078 | fprintf_chk ()
0x00002826 bl 0x35f0 | r0 = fcn_000035f0 (r0);
0x0000282a mov r1, r0 | r1 = r0;
0x0000282c mov r0, r6 | r0 = r6;
0x0000282e bl 0x360c | fcn_0000360c (r0, r1);
0x00002832 mov r0, r5 | r0 = r5;
0x00002834 blx 0x1da4 | fcn_00001da4 ();
| label_0:
0x00002838 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x0000283a cmp r4, 0 |
0x0000283c bne 0x27f4 |
| } while (r4 != 0);
| label_1:
0x0000283e bl 0x3108 | r0 = fcn_00003108 ();
0x00002842 mov r1, r0 | r1 = r0;
0x00002844 mov r0, r6 | r0 = r6;
0x00002846 pop.w {r4, r5, r6, lr} |
0x0000284a b.w 0x2074 | void (*0x2074)() ();
| label_2:
0x0000284e mov r1, r5 | r1 = r5;
0x00002850 mov r0, r6 | r0 = r6;
0x00002852 bl 0x35f4 | fcn_000035f4 (r0, r1);
0x00002856 b 0x2838 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libwsevent.so @ 0x2858 */
| #include <stdint.h>
|
; (fcn) fcn.00002858 () | void fcn_00002858 (int16_t arg1) {
| r0 = arg1;
0x00002858 push {r3, r4, r5, r6, r7, lr} |
0x0000285a mov r5, r0 | r5 = r0;
0x0000285c bl 0x34e0 | fcn_000034e0 ();
0x00002860 cmp r5, 0 |
| if (r5 == 0) {
0x00002862 beq.w 0x29f6 | goto label_8;
| }
0x00002864 strh r0, [r1, 6] | *((r1 + 6)) = r0;
0x00002866 ldr r3, [r5] | r3 = *(r5);
0x00002868 mov r1, r0 | r1 = r0;
| if (r3 != 0) {
0x0000286a cbz r3, 0x2872 |
0x0000286c ldr r3, [r3] | r3 = *(r3);
0x0000286e cmp r0, r3 |
| if (r0 == r3) {
0x00002870 beq 0x287a | goto label_9;
| }
| }
0x00002872 mov r0, r5 | r0 = r5;
0x00002874 blx 0x1ff4 | r0 = event_has_tag_at ();
| if (r0 == 0) {
0x00002878 cbz r0, 0x289e | goto label_10;
| }
| label_9:
0x0000287a bl 0x34e0 | r0 = fcn_000034e0 ();
0x0000287e mov r1, r0 | r1 = r0;
0x00002880 mov r0, r5 | r0 = r5;
0x00002882 blx 0x2078 | fprintf_chk ()
0x00002886 bl 0x35f0 | r0 = fcn_000035f0 (r0);
0x0000288a mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x0000288c cbnz r0, 0x2894 | goto label_11;
| }
0x0000288e b 0x28b8 | goto label_12;
| do {
0x00002890 ldr r4, [r4, 4] | r4 = *((r4 + 4));
| if (r4 == 0) {
0x00002892 cbz r4, 0x28b8 | goto label_12;
| }
| label_11:
0x00002894 ldr r0, [r4] | r0 = *(r4);
0x00002896 bl 0x23f0 | r0 = fcn_000023f0 (r0);
0x0000289a cmp r0, 0 |
0x0000289c bne 0x2890 |
| } while (r0 != 0);
| label_10:
0x0000289e mov r0, r5 | r0 = r5;
0x000028a0 bl 0x23f0 | r0 = fcn_000023f0 (r0);
| if (r0 != 0) {
0x000028a4 cbz r0, 0x28c4 |
| label_2:
0x000028a6 mov r0, r5 | r0 = r5;
0x000028a8 blx 0x1ed0 | fcn_00001ed0 ();
0x000028ac mov r0, r5 | r0 = r5;
0x000028ae movs r1, 0 | r1 = 0;
0x000028b0 pop.w {r3, r4, r5, r6, r7, lr} |
0x000028b4 b.w 0x3650 | void (*0x3650)() ();
| label_12:
0x000028b8 mov r0, r5 | r0 = r5;
0x000028ba mov r4, r5 | r4 = r5;
0x000028bc blx 0x1ed0 | fcn_00001ed0 ();
| label_4:
0x000028c0 mov r0, r4 | r0 = r4;
0x000028c2 pop {r3, r4, r5, r6, r7, pc} |
| }
0x000028c4 bl 0x34e0 | fcn_000034e0 ();
0x000028c8 ldr r3, [r5] | r3 = *(r5);
0x000028ca mov r1, r0 | r1 = r0;
| if (r3 != 0) {
0x000028cc cbz r3, 0x28d4 |
0x000028ce ldr r3, [r3] | r3 = *(r3);
0x000028d0 cmp r0, r3 |
| if (r0 == r3) {
0x000028d2 beq 0x28dc | goto label_13;
| }
| }
0x000028d4 mov r0, r5 | r0 = r5;
0x000028d6 blx 0x1ff4 | r0 = event_has_tag_at ();
| if (r0 == 0) {
0x000028da cbz r0, 0x2904 | goto label_14;
| }
| label_13:
0x000028dc bl 0x34e0 | r0 = fcn_000034e0 ();
0x000028e0 mov r1, r0 | r1 = r0;
0x000028e2 mov r0, r5 | r0 = r5;
0x000028e4 blx 0x2078 | fprintf_chk ()
0x000028e8 bl 0x35f0 | r0 = fcn_000035f0 (r0);
0x000028ec mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x000028ee cbnz r0, 0x28fa | goto label_15;
| }
0x000028f0 b 0x2a20 | goto label_16;
| do {
0x000028f2 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x000028f4 cmp r4, 0 |
| if (r4 == 0) {
0x000028f6 beq.w 0x2a20 | goto label_16;
| }
| label_15:
0x000028fa ldr r0, [r4] | r0 = *(r4);
0x000028fc bl 0x2370 | r0 = fcn_00002370 (r0);
0x00002900 cmp r0, 0 |
0x00002902 bne 0x28f2 |
| } while (r0 != 0);
| label_14:
0x00002904 mov r0, r5 | r0 = r5;
0x00002906 bl 0x2370 | r0 = fcn_00002370 (r0);
| if (r0 != 0) {
0x0000290a cbz r0, 0x2924 |
| label_3:
0x0000290c mov r0, r5 | r0 = r5;
0x0000290e blx 0x1ed0 | fcn_00001ed0 ();
0x00002912 movs r1, 0 | r1 = 0;
0x00002914 mov r0, r5 | r0 = r5;
0x00002916 bl 0x2f10 | fcn_00002f10 ();
0x0000291a pop.w {r3, r4, r5, r6, r7, lr} |
0x0000291e movs r1, 0 | r1 = 0;
0x00002920 b.w 0x3650 | void (*0x3650)() ();
| }
0x00002924 bl 0x3244 | fcn_00003244 ();
0x00002928 ldr r3, [r5] | r3 = *(r5);
0x0000292a mov r1, r0 | r1 = r0;
| if (r3 != 0) {
0x0000292c cbz r3, 0x2936 |
0x0000292e ldr r3, [r3] | r3 = *(r3);
0x00002930 cmp r0, r3 |
| if (r0 == r3) {
0x00002932 beq.w 0x2a7a | goto label_17;
| }
| }
0x00002936 mov r0, r5 | r0 = r5;
0x00002938 blx 0x1ff4 | r0 = event_has_tag_at ();
0x0000293c cmp r0, 0 |
| if (r0 != 0) {
0x0000293e bne.w 0x2a7a | goto label_17;
| }
0x00002942 bl 0x2da0 | fcn_00002da0 ();
0x00002946 ldr r3, [r5] | r3 = *(r5);
0x00002948 mov r1, r0 | r1 = r0;
| if (r3 != 0) {
0x0000294a cbz r3, 0x2952 |
0x0000294c ldr r3, [r3] | r3 = *(r3);
0x0000294e cmp r0, r3 |
| if (r0 == r3) {
0x00002950 beq 0x295e | goto label_18;
| }
| }
0x00002952 mov r0, r5 | r0 = r5;
0x00002954 blx 0x1ff4 | r0 = event_has_tag_at ();
0x00002958 cmp r0, 0 |
| if (r0 == 0) {
0x0000295a beq.w 0x2a9e | goto label_19;
| }
| label_18:
0x0000295e mov r0, r5 | r0 = r5;
0x00002960 bl 0x2668 | r0 = fcn_00002668 (r0);
0x00002964 mov r6, r0 | r6 = r0;
0x00002966 bl 0x34e0 | r0 = fcn_000034e0 ();
0x0000296a mov r1, r0 | r1 = r0;
| if (r6 != 0) {
0x0000296c cbz r6, 0x2986 |
0x0000296e ldr r3, [r6] | r3 = *(r6);
| if (r3 != 0) {
0x00002970 cbz r3, 0x297a |
0x00002972 ldr r3, [r3] | r3 = *(r3);
0x00002974 cmp r0, r3 |
| if (r0 == r3) {
0x00002976 beq.w 0x2ad8 | goto label_20;
| }
| }
0x0000297a mov r0, r6 | r0 = r6;
0x0000297c blx 0x1ff4 | r0 = event_has_tag_at ();
0x00002980 cmp r0, 0 |
| if (r0 != 0) {
0x00002982 bne.w 0x2ad8 | goto label_20;
| }
0x00002984 strh r1, [r5, 4] | *((r5 + 4)) = r1;
| }
0x00002986 movs r0, 0 | r0 = 0;
0x00002988 bl 0x2eec | r0 = fcn_00002eec (r0);
0x0000298c mov r7, r0 | r7 = r0;
0x0000298e bl 0x2da0 | r0 = fcn_00002da0 ();
0x00002992 mov r1, r0 | r1 = r0;
0x00002994 mov r0, r6 | r0 = r6;
0x00002996 blx 0x2078 | fprintf_chk ()
0x0000299a bl 0x2f0c | r0 = fcn_00002f0c (r0);
0x0000299e mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x000029a0 cbnz r0, 0x29ce | goto label_21;
| }
0x000029a2 b 0x2aaa | goto label_22;
| do {
| label_0:
0x000029a4 bl 0x3244 | r0 = fcn_00003244 ();
0x000029a8 mov r1, r0 | r1 = r0;
0x000029aa mov r0, r4 | r0 = r4;
0x000029ac blx 0x2078 | fprintf_chk ()
0x000029b0 bl 0x3330 | r0 = fcn_00003330 (r0);
0x000029b4 bl 0x243c | r0 = fcn_0000243c (r0);
0x000029b8 mov r4, r0 | r4 = r0;
0x000029ba mov r1, r0 | r1 = r0;
0x000029bc mov r0, r7 | r0 = r7;
0x000029be bl 0x2eb0 | fcn_00002eb0 (r0, r1);
0x000029c2 mov r0, r4 | r0 = r4;
0x000029c4 blx 0x1da4 | fcn_00001da4 ();
0x000029c6 invalid |
| label_1:
0x000029c8 ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x000029ca cmp r5, 0 |
| if (r5 == 0) {
0x000029cc beq 0x2aaa | goto label_22;
| }
| label_21:
0x000029ce ldr r4, [r5] | r4 = *(r5);
0x000029d0 bl 0x3244 | r0 = fcn_00003244 ();
0x000029d4 mov r1, r0 | r1 = r0;
| if (r4 == 0) {
0x000029d6 cbz r4, 0x29ec | goto label_23;
| }
0x000029d8 ldr r3, [r4] | r3 = *(r4);
| if (r3 == 0) {
0x000029da cbz r3, 0x29e2 | goto label_24;
| }
0x000029dc ldr r3, [r3] | r3 = *(r3);
0x000029de cmp r0, r3 |
0x000029e0 beq 0x29a4 |
| } while (r0 == r3);
| label_24:
0x000029e2 mov r0, r4 | r0 = r4;
0x000029e4 blx 0x1ff4 | r0 = event_has_tag_at ();
0x000029e8 cmp r0, 0 |
| if (r0 != 0) {
0x000029ea bne 0x29a4 | goto label_0;
| }
| label_23:
0x000029ec mov r1, r4 | r1 = r4;
0x000029ee mov r0, r7 | r0 = r7;
0x000029f0 bl 0x2eb0 | fcn_00002eb0 (r0, r1);
0x000029f4 b 0x29c8 | goto label_1;
| label_8:
0x000029f6 mov r0, r5 | r0 = r5;
0x000029f8 bl 0x23f0 | r0 = fcn_000023f0 (r0);
0x000029fc mov r4, r0 | r4 = r0;
0x000029fe cmp r0, 0 |
| if (r0 != 0) {
0x00002a00 bne.w 0x28a6 | goto label_2;
| }
0x00002a04 bl 0x34e0 | fcn_000034e0 ();
0x00002a08 mov r0, r4 | r0 = r4;
0x00002a0a bl 0x2370 | r0 = fcn_00002370 (r0);
0x00002a0e cmp r0, 0 |
| if (r0 != 0) {
0x00002a10 bne.w 0x290c | goto label_3;
| }
0x00002a14 bl 0x3244 | fcn_00003244 ();
0x00002a18 bl 0x2da0 | fcn_00002da0 ();
0x00002a1c bl 0x34e0 | fcn_000034e0 ();
| label_16:
0x00002a20 bl 0x34e0 | r0 = fcn_000034e0 ();
0x00002a24 mov r1, r0 | r1 = r0;
0x00002a26 mov r0, r5 | r0 = r5;
0x00002a28 blx 0x2078 | fprintf_chk ()
0x00002a2c bl 0x35f0 | r0 = fcn_000035f0 (r0);
0x00002a30 mov r5, r0 | r5 = r0;
0x00002a32 movs r0, 0 | r0 = 0;
0x00002a34 bl 0x3630 | r0 = fcn_00003630 (r0);
0x00002a38 mov r6, r0 | r6 = r0;
| if (r5 == 0) {
0x00002a3a cbz r5, 0x2a6a | goto label_25;
| }
| do {
0x00002a3c movs r0, 0 | r0 = 0;
0x00002a3e bl 0x2eec | fcn_00002eec (r0);
0x00002a42 ldr r1, [r5] | r1 = *(r5);
0x00002a44 mov r4, r0 | r4 = r0;
0x00002a46 bl 0x2eb0 | r0 = fcn_00002eb0 (r0, r1);
0x00002a4a bl 0x3108 | r0 = fcn_00003108 ();
0x00002a4e mov r1, r0 | r1 = r0;
0x00002a50 mov r0, r4 | r0 = r4;
0x00002a52 blx 0x2078 | r0 = fprintf_chk ()
0x00002a56 mov r1, r0 | r1 = r0;
0x00002a58 mov r0, r6 | r0 = r6;
0x00002a5a bl 0x35f4 | fcn_000035f4 (r0, r1);
0x00002a5e mov r0, r4 | r0 = r4;
0x00002a60 blx 0x1da4 | fcn_00001da4 ();
0x00002a64 ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x00002a66 cmp r5, 0 |
0x00002a68 bne 0x2a3c |
| } while (r5 != 0);
| label_25:
0x00002a6a bl 0x3108 | r0 = fcn_00003108 ();
0x00002a6e mov r1, r0 | r1 = r0;
0x00002a70 mov r0, r6 | r0 = r6;
0x00002a72 pop.w {r3, r4, r5, r6, r7, lr} |
0x00002a76 b.w 0x2074 | void (*0x2074)() ();
| label_17:
0x00002a7a bl 0x3244 | r0 = fcn_00003244 ();
0x00002a7e mov r1, r0 | r1 = r0;
0x00002a80 mov r0, r5 | r0 = r5;
0x00002a82 blx 0x2078 | fprintf_chk ()
0x00002a86 bl 0x3330 | r0 = fcn_00003330 (r0);
0x00002a8a bl 0x243c | r0 = fcn_0000243c (r0);
0x00002a8e mov r5, r0 | r5 = r0;
0x00002a90 bl 0x2858 | r0 = fcn_00002858 (r0);
0x00002a94 mov r4, r0 | r4 = r0;
0x00002a96 mov r0, r5 | r0 = r5;
0x00002a98 blx 0x1da4 | fcn_00001da4 ();
0x00002a9c b 0x28c0 | goto label_4;
| label_19:
0x00002a9e bl 0x34e0 | fcn_000034e0 ();
0x00002aa2 mov r0, r5 | r0 = r5;
0x00002aa4 pop.w {r3, r4, r5, r6, r7, lr} |
0x00002aa8 b 0x2ae8 | goto label_26;
| label_22:
0x00002aaa mov r0, r6 | r0 = r6;
0x00002aac blx 0x1da4 | fcn_00001da4 ();
0x00002ab0 bl 0x3108 | r0 = fcn_00003108 ();
0x00002ab4 mov r1, r0 | r1 = r0;
0x00002ab6 mov r0, r7 | r0 = r7;
0x00002ab8 blx 0x2078 | fprintf_chk ()
0x00002abc bl 0x25e4 | r0 = fcn_000025e4 (r0);
0x00002ac0 mov r5, r0 | r5 = r0;
0x00002ac2 mov r0, r7 | r0 = r7;
0x00002ac4 blx 0x1da4 | fcn_00001da4 ();
0x00002ac8 mov r0, r5 | r0 = r5;
0x00002aca bl 0x2858 | r0 = fcn_00002858 (r0);
0x00002ace mov r4, r0 | r4 = r0;
0x00002ad0 mov r0, r5 | r0 = r5;
0x00002ad2 blx 0x1da4 | fcn_00001da4 ();
0x00002ad4 strd lr, r6, [r8, -0x3cc]! | __asm ("strd lr, r6, [r8, -0x3cc]!");
| label_20:
0x00002ad8 mov r0, r6 | r0 = r6;
0x00002ada bl 0x2ae8 | r0 = void (*0x2ae8)(uint32_t) (r0);
0x00002ade mov r4, r0 | r4 = r0;
0x00002ae0 mov r0, r6 | r0 = r6;
0x00002ae2 blx 0x1da4 | fcn_00001da4 ();
0x00002ae6 b 0x28c0 | goto label_4;
| label_26:
0x00002ae8 push {r3, r4, r5, r6, r7, lr} |
0x00002aea mov r4, r0 | r4 = r0;
0x00002aec movs r0, 0 | r0 = 0;
0x00002aee bl 0x3630 | r0 = fcn_00003630 (r0);
0x00002af2 mov r6, r0 | r6 = r0;
0x00002af4 bl 0x34e0 | r0 = fcn_000034e0 ();
0x00002af8 mov r1, r0 | r1 = r0;
0x00002afa mov r0, r4 | r0 = r4;
0x00002afc blx 0x2078 | fprintf_chk ()
0x00002b00 bl 0x35f0 | r0 = fcn_000035f0 (r0);
0x00002b04 cmp r0, 0 |
| if (r0 == 0) {
0x00002b06 beq 0x2b8a | goto label_27;
| }
0x00002b08 mov r5, r0 | r5 = r0;
0x00002b0a b 0x2b32 |
| while (r2 == r3) {
| label_5:
0x00002b0c mov r0, r4 | r0 = r4;
0x00002b0e bl 0x2668 | r0 = fcn_00002668 (r0);
0x00002b12 mov r7, r0 | r7 = r0;
0x00002b14 bl 0x2858 | fcn_00002858 (r0);
0x00002b16 cdp2 p6, 0xa, c4, c0, c4, 0 | __asm ("cdp2 p6, 0xa, c4, c0, c4, 0");
0x00002b1a mov r0, r7 | r0 = r7;
0x00002b1c blx 0x1da4 | fcn_00001da4 ();
0x00002b20 mov r0, r6 | r0 = r6;
0x00002b22 mov r1, r4 | r1 = r4;
0x00002b24 bl 0x35f4 | fcn_000035f4 (r0, r1);
0x00002b28 mov r0, r4 | r0 = r4;
0x00002b2a blx 0x1da4 | fcn_00001da4 ();
| label_7:
0x00002b2e ldr r5, [r5, 4] | r5 = *((r5 + 4));
| if (r5 == 0) {
0x00002b30 cbz r5, 0x2b8a | goto label_27;
| }
| label_6:
0x00002b32 ldr r4, [r5] | r4 = *(r5);
0x00002b34 bl 0x2da0 | r0 = fcn_00002da0 ();
0x00002b38 mov r3, r0 | r3 = r0;
0x00002b3a mov r1, r0 | r1 = r0;
0x00002b3c mov r0, r4 | r0 = r4;
| if (r4 == 0) {
0x00002b3e cbz r4, 0x2b52 | goto label_28;
| }
0x00002b40 ldr r2, [r4] | r2 = *(r4);
| if (r2 == 0) {
0x00002b42 cbz r2, 0x2b4a | goto label_29;
| }
0x00002b44 ldr r2, [r2] | r2 = *(r2);
0x00002b46 cmp r2, r3 |
0x00002b48 beq 0x2b0c |
| }
| label_29:
0x00002b4a blx 0x1ff4 | r0 = event_has_tag_at ();
0x00002b4e cmp r0, 0 |
| if (r0 != 0) {
0x00002b50 bne 0x2b0c | goto label_5;
| }
| label_28:
0x00002b52 mov r0, r4 | r0 = r4;
0x00002b54 bl 0x2370 | r0 = fcn_00002370 (r0);
0x00002b58 mov r3, r0 | r3 = r0;
0x00002b5a movs r0, 0 | r0 = 0;
| if (r3 == 0) {
0x00002b5c cbz r3, 0x2bb4 | goto label_30;
| }
0x00002b5e bl 0x2eec | fcn_00002eec (r0);
0x00002b62 mov r1, r4 | r1 = r4;
0x00002b64 mov r7, r0 | r7 = r0;
0x00002b66 bl 0x2eb0 | r0 = fcn_00002eb0 (r0, r1);
0x00002b6a bl 0x3108 | r0 = fcn_00003108 ();
0x00002b6e mov r1, r0 | r1 = r0;
0x00002b70 mov r0, r7 | r0 = r7;
0x00002b72 blx 0x2078 | r0 = fprintf_chk ()
0x00002b76 mov r1, r0 | r1 = r0;
0x00002b78 mov r0, r6 | r0 = r6;
0x00002b7a bl 0x35f4 | fcn_000035f4 (r0, r1);
0x00002b7e mov r0, r7 | r0 = r7;
0x00002b80 blx 0x1da4 | fcn_00001da4 ();
0x00002b84 ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x00002b86 cmp r5, 0 |
| if (r5 != 0) {
0x00002b88 bne 0x2b32 | goto label_6;
| }
| label_27:
0x00002b8a bl 0x3108 | r0 = fcn_00003108 ();
0x00002b8e mov r1, r0 | r1 = r0;
0x00002b90 mov r0, r6 | r0 = r6;
0x00002b92 blx 0x2078 | fprintf_chk ()
0x00002b96 bl 0x27d4 | r0 = fcn_000027d4 (r0);
0x00002b9a mov r4, r0 | r4 = r0;
0x00002b9c mov r0, r6 | r0 = r6;
0x00002b9e blx 0x1da4 | fcn_00001da4 ();
0x00002ba2 mov r0, r4 | r0 = r4;
0x00002ba4 bl 0x2858 | r0 = fcn_00002858 (r0);
0x00002ba8 mov r5, r0 | r5 = r0;
0x00002baa mov r0, r4 | r0 = r4;
0x00002bac blx 0x1da4 | fcn_00001da4 ();
0x00002bb0 mov r0, r5 | r0 = r5;
0x00002bb2 pop {r3, r4, r5, r6, r7, pc} |
| label_30:
0x00002bb4 mov r0, r4 | r0 = r4;
0x00002bb6 bl 0x2858 | r0 = fcn_00002858 (r0);
0x00002bba mov r4, r0 | r4 = r0;
0x00002bbc mov r0, r6 | r0 = r6;
0x00002bbe mov r1, r4 | r1 = r4;
0x00002bc0 bl 0x35f4 | fcn_000035f4 (r0, r1);
0x00002bc4 mov r0, r4 | r0 = r4;
0x00002bc6 blx 0x1da4 | fcn_00001da4 ();
0x00002bca b 0x2b2e | goto label_7;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libwsevent.so @ 0x2bcc */
| #include <stdint.h>
|
; (fcn) fcn.00002bcc () | void fcn_00002bcc (int16_t arg1) {
| r0 = arg1;
0x00002bcc push.w {r3, r4, r5, r6, r7, r8, sb, lr} |
0x00002bd0 bl 0x2858 | r0 = fcn_00002858 (r0);
0x00002bd4 mov sb, r0 | sb = r0;
0x00002bd6 movs r0, 0 | r0 = 0;
0x00002bd8 bl 0x3630 | fcn_00003630 (r0);
0x00002bda stc2 p6, c4, [sl, -0x200]! | __asm ("stc2 p6, c4, [sl, -0x200]!");
0x00002bde bl 0x34e0 | r0 = fcn_000034e0 ();
0x00002be2 mov r1, r0 | r1 = r0;
0x00002be4 mov r0, sb | r0 = sb;
0x00002be6 blx 0x2078 | fprintf_chk ()
0x00002bea bl 0x35f0 | r0 = fcn_000035f0 (r0);
0x00002bee cmp r0, 0 |
| if (r0 == 0) {
0x00002bf0 beq.w 0x2d3c | goto label_6;
| }
0x00002bf4 mov r6, r0 | r6 = r0;
0x00002bf6 b 0x2c50 |
| while (r4 != 0) {
0x00002bf8 ldr r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x00002bfa cbz r3, 0x2c02 |
0x00002bfc ldr r3, [r3] | r3 = *(r3);
0x00002bfe cmp r0, r3 |
| if (r0 == r3) {
0x00002c00 beq 0x2c68 | goto label_7;
| }
| }
0x00002c02 mov r0, r4 | r0 = r4;
0x00002c04 blx 0x1ff4 | r0 = event_has_tag_at ();
| if (r0 != 0) {
0x00002c08 cbnz r0, 0x2c68 | goto label_7;
| }
0x00002c0a bl 0x36f8 | r0 = fcn_000036f8 ();
0x00002c0e mov r1, r0 | r1 = r0;
| label_2:
0x00002c10 ldr r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x00002c12 cbz r3, 0x2c1a |
0x00002c14 ldr r3, [r3] | r3 = *(r3);
0x00002c16 cmp r3, r1 |
| if (r3 == r1) {
0x00002c18 beq 0x2d10 | goto label_8;
| }
| }
0x00002c1a mov r0, r4 | r0 = r4;
0x00002c1c blx 0x1ff4 | r0 = event_has_tag_at ();
0x00002c20 cmp r0, 0 |
| if (r0 != 0) {
0x00002c22 bne 0x2d10 | goto label_8;
| }
0x00002c24 bl 0x319c | fcn_0000319c ();
0x00002c28 ldr r3, [r4] | r3 = *(r4);
0x00002c2a mov r1, r0 | r1 = r0;
| if (r3 != 0) {
0x00002c2c cbz r3, 0x2c34 |
0x00002c2e ldr r3, [r3] | r3 = *(r3);
0x00002c30 cmp r0, r3 |
| if (r0 == r3) {
0x00002c32 beq 0x2c44 | goto label_9;
| }
| }
0x00002c34 mov r0, r4 | r0 = r4;
0x00002c36 blx 0x1ff4 | r0 = event_has_tag_at ();
| if (r0 == 0) {
0x00002c3a cbnz r0, 0x2c44 |
| label_0:
0x00002c3c mov r1, r4 | r1 = r4;
0x00002c3e mov r0, r8 | r0 = r8;
0x00002c40 bl 0x35f4 | fcn_000035f4 (r0, r1);
| }
| label_9:
0x00002c44 mov r0, r4 | r0 = r4;
0x00002c46 blx 0x1da4 | fcn_00001da4 ();
0x00002c48 invalid |
0x00002c4c cmp r6, 0 |
| if (r6 == 0) {
0x00002c4e beq 0x2d3c | goto label_6;
| }
0x00002c50 ldr r4, [r6] | r4 = *(r6);
0x00002c52 bl 0x2da0 | r0 = fcn_00002da0 ();
0x00002c56 mov r1, r0 | r1 = r0;
0x00002c58 cmp r4, 0 |
0x00002c5a bne 0x2bf8 |
| }
0x00002c5c bl 0x36f8 | fcn_000036f8 ();
| label_3:
0x00002c60 movs r4, 0 | r4 = 0;
0x00002c62 bl 0x319c | fcn_0000319c ();
0x00002c66 b 0x2c3c | goto label_0;
| label_7:
0x00002c68 movs r0, 0 | r0 = 0;
0x00002c6a bl 0x2eec | fcn_00002eec (r0);
0x00002c6c ldrsh.w r4, [pc, -0x607] | r4 = *(0x00002669);
0x00002c70 bl 0x2da0 | r0 = fcn_00002da0 ();
0x00002c74 mov r1, r0 | r1 = r0;
0x00002c76 mov r0, r4 | r0 = r4;
0x00002c78 blx 0x2078 | fprintf_chk ()
0x00002c7c bl 0x2f0c | r0 = fcn_00002f0c (r0);
0x00002c80 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00002c82 cbnz r0, 0x2cbc | goto label_10;
| }
0x00002c84 b 0x2cf8 | goto label_11;
| do {
0x00002c86 ldr r2, [r4] | r2 = *(r4);
| if (r2 != 0) {
0x00002c88 cbz r2, 0x2c90 |
0x00002c8a ldr r2, [r2] | r2 = *(r2);
0x00002c8c cmp r3, r2 |
| if (r3 == r2) {
0x00002c8e beq 0x2cd2 | goto label_12;
| }
| }
0x00002c90 blx 0x1ff4 | r0 = event_has_tag_at ();
| if (r0 != 0) {
0x00002c94 cbnz r0, 0x2cd2 | goto label_12;
| }
0x00002c96 bl 0x36f8 | fcn_000036f8 ();
0x00002c9a ldr r2, [r4] | r2 = *(r4);
0x00002c9c mov r3, r0 | r3 = r0;
0x00002c9e mov r1, r3 | r1 = r3;
0x00002ca0 mov r0, r4 | r0 = r4;
| if (r2 != 0) {
0x00002ca2 cbz r2, 0x2caa |
0x00002ca4 ldr r2, [r2] | r2 = *(r2);
0x00002ca6 cmp r2, r3 |
| if (r2 == r3) {
0x00002ca8 beq 0x2cb8 | goto label_13;
| }
| }
0x00002caa blx 0x1ff4 | r0 = event_has_tag_at ();
| if (r0 == 0) {
0x00002cae cbnz r0, 0x2cb8 |
| label_1:
0x00002cb0 mov r1, r4 | r1 = r4;
0x00002cb2 mov r0, r7 | r0 = r7;
0x00002cb4 bl 0x2eb0 | fcn_00002eb0 (r0, r1);
| }
| label_13:
0x00002cb8 ldr r5, [r5, 4] | r5 = *((r5 + 4));
| if (r5 == 0) {
0x00002cba cbz r5, 0x2cf8 | goto label_11;
| }
| label_10:
0x00002cbc ldr r4, [r5] | r4 = *(r5);
0x00002cbe bl 0x319c | r0 = fcn_0000319c ();
0x00002cc2 mov r3, r0 | r3 = r0;
0x00002cc4 mov r1, r0 | r1 = r0;
0x00002cc6 mov r0, r4 | r0 = r4;
0x00002cc8 cmp r4, 0 |
0x00002cca bne 0x2c86 |
| } while (r4 != 0);
0x00002ccc bl 0x36f8 | fcn_000036f8 ();
0x00002cd0 b 0x2cb0 | goto label_1;
| label_12:
0x00002cd2 mov r0, r7 | r0 = r7;
0x00002cd4 blx 0x1da4 | fcn_00001da4 ();
0x00002cd8 bl 0x31f4 | r0 = fcn_000031f4 ();
| label_5:
0x00002cdc mov r4, r0 | r4 = r0;
0x00002cde bl 0x3108 | r0 = fcn_00003108 ();
0x00002ce2 mov r1, r0 | r1 = r0;
0x00002ce4 mov r0, r4 | r0 = r4;
0x00002ce6 blx 0x2078 | r0 = fprintf_chk ()
0x00002cea mov r4, r0 | r4 = r0;
| label_4:
0x00002cec bl 0x36f8 | r0 = fcn_000036f8 ();
0x00002cf0 mov r1, r0 | r1 = r0;
0x00002cf2 cmp r4, 0 |
| if (r4 != 0) {
0x00002cf4 bne 0x2c10 | goto label_2;
| }
0x00002cf6 b 0x2c60 | goto label_3;
| label_11:
0x00002cf8 mov r0, r7 | r0 = r7;
0x00002cfa bl 0x2f0c | r0 = fcn_00002f0c (r0);
| if (r0 == 0) {
0x00002cfe cbz r0, 0x2d5e | goto label_14;
| }
0x00002d00 bl 0x3108 | r0 = fcn_00003108 ();
0x00002d04 mov r1, r0 | r1 = r0;
0x00002d06 mov r0, r7 | r0 = r7;
0x00002d08 blx 0x2078 | r0 = fprintf_chk ()
0x00002d0c mov r4, r0 | r4 = r0;
0x00002d0e b 0x2cec | goto label_4;
| label_8:
0x00002d10 mov r0, r8 | r0 = r8;
0x00002d12 blx 0x1da4 | fcn_00001da4 ();
0x00002d16 mov r0, r4 | r0 = r4;
0x00002d18 blx 0x1da4 | fcn_00001da4 ();
0x00002d1c bl 0x3750 | r0 = fcn_00003750 ();
| do {
0x00002d20 mov r4, r0 | r4 = r0;
0x00002d22 bl 0x3108 | r0 = fcn_00003108 ();
0x00002d26 mov r1, r0 | r1 = r0;
0x00002d28 mov r0, r4 | r0 = r4;
0x00002d2a blx 0x2078 | fprintf_chk ()
0x00002d2c invalid |
0x00002d30 mov r0, sb | r0 = sb;
0x00002d32 blx 0x1da4 | fcn_00001da4 ();
0x00002d36 mov r0, r4 | r0 = r4;
0x00002d38 pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_6:
0x00002d3c mov r0, r8 | r0 = r8;
0x00002d3e bl 0x35f0 | r0 = fcn_000035f0 (r0);
| if (r0 != 0) {
0x00002d42 cbz r0, 0x2d6a |
0x00002d44 bl 0x3108 | r0 = fcn_00003108 ();
0x00002d48 mov r1, r0 | r1 = r0;
0x00002d4a mov r0, r8 | r0 = r8;
0x00002d4c blx 0x2078 | r0 = fprintf_chk ()
0x00002d50 mov r4, r0 | r4 = r0;
0x00002d52 mov r0, sb | r0 = sb;
0x00002d54 blx 0x1da4 | fcn_00001da4 ();
0x00002d58 mov r0, r4 | r0 = r4;
0x00002d5a pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_14:
0x00002d5e mov r0, r7 | r0 = r7;
0x00002d60 blx 0x1da4 | fcn_00001da4 ();
0x00002d64 bl 0x3750 | fcn_00003750 ();
0x00002d68 b 0x2cdc | goto label_5;
| }
0x00002d6a mov r0, r8 | r0 = r8;
0x00002d6c blx 0x1da4 | fcn_00001da4 ();
0x00002d70 bl 0x31f4 | fcn_000031f4 ();
0x00002d74 b 0x2d20 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libwsevent.so @ 0x2f10 */
| #include <stdint.h>
|
; (fcn) fcn.00002f10 () | void fcn_00002f10 () {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_4h_2;
| int16_t var_4h_3;
0x00002f10 push {r0, r1, r2, r3} |
0x00002f12 movs r0, 0 | r0 = 0;
0x00002f14 ldr r2, [pc, 0x74] |
0x00002f16 ldr r3, [pc, 0x78] | r3 = *(0x2f92);
0x00002f18 push {r4, r5, r6, r7, lr} |
0x00002f1a sub sp, 0xc |
0x00002f1c add r2, pc | r2 = 0x5eac;
0x00002f1e add r7, sp, 0x20 | r7 += var_20h;
0x00002f20 ldr r4, [r7], 4 | r4 = *(r7);
| r7 += 4;
0x00002f24 ldr r3, [r2, r3] |
0x00002f26 ldr r3, [r3] | r3 = *(0x5eac);
0x00002f28 str r3, [sp, 4] | var_4h = r3;
0x00002f2a mov.w r3, 0 | r3 = 0;
0x00002f2e bl 0x2eec | fcn_00002eec (r0);
0x00002f32 mov r1, r4 | r1 = r4;
0x00002f34 mov r6, r0 | r6 = r0;
0x00002f36 bl 0x2eb0 | fcn_00002eb0 (r0, r1);
0x00002f3a mov r0, r4 | r0 = r4;
0x00002f3c blx 0x1da4 | fcn_00001da4 ();
0x00002f40 ldr r4, [sp, 0x24] | r4 = var_24h;
0x00002f42 str r7, [sp] | *(sp) = r7;
| if (r4 == 0) {
0x00002f44 cbz r4, 0x2f5e | goto label_0;
| }
0x00002f46 adds r5, r7, 4 | r5 += var_4h_2;
| do {
0x00002f48 mov r1, r4 | r1 = r4;
0x00002f4a mov r0, r6 | r0 = r6;
0x00002f4c bl 0x2eb0 | fcn_00002eb0 (r0, r1);
0x00002f50 mov r0, r4 | r0 = r4;
0x00002f52 blx 0x1da4 | fcn_00001da4 ();
0x00002f56 ldr r4, [r5], 4 | r4 = *(r5);
| r5 += 4;
0x00002f5a cmp r4, 0 |
0x00002f5c bne 0x2f48 |
| } while (r4 != 0);
| label_0:
0x00002f5e bl 0x3108 | r0 = fcn_00003108 ();
0x00002f62 mov r1, r0 | r1 = r0;
0x00002f64 mov r0, r6 | r0 = r6;
0x00002f66 blx 0x2078 | fprintf_chk ()
0x00002f6a ldr r2, [pc, 0x28] |
0x00002f6c ldr r3, [pc, 0x20] | r3 = *(0x2f90);
0x00002f6e add r2, pc | r2 = 0x5f08;
0x00002f70 ldr r3, [r2, r3] | r3 = *(0x5f08);
0x00002f72 ldr r2, [r3] | r2 = *(0x5f08);
0x00002f74 ldr r3, [sp, 4] | r3 = var_4h;
0x00002f76 eors r2, r3 | r2 ^= r3;
0x00002f78 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x00002f7c bne 0x2f88 |
0x00002f7e add sp, 0xc |
0x00002f80 pop.w {r4, r5, r6, r7, lr} |
0x00002f84 add sp, 0x10 |
0x00002f86 bx lr | return;
| }
0x00002f88 blx 0x2090 | fputc (r0, r1);
0x00002f8c ldr r4, [r0, 0x6c] | r4 = *((r0 + 0x6c));
0x00002f8e movs r0, r0 |
0x00002f90 lsls r0, r0, 8 | r0 <<= 8;
0x00002f92 movs r0, r0 |
0x00002f94 ldr r2, [r6, 0x64] | r2 = *((r6 + 0x64));
0x00002f96 movs r0, r0 |
0x00002f98 push {r4, lr} |
0x00002f9a mov r4, r0 | r4 = r0;
0x00002f9c blx 0x2218 | fcn_00002218 ();
0x00002fa0 ldr r1, [pc, 0x10] |
0x00002fa2 ldr r2, [pc, 0x14] |
0x00002fa4 ldr r3, [pc, 0x14] |
0x00002fa6 add r1, pc | r1 = 0x5f5e;
0x00002fa8 add r2, pc | r2 = 0x5f66;
0x00002faa str r0, [r1] | *(r1) = r0;
0x00002fac add r3, pc | r3 = 0x5f6c;
0x00002fae str r2, [r4, 0x18] | *((r4 + 0x18)) = r2;
0x00002fb0 str r3, [r4, 0x44] | *((r4 + 0x44)) = r3;
0x00002fb2 pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libwsevent.so @ 0x3650 */
| #include <stdint.h>
|
; (fcn) fcn.00003650 () | void fcn_00003650 () {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_20h;
| int16_t var_24h;
| if (? < ?) {
0x00003650 andhs fp, r0, pc, lsl 8 |
| }
0x00003654 ldr r2, [pc, 0x74] |
0x00003656 ldr r3, [pc, 0x78] | r3 = *(0x36d2);
0x00003658 push {r4, r5, r6, r7, lr} |
0x0000365a sub sp, 0xc |
0x0000365c add r2, pc | r2 = "onvif-key";
0x0000365e add r7, sp, 0x20 | r7 += var_20h;
0x00003660 ldr r4, [r7], 4 | r4 = *(r7);
| r7 += 4;
0x00003664 ldr r3, [r2, r3] |
0x00003666 ldr r3, [r3] | r3 = "onvif-key";
0x00003668 str r3, [sp, 4] | var_4h = r3;
0x0000366a mov.w r3, 0 | r3 = 0;
0x0000366e bl 0x3630 | fcn_00003630 (r0);
0x00003672 mov r1, r4 | r1 = r4;
0x00003674 mov r6, r0 | r6 = r0;
0x00003676 bl 0x35f4 | fcn_000035f4 (r0, r1);
0x0000367a mov r0, r4 | r0 = r4;
0x0000367c blx 0x1da4 | fcn_00001da4 ();
0x00003680 ldr r4, [sp, 0x24] | r4 = var_24h;
0x00003682 str r7, [sp] | *(sp) = r7;
| if (r4 == 0) {
0x00003684 cbz r4, 0x369e | goto label_0;
| }
0x00003686 adds r5, r7, 4 | r5 = r7 + 4;
| do {
0x00003688 mov r1, r4 | r1 = r4;
0x0000368a mov r0, r6 | r0 = r6;
0x0000368c bl 0x35f4 | fcn_000035f4 (r0, r1);
0x00003690 mov r0, r4 | r0 = r4;
0x00003692 blx 0x1da4 | fcn_00001da4 ();
0x00003696 ldr r4, [r5], 4 | r4 = *(r5);
| r5 += 4;
0x0000369a cmp r4, 0 |
0x0000369c bne 0x3688 |
| } while (r4 != 0);
| label_0:
0x0000369e bl 0x3108 | r0 = fcn_00003108 ();
0x000036a2 mov r1, r0 | r1 = r0;
0x000036a4 mov r0, r6 | r0 = r6;
0x000036a6 blx 0x2078 | fprintf_chk ()
0x000036aa ldr r2, [pc, 0x28] |
0x000036ac ldr r3, [pc, 0x20] | r3 = *(0x36d0);
0x000036ae add r2, pc | r2 = 0x6d88;
0x000036b0 ldr r3, [r2, r3] | r3 = *(0x6d88);
0x000036b2 ldr r2, [r3] | r2 = *(0x6d88);
0x000036b4 ldr r3, [sp, 4] | r3 = var_4h;
0x000036b6 eors r2, r3 | r2 ^= r3;
0x000036b8 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x000036bc bne 0x36c8 |
0x000036be add sp, 0xc |
0x000036c0 pop.w {r4, r5, r6, r7, lr} |
0x000036c4 add sp, 0x10 |
0x000036c6 bx lr | return;
| }
0x000036c8 blx 0x2090 | fputc (r0, r1);
0x000036cc str r4, [r0, 0x78] | *((r0 + 0x78)) = r4;
0x000036ce movs r0, r0 |
0x000036d0 lsls r0, r0, 8 | r0 <<= 8;
0x000036d2 movs r0, r0 |
0x000036d4 str r2, [r6, 0x70] | *((r6 + 0x70)) = r2;
0x000036d6 movs r0, r0 |
0x000036d8 ldr r3, [pc, 4] |
0x000036da add r3, pc | r3 = 0x6dbe;
0x000036dc str r3, [r0, 0x44] | *((r0 + 0x44)) = r3;
0x000036de bx lr | return;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libwsevent.so @ 0x37e4 */
| #include <stdint.h>
|
; (fcn) fcn.000037e4 () | void fcn_000037e4 (uint32_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_14h;
| int16_t var_7ch;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h_2;
| int16_t var_18h;
| size_t size;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_94h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000037e4 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x000037e8 mov fp, r1 |
0x000037ea ldr r1, [pc, 0x24c] |
0x000037ec mov sb, r2 | sb = r2;
0x000037ee sub sp, 0x9c |
0x000037f0 movs r3, 0 | r3 = 0;
0x000037f2 ldr r2, [pc, 0x248] | r2 = *(0x3a3e);
0x000037f4 add r1, pc | r1 = 0x7232;
0x000037f6 ldr r2, [r1, r2] |
0x000037f8 ldr r2, [r2] | r2 = *(0x7232);
0x000037fa str r2, [sp, 0x94] | var_94h = r2;
0x000037fc mov.w r2, 0 | r2 = 0;
0x00003800 str r3, [sp, 0x2c] | var_2ch = r3;
0x00003802 cmp r0, 0 |
| if (r0 == 0) {
0x00003804 beq.w 0x3958 | goto label_5;
| }
0x00003808 ldrb r2, [r0] | r2 = *(r0);
0x0000380a mov r4, r0 | r4 = r0;
0x0000380c cmp r2, 0 |
| if (r2 == 0) {
0x0000380e beq.w 0x3958 | goto label_5;
| }
0x00003812 ldr r0, [pc, 0x22c] |
0x00003814 mov r2, r3 | r2 = r3;
0x00003816 mov r1, r4 | r1 = r4;
0x00003818 add r0, pc | r0 = 0x725e;
0x0000381a blx 0x20a8 | r0 = g_utf8_substring ();
0x0000381e mov r5, r0 | r5 = r0;
0x00003820 cmp r0, 0 |
| if (r0 != 0) {
0x00003822 bne.w 0x3958 | goto label_5;
| }
0x00003826 ldr r1, [pc, 0x21c] |
0x00003828 mov r2, r0 | r2 = r0;
0x0000382a mov r0, r4 | r0 = r4;
0x0000382c add r1, pc | r1 = 0x7276;
0x0000382e blx 0x20e0 | r0 = fcn_000020e0 ();
0x00003832 mov r6, r0 | r6 = r0;
0x00003834 mov r0, r5 | r0 = r5;
0x00003836 bl 0x3630 | r0 = fcn_00003630 (r0);
0x0000383a mov r3, r0 | r3 = r0;
0x0000383c ldr r0, [r6] | r0 = *(r6);
0x0000383e str r3, [sp, 0x18] | var_18h = r3;
0x00003840 cmp r0, 0 |
| if (r0 == 0) {
0x00003842 beq.w 0x3a1a | goto label_6;
| }
0x00003846 ldr r3, [pc, 0x200] |
0x00003848 str.w fp, [sp, 4] | __asm ("str.w fp, [var_4h]");
0x0000384c add r3, pc | r3 = 0x729a;
0x0000384e str r3, [sp, 0x1c] | size = r3;
0x00003850 ldr r3, [pc, 0x1f8] |
0x00003852 add r3, pc | r3 = 0x72a2;
0x00003854 strd r3, r6, [sp, 8] | __asm ("strd r3, r6, [var_ch]");
0x00003858 add r3, sp, 0x2c | r3 += var_2ch;
0x0000385a strd r3, r6, [sp, 0x20] | __asm ("strd r3, r6, [var_20h]");
| label_1:
0x0000385e ldr r1, [sp, 0x1c] | r1 = size;
0x00003860 blx 0x2174 | fread (r0, r1, r2, r3);
0x00003864 str r0, [sp, 0x10] | var_10h = r0;
0x00003866 cmp r0, 0 |
| if (r0 == 0) {
0x00003868 beq.w 0x3976 | goto label_7;
| }
0x0000386c ldr r6, [sp, 0xc] | r6 = var_ch;
0x0000386e movs r4, 0 | r4 = 0;
0x00003870 ldr r5, [r6] | r5 = *(r6);
0x00003872 mov r0, r5 | r0 = r5;
0x00003874 blx 0x1f3c | r0 = fcn_00001f3c ();
0x00003878 add r5, r0 | r5 += r0;
0x0000387a ldr r1, [sp, 0x20] | r1 = var_20h;
0x0000387c strb r4, [r5, -0x3] | *((r5 - 0x3)) = r4;
0x00003880 ldr r0, [r6] | r0 = *(r6);
0x00003882 bl 0x4960 | fcn_00004960 (r0);
0x00003886 ldr r1, [pc, 0x1c8] |
0x00003888 mov r2, r4 | r2 = r4;
0x0000388a ldr r0, [r6] | r0 = *(r6);
0x0000388c add r1, pc | r1 = 0x72e2;
0x0000388e blx 0x20e0 | r0 = fcn_000020e0 ();
0x00003892 mov r5, r0 | r5 = r0;
0x00003894 mov r0, r4 | r0 = r4;
0x00003896 bl 0x2eec | fcn_00002eec (r0);
0x0000389a ldr r1, [r5] | r1 = *(r5);
0x0000389c mov r8, r0 | r8 = r0;
0x0000389e cmp r1, 0 |
| if (r1 == 0) {
0x000038a0 beq.w 0x39d6 | goto label_3;
| }
0x000038a4 movs r3, 1 | r3 = 1;
0x000038a6 str r3, [sp, 0x10] | var_10h = r3;
| label_0:
0x000038a8 ldr.w sl, [pc, 0x1a8] |
0x000038ac movs r4, 0 | r4 = 0;
0x000038ae mov r6, r5 | r6 = r5;
0x000038b0 add.w fp, sp, 0x30 |
0x000038b4 str r5, [sp, 0x14] | var_14h_2 = r5;
0x000038b6 add sl, pc | sl = 0x730e;
0x000038b8 b 0x3912 |
| while (r0 == 0) {
0x000038ba ldr r1, [sp, 4] | r1 = var_4h;
0x000038bc mov r3, r4 | r3 = r4;
0x000038be mov r2, sb | r2 = sb;
0x000038c0 mov r0, r6 | r0 = r6;
0x000038c2 bl 0x3778 | r0 = fcn_00003778 (r0, r1, r2, r3);
| if (r0 == 0) {
0x000038c6 cbz r0, 0x391c | goto label_8;
| }
0x000038c8 mov r3, r4 | r3 = r4;
0x000038ca ldr r2, [sp, 8] | r2 = var_8h;
0x000038cc movs r1, 0x64 | r1 = 0x64;
0x000038ce mov r0, fp | r0 = fp;
0x000038d0 blx 0x1f6c | fcn_00001f6c ();
0x000038d4 ldr r5, [r6] | r5 = *(r6);
0x000038d6 mov r1, r4 | r1 = r4;
0x000038d8 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000038da mov r7, fp | r7 = fp;
0x000038dc blx 0x21fc | fcn_000021fc ();
0x000038e0 mov r1, r5 | r1 = r5;
0x000038e2 mov r2, r0 | r2 = r0;
0x000038e4 mov r0, fp | r0 = fp;
0x000038e6 adds r4, 1 | r4++;
0x000038e8 bl 0x309c | r0 = fcn_0000309c (r0, r1, r2);
0x000038ec mov r5, r0 | r5 = r0;
0x000038ee bl 0x3108 | r0 = fcn_00003108 ();
0x000038f2 mov r1, r0 | r1 = r0;
0x000038f4 mov r0, r5 | r0 = r5;
0x000038f6 blx 0x2078 | r0 = fprintf_chk ()
0x000038fa mov r1, r0 | r1 = r0;
0x000038fc mov r0, r8 | r0 = r8;
0x000038fe bl 0x2eb0 | fcn_00002eb0 (r0, r1);
0x00003902 mov r0, r5 | r0 = r5;
0x00003904 blx 0x1da4 | fcn_00001da4 ();
0x00003908 ldr r1, [r6, 4]! | r1 = *((r6 += 4));
0x0000390c cmp r1, 0 |
| if (r1 == 0) {
0x0000390e beq.w 0x3a2a | goto label_9;
| }
0x00003912 mov r0, sl | r0 = sl;
0x00003914 blx 0x2254 | fcn_00002254 ();
0x00003916 ldc p8, c2, [lr], {0} | __asm ("ldc p8, c2, [lr], {0}");
0x00003918 cmp r0, 0 |
0x0000391a beq 0x38ba |
| }
| label_8:
0x0000391c ldr r5, [sp, 0x14] | r5 = var_14h_2;
0x0000391e movs r4, 0 | r4 = 0;
0x00003920 ldr r6, [sp, 0x24] | r6 = var_24h;
0x00003922 bl 0x3108 | r0 = fcn_00003108 ();
0x00003926 mov r1, r0 | r1 = r0;
0x00003928 mov r0, r8 | r0 = r8;
0x0000392a blx 0x2078 | fprintf_chk ()
0x0000392e blx 0x1da4 | fcn_00001da4 ();
0x00003932 bl 0x3108 | r0 = fcn_00003108 ();
0x00003936 mov r1, r0 | r1 = r0;
0x00003938 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0000393a blx 0x2078 | fprintf_chk ()
0x0000393e blx 0x1da4 | fcn_00001da4 ();
0x00003942 mov r0, r5 | r0 = r5;
0x00003944 blx 0x2168 | g_sprintf ();
| label_2:
0x00003948 mov r0, r6 | r0 = r6;
0x0000394a blx 0x2168 | g_sprintf ();
0x0000394e ldr r0, [sp, 0x2c] | r0 = var_2ch;
| if (r0 != 0) {
0x00003950 cbz r0, 0x395a |
0x00003952 bl 0x4a38 | fcn_00004a38 (r0);
0x00003956 b 0x395a | goto label_10;
| label_5:
0x00003958 movs r4, 0 | r4 = 0;
| }
| label_10:
0x0000395a ldr r2, [pc, 0xfc] |
0x0000395c ldr r3, [pc, 0xdc] | r3 = *(0x3a3c);
0x0000395e add r2, pc | r2 = 0x73bc;
0x00003960 ldr r3, [r2, r3] | r3 = *(0x73bc);
0x00003962 ldr r2, [r3] | r2 = *(0x73bc);
0x00003964 ldr r3, [sp, 0x94] | r3 = var_94h;
0x00003966 eors r2, r3 | r2 ^= r3;
0x00003968 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000396c bne 0x3a34 | goto label_11;
| }
0x0000396e mov r0, r4 | r0 = r4;
0x00003970 add sp, 0x9c |
0x00003972 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x00003976 ldr r4, [sp, 0xc] | r4 = var_ch;
0x00003978 add r7, sp, 0x30 | r7 += var_30h;
0x0000397a ldr r1, [sp, 0x20] | r1 = var_20h;
0x0000397c ldr r0, [r4] | r0 = *(r4);
0x0000397e bl 0x4960 | fcn_00004960 (r0);
0x00003982 ldr r6, [sp, 0x10] | r6 = var_10h;
0x00003984 ldr r1, [pc, 0xd4] |
0x00003986 ldr r0, [r4] | r0 = *(r4);
0x00003988 mov r2, r6 | r2 = r6;
0x0000398a add r1, pc | r1 = 0x73ea;
0x0000398c blx 0x20e0 | r0 = fcn_000020e0 ();
0x00003990 mov r5, r0 | r5 = r0;
0x00003992 mov r0, r6 | r0 = r6;
0x00003994 bl 0x2eec | fcn_00002eec (r0);
0x00003998 ldr r1, [r5] | r1 = *(r5);
0x0000399a mov r8, r0 | r8 = r0;
0x0000399c mov r4, r1 | r4 = r1;
0x0000399e cmp r1, 0 |
| if (r1 != 0) {
0x000039a0 bne 0x38a8 | goto label_0;
| }
| label_4:
0x000039a2 ldr r2, [pc, 0xbc] |
0x000039a4 mov r3, r4 | r3 = r4;
0x000039a6 movs r1, 0x64 | r1 = 0x64;
0x000039a8 mov r0, r7 | r0 = r7;
0x000039aa add r2, pc | r2 = 0x7410;
0x000039ac blx 0x1f6c | fcn_00001f6c ();
0x000039b0 movs r2, 0 | r2 = 0;
0x000039b2 mov r0, r7 | r0 = r7;
0x000039b4 mov r1, r2 | r1 = r2;
0x000039b6 bl 0x3458 | r0 = fcn_00003458 (r0, r1, r2);
0x000039ba mov r4, r0 | r4 = r0;
0x000039bc bl 0x3108 | r0 = fcn_00003108 ();
0x000039c0 mov r1, r0 | r1 = r0;
0x000039c2 mov r0, r4 | r0 = r4;
0x000039c4 blx 0x2078 | r0 = fprintf_chk ()
0x000039c8 mov r1, r0 | r1 = r0;
0x000039ca mov r0, r8 | r0 = r8;
0x000039cc bl 0x2eb0 | fcn_00002eb0 (r0, r1);
0x000039d0 mov r0, r4 | r0 = r4;
0x000039d2 blx 0x1da4 | fcn_00001da4 ();
| label_3:
0x000039d6 bl 0x3108 | r0 = fcn_00003108 ();
0x000039da mov r1, r0 | r1 = r0;
0x000039dc mov r0, r8 | r0 = r8;
0x000039de blx 0x2078 | r0 = fprintf_chk ()
0x000039e2 mov r1, r0 | r1 = r0;
0x000039e4 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000039e6 bl 0x35f4 | r0 = fcn_000035f4 (r0, r1);
0x000039ea bl 0x3108 | r0 = fcn_00003108 ();
0x000039ee mov r1, r0 | r1 = r0;
0x000039f0 mov r0, r8 | r0 = r8;
0x000039f2 blx 0x2078 | fprintf_chk ()
0x000039f6 blx 0x1da4 | fcn_00001da4 ();
0x000039fa mov r0, r5 | r0 = r5;
0x000039fc blx 0x2168 | g_sprintf ();
0x00003a00 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00003a02 bl 0x4a38 | fcn_00004a38 (r0);
0x00003a06 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00003a08 ldr r0, [r3, 4]! | r0 = *((r3 += 4));
0x00003a0c str r3, [sp, 0xc] | var_ch = r3;
0x00003a0e movs r3, 0 | r3 = 0;
0x00003a10 str r3, [sp, 0x2c] | var_2ch = r3;
0x00003a12 cmp r0, 0 |
| if (r0 != 0) {
0x00003a14 bne.w 0x385e | goto label_1;
| }
0x00003a16 add r7, sp, 0x8c | r7 = sp + 0x8c;
0x00003a18 ldr r6, [sp, 0x24] | r6 = var_24h;
| label_6:
0x00003a1a bl 0x3108 | r0 = fcn_00003108 ();
0x00003a1e mov r1, r0 | r1 = r0;
0x00003a20 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00003a22 blx 0x2078 | fprintf_chk ()
0x00003a24 invalid |
0x00003a28 b 0x3948 | goto label_2;
| label_9:
0x00003a2a ldrd r3, r5, [sp, 0x10] | __asm ("ldrd r3, r5, [var_10h]");
0x00003a2e cmp r3, 0 |
| if (r3 != 0) {
0x00003a30 bne 0x39d6 | goto label_3;
| }
0x00003a32 b 0x39a2 | goto label_4;
| label_11:
0x00003a34 blx 0x2090 | fputc (r0, r1);
0x00003a38 str r4, [r5, 0x5c] | *((r5 + 0x5c)) = r4;
0x00003a3a movs r0, r0 |
0x00003a3c lsls r0, r0, 8 | r0 <<= 8;
0x00003a3e movs r0, r0 |
0x00003a40 adds r4, 0x58 | r4 += 0x58;
0x00003a42 movs r0, r0 |
0x00003a44 adds r4, 0xb0 | r4 += 0xb0;
0x00003a46 movs r0, r0 |
0x00003a48 adds r4, 0x94 | r4 += 0x94;
0x00003a4a movs r0, r0 |
0x00003a4c adds r4, 0x96 | r4 += 0x96;
0x00003a4e movs r0, r0 |
0x00003a50 adds r4, 0x58 | r4 += 0x58;
0x00003a52 movs r0, r0 |
0x00003a54 eors r2, r0 | r2 ^= r0;
0x00003a56 movs r0, r0 |
0x00003a58 str r2, [r0, 0x48] | *((r0 + 0x48)) = r2;
0x00003a5a movs r0, r0 |
0x00003a5c adds r3, 0x5a | r3 += 0x5a;
0x00003a5e movs r0, r0 |
0x00003a60 adds r3, 0x3e | r3 += 0x3e;
0x00003a62 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libwsevent.so @ 0x3a64 */
| #include <stdint.h>
|
; (fcn) fcn.00003a64 () | void fcn_00003a64 (uint32_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_7ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00003a64 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00003a68 mov r7, r1 | r7 = r1;
0x00003a6a ldr r1, [pc, 0x15c] |
0x00003a6c mov r8, r2 | r8 = r2;
0x00003a6e sub sp, 0x84 |
0x00003a70 movs r3, 0 | r3 = 0;
0x00003a72 ldr r2, [pc, 0x158] | r2 = *(0x3bce);
0x00003a74 add r1, pc | r1 = 0x7642;
0x00003a76 ldr r2, [r1, r2] |
0x00003a78 ldr r2, [r2] | r2 = *(0x7642);
0x00003a7a str r2, [sp, 0x7c] | var_7ch = r2;
0x00003a7c mov.w r2, 0 | r2 = 0;
0x00003a80 str r3, [sp, 0x14] | var_14h = r3;
0x00003a82 cmp r0, 0 |
| if (r0 == 0) {
0x00003a84 beq 0x3b5c | goto label_0;
| }
0x00003a86 ldrb r2, [r0] | r2 = *(r0);
0x00003a88 mov r5, r0 | r5 = r0;
0x00003a8a cmp r2, 0 |
| if (r2 == 0) {
0x00003a8c beq 0x3b5c | goto label_0;
| }
0x00003a8e ldr r0, [pc, 0x140] |
0x00003a90 mov r2, r3 | r2 = r3;
0x00003a92 mov r1, r5 | r1 = r5;
0x00003a94 add r0, pc | r0 = 0x766a;
0x00003a96 blx 0x20a8 | r0 = g_utf8_substring ();
0x00003a9a mov r4, r0 | r4 = r0;
0x00003a9c cmp r0, 0 |
| if (r0 != 0) {
0x00003a9e bne 0x3b5c | goto label_0;
| }
0x00003aa0 ldr r1, [pc, 0x130] |
0x00003aa2 mov r0, r5 | r0 = r5;
0x00003aa4 add r1, pc | r1 = 0x767c;
0x00003aa6 blx 0x1dbc | r0 = fcn_00001dbc ();
0x00003aaa mov fp, r0 |
0x00003aac cmp r0, 0 |
| if (r0 != 0) {
0x00003aae bne 0x3b5c | goto label_0;
| }
0x00003ab0 mov r0, r5 | r0 = r5;
0x00003ab2 add r1, sp, 0x14 | r1 += var_14h;
0x00003ab4 bl 0x4960 | fcn_00004960 (r0);
0x00003ab8 ldr r1, [pc, 0x11c] |
0x00003aba mov r2, fp | r2 = fp;
0x00003abc mov r0, r5 | r0 = r5;
0x00003abe add.w sb, sp, 0x18 | sb += var_18h;
0x00003ac2 add r1, pc | r1 = 0x769e;
0x00003ac4 blx 0x20e0 | r0 = fcn_000020e0 ();
0x00003ac8 mov r5, r0 | r5 = r0;
0x00003aca str r0, [sp, 8] | var_8h = r0;
0x00003acc mov r0, fp | r0 = fp;
0x00003ace bl 0x2eec | fcn_00002eec (r0);
0x00003ad2 ldr r1, [r5] | r1 = *(r5);
0x00003ad4 mov sl, r0 | sl = r0;
0x00003ad6 cmp r1, 0 |
| if (r1 == 0) {
0x00003ad8 beq 0x3b7e | goto label_1;
| }
0x00003ada ldr r3, [pc, 0x100] |
0x00003adc add r6, sp, 0x18 | r6 += var_18h;
0x00003ade ldr r2, [pc, 0x100] |
0x00003ae0 mov sb, r7 | sb = r7;
0x00003ae2 str.w fp, [sp, 0xc] | __asm ("str.w fp, [var_ch]");
0x00003ae6 add r3, pc | r3 = 0x76c8;
0x00003ae8 ldr r5, [sp, 8] | r5 = var_8h;
0x00003aea add r2, pc | r2 = 0x76d0;
0x00003aec mov fp, r3 |
0x00003aee str r2, [sp, 4] | var_4h = r2;
0x00003af0 b 0x3b38 |
| while (r0 == 0) {
0x00003af2 mov r3, r4 | r3 = r4;
0x00003af4 mov r2, r8 | r2 = r8;
0x00003af6 mov r1, sb | r1 = sb;
0x00003af8 mov r0, r5 | r0 = r5;
0x00003afa bl 0x3778 | r0 = fcn_00003778 (r0, r1, r2, r3);
| if (r0 == 0) {
0x00003afe cbz r0, 0x3b42 | goto label_2;
| }
0x00003b00 mov r3, r4 | r3 = r4;
0x00003b02 ldr r2, [sp, 4] | r2 = var_4h;
0x00003b04 movs r1, 0x64 | r1 = 0x64;
0x00003b06 mov r0, r6 | r0 = r6;
0x00003b08 blx 0x1f6c | fcn_00001f6c ();
0x00003b0c ldr r7, [r5] | r7 = *(r5);
0x00003b0e mov r1, r4 | r1 = r4;
0x00003b10 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00003b12 adds r4, 1 | r4++;
0x00003b14 blx 0x21fc | fcn_000021fc ();
0x00003b16 sbcs.w r6, r2, sb, ror 16 | __asm ("sbcs.w r6, r2, sb, ror 16");
0x00003b1a mov r2, r0 | r2 = r0;
0x00003b1c mov r0, r6 | r0 = r6;
0x00003b1e bl 0x30e4 | r0 = fcn_000030e4 (r0, r1, r2);
0x00003b22 mov r7, r0 | r7 = r0;
0x00003b24 mov r0, sl | r0 = sl;
0x00003b26 mov r1, r7 | r1 = r7;
0x00003b28 bl 0x2eb0 | fcn_00002eb0 (r0, r1);
0x00003b2c mov r0, r7 | r0 = r7;
0x00003b2e blx 0x1da4 | fcn_00001da4 ();
0x00003b32 ldr r1, [r5, 4]! | r1 = *((r5 += 4));
| if (r1 == 0) {
0x00003b36 cbz r1, 0x3b7c | goto label_3;
| }
0x00003b38 mov r0, fp | r0 = fp;
0x00003b3a blx 0x2254 | r0 = fcn_00002254 ();
0x00003b3e cmp r0, 0 |
0x00003b40 beq 0x3af2 |
| }
| label_2:
0x00003b42 mov r0, sl | r0 = sl;
0x00003b44 ldr.w fp, [sp, 0xc] | fp = var_ch;
0x00003b48 blx 0x1da4 | fcn_00001da4 ();
| do {
0x00003b4c ldr r0, [sp, 8] | r0 = var_8h;
0x00003b4e blx 0x2168 | g_sprintf ();
0x00003b50 add.w r8, ip, r5, lsl 4 | r8 = ip + (r5 << 4);
| if (r0 != 0) {
0x00003b54 cbz r0, 0x3b60 |
0x00003b56 bl 0x4a38 | fcn_00004a38 (r0);
0x00003b5a b 0x3b60 | goto label_4;
| label_0:
0x00003b5c mov.w fp, 0 |
| }
| label_4:
0x00003b60 ldr r1, [pc, 0x80] |
0x00003b62 ldr r2, [pc, 0x68] | r2 = *(0x3bce);
0x00003b64 add r1, pc | r1 = 0x774c;
0x00003b66 ldr r2, [r1, r2] | r2 = *(0x774c);
0x00003b68 ldr r1, [r2] | r1 = *(0x774c);
0x00003b6a ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x00003b6c eors r1, r2 | r1 ^= r2;
0x00003b6e mov.w r2, 0 | r2 = 0;
| if (r1 != r2) {
0x00003b72 bne 0x3bc2 | goto label_5;
| }
0x00003b74 mov r0, fp | r0 = fp;
0x00003b76 add sp, 0x84 |
0x00003b78 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x00003b7c mov sb, r6 | sb = r6;
| label_1:
0x00003b7e ldr r2, [pc, 0x68] |
0x00003b80 mov r3, r4 | r3 = r4;
0x00003b82 movs r1, 0x64 | r1 = 0x64;
0x00003b84 mov r0, sb | r0 = sb;
0x00003b86 add r2, pc | r2 = 0x7774;
0x00003b88 blx 0x1f6c | fcn_00001f6c ();
0x00003b8c movs r2, 0 | r2 = 0;
0x00003b8e mov r0, sb | r0 = sb;
0x00003b90 mov r1, r2 | r1 = r2;
0x00003b92 bl 0x3458 | r0 = fcn_00003458 (r0, r1, r2);
0x00003b96 mov r4, r0 | r4 = r0;
0x00003b98 bl 0x3108 | r0 = fcn_00003108 ();
0x00003b9c mov r1, r0 | r1 = r0;
0x00003b9e mov r0, r4 | r0 = r4;
0x00003ba0 blx 0x2078 | r0 = fprintf_chk ()
0x00003ba4 mov r1, r0 | r1 = r0;
0x00003ba6 mov r0, sl | r0 = sl;
0x00003ba8 bl 0x2eb0 | fcn_00002eb0 (r0, r1);
0x00003bac mov r0, r4 | r0 = r4;
0x00003bae blx 0x1da4 | fcn_00001da4 ();
0x00003bb2 bl 0x3108 | r0 = fcn_00003108 ();
0x00003bb6 mov r1, r0 | r1 = r0;
0x00003bb8 mov r0, sl | r0 = sl;
0x00003bba blx 0x2078 | r0 = fprintf_chk ()
0x00003bbe mov fp, r0 |
0x00003bc0 b 0x3b4c |
| } while (1);
| label_5:
0x00003bc2 blx 0x2090 | fputc (r0, r1);
0x00003bc6 nop |
0x00003bc8 str r4, [r5, 0x34] | *((r5 + 0x34)) = r4;
0x00003bca movs r0, r0 |
0x00003bcc lsls r0, r0, 8 | r0 <<= 8;
0x00003bce movs r0, r0 |
0x00003bd0 adds r1, 0xdc | r1 += 0xdc;
0x00003bd2 movs r0, r0 |
0x00003bd4 adds r2, 0x38 | r2 += 0x38;
0x00003bd6 movs r0, r0 |
0x00003bd8 adds r2, 0x22 | r2 += 0x22;
0x00003bda movs r0, r0 |
0x00003bdc subs r6, 0x12 | r6 -= 0x12;
0x00003bde movs r0, r0 |
0x00003be0 adds r1, 0xfe | r1 += 0xfe;
0x00003be2 movs r0, r0 |
0x00003be4 str r4, [r7, 0x24] | *((r7 + 0x24)) = r4;
0x00003be6 movs r0, r0 |
0x00003be8 adds r1, 0x62 | r1 += 0x62;
0x00003bea movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libwsevent.so @ 0x5034 */
| #include <stdint.h>
|
; (fcn) fcn.00005034 () | void fcn_00005034 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00005034 invalid |
0x00005038 ldr r1, [pc, 0xa8] |
0x0000503a mov r7, r2 | r7 = r2;
0x0000503c sub sp, 0xc |
0x0000503e movs r3, 0 | r3 = 0;
0x00005040 ldr r2, [pc, 0xa4] | r2 = *(0x50e8);
0x00005042 mov r6, r0 | r6 = r0;
0x00005044 add r1, pc | r1 = 0xa12c;
0x00005046 ldr r2, [r1, r2] |
0x00005048 mov r1, sp | r1 = sp;
0x0000504a ldr r2, [r2] | r2 = imp.g_str_hash;
0x0000504c str r2, [sp, 4] | var_4h = r2;
0x0000504e mov.w r2, 0 | r2 = 0;
0x00005052 str r3, [sp] | *(sp) = r3;
0x00005054 bl 0x4f08 | r0 = fcn_00004f08 (r0, r1);
0x00005058 cmp r0, 0 |
| if (r0 == 0) {
0x0000505a beq 0x50d4 | goto label_3;
| }
0x0000505c ldr r1, [pc, 0x8c] |
0x0000505e ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x00005060 add r1, pc | r1 = 0xa150;
0x00005062 blx 0x1dc8 | fcn_00001dc8 ();
0x00005066 ldr r4, [r6, 0x10] | r4 = *((r6 + 0x10));
| if (r0 == 0) {
0x00005068 cbz r0, 0x509a | goto label_4;
| }
0x0000506a bl 0x2da0 | r0 = fcn_00002da0 ();
0x0000506e mov r1, r0 | r1 = r0;
0x00005070 mov r0, r4 | r0 = r4;
0x00005072 blx 0x2078 | r0 = fprintf_chk ()
0x00005076 mov r1, r0 | r1 = r0;
0x00005078 mov r0, r5 | r0 = r5;
0x0000507a bl 0x4dd0 | fcn_00004dd0 (r0, r1, r2);
| do {
| label_0:
0x0000507e movs r4, 1 | r4 = 1;
| label_2:
0x00005080 ldr r2, [pc, 0x6c] |
0x00005082 ldr r3, [pc, 0x64] | r3 = *(0x50ea);
0x00005084 add r2, pc | r2 = 0xa178;
0x00005086 ldr r3, [r2, r3] | r3 = imp.g_str_hash;
0x00005088 ldr r2, [r3] | r2 = imp.g_str_hash;
0x0000508a ldr r3, [sp, 4] | r3 = var_4h;
0x0000508c eors r2, r3 | r2 ^= r3;
0x0000508e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00005092 bne 0x50e0 | goto label_5;
| }
0x00005094 mov r0, r4 | r0 = r4;
0x00005096 add sp, 0xc |
0x00005098 pop {r4, r5, r6, r7, pc} |
| label_4:
0x0000509a bl 0x34e0 | r0 = fcn_000034e0 ();
0x0000509e mov r1, r0 | r1 = r0;
0x000050a0 mov r0, r4 | r0 = r4;
0x000050a2 blx 0x2078 | fprintf_chk ()
0x000050a6 bl 0x35f0 | r0 = fcn_000035f0 (r0);
0x000050aa mov r4, r0 | r4 = r0;
0x000050ac cmp r0, 0 |
0x000050ae beq 0x507e |
| } while (r0 == 0);
0x000050b0 ldr r6, [pc, 0x40] |
0x000050b2 add r6, pc | r6 = 0xa1aa;
0x000050b4 b 0x50c4 | goto label_6;
| label_1:
0x000050b6 mov r1, r6 | r1 = r6;
0x000050b8 mov r0, r5 | r0 = r5;
0x000050ba blx 0x220c | fcn_0000220c ();
0x000050be ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x000050c0 cmp r4, 0 |
| if (r4 == 0) {
0x000050c2 beq 0x507e | goto label_0;
| }
| label_6:
0x000050c4 ldr r1, [r4] | r1 = *(r4);
0x000050c6 mov r0, r5 | r0 = r5;
0x000050c8 bl 0x4dd0 | fcn_00004dd0 (r0, r1, r2);
0x000050cc ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000050ce cmp r3, 0 |
| if (r3 != 0) {
0x000050d0 bne 0x50b6 | goto label_1;
| }
0x000050d2 b 0x507e | goto label_0;
| label_3:
0x000050d4 mov r4, r0 | r4 = r0;
0x000050d6 ldr r1, [sp] | r1 = *(sp);
0x000050d8 mov r0, r7 | r0 = r7;
0x000050da blx 0x1f54 | fcn_00001f54 ();
0x000050de b 0x5080 | goto label_2;
| label_5:
0x000050e0 blx 0x2090 | fputc (r0, r1);
0x000050e4 ldr r5, [pc, 0x270] | r5 = *(0x5358);
0x000050e6 movs r0, r0 |
0x000050e8 lsls r0, r0, 8 | r0 <<= 8;
0x000050ea movs r0, r0 |
0x000050ec subs r4, r0, 3 | r4 = r0 - 3;
0x000050ee movs r0, r0 |
0x000050f0 ldr r5, [pc, 0x170] | r5 = *(0x5264);
0x000050f2 movs r0, r0 |
0x000050f4 adds r2, r5, 0 | r2 = r5 + 0;
0x000050f6 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libwsevent.so @ 0x5fe4 */
| #include <stdint.h>
|
; (fcn) fcn.00005fe4 () | void fcn_00005fe4 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
| if (? >= ?) {
0x00005fe4 ldrbmi lr, [r0, sp, lsr 18]! |
| }
0x00005fe8 mov r4, r0 | r4 = r0;
0x00005fea mov r6, r1 | r6 = r1;
0x00005fec mov r7, r2 | r7 = r2;
0x00005fee mov r8, r3 | r8 = r3;
0x00005ff0 bl 0x34e0 | fcn_000034e0 ();
0x00005ff4 cmp r4, 0 |
| if (r4 == 0) {
0x00005ff6 beq.w 0x6248 | goto label_8;
| }
0x00005ffa ldr r3, [r4] | r3 = *(r4);
0x00005ffc mov r1, r0 | r1 = r0;
| if (r3 != 0) {
0x00005ffe cbz r3, 0x6006 |
0x00006000 ldr r3, [r3] | r3 = *(r3);
0x00006002 cmp r3, r0 |
| if (r3 == r0) {
0x00006004 beq 0x6054 | goto label_9;
| }
| }
0x00006006 mov r0, r4 | r0 = r4;
0x00006008 blx 0x1ff4 | r0 = event_has_tag_at ();
| if (r0 == 0) {
0x0000600c cbnz r0, 0x6054 |
0x0000600e bl 0x2da0 | fcn_00002da0 ();
0x00006012 ldr r3, [r4] | r3 = *(r4);
0x00006014 mov r1, r0 | r1 = r0;
| if (r3 != 0) {
0x00006016 cbz r3, 0x601e |
0x00006018 ldr r3, [r3] | r3 = *(r3);
0x0000601a cmp r3, r0 |
| if (r3 == r0) {
0x0000601c beq 0x6104 | goto label_10;
| }
| }
0x0000601e mov r0, r4 | r0 = r4;
0x00006020 blx 0x1ff4 | r0 = event_has_tag_at ();
0x00006024 cmp r0, 0 |
| if (r0 != 0) {
0x00006026 bne 0x6104 | goto label_10;
| }
0x00006028 bl 0x3244 | fcn_00003244 ();
0x0000602c ldr r3, [r4] | r3 = *(r4);
0x0000602e mov r1, r0 | r1 = r0;
| if (r3 != 0) {
0x00006030 cbz r3, 0x603a |
0x00006032 ldr r3, [r3] | r3 = *(r3);
0x00006034 cmp r3, r0 |
| if (r3 == r0) {
0x00006036 beq.w 0x6202 | goto label_11;
| }
| }
0x0000603a mov r0, r4 | r0 = r4;
0x0000603c blx 0x1ff4 | r0 = event_has_tag_at ();
0x00006040 cmp r0, 0 |
| if (r0 != 0) {
0x00006042 bne.w 0x6202 | goto label_11;
| }
| label_5:
0x00006046 mov r0, r4 | r0 = r4;
0x00006048 mov r6, r4 | r6 = r4;
0x0000604a blx 0x1ed0 | fcn_00001ed0 ();
0x0000604e mov r0, r6 | r0 = r6;
0x00006050 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
| label_9:
0x00006054 bl 0x34e0 | r0 = fcn_000034e0 ();
0x00006058 mov r1, r0 | r1 = r0;
0x0000605a mov r0, r4 | r0 = r4;
0x0000605c blx 0x2078 | r0 = fprintf_chk ()
0x00006060 mov r4, r0 | r4 = r0;
0x00006062 movs r0, 0 | r0 = 0;
0x00006064 bl 0x3630 | r0 = fcn_00003630 (r0);
0x00006068 mov sb, r0 | sb = r0;
0x0000606a mov r0, r4 | r0 = r4;
0x0000606c bl 0x35f0 | r0 = fcn_000035f0 (r0);
0x00006070 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00006072 cbz r0, 0x60b2 | goto label_12;
| }
| do {
0x00006074 ldr r5, [r4] | r5 = *(r4);
0x00006076 bl 0x2fc0 | r0 = fcn_00002fc0 ();
0x0000607a mov r1, r0 | r1 = r0;
| if (r5 != 0) {
0x0000607c cbz r5, 0x6090 |
0x0000607e ldr r3, [r5] | r3 = *(r5);
| if (r3 != 0) {
0x00006080 cbz r3, 0x6088 |
0x00006082 ldr r3, [r3] | r3 = *(r3);
0x00006084 cmp r0, r3 |
| if (r0 == r3) {
0x00006086 beq 0x60c2 | goto label_13;
| }
| }
0x00006088 mov r0, r5 | r0 = r5;
0x0000608a blx 0x1ff4 | r0 = event_has_tag_at ();
| if (r0 != 0) {
0x0000608e cbnz r0, 0x60c2 | goto label_13;
| }
| }
0x00006090 ldr r0, [r4] | r0 = *(r4);
0x00006092 mov r3, r8 | r3 = r8;
0x00006094 mov r2, r7 | r2 = r7;
0x00006096 mov r1, r6 | r1 = r6;
0x00006098 bl 0x5fe4 | r0 = fcn_00005fe4 (r0, r1, r2, r3);
| label_0:
0x0000609c mov r5, r0 | r5 = r0;
0x0000609e mov r0, sb | r0 = sb;
0x000060a0 mov r1, r5 | r1 = r5;
0x000060a2 bl 0x35f4 | fcn_000035f4 (r0, r1);
0x000060a6 mov r0, r5 | r0 = r5;
0x000060a8 blx 0x1da4 | fcn_00001da4 ();
0x000060ac ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x000060ae cmp r4, 0 |
0x000060b0 bne 0x6074 |
| } while (r4 != 0);
| label_12:
0x000060b2 bl 0x3108 | r0 = fcn_00003108 ();
0x000060b6 mov r1, r0 | r1 = r0;
0x000060b8 mov r0, sb | r0 = sb;
0x000060ba pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000060be b.w 0x2074 | void (*0x2074)() ();
| label_13:
0x000060c2 ldr r0, [r4] | r0 = *(r4);
0x000060c4 bl 0x30d8 | r0 = fcn_000030d8 (r0);
0x000060c8 mov r5, r0 | r5 = r0;
0x000060ca ldr r0, [r4] | r0 = *(r4);
0x000060cc bl 0x30dc | r0 = fcn_000030dc (r0);
0x000060d0 mov sl, r0 | sl = r0;
0x000060d2 ldr r0, [r4] | r0 = *(r4);
0x000060d4 bl 0x30e0 | fcn_000030e0 (r0);
| if (r6 != 0) {
0x000060d8 cbz r6, 0x60de |
| if (r5 != 0) {
0x000060da cbnz r5, 0x60fe | goto label_14;
| }
0x000060dc mov r5, r6 | r5 = r6;
| }
| if (r7 != 0) {
0x000060de cbz r7, 0x60e8 |
0x000060e0 cmp.w sl, 0 |
| if (sl != 0) {
0x000060e4 bne 0x60fe | goto label_14;
| }
0x000060e6 mov sl, r7 | sl = r7;
| }
0x000060e8 cmp.w r8, 0 |
| if (r8 != 0) {
0x000060ec beq 0x60f2 |
| if (r0 != 0) {
0x000060ee cbnz r0, 0x60fe | goto label_14;
| }
0x000060f0 mov r0, r8 | r0 = r8;
| }
0x000060f2 mov r2, r0 | r2 = r0;
0x000060f4 mov r1, sl | r1 = sl;
0x000060f6 mov r0, r5 | r0 = r5;
0x000060f8 bl 0x30e4 | fcn_000030e4 (r0, r1, r2);
0x000060fc b 0x609c | goto label_0;
| label_14:
0x000060fe bl 0x3204 | fcn_00003204 ();
0x00006102 b 0x609c | goto label_0;
| label_10:
0x00006104 bl 0x2da0 | r0 = fcn_00002da0 ();
0x00006108 mov r1, r0 | r1 = r0;
0x0000610a mov r0, r4 | r0 = r4;
0x0000610c blx 0x2078 | fprintf_chk ()
0x00006110 bl 0x2f0c | r0 = fcn_00002f0c (r0);
0x00006114 mov r4, r0 | r4 = r0;
0x00006116 cmp r0, 0 |
| if (r0 == 0) {
0x00006118 beq.w 0x6252 | goto label_15;
| }
0x0000611c mov.w sb, 0 | sb = 0;
| do {
0x00006120 ldr r5, [r4] | r5 = *(r4);
0x00006122 bl 0x2fc0 | r0 = fcn_00002fc0 ();
0x00006126 mov r1, r0 | r1 = r0;
0x00006128 cmp r5, 0 |
| if (r5 == 0) {
0x0000612a beq 0x61e4 | goto label_16;
| }
0x0000612c ldr r3, [r5] | r3 = *(r5);
| if (r3 != 0) {
0x0000612e cbz r3, 0x6136 |
0x00006130 ldr r3, [r3] | r3 = *(r3);
0x00006132 cmp r0, r3 |
| if (r0 == r3) {
0x00006134 beq 0x6140 | goto label_17;
| }
| }
0x00006136 mov r0, r5 | r0 = r5;
0x00006138 blx 0x1ff4 | r0 = event_has_tag_at ();
0x0000613c cmp r0, 0 |
| if (r0 == 0) {
0x0000613e beq 0x61e4 | goto label_16;
| }
| label_17:
0x00006140 ldr r0, [r4] | r0 = *(r4);
0x00006142 bl 0x30d8 | r0 = fcn_000030d8 (r0);
0x00006146 mov r5, r0 | r5 = r0;
0x00006148 ldr r0, [r4] | r0 = *(r4);
0x0000614a bl 0x30dc | r0 = fcn_000030dc (r0);
0x0000614e mov sl, r0 | sl = r0;
0x00006150 ldr r0, [r4] | r0 = *(r4);
0x00006152 bl 0x30e0 | fcn_000030e0 (r0);
0x00006156 cmp r6, 0 |
| if (r6 == 0) {
0x00006158 beq 0x61f0 | goto label_18;
| }
0x0000615a cmp r5, 0 |
| if (r5 != 0) {
0x0000615c bne 0x6224 | goto label_19;
| }
0x0000615e cmp r7, 0 |
| if (r7 == 0) {
0x00006160 beq 0x61f6 | goto label_20;
| }
| label_2:
0x00006162 cmp.w sl, 0 |
| if (sl != 0) {
0x00006166 bne 0x6224 | goto label_19;
| }
0x00006168 cmp.w r8, 0 |
| if (r8 == 0) {
0x0000616c beq 0x61fe | goto label_21;
| }
| label_3:
0x0000616e cmp r0, 0 |
| if (r0 != 0) {
0x00006170 bne 0x6224 | goto label_19;
| }
| label_1:
0x00006172 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00006174 cmp r4, 0 |
0x00006176 bne 0x6120 |
| } while (r4 != 0);
0x00006178 orrs.w r5, r6, r7 | r5 = r6 | r7;
0x0000617c itt eq |
| if (r5 != r6) {
0x0000617e moveq r7, r4 | r7 = r4;
| }
| if (r5 != r6) {
0x00006180 moveq r6, r7 | r6 = r7;
| }
| if (r5 != r6) {
0x00006182 bne 0x625c | goto label_22;
| }
| label_6:
0x00006184 cmp.w sb, 0 |
| if (sb == 0) {
0x00006188 beq 0x61a8 | goto label_23;
| }
0x0000618a mov r4, sb | r4 = sb;
| do {
0x0000618c ldr r0, [r4] | r0 = *(r4);
0x0000618e mov r3, r8 | r3 = r8;
0x00006190 mov r2, r7 | r2 = r7;
0x00006192 mov r1, r6 | r1 = r6;
0x00006194 bl 0x5fe4 | r0 = fcn_00005fe4 (r0, r1, r2, r3);
0x00006198 mov r1, r0 | r1 = r0;
0x0000619a mov r0, r5 | r0 = r5;
0x0000619c blx 0x1f48 | fcn_00001f48 ();
0x000061a0 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x000061a2 mov r5, r0 | r5 = r0;
0x000061a4 cmp r4, 0 |
0x000061a6 bne 0x618c |
| } while (r4 != 0);
| label_23:
0x000061a8 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x000061aa cmp r3, 0 |
| if (r3 == 0) {
0x000061ac beq 0x6272 | goto label_24;
| }
0x000061ae mov r0, r5 | r0 = r5;
0x000061b0 bl 0x2eec | r0 = fcn_00002eec (r0);
0x000061b4 mov r4, r0 | r4 = r0;
0x000061b6 bl 0x3108 | r0 = fcn_00003108 ();
0x000061ba mov r1, r0 | r1 = r0;
0x000061bc mov r0, r4 | r0 = r4;
0x000061be blx 0x2078 | r0 = fprintf_chk ()
0x000061c2 mov r6, r0 | r6 = r0;
| label_7:
0x000061c4 mov r4, r5 | r4 = r5;
| do {
0x000061c6 ldr r0, [r4] | r0 = *(r4);
0x000061c8 blx 0x1da4 | fcn_00001da4 ();
0x000061cc ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x000061ce cmp r4, 0 |
0x000061d0 bne 0x61c6 |
| } while (r4 != 0);
0x000061d2 mov r0, r5 | r0 = r5;
0x000061d4 blx 0x1d44 | fcn_00001d44 ();
0x000061d8 mov r0, sb | r0 = sb;
0x000061da blx 0x1d44 | fcn_00001d44 ();
| label_4:
0x000061de mov r0, r6 | r0 = r6;
0x000061e0 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_16:
0x000061e4 mov r0, sb | r0 = sb;
0x000061e6 ldr r1, [r4] | r1 = *(r4);
0x000061e8 blx 0x1f48 | r0 = fcn_00001f48 ();
0x000061ec mov sb, r0 | sb = r0;
0x000061ee b 0x6172 | goto label_1;
| label_18:
0x000061f0 mov r6, r5 | r6 = r5;
0x000061f2 cmp r7, 0 |
| if (r7 != 0) {
0x000061f4 bne 0x6162 | goto label_2;
| }
| label_20:
0x000061f6 mov r7, sl | r7 = sl;
0x000061f8 cmp.w r8, 0 |
| if (r8 != 0) {
0x000061fc bne 0x616e | goto label_3;
| }
| label_21:
0x000061fe mov r8, r0 | r8 = r0;
0x00006200 b 0x6172 | goto label_1;
| label_11:
0x00006202 bl 0x3244 | r0 = fcn_00003244 ();
0x00006206 mov r1, r0 | r1 = r0;
0x00006208 mov r0, r4 | r0 = r4;
0x0000620a blx 0x2078 | fprintf_chk ()
0x0000620e bl 0x3330 | fcn_00003330 (r0);
0x00006212 mov r3, r8 | r3 = r8;
0x00006214 mov r2, r7 | r2 = r7;
0x00006216 mov r1, r6 | r1 = r6;
0x00006218 bl 0x5fe4 | fcn_00005fe4 (r0, r1, r2, r3);
0x0000621c pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00006220 b.w 0x3334 | void (*0x3334)() ();
| label_19:
0x00006224 bl 0x31f4 | r0 = fcn_000031f4 ();
0x00006228 mov r4, r0 | r4 = r0;
0x0000622a movs r5, 0 | r5 = 0;
0x0000622c bl 0x3108 | r0 = fcn_00003108 ();
0x00006230 mov r1, r0 | r1 = r0;
0x00006232 mov r0, r4 | r0 = r4;
0x00006234 blx 0x2078 | r0 = fprintf_chk ()
0x00006238 mov r6, r0 | r6 = r0;
0x0000623a mov r0, r5 | r0 = r5;
0x0000623c blx 0x1d44 | fcn_00001d44 ();
0x00006240 mov r0, sb | r0 = sb;
0x00006242 blx 0x1d44 | fcn_00001d44 ();
0x00006246 b 0x61de | goto label_4;
| label_8:
0x00006248 bl 0x2da0 | fcn_00002da0 ();
0x0000624c bl 0x3244 | fcn_00003244 ();
0x00006250 b 0x6046 | goto label_5;
| label_15:
0x00006252 orrs.w r3, r6, r7 | r3 = r6 | r7;
0x00006256 it ne |
| if (r3 == r6) {
0x00006258 movne sb, r0 | sb = r0;
| }
| if (r3 != r6) {
0x0000625a beq 0x627c |
| label_22:
0x0000625c mov r2, r8 | r2 = r8;
0x0000625e mov r1, r7 | r1 = r7;
0x00006260 mov r0, r6 | r0 = r6;
0x00006262 bl 0x309c | r0 = fcn_0000309c (r0, r1, r2);
0x00006266 mov r1, r0 | r1 = r0;
0x00006268 movs r0, 0 | r0 = 0;
0x0000626a blx 0x1f48 | r0 = fcn_00001f48 ();
0x0000626e mov r5, r0 | r5 = r0;
0x00006270 b 0x6184 | goto label_6;
| label_24:
0x00006272 ldr r6, [r5] | r6 = *(r5);
0x00006274 mov r0, r6 | r0 = r6;
0x00006276 blx 0x1ed0 | fcn_00001ed0 ();
0x0000627a b 0x61c4 | goto label_7;
| }
0x0000627c ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0000627e udf 0xff | __asm ("udf 0xff");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libwsevent.so @ 0x6568 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00006568 () | void fcn_00006568 (int16_t arg_bp_38h, int16_t arg_180h, int16_t arg_24h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_34h, int16_t arg_38h, int16_t arg_3ch, int16_t arg_40h, int16_t arg_4ch, int16_t arg_36ch, int16_t arg_3ech, int16_t arg_4b4h, int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| r0 = arg1;
| r1 = arg2;
0x00006568 ldr.w r2, [pc, 0x4a8] |
0x0000656c ldr.w r3, [pc, 0x4a8] | r3 = *(0x6a18);
0x00006570 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00006574 subw sp, sp, 0x4bc | __asm ("subw sp, sp, 0x4bc");
0x00006578 add r4, sp, 0x36c | r4 += arg_36ch;
0x0000657a add r2, pc | r2 = 0xcf92;
0x0000657c add r5, sp, 0x40 | r5 += arg_40h;
0x0000657e mov.w r8, 0xc8 | r8 = 0xc8;
0x00006582 str r0, [sp, 0x10] | var_10h = r0;
0x00006584 mvn sb, 1 | sb = ~1;
0x00006588 ldr.w r0, [pc, 0x490] |
0x0000658c add.w lr, sp, 0x3c | lr += arg_3ch;
0x00006590 str r4, [sp, 0x24] | *(arg_24h) = r4;
0x00006592 str r5, [sp, 0x2c] | *(arg_2ch) = r5;
0x00006594 add r5, sp, 0x4c | r5 += arg_4ch;
0x00006596 str r1, [sp, 0x28] | *(arg_28h) = r1;
0x00006598 add r0, pc | r0 = 0xcfb8;
0x0000659a ldr r3, [r2, r3] |
0x0000659c movs r2, 0x80 | r2 = 0x80;
0x0000659e movs r1, 0xc7 | r1 = 0xc7;
0x000065a0 ldr r3, [r3] | r3 = *(0xcf92);
0x000065a2 str.w r3, [sp, 0x4b4] | __asm ("str.w r3, [arg_4b4h]");
0x000065a6 mov.w r3, 0 | r3 = 0;
0x000065aa str r0, [sp, 4] | var_4h = r0;
0x000065ac ldr.w r0, [pc, 0x470] |
0x000065b0 add r3, sp, 0x3ec | r3 += arg_3ech;
0x000065b2 str r2, [sp, 0x40] | *(arg_40h) = r2;
0x000065b4 movs r2, 0 | r2 = 0;
0x000065b6 str r4, [sp, 0x3c] | *(arg_3ch) = r4;
0x000065b8 mov r7, r3 | r7 = r3;
0x000065ba add r0, pc | r0 = 0xcfde;
0x000065bc str r4, [sp, 0x18] | var_18h = r4;
0x000065be str r0, [sp, 0x1c] | var_1ch = r0;
0x000065c0 mov r4, r3 | r4 = r3;
0x000065c2 ldr.w r0, [pc, 0x460] |
0x000065c6 mov r6, r2 | r6 = r2;
0x000065c8 str r5, [sp, 8] | var_8h = r5;
0x000065ca str r1, [sp] | *(sp) = r1;
0x000065cc add r0, pc | r0 = 0xcff6;
0x000065ce str r2, [sp, 0x14] | var_14h = r2;
0x000065d0 str r0, [sp, 0x20] | var_20h = r0;
0x000065d2 str.w lr, [sp, 0x30] | __asm ("str.w lr, [arg_30h]");
0x000065d6 str r3, [sp, 0xc] | var_ch = r3;
| label_1:
0x000065d8 ldr r3, [sp] | r3 = *(sp);
0x000065da strb r6, [r4] | *(r4) = r6;
0x000065dc adds r3, r7, r3 | r3 = r7 + r3;
0x000065de cmp r4, r3 |
| if (r4 > r3) {
0x000065e0 blo 0x6658 |
0x000065e2 movw r3, 0x270f | r3 = 0x270f;
0x000065e6 subs r4, r4, r7 | r4 -= r7;
0x000065e8 cmp r8, r3 |
0x000065ea add.w r5, r4, 1 | r5 = r4 + 1;
0x000065ec lsls r1, r0, 0x14 | r1 = r0 << 0x14;
| if (r1 > r0) {
0x000065ee bgt.w 0x6888 | goto label_15;
| }
0x000065f2 lsl.w r8, r8, 1 | r8 <<= 1;
0x000065f6 movw r3, 0x2710 | r3 = 0x2710;
0x000065fa cmp r8, r3 |
0x000065fc it ge |
| if (r8 < r3) {
0x000065fe movge r8, r3 | r8 = r3;
| }
0x00006600 add.w r0, r8, r8, lsl 2 | r0 = r8 + (r8 << 2);
0x00006604 adds r0, 3 | r0 += 3;
0x00006606 blx 0x2068 | r0 = fcn_00002068 ();
0x0000660a mov sl, r0 | sl = r0;
0x0000660c cmp r0, 0 |
| if (r0 == 0) {
0x0000660e beq.w 0x6888 | goto label_15;
| }
0x00006612 add.w fp, r8, 3 |
0x00006616 mov r2, r5 | r2 = r5;
0x00006618 bic fp, fp, 3 | fp = BIT_MASK (fp, 3);
0x0000661c lsls r5, r5, 2 | r5 <<= 2;
0x0000661e mov r1, r7 | r1 = r7;
0x00006620 add fp, sl |
0x00006622 blx 0x1f60 | fcn_00001f60 ();
0x00006626 ldr r1, [sp, 8] | r1 = var_8h;
0x00006628 mov r2, r5 | r2 = r5;
0x0000662a mov r0, fp | r0 = fp;
0x0000662c blx 0x1f60 | fcn_00001f60 ();
0x00006630 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00006632 cmp r7, r3 |
| if (r7 != r3) {
0x00006634 beq 0x663c |
0x00006636 mov r0, r7 | r0 = r7;
0x00006638 blx 0x1ec0 | fcn_00001ec0 ();
| }
0x0000663c add.w r3, r8, -1 | r3 = r8 + -1;
0x00006640 add r4, sl | r4 += sl;
0x00006642 str r3, [sp] | *(sp) = r3;
0x00006644 add r3, sl | r3 += sl;
0x00006646 cmp r4, r3 |
0x00006648 sub.w r5, r5, 4 | r5 -= 4;
0x0000664c add r5, fp | r5 += fp;
| if (r4 >= r3) {
0x0000664e bhs.w 0x69f2 | goto label_16;
| }
0x00006652 mov r7, sl | r7 = sl;
0x00006654 str.w fp, [sp, 8] | __asm ("str.w fp, [var_8h]");
| }
0x00006658 cmp r6, 0xc |
| if (r6 == 0xc) {
0x0000665a beq.w 0x69be | goto label_17;
| }
0x0000665e ldr r3, [sp, 4] | r3 = var_4h;
0x00006660 ldrsb.w sl, [r3, r6] | sl = *((r3 + r6));
0x00006664 cmn.w sl, 0x18 |
0x00006668 mov fp, sl |
| if (sl != 0x18) {
0x0000666a beq 0x66d4 |
0x0000666c cmn.w sb, 2 |
| if (sb == 2) {
0x00006670 beq.w 0x689e | goto label_18;
| }
| label_6:
0x00006674 cmp.w sb, 0 |
| if (sb <= 0) {
0x00006678 ble.w 0x67e6 | goto label_19;
| }
0x0000667c cmp.w sb, 0x100 |
| if (sb == 0x100) {
0x00006680 beq.w 0x69b4 | goto label_20;
| }
0x00006684 cmp.w sb, 0x110 |
0x00006688 itt gt |
| if (sb <= 0x110) {
0x0000668a addgt fp, sl, 2 |
| }
| if (sb > 0x110) {
0x0000668e movs r2, 2 | r2 = 2;
| }
| if (r2 <= 2) {
0x00006690 bgt 0x66a0 |
0x00006692 ldr r3, [pc, 0x394] |
0x00006694 add r3, pc | r3 = 0xd0c2;
0x00006696 add r3, sb | r3 += sb;
0x00006698 ldrsb.w r2, [r3, 0x68] | r2 = *((r3 + 0x68));
0x0000669c add.w fp, sl, r2 |
| }
| label_2:
0x000066a0 cmp.w fp, 0x2c |
| if (fp > 0x2c) {
0x000066a4 bhi 0x6726 | goto label_21;
| }
0x000066a6 ldr r3, [pc, 0x384] |
0x000066a8 add r3, pc | r3 = 0xd0da;
0x000066aa add fp, r3 |
0x000066ac ldrsb.w r1, [fp, 0x38] | r1 = *(arg_bp_38h);
0x000066b0 cmp r1, r2 |
| if (r1 != r2) {
0x000066b2 bne 0x672a | goto label_22;
| }
0x000066b4 ldrsb.w r6, [fp, 0x180] | r6 = *(arg_180h);
0x000066b8 cmp r6, 0 |
0x000066ba it le |
| if (r6 <= 0) {
0x000066bc rsble r6, r6, 0 | __asm ("rsble r6, r6, 0");
| }
| if (r6 <= 0) {
0x000066be ble 0x66e2 | goto label_23;
| }
0x000066c0 ldr r3, [sp, 0x14] | r3 = var_14h;
| if (r3 != 0) {
0x000066c2 cbz r3, 0x66c8 |
0x000066c4 subs r3, 1 | r3--;
0x000066c6 str r3, [sp, 0x14] | var_14h = r3;
| }
0x000066c8 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x000066ca adds r5, 4 | r5 += 4;
0x000066cc mvn sb, 1 | sb = ~1;
0x000066d0 str r3, [r5] | *(r5) = r3;
0x000066d2 b 0x67e2 | goto label_24;
| }
0x000066d4 ldr r3, [sp, 4] | r3 = var_4h;
0x000066d6 add r6, r3 | r6 += r3;
0x000066d8 ldrsb.w r6, [r6, 0x1b0] | r6 = *((r6 + 0x1b0));
0x000066dc cmp r6, 0 |
| if (r6 == 0) {
0x000066de beq.w 0x6844 | goto label_25;
| }
| do {
| label_23:
0x000066e2 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000066e4 add r3, r6 | r3 += r6;
0x000066e6 ldrsb.w sl, [r3, 0x1e8] | sl = *((r3 + 0x1e8));
0x000066ea subs r3, r6, 2 | r3 = r6 - 2;
0x000066ec rsb.w r2, sl, 1 | r2 = 1 - sl;
0x000066f0 ldr.w fp, [r5, r2, lsl 2] | offset_0 = r2 << 2;
| fp = *((r5 + offset_0));
0x000066f4 cmp r3, 0x14 |
| if (r3 > 0x14) {
0x000066f6 bhi 0x67a0 | goto label_7;
| }
| /* switch table (22 cases) at 0x66fc */
0x000066f8 tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
| label_21:
0x00006726 ldr r3, [pc, 0x308] |
0x00006728 add r3, pc | r3 = 0xd15e;
| label_22:
0x0000672a add r3, r6 | r3 += r6;
0x0000672c ldrsb.w r6, [r3, 0x1b0] | r6 = *((r3 + 0x1b0));
0x00006730 cmp r6, 0 |
0x00006732 bne 0x66e2 |
| } while (r6 != 0);
| label_4:
0x00006734 cmp.w sb, 0x110 |
| if (sb < 0x110) {
0x00006738 bls 0x67ee | goto label_26;
| }
0x0000673a ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000673c cmp r3, 0 |
| if (r3 == 0) {
0x0000673e beq.w 0x69ba | goto label_27;
| }
0x00006742 subs r3, 3 | r3 -= 3;
0x00006744 it ne |
| if (r3 == 3) {
0x00006746 movne r3, 1 | r3 = 1;
| }
0x00006748 cmp.w sb, 0 |
0x0000674c it le |
| if (sb > 0) {
0x0000674e orrle r3, r3, 1 | r3 |= 1;
| }
0x00006752 cmp r3, 0 |
| if (r3 == 0) {
0x00006754 beq 0x6850 | goto label_28;
| }
| label_3:
0x00006756 ldr r1, [pc, 0x2dc] |
0x00006758 ldr r2, [pc, 0x2dc] |
0x0000675a add r1, pc | r1 = 0xd194;
0x0000675c add r2, pc | r2 = 0xd198;
0x0000675e b 0x676e |
| while (sl == 0x18) {
| label_0:
0x00006760 cmp r7, r4 |
| if (r7 == r4) {
0x00006762 beq 0x6806 | goto label_29;
| }
0x00006764 ldrsb r3, [r4, -0x1]! | r3 = *((r4 -= 0x1));
0x00006768 subs r5, 4 | r5 -= 4;
0x0000676a ldrsb.w sl, [r2, r3] | sl = *((r2 + r3));
0x0000676e cmn.w sl, 0x18 |
0x00006772 beq 0x6760 |
| }
0x00006774 add.w sl, sl, 1 | sl++;
0x00006778 cmp.w sl, 0x2c |
| if (sl > 0x2c) {
0x0000677c bhi 0x6760 | goto label_0;
| }
0x0000677e add sl, r1 | sl += r1;
0x00006780 ldrsb.w r3, [sl, 0x38] | r3 = *((sl + 0x38));
0x00006784 cmp r3, 1 |
| if (r3 != 1) {
0x00006786 bne 0x6760 | goto label_0;
| }
0x00006788 ldrsb.w r6, [sl, 0x180] | r6 = *((sl + 0x180));
0x0000678c cmp r6, 0 |
| if (r6 <= 0) {
0x0000678e ble 0x6760 | goto label_0;
| }
0x00006790 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00006792 adds r5, 4 | r5 += 4;
0x00006794 str r3, [r5] | *(r5) = r3;
0x00006796 movs r3, 3 | r3 = 3;
0x00006798 str r3, [sp, 0x14] | var_14h = r3;
0x0000679a b 0x67e2 | goto label_24;
0x0000679c ldr.w fp, [r5] | fp = *(r5);
| label_7:
0x000067a0 ldr r0, [sp, 0x20] | r0 = var_20h;
0x000067a2 sub.w r5, r5, sl, lsl 2 | r5 -= (sl << 2);
0x000067a6 sub.w r4, r4, sl | r4 -= sl;
0x000067aa str.w fp, [r5, 4] | __asm ("str.w fp, [r5, 4]");
0x000067ae adds r5, 4 | r5 += 4;
0x000067b0 add r6, r0 | r6 += r0;
0x000067b2 ldrsb.w r1, [r4] | r1 = *(r4);
0x000067b6 ldrsb.w r2, [r6, 0x200] | r2 = *((r6 + 0x200));
0x000067ba subs r2, 0x12 | r2 -= 0x12;
0x000067bc adds r3, r0, r2 | r3 = r0 + r2;
0x000067be ldrsb.w r3, [r3, 0x218] | r3 = *((r3 + 0x218));
0x000067c2 add r3, r1 | r3 += r1;
0x000067c4 cmp r3, 0x2c |
| if (r3 <= 0x2c) {
0x000067c6 bhi 0x67d8 |
0x000067c8 add r3, r0 | r3 += r0;
0x000067ca ldrsb.w r0, [r3, 0x38] | r0 = *((r3 + 0x38));
0x000067ce cmp r0, r1 |
0x000067d0 it eq |
| if (r0 == r1) {
0x000067d2 ldrsbeq r6, [r3, 0x180] | __asm ("ldrsbeq r6, [r3, 0x180]");
| }
| if (r0 == r1) {
0x000067d6 beq 0x67e2 | goto label_24;
| }
| }
0x000067d8 ldr r3, [pc, 0x260] |
0x000067da add r3, pc | r3 = 0xd21a;
0x000067dc add r3, r2 | r3 += r2;
0x000067de ldrsb.w r6, [r3, 0x224] | r6 = *((r3 + 0x224));
| label_24:
0x000067e2 adds r4, 1 | r4++;
0x000067e4 b 0x65d8 | goto label_1;
| label_19:
0x000067e6 mov.w sb, 0 | sb = 0;
0x000067ea mov r2, sb | r2 = sb;
0x000067ec b 0x66a0 | goto label_2;
| label_26:
0x000067ee ldr r3, [pc, 0x250] |
0x000067f0 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000067f2 add r3, pc | r3 = 0xd238;
0x000067f4 add r3, sb | r3 += sb;
0x000067f6 ldrsb.w r3, [r3, 0x68] | r3 = *((r3 + 0x68));
| if (r2 == 0) {
0x000067fa cbz r2, 0x6858 | goto label_11;
| }
0x000067fc cmp r2, 3 |
| if (r2 != 3) {
0x000067fe bne 0x6756 | goto label_3;
| }
0x00006800 cmp.w sb, 0 |
| if (sb != 0) {
0x00006804 bne 0x6850 | goto label_28;
| }
| label_29:
0x00006806 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00006808 movs r4, 1 | r4 = 1;
| label_5:
0x0000680a cmp r7, r3 |
| if (r7 != r3) {
0x0000680c beq 0x6814 |
| label_13:
0x0000680e mov r0, r7 | r0 = r7;
0x00006810 blx 0x1ec0 | fcn_00001ec0 ();
| }
0x00006814 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00006816 ldr r2, [sp, 0x24] | r2 = *(arg_24h);
0x00006818 cmp r3, r2 |
| if (r3 != r2) {
0x0000681a beq 0x6822 |
0x0000681c mov r0, r3 | r0 = r3;
0x0000681e blx 0x1ec0 | fcn_00001ec0 ();
| }
0x00006822 ldr r2, [pc, 0x220] |
0x00006824 ldr r3, [pc, 0x1f0] | r3 = *(0x6a18);
0x00006826 add r2, pc | r2 = 0xd270;
0x00006828 ldr r3, [r2, r3] | r3 = *(0xd270);
0x0000682a ldr r2, [r3] | r2 = *(0xd270);
0x0000682c ldr.w r3, [sp, 0x4b4] | r3 = *(arg_4b4h);
0x00006830 eors r2, r3 | r2 ^= r3;
0x00006832 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00006836 bne.w 0x69f8 | goto label_30;
| }
0x0000683a mov r0, r4 | r0 = r4;
0x0000683c addw sp, sp, 0x4bc | __asm ("addw sp, var_0h");
0x00006840 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_25:
0x00006844 cmn.w sb, 2 |
| if (sb != 2) {
0x00006848 bne.w 0x6734 | goto label_4;
| }
0x0000684c ldr r3, [sp, 0x14] | r3 = var_14h;
| if (r3 != 0) {
0x0000684e cbz r3, 0x6856 |
| label_28:
0x00006850 mvn sb, 1 | sb = ~1;
0x00006854 b 0x6756 | goto label_3;
| }
0x00006856 mov r3, sb | r3 = sb;
| label_11:
0x00006858 add.w fp, sp, 0x44 |
0x0000685c ldrd r0, r1, [sp, 0x2c] | __asm ("ldrd r0, r1, [arg_2ch]");
0x00006860 mov r2, fp | r2 = fp;
0x00006862 strd r4, r3, [fp] | __asm ("strd r4, r3, [fp]");
0x00006866 bl 0x6280 | r0 = fcn_00006280 (r0, r1, r2);
0x0000686a mov r6, r0 | r6 = r0;
| if (r0 == 0) {
0x0000686c cbz r0, 0x68b0 | goto label_31;
| }
0x0000686e adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x00006870 beq.w 0x69c4 | goto label_32;
| }
0x00006874 ldr r3, [pc, 0x1d0] |
0x00006876 add r3, pc | r3 = 0xd2c2;
| label_12:
0x00006878 ldr r1, [sp, 0x28] | r1 = *(arg_28h);
0x0000687a mov r2, r3 | r2 = r3;
0x0000687c ldr r0, [sp, 0x10] | r0 = var_10h;
0x0000687e bl 0x6544 | fcn_00006544 (r0, r1, r2);
0x00006882 adds r6, 2 | r6 += 2;
| if (r6 != 2) {
0x00006884 bne.w 0x6756 | goto label_3;
| }
| label_15:
0x00006888 ldr r3, [sp, 0xc] | r3 = var_ch;
| label_14:
0x0000688a ldr r2, [pc, 0x1c0] |
0x0000688c movs r4, 2 | r4 = 2;
0x0000688e ldr r1, [sp, 0x28] | r1 = *(arg_28h);
0x00006890 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00006892 add r2, pc | r2 = 0xd2e4;
0x00006894 str r3, [sp] | *(sp) = r3;
0x00006896 bl 0x6544 | fcn_00006544 (r0, r1, r2);
0x0000689a ldr r3, [sp] | r3 = *(sp);
0x0000689c b 0x680a | goto label_5;
| label_18:
0x0000689e ldr r1, [sp, 0x28] | r1 = *(arg_28h);
0x000068a0 add r0, sp, 0x38 | r0 += arg_38h;
0x000068a2 bl 0x5834 | r0 = fcn_00005834 (r0, r1, r2, r3, r4, r5, r6);
0x000068a6 mov sb, r0 | sb = r0;
0x000068a8 b 0x6674 | goto label_6;
0x000068aa ldr fp, [r5, -0x4] | fp = *((r5 - 0x4));
0x000068ae b 0x67a0 | goto label_7;
| label_31:
0x000068b0 ldr r2, [sp, 0x18] | r2 = var_18h;
0x000068b2 ldr r1, [sp, 0x28] | r1 = *(arg_28h);
0x000068b4 ldr r0, [sp, 0x10] | r0 = var_10h;
0x000068b6 bl 0x6544 | fcn_00006544 (r0, r1, r2);
0x000068ba b 0x6756 | goto label_3;
0x000068bc ldr r0, [r5, -0x4] | r0 = *((r5 - 0x4));
0x000068c0 bl 0x3334 | fcn_00003334 (r0);
0x000068c4 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000068c6 mov fp, r0 |
0x000068c8 ldr r1, [r5, -0x4] | r1 = *((r5 - 0x4));
0x000068cc ldr r0, [r3, 8] | r0 = *((r3 + 8));
| do {
0x000068ce blx 0x1ce0 | fcn_00001ce0 ();
0x000068d2 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000068d4 mov r1, fp | r1 = fp;
0x000068d6 str r0, [r3, 8] | *((r3 + 8)) = r0;
0x000068d8 blx 0x1f48 | fcn_00001f48 ();
0x000068dc ldr r3, [sp, 0x10] | r3 = var_10h;
0x000068de str r0, [r3, 8] | *((r3 + 8)) = r0;
0x000068e0 b 0x67a0 | goto label_7;
0x000068e2 ldr r1, [r5] | r1 = *(r5);
0x000068e4 movs r2, 0 | r2 = 0;
0x000068e6 ldr r0, [r5, -0x8] | r0 = *((r5 - 0x8));
0x000068ea bl 0x2f10 | fcn_00002f10 ();
| label_8:
0x000068ee ldr r3, [sp, 0x10] | r3 = var_10h;
0x000068f0 mov fp, r0 |
0x000068f2 ldr r1, [r5, -0x8] | r1 = *((r5 - 0x8));
0x000068f6 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x000068f8 blx 0x1ce0 | fcn_00001ce0 ();
0x000068fc ldr r3, [sp, 0x10] | r3 = var_10h;
0x000068fe ldr r1, [r5] | r1 = *(r5);
0x00006900 str r0, [r3, 8] | *((r3 + 8)) = r0;
0x00006902 b 0x68ce |
| } while (1);
0x00006904 ldr r1, [r5] | r1 = *(r5);
0x00006906 movs r2, 0 | r2 = 0;
0x00006908 ldr r0, [r5, -0x8] | r0 = *((r5 - 0x8));
0x0000690c bl 0x3650 | fcn_00003650 ();
0x00006910 b 0x68ee | goto label_8;
0x00006912 bl 0x3204 | fcn_00003204 ();
0x00006916 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00006918 mov fp, r0 |
0x0000691a ldr r1, [r5] | r1 = *(r5);
0x0000691c ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x0000691e blx 0x1ce0 | fcn_00001ce0 ();
0x00006922 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00006924 str r0, [r3, 8] | *((r3 + 8)) = r0;
0x00006926 ldr r0, [r5] | r0 = *(r5);
0x00006928 blx 0x1da4 | fcn_00001da4 ();
| do {
| label_9:
0x0000692c ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000692e mov r1, fp | r1 = fp;
0x00006930 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x00006932 blx 0x1f48 | fcn_00001f48 ();
0x00006936 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00006938 str r0, [r3, 8] | *((r3 + 8)) = r0;
0x0000693a b 0x67a0 | goto label_7;
0x0000693c ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000693e ldr r1, [r5] | r1 = *(r5);
0x00006940 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x00006942 str r1, [r3, 0x10] | *((r3 + 0x10)) = r1;
0x00006944 blx 0x1ce0 | fcn_00001ce0 ();
0x00006948 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000694a str r0, [r3, 8] | *((r3 + 8)) = r0;
0x0000694c b 0x67a0 | goto label_7;
0x0000694e ldr r1, [r5] | r1 = *(r5);
0x00006950 movs r2, 0 | r2 = 0;
0x00006952 mov r0, r2 | r0 = r2;
| label_10:
0x00006954 bl 0x309c | r0 = fcn_0000309c (r0, r1, r2);
0x00006958 mov fp, r0 |
0x0000695a bl 0x3108 | r0 = fcn_00003108 ();
0x0000695e mov r1, r0 | r1 = r0;
0x00006960 mov r0, fp | r0 = fp;
0x00006962 blx 0x2078 | fprintf_chk ()
0x00006966 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00006968 mov fp, r0 |
0x0000696a ldr r1, [r5] | r1 = *(r5);
0x0000696c ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0000696e str r1, [sp, 0x34] | *(arg_34h) = r1;
0x00006970 blx 0x1ce0 | fcn_00001ce0 ();
0x00006974 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00006976 ldr r1, [sp, 0x34] | r1 = *(arg_34h);
0x00006978 str r0, [r3, 4] | *((r3 + 4)) = r0;
0x0000697a mov r0, r1 | r0 = r1;
0x0000697c blx 0x1ec0 | fcn_00001ec0 ();
0x00006980 b 0x692c |
| } while (1);
0x00006982 movs r3, 0 | r3 = 0;
0x00006984 ldr r0, [r5, -0x4] | r0 = *((r5 - 0x4));
0x00006988 mov r2, r3 | r2 = r3;
0x0000698a mov r1, r3 | r1 = r3;
0x0000698c bl 0x5fe4 | fcn_00005fe4 (r0, r1, r2, r3);
0x00006990 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00006992 mov fp, r0 |
0x00006994 ldr r1, [r5, -0x4] | r1 = *((r5 - 0x4));
0x00006998 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x0000699a blx 0x1ce0 | fcn_00001ce0 ();
0x0000699e ldr r3, [sp, 0x10] | r3 = var_10h;
0x000069a0 str r0, [r3, 8] | *((r3 + 8)) = r0;
0x000069a2 ldr r0, [r5, -0x4] | r0 = *((r5 - 0x4));
0x000069a6 blx 0x1da4 | fcn_00001da4 ();
0x000069aa b 0x692c | goto label_9;
0x000069ac movs r2, 0 | r2 = 0;
0x000069ae ldr r0, [r5] | r0 = *(r5);
0x000069b0 mov r1, r2 | r1 = r2;
0x000069b2 b 0x6954 | goto label_10;
| label_20:
0x000069b4 movw sb, 0x101 | sb = 0x101;
0x000069b8 b 0x6756 | goto label_3;
| label_27:
0x000069ba movs r3, 2 | r3 = 2;
0x000069bc b 0x6858 | goto label_11;
| label_17:
0x000069be ldr r3, [sp, 0xc] | r3 = var_ch;
0x000069c0 movs r4, 0 | r4 = 0;
0x000069c2 b 0x680a | goto label_5;
| label_32:
0x000069c4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000069c6 ldr r2, [sp, 0x24] | r2 = *(arg_24h);
0x000069c8 cmp r3, r2 |
| if (r3 != r2) {
0x000069ca beq 0x69d2 |
0x000069cc mov r0, r3 | r0 = r3;
0x000069ce blx 0x1ec0 | fcn_00001ec0 ();
| }
0x000069d2 ldr r6, [sp, 0x2c] | r6 = *(arg_2ch);
0x000069d4 ldr r0, [r6] | r0 = *(r6);
0x000069d6 blx 0x2068 | fcn_00002068 ();
0x000069da ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x000069dc str r0, [sp, 0x14] | var_14h = r0;
0x000069de str r0, [r1] | *(r1) = r0;
| if (r0 != 0) {
0x000069e0 cbz r0, 0x69fc |
0x000069e2 mov r0, r6 | r0 = r6;
0x000069e4 mov r2, fp | r2 = fp;
0x000069e6 bl 0x6280 | fcn_00006280 (r0, r1, r2);
0x000069ea ldr r3, [sp, 0x14] | r3 = var_14h;
0x000069ec mov r6, r0 | r6 = r0;
0x000069ee str r3, [sp, 0x18] | var_18h = r3;
0x000069f0 b 0x6878 | goto label_12;
| label_16:
0x000069f2 mov r7, sl | r7 = sl;
0x000069f4 movs r4, 1 | r4 = 1;
0x000069f6 b 0x680e | goto label_13;
| label_30:
0x000069f8 blx 0x2090 | fputc (r0, r1);
| }
0x000069fc ldr r2, [pc, 0x50] |
0x000069fe ldr r3, [sp, 0xc] | r3 = var_ch;
0x00006a00 ldr r1, [sp, 0x28] | r1 = *(arg_28h);
0x00006a02 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00006a04 add r2, pc | r2 = 0xd458;
0x00006a06 str r3, [sp] | *(sp) = r3;
0x00006a08 bl 0x6544 | fcn_00006544 (r0, r1, r2);
0x00006a0c ldr r3, [sp, 0x24] | r3 = *(arg_24h);
0x00006a0e str r3, [sp, 0x18] | var_18h = r3;
0x00006a10 ldr r3, [sp] | r3 = *(sp);
0x00006a12 b 0x688a | goto label_14;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libwsevent.so @ 0x44e4 */
| #include <stdint.h>
|
; (fcn) sym.wse_filter_to_subscription () | void wse_filter_to_subscription (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_4h_2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000044e4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000044e8 mov r8, r1 | r8 = r1;
0x000044ea ldr r1, [pc, 0x35c] |
0x000044ec mov r7, r2 | r7 = r2;
0x000044ee movs r3, 0 | r3 = 0;
0x000044f0 sub sp, 0x24 |
0x000044f2 ldr r2, [pc, 0x358] | r2 = *(0x484e);
0x000044f4 mov sb, r0 | sb = r0;
0x000044f6 add r1, pc | r1 = 0x8d44;
0x000044f8 mov r0, r3 | r0 = r3;
0x000044fa ldr r2, [r1, r2] |
0x000044fc ldr r2, [r2] | r2 = *(0x8d44);
0x000044fe str r2, [sp, 0x1c] | var_1ch = r2;
0x00004500 mov.w r2, 0 | r2 = 0;
0x00004504 strd r3, r3, [sp, 0x14] | __asm ("strd r3, r3, [var_14h]");
0x00004508 bl 0x2eec | fcn_00002eec (r0);
0x0000450c ldr.w r4, [sb] | r4 = *(sb);
0x00004510 mov r5, r0 | r5 = r0;
| if (r4 == 0) {
0x00004512 cbz r4, 0x455e | goto label_11;
| }
0x00004514 add r6, sp, 0x18 | r6 += var_18h;
0x00004516 b 0x451c |
| while (r0 != 0) {
0x00004518 ldr r4, [r4, 4] | r4 = *((r4 + 4));
| if (r4 == 0) {
0x0000451a cbz r4, 0x455e | goto label_11;
| }
0x0000451c ldr r0, [r4] | r0 = *(r4);
0x0000451e mov r2, r6 | r2 = r6;
0x00004520 mov r1, r5 | r1 = r5;
0x00004522 bl 0x50f8 | r0 = fcn_000050f8 (r0, r1, r2);
0x00004526 cmp r0, 0 |
0x00004528 bne 0x4518 |
| }
| label_0:
0x0000452a add r0, sp, 0x14 | r0 += var_14h;
0x0000452c ldr r1, [sp, 0x18] | r1 = var_18h;
0x0000452e blx 0x1f54 | fcn_00001f54 ();
0x00004532 mov r0, r5 | r0 = r5;
0x00004534 blx 0x1da4 | fcn_00001da4 ();
| label_7:
0x00004538 mov r0, r7 | r0 = r7;
0x0000453a ldr r1, [sp, 0x14] | r1 = var_14h;
0x0000453c blx 0x1f54 | fcn_00001f54 ();
0x00004540 movs r0, 0 | r0 = 0;
| label_4:
0x00004542 ldr r2, [pc, 0x30c] |
0x00004544 ldr r3, [pc, 0x304] | r3 = *(0x484c);
0x00004546 add r2, pc | r2 = 0x8d9c;
0x00004548 ldr r3, [r2, r3] | r3 = *(0x8d9c);
0x0000454a ldr r2, [r3] | r2 = *(0x8d9c);
0x0000454c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000454e eors r2, r3 | r2 ^= r3;
0x00004550 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00004554 bne.w 0x4842 | goto label_12;
| }
0x00004558 add sp, 0x24 |
0x0000455a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x0000455e ldr.w r4, [sb, 4] | r4 = *((sb + 4));
| if (r4 == 0) {
0x00004562 cbz r4, 0x457c | goto label_13;
| }
0x00004564 add r6, sp, 0x18 | r6 += var_18h;
0x00004566 b 0x456c |
| while (r0 != 0) {
0x00004568 ldr r4, [r4, 4] | r4 = *((r4 + 4));
| if (r4 == 0) {
0x0000456a cbz r4, 0x457c | goto label_13;
| }
0x0000456c ldr r0, [r4] | r0 = *(r4);
0x0000456e mov r2, r6 | r2 = r6;
0x00004570 mov r1, r5 | r1 = r5;
0x00004572 bl 0x4bf0 | r0 = fcn_00004bf0 (r0, r1, r2);
0x00004576 cmp r0, 0 |
0x00004578 bne 0x4568 |
| }
0x0000457a b 0x452a | goto label_0;
| label_13:
0x0000457c bl 0x3108 | r0 = fcn_00003108 ();
0x00004580 mov r1, r0 | r1 = r0;
0x00004582 mov r0, r5 | r0 = r5;
0x00004584 blx 0x2078 | fprintf_chk ()
0x00004588 bl 0x2bcc | r0 = fcn_00002bcc (r0);
0x0000458c mov sb, r0 | sb = r0;
0x0000458e bl 0x319c | r0 = fcn_0000319c ();
0x00004592 mov r1, r0 | r1 = r0;
0x00004594 cmp.w sb, 0 |
| if (sb == 0) {
0x00004598 beq.w 0x476e | goto label_14;
| }
0x0000459c ldr.w r3, [sb] | r3 = *(sb);
| if (r3 != 0) {
0x000045a0 cbz r3, 0x45aa |
0x000045a2 ldr r3, [r3] | r3 = *(r3);
0x000045a4 cmp r0, r3 |
| if (r0 == r3) {
0x000045a6 beq.w 0x4822 | goto label_15;
| }
| }
0x000045aa mov r0, sb | r0 = sb;
0x000045ac blx 0x1ff4 | r0 = event_has_tag_at ();
0x000045b0 cmp r0, 0 |
| if (r0 != 0) {
0x000045b2 bne.w 0x4822 | goto label_15;
| }
0x000045b6 mov r0, r5 | r0 = r5;
0x000045b8 blx 0x1da4 | fcn_00001da4 ();
0x000045bc cmp.w r8, 0 |
| if (r8 == 0) {
0x000045c0 beq.w 0x4764 | goto label_16;
| }
0x000045c4 blx 0x2000 | r0 = subscribe_expression_add_key_not_value ();
0x000045c8 mov r6, r0 | r6 = r0;
0x000045ca bl 0x36f8 | fcn_000036f8 ();
0x000045ce ldr.w r3, [sb] | r3 = *(sb);
0x000045d2 mov r1, r0 | r1 = r0;
| if (r3 != 0) {
0x000045d4 cbz r3, 0x45de |
0x000045d6 ldr r3, [r3] | r3 = *(r3);
0x000045d8 cmp r0, r3 |
| if (r0 == r3) {
0x000045da beq.w 0x4760 | goto label_17;
| }
| }
0x000045de mov r0, sb | r0 = sb;
0x000045e0 blx 0x1ff4 | r0 = event_has_tag_at ();
0x000045e4 cmp r0, 0 |
| if (r0 != 0) {
0x000045e6 bne.w 0x4760 | goto label_17;
| }
| label_5:
0x000045ea bl 0x34e0 | r0 = fcn_000034e0 ();
0x000045ee mov r1, r0 | r1 = r0;
0x000045f0 mov r0, sb | r0 = sb;
0x000045f2 blx 0x2078 | fprintf_chk ()
0x000045f6 bl 0x35f0 | r0 = fcn_000035f0 (r0);
0x000045fa mov r7, r0 | r7 = r0;
0x000045fc cmp r0, 0 |
| if (r0 == 0) {
0x000045fe beq.w 0x4760 | goto label_17;
| }
0x00004602 ldr.w sl, [pc, 0x250] |
0x00004606 ldr.w fp, [pc, 0x250] |
0x0000460a ldr r3, [pc, 0x250] |
0x0000460c add sl, pc | sl = 0x8e66;
0x0000460e add fp, pc | fp = 0x8e6c;
0x00004610 add r3, pc | r3 = 0x8e72;
0x00004612 strd fp, r3, [sp, 8] | __asm ("strd fp, r3, [var_8h]");
| label_3:
0x00004616 ldr r4, [r7] | r4 = *(r7);
0x00004618 bl 0x3108 | r0 = fcn_00003108 ();
0x0000461c mov r1, r0 | r1 = r0;
0x0000461e mov r0, r4 | r0 = r4;
0x00004620 blx 0x2078 | fprintf_chk ()
0x00004624 ldr r4, [r7] | r4 = *(r7);
0x00004626 bl 0x2da0 | r0 = fcn_00002da0 ();
0x0000462a mov r1, r0 | r1 = r0;
0x0000462c mov r0, r4 | r0 = r4;
0x0000462e blx 0x2078 | fprintf_chk ()
0x00004632 bl 0x2f0c | r0 = fcn_00002f0c (r0);
0x00004636 cmp r0, 0 |
| if (r0 == 0) {
0x00004638 beq.w 0x474e | goto label_18;
| }
0x0000463c mov r5, r0 | r5 = r0;
0x0000463e str r7, [sp, 4] | var_4h_2 = r7;
0x00004640 b 0x46ac |
| while (r0 == r3) {
| label_1:
0x00004642 bl 0x2fc0 | r0 = fcn_00002fc0 ();
0x00004646 mov r1, r0 | r1 = r0;
0x00004648 mov r0, r4 | r0 = r4;
0x0000464a blx 0x2078 | fprintf_chk ()
0x0000464e bl 0x30d8 | r0 = fcn_000030d8 (r0);
0x00004652 mov fp, r0 |
0x00004654 bl 0x2fc0 | r0 = fcn_00002fc0 ();
0x00004658 mov r1, r0 | r1 = r0;
0x0000465a mov r0, r4 | r0 = r4;
0x0000465c blx 0x2078 | fprintf_chk ()
0x00004660 bl 0x30dc | r0 = fcn_000030dc (r0);
0x00004664 mov r7, r0 | r7 = r0;
0x00004666 bl 0x2fc0 | r0 = fcn_00002fc0 ();
0x0000466a mov r1, r0 | r1 = r0;
0x0000466c mov r0, r4 | r0 = r4;
0x0000466e blx 0x2078 | fprintf_chk ()
0x00004672 bl 0x30e0 | fcn_000030e0 (r0);
0x00004676 subs.w r3, fp, 0 | r3 -= arg_0h;
0x0000467a mov r4, r0 | r4 = r0;
0x0000467c it ne |
| if (r3 == arg_0h) {
0x0000467e movne r3, 1 | r3 = 1;
| }
0x00004680 cmp r7, 0 |
0x00004682 ite eq |
| if (r7 != 0) {
0x00004684 moveq r1, 0 | r1 = 0;
| }
| if (r7 == 0) {
0x00004686 andne r1, r3, 1 | r1 = r3 & 1;
| }
0x0000468a cmp r1, 0 |
| if (r1 != 0) {
0x0000468c bne 0x4786 | goto label_19;
| }
0x0000468e cmp r7, 0 |
0x00004690 ite ne |
| if (r7 == 0) {
0x00004692 movne r3, 0 | r3 = 0;
| }
| if (r7 != 0) {
0x00004694 andeq r3, r3, 1 | r3 &= 1;
| }
0x00004698 cmp r3, 0 |
| if (r3 != 0) {
0x0000469a bne.w 0x47d6 | goto label_20;
| }
0x0000469e mov r1, r7 | r1 = r7;
0x000046a0 mov r0, r6 | r0 = r6;
0x000046a2 blx 0x1fd0 | snprintf_chk ();
| label_6:
0x000046a6 ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x000046a8 cmp r5, 0 |
| if (r5 == 0) {
0x000046aa beq 0x474c | goto label_21;
| }
| label_2:
0x000046ac ldr r4, [r5] | r4 = *(r5);
0x000046ae bl 0x3108 | r0 = fcn_00003108 ();
0x000046b2 mov r1, r0 | r1 = r0;
0x000046b4 mov r0, r4 | r0 = r4;
0x000046b6 blx 0x2078 | r0 = fprintf_chk ()
0x000046ba mov r4, r0 | r4 = r0;
0x000046bc bl 0x2fc0 | r0 = fcn_00002fc0 ();
0x000046c0 mov r1, r0 | r1 = r0;
| if (r4 == 0) {
0x000046c2 cbz r4, 0x46d8 | goto label_22;
| }
0x000046c4 ldr r3, [r4] | r3 = *(r4);
| if (r3 == 0) {
0x000046c6 cbz r3, 0x46ce | goto label_23;
| }
0x000046c8 ldr r3, [r3] | r3 = *(r3);
0x000046ca cmp r0, r3 |
0x000046cc beq 0x4642 |
| }
| label_23:
0x000046ce mov r0, r4 | r0 = r4;
0x000046d0 blx 0x1ff4 | r0 = event_has_tag_at ();
0x000046d4 cmp r0, 0 |
| if (r0 != 0) {
0x000046d6 bne 0x4642 | goto label_1;
| }
| label_22:
0x000046d8 bl 0x337c | r0 = fcn_0000337c ();
0x000046dc mov r1, r0 | r1 = r0;
0x000046de mov r0, r4 | r0 = r4;
0x000046e0 blx 0x2078 | fprintf_chk ()
0x000046e4 bl 0x337c | r0 = fcn_0000337c ();
0x000046e8 mov r1, r0 | r1 = r0;
0x000046ea mov r0, r4 | r0 = r4;
0x000046ec blx 0x2078 | fprintf_chk ()
0x000046f0 bl 0x3494 | r0 = fcn_00003494 (r0);
0x000046f4 mov fp, r0 |
0x000046f6 bl 0x337c | r0 = fcn_0000337c ();
0x000046fa mov r1, r0 | r1 = r0;
0x000046fc mov r0, r4 | r0 = r4;
0x000046fe blx 0x2078 | fprintf_chk ()
0x00004702 bl 0x3498 | r0 = fcn_00003498 (r0);
0x00004706 mov r7, r0 | r7 = r0;
0x00004708 bl 0x337c | r0 = fcn_0000337c ();
0x0000470c mov r1, r0 | r1 = r0;
0x0000470e mov r0, r4 | r0 = r4;
0x00004710 blx 0x2078 | fprintf_chk ()
0x00004714 bl 0x349c | fcn_0000349c (r0);
0x00004716 mcr2 p1, 6, pc, c2, c11, 5 | __asm ("mcr2 p1, 6, pc, c2, c11, 5");
0x0000471a lsls r0, r0, 0xc | r0 <<= 0xc;
0x0000471c mov r4, r0 | r4 = r0;
0x0000471e it ne |
| if (r0 == r0) {
0x00004720 movne r3, 1 | r3 = 1;
| }
0x00004722 cmp r7, 0 |
0x00004724 ite eq |
| if (r7 != 0) {
0x00004726 moveq r1, 0 | r1 = 0;
| }
| if (r7 == 0) {
0x00004728 andne r1, r3, 1 | r1 = r3 & 1;
| }
0x0000472c cmp r1, 0 |
| if (r1 != 0) {
0x0000472e bne 0x47ae | goto label_24;
| }
0x00004730 cmp r7, 0 |
0x00004732 ite ne |
| if (r7 == 0) {
0x00004734 movne r3, 0 | r3 = 0;
| }
| if (r7 != 0) {
0x00004736 andeq r3, r3, 1 | r3 &= 1;
| }
0x0000473a cmp r3, 0 |
| if (r3 != 0) {
0x0000473c bne 0x47e0 | goto label_25;
| }
0x0000473e mov r1, r7 | r1 = r7;
0x00004740 mov r0, r6 | r0 = r6;
0x00004742 blx 0x21bc | fcn_000021bc ();
0x00004746 ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x00004748 cmp r5, 0 |
| if (r5 != 0) {
0x0000474a bne 0x46ac | goto label_2;
| }
| label_21:
0x0000474c ldr r7, [sp, 4] | r7 = var_4h_2;
| label_18:
0x0000474e ldr r3, [r7, 4] | r3 = *((r7 + 4));
| if (r3 == 0) {
0x00004750 cbz r3, 0x4760 | goto label_17;
| }
0x00004752 mov r0, r6 | r0 = r6;
0x00004754 blx 0x2084 | g_regex_match_simple ();
0x00004758 ldr r7, [r7, 4] | r7 = *((r7 + 4));
0x0000475a cmp r7, 0 |
| if (r7 != 0) {
0x0000475c bne.w 0x4616 | goto label_3;
| }
| label_17:
0x00004760 str.w r6, [r8] | __asm ("str.w r6, [r8]");
| do {
| label_16:
0x00004764 mov r0, sb | r0 = sb;
0x00004766 blx 0x1da4 | fcn_00001da4 ();
0x0000476a movs r0, 1 | r0 = 1;
0x0000476c b 0x4542 | goto label_4;
| label_14:
0x0000476e mov r0, r5 | r0 = r5;
0x00004770 blx 0x1da4 | fcn_00001da4 ();
0x00004774 cmp.w r8, 0 |
0x00004778 beq 0x4764 |
| } while (r8 == 0);
0x0000477a blx 0x2000 | r0 = subscribe_expression_add_key_not_value ();
0x0000477e mov r6, r0 | r6 = r0;
0x00004780 bl 0x36f8 | fcn_000036f8 ();
0x00004784 b 0x45ea | goto label_5;
| label_19:
0x00004786 mov r2, r7 | r2 = r7;
0x00004788 mov r1, fp | r1 = fp;
0x0000478a mov r0, r6 | r0 = r6;
0x0000478c blx 0x2224 | fcn_00002224 ();
0x00004790 cmp r4, 0 |
| if (r4 == 0) {
0x00004792 beq 0x46a6 | goto label_6;
| }
0x00004794 ldr r1, [pc, 0xc8] |
0x00004796 mov r0, r4 | r0 = r4;
0x00004798 add r1, pc | r1 = 0x8ffc;
0x0000479a blx 0x1dc8 | r0 = fcn_00001dc8 ();
| if (r0 != 0) {
0x0000479e cbnz r0, 0x47ea | goto label_26;
| }
0x000047a0 ldr r2, [pc, 0xc0] |
0x000047a2 mov r1, fp | r1 = fp;
0x000047a4 mov r0, r6 | r0 = r6;
0x000047a6 add r2, pc | r2 = 0x900e;
0x000047a8 blx 0x20ec | fcn_000020ec ();
0x000047ac b 0x46a6 | goto label_6;
| label_24:
0x000047ae mov r2, r7 | r2 = r7;
0x000047b0 mov r1, fp | r1 = fp;
0x000047b2 mov r0, r6 | r0 = r6;
0x000047b4 blx 0x2018 | event_get_value_at ();
0x000047b8 cmp r4, 0 |
| if (r4 == 0) {
0x000047ba beq.w 0x46a6 | goto label_6;
| }
0x000047be mov r1, sl | r1 = sl;
0x000047c0 mov r0, r4 | r0 = r4;
0x000047c2 blx 0x1dc8 | r0 = fcn_00001dc8 ();
| if (r0 != 0) {
0x000047c6 cbnz r0, 0x4808 | goto label_27;
| }
0x000047c8 ldr r2, [pc, 0x9c] |
0x000047ca mov r1, fp | r1 = fp;
0x000047cc mov r0, r6 | r0 = r6;
0x000047ce add r2, pc | r2 = 0x903a;
0x000047d0 blx 0x20ec | fcn_000020ec ();
0x000047d4 b 0x46a6 | goto label_6;
| label_20:
0x000047d6 mov r1, fp | r1 = fp;
0x000047d8 mov r0, r6 | r0 = r6;
0x000047da blx 0x1dd4 | fcn_00001dd4 ();
0x000047de b 0x46a6 | goto label_6;
| label_25:
0x000047e0 mov r1, fp | r1 = fp;
0x000047e2 mov r0, r6 | r0 = r6;
0x000047e4 blx 0x1fdc | g_type_check_instance_is_a ();
0x000047e8 b 0x46a6 | goto label_6;
| label_26:
0x000047ea ldr r1, [pc, 0x80] |
0x000047ec mov r0, r4 | r0 = r4;
0x000047ee add r1, pc | r1 = 0x9060;
0x000047f0 blx 0x1dc8 | r0 = fcn_00001dc8 ();
0x000047f4 cmp r0, 0 |
| if (r0 != 0) {
0x000047f6 bne.w 0x46a6 | goto label_6;
| }
0x000047fa ldr r2, [pc, 0x74] |
0x000047fc mov r1, fp | r1 = fp;
0x000047fe mov r0, r6 | r0 = r6;
0x00004800 add r2, pc | r2 = 0x9076;
0x00004802 blx 0x20ec | fcn_000020ec ();
0x00004806 b 0x46a6 | goto label_6;
| label_27:
0x00004808 ldr r1, [sp, 8] | r1 = var_8h;
0x0000480a mov r0, r4 | r0 = r4;
0x0000480c blx 0x1dc8 | r0 = fcn_00001dc8 ();
0x00004810 cmp r0, 0 |
| if (r0 != 0) {
0x00004812 bne.w 0x46a6 | goto label_6;
| }
0x00004816 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00004818 mov r1, fp | r1 = fp;
0x0000481a mov r0, r6 | r0 = r6;
0x0000481c blx 0x20ec | fcn_000020ec ();
0x00004820 b 0x46a6 | goto label_6;
| label_15:
0x00004822 mov r0, sb | r0 = sb;
0x00004824 blx 0x1da4 | fcn_00001da4 ();
0x00004828 blx 0x1d28 | fcn_00001d28 ();
0x0000482c ldr r3, [pc, 0x44] |
0x0000482e mov r1, r0 | r1 = r0;
0x00004830 movs r2, 4 | r2 = 4;
0x00004832 add r0, sp, 0x14 | r0 += var_14h;
0x00004834 add r3, pc | r3 = 0x90ac;
0x00004836 blx 0x1fa8 | fcn_00001fa8 ();
0x0000483a mov r0, r5 | r0 = r5;
0x0000483c blx 0x1da4 | fcn_00001da4 ();
0x00004840 b 0x4538 | goto label_7;
| label_12:
0x00004842 blx 0x2090 | fputc (r0, r1);
0x00004846 nop |
0x00004848 ldr r2, [r5, r3] | r2 = *((r5 + r3));
0x0000484a movs r0, r0 |
0x0000484c lsls r0, r0, 8 | r0 <<= 8;
0x0000484e movs r0, r0 |
0x00004850 ldr r2, [r3, r2] | r2 = *((r3 + r2));
0x00004852 movs r0, r0 |
0x00004854 movs r7, 0xa0 | r7 = 0xa0;
0x00004856 movs r0, r0 |
0x00004858 movs r7, 0xa6 | r7 = 0xa6;
0x0000485a movs r0, r0 |
0x0000485c cmp r0, 0x18 |
0x0000485e movs r0, r0 |
0x00004860 movs r6, 0x14 | r6 = 0x14;
0x00004862 movs r0, r0 |
0x00004864 movs r6, 0x7a | r6 = 0x7a;
0x00004866 movs r0, r0 |
0x00004868 movs r6, 0x52 | r6 = 0x52;
0x0000486a movs r0, r0 |
0x0000486c movs r5, 0xc6 | r5 = 0xc6;
0x0000486e movs r0, r0 |
0x00004870 movs r6, 0x28 | r6 = 0x28;
0x00004872 movs r0, r0 |
0x00004874 movs r5, 0xc0 | r5 = 0xc0;
0x00004876 movs r0, r0 |
0x00004878 ldr r3, [pc, 0xd0] |
0x0000487a push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000487e mov r4, r0 | r4 = r0;
0x00004880 ldr r5, [pc, 0xcc] | r5 = *(0x4950);
0x00004882 sub sp, 0xc |
0x00004884 add r3, pc | r3 = 0x91d4;
0x00004886 mov fp, r1 |
0x00004888 ldr r2, [pc, 0xc8] | r2 = *(0x4954);
0x0000488a ldr r0, [r3, r5] | r0 = *(0x91d4);
0x0000488c str r0, [sp] | *(sp) = r0;
0x0000488e mov r1, r0 | r1 = r0;
0x00004890 ldr r2, [r3, r2] | r2 = *(0x91d4);
0x00004892 mov r0, r2 | r0 = r2;
0x00004894 str r2, [sp, 4] | var_4h = r2;
0x00004896 blx 0x1f18 | fcn_00001f18 ();
0x0000489a ldr r1, [pc, 0xbc] |
0x0000489c mov r6, r0 | r6 = r0;
0x0000489e movs r2, 0 | r2 = 0;
0x000048a0 mov r0, r4 | r0 = r4;
0x000048a2 add r1, pc | r1 = 0x9200;
0x000048a4 blx 0x20e0 | r0 = fcn_000020e0 ();
0x000048a8 mov sl, r0 | sl = r0;
0x000048aa ldr r0, [r0] | r0 = *(r0);
| if (r0 == 0) {
0x000048ac cbz r0, 0x490e | goto label_28;
| }
0x000048ae ldr.w sb, [pc, 0xac] |
0x000048b2 mov r8, sl | r8 = sl;
0x000048b4 add sb, pc | sb = 0x9216;
| label_10:
0x000048b6 movs r2, 0 | r2 = 0;
0x000048b8 mov r1, sb | r1 = sb;
0x000048ba blx 0x20e0 | r0 = fcn_000020e0 ();
0x000048be mov r7, r0 | r7 = r0;
0x000048c0 ldr r0, [r0] | r0 = *(r0);
| if (r0 == 0) {
0x000048c2 cbz r0, 0x4900 | goto label_29;
| }
0x000048c4 mov r5, r7 | r5 = r7;
0x000048c6 b 0x48d2 | goto label_9;
| label_8:
0x000048c8 blx 0x1e1c | fcn_00001e1c ();
| do {
0x000048cc ldr r0, [r5, 4]! | r0 = *((r5 += 4));
| if (r0 == 0) {
0x000048d0 cbz r0, 0x4900 | goto label_29;
| }
| label_9:
0x000048d2 bl 0x4100 | r0 = fcn_00004100 (r0);
0x000048d6 mov r4, r0 | r4 = r0;
0x000048d8 movs r3, 0 | r3 = 0;
0x000048da mov r0, r6 | r0 = r6;
0x000048dc mov r2, r3 | r2 = r3;
0x000048de mov r1, r4 | r1 = r4;
0x000048e0 cmp r4, 0 |
0x000048e2 beq 0x48cc |
| } while (r4 == 0);
0x000048e4 blx 0x1db0 | r0 = fcn_00001db0 ();
0x000048e8 mov r2, r0 | r2 = r0;
0x000048ea mov r1, r4 | r1 = r4;
0x000048ec mov r0, r6 | r0 = r6;
0x000048ee cmp r2, 0 |
| if (r2 == 0) {
0x000048f0 beq 0x48c8 | goto label_8;
| }
0x000048f2 mov r0, r4 | r0 = r4;
0x000048f4 blx 0x1cc8 | fcn_00001cc8 ();
0x000048f8 ldr r0, [r5, 4]! | r0 = *((r5 += 4));
0x000048fc cmp r0, 0 |
| if (r0 != 0) {
0x000048fe bne 0x48d2 | goto label_9;
| }
| label_29:
0x00004900 mov r0, r7 | r0 = r7;
0x00004902 blx 0x2168 | g_sprintf ();
0x00004906 ldr r0, [r8, 4]! | r0 = *((r8 += 4));
0x0000490a cmp r0, 0 |
| if (r0 != 0) {
0x0000490c bne 0x48b6 | goto label_10;
| }
| label_28:
0x0000490e mov r0, sl | r0 = sl;
0x00004910 blx 0x2168 | g_sprintf ();
0x00004914 mov r0, r6 | r0 = r6;
0x00004916 blx 0x1dec | r0 = fcn_00001dec ();
0x0000491a mov r7, r0 | r7 = r0;
| if (r0 == 0) {
0x0000491c cbz r0, 0x4948 | goto label_30;
| }
0x0000491e mov r5, r0 | r5 = r0;
0x00004920 movs r4, 0 | r4 = 0;
| do {
0x00004922 ldr r1, [r5] | r1 = *(r5);
0x00004924 mov r0, r4 | r0 = r4;
0x00004926 blx 0x1edc | fcn_00001edc ();
0x0000492a ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x0000492c mov r4, r0 | r4 = r0;
0x0000492e cmp r5, 0 |
0x00004930 bne 0x4922 |
| } while (r5 != 0);
| do {
0x00004932 mov r0, r7 | r0 = r7;
0x00004934 blx 0x1e28 | fcn_00001e28 ();
0x00004938 mov r0, r6 | r0 = r6;
0x0000493a blx 0x2144 | g_str_has_suffix ();
0x0000493e str.w r4, [fp] | __asm ("str.w r4, [fp]");
0x00004942 add sp, 0xc |
0x00004944 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_30:
0x00004948 mov r4, r0 | r4 = r0;
0x0000494a b 0x4932 |
| } while (1);
| }
[*] Function fprintf used 65 times libwsevent.so