[*] Binary protection state of libwsevent.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function sprintf 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 @ 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 @ 0x4960 */
| #include <stdint.h>
|
; (fcn) fcn.00004960 () | void fcn_00004960 (int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| r1 = arg2;
0x00004960 ldmdbmi r2!, {r0, r1, r3, sb, sl, lr} | __asm ("ldmdbmi r2!, {r0, r1, r3, sb, sl, lr}");
0x00004964 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00004968 movs r2, 0 | r2 = 0;
0x0000496a sub sp, 0xc |
0x0000496c add r1, pc | r1 += pc;
0x0000496e str r3, [sp, 4] | var_4h = r3;
0x00004970 blx 0x20e0 | r0 = fcn_000020e0 ();
0x00004974 mov r3, r0 | r3 = r0;
0x00004976 str r0, [sp] | *(sp) = r0;
0x00004978 ldr r0, [r0] | r0 = *(r0);
0x0000497a cmp r0, 0 |
| if (r0 == 0) {
0x0000497c beq 0x4a28 | goto label_5;
| }
0x0000497e ldr.w sl, [pc, 0xb0] |
0x00004982 mov sb, r3 | sb = r3;
0x00004984 ldr r5, [pc, 0xac] |
0x00004986 movs r7, 0 | r7 = 0;
0x00004988 add sl, pc | sl = 0x93be;
0x0000498a add r5, pc | r5 = 0x93c2;
| label_1:
0x0000498c movs r2, 0 | r2 = 0;
0x0000498e mov r1, sl | r1 = sl;
0x00004990 blx 0x20e0 | r0 = fcn_000020e0 ();
0x00004994 mov r8, r0 | r8 = r0;
0x00004996 ldr r0, [r0] | r0 = *(r0);
0x00004998 cmp r0, 0 |
| if (r0 == 0) {
0x0000499a beq 0x4a24 | goto label_6;
| }
0x0000499c mov r4, r8 | r4 = r8;
0x0000499e movs r6, 0 | r6 = 0;
0x000049a0 b 0x49cc |
| while (r2 != 0) {
0x000049a2 blx 0x1dc8 | r0 = fcn_00001dc8 ();
| if (r0 == 0) {
0x000049a6 cbz r0, 0x49dc | goto label_7;
| }
0x000049a8 mov r1, fp | r1 = fp;
0x000049aa mov r0, r7 | r0 = r7;
0x000049ac cmp.w fp, 0 |
| if (fp == 0) {
0x000049b0 beq 0x4a0e | goto label_8;
| }
0x000049b2 blx 0x1edc | r0 = fcn_00001edc ();
0x000049b6 mov r7, r0 | r7 = r0;
0x000049b8 mov r0, r6 | r0 = r6;
0x000049ba blx 0x1cc8 | fcn_00001cc8 ();
0x000049be mov r0, fp | r0 = fp;
0x000049c0 blx 0x1de0 | r0 = fcn_00001de0 ();
0x000049c4 mov r6, r0 | r6 = r0;
| label_2:
0x000049c6 ldr r0, [r4, 4]! | r0 = *((r4 += 4));
| if (r0 == 0) {
0x000049ca cbz r0, 0x49ea | goto label_3;
| }
| label_0:
0x000049cc bl 0x4100 | fcn_00004100 (r0);
0x000049d0 ldr r1, [r4] | r1 = *(r4);
0x000049d2 mov fp, r0 |
0x000049d4 mov r0, r5 | r0 = r5;
0x000049d6 ldrb r2, [r1] | r2 = *(r1);
0x000049d8 cmp r2, 0 |
0x000049da bne 0x49a2 |
| }
| label_7:
0x000049dc mov r0, fp | r0 = fp;
0x000049de blx 0x1cc8 | fcn_00001cc8 ();
0x000049e2 ldr r0, [r4, 4]! | r0 = *((r4 += 4));
0x000049e6 cmp r0, 0 |
| if (r0 != 0) {
0x000049e8 bne 0x49cc | goto label_0;
| }
| label_3:
0x000049ea mov r0, r6 | r0 = r6;
0x000049ec blx 0x1cc8 | fcn_00001cc8 ();
0x000049f0 mov r0, r8 | r0 = r8;
0x000049f2 blx 0x2168 | g_sprintf ()
0x000049f6 ldr r0, [sb, 4]! | r0 = *((sb += 4));
0x000049fa cmp r0, 0 |
| if (r0 != 0) {
0x000049fc bne 0x498c | goto label_1;
| }
| label_4:
0x000049fe ldr r0, [sp] | r0 = *(sp);
0x00004a00 blx 0x2168 | g_sprintf ()
0x00004a04 ldr r3, [sp, 4] | r3 = var_4h;
0x00004a06 str r7, [r3] | *(r3) = r7;
0x00004a08 add sp, 0xc |
0x00004a0a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x00004a0e mov r0, r6 | r0 = r6;
0x00004a10 cmp r6, 0 |
| if (r6 == 0) {
0x00004a12 beq 0x49c6 | goto label_2;
| }
0x00004a14 blx 0x1de0 | r0 = fcn_00001de0 ();
0x00004a18 mov r1, r0 | r1 = r0;
0x00004a1a mov r0, r7 | r0 = r7;
0x00004a1c blx 0x1edc | r0 = fcn_00001edc ();
0x00004a20 mov r7, r0 | r7 = r0;
0x00004a22 b 0x49c6 | goto label_2;
| label_6:
0x00004a24 mov r6, r0 | r6 = r0;
0x00004a26 b 0x49ea | goto label_3;
| label_5:
0x00004a28 mov r7, r0 | r7 = r0;
0x00004a2a b 0x49fe | goto label_4;
| }
; 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 @ 0x418c */
| #include <stdint.h>
|
; (fcn) sym.wse_filter_add_topic_expression () | void wse_filter_add_topic_expression (int16_t arg_48h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int32_t var_8h_2;
| int16_t var_10h;
| int16_t var_14h;
| int32_t var_14h_2;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000418c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00004190 mov r7, r0 | r7 = r0;
0x00004192 sub sp, 0x24 |
0x00004194 movs r0, 0 | r0 = 0;
0x00004196 mov fp, r1 |
0x00004198 mov r6, r3 | r6 = r3;
0x0000419a ldr r4, [sp, 0x48] | r4 = *(arg_48h);
0x0000419c str r2, [sp] | *(sp) = r2;
0x0000419e blx 0x1e70 | fcn_00001e70 ();
0x000041a2 ldr r1, [pc, 0x1b4] |
0x000041a4 mov r8, r0 | r8 = r0;
0x000041a6 mov r0, r4 | r0 = r4;
0x000041a8 add r1, pc | r1 = 0x8506;
0x000041aa blx 0x1dc8 | r0 = fcn_00001dc8 ();
0x000041ae cmp r0, 0 |
| if (r0 == 0) {
0x000041b0 beq.w 0x434e | goto label_4;
| }
0x000041b4 ldr r1, [pc, 0x1a4] |
0x000041b6 mov r0, r4 | r0 = r4;
0x000041b8 movs r2, 0 | r2 = 0;
0x000041ba add r1, pc | r1 = 0x851a;
0x000041bc blx 0x20e0 | r0 = fcn_000020e0 ();
0x000041c0 ldr r2, [r0] | r2 = *(r0);
0x000041c2 mov r4, r0 | r4 = r0;
0x000041c4 cmp r2, 0 |
| if (r2 == 0) {
0x000041c6 beq.w 0x42f0 | goto label_5;
| }
0x000041ca ldr r3, [pc, 0x194] |
0x000041cc mov r5, r0 | r5 = r0;
0x000041ce ldr.w sl, [pc, 0x194] |
0x000041d2 ldr.w sb, [pc, 0x194] |
0x000041d6 add r3, pc | r3 = 0x853c;
0x000041d8 strd r0, r7, [sp, 0x14] | __asm ("strd r0, r7, [var_14h]");
0x000041dc str r3, [sp, 0x10] | var_10h = r3;
0x000041de add sl, pc | sl = 0x8548;
0x000041e0 ldr r3, [pc, 0x188] |
0x000041e2 add sb, pc | sb = 0x8550;
0x000041e4 str r6, [sp, 0x1c] | var_1ch = r6;
0x000041e6 add r3, pc | r3 = 0x8556;
0x000041e8 str r3, [sp, 4] | var_4h = r3;
| label_0:
0x000041ea ldr r0, [r5] | r0 = *(r5);
0x000041ec movs r2, 0 | r2 = 0;
0x000041ee ldr r1, [sp, 0x10] | r1 = var_10h;
0x000041f0 blx 0x20e0 | r0 = fcn_000020e0 ();
0x000041f4 mov r4, r0 | r4 = r0;
0x000041f6 ldr r0, [r0] | r0 = *(r0);
0x000041f8 cmp r0, 0 |
| if (r0 == 0) {
0x000041fa beq 0x4282 | goto label_6;
| }
0x000041fc mov r7, r4 | r7 = r4;
0x000041fe strd r5, r4, [sp, 8] | __asm ("strd r5, r4, [var_8h]");
| do {
0x00004202 bl 0x4100 | fcn_00004100 (r0);
0x00004206 ldr r5, [r7] | r5 = *(r7);
0x00004208 mov r4, r0 | r4 = r0;
0x0000420a movs r1, 0x3a | r1 = 0x3a;
0x0000420c mov r0, r5 | r0 = r5;
0x0000420e blx 0x1e10 | r0 = fcn_00001e10 ();
0x00004212 mov r6, r0 | r6 = r0;
0x00004214 cmp r0, 0 |
| if (r0 == 0) {
0x00004216 beq 0x42d4 | goto label_7;
| }
0x00004218 blx 0x1f3c | r0 = fcn_00001f3c ();
0x0000421c cmp r0, 1 |
0x0000421e it ls |
| if (r0 > 1) {
0x00004220 movls r5, 0 | r5 = 0;
| }
| if (r0 >= 1) {
0x00004222 bls 0x422c |
0x00004224 adds r0, r6, 1 | r0 = r6 + 1;
0x00004226 blx 0x1de0 | r0 = fcn_00001de0 ();
0x0000422a mov r5, r0 | r5 = r0;
| }
| label_3:
0x0000422c mov r6, r4 | r6 = r4;
| if (r4 != 0) {
0x0000422e cbz r4, 0x4254 |
0x00004230 mov r1, fp | r1 = fp;
0x00004232 mov r0, r4 | r0 = r4;
0x00004234 blx 0x1dc8 | r0 = fcn_00001dc8 ();
| if (r0 != 0) {
0x00004238 cbnz r0, 0x42a6 | goto label_8;
| }
0x0000423a ldr r0, [sp, 4] | r0 = var_4h;
0x0000423c blx 0x1de0 | r0 = fcn_00001de0 ();
0x00004240 mov r6, r0 | r6 = r0;
| if (r6 == 0) {
| label_2:
0x00004242 cbz r6, 0x4254 | goto label_9;
| }
0x00004244 mov r1, r6 | r1 = r6;
0x00004246 mov r0, r8 | r0 = r8;
0x00004248 blx 0x220c | fcn_0000220c ();
0x0000424c mov r1, sl | r1 = sl;
0x0000424e mov r0, r8 | r0 = r8;
0x00004250 blx 0x220c | fcn_0000220c ();
| }
| label_9:
0x00004254 mov r1, r5 | r1 = r5;
0x00004256 mov r0, sb | r0 = sb;
0x00004258 blx 0x1dc8 | r0 = fcn_00001dc8 ();
| if (r0 == 0) {
0x0000425c cbz r0, 0x429a | goto label_10;
| }
| if (r5 != 0) {
0x0000425e cbz r5, 0x4264 |
0x00004260 ldrb r3, [r5] | r3 = *(r5);
| if (r3 != 0) {
0x00004262 cbnz r3, 0x42ba | goto label_11;
| }
| }
| label_1:
0x00004264 mov r0, r4 | r0 = r4;
0x00004266 blx 0x1cc8 | fcn_00001cc8 ();
0x0000426a mov r0, r5 | r0 = r5;
0x0000426c blx 0x1cc8 | fcn_00001cc8 ();
0x00004270 mov r0, r6 | r0 = r6;
0x00004272 blx 0x1cc8 | fcn_00001cc8 ();
0x00004276 ldr r0, [r7, 4]! | r0 = *((r7 += 4));
0x0000427a cmp r0, 0 |
0x0000427c bne 0x4202 |
| } while (r0 != 0);
0x0000427e ldrd r5, r4, [sp, 8] | __asm ("ldrd r5, r4, [var_8h]");
| label_6:
0x00004282 mov r0, r4 | r0 = r4;
0x00004284 blx 0x2168 | g_sprintf ()
0x00004288 ldr r3, [r5, 4]! | r3 = *((r5 += 4));
| if (r3 == 0) {
0x0000428c cbz r3, 0x42ea | goto label_12;
| }
0x0000428e ldr r1, [pc, 0xe0] |
0x00004290 mov r0, r8 | r0 = r8;
0x00004292 add r1, pc | r1 = 0x8608;
0x00004294 blx 0x220c | fcn_0000220c ();
0x00004298 b 0x41ea | goto label_0;
| label_10:
0x0000429a ldr r1, [pc, 0xd8] |
0x0000429c mov r0, r8 | r0 = r8;
0x0000429e add r1, pc | r1 = 0x8618;
0x000042a0 blx 0x220c | fcn_0000220c ();
0x000042a4 b 0x4264 | goto label_1;
| label_8:
0x000042a6 ldr r1, [sp] | r1 = *(sp);
0x000042a8 mov r0, r4 | r0 = r4;
0x000042aa blx 0x1dc8 | r0 = fcn_00001dc8 ();
| if (r0 == 0) {
0x000042ae cbz r0, 0x42de | goto label_13;
| }
0x000042b0 mov r0, r4 | r0 = r4;
0x000042b2 blx 0x1de0 | r0 = fcn_00001de0 ();
0x000042b6 mov r6, r0 | r6 = r0;
0x000042b8 b 0x4242 | goto label_2;
| label_11:
0x000042ba mov r1, r5 | r1 = r5;
0x000042bc mov r0, r8 | r0 = r8;
0x000042be blx 0x220c | fcn_0000220c ();
0x000042c2 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000042c4 cmp r3, 0 |
| if (r3 == 0) {
0x000042c6 beq 0x4264 | goto label_1;
| }
0x000042c8 ldr r1, [pc, 0xac] |
0x000042ca mov r0, r8 | r0 = r8;
0x000042cc add r1, pc | r1 = 0x8648;
0x000042ce blx 0x220c | fcn_0000220c ();
0x000042d2 b 0x4264 | goto label_1;
| label_7:
0x000042d4 mov r0, r5 | r0 = r5;
0x000042d6 blx 0x1de0 | r0 = fcn_00001de0 ();
0x000042da mov r5, r0 | r5 = r0;
0x000042dc b 0x422c | goto label_3;
| label_13:
0x000042de ldr r0, [pc, 0x9c] |
0x000042e0 add r0, pc | r0 = 0x8662;
0x000042e2 blx 0x1de0 | r0 = fcn_00001de0 ();
0x000042e6 mov r6, r0 | r6 = r0;
0x000042e8 b 0x4242 | goto label_2;
| label_12:
0x000042ea ldrd r4, r7, [sp, 0x14] | __asm ("ldrd r4, r7, [var_14h]");
0x000042ee ldr r6, [sp, 0x1c] | r6 = var_1ch;
| label_5:
0x000042f0 mov r0, r4 | r0 = r4;
0x000042f2 blx 0x2168 | g_sprintf ()
| do {
0x000042f6 mov r0, r8 | r0 = r8;
0x000042f8 movs r1, 0 | r1 = 0;
0x000042fa blx 0x1ef4 | r0 = fcn_00001ef4 ();
0x000042fe mov r4, r0 | r4 = r0;
0x00004300 cmp.w fp, 0 |
| if (fp != 0) {
0x00004304 beq 0x4310 |
0x00004306 ldr r0, [pc, 0x78] |
0x00004308 add r0, pc | r0 = 0x868e;
0x0000430a blx 0x1de0 | r0 = fcn_00001de0 ();
0x0000430e mov fp, r0 |
| }
0x00004310 ldr r3, [sp] | r3 = *(sp);
| if (r3 != 0) {
0x00004312 cbz r3, 0x431e |
0x00004314 ldr r0, [pc, 0x6c] |
0x00004316 add r0, pc | r0 = 0x869e;
0x00004318 blx 0x1de0 | fcn_00001de0 ();
0x0000431c str r0, [sp] | *(sp) = r0;
| }
0x0000431e ldr r5, [sp] | r5 = *(sp);
0x00004320 mov r2, r6 | r2 = r6;
0x00004322 mov r3, r4 | r3 = r4;
0x00004324 mov r0, fp | r0 = fp;
0x00004326 mov r1, r5 | r1 = r5;
0x00004328 bl 0x4fb8 | r0 = fcn_00004fb8 (r0, r1, r2, r3);
0x0000432c mov r1, r0 | r1 = r0;
0x0000432e ldr r0, [r7] | r0 = *(r7);
0x00004330 blx 0x1edc | fcn_00001edc ();
0x00004334 str r0, [r7] | *(r7) = r0;
0x00004336 mov r0, fp | r0 = fp;
0x00004338 blx 0x1cc8 | fcn_00001cc8 ();
0x0000433c mov r0, r5 | r0 = r5;
0x0000433e blx 0x1cc8 | fcn_00001cc8 ();
0x00004342 mov r0, r4 | r0 = r4;
0x00004344 add sp, 0x24 |
0x00004346 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000434a b.w 0x1cc4 | void (*0x1cc4)() ();
| label_4:
0x0000434e mov r1, r4 | r1 = r4;
0x00004350 mov r0, r8 | r0 = r8;
0x00004352 blx 0x220c | fcn_0000220c ();
0x00004356 b 0x42f6 |
| } 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 @ 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);
| }
; 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 @ 0x5160 */
| #include <stdint.h>
|
; (fcn) sym.wse_url_params_to_subscription () | void wse_url_params_to_subscription (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00005160 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00005164 mov sl, r2 | sl = r2;
0x00005166 ldr r2, [pc, 0xb4] |
0x00005168 mov fp, r3 |
0x0000516a mov r5, r0 | r5 = r0;
0x0000516c sub sp, 0x1c |
0x0000516e ldr r3, [pc, 0xb0] | r3 = *(0x5222);
0x00005170 movs r6, 0 | r6 = 0;
0x00005172 add r2, pc | r2 = 0xa394;
0x00005174 mov sb, r1 | sb = r1;
0x00005176 ldr r3, [r2, r3] |
0x00005178 ldr r3, [r3] | r3 = *(0xa394);
0x0000517a str r3, [sp, 0x14] | var_14h = r3;
0x0000517c mov.w r3, 0 | r3 = 0;
0x00005180 str r6, [sp, 0x10] | var_10h = r6;
0x00005182 blx 0x1f24 | r0 = fcn_00001f24 ();
0x00005186 mov r4, r0 | r4 = r0;
| if (r5 == 0) {
0x00005188 cbz r5, 0x51c8 | goto label_0;
| }
0x0000518a ldr r1, [pc, 0x98] |
0x0000518c mov r2, r6 | r2 = r6;
0x0000518e mov r0, r5 | r0 = r5;
0x00005190 add r1, pc | r1 = 0xa3ba;
0x00005192 blx 0x20e0 | r0 = fcn_000020e0 ();
0x00005196 ldr r3, [r0] | r3 = *(r0);
| if (r3 == 0) {
0x00005198 cbz r3, 0x51c4 | goto label_1;
| }
0x0000519a ldr.w r8, [pc, 0x8c] |
0x0000519e mov r5, r0 | r5 = r0;
0x000051a0 ldr r7, [pc, 0x88] |
0x000051a2 ldr r6, [pc, 0x8c] |
0x000051a4 add r8, pc | r8 = 0xa3d2;
0x000051a6 str r0, [sp, 0xc] | var_ch = r0;
0x000051a8 add r7, pc | r7 = 0xa3d8;
0x000051aa add r6, pc | r6 = 0xa3e0;
| do {
0x000051ac str r3, [sp] | *(sp) = r3;
0x000051ae mov r2, r7 | r2 = r7;
0x000051b0 mov r3, r8 | r3 = r8;
0x000051b2 mov r1, r6 | r1 = r6;
0x000051b4 mov r0, r4 | r0 = r4;
0x000051b6 blx 0x1d10 | fcn_00001d10 ();
0x000051ba ldr r3, [r5, 4]! | r3 = *((r5 += 4));
0x000051bc subs r7, 4 | r7 -= 4;
0x000051be cmp r3, 0 |
0x000051c0 bne 0x51ac |
| } while (r3 != 0);
0x000051c2 ldr r0, [sp, 0xc] | r0 = var_ch;
| label_1:
0x000051c4 blx 0x2168 | g_sprintf ()
| label_0:
0x000051c8 cmp.w sb, 0 |
| if (sb != 0) {
0x000051cc beq 0x51da |
0x000051ce ldr r1, [pc, 0x64] |
0x000051d0 mov r2, sb | r2 = sb;
0x000051d2 mov r0, r4 | r0 = r4;
0x000051d4 add r1, pc | r1 = 0xa40e;
0x000051d6 blx 0x2180 | g_once_init_leave ();
| }
0x000051da add r2, sp, 0x10 | r2 += var_10h;
0x000051dc mov r1, sl | r1 = sl;
0x000051de mov r0, r4 | r0 = r4;
0x000051e0 blx 0x1d98 | r0 = fcn_00001d98 ();
0x000051e4 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x000051e6 cbz r0, 0x520c | goto label_2;
| }
0x000051e8 movs r5, 1 | r5 = 1;
| do {
0x000051ea mov r0, r4 | r0 = r4;
0x000051ec blx 0x21f0 | fcn_000021f0 ();
0x000051f0 ldr r2, [pc, 0x44] |
0x000051f2 ldr r3, [pc, 0x2c] | r3 = *(0x5222);
0x000051f4 add r2, pc | r2 = 0xa430;
0x000051f6 ldr r3, [r2, r3] | r3 = *(0xa430);
0x000051f8 ldr r2, [r3] | r2 = *(0xa430);
0x000051fa ldr r3, [sp, 0x14] | r3 = var_14h;
0x000051fc eors r2, r3 | r2 ^= r3;
0x000051fe mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00005202 bne 0x5216 | goto label_3;
| }
0x00005204 mov r0, r5 | r0 = r5;
0x00005206 add sp, 0x1c |
0x00005208 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x0000520c ldr r1, [sp, 0x10] | r1 = var_10h;
0x0000520e mov r0, fp | r0 = fp;
0x00005210 blx 0x1f54 | fcn_00001f54 ();
0x00005214 b 0x51ea |
| } while (1);
| label_3:
0x00005216 blx 0x2090 | fputc (r0, r1);
0x0000521a nop |
0x0000521c ldr r4, [pc, 0x1b8] | r4 = *(0x53d8);
0x0000521e movs r0, r0 |
0x00005220 lsls r0, r0, 8 | r0 <<= 8;
0x00005222 movs r0, r0 |
0x00005224 adds r0, r0, 1 | r0++;
0x00005226 movs r0, r0 |
0x00005228 adds r0, r0, 6 | r0 += 6;
0x0000522a movs r0, r0 |
0x0000522c adds r4, r1, 0 | r4 = r1 + 0;
0x0000522e movs r0, r0 |
0x00005230 adds r2, r0, 0 | r2 = r0 + 0;
0x00005232 movs r0, r0 |
0x00005234 adds r4, r3, 1 | r4 = r3 + 1;
0x00005236 movs r0, r0 |
0x00005238 ldr r3, [pc, 0x3b0] | r3 = *(0x55ec);
0x0000523a movs r0, r0 |
0x0000523c movs r0, r0 |
0x0000523e movs r0, r0 |
| }
[*] Function sprintf used 12 times libwsevent.so