[*] Binary protection state of systemd-journald
Full RELRO Canary found NX enabled PIE enabled RPATH No RUNPATH No Symbols
[*] Function sprintf tear down of systemd-journald
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/systemd/systemd-journald @ 0xd840 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0000d840 () | void fcn_0000d840 (uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_80h;
| int16_t var_8ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000d840 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x0000d844 mov r6, r2 | r6 = r2;
0x0000d846 ldr.w r2, [pc, 0x4fc] |
0x0000d84a mov r8, r3 | r8 = r3;
0x0000d84c sub sp, 0x94 |
0x0000d84e ldr.w r3, [pc, 0x4f8] | r3 = *(0xdd4a);
0x0000d852 add r2, pc | r2 = 0x1b59c;
0x0000d854 ldr r3, [r2, r3] |
0x0000d856 ldr r3, [r3] | r3 = *(0x1b59c);
0x0000d858 str r3, [sp, 0x8c] | var_8ch = r3;
0x0000d85a mov.w r3, 0 | r3 = 0;
0x0000d85e cmp r0, 0 |
| if (r0 == 0) {
0x0000d860 beq.w 0xdb1a | goto label_6;
| }
0x0000d864 mov r4, r1 | r4 = r1;
0x0000d866 cmp r1, 0 |
| if (r1 == 0) {
0x0000d868 beq.w 0xdb30 | goto label_7;
| }
0x0000d86c movs r3, 0 | r3 = 0;
0x0000d86e ldrb r7, [r1, r6] | r7 = *((r1 + r6));
0x0000d870 mov r5, r0 | r5 = r0;
0x0000d872 strb r3, [r1, r6] | *((r1 + r6)) = r3;
0x0000d874 mov r0, r1 | r0 = r1;
0x0000d876 blx 0x4568 | varlink_server_attach_event ();
0x0000d87a ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0000d87c mov sb, r0 | sb = r0;
0x0000d87e cmp.w r8, 0 |
| if (r8 == 0) {
0x0000d882 beq 0xd8ba | goto label_8;
| }
0x0000d884 cmp r3, 7 |
| if (r3 == 7) {
0x0000d886 beq 0xd8d4 | goto label_9;
| }
0x0000d888 blx 0x409c | r0 = fcn_0000409c ();
0x0000d88c cmp r0, 3 |
0x0000d88e it le |
| if (r0 > 3) {
0x0000d890 mvnle r0, 0x15 | r0 = ~0x15;
| }
| if (r0 > 3) {
0x0000d894 bgt.w 0xdb46 | goto label_10;
| }
| do {
| label_0:
0x0000d898 ldr.w r2, [pc, 0x4b0] |
0x0000d89c ldr.w r3, [pc, 0x4a8] | r3 = *(0xdd48);
0x0000d8a0 strb r7, [r4, r6] | *((r4 + r6)) = r7;
0x0000d8a2 add r2, pc | r2 = 0x1b5f2;
0x0000d8a4 ldr r3, [r2, r3] | r3 = *(0x1b5f2);
0x0000d8a6 ldr r2, [r3] | r2 = *(0x1b5f2);
0x0000d8a8 ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x0000d8aa eors r2, r3 | r2 ^= r3;
0x0000d8ac mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000d8b0 bne.w 0xdd04 | goto label_11;
| }
0x0000d8b4 add sp, 0x94 |
0x0000d8b6 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_8:
0x0000d8ba cmp r3, 7 |
| if (r3 > 7) {
0x0000d8bc bhi.w 0xdd30 | goto label_12;
| }
| /* switch table (9 cases) at 0xd8c4 */
0x0000d8c0 tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
| label_9:
0x0000d8d4 mov r2, r8 | r2 = r8;
0x0000d8d6 mov r0, r5 | r0 = r5;
0x0000d8d8 mov r1, r4 | r1 = r4;
0x0000d8da bl 0xd424 | fcn_0000d424 (r0, r1, r2);
0x0000d8de b 0xd898 |
| } while (1);
0x0000d8e0 blx 0x458c | r0 = asprintf_chk ()
0x0000d8e4 subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 < r0) {
0x0000d8e8 blt.w 0xdb74 | goto label_13;
| }
0x0000d8ec ldrb.w r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0000d8f0 ite ne |
| if (r8 == r0) {
0x0000d8f2 movne r2, 1 | r2 = 1;
| }
| if (r8 != r0) {
0x0000d8f4 moveq r2, 0 | r2 = 0;
| }
0x0000d8f6 ldr r0, [r5, 0x38] | r0 = *((r5 + 0x38));
0x0000d8f8 bfi r3, r2, 3, 1 | value_0 = BIT_MASK (3, 1);
| value_1 = r2 & value_0;
| value_0 = ~value_0;
| r3 &= value_0;
| r3 |= value_1;
0x0000d8fc strb.w r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x0000d900 movs r3, 7 | r3 = 7;
0x0000d902 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x0000d904 movs r3, 0 | r3 = 0;
0x0000d906 strd r3, r3, [sp, 0x18] | __asm ("strd r3, r3, [var_1ch]");
0x0000d90a cmp r0, 0 |
| if (r0 == 0) {
0x0000d90c beq.w 0xdc86 | goto label_14;
| }
| label_4:
0x0000d910 movw r1, 0x1ed | r1 = 0x1ed;
0x0000d914 blx 0x4604 | raise (r0);
0x0000d916 vadd.f64 d22, d22, d24 | __asm ("vadd.f64 d22, d22, d24");
0x0000d91a add r2, sp, 0x18 | r2 += var_18h;
0x0000d91c add r1, sp, 0x1c | r1 += var_1ch;
0x0000d91e blx 0x3e98 | r0 = fcn_00003e98 ();
0x0000d922 subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 < r0) {
0x0000d926 blt.w 0xdc34 | goto label_5;
| }
0x0000d92a add.w r3, r5, 0x5b | r3 = r5 + 0x5b;
0x0000d92e ldr.w r2, [pc, 0x420] |
0x0000d932 str r3, [sp, 0x10] | var_10h = r3;
0x0000d934 movs r1, 1 | r1 = 1;
0x0000d936 ldrb.w ip, [r5, 0x28] | ip = *((r5 + 0x28));
0x0000d93a ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x0000d93c add r2, pc | r2 = 0x1b692;
0x0000d93e ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000d940 ubfx lr, ip, 3, 1 | lr = (ip >> 3) & ((1 << 1) - 1);
0x0000d944 str.w lr, [sp, 0xc] | __asm ("str.w lr, [var_ch]");
0x0000d948 ubfx lr, ip, 2, 1 | lr = (ip >> 2) & ((1 << 1) - 1);
0x0000d94c str.w lr, [sp, 8] | __asm ("str.w lr, [var_8h]");
0x0000d950 ubfx lr, ip, 1, 1 | lr = (ip >> 1) & ((1 << 1) - 1);
0x0000d954 and.w ip, ip, r1 |
0x0000d958 str.w lr, [sp, 4] | __asm ("str.w lr, [var_4h]");
0x0000d95a b 0xd966 | goto label_15;
0x0000d95c str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x0000d960 blx 0x4084 | fcn_00004084 ();
0x0000d964 ldr r0, [r5, 0x1c] | r0 = *((r5 + 0x1c));
| if (r0 != 0) {
| label_15:
0x0000d966 cbz r0, 0xd98c |
0x0000d968 ldrb r3, [r0] | r3 = *(r0);
| if (r3 == 0) {
0x0000d96a cbz r3, 0xd98c | goto label_16;
| }
0x0000d96c blx 0x4a74 | r0 = fcn_00004a74 ();
0x0000d970 mov r8, r0 | r8 = r0;
0x0000d972 cmp r0, 0 |
| if (r0 == 0) {
0x0000d974 beq.w 0xdc30 | goto label_17;
| }
0x0000d978 ldr r2, [pc, 0x3d8] |
0x0000d97a mov r3, r8 | r3 = r8;
0x0000d97c ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000d97e movs r1, 1 | r1 = 1;
0x0000d980 add r2, pc | r2 = 0x1b6d8;
0x0000d982 blx 0x4084 | fcn_00004084 ();
0x0000d986 mov r0, r8 | r0 = r8;
0x0000d988 blx 0x3e8c | fcn_00003e8c ();
| }
| label_16:
0x0000d98c ldr r0, [r5, 0x20] | r0 = *((r5 + 0x20));
| if (r0 != 0) {
0x0000d98e cbz r0, 0xd9b4 |
0x0000d990 ldrb r3, [r0] | r3 = *(r0);
| if (r3 == 0) {
0x0000d992 cbz r3, 0xd9b4 | goto label_18;
| }
0x0000d994 blx 0x4a74 | r0 = fcn_00004a74 ();
0x0000d998 mov r8, r0 | r8 = r0;
0x0000d99a cmp r0, 0 |
| if (r0 == 0) {
0x0000d99c beq.w 0xdc30 | goto label_17;
| }
0x0000d9a0 ldr r2, [pc, 0x3b4] |
0x0000d9a2 mov r3, r8 | r3 = r8;
0x0000d9a4 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000d9a6 movs r1, 1 | r1 = 1;
0x0000d9a8 add r2, pc | r2 = 0x1b704;
0x0000d9aa blx 0x4084 | r0 = fcn_00004084 ();
0x0000d9ac sbc.w r6, ip, r0, lsl 17 | __asm ("sbc.w r6, ip, r0, lsl 17");
0x0000d9b0 blx 0x3e8c | fcn_00003e8c ();
| }
| label_18:
0x0000d9b4 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000d9b6 blx 0x3f58 | r0 = fcn_00003f58 ();
0x0000d9ba subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 < r0) {
0x0000d9be blt.w 0xdc34 | goto label_5;
| }
0x0000d9c0 strh r1, [r7, 8] | *((r7 + 8)) = r1;
0x0000d9c2 ldr r1, [r5, 0x38] | r1 = *((r5 + 0x38));
0x0000d9c4 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0000d9c6 blx 0x4aa4 | r0 = fcn_00004aa4 ();
0x0000d9ca cmp r0, 0 |
| if (r0 < 0) {
0x0000d9cc blt.w 0xdcf8 | goto label_19;
| }
0x0000d9d0 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0000d9d2 blx 0x3e8c | fcn_00003e8c ();
0x0000d9d6 movs r3, 0 | r3 = 0;
0x0000d9d8 str r3, [sp, 0x18] | var_18h = r3;
0x0000d9da ldrb.w r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0000d9de lsls r2, r3, 0x1b | r2 = r3 << 0x1b;
| if (r2 >= r3) {
0x0000d9e0 bmi 0xda18 |
0x0000d9e2 lsls r3, r3, 0x1a | r3 <<= 0x1a;
| if (r3 < r3) {
0x0000d9e4 bmi 0xda18 | goto label_3;
| }
0x0000d9e6 ldr r2, [r5] | r2 = *(r5);
0x0000d9e8 ldr.w r3, [r2, 0x19c] | r3 = *((r2 + 0x19c));
0x0000d9ec str r3, [r5, 0x48] | *((r5 + 0x48)) = r3;
| if (r3 != 0) {
0x0000d9ee cbz r3, 0xd9f2 |
0x0000d9f0 str r5, [r3, 0x4c] | *((r3 + 0x4c)) = r5;
| }
0x0000d9f2 movs r3, 0 | r3 = 0;
0x0000d9f4 str r3, [r5, 0x4c] | *((r5 + 0x4c)) = r3;
0x0000d9f6 str.w r5, [r2, 0x19c] | __asm ("str.w r5, [r2, 0x19c]");
0x0000d9fa ldrb.w r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0000d9fe orr r3, r3, 0x20 | r3 |= 0x20;
0x0000da02 strb.w r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x0000da06 ldr r3, [r5] | r3 = *(r5);
0x0000da08 ldr r0, [r3, 0x54] | r0 = *((r3 + 0x54));
| if (r0 == 0) {
0x0000da0a cbz r0, 0xda18 | goto label_3;
| }
0x0000da0c movs r1, 1 | r1 = 1;
0x0000da0e blx 0x3f04 | r0 = fcn_00003f04 ();
0x0000da12 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0000da14 blt.w 0xdd08 | goto label_20;
| }
0x0000da16 strh r0, [r7, 0xa] | *((r7 + 0xa)) = r0;
| }
| label_3:
0x0000da18 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000da1a blx 0x4790 | snprintf_chk ();
0x0000da1e ldr r5, [sp, 0x18] | r5 = var_18h;
0x0000da20 cmp r5, 0 |
| if (r5 == 0) {
0x0000da22 beq 0xdb10 | goto label_21;
| }
0x0000da24 mov r0, r5 | r0 = r5;
0x0000da26 blx 0x4a38 | fcn_00004a38 ();
0x0000da2a mov r0, r5 | r0 = r5;
0x0000da2c blx 0x3e8c | fcn_00003e8c ();
0x0000da30 b 0xdb10 | goto label_21;
0x0000da32 blx 0x458c | r0 = asprintf_chk ()
0x0000da36 subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 < r0) {
0x0000da3a blt.w 0xdb8c | goto label_22;
| }
0x0000da3e ldrb.w r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0000da42 ite ne |
| if (r8 == r0) {
0x0000da44 movne r2, 1 | r2 = 1;
| }
| if (r8 != r0) {
0x0000da46 moveq r2, 0 | r2 = 0;
| }
0x0000da48 bfi r3, r2, 2, 1 | value_2 = BIT_MASK (2, 1);
| value_3 = r2 & value_2;
| value_2 = ~value_2;
| r3 &= value_2;
| r3 |= value_3;
0x0000da4c strb.w r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x0000da50 movs r3, 6 | r3 = 6;
0x0000da52 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x0000da54 b 0xdb10 | goto label_21;
0x0000da56 blx 0x458c | r0 = asprintf_chk ()
0x0000da5a subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 < r0) {
0x0000da5e blt.w 0xdbe0 | goto label_23;
| }
0x0000da62 ldrb.w r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0000da66 ite ne |
| if (r8 == r0) {
0x0000da68 movne r2, 1 | r2 = 1;
| }
| if (r8 != r0) {
0x0000da6a moveq r2, 0 | r2 = 0;
| }
0x0000da6c bfi r3, r2, 1, 1 | value_4 = BIT_MASK (1, 1);
| value_5 = r2 & value_4;
| value_4 = ~value_4;
| r3 &= value_4;
| r3 |= value_5;
0x0000da70 strb.w r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x0000da74 movs r3, 5 | r3 = 5;
0x0000da76 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x0000da78 b 0xdb10 | goto label_21;
0x0000da7a blx 0x458c | r0 = asprintf_chk ()
0x0000da7e subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 < r0) {
0x0000da82 blt.w 0xdc08 | goto label_24;
| }
0x0000da86 ldrb.w r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0000da8a ite ne |
| if (r8 == r0) {
0x0000da8c movne r2, 1 | r2 = 1;
| }
| if (r8 != r0) {
0x0000da8e moveq r2, 0 | r2 = 0;
| }
0x0000da90 bfi r3, r2, 0, 1 | value_6 = BIT_MASK (0, 1);
| value_7 = r2 & value_6;
| value_6 = ~value_6;
| r3 &= value_6;
| r3 |= value_7;
0x0000da94 strb.w r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x0000da98 movs r3, 4 | r3 = 4;
0x0000da9a str r3, [r5, 4] | *((r5 + 4)) = r3;
0x0000da9c b 0xdb10 | goto label_21;
0x0000da9e add r1, sp, 0x20 | r1 += var_20h;
0x0000daa0 blx 0x4450 | r0 = fcn_00004450 ();
0x0000daa4 subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 < r0) {
0x0000daa8 blt.w 0xdbb8 | goto label_25;
| }
0x0000daac ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000daae cmp.w r3, 0x3e8 |
| if (r3 >= 0x3e8) {
0x0000dab2 bhs 0xdbb4 | goto label_26;
| }
0x0000dab4 str r3, [r5, 0x24] | *((r5 + 0x24)) = r3;
0x0000dab6 movs r3, 3 | r3 = 3;
0x0000dab8 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x0000daba b 0xdb10 | goto label_21;
0x0000dabc ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
| if (r3 == 0) {
0x0000dabe cbnz r3, 0xdb0c |
0x0000dac0 movs r1, 5 | r1 = 5;
0x0000dac2 blx 0x4024 | r0 = fcn_00004024 ();
| if (r0 == 0) {
0x0000dac6 cbz r0, 0xdb0c | goto label_27;
| }
0x0000dac8 mov r0, sb | r0 = sb;
0x0000daca blx 0x4b58 | fcn_00004b58 ();
0x0000dace str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
| if (r0 != 0) {
0x0000dad0 cbnz r0, 0xdb0c | goto label_27;
| }
0x0000dad2 ldr r1, [pc, 0x288] |
0x0000dad4 movw r2, 0x183 | r2 = 0x183;
0x0000dad8 ldr r3, [pc, 0x284] |
0x0000dada movs r0, 3 | r0 = 3;
0x0000dadc add r1, pc | r1 = 0x1b83e;
0x0000dade add r3, pc | r3 = 0x1b842;
0x0000dae0 adds r1, 7 | r1 += 7;
0x0000dae2 blx 0x4bbc | fcn_00004bbc ();
0x0000dae6 b 0xd898 | goto label_0;
| if (r0 == 0) {
0x0000dae8 cbz r0, 0xdb14 | goto label_28;
| }
0x0000daea ldrb r3, [r0] | r3 = *(r0);
| if (r3 == 0) {
0x0000daec cbz r3, 0xdb14 | goto label_28;
| }
0x0000daee blx 0x4b58 | fcn_00004b58 ();
0x0000daf2 str r0, [r5, 0x1c] | *((r5 + 0x1c)) = r0;
| if (r0 != 0) {
0x0000daf4 cbnz r0, 0xdb14 | goto label_28;
| }
0x0000daf6 ldr r1, [pc, 0x26c] |
0x0000daf8 movw r2, 0x177 | r2 = 0x177;
0x0000dafc ldr r3, [pc, 0x268] |
0x0000dafe movs r0, 3 | r0 = 3;
0x0000db00 add r1, pc | r1 = 0x1b86a;
0x0000db02 add r3, pc | r3 = 0x1b86e;
0x0000db04 adds r1, 7 | r1 += 7;
0x0000db06 blx 0x4bbc | fcn_00004bbc ();
0x0000db0a b 0xd898 | goto label_0;
| }
| label_27:
0x0000db0c movs r3, 2 | r3 = 2;
0x0000db0e str r3, [r5, 4] | *((r5 + 4)) = r3;
| do {
| label_21:
0x0000db10 movs r0, 0 | r0 = 0;
0x0000db12 b 0xd898 | goto label_0;
| label_28:
0x0000db14 movs r3, 1 | r3 = 1;
0x0000db16 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x0000db18 b 0xdb10 |
| } while (1);
| label_6:
0x0000db1a ldr r1, [pc, 0x250] |
0x0000db1c mov.w r2, 0x1cc | r2 = 0x1cc;
0x0000db20 ldr r3, [pc, 0x24c] |
0x0000db22 ldr r0, [pc, 0x250] |
0x0000db24 add r1, pc | r1 = 0x1b896;
0x0000db26 add r3, pc | r3 = 0x1b89a;
0x0000db28 adds r1, 7 | r1 += 7;
0x0000db2a add r0, pc | r0 = 0x1b8a4;
0x0000db2c blx 0x3e4c | fcn_00003e4c ();
| label_7:
0x0000db30 ldr r1, [pc, 0x244] |
0x0000db32 movw r2, 0x1cd | r2 = 0x1cd;
0x0000db36 ldr r3, [pc, 0x244] |
0x0000db38 ldr r0, [pc, 0x244] |
0x0000db3a add r1, pc | r1 = 0x1b8b6;
0x0000db3c add r3, pc | r3 = 0x1b8be;
0x0000db3e adds r1, 7 | r1 += 7;
0x0000db40 add r0, pc | r0 = 0x1b8c4;
0x0000db42 blx 0x3e4c | fcn_00003e4c ();
0x0000db44 invalid |
| label_10:
0x0000db46 ldr r3, [pc, 0x23c] |
0x0000db48 movs r1, 0x16 | r1 = 0x16;
0x0000db4a ldr r2, [pc, 0x23c] |
0x0000db4c movt r1, 0x4000 | r1 = (r1 & 0xFFFF) | 0xNaN0000;
0x0000db50 movs r0, 4 | r0 = 4;
0x0000db52 add r3, pc | r3 = 0x1b8dc;
0x0000db54 str r3, [sp, 4] | var_4h = r3;
0x0000db56 add r2, pc | r2 = 0x1b8e4;
0x0000db58 ldr r3, [pc, 0x230] |
0x0000db5a adds r2, 7 | r2 += 7;
0x0000db5c add r3, pc | r3 = 0x1b8ec;
0x0000db5e str r3, [sp] | *(sp) = r3;
0x0000db60 mov.w r3, 0x16e | r3 = 0x16e;
0x0000db64 blx 0x43cc | r0 = fcn_000043cc ();
0x0000db68 cmp r0, 0 |
| if (r0 < 0) {
0x0000db6a blt.w 0xd898 | goto label_0;
| }
| do {
0x0000db6e mvn r0, 0x55 | r0 = ~0x55;
0x0000db72 b 0xd898 | goto label_0;
| label_13:
0x0000db74 blx 0x409c | r0 = fcn_0000409c ();
0x0000db78 cmp r0, 3 |
| if (r0 > 3) {
0x0000db7a bgt 0xdc66 | goto label_29;
| }
| label_1:
0x0000db7c rsb.w r0, r8, 0 | r0 = r8 - ;
0x0000db80 bic r0, r0, 0x40000000 | r0 = BIT_MASK (r0, 0x40000000);
0x0000db84 rsbs r0, r0, 0 | r0 -= ;
| label_2:
0x0000db86 cmp r0, 0 |
0x0000db88 bge 0xdb6e |
| } while (r0 >= 0);
0x0000db8a b 0xd898 | goto label_0;
| label_22:
0x0000db8c blx 0x409c | r0 = fcn_0000409c ();
0x0000db90 cmp r0, 3 |
| if (r0 <= 3) {
0x0000db92 ble 0xdb7c | goto label_1;
| }
0x0000db94 ldr r3, [pc, 0x1f8] |
0x0000db96 mov r1, r8 | r1 = r8;
0x0000db98 ldr r2, [pc, 0x1f8] |
0x0000db9a movs r0, 4 | r0 = 4;
0x0000db9c add r3, pc | r3 = 0x1b930;
0x0000db9e str r3, [sp, 4] | var_4h = r3;
0x0000dba0 add r2, pc | r2 = 0x1b938;
0x0000dba2 ldr r3, [pc, 0x1f4] |
0x0000dba4 adds r2, 7 | r2 += 7;
0x0000dba6 add r3, pc | r3 = 0x1b944;
0x0000dba8 str r3, [sp] | *(sp) = r3;
0x0000dbaa mov.w r3, 0x1aa | r3 = 0x1aa;
0x0000dbae blx 0x43cc | fcn_000043cc ();
0x0000dbb2 b 0xdb86 | goto label_2;
| label_26:
0x0000dbb4 mvn r8, 0x21 | r8 = ~0x21;
| label_25:
0x0000dbb8 blx 0x409c | r0 = fcn_0000409c ();
0x0000dbbc cmp r0, 3 |
| if (r0 <= 3) {
0x0000dbbe ble 0xdb7c | goto label_1;
| }
0x0000dbc0 ldr r3, [pc, 0x1d8] |
0x0000dbc2 mov r1, r8 | r1 = r8;
0x0000dbc4 ldr r2, [pc, 0x1d8] |
0x0000dbc6 movs r0, 4 | r0 = 4;
0x0000dbc8 add r3, pc | r3 = 0x1b968;
0x0000dbca str r3, [sp, 4] | var_4h = r3;
0x0000dbcc add r2, pc | r2 = 0x1b970;
0x0000dbce ldr r3, [pc, 0x1d4] |
0x0000dbd0 adds r2, 7 | r2 += 7;
0x0000dbd2 add r3, pc | r3 = 0x1b97c;
0x0000dbd4 str r3, [sp] | *(sp) = r3;
0x0000dbd6 mov.w r3, 0x18e | r3 = 0x18e;
0x0000dbda blx 0x43cc | fcn_000043cc ();
0x0000dbde b 0xdb86 | goto label_2;
| label_23:
0x0000dbe0 blx 0x409c | r0 = fcn_0000409c ();
0x0000dbe4 cmp r0, 3 |
| if (r0 <= 3) {
0x0000dbe6 ble 0xdb7c | goto label_1;
| }
0x0000dbe8 ldr r3, [pc, 0x1bc] |
0x0000dbea mov r1, r8 | r1 = r8;
0x0000dbec ldr r2, [pc, 0x1bc] |
0x0000dbee movs r0, 4 | r0 = 4;
0x0000dbf0 add r3, pc | r3 = 0x1b99c;
0x0000dbf2 str r3, [sp, 4] | var_4h = r3;
0x0000dbf4 add r2, pc | r2 = 0x1b9a4;
0x0000dbf6 ldr r3, [pc, 0x1b8] |
0x0000dbf8 adds r2, 7 | r2 += 7;
0x0000dbfa add r3, pc | r3 = 0x1b9b0;
0x0000dbfc str r3, [sp] | *(sp) = r3;
0x0000dbfe movw r3, 0x1a1 | r3 = 0x1a1;
0x0000dc02 blx 0x43cc | fcn_000043cc ();
0x0000dc06 b 0xdb86 | goto label_2;
| label_24:
0x0000dc08 blx 0x409c | r0 = fcn_0000409c ();
0x0000dc0c cmp r0, 3 |
| if (r0 <= 3) {
0x0000dc0e ble 0xdb7c | goto label_1;
| }
0x0000dc10 ldr r3, [pc, 0x1a0] |
0x0000dc12 mov r1, r8 | r1 = r8;
0x0000dc14 ldr r2, [pc, 0x1a0] |
0x0000dc16 movs r0, 4 | r0 = 4;
0x0000dc18 add r3, pc | r3 = 0x1b9d0;
0x0000dc1a str r3, [sp, 4] | var_4h = r3;
0x0000dc1c add r2, pc | r2 = 0x1b9d8;
0x0000dc1e ldr r3, [pc, 0x19c] |
0x0000dc20 adds r2, 7 | r2 += 7;
0x0000dc22 add r3, pc | r3 = 0x1b9e4;
0x0000dc24 str r3, [sp] | *(sp) = r3;
0x0000dc26 mov.w r3, 0x198 | r3 = 0x198;
0x0000dc2a blx 0x43cc | fcn_000043cc ();
0x0000dc2e b 0xdb86 | goto label_2;
| label_17:
0x0000dc30 mvn r8, 0xb | r8 = ~0xb;
| label_5:
0x0000dc34 ldr r0, [r5, 0x38] | r0 = *((r5 + 0x38));
0x0000dc36 blx 0x4268 | empty_or_root ();
0x0000dc3a blx 0x409c | r0 = fcn_0000409c ();
0x0000dc3e cmp r0, 2 |
| if (r0 <= 2) {
0x0000dc40 ble.w 0xda18 | goto label_3;
| }
0x0000dc44 ldr r3, [r5, 0x38] | r3 = *((r5 + 0x38));
0x0000dc46 mov r1, r8 | r1 = r8;
0x0000dc48 ldr r2, [pc, 0x174] |
0x0000dc4a movs r0, 3 | r0 = 3;
0x0000dc4c str r3, [sp, 8] | var_8h = r3;
0x0000dc4e ldr r3, [pc, 0x174] |
0x0000dc50 add r2, pc | r2 = 0x1ba14;
0x0000dc52 adds r2, 7 | r2 += 7;
0x0000dc54 add r3, pc | r3 = 0x1ba1e;
0x0000dc56 str r3, [sp, 4] | var_4h = r3;
0x0000dc58 ldr r3, [pc, 0x16c] |
0x0000dc5a add r3, pc | r3 = 0x1ba26;
0x0000dc5c str r3, [sp] | *(sp) = r3;
0x0000dc5e movs r3, 0xf2 | r3 = 0xf2;
0x0000dc60 blx 0x43cc | fcn_000043cc ();
0x0000dc64 b 0xda18 | goto label_3;
| label_29:
0x0000dc66 ldr r3, [pc, 0x164] |
0x0000dc68 mov r1, r8 | r1 = r8;
0x0000dc6a ldr r2, [pc, 0x164] |
0x0000dc6c movs r0, 4 | r0 = 4;
0x0000dc6e add r3, pc | r3 = 0x1ba40;
0x0000dc70 str r3, [sp, 4] | var_4h = r3;
0x0000dc72 add r2, pc | r2 = 0x1ba48;
0x0000dc74 ldr r3, [pc, 0x15c] |
0x0000dc76 adds r2, 7 | r2 += 7;
0x0000dc78 add r3, pc | r3 = 0x1ba50;
0x0000dc7a str r3, [sp] | *(sp) = r3;
0x0000dc7c movw r3, 0x1b3 | r3 = 0x1b3;
0x0000dc80 blx 0x43cc | fcn_000043cc ();
0x0000dc84 b 0xdb86 | goto label_2;
| label_14:
0x0000dc86 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x0000dc88 add r1, sp, 0x20 | r1 += var_20h;
0x0000dc8a blx 0x4990 | r0 = fcn_00004990 ();
0x0000dc8e cmp r0, 0 |
| if (r0 < 0) {
0x0000dc90 blt 0xdccc | goto label_30;
| }
0x0000dc92 mov r0, r5 | r0 = r5;
0x0000dc94 ldr r2, [sp, 0x80] | r2 = var_80h;
0x0000dc96 ldr r3, [r0], 0x38 | r3 = *(r0);
| r0 += 0x38;
0x0000dc9a movs r1, 1 | r1 = 1;
0x0000dc9c ldr.w r3, [r3, 0x250] | r3 = *((r3 + 0x250));
0x0000dca0 str r2, [sp, 4] | var_4h = r2;
0x0000dca2 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0000dca4 str r2, [sp] | *(sp) = r2;
0x0000dca6 ldr r2, [pc, 0x130] |
0x0000dca8 add r2, pc | r2 = 0x1ba86;
0x0000dcaa blx 0x45a4 | r0 = getpid_cached ();
0x0000dcae cmp r0, 0 |
0x0000dcb0 it ge |
| if (r0 >= 0) {
0x0000dcb2 ldrge r0, [r5, 0x38] | r0 = *((r5 + 0x38));
| goto label_31;
| }
| if (r0 >= 0) {
| label_31:
0x0000dcb4 bge.w 0xd910 | goto label_4;
| }
0x0000dcb8 ldr r1, [pc, 0x120] |
0x0000dcba movs r2, 0xa8 | r2 = 0xa8;
0x0000dcbc ldr r3, [pc, 0x120] |
0x0000dcbe movs r0, 3 | r0 = 3;
0x0000dcc0 add r1, pc | r1 = 0x1baa0;
0x0000dcc2 add r3, pc | r3 = 0x1baa6;
0x0000dcc4 adds r1, 7 | r1 += 7;
0x0000dcc6 blx 0x4bbc | fcn_00004bbc ();
0x0000dcca b 0xda18 | goto label_3;
| label_30:
0x0000dccc blx 0x409c | r0 = fcn_0000409c ();
0x0000dcd0 cmp r0, 3 |
| if (r0 <= 3) {
0x0000dcd2 ble.w 0xda18 | goto label_3;
| }
0x0000dcd6 blx 0x4918 | fcn_00004918 ();
0x0000dcda ldr r3, [pc, 0x108] |
0x0000dcdc ldr r2, [pc, 0x108] |
0x0000dcde add r3, pc | r3 = 0x1bac8;
0x0000dce0 str r3, [sp, 4] | var_4h = r3;
0x0000dce2 add r2, pc | r2 = 0x1bace;
0x0000dce4 ldr r3, [pc, 0x104] |
0x0000dce6 adds r2, 7 | r2 += 7;
0x0000dce8 add r3, pc | r3 = 0x1bad8;
0x0000dcea str r3, [sp] | *(sp) = r3;
0x0000dcec movs r3, 0xa3 | r3 = 0xa3;
0x0000dcee ldr r1, [r0] | r1 = *(r0);
0x0000dcf0 movs r0, 4 | r0 = 4;
0x0000dcf2 blx 0x43cc | fcn_000043cc ();
0x0000dcf6 b 0xda18 | goto label_3;
| label_19:
0x0000dcf8 blx 0x4918 | r0 = fcn_00004918 ();
0x0000dcfc ldr r0, [r0] | r0 = *(r0);
0x0000dcfe rsb.w r8, r0, 0 | r8 = r0 - ;
0x0000dd02 b 0xdc34 | goto label_5;
| label_11:
0x0000dd04 blx 0x4474 | fcn_00004474 ();
| label_20:
0x0000dd08 blx 0x409c | r0 = fcn_0000409c ();
0x0000dd0c cmp r0, 3 |
| if (r0 <= 3) {
0x0000dd0e ble.w 0xda18 | goto label_3;
| }
0x0000dd12 ldr r3, [pc, 0xdc] |
0x0000dd14 mov r1, r5 | r1 = r5;
0x0000dd16 movs r0, 4 | r0 = 4;
0x0000dd18 add r3, pc | r3 = 0x1bb0e;
0x0000dd1a adds r2, r3, 7 | r2 = r3 + 7;
0x0000dd1c ldr r3, [pc, 0xd4] |
0x0000dd1e add r3, pc | r3 = 0x1bb16;
0x0000dd20 str r3, [sp, 4] | var_4h = r3;
0x0000dd22 ldr r3, [pc, 0xd4] |
0x0000dd24 add r3, pc | r3 = 0x1bb22;
0x0000dd26 str r3, [sp] | *(sp) = r3;
0x0000dd28 movs r3, 0xea | r3 = 0xea;
0x0000dd2a blx 0x43cc | fcn_000043cc ();
0x0000dd2e b 0xda18 | goto label_3;
| label_12:
0x0000dd30 ldr r0, [pc, 0xc8] |
0x0000dd32 mov.w r1, 0x1c0 | r1 = 0x1c0;
0x0000dd36 ldr r2, [pc, 0xc8] |
0x0000dd38 add r0, pc | r0 = 0x1bb38;
0x0000dd3a add r2, pc | r2 = 0x1bb40;
0x0000dd3c adds r0, 7 | r0 += 7;
0x0000dd3e blx 0x4960 | fcn_00004960 ();
0x0000dd42 nop |
0x0000dd44 invalid |
0x00016548 ldr r1, [r5, 0x44] | r1 = *((r5 + 0x44));
0x0001654a movs r0, 0x65 | r0 = 0x65;
0x0001654c strb r5, [r4, 0xc] | *((r4 + 0xc)) = r5;
0x0001654e str r0, [r4, 0x60] | *((r4 + 0x60)) = r0;
0x00016550 strb r7, [r5, 9] | *((r5 + 9)) = r7;
0x00016552 strb r0, [r4, 8] | *((r4 + 8)) = r0;
0x00016554 strb r7, [r5, 0x11] | *((r5 + 0x11)) = r7;
0x00016556 strb r1, [r4, 0x11] | *((r4 + 0x11)) = r1;
0x00016558 ldr r1, [r5, 0x74] | r1 = *((r5 + 0x74));
0x0001655a cmp r4, 0x6e |
0x0001655c strb r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x0001655e ldrb r2, [r6, 5] | r2 = *((r6 + 5));
0x00016560 ldr r1, [r5, 0x64] | r1 = *((r5 + 0x64));
0x00016562 movs r0, 0x67 | r0 = 0x67;
0x00016564 ldr r4, [r6, 0x74] | r4 = *((r6 + 0x74));
0x00016566 ldr r0, [r4, 0x50] | r0 = *((r4 + 0x50));
0x00016568 strb r7, [r5, 0x19] | *((r5 + 0x19)) = r7;
0x0001656a movs r0, 0x65 | r0 = 0x65;
0x0001656c strb r1, [r5, 0x11] | *((r5 + 0x11)) = r1;
0x0001656e ldr r0, [r4, 0x70] | r0 = *((r4 + 0x70));
0x00016570 strb r5, [r6, 0x11] | *((r6 + 0x11)) = r5;
0x00016572 ldr r0, [r4, 0x70] | r0 = *((r4 + 0x70));
0x00016574 movs r0, 0x66 | r0 = 0x66;
0x00016576 ldr r4, [r6, 4] | r4 = *((r6 + 4));
0x00016578 movs r0, 0x65 | r0 = 0x65;
0x0001657a str r7, [r6, 0x14] | *((r6 + 0x14)) = r7;
0x0001657c subs r2, 0x79 | r2 -= 0x79;
0x0001657e movs r5, 0x20 | r5 = 0x20;
0x00016580 lsls r5, r5, 1 | r5 <<= 1;
0x00016582 movs r0, r0 |
0x00016584 str r6, [r0, 0x14] | *((r0 + 0x14)) = r6;
0x00016586 ldr r1, [r5, 0x44] | r1 = *((r5 + 0x44));
0x00016588 str r5, [r4, 0x44] | *((r4 + 0x44)) = r5;
0x0001658a strb r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x0001658c movs r0, 0x6f | r0 = 0x6f;
0x0001658e ldr r5, [r5, 0x74] | r5 = *((r5 + 0x74));
0x00016590 str r6, [r6, 0x54] | *((r6 + 0x54)) = r6;
0x00016592 movs r5, 0x20 | r5 = 0x20;
0x00016594 movs r0, 0x73 | r0 = 0x73;
0x00016596 strb r7, [r5, 0x15] | *((r5 + 0x15)) = r7;
0x00016598 movs r0, 0x74 | r0 = 0x74;
0x0001659a str r7, [r5, 0x64] | *((r5 + 0x64)) = r7;
0x0001659c strb r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x0001659e str r0, [r5, 0x54] | *((r5 + 0x54)) = r0;
0x000165a0 strb r0, [r4, 0x1c] | *((r4 + 0x1c)) = r0;
0x000165a2 ldrb r1, [r4, 5] | r1 = *((r4 + 5));
0x000165a4 movs r0, 0x2c | r0 = 0x2c;
0x000165a6 str r1, [r5, 0x74] | *((r5 + 0x74)) = r1;
0x000165a8 ldr r6, [r5, 0x74] | r6 = *((r5 + 0x74));
0x000165aa ldr r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x000165ac str r6, [r5, 0x74] | *((r5 + 0x74)) = r6;
0x000165ae movs r0, 0x3a | r0 = 0x3a;
0x000165b0 ldr r5, [r4, 0x50] | r5 = *((r4 + 0x50));
0x000165b2 movs r0, r0 |
0x000165b4 strb r3, [r2, 0x15] | *((r2 + 0x15)) = r3;
0x000165b6 str r3, [r4, 0x34] | *((r4 + 0x34)) = r3;
0x000165b8 strb r5, [r4, 0xd] | *((r4 + 0xd)) = r5;
0x000165ba str r3, [r6, 0x64] | *((r6 + 0x64)) = r3;
0x000165bc ldr r5, [r6, 0x44] | r5 = *((r6 + 0x44));
0x000165be ldrb r4, [r5, 5] | r4 = *((r5 + 5));
0x000165c0 ldr r0, [r4, 0x50] | r0 = *((r4 + 0x50));
0x000165c2 strb r7, [r5, 0x19] | *((r5 + 0x19)) = r7;
0x000165c4 str r5, [r4, 0x44] | *((r4 + 0x44)) = r5;
0x000165c6 movs r5, 0x20 | r5 = 0x20;
0x000165c8 movs r0, 0x73 | r0 = 0x73;
0x000165ca strb r7, [r5, 0x15] | *((r5 + 0x15)) = r7;
0x000165cc movs r0, 0x74 | r0 = 0x74;
0x000165ce str r7, [r5, 0x64] | *((r5 + 0x64)) = r7;
0x000165d0 strb r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x000165d2 str r0, [r5, 0x54] | *((r5 + 0x54)) = r0;
0x000165d4 strb r0, [r4, 0x1c] | *((r4 + 0x1c)) = r0;
0x000165d6 ldrb r1, [r4, 5] | r1 = *((r4 + 5));
0x000165d8 movs r6, r5 | r6 = r5;
0x000165da movs r0, r0 |
0x000165dc str r6, [r0, 0x14] | *((r0 + 0x14)) = r6;
0x000165de ldr r1, [r5, 0x44] | r1 = *((r5 + 0x44));
0x000165e0 str r5, [r4, 0x44] | *((r4 + 0x44)) = r5;
0x000165e2 strb r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x000165e4 movs r0, 0x6f | r0 = 0x6f;
0x000165e6 strb r1, [r4, 9] | *((r4 + 9)) = r1;
0x000165e8 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000165ea strb r1, [r5, 0x19] | *((r5 + 0x19)) = r1;
0x000165ec movs r0, 0x65 | r0 = 0x65;
0x000165ee ldr r2, [r5, 0x74] | r2 = *((r5 + 0x74));
0x000165f0 strb r5, [r6, 9] | *((r6 + 9)) = r5;
0x000165f2 str r6, [r5, 0x14] | *((r5 + 0x14)) = r6;
0x000165f4 movs r0, 0x6c | r0 = 0x6c;
0x000165f6 ldr r6, [r4, 0x14] | r6 = *((r4 + 0x14));
0x000165f8 str r4, [r5, 0x54] | *((r5 + 0x54)) = r4;
0x000165fa movs r7, 0x20 | r7 = 0x20;
0x000165fc strb r5, [r4, 0xc] | *((r4 + 0xc)) = r5;
0x000165fe cmp r4, 0x27 |
0x00016600 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00016602 ldr r7, [r4, 0x64] | r7 = *((r4 + 0x64));
0x00016604 strb r7, [r5, 9] | *((r5 + 9)) = r7;
0x00016606 ldr r1, [r5, 0x64] | r1 = *((r5 + 0x64));
0x00016608 subs r2, 0x67 | r2 -= 0x67;
0x0001660a movs r5, 0x20 | r5 = 0x20;
0x0001660c lsls r5, r5, 1 | r5 <<= 1;
0x0001660e movs r0, r0 |
0x00016610 str r6, [r0, 0x14] | *((r0 + 0x14)) = r6;
0x00016612 ldr r1, [r5, 0x44] | r1 = *((r5 + 0x44));
0x00016614 str r5, [r4, 0x44] | *((r4 + 0x44)) = r5;
0x00016616 strb r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x00016618 movs r0, 0x6f | r0 = 0x6f;
0x0001661a ldrb r3, [r6, 5] | r3 = *((r6 + 5));
0x0001661c str r6, [r5, 0x34] | *((r5 + 0x34)) = r6;
0x0001661e strb r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x00016620 strb r1, [r7, 0xd] | *((r7 + 0xd)) = r1;
0x00016622 str r4, [r6, 0x54] | *((r6 + 0x54)) = r4;
0x00016624 movs r0, 0x6d | r0 = 0x6d;
0x00016626 ldr r2, [r5, 0x74] | r2 = *((r5 + 0x74));
0x00016628 strb r5, [r6, 9] | *((r6 + 9)) = r5;
0x0001662a str r6, [r5, 0x14] | *((r5 + 0x14)) = r6;
0x0001662c cmp r4, 0x6c |
0x0001662e ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00016630 ldr r7, [r4, 0x64] | r7 = *((r4 + 0x64));
0x00016632 strb r7, [r5, 9] | *((r5 + 9)) = r7;
0x00016634 ldr r1, [r5, 0x64] | r1 = *((r5 + 0x64));
0x00016636 subs r2, 0x67 | r2 -= 0x67;
0x00016638 movs r5, 0x20 | r5 = 0x20;
0x0001663a lsls r5, r5, 1 | r5 <<= 1;
0x0001663c str r6, [r0, 0x14] | *((r0 + 0x14)) = r6;
0x0001663e ldr r1, [r5, 0x44] | r1 = *((r5 + 0x44));
0x00016640 str r5, [r4, 0x44] | *((r4 + 0x44)) = r5;
0x00016642 strb r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x00016644 movs r0, 0x6f | r0 = 0x6f;
0x00016646 ldrb r3, [r6, 5] | r3 = *((r6 + 5));
0x00016648 str r6, [r5, 0x34] | *((r5 + 0x34)) = r6;
0x0001664a strb r0, [r4, 0x14] | *((r4 + 0x14)) = r0;
0x0001664c str r3, [r6, 0x54] | *((r6 + 0x54)) = r3;
0x0001664e movs r0, 0x72 | r0 = 0x72;
0x00016650 ldr r2, [r5, 0x74] | r2 = *((r5 + 0x74));
0x00016652 strb r5, [r6, 9] | *((r6 + 9)) = r5;
0x00016654 str r6, [r5, 0x14] | *((r5 + 0x14)) = r6;
0x00016656 cmp r4, 0x6c |
0x00016658 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0001665a ldr r7, [r4, 0x64] | r7 = *((r4 + 0x64));
0x0001665c strb r7, [r5, 9] | *((r5 + 9)) = r7;
0x0001665e ldr r1, [r5, 0x64] | r1 = *((r5 + 0x64));
0x00016660 subs r2, 0x67 | r2 -= 0x67;
0x00016662 movs r5, 0x20 | r5 = 0x20;
0x00016664 lsls r5, r5, 1 | r5 <<= 1;
0x00016666 movs r0, r0 |
0x00016668 str r6, [r0, 0x14] | *((r0 + 0x14)) = r6;
0x0001666a ldr r1, [r5, 0x44] | r1 = *((r5 + 0x44));
0x0001666c str r5, [r4, 0x44] | *((r4 + 0x44)) = r5;
0x0001666e strb r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x00016670 movs r0, 0x6f | r0 = 0x6f;
0x00016672 ldr r4, [r4, 0x14] | r4 = *((r4 + 0x14));
0x00016674 str r3, [r6, 0x14] | *((r6 + 0x14)) = r3;
0x00016676 ldr r2, [r4, 0x44] | r2 = *((r4 + 0x44));
0x00016678 movs r0, 0x65 | r0 = 0x65;
0x0001667a ldrb r3, [r6, 5] | r3 = *((r6 + 5));
0x0001667c str r6, [r5, 0x34] | *((r5 + 0x34)) = r6;
0x0001667e strb r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x00016680 ldr r1, [r5, 0x54] | r1 = *((r5 + 0x54));
0x00016682 strb r5, [r4, 9] | *((r4 + 9)) = r5;
0x00016684 strb r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x00016686 strb r7, [r5, 0x15] | *((r5 + 0x15)) = r7;
0x00016688 str r2, [r6, 0x34] | *((r6 + 0x34)) = r2;
0x0001668a subs r2, 0x65 | r2 -= 0x65;
0x0001668c movs r5, 0x20 | r5 = 0x20;
0x0001668e lsls r5, r5, 1 | r5 <<= 1;
0x00016690 strb r7, [r5, 0xc] | *((r5 + 0xc)) = r7;
0x00016692 ldr r1, [r7, 0x64] | r1 = *((r7 + 0x64));
0x00016694 str r3, [r4, 0x54] | *((r4 + 0x54)) = r3;
0x00016696 lsls r4, r4, 1 | r4 <<= 1;
0x00016698 str r6, [r0, 0x14] | *((r0 + 0x14)) = r6;
0x0001669a ldr r1, [r5, 0x44] | r1 = *((r5 + 0x44));
0x0001669c str r5, [r4, 0x44] | *((r4 + 0x44)) = r5;
0x0001669e strb r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x000166a0 movs r0, 0x6f | r0 = 0x6f;
0x000166a2 strb r7, [r6, 9] | *((r6 + 9)) = r7;
0x000166a4 strb r1, [r5, 0x11] | *((r5 + 0x11)) = r1;
0x000166a6 movs r0, 0x65 | r0 = 0x65;
0x000166a8 strb r5, [r4, 0xc] | *((r4 + 0xc)) = r5;
0x000166aa movs r0, 0x2c | r0 = 0x2c;
0x000166ac str r1, [r5, 0x74] | *((r5 + 0x74)) = r1;
0x000166ae ldr r6, [r5, 0x74] | r6 = *((r5 + 0x74));
0x000166b0 ldr r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x000166b2 str r6, [r5, 0x74] | *((r5 + 0x74)) = r6;
0x000166b4 movs r0, 0x3a | r0 = 0x3a;
0x000166b6 ldr r5, [r4, 0x50] | r5 = *((r4 + 0x50));
0x000166b8 movs r0, r0 |
0x000166ba movs r0, r0 |
0x000166bc movs r0, 0x73 | r0 = 0x73;
0x000166be movs r0, 0x3d | r0 = 0x3d;
0x000166c0 str r6, [r6, 0x14] | *((r6 + 0x14)) = r6;
0x000166c2 ldr r2, [r6, 0x44] | r2 = *((r6 + 0x44));
0x000166c4 ldr r1, [r5, 0x64] | r1 = *((r5 + 0x64));
0x000166c6 ldrsh r3, [r5, r5] | r3 = *((r5 + r5));
0x000166c8 str r7, [r4, 0x54] | *((r4 + 0x54)) = r7;
0x000166ca ldrsh r4, [r6, r5] | r4 = *((r6 + r5));
0x000166cc strb r5, [r6, 0xd] | *((r6 + 0xd)) = r5;
0x000166ce strb r5, [r4, 9] | *((r4 + 9)) = r5;
0x000166d0 str r4, [r4, 0x14] | *((r4 + 0x14)) = r4;
0x000166d2 str r4, [r6, 0x14] | *((r6 + 0x14)) = r4;
0x000166d4 ldr r0, [r5, 0x40] | r0 = *((r5 + 0x40));
0x000166d6 ldr r1, [r5, 0x64] | r1 = *((r5 + 0x64));
0x000166d8 cmp r1, 0x6b |
0x000166da movs r0, r0 |
0x000166dc str r6, [r0, 0x14] | *((r0 + 0x14)) = r6;
0x000166de ldr r1, [r5, 0x44] | r1 = *((r5 + 0x44));
0x000166e0 str r5, [r4, 0x44] | *((r4 + 0x44)) = r5;
0x000166e2 strb r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x000166e4 movs r0, 0x6f | r0 = 0x6f;
0x000166e6 str r5, [r5, 0x14] | *((r5 + 0x14)) = r5;
0x000166e8 ldr r2, [r6, 0x34] | r2 = *((r6 + 0x34));
0x000166ea str r0, [r4, 0x50] | *((r4 + 0x50)) = r0;
0x000166ec str r6, [r6, 0x54] | *((r6 + 0x54)) = r6;
0x000166ee strb r6, [r5, 0x11] | *((r5 + 0x11)) = r6;
0x000166f0 strb r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x000166f2 strb r7, [r5, 0x15] | *((r5 + 0x15)) = r7;
0x000166f4 str r2, [r6, 0x34] | *((r6 + 0x34)) = r2;
0x000166f6 movs r0, 0x65 | r0 = 0x65;
0x000166f8 strb r1, [r4, 0xd] | *((r4 + 0xd)) = r1;
0x000166fa ldr r0, [r4, 0x60] | r0 = *((r4 + 0x60));
0x000166fc ldr r7, [r5, 0x64] | r7 = *((r5 + 0x64));
0x000166fe str r5, [r5, 0x60] | *((r5 + 0x60)) = r5;
0x00016700 ldr r4, [r5, 0x74] | r4 = *((r5 + 0x74));
0x00016702 strb r1, [r4, 0x11] | *((r4 + 0x11)) = r1;
0x00016704 ldr r1, [r5, 0x64] | r1 = *((r5 + 0x64));
0x00016706 subs r2, 0x67 | r2 -= 0x67;
0x00016708 movs r5, 0x20 | r5 = 0x20;
0x0001670a lsls r5, r5, 1 | r5 <<= 1;
0x0001670c str r2, [r2, 0x54] | *((r2 + 0x54)) = r2;
0x0001670e str r3, [r4, 0x54] | *((r4 + 0x54)) = r3;
0x00016710 strb r1, [r5, 0x19] | *((r5 + 0x19)) = r1;
0x00016712 str r5, [r4, 0x44] | *((r4 + 0x44)) = r5;
0x00016714 strh r0, [r4, r4] | *((r4 + r4)) = r0;
0x00016716 bx sb | return uint32_t (*sb)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/systemd/systemd-journald @ 0xe860 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0000e860 () | void fcn_0000e860 (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;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_48h_2;
| int32_t var_4h_3;
| int16_t var_48h;
| int32_t var_4h_2;
| int16_t var_8h_2;
| int16_t var_ch_2;
| int16_t var_10h_2;
| int32_t var_14h_2;
| int32_t var_14h_3;
| int32_t var_1ch_2;
| int32_t var_1ch_3;
| int32_t var_24h_2;
| int16_t var_28h_2;
| int32_t var_28h_3;
| int16_t var_30h_2;
| int32_t var_30h_3;
| int32_t var_40h_2;
| int32_t var_90h;
| int32_t var_90h_2;
| int16_t var_98h;
| int8_t var_99h;
| int8_t var_9ah;
| int8_t var_9bh;
| int8_t var_9ch;
| int8_t var_9dh;
| int8_t var_9eh;
| int8_t var_9fh;
| int8_t var_a0h;
| int8_t var_a1h;
| int8_t var_a2h;
| int8_t var_a3h;
| int8_t var_a4h;
| int8_t var_a5h;
| int8_t var_a6h;
| int8_t var_a7h;
| int32_t var_ach;
| int16_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
| if (? < ?) {
0x0000e860 strbhs pc, [r8, -0x8df] | *((r8 - 0x8df)) = pc;
| }
0x0000e864 ldr.w r3, [pc, 0x548] |
0x0000e868 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000e86c sub sp, 0xfc |
0x0000e86e add r2, pc | r2 += pc;
0x0000e870 add r7, sp, 0x48 | r7 += var_48h;
0x0000e872 mov sb, r1 | sb = r1;
0x0000e874 ldr.w r4, [r0, 0x250] | r4 = *((r0 + 0x250));
0x0000e876 rsbs r0, r2, 0 | r0 = r2 - ;
0x0000e878 str r0, [r7] | *(r7) = r0;
0x0000e87a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000e87c ldr r3, [r3] | r3 = *(0xedb0);
0x0000e87e str.w r3, [r7, 0xac] | __asm ("str.w r3, [var_ach]");
0x0000e882 mov.w r3, 0 | r3 = 0;
0x0000e886 cmp r4, 0 |
| if (r4 == 0) {
0x0000e888 beq.w 0xec8e | goto label_10;
| }
0x0000e88c mov r0, r4 | r0 = r4;
0x0000e88e blx 0x479c | r0 = prioq_ensure_allocated ();
0x0000e892 add.w r3, r0, 9 | r3 = r0 + 9;
0x0000e896 cmp.w r3, 0x400000 |
| if (r3 > 0x400000) {
0x0000e89a bhi.w 0xec5a | goto label_11;
| }
0x0000e89e adds r0, 0x10 | r0 += 0x10;
0x0000e8a0 mov r1, r4 | r1 = r4;
0x0000e8a2 bic r0, r0, 7 | r0 = BIT_MASK (r0, 7);
0x0000e8a6 sub.w sp, sp, r0 |
0x0000e8aa add r3, sp, 0x48 | r3 += var_48h;
0x0000e8ac mov r0, r3 | r0 = r3;
0x0000e8ae str r3, [r7, 4] | var_4h_2 = r3;
0x0000e8b0 blx 0x4000 | fcn_00004000 ();
0x0000e8b4 ldr.w r3, [pc, 0x4fc] |
0x0000e8b6 adds r4, 0xfc | r4 += 0xfc;
0x0000e8b8 mov r2, r0 | r2 = r0;
0x0000e8ba mov r4, r0 | r4 = r0;
0x0000e8bc add r3, pc | r3 = 0x1d674;
0x0000e8be ldm r3!, {r0, r1} | r0 = *(r3!);
| r1 = *((r3! + 4));
0x0000e8c0 ldrb r3, [r3] | r3 = *(r3);
0x0000e8c2 str r0, [r2] | *(r2) = r0;
0x0000e8c4 str r1, [r2, 4] | var_4h_3 = r1;
0x0000e8c6 strb r3, [r4, 8]! | *((r4 += 8)) = r3;
| label_5:
0x0000e8ca movs r3, 0 | r3 = 0;
0x0000e8cc ldr r0, [r7, 4] | r0 = var_4h_2;
0x0000e8ce strb r3, [r4] | *(r4) = r3;
0x0000e8d0 blx 0x4154 | r0 = endswith ();
0x0000e8d4 mov r6, r0 | r6 = r0;
0x0000e8d6 cmp r0, 0 |
| if (r0 == 0) {
0x0000e8d8 beq.w 0xed5a | goto label_12;
| }
0x0000e8dc blx 0x45ec | r0 = mkdir_parents ();
0x0000e8e0 cmp r0, 0 |
| if (r0 == 0) {
0x0000e8e2 beq.w 0xebc6 | goto label_13;
| }
0x0000e8e6 ldr.w r8, [pc, 0x4d0] |
0x0000e8ea add.w fp, r7, 0x30 |
0x0000e8ec lsrs r0, r6, 0xc | r0 = r6 >> 0xc;
0x0000e8ee add r8, pc | r8 = 0x1d6ac;
0x0000e8f0 b 0xe8fe |
| while (r0 != 0) {
| label_0:
0x0000e8f2 mov r0, r6 | r0 = r6;
0x0000e8f4 blx 0x45ec | r0 = mkdir_parents ();
0x0000e8f8 cmp r0, 0 |
| if (r0 == 0) {
0x0000e8fa beq.w 0xebc6 | goto label_13;
| }
| label_2:
0x0000e8fe add.w r4, r0, 0x13 | r4 = r0 + 0x13;
0x0000e902 mov r0, r4 | r0 = r4;
0x0000e904 blx 0x4a8c | r0 = fcn_00004a8c ();
0x0000e908 mov r5, r0 | r5 = r0;
0x0000e90a cmp r0, 0 |
0x0000e90c bne 0xe8f2 |
| }
0x0000e90e add.w r3, r7, 0xc | r3 += var_ch_2;
0x0000e912 add.w r2, r7, 8 | r2 += var_8h_2;
0x0000e916 mov r1, r8 | r1 = r8;
0x0000e918 mov r0, r4 | r0 = r4;
0x0000e91a blx 0x4344 | r0 = fcn_00004344 ();
0x0000e91e cmp r0, 2 |
| if (r0 != 2) {
0x0000e920 bne 0xe8f2 | goto label_0;
| }
0x0000e922 add.w sl, r7, 0x28 | sl += var_28h_2;
0x0000e926 mvn r3, 1 | r3 = ~1;
0x0000e92a strd r3, r5, [r7, 0x28] | __asm ("strd r3, r5, [var_28h_2]");
| do {
| label_1:
0x0000e92e mov r1, sl | r1 = sl;
0x0000e930 mov r0, sb | r0 = sb;
0x0000e932 blx 0x4338 | r0 = fcn_00004338 ();
0x0000e936 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0000e938 blt.w 0xeb6a | goto label_14;
| }
0x0000e93c mov r1, fp | r1 = fp;
0x0000e93e blx 0x4990 | r0 = fcn_00004990 ();
0x0000e942 cmp r0, 0 |
| if (r0 < 0) {
0x0000e944 blt.w 0xec70 | goto label_15;
| }
0x0000e948 ldr r3, [r7, 0x40] | r3 = var_40h_2;
0x0000e94a and r3, r3, 0xf000 | r3 &= 0xf000;
0x0000e94e cmp.w r3, 0xc000 |
0x0000e952 bne 0xe92e |
| } while (r3 != 0xc000);
0x0000e954 ldr r1, [r7, 8] | r1 = var_8h_2;
0x0000e956 movs r3, 0 | r3 = 0;
0x0000e958 ldrd r0, r2, [r7, 0x30] | __asm ("ldrd r0, r2, [var_30h_2]");
0x0000e95c cmp r2, r3 |
0x0000e95e it eq |
| if (r2 != r3) {
0x0000e960 cmpeq r0, r1 | __asm ("cmpeq r0, r1");
| goto label_16;
| }
| if (r2 != r3) {
| label_16:
0x0000e962 bne 0xe92e | goto label_1;
| }
0x0000e964 ldr r1, [r7, 0xc] | r1 = var_ch_2;
0x0000e966 ldrd r0, r2, [r7, 0x90] | __asm ("ldrd r0, r2, [var_90h]");
0x0000e96a cmp r2, r3 |
0x0000e96c it eq |
| if (r2 != r3) {
0x0000e96e cmpeq r0, r1 | __asm ("cmpeq r0, r1");
| goto label_17;
| }
| if (r2 != r3) {
| label_17:
0x0000e970 bne 0xe92e | goto label_1;
| }
0x0000e972 mov r1, r5 | r1 = r5;
0x0000e974 mov r0, sb | r0 = sb;
0x0000e976 blx 0x3ed4 | fcn_00003ed4 ();
0x0000e97a ldr r3, [r7] | r3 = *(r7);
0x0000e97c ldr.w r2, [r3, 0x1a0] | r2 = *((r3 + 0x1a0));
0x0000e980 cmp.w r2, 0x1000 |
| if (r2 >= 0x1000) {
0x0000e984 bhs.w 0xecf4 | goto label_18;
| }
0x0000e988 ldr r0, [r7] | r0 = *(r7);
0x0000e98a add.w r2, r7, 0x10 | r2 += var_10h_2;
0x0000e98e mov r1, r5 | r1 = r5;
0x0000e990 bl 0xe2d0 | r0 = fcn_0000e2d0 (r0, r1, r2);
0x0000e994 cmp r0, 0 |
| if (r0 < 0) {
0x0000e996 blt.w 0xed1e | goto label_19;
| }
0x0000e99a ldr r5, [r7, 0x10] | r5 = var_10h_2;
0x0000e99c movs r2, 7 | r2 = 7;
0x0000e99e movs r3, 0 | r3 = 0;
0x0000e9a0 strd r3, r3, [r7, 0x14] | __asm ("strd r3, r3, [var_14h_2]");
0x0000e9a4 str r2, [r5, 4] | *((r5 + 4)) = r2;
0x0000e9a6 ldrb.w r2, [r5, 0x28] | r2 = *((r5 + 0x28));
0x0000e9aa strd r3, r3, [r7, 0x1c] | __asm ("strd r3, r3, [var_1ch_2]");
0x0000e9ae str r3, [r7, 0x24] | var_24h_2 = r3;
0x0000e9b0 orr r2, r2, 0x10 | r2 |= 0x10;
0x0000e9b4 strb.w r2, [r5, 0x28] | *((r5 + 0x28)) = r2;
0x0000e9b8 str r3, [r7, 0x28] | var_28h_2 = r3;
0x0000e9ba ldr r0, [r5, 0x38] | r0 = *((r5 + 0x38));
0x0000e9bc cmp r0, 0 |
| if (r0 == 0) {
0x0000e9be beq.w 0xecbe | goto label_20;
| }
| label_6:
0x0000e9c2 ldr r3, [pc, 0x3f8] |
0x0000e9c4 mov r1, r0 | r1 = r0;
0x0000e9c6 ldr r2, [pc, 0x3f8] |
0x0000e9c8 movs r0, 0 | r0 = 0;
0x0000e9ca str.w sl, [sp, 0x34] | __asm ("str.w sl, [var_34h]");
0x0000e9ce add r3, pc | r3 = 0x1d790;
0x0000e9d0 str r0, [sp, 0x38] | var_38h = r0;
0x0000e9d2 str r3, [sp, 0x30] | var_30h = r3;
0x0000e9d4 add r2, pc | r2 = 0x1d79a;
0x0000e9d6 ldr r3, [pc, 0x3ec] |
0x0000e9d8 add r3, pc | r3 = 0x1d7a2;
0x0000e9da str r3, [sp, 0x28] | var_28h = r3;
0x0000e9dc ldr r3, [pc, 0x3e8] |
0x0000e9de add r3, pc | r3 = 0x1d7aa;
0x0000e9e0 str r3, [sp, 0x20] | var_20h = r3;
0x0000e9e2 ldr r3, [pc, 0x3e8] |
0x0000e9e4 add r3, pc | r3 = 0x1d7b6;
0x0000e9e6 str r3, [sp, 0x18] | var_18h = r3;
0x0000e9e8 ldr r3, [pc, 0x3e4] |
0x0000e9ea add r3, pc | r3 = 0x1d7be;
0x0000e9ec str r3, [sp, 0x10] | var_10h = r3;
0x0000e9ee ldr r3, [pc, 0x3e4] |
0x0000e9f0 add r3, pc | r3 = 0x1d7ca;
0x0000e9f2 str r3, [sp, 8] | var_8h = r3;
0x0000e9f4 ldr r3, [pc, 0x3e0] |
0x0000e9f6 add r3, pc | r3 = 0x1d7d2;
0x0000e9f8 str r3, [sp] | *(sp) = r3;
0x0000e9fa add.w r3, r5, 0x20 | r3 = r5 + 0x20;
0x0000e9fe str r3, [sp, 0x2c] | var_2ch = r3;
0x0000ea00 add.w r3, r5, 0x1c | r3 = r5 + 0x1c;
0x0000ea04 str r3, [sp, 0x24] | var_24h = r3;
0x0000ea06 add.w r3, r7, 0x24 | r3 += var_24h_2;
0x0000ea0a str r3, [sp, 0x1c] | var_1ch = r3;
0x0000ea0c add.w r3, r7, 0x20 | r3 += var_1ch_3;
0x0000ea10 str r3, [sp, 0x14] | var_14h = r3;
0x0000ea12 add.w r3, r7, 0x1c | r3 += var_1ch_2;
0x0000ea16 str r3, [sp, 0xc] | var_ch = r3;
0x0000ea18 add.w r3, r7, 0x18 | r3 += var_14h_3;
0x0000ea1a lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x0000ea1c str r3, [sp, 4] | var_4h = r3;
0x0000ea1e add.w r3, r7, 0x14 | r3 += var_14h_2;
0x0000ea22 blx 0x4abc | r0 = fcn_00004abc ();
0x0000ea26 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0000ea28 blt.w 0xed26 | goto label_21;
| }
0x0000ea2c ldr r0, [r7, 0x14] | r0 = var_14h_2;
| if (r0 != 0) {
0x0000ea2e cbz r0, 0xea44 |
0x0000ea30 mov r1, fp | r1 = fp;
0x0000ea32 blx 0x4450 | r0 = fcn_00004450 ();
0x0000ea36 cmp r0, 0 |
| if (r0 < 0) {
0x0000ea38 blt 0xea44 | goto label_22;
| }
0x0000ea3a ldr r3, [r7, 0x30] | r3 = var_30h_2;
0x0000ea3c cmp.w r3, 0x3e8 |
0x0000ea3e ldrb r2, [r7, 0x1d] | r2 = *((r7 + 0x1d));
0x0000ea40 it lo |
| if (r3 < 0x3e8) {
0x0000ea42 strlo r3, [r5, 0x24] | *((r5 + 0x24)) = r3;
| goto label_22;
| }
| }
| label_22:
0x0000ea44 ldr r0, [r7, 0x18] | r0 = var_14h_3;
| if (r0 != 0) {
0x0000ea46 cbz r0, 0xea62 |
0x0000ea48 blx 0x458c | r0 = asprintf_chk ()
0x0000ea4c cmp r0, 0 |
| if (r0 < 0) {
0x0000ea4e blt 0xea62 | goto label_23;
| }
0x0000ea50 ldrb.w r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0000ea54 ite ne |
| if (r0 == 0) {
0x0000ea56 movne r2, 1 | r2 = 1;
| }
| if (r0 != 0) {
0x0000ea58 moveq r2, 0 | r2 = 0;
| }
0x0000ea5a bfi r3, r2, 0, 1 | value_0 = BIT_MASK (0, 1);
| value_1 = r2 & value_0;
| value_0 = ~value_0;
| r3 &= value_0;
| r3 |= value_1;
0x0000ea5e strb.w r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
| }
| label_23:
0x0000ea62 ldr r0, [r7, 0x1c] | r0 = var_1ch_2;
| if (r0 != 0) {
0x0000ea64 cbz r0, 0xea80 |
0x0000ea66 blx 0x458c | r0 = asprintf_chk ()
0x0000ea6a cmp r0, 0 |
| if (r0 < 0) {
0x0000ea6c blt 0xea80 | goto label_24;
| }
0x0000ea6e ldrb.w r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0000ea72 ite ne |
| if (r0 == 0) {
0x0000ea74 movne r2, 1 | r2 = 1;
| }
| if (r0 != 0) {
0x0000ea76 moveq r2, 0 | r2 = 0;
| }
0x0000ea78 bfi r3, r2, 1, 1 | value_2 = BIT_MASK (1, 1);
| value_3 = r2 & value_2;
| value_2 = ~value_2;
| r3 &= value_2;
| r3 |= value_3;
0x0000ea7c strb.w r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
| }
| label_24:
0x0000ea80 ldr r0, [r7, 0x20] | r0 = var_1ch_3;
| if (r0 != 0) {
0x0000ea82 cbz r0, 0xea9e |
0x0000ea84 blx 0x458c | r0 = asprintf_chk ()
0x0000ea88 cmp r0, 0 |
| if (r0 < 0) {
0x0000ea8a blt 0xea9e | goto label_25;
| }
0x0000ea8c ldrb.w r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0000ea90 ite ne |
| if (r0 == 0) {
0x0000ea92 movne r2, 1 | r2 = 1;
| }
| if (r0 != 0) {
0x0000ea94 moveq r2, 0 | r2 = 0;
| }
0x0000ea96 bfi r3, r2, 2, 1 | value_4 = BIT_MASK (2, 1);
| value_5 = r2 & value_4;
| value_4 = ~value_4;
| r3 &= value_4;
| r3 |= value_5;
0x0000ea9a strb.w r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
| }
| label_25:
0x0000ea9e ldr r0, [r7, 0x24] | r0 = var_24h_2;
| if (r0 != 0) {
0x0000eaa0 cbz r0, 0xeabc |
0x0000eaa2 blx 0x458c | r0 = asprintf_chk ()
0x0000eaa6 cmp r0, 0 |
| if (r0 < 0) {
0x0000eaa8 blt 0xeabc | goto label_26;
| }
0x0000eaaa ldrb.w r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0000eaae ite ne |
| if (r0 == 0) {
0x0000eab0 movne r2, 1 | r2 = 1;
| }
| if (r0 != 0) {
0x0000eab2 moveq r2, 0 | r2 = 0;
| }
0x0000eab4 bfi r3, r2, 3, 1 | value_6 = BIT_MASK (3, 1);
| value_7 = r2 & value_6;
| value_6 = ~value_6;
| r3 &= value_6;
| r3 |= value_7;
0x0000eab6 lsls r3, r0, 0xf | r3 = r0 << 0xf;
0x0000eab8 strb.w r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x0000eaba adds r0, 0x28 | r0 += 0x28;
| }
| label_26:
0x0000eabc ldr r0, [r7, 0x28] | r0 = var_28h_2;
0x0000eabe cmp r0, 0 |
| if (r0 != 0) {
0x0000eac0 beq 0xeb46 |
0x0000eac2 add.w r1, r7, 0x98 | r1 += var_98h;
0x0000eac6 blx 0x403c | r0 = fcn_0000403c ();
0x0000eaca cmp r0, 0 |
| if (r0 >= 0) {
0x0000eacc blt 0xeb44 |
0x0000eace ldrb.w r3, [r7, 0xa7] | r3 = var_a7h;
0x0000ead2 add.w r0, r5, 0x50 | r0 = r5 + 0x50;
0x0000ead6 movs r2, 1 | r2 = 1;
0x0000ead8 movs r1, 0x2c | r1 = 0x2c;
0x0000eada str r3, [sp, 0x40] | var_40h = r3;
0x0000eadc ldrb.w r3, [r7, 0xa6] | r3 = var_a6h;
0x0000eae0 str r3, [sp, 0x3c] | var_3ch = r3;
0x0000eae2 ldrb.w r3, [r7, 0xa5] | r3 = var_a5h;
0x0000eae6 str r3, [sp, 0x38] | var_38h = r3;
0x0000eae8 ldrb.w r3, [r7, 0xa4] | r3 = var_a4h;
0x0000eaec str r3, [sp, 0x34] | var_34h = r3;
0x0000eaee ldrb.w r3, [r7, 0xa3] | r3 = var_a3h;
0x0000eaf2 str r3, [sp, 0x30] | var_30h = r3;
0x0000eaf4 ldrb.w r3, [r7, 0xa2] | r3 = var_a2h;
0x0000eaf6 adds r0, 0xa2 | r0 += 0xa2;
0x0000eaf8 str r3, [sp, 0x2c] | var_2ch = r3;
0x0000eafa ldrb.w r3, [r7, 0xa1] | r3 = var_a1h;
0x0000eafe str r3, [sp, 0x28] | var_28h = r3;
0x0000eb00 ldrb.w r3, [r7, 0xa0] | r3 = var_a0h;
0x0000eb04 str r3, [sp, 0x24] | var_24h = r3;
0x0000eb06 ldrb.w r3, [r7, 0x9f] | r3 = var_9fh;
0x0000eb0a str r3, [sp, 0x20] | var_20h = r3;
0x0000eb0c ldrb.w r3, [r7, 0x9e] | r3 = var_9eh;
0x0000eb10 str r3, [sp, 0x1c] | var_1ch = r3;
0x0000eb12 ldrb.w r3, [r7, 0x9d] | r3 = var_9dh;
0x0000eb16 str r3, [sp, 0x18] | var_18h = r3;
0x0000eb18 ldrb.w r3, [r7, 0x9c] | r3 = var_9ch;
0x0000eb1c str r3, [sp, 0x14] | var_14h = r3;
0x0000eb1e ldrb.w r3, [r7, 0x9b] | r3 = var_9bh;
0x0000eb22 str r3, [sp, 0x10] | var_10h = r3;
0x0000eb24 ldrb.w r3, [r7, 0x9a] | r3 = var_9ah;
0x0000eb28 str r3, [sp, 0xc] | var_ch = r3;
0x0000eb2a ldrb.w r3, [r7, 0x99] | r3 = var_99h;
0x0000eb2e str r3, [sp, 8] | var_8h = r3;
0x0000eb30 ldrb.w r3, [r7, 0x98] | r3 = var_98h;
0x0000eb34 str r3, [sp, 4] | var_4h = r3;
0x0000eb36 ldr r3, [pc, 0x2a4] |
0x0000eb38 add r3, pc | r3 = 0x1d91a;
0x0000eb3a str r3, [sp] | *(sp) = r3;
0x0000eb3c mov.w r3, -1 | r3 = -1;
0x0000eb40 blx 0x47a8 | config_parse_many ();
| }
| label_8:
0x0000eb44 ldr r0, [r7, 0x28] | r0 = var_28h_2;
| }
| label_7:
0x0000eb46 blx 0x3e8c | fcn_00003e8c ();
0x0000eb4a ldr r0, [r7, 0x24] | r0 = var_24h_2;
0x0000eb4c blx 0x3e8c | fcn_00003e8c ();
0x0000eb50 ldr r0, [r7, 0x20] | r0 = var_1ch_3;
0x0000eb52 blx 0x3e8c | fcn_00003e8c ();
0x0000eb56 ldr r0, [r7, 0x1c] | r0 = var_1ch_2;
0x0000eb58 blx 0x3e8c | fcn_00003e8c ();
0x0000eb5c ldr r0, [r7, 0x18] | r0 = var_14h_3;
0x0000eb5e blx 0x3e8c | fcn_00003e8c ();
0x0000eb62 ldr r0, [r7, 0x14] | r0 = var_14h_2;
0x0000eb64 blx 0x3e8c | fcn_00003e8c ();
0x0000eb68 b 0xe8f2 | goto label_0;
| label_14:
0x0000eb6a blx 0x409c | r0 = fcn_0000409c ();
0x0000eb6e cmp r0, 6 |
| if (r0 > 6) {
0x0000eb70 bgt 0xebfc | goto label_27;
| }
| label_3:
0x0000eb72 mov r0, r6 | r0 = r6;
0x0000eb74 blx 0x3de8 | dirfd ();
0x0000eb76 ldmdb r8!, {sb, sp} | __asm ("ldmdb r8!, {sb, sp}");
0x0000eb7a mov r1, r4 | r1 = r4;
0x0000eb7c blx 0x4090 | r0 = fcn_00004090 ();
0x0000eb80 cmp r0, 0 |
| if (r0 >= 0) {
0x0000eb82 bge.w 0xe8f2 | goto label_0;
| }
0x0000eb86 blx 0x4918 | r0 = fcn_00004918 ();
0x0000eb8a ldr r5, [r0] | r5 = *(r0);
0x0000eb8c blx 0x409c | r0 = fcn_0000409c ();
0x0000eb90 cmp r0, 3 |
| if (r0 <= 3) {
0x0000eb92 ble.w 0xe8f2 | goto label_0;
| }
0x0000eb96 str r4, [sp, 0xc] | var_ch = r4;
0x0000eb98 mov r1, r5 | r1 = r5;
0x0000eb9a ldr r3, [r7, 4] | r3 = var_4h_2;
0x0000eb9c movs r0, 4 | r0 = 4;
0x0000eb9e ldr r2, [pc, 0x240] |
0x0000eba0 str r3, [sp, 8] | var_8h = r3;
0x0000eba2 ldr r3, [pc, 0x240] |
0x0000eba4 add r2, pc | r2 = 0x1d98a;
0x0000eba6 adds r2, 7 | r2 += 7;
0x0000eba8 add r3, pc | r3 = 0x1d992;
0x0000ebaa str r3, [sp, 4] | var_4h = r3;
0x0000ebac ldr r3, [pc, 0x238] |
0x0000ebae add r3, pc | r3 = 0x1d99a;
0x0000ebb0 str r3, [sp] | *(sp) = r3;
0x0000ebb2 movw r3, 0x377 | r3 = 0x377;
0x0000ebb6 blx 0x43cc | fcn_000043cc ();
0x0000ebba mov r0, r6 | r0 = r6;
0x0000ebbc blx 0x45ec | r0 = mkdir_parents ();
0x0000ebc0 cmp r0, 0 |
| if (r0 != 0) {
0x0000ebc2 bne.w 0xe8fe | goto label_2;
| }
| label_13:
0x0000ebc6 blx 0x4918 | r0 = fcn_00004918 ();
0x0000ebca ldr r4, [r0] | r4 = *(r0);
0x0000ebcc cmp r4, 0 |
0x0000ebce it le |
| if (r4 > 0) {
0x0000ebd0 movle r4, 0 | r4 = 0;
| }
0x0000ebd2 bgt 0xec1e |
| while (1) {
0x0000ebd4 mov r0, r6 | r0 = r6;
0x0000ebd6 blx 0x3f94 | fcn_00003f94 ();
| label_9:
0x0000ebda ldr r2, [pc, 0x210] |
0x0000ebdc ldr r3, [pc, 0x1d0] | r3 = *(0xedb0);
0x0000ebde add r2, pc | r2 = 0x1d9d0;
0x0000ebe0 ldr r3, [r2, r3] | r3 = *(0x1d9d0);
0x0000ebe2 ldr r2, [r3] | r2 = *(0x1d9d0);
0x0000ebe4 ldr.w r3, [r7, 0xac] | r3 = var_ach;
0x0000ebe8 eors r2, r3 | r2 ^= r3;
0x0000ebea mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000ebee bne.w 0xed56 | goto label_28;
| }
0x0000ebf2 mov r0, r4 | r0 = r4;
0x0000ebf4 adds r7, 0xb4 | r7 += 0xb4;
0x0000ebf6 mov sp, r7 |
0x0000ebf8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_27:
0x0000ebfc ldr r3, [pc, 0x1f0] |
0x0000ebfe movs r1, 0 | r1 = 0;
0x0000ec00 ldr r2, [pc, 0x1f0] |
0x0000ec02 movs r0, 7 | r0 = 7;
0x0000ec04 str r4, [sp, 8] | var_8h = r4;
0x0000ec06 add r3, pc | r3 = 0x1d9fa;
0x0000ec08 str r3, [sp, 4] | var_4h = r3;
0x0000ec0a add r2, pc | r2 = 0x1da02;
0x0000ec0c ldr r3, [pc, 0x1e8] |
0x0000ec0e adds r2, 7 | r2 += 7;
0x0000ec10 add r3, pc | r3 = 0x1da0c;
0x0000ec12 str r3, [sp] | *(sp) = r3;
0x0000ec14 movw r3, 0x375 | r3 = 0x375;
0x0000ec16 adds r3, 0x75 | r3 += 0x75;
0x0000ec18 blx 0x43cc | fcn_000043cc ();
0x0000ec1c b 0xeb72 | goto label_3;
0x0000ec1e blx 0x409c | r0 = fcn_0000409c ();
0x0000ec22 cmp r0, 2 |
0x0000ec24 itt le |
| if (r0 <= 2) {
0x0000ec26 bicle r4, r4, 0x40000000 | __asm ("bicle r4, r4, 0x40000000");
| }
| if (r0 <= 2) {
0x0000ec2a rsbs r4, r4, 0 | r4 -= ;
| }
| if (r0 > 2) {
0x0000ec2c bgt 0xec38 | goto label_29;
| }
| label_4:
0x0000ec2e cmp r4, 0 |
0x0000ec30 it ge |
| if (r4 < 0) {
0x0000ec32 mvnge r4, 0x55 | r4 = ~0x55;
| }
0x0000ec36 b 0xebd4 |
| }
| label_29:
0x0000ec38 ldr r2, [pc, 0x1c0] |
0x0000ec3a mov r1, r4 | r1 = r4;
0x0000ec3c ldr r5, [pc, 0x1c0] |
0x0000ec3e movw r3, 0x385 | r3 = 0x385;
0x0000ec42 ldr r0, [pc, 0x1c0] |
0x0000ec44 add r2, pc | r2 = 0x1da44;
0x0000ec46 add r5, pc | r5 = 0x1da4a;
0x0000ec48 adds r2, 7 | r2 += 7;
0x0000ec4a add r0, pc | r0 = 0x1da54;
0x0000ec4c strd r0, r5, [sp] | __asm ("strd r0, r5, [sp]");
0x0000ec50 movs r0, 3 | r0 = 3;
0x0000ec52 blx 0x43cc | r0 = fcn_000043cc ();
0x0000ec56 mov r4, r0 | r4 = r0;
0x0000ec58 b 0xec2e | goto label_4;
| label_11:
0x0000ec5a ldr r1, [pc, 0x1ac] |
0x0000ec5c movw r2, 0x356 | r2 = 0x356;
0x0000ec60 ldr r3, [pc, 0x1a8] |
0x0000ec62 ldr r0, [pc, 0x1ac] |
0x0000ec64 add r1, pc | r1 = 0x1da72;
0x0000ec66 add r3, pc | r3 = 0x1da76;
0x0000ec68 adds r1, 7 | r1 += 7;
0x0000ec6a add r0, pc | r0 = 0x1da80;
0x0000ec6c blx 0x3e4c | fcn_00003e4c ();
| label_15:
0x0000ec70 blx 0x4918 | r0 = fcn_00004918 ();
0x0000ec74 ldr r5, [r0] | r5 = *(r0);
0x0000ec76 blx 0x409c | r0 = fcn_0000409c ();
0x0000ec7a cmp r0, 2 |
| if (r0 <= 2) {
0x0000ec7c bgt 0xec96 |
0x0000ec7e eor.w r4, r5, r5, asr 31 | r4 = r5 ^ (r5 >> 31);
0x0000ec82 sub.w r4, r4, r5, asr 31 | r4 -= (r5 >> 31);
0x0000ec86 bic r4, r4, 0x40000000 | r4 = BIT_MASK (r4, 0x40000000);
0x0000ec8a rsbs r4, r4, 0 | r4 -= ;
0x0000ec8c b 0xec2e | goto label_4;
| label_10:
0x0000ec8e sub sp, 8 |
0x0000ec90 add r4, sp, 0x48 | r4 += var_48h_2;
0x0000ec92 str r4, [r7, 4] | var_4h_2 = r4;
0x0000ec94 b 0xe8ca | goto label_5;
| }
0x0000ec96 ldr r2, [pc, 0x17c] |
0x0000ec98 mov r1, r5 | r1 = r5;
0x0000ec9a ldr r3, [pc, 0x17c] |
0x0000ec9c movs r0, 3 | r0 = 3;
0x0000ec9e ldr.w ip, [pc, 0x17c] |
0x0000eca2 add r2, pc | r2 = 0x1dabc;
0x0000eca4 str r4, [sp, 8] | var_8h = r4;
0x0000eca6 add r3, pc | r3 = 0x1dac4;
0x0000eca8 adds r2, 7 | r2 += 7;
0x0000ecaa add ip, pc | ip = 0x1dacc;
0x0000ecac str r3, [sp, 4] | var_4h = r3;
0x0000ecae str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x0000ecb2 movw r3, 0x36b | r3 = 0x36b;
0x0000ecb6 blx 0x43cc | r0 = fcn_000043cc ();
0x0000ecba mov r4, r0 | r4 = r0;
0x0000ecbc b 0xec2e | goto label_4;
| label_20:
0x0000ecbe ldr r2, [r5] | r2 = *(r5);
0x0000ecc0 mov r3, r4 | r3 = r4;
0x0000ecc2 ldr.w r1, [r2, 0x250] | r1 = *((r2 + 0x250));
0x0000ecc6 mov.w r2, -1 | r2 = -1;
0x0000ecca str r2, [sp] | *(sp) = r2;
0x0000eccc ldr r2, [pc, 0x150] |
0x0000ecce add r2, pc | r2 = 0x1daf2;
0x0000ecd0 blx 0x4598 | journal_file_copy_entry ();
0x0000ecd4 str r0, [r5, 0x38] | *((r5 + 0x38)) = r0;
0x0000ecd6 cmp r0, 0 |
| if (r0 != 0) {
0x0000ecd8 bne.w 0xe9c2 | goto label_6;
| }
0x0000ecdc ldr r1, [pc, 0x144] |
0x0000ecde movw r2, 0x2fd | r2 = 0x2fd;
0x0000ece2 ldr r3, [pc, 0x144] |
0x0000ece4 movs r0, 3 | r0 = 3;
0x0000ece6 add r1, pc | r1 = 0x1db0e;
0x0000ece8 adds r1, 7 | r1 += 7;
0x0000ecea add r3, pc | r3 = 0x1db18;
0x0000ecec blx 0x4bbc | fcn_00004bbc ();
0x0000ecf0 ldr r0, [r7, 0x28] | r0 = var_28h_2;
0x0000ecf2 b 0xeb46 | goto label_7;
| label_18:
0x0000ecf4 blx 0x409c | r0 = fcn_0000409c ();
0x0000ecf8 cmp r0, 3 |
0x0000ecfa mov.w r3, 0 | r3 = 0;
| if (r0 > 3) {
0x0000ecfe ble 0xed1e |
0x0000ed00 mov r1, r3 | r1 = r3;
0x0000ed02 ldr r3, [pc, 0x128] |
0x0000ed04 ldr r2, [pc, 0x128] |
0x0000ed06 movs r0, 4 | r0 = 4;
0x0000ed08 add r3, pc | r3 = 0x1db3a;
0x0000ed0a str r3, [sp, 4] | var_4h = r3;
0x0000ed0c add r2, pc | r2 = 0x1db40;
0x0000ed0e ldr r3, [pc, 0x124] |
0x0000ed10 adds r2, 7 | r2 += 7;
0x0000ed12 add r3, pc | r3 = 0x1db4c;
0x0000ed14 str r3, [sp] | *(sp) = r3;
0x0000ed16 mov.w r3, 0x340 | r3 = 0x340;
0x0000ed1a blx 0x43cc | fcn_000043cc ();
| }
| label_19:
0x0000ed1e mov r0, r5 | r0 = r5;
0x0000ed20 blx 0x4414 | fcn_00004414 ();
0x0000ed24 b 0xe8f2 | goto label_0;
| label_21:
0x0000ed26 blx 0x409c | r0 = fcn_0000409c ();
0x0000ed2a cmp r0, 2 |
| if (r0 <= 2) {
0x0000ed2c ble.w 0xeb44 | goto label_8;
| }
0x0000ed30 ldr r3, [r5, 0x38] | r3 = *((r5 + 0x38));
0x0000ed32 mov r1, r4 | r1 = r4;
0x0000ed34 ldr r2, [pc, 0x100] |
0x0000ed36 movs r0, 3 | r0 = 3;
0x0000ed38 str r3, [sp, 8] | var_8h = r3;
0x0000ed3a ldr r3, [pc, 0x100] |
0x0000ed3c add r2, pc | r2 = 0x1db78;
0x0000ed3e adds r2, 7 | r2 += 7;
0x0000ed40 add r3, pc | r3 = 0x1db82;
0x0000ed42 str r3, [sp, 4] | var_4h = r3;
0x0000ed44 ldr r3, [pc, 0xf8] |
0x0000ed46 add r3, pc | r3 = 0x1db8a;
0x0000ed48 str r3, [sp] | *(sp) = r3;
0x0000ed4a movw r3, 0x30a | r3 = 0x30a;
0x0000ed4e blx 0x43cc | fcn_000043cc ();
0x0000ed52 ldr r0, [r7, 0x28] | r0 = var_28h_2;
0x0000ed54 b 0xeb46 | goto label_7;
| label_28:
0x0000ed56 blx 0x4474 | fcn_00004474 ();
| label_12:
0x0000ed5a blx 0x4918 | r0 = fcn_00004918 ();
0x0000ed5e ldr r4, [r0] | r4 = *(r0);
0x0000ed60 cmp r4, 2 |
| if (r4 == 2) {
0x0000ed62 beq 0xed82 | goto label_30;
| }
0x0000ed64 blx 0x409c | r0 = fcn_0000409c ();
0x0000ed68 cmp r0, 3 |
| if (r0 > 3) {
0x0000ed6a bgt 0xed86 | goto label_31;
| }
0x0000ed6c cmp r4, 0 |
0x0000ed6e it lt |
| if (r4 < 0) {
0x0000ed70 rsblt r4, r4, 0 | __asm ("rsblt r4, r4, 0");
| }
0x0000ed72 bic r4, r4, 0x40000000 | r4 = BIT_MASK (r4, 0x40000000);
0x0000ed76 rsbs r4, r4, 0 | r4 -= ;
| do {
0x0000ed78 cmp r4, 0 |
0x0000ed7a it ge |
| if (r4 < 0) {
0x0000ed7c mvnge r4, 0x55 | r4 = ~0x55;
| }
0x0000ed80 b 0xebda | goto label_9;
| label_30:
0x0000ed82 mov r4, r6 | r4 = r6;
0x0000ed84 b 0xebda | goto label_9;
| label_31:
0x0000ed86 ldr r2, [pc, 0xbc] |
0x0000ed88 mov r1, r4 | r1 = r4;
0x0000ed8a ldr r0, [pc, 0xbc] |
0x0000ed8c mov.w r3, 0x35c | r3 = 0x35c;
0x0000ed90 ldr r5, [pc, 0xb8] |
0x0000ed92 ldr r4, [r7, 4] | r4 = var_4h_2;
0x0000ed94 add r2, pc | r2 = 0x1dbde;
0x0000ed96 add r0, pc | r0 = 0x1dbe4;
0x0000ed98 adds r2, 7 | r2 += 7;
0x0000ed9a add r5, pc | r5 = 0x1dbea;
0x0000ed9c str r0, [sp, 4] | var_4h = r0;
0x0000ed9e str r4, [sp, 8] | var_8h = r4;
0x0000eda0 movs r0, 4 | r0 = 4;
0x0000eda2 str r5, [sp] | *(sp) = r5;
0x0000eda4 blx 0x43cc | r0 = fcn_000043cc ();
0x0000eda8 mov r4, r0 | r4 = r0;
0x0000edaa b 0xed78 |
| } 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/systemd/systemd-journald @ 0x12360 */
| #include <stdint.h>
|
; (fcn) fcn.00012360 () | void fcn_00012360 (int16_t arg_2d8h, uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_48h;
| int16_t var_58h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_98h;
| int16_t var_c8h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00012360 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00012364 mov r6, r2 | r6 = r2;
0x00012366 ldr r2, [pc, 0x2ac] |
0x00012368 mov r5, r3 | r5 = r3;
0x0001236a sub sp, 0x78 |
0x0001236c ldr r3, [pc, 0x2a8] | r3 = *(0x12618);
0x0001236e add r2, pc | r2 = 0x24988;
0x00012370 ldr.w r8, [sp, 0x98] | r8 = var_98h;
0x00012374 ldr r3, [r2, r3] |
0x00012376 movs r2, 0 | r2 = 0;
0x00012378 ldr r3, [r3] | r3 = *(0x24988);
0x0001237a str r3, [sp, 0x74] | var_74h = r3;
0x0001237c mov.w r3, 0 | r3 = 0;
0x00012380 str r2, [sp, 0x14] | var_14h = r2;
0x00012382 cmp r0, 0 |
| if (var_0h == ) {
0x00012384 beq.w 0x12596 | goto label_8;
| }
0x00012388 cmp r5, 0 |
| if (r5 == 0) {
0x0001238a beq.w 0x125aa | goto label_9;
| }
0x0001238e ldr.w r3, [r0, 0x1b4] | r3 = *(var_0hx1b4);
0x00012392 and r1, r1, 7 | r1 &= 7;
0x00012396 mov r4, r0 | r4 = r0;
0x00012398 cmp r1, r3 |
0x0001239a it gt |
| if (r1 <= r3) {
0x0001239c movgt r4, -1 | r4 = -1;
| }
0x000123a0 ble 0x123ca |
| while (r0 >= 0) {
| label_0:
0x000123a2 mov r0, r4 | r0 = r4;
0x000123a4 blx 0x4414 | fcn_00004414 ();
0x000123a8 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000123aa blx 0x3e8c | fcn_00003e8c ();
0x000123ae ldr r2, [pc, 0x26c] |
0x000123b0 ldr r3, [pc, 0x264] | r3 = *(0x12618);
0x000123b2 add r2, pc | r2 = 0x249d4;
0x000123b4 ldr r3, [r2, r3] | r3 = *(0x249d4);
0x000123b6 ldr r2, [r3] | r2 = *(0x249d4);
0x000123b8 ldr r3, [sp, 0x74] | r3 = var_74h;
0x000123ba eors r2, r3 | r2 ^= r3;
0x000123bc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000123c0 bne.w 0x1260e | goto label_10;
| }
0x000123c4 add sp, 0x78 |
0x000123c6 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
0x000123ca ldr.w sb, [pc, 0x254] |
0x000123ce add sb, pc | sb = 0x249f4;
0x000123d0 ldr.w r7, [sb] | r7 = *(0x249f4);
0x000123d4 cmp r7, 0 |
| if (r7 < 0) {
0x000123d6 blt.w 0x125be | goto label_11;
| }
| label_6:
0x000123da cmp r7, 0 |
| if (r7 != 0) {
0x000123dc bne 0x124da | goto label_12;
| }
| label_7:
0x000123de movs r7, 0 | r7 = 0;
| label_4:
0x000123e0 cmp.w r8, 0 |
| if (r8 == 0) {
0x000123e4 beq.w 0x12556 | goto label_13;
| }
0x000123e8 ldr.w r0, [r8] | r0 = *(r8);
0x000123ec cmp r6, 0 |
| if (r6 == 0) {
0x000123ee beq.w 0x1252a | goto label_14;
| }
0x000123f2 ldr r3, [pc, 0x230] |
0x000123f4 add.w sb, sp, 0x48 | sb += var_48h;
0x000123f8 str r0, [sp, 4] | var_4h = r0;
0x000123fa movs r2, 1 | r2 = 1;
0x000123fc mov r0, sb | r0 = sb;
0x000123fe add r3, pc | r3 = 0x24a28;
0x00012400 str r3, [sp] | *(sp) = r3;
0x00012402 movs r3, 0x10 | r3 = 0x10;
0x00012404 mov r1, r3 | r1 = r3;
0x00012406 blx 0x47a8 | config_parse_many ();
| label_2:
0x0001240a mov r0, r6 | r0 = r6;
0x0001240c blx 0x479c | prioq_ensure_allocated ();
0x00012410 add r3, sp, 0x78 | r3 += var_78h;
0x00012412 add.w r3, r3, r7, lsl 3 | r3 += (r7 << 3);
0x00012416 adds r7, 1 | r7++;
0x00012418 strd r6, r0, [r3, -0x58] | __asm ("strd r6, r0, [r3, -0x58]");
| label_1:
0x0001241c mov r0, sb | r0 = sb;
0x0001241e add.w r8, r7, 1 | r8 = r7 + 1;
0x00012422 blx 0x479c | prioq_ensure_allocated ();
0x00012426 add r3, sp, 0x78 | r3 += var_78h;
0x00012428 add.w r7, r3, r7, lsl 3 | r7 = r3 + (r7 << 3);
0x0001242c strd sb, r0, [r7, -0x58] | __asm ("strd sb, r0, [r7, -0x58]");
| label_3:
0x00012430 mov r0, r5 | r0 = r5;
0x00012432 blx 0x479c | prioq_ensure_allocated ();
0x00012436 ldr r2, [pc, 0x1f0] |
0x00012438 add r3, sp, 0x78 | r3 += var_78h;
0x0001243a add.w r3, r3, r8, lsl 3 | r3 += (r8 << 3);
0x0001243e ldr.w r6, [r4, 0x1a4] | r6 = *((r4 + 0x1a4));
0x00012442 add r2, pc | r2 = 0x24a70;
0x00012444 str r0, [r3, -0x54] | *((r3 - 0x54)) = r0;
0x00012448 adds r2, 8 | r2 += 8;
0x0001244a str r5, [r3, -0x58] | *((r3 - 0x58)) = r5;
0x0001244e add r3, sp, 0x78 | r3 += var_78h;
0x00012450 ldm.w r2, {r0, r1} | r0 = *(r2);
| r1 = *((r2 + 4));
0x00012454 add.w r3, r3, r8, lsl 3 | r3 += (r8 << 3);
0x00012458 subs r3, 0x50 | r3 -= 0x50;
0x0001245a stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x0001245e cmp r6, 0 |
| if (r6 == 0) {
0x00012460 beq.w 0x12590 | goto label_15;
| }
| label_5:
0x00012464 movw r1, 0x101 |
0x00012468 mov r0, r6 | r0 = r6;
0x0001246a movt r1, 8 | r1 = 0x80101;
0x0001246e blx 0x4b04 | r0 = fcn_00004b04 ();
0x00012472 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00012474 blt 0x124b0 | goto label_16;
| }
0x00012476 add.w r2, r8, 2 | r2 = r8 + 2;
0x0001247a add r1, sp, 0x20 | r1 += var_20h;
0x0001247c blx 0x499c | r0 = fcn_0000499c ();
0x00012480 cmp r0, 0 |
0x00012482 bge 0x123a2 |
| }
0x00012484 blx 0x409c | r0 = fcn_0000409c ();
0x00012488 cmp r0, 6 |
| if (r0 <= 6) {
0x0001248a ble 0x123a2 | goto label_0;
| }
0x0001248c blx 0x4918 | fcn_00004918 ();
0x00012490 ldr r2, [pc, 0x198] |
0x00012492 ldr r1, [r0] | r1 = *(r0);
0x00012494 ldr r3, [pc, 0x198] |
0x00012496 ldr r0, [pc, 0x19c] |
0x00012498 add r2, pc | r2 = 0x24ac8;
0x0001249a adds r2, 7 | r2 += 7;
0x0001249c str r6, [sp, 8] | var_8h = r6;
0x0001249e add r3, pc | r3 = 0x24ad2;
0x000124a0 add r0, pc | r0 = 0x24ada;
0x000124a2 str r3, [sp, 4] | var_4h = r3;
0x000124a4 str r0, [sp] | *(sp) = r0;
0x000124a6 movs r3, 0x66 | r3 = 0x66;
0x000124a8 movs r0, 7 | r0 = 7;
0x000124aa blx 0x43cc | fcn_000043cc ();
0x000124ae b 0x123a2 | goto label_0;
| label_16:
0x000124b0 blx 0x409c | r0 = fcn_0000409c ();
0x000124b4 cmp r0, 6 |
| if (r0 <= 6) {
0x000124b6 ble.w 0x123a2 | goto label_0;
| }
0x000124ba ldr r2, [pc, 0x17c] |
0x000124bc mov r1, r4 | r1 = r4;
0x000124be ldr r3, [pc, 0x17c] |
0x000124c0 ldr r0, [pc, 0x17c] |
0x000124c2 add r2, pc | r2 = 0x24b00;
0x000124c4 str r6, [sp, 8] | var_8h = r6;
0x000124c6 add r3, pc | r3 = 0x24b08;
0x000124c8 adds r2, 7 | r2 += 7;
0x000124ca add r0, pc | r0 = 0x24b0e;
0x000124cc str r3, [sp, 4] | var_4h = r3;
0x000124ce str r0, [sp] | *(sp) = r0;
0x000124d0 movs r3, 0x61 | r3 = 0x61;
0x000124d2 movs r0, 7 | r0 = 7;
0x000124d4 blx 0x43cc | fcn_000043cc ();
0x000124d8 b 0x123a2 | goto label_0;
| label_12:
0x000124da add r1, sp, 0x18 | r1 += var_18h;
0x000124dc movs r0, 1 | r0 = 1;
0x000124de blx 0x42b4 | r0 = fcn_000042b4 ();
0x000124e2 cmp r0, 0 |
| if (r0 != 0) {
0x000124e4 bne.w 0x125fa | goto label_17;
| }
0x000124e8 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000124ea mov.w r2, 0x3e8 | r2 = 0x3e8;
0x000124ee movs r3, 0 | r3 = 0;
0x000124f0 add r7, sp, 0x58 | r7 += var_58h;
0x000124f2 asrs r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x000124f4 bl 0x15048 | fcn_00015048 (r0, r1, r2, r3);
0x000124f8 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000124fa movs r2, 1 | r2 = 1;
0x000124fc strd r0, r1, [sp, 8] | __asm ("strd r0, r1, [sp, 8]");
0x00012500 mov r0, r7 | r0 = r7;
0x00012502 str r3, [sp, 4] | var_4h = r3;
0x00012504 ldr r3, [pc, 0x13c] |
0x00012506 add r3, pc | r3 = 0x24b4e;
0x00012508 str r3, [sp] | *(sp) = r3;
0x0001250a movs r3, 0x19 | r3 = 0x19;
0x0001250c mov r1, r3 | r1 = r3;
0x0001250e blx 0x47a8 | r0 = config_parse_many ();
0x00012512 cmp r0, 0x18 |
| if (r0 <= 0x18) {
0x00012514 ble 0x12582 | goto label_18;
| }
0x00012516 ldr r1, [pc, 0x130] |
0x00012518 movs r2, 0x3b | r2 = 0x3b;
0x0001251a ldr r3, [pc, 0x130] |
0x0001251c ldr r0, [pc, 0x130] |
0x0001251e add r1, pc | r1 = 0x24b6c;
0x00012520 add r3, pc | r3 = 0x24b72;
0x00012522 adds r1, 7 | r1 += 7;
0x00012524 add r0, pc | r0 = 0x24b78;
0x00012526 blx 0x3e4c | fcn_00003e4c ();
| label_14:
0x0001252a add r1, sp, 0x14 | r1 += var_14h;
0x0001252c add.w sb, sp, 0x48 | sb += var_48h;
0x00012530 blx 0x4120 | fcn_00004120 ();
0x00012534 ldr.w r3, [r8] | r3 = *(r8);
0x00012538 movs r2, 1 | r2 = 1;
0x0001253a ldr r6, [sp, 0x14] | r6 = var_14h;
0x0001253c mov r0, sb | r0 = sb;
0x0001253e str r3, [sp, 4] | var_4h = r3;
0x00012540 ldr r3, [pc, 0x110] |
0x00012542 add r3, pc | r3 = 0x24b9a;
0x00012544 str r3, [sp] | *(sp) = r3;
0x00012546 movs r3, 0x10 | r3 = 0x10;
0x00012548 mov r1, r3 | r1 = r3;
0x0001254a blx 0x47a8 | config_parse_many ();
0x0001254e cmp r6, 0 |
| if (r6 == 0) {
0x00012550 beq.w 0x1241c | goto label_1;
| }
0x00012554 b 0x1240a | goto label_2;
| label_13:
0x00012556 mov r8, r7 | r8 = r7;
0x00012558 cmp r6, 0 |
| if (r6 == 0) {
0x0001255a beq.w 0x12430 | goto label_3;
| }
0x0001255e mov r0, r6 | r0 = r6;
0x00012560 add.w r8, r7, 2 | r8 = r7 + 2;
0x00012564 blx 0x479c | prioq_ensure_allocated ();
0x00012568 ldr r2, [pc, 0xec] |
0x0001256a add r3, sp, 0x78 | r3 += var_78h;
0x0001256c add.w r3, r3, r7, lsl 3 | r3 += (r7 << 3);
0x00012570 add r2, pc | r2 = 0x24bcc;
0x00012572 strd r6, r0, [r3, -0x58] | __asm ("strd r6, r0, [r3, -0x58]");
0x00012576 ldm.w r2, {r0, r1} | r0 = *(r2);
| r1 = *((r2 + 4));
0x0001257a subs r3, 0x50 | r3 -= 0x50;
0x0001257c stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x00012580 b 0x12430 | goto label_3;
| label_18:
0x00012582 mov r0, r7 | r0 = r7;
0x00012584 blx 0x479c | r0 = prioq_ensure_allocated ();
0x00012588 strd r7, r0, [sp, 0x20] | __asm ("strd r7, r0, [sp, 0x20]");
0x0001258c movs r7, 1 | r7 = 1;
0x0001258e b 0x123e0 | goto label_4;
| label_15:
0x00012590 ldr r6, [pc, 0xc8] |
0x00012592 add r6, pc | r6 = 0x24bf2;
0x00012594 b 0x12464 | goto label_5;
| label_8:
0x00012596 ldr r1, [pc, 0xc8] |
0x00012598 movs r2, 0x32 | r2 = 0x32;
0x0001259a ldr r3, [pc, 0xc8] |
0x0001259c ldr r0, [pc, 0xc8] |
0x0001259e add r1, pc | r1 = 0x24c04;
0x000125a0 add r3, pc | r3 = 0x24c0a;
0x000125a2 adds r1, 7 | r1 += 7;
0x000125a4 add r0, pc | r0 = 0x24c10;
0x000125a6 blx 0x3e4c | fcn_00003e4c ();
| label_9:
0x000125aa ldr r1, [pc, 0xc0] |
0x000125ac movs r2, 0x33 | r2 = 0x33;
0x000125ae ldr r3, [pc, 0xc0] |
0x000125b0 ldr r0, [pc, 0xc0] |
0x000125b2 add r1, pc | r1 = 0x24c24;
0x000125b4 add r3, pc | r3 = 0x24c2a;
0x000125b6 adds r1, 7 | r1 += 7;
0x000125b8 add r0, pc | r0 = 0x24c30;
0x000125ba blx 0x3e4c | fcn_00003e4c ();
| label_11:
0x000125be ldr r0, [pc, 0xb8] |
0x000125c0 add r1, sp, 0x18 | r1 += var_18h;
0x000125c2 str r2, [sp, 0x18] | var_18h = r2;
0x000125c4 add r0, pc | r0 = 0x24c42;
0x000125c6 blx 0x4ab0 | r0 = fcn_00004ab0 ();
0x000125ca cmp r0, 0 |
| if (r0 >= 0) {
0x000125cc blt 0x125ec |
0x000125ce ldr.w sl, [sp, 0x18] | sl = var_18h;
0x000125d2 mov r0, sl | r0 = sl;
0x000125d4 blx 0x458c | r0 = asprintf_chk ()
0x000125d8 cmp r0, 0 |
0x000125da mov r0, sl | r0 = sl;
0x000125dc ite le |
| if (r0 > 0) {
0x000125de movle r7, 0 | r7 = 0;
| }
| if (r0 <= 0) {
0x000125e0 movgt r7, 1 | r7 = 1;
| }
0x000125e2 str.w r7, [sb] | __asm ("str.w r7, [sb]");
0x000125e6 blx 0x3e8c | fcn_00003e8c ();
0x000125ea b 0x123da | goto label_6;
| }
0x000125ec movs r2, 0 | r2 = 0;
0x000125ee ldr r0, [sp, 0x18] | r0 = var_18h;
0x000125f0 str.w r2, [sb] | __asm ("str.w r2, [sb]");
0x000125f4 blx 0x3e8c | fcn_00003e8c ();
0x000125f8 b 0x123de | goto label_7;
| label_17:
0x000125fa ldr r1, [pc, 0x80] |
0x000125fc movs r2, 0x3a | r2 = 0x3a;
0x000125fe ldr r3, [pc, 0x80] |
0x00012600 ldr r0, [pc, 0x80] |
0x00012602 add r1, pc | r1 = 0x24c84;
0x00012604 add r3, pc | r3 = 0x24c8a;
0x00012606 adds r1, 7 | r1 += 7;
0x00012608 add r0, pc | r0 = 0x24c90;
0x0001260a blx 0x3e4c | fcn_00003e4c ();
| label_10:
0x0001260e blx 0x4474 | fcn_00004474 ();
0x00012612 nop |
0x00012614 adr r7, 0x278 | r7 = 0x278;
0x00012616 movs r0, r0 |
0x00012618 lsls r0, r1, 0x13 | r0 = r1 << 0x13;
0x0001261a movs r0, r0 |
0x0001261c adr r7, 0x168 | r7 = 0x168;
0x0001261e movs r0, r0 |
0x00012620 add r4, sp, 0x2d8 | r4 += arg_2d8h;
0x00012622 movs r0, r0 |
0x00012624 adds r0, 0x5a | r0 += 0x5a;
0x00012626 movs r0, r0 |
0x00012628 add r4, sp, 0xc8 | r4 += var_c8h;
0x0001262a movs r0, r0 |
0x0001262c strh r4, [r7, 0xa] | *((r7 + 0xa)) = r4;
0x0001262e movs r0, r0 |
0x00012630 strh r2, [r4, 0x12] | *((r4 + 0x12)) = r2;
0x00012632 movs r0, r0 |
0x00012634 strh r0, [r1, 0x14] | *((r1 + 0x14)) = r0;
0x00012636 movs r0, r0 |
0x00012638 strh r2, [r2, 0xa] | *((r2 + 0xa)) = r2;
0x0001263a movs r0, r0 |
0x0001263c strh r6, [r2, 0x10] | *((r2 + 0x10)) = r6;
0x0001263e movs r0, r0 |
0x00012640 strh r6, [r3, 0x12] | *((r3 + 0x12)) = r6;
0x00012642 movs r0, r0 |
0x00012644 strh r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
0x00012646 movs r0, r0 |
0x00012648 strh r6, [r6, 6] | *((r6 + 6)) = r6;
0x0001264a movs r0, r0 |
0x0001264c strh r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x0001264e movs r0, r0 |
0x00012650 strh r4, [r2, 0xc] | *((r2 + 0xc)) = r4;
0x00012652 movs r0, r0 |
0x00012654 cmp r7, 0x16 |
0x00012656 movs r0, r0 |
0x00012658 add r3, sp, 0x10 | r3 += var_10h;
0x0001265a movs r0, r0 |
0x0001265c strh r2, [r6, 2] | *((r6 + 2)) = r2;
0x0001265e movs r0, r0 |
0x00012660 strh r6, [r6, 2] | *((r6 + 2)) = r6;
0x00012662 movs r0, r0 |
0x00012664 strh r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x00012666 movs r0, r0 |
0x00012668 ldr r1, [pc, 0x380] | r1 = *(0x129ec);
0x0001266a movs r0, r0 |
0x0001266c strh r2, [r4, 2] | *((r4 + 2)) = r2;
0x0001266e movs r0, r0 |
0x00012670 strh r4, [r1, 0xc] | *((r1 + 0xc)) = r4;
0x00012672 movs r0, r0 |
0x00012674 cmp r6, 0x90 |
0x00012676 movs r0, r0 |
0x00012678 strh r4, [r2, 4] | *((r2 + 4)) = r4;
0x0001267a movs r0, r0 |
0x0001267c strh r2, [r2] | *(r2) = r2;
0x0001267e movs r0, r0 |
0x00012680 strh r4, [r7, 8] | *((r7 + 8)) = r4;
0x00012682 movs r0, r0 |
0x00012684 strh r4, [r6, 2] | *((r6 + 2)) = r4;
0x00012686 movs r0, r0 |
| }
[*] Function sprintf used 10 times systemd-journald