[*] Binary protection state of libsystemd.so.0.34.0
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of libsystemd.so.0.34.0
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x6e17c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0006e17c () | void fcn_0006e17c (int16_t arg_150h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int32_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;
| int16_t var_24h;
| void * big;
| int16_t var_124h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006e17c svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0006e180 sub sp, 0x12c |
0x0006e182 strd r1, r2, [sp, 0x14] | __asm ("strd r1, r2, [var_14h]");
0x0006e186 mov r4, r3 | r4 = r3;
0x0006e188 ands sl, r4, 0x40 | sl = r4 & 0x40;
0x0006e18c mov r6, r0 | r6 = r0;
0x0006e18e ldr.w r2, [pc, 0x5b8] | r2 = *(0x0006e748);
0x0006e192 it ne |
| if (sl == r4) {
0x0006e194 movne sb, 3 | sb = 3;
| }
0x0006e198 ldr.w r3, [pc, 0x5b0] |
0x0006e19c it eq |
| if (sl != r4) {
0x0006e19e moveq sb, 7 | sb = 7;
| }
0x0006e1a2 ldr.w r5, [pc, 0x5ac] | r5 = *(0x0006e750);
0x0006e1a6 add r2, pc | r2 += pc;
0x0006e1a8 ldr.w r8, [sp, 0x150] | r8 = *(arg_150h);
0x0006e1ac ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0006e1ae add r5, pc | r5 += pc;
0x0006e1b0 ldr r3, [r3] | r3 = *(0x6e74c);
0x0006e1b2 str r3, [sp, 0x124] | var_124h = r3;
0x0006e1b4 mov.w r3, 0 | r3 = 0;
0x0006e1b8 bl 0x6d754 | fcn_0006d754 (r0);
0x0006e1bc lsls r2, r4, 0x13 | r2 = r4 << 0x13;
0x0006e1be mov fp, r0 |
| if (r2 < r4) {
0x0006e1c0 bmi.w 0x6e3f0 | goto label_20;
| }
| label_3:
0x0006e1c4 ands r7, r4, 5 | r7 = r4 & 5;
| if (r7 != r4) {
0x0006e1c8 bne.w 0x6e39e | goto label_21;
| }
0x0006e1cc ands r5, r4, 0x80 | r5 = r4 & 0x80;
0x0006e1d0 itt eq |
| if (r5 != r4) {
0x0006e1d2 streq r5, [sp, 0x10] | var_10h = r5;
| }
| if (r5 != r4) {
0x0006e1d4 streq r5, [sp, 0x1c] | var_1ch = r5;
| }
| if (r5 != r4) {
0x0006e1d6 bne.w 0x6e33e | goto label_22;
| }
| label_2:
0x0006e1da tst.w r4, 0x2100 |
| if ((r4 & 0x2100) != 0) {
0x0006e1de bne 0x6e2a2 | goto label_23;
| }
0x0006e1e0 blx 0xf020 | r0 = fcn_0000f020 ();
0x0006e1e4 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 < r0) {
0x0006e1e6 blt.w 0x6e378 | goto label_24;
| }
| if (r7 != r0) {
0x0006e1ea bne 0x6e2c4 | goto label_25;
| }
| label_10:
0x0006e1ec ands r5, r4, 0x20 | r5 = r4 & 0x20;
| if (r5 != r4) {
0x0006e1f0 bne.w 0x6e444 | goto label_26;
| }
| if (r6 != 0) {
0x0006e1f4 cbz r6, 0x6e214 |
| label_5:
0x0006e1f6 mov r0, r6 | r0 = r6;
0x0006e1f8 bl 0x6dcec | r0 = fcn_0006dcec (r0, r1);
0x0006e1fc subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 >= r0) {
0x0006e1fe bge 0x6e214 | goto label_6;
| }
0x0006e200 cmp.w sl, 0 |
0x0006e204 ite ne |
| if (sl == 0) {
0x0006e206 movne r7, 4 | r7 = 4;
| }
| if (sl != 0) {
0x0006e208 moveq r7, 7 | r7 = 7;
| }
0x0006e20a bl 0x68450 | r0 = fcn_00068450 ();
0x0006e20e cmp r0, r7 |
| if (r0 >= r7) {
0x0006e210 bge.w 0x6e64e | goto label_27;
| }
| }
| label_6:
0x0006e214 tst.w r4, 0xc |
| if ((r4 & 0xc) != 0) {
0x0006e218 beq 0x6e232 |
0x0006e21a tst.w r4, 8 |
0x0006e21e mov.w r0, 1 | r0 = 1;
0x0006e222 ite ne |
| if ((r4 & 8) == 0) {
0x0006e224 movne r1, 2 | r1 = 2;
| }
| if ((r4 & 8) != 0) {
0x0006e226 moveq r1, 0xf | r1 = 0xf;
| }
0x0006e228 blx 0xef94 | r0 = fork ();
0x0006e22c cmp r0, 0 |
| if (r0 < 0) {
0x0006e22e blt.w 0x6e674 | goto label_28;
| }
| }
0x0006e232 ands r2, r4, 1 | r2 = r4 & 1;
| if (r2 != r4) {
0x0006e236 bne.w 0x6e406 | goto label_29;
| }
0x0006e23a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006e23c cmp r3, 0 |
| if (r3 != 0) {
0x0006e23e bne.w 0x6e59c | goto label_30;
| }
| label_4:
0x0006e242 lsls r6, r4, 0x1d | r6 = r4 << 0x1d;
| if (r6 < r4) {
0x0006e244 bmi.w 0x6e57c | goto label_31;
| }
| label_14:
0x0006e248 mvns r2, r4 | r2 = ~r4;
0x0006e24a ands r2, r2, 0x300 | r2 &= 0x300;
| if (r2 == r2) {
0x0006e24e beq.w 0x6e536 | goto label_32;
| }
| label_13:
0x0006e252 lsls r0, r4, 0x1e | r0 = r4 << 0x1e;
| if (r0 < r4) {
0x0006e254 bmi.w 0x6e48a | goto label_33;
| }
| label_8:
0x0006e258 cmp r5, 0 |
| if (r5 != 0) {
0x0006e25a bne.w 0x6e52a | goto label_34;
| }
| label_12:
0x0006e25e lsls r1, r4, 0x1b | r1 = r4 << 0x1b;
| if (r1 < r4) {
0x0006e260 bmi.w 0x6e4ee | goto label_35;
| }
0x0006e264 lsls r2, r4, 0x14 | r2 = r4 << 0x14;
| if (r2 < r4) {
0x0006e266 bmi.w 0x6e5d8 | goto label_36;
| }
| label_11:
0x0006e26a lsls r3, r4, 0x15 | r3 = r4 << 0x15;
| if (r3 < r4) {
0x0006e26c bmi.w 0x6e456 | goto label_37;
| }
| label_7:
0x0006e270 cmp.w r8, 0 |
| if (r8 != 0) {
0x0006e274 beq 0x6e27e |
0x0006e276 bl 0x6d754 | fcn_0006d754 (r0);
0x0006e27a str.w r0, [r8] | __asm ("str.w r0, [r8]");
| }
0x0006e27e movs r4, 0 | r4 = 0;
| do {
| label_0:
0x0006e280 ldr.w r2, [pc, 0x4d0] |
0x0006e284 ldr.w r3, [pc, 0x4c4] | r3 = *(0x6e74c);
0x0006e288 add r2, pc | r2 = 0xdc9e0;
0x0006e28a ldr r3, [r2, r3] | r3 = *(0xdc9e0);
0x0006e28c ldr r2, [r3] | r2 = *(0xdc9e0);
0x0006e28e ldr r3, [sp, 0x124] | r3 = var_124h;
0x0006e290 eors r2, r3 | r2 ^= r3;
0x0006e292 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006e296 bne.w 0x6e6dc | goto label_38;
| }
0x0006e29a mov r0, r4 | r0 = r4;
0x0006e29c add sp, 0x12c |
0x0006e29e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_23:
0x0006e2a2 lsls r1, r4, 9 | r1 = r4 << 9;
0x0006e2a4 lsls r3, r4, 0xf | r3 = r4 << 0xf;
0x0006e2a6 and r1, r1, 0x20000 | r1 &= 0x20000;
0x0006e2aa and r3, r3, 0x10000000 | r3 &= 0x10000000;
0x0006e2ae orrs r1, r3 | r1 |= r3;
0x0006e2b0 movs r2, 0 | r2 = 0;
0x0006e2b2 orr r1, r1, 0x11 | r1 |= 0x11;
0x0006e2b6 movs r0, 0x78 | r0 = 0x78;
0x0006e2b8 blx 0xf294 | r0 = fcn_0000f294 ();
0x0006e2bc subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x0006e2be beq.w 0x6e4e8 | goto label_39;
| }
| if (r7 < r0) {
0x0006e2c2 blt 0x6e378 | goto label_24;
| }
| label_25:
0x0006e2c4 bl 0x68450 | r0 = fcn_00068450 ();
0x0006e2c8 cmp r0, 6 |
| if (r0 > 6) {
0x0006e2ca ble 0x6e2fc |
0x0006e2cc mov r3, r6 | r3 = r6;
0x0006e2ce cmp r6, 0 |
| if (r6 == 0) {
0x0006e2d0 beq.w 0x6e688 | goto label_40;
| }
| label_16:
0x0006e2d4 strd r3, r7, [sp, 8] | __asm ("strd r3, r7, [var_8h]");
0x0006e2d8 movs r1, 0 | r1 = 0;
0x0006e2da ldr.w r3, [pc, 0x47c] |
0x0006e2de movs r0, 7 | r0 = 7;
0x0006e2e0 ldr.w r2, [pc, 0x478] |
0x0006e2e4 add r3, pc | r3 = 0xdca42;
0x0006e2e6 str r3, [sp, 4] | var_4h = r3;
0x0006e2e8 add r2, pc | r2 = 0xdca48;
0x0006e2ea ldr.w r3, [pc, 0x474] |
0x0006e2ee adds r2, 7 | r2 += 7;
0x0006e2f0 add r3, pc | r3 = 0xdca56;
0x0006e2f2 str r3, [sp] | *(sp) = r3;
0x0006e2f4 movw r3, 0x4f2 | r3 = 0x4f2;
0x0006e2f8 bl 0x68ca8 | fcn_00068ca8 (r0, r1, r2, r3, r4, r5, r6);
| }
0x0006e2fc lsls r3, r4, 0x18 | r3 = r4 << 0x18;
| if (r3 < r4) {
0x0006e2fe bpl 0x6e322 |
0x0006e300 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006e302 cmp r3, 0 |
| if (r3 != 0) {
0x0006e304 bne.w 0x6e614 | goto label_41;
| }
| label_15:
0x0006e308 cmp.w sl, 0 |
0x0006e30c mov r0, r6 | r0 = r6;
0x0006e30e ite eq |
| if (sl != 0) {
0x0006e310 moveq r2, sl | r2 = sl;
| }
| if (sl == 0) {
0x0006e312 movne r2, 3 | r2 = 3;
| }
0x0006e314 mov r1, r7 | r1 = r7;
0x0006e316 bl 0x6d8fc | r0 = fcn_0006d8fc (r0, r1, r2);
0x0006e31a subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0006e31c blt 0x6e32e | goto label_1;
| }
| if (r4 != r0) {
0x0006e31e bne.w 0x6e66e | goto label_42;
| }
| }
0x0006e322 cmp.w r8, 0 |
| if (r8 != 0) {
0x0006e326 beq 0x6e32c |
0x0006e328 str.w r7, [r8] | __asm ("str.w r7, [r8]");
| }
0x0006e32c movs r4, 1 | r4 = 1;
| label_1:
0x0006e32e cmp r5, 0 |
0x0006e330 beq 0x6e280 |
| } while (r5 == 0);
0x0006e332 movs r2, 0 | r2 = 0;
0x0006e334 mov r1, r5 | r1 = r5;
0x0006e336 movs r0, 2 | r0 = 2;
0x0006e338 blx 0xed24 | fprintf_chk ()
0x0006e33c b 0x6e280 | goto label_0;
| label_22:
0x0006e33e add r5, sp, 0xa4 | r5 += big;
0x0006e340 mov r0, r5 | r0 = r5;
0x0006e342 blx 0xdfb0 | r0 = sigemptyset ();
0x0006e346 cmp r0, 0 |
| if (r0 < 0) {
0x0006e348 blt.w 0x6e638 | goto label_43;
| }
0x0006e34c movs r1, 0x11 | r1 = 0x11;
0x0006e34e mov r0, r5 | r0 = r5;
0x0006e350 blx 0xe9b8 | r0 = memmem (r0, r1, r2, r3);
0x0006e354 cmp r0, 0 |
0x0006e356 it ge |
| if (r0 < 0) {
0x0006e358 strge r7, [sp, 0x10] | var_10h = r7;
| }
| if (r0 < 0) {
0x0006e35a bge 0x6e3b2 |
0x0006e35c ldr.w r1, [pc, 0x404] |
0x0006e360 movw r2, 0x4dd | r2 = 0x4dd;
0x0006e364 ldr.w r3, [pc, 0x400] | r3 = *(0x0006e768);
0x0006e368 ldr.w r0, [pc, 0x400] | r0 = *(0x0006e76c);
0x0006e36c add r1, pc | r1 = 0xdcad4;
0x0006e36e add r3, pc | r3 += pc;
0x0006e370 adds r1, 7 | r1 += 7;
0x0006e372 add r0, pc | r0 += pc;
0x0006e374 bl 0x68d78 | r0 = fcn_00068d78 (r0, r1, r2, r3);
| label_24:
0x0006e378 blx 0xf3c0 | r0 = fcn_0000f3c0 ();
0x0006e37c ldr r4, [r0] | r4 = *(r0);
0x0006e37e bl 0x68450 | r0 = fcn_00068450 ();
0x0006e382 cmp r0, sb |
| if (r0 >= sb) {
0x0006e384 bge.w 0x6e4c6 | goto label_44;
| }
0x0006e388 cmp r4, 0 |
0x0006e38a it lt |
| if (r4 < 0) {
0x0006e38c rsblt r4, r4, 0 | __asm ("rsblt r4, r4, 0");
| }
0x0006e38e bic r4, r4, 0x40000000 | r4 = BIT_MASK (r4, 0x40000000);
0x0006e392 rsbs r4, r4, 0 | r4 -= ;
| label_9:
0x0006e394 cmp r4, 0 |
0x0006e396 it ge |
| if (r4 < 0) {
0x0006e398 mvnge r4, 0x55 | r4 = ~0x55;
| }
0x0006e39c b 0x6e32e | goto label_1;
| label_21:
0x0006e39e add r5, sp, 0xa4 | r5 += big;
0x0006e3a0 mov r0, r5 | r0 = r5;
0x0006e3a2 blx 0xeef4 | r0 = fcn_0000eef4 ();
0x0006e3a6 cmp r0, 0 |
0x0006e3a8 itt ge |
| if (r0 < 0) {
0x0006e3aa movge r3, 1 | r3 = 1;
| }
| if (r0 < 0) {
0x0006e3ac strge r3, [sp, 0x10] | var_10h = r3;
| }
| if (r0 < 0) {
0x0006e3ae blt.w 0x6e6b0 | goto label_45;
| }
| }
0x0006e3b2 mov r1, r5 | r1 = r5;
0x0006e3b4 add r5, sp, 0x24 | r5 += var_24h;
0x0006e3b6 mov r2, r5 | r2 = r5;
0x0006e3b8 movs r0, 2 | r0 = 2;
0x0006e3ba blx 0xed24 | r0 = fprintf_chk ()
0x0006e3be cmp r0, 0 |
0x0006e3c0 itt ge |
| if (r0 < 0) {
0x0006e3c2 movge r3, 1 | r3 = 1;
| }
| if (r0 >= 0) {
0x0006e3c4 strge r3, [sp, 0x1c] | var_1ch = r3;
| goto label_46;
| }
| if (r0 >= 0) {
| label_46:
0x0006e3c6 bge.w 0x6e1da | goto label_2;
| }
0x0006e3ca blx 0xf3c0 | r0 = fcn_0000f3c0 ();
0x0006e3ce ldr r4, [r0] | r4 = *(r0);
0x0006e3d0 bl 0x68450 | r0 = fcn_00068450 ();
0x0006e3d4 cmp r0, sb |
| if (r0 >= sb) {
0x0006e3d6 bge.w 0x6e68e | goto label_47;
| }
0x0006e3da cmp r4, 0 |
0x0006e3dc it lt |
| if (r4 < 0) {
0x0006e3de rsblt r4, r4, 0 | __asm ("rsblt r4, r4, 0");
| }
0x0006e3e0 bic r4, r4, 0x40000000 | r4 = BIT_MASK (r4, 0x40000000);
0x0006e3e4 rsbs r4, r4, 0 | r4 -= ;
| label_17:
0x0006e3e6 cmp r4, 0 |
0x0006e3e8 it ge |
| if (r4 < 0) {
0x0006e3ea mvnge r4, 0x55 | r4 = ~0x55;
| }
0x0006e3ee b 0x6e280 | goto label_0;
| label_20:
0x0006e3f0 ldr r3, [pc, 0x37c] | r3 = *(0x6e770);
0x0006e3f2 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0006e3f4 ldr r0, [r3] | r0 = *(0x6e770);
0x0006e3f6 blx 0xe75c | fcn_0000e75c ();
0x0006e3fa ldr r3, [pc, 0x378] | r3 = *(0x6e776);
0x0006e3fc ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0006e3fe ldr r0, [r3] | r0 = *(0x6e776);
0x0006e400 blx 0xe75c | fcn_0000e75c ();
0x0006e404 b 0x6e1c4 | goto label_3;
| label_29:
0x0006e406 bl 0x6ef84 | r0 = fcn_0006ef84 ();
0x0006e40a subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x0006e40c blt.w 0x6e700 | goto label_48;
| }
0x0006e410 bl 0x6efd8 | r0 = fcn_0006efd8 ();
0x0006e414 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 >= r0) {
0x0006e416 bge.w 0x6e242 | goto label_4;
| }
0x0006e41a bl 0x68450 | r0 = fcn_00068450 ();
0x0006e41e cmp r0, sb |
| if (r0 < sb) {
0x0006e420 blt.w 0x6e682 | goto label_18;
| }
0x0006e424 ldr r2, [pc, 0x350] |
0x0006e426 mov r1, r6 | r1 = r6;
0x0006e428 ldr r4, [pc, 0x350] |
0x0006e42a mov r0, sb | r0 = sb;
0x0006e42c ldr r3, [pc, 0x350] |
0x0006e42e add r2, pc | r2 = 0xdcbaa;
0x0006e430 add r4, pc | r4 = 0xdcbb0;
0x0006e432 adds r2, 7 | r2 += 7;
0x0006e434 add r3, pc | r3 = 0xdcbb8;
0x0006e436 strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x0006e43a movw r3, 0x52b | r3 = 0x52b;
0x0006e43e bl 0x68ca8 | fcn_00068ca8 (r0, r1, r2, r3, r4, r5, r6);
0x0006e442 b 0x6e682 | goto label_18;
| label_26:
0x0006e444 bl 0x683f4 | fcn_000683f4 ();
0x0006e448 movs r0, 1 | r0 = 1;
0x0006e44a bl 0x696c8 | fcn_000696c8 (r0);
0x0006e44e cmp r6, 0 |
| if (r6 != 0) {
0x0006e450 bne.w 0x6e1f6 | goto label_5;
| }
0x0006e454 b 0x6e214 | goto label_6;
| label_37:
0x0006e456 bl 0x6edd4 | r0 = fcn_0006edd4 ();
0x0006e45a subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x0006e45c bge.w 0x6e270 | goto label_7;
| }
0x0006e460 bl 0x68450 | r0 = fcn_00068450 ();
0x0006e464 cmp r0, sb |
| if (r0 < sb) {
0x0006e466 blt.w 0x6e682 | goto label_18;
| }
0x0006e46a ldr r2, [pc, 0x318] |
0x0006e46c mov r1, r4 | r1 = r4;
0x0006e46e ldr r5, [pc, 0x318] |
0x0006e470 mov r0, sb | r0 = sb;
0x0006e472 ldr r3, [pc, 0x318] |
0x0006e474 add r2, pc | r2 = 0xdcbfe;
0x0006e476 add r5, pc | r5 = 0xdcc04;
0x0006e478 adds r2, 7 | r2 += 7;
0x0006e47a add r3, pc | r3 = 0xdcc0c;
0x0006e47c strd r3, r5, [sp] | __asm ("strd r3, r5, [sp]");
0x0006e480 mov.w r3, 0x570 | r3 = 0x570;
0x0006e484 bl 0x68ca8 | fcn_00068ca8 (r0, r1, r2, r3, r4, r5, r6);
0x0006e488 b 0x6e682 | goto label_18;
| label_33:
0x0006e48a bl 0x683f4 | fcn_000683f4 ();
0x0006e48e ldrd r0, r1, [sp, 0x14] | __asm ("ldrd r0, r1, [var_14h]");
0x0006e492 bl 0x61ff4 | r0 = fcn_00061ff4 (r0, r1);
0x0006e496 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 >= r0) {
0x0006e498 bge.w 0x6e258 | goto label_8;
| }
0x0006e49c bl 0x68450 | r0 = fcn_00068450 ();
0x0006e4a0 cmp r0, sb |
| if (r0 < sb) {
0x0006e4a2 blt.w 0x6e682 | goto label_18;
| }
0x0006e4a6 ldr r2, [pc, 0x2e8] |
0x0006e4a8 mov r1, r6 | r1 = r6;
0x0006e4aa ldr r4, [pc, 0x2e8] |
0x0006e4ac mov r0, sb | r0 = sb;
0x0006e4ae ldr r3, [pc, 0x2e8] |
0x0006e4b0 add r2, pc | r2 = 0xdcc46;
0x0006e4b2 add r4, pc | r4 = 0xdcc4c;
0x0006e4b4 adds r2, 7 | r2 += 7;
0x0006e4b6 add r3, pc | r3 = 0xdcc54;
0x0006e4b8 strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x0006e4bc movw r3, 0x554 | r3 = 0x554;
0x0006e4c0 bl 0x68ca8 | fcn_00068ca8 (r0, r1, r2, r3, r4, r5, r6);
0x0006e4c4 b 0x6e682 | goto label_18;
| label_44:
0x0006e4c6 ldr r3, [pc, 0x2d4] |
0x0006e4c8 mov r1, r4 | r1 = r4;
0x0006e4ca ldr r2, [pc, 0x2d4] |
0x0006e4cc mov r0, sb | r0 = sb;
0x0006e4ce add r3, pc | r3 = 0xdcc70;
0x0006e4d0 str r3, [sp, 4] | var_4h = r3;
0x0006e4d2 add r2, pc | r2 = 0xdcc78;
0x0006e4d4 ldr r3, [pc, 0x2cc] |
0x0006e4d6 adds r2, 7 | r2 += 7;
0x0006e4d8 add r3, pc | r3 = 0xdcc80;
0x0006e4da str r3, [sp] | *(sp) = r3;
0x0006e4dc movw r3, 0x4ee | r3 = 0x4ee;
0x0006e4e0 bl 0x68ca8 | r0 = fcn_00068ca8 (r0, r1, r2, r3, r4, r5, r6);
0x0006e4e4 mov r4, r0 | r4 = r0;
0x0006e4e6 b 0x6e394 | goto label_9;
| label_39:
0x0006e4e8 bl 0x6d4a4 | fcn_0006d4a4 ();
0x0006e4ec b 0x6e1ec | goto label_10;
| label_35:
0x0006e4ee mov.w r2, -1 | r2 = -1;
0x0006e4f2 mov r1, r2 | r1 = r2;
0x0006e4f4 mov r0, r2 | r0 = r2;
0x0006e4f6 bl 0x624e4 | r0 = fcn_000624e4 (r0, r1, r2, r3, r4);
0x0006e4fa subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 >= r0) {
0x0006e4fc bge.w 0x6e26a | goto label_11;
| }
0x0006e500 bl 0x68450 | r0 = fcn_00068450 ();
0x0006e504 cmp r0, sb |
| if (r0 < sb) {
0x0006e506 blt.w 0x6e682 | goto label_18;
| }
0x0006e50a ldr r2, [pc, 0x29c] |
0x0006e50c mov r1, r5 | r1 = r5;
0x0006e50e ldr r4, [pc, 0x29c] |
0x0006e510 mov r0, sb | r0 = sb;
0x0006e512 ldr r3, [pc, 0x29c] |
0x0006e514 add r2, pc | r2 = 0xdccc2;
0x0006e516 add r4, pc | r4 = 0xdccc8;
0x0006e518 adds r2, 7 | r2 += 7;
0x0006e51a add r3, pc | r3 = 0xdccd0;
0x0006e51c strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x0006e520 movw r3, 0x562 | r3 = 0x562;
0x0006e524 bl 0x68ca8 | fcn_00068ca8 (r0, r1, r2, r3, r4, r5, r6);
0x0006e528 b 0x6e682 | goto label_18;
| label_34:
0x0006e52a bl 0x680b4 | fcn_000680b4 ();
0x0006e52e movs r0, 0 | r0 = 0;
0x0006e530 bl 0x696c8 | fcn_000696c8 (r0);
0x0006e534 b 0x6e25e | goto label_12;
| label_32:
0x0006e536 ldr r1, [pc, 0x27c] |
0x0006e538 mov.w r3, 0x84000 | r3 = 0x84000;
0x0006e53c mov r0, r2 | r0 = r2;
0x0006e53e str r2, [sp] | *(sp) = r2;
0x0006e540 add r1, pc | r1 = 0xdccfa;
0x0006e542 blx 0xec64 | r0 = fcn_0000ec64 ();
0x0006e546 cmp r0, 0 |
| if (r0 >= 0) {
0x0006e548 bge.w 0x6e252 | goto label_13;
| }
0x0006e54c blx 0xf3c0 | r0 = fcn_0000f3c0 ();
0x0006e550 ldr r5, [r0] | r5 = *(r0);
0x0006e552 bl 0x68450 | r0 = fcn_00068450 ();
0x0006e556 cmp r0, sb |
| if (r0 < sb) {
0x0006e558 blt.w 0x6e682 | goto label_18;
| }
0x0006e55c ldr r2, [pc, 0x258] |
0x0006e55e mov r1, r5 | r1 = r5;
0x0006e560 ldr r4, [pc, 0x258] |
0x0006e562 mov r0, sb | r0 = sb;
0x0006e564 ldr r3, [pc, 0x258] |
0x0006e566 add r2, pc | r2 = 0xdcd22;
0x0006e568 add r4, pc | r4 = 0xdcd28;
0x0006e56a adds r2, 7 | r2 += 7;
0x0006e56c add r3, pc | r3 = 0xdcd30;
0x0006e56e strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x0006e572 movw r3, 0x549 | r3 = 0x549;
0x0006e576 bl 0x68ca8 | fcn_00068ca8 (r0, r1, r2, r3, r4, r5, r6);
0x0006e57a b 0x6e682 | goto label_18;
| label_31:
0x0006e57c blx 0xe964 | r0 = sigaddset ();
0x0006e580 cmp r0, 0 |
0x0006e582 it ne |
| if (r0 == 0) {
0x0006e584 cmpne fp, r0 | __asm ("cmpne fp, r0");
| goto label_49;
| }
| if (r0 == 0) {
| label_49:
0x0006e586 beq.w 0x6e248 | goto label_14;
| }
0x0006e58a bl 0x68450 | r0 = fcn_00068450 ();
0x0006e58e cmp r0, 6 |
| if (r0 > 6) {
0x0006e590 bgt.w 0x6e728 | goto label_50;
| }
| label_19:
0x0006e594 movs r0, 0xf | r0 = 0xf;
0x0006e596 blx 0xea24 | pwrite64 ();
0x0006e59a b 0x6e682 | goto label_18;
| label_30:
0x0006e59c add r1, sp, 0x24 | r1 += var_24h;
0x0006e59e movs r0, 2 | r0 = 2;
0x0006e5a0 blx 0xed24 | r0 = fprintf_chk ()
0x0006e5a4 cmp r0, 0 |
| if (r0 >= 0) {
0x0006e5a6 bge.w 0x6e242 | goto label_4;
| }
0x0006e5aa blx 0xf3c0 | r0 = fcn_0000f3c0 ();
0x0006e5ae ldr r5, [r0] | r5 = *(r0);
0x0006e5b0 bl 0x68450 | r0 = fcn_00068450 ();
0x0006e5b4 cmp r0, sb |
| if (r0 < sb) {
0x0006e5b6 blt 0x6e682 | goto label_18;
| }
0x0006e5b8 ldr r2, [pc, 0x208] |
0x0006e5ba mov r1, r5 | r1 = r5;
0x0006e5bc ldr r4, [pc, 0x208] |
0x0006e5be mov r0, sb | r0 = sb;
0x0006e5c0 ldr r3, [pc, 0x208] |
0x0006e5c2 add r2, pc | r2 = 0xdcd8a;
0x0006e5c4 add r4, pc | r4 = 0xdcd90;
0x0006e5c6 adds r2, 7 | r2 += 7;
0x0006e5c8 add r3, pc | r3 = 0xdcd98;
0x0006e5ca strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x0006e5ce mov.w r3, 0x530 | r3 = 0x530;
0x0006e5d2 bl 0x68ca8 | fcn_00068ca8 (r0, r1, r2, r3, r4, r5, r6);
0x0006e5d6 b 0x6e682 | goto label_18;
| label_36:
0x0006e5d8 movs r1, 1 | r1 = 1;
0x0006e5da movs r0, 2 | r0 = 2;
0x0006e5dc blx 0xef30 | r0 = fcn_0000ef30 ();
0x0006e5e0 cmp r0, 0 |
| if (r0 >= 0) {
0x0006e5e2 bge.w 0x6e26a | goto label_11;
| }
0x0006e5e6 blx 0xf3c0 | r0 = fcn_0000f3c0 ();
0x0006e5ea ldr r5, [r0] | r5 = *(r0);
0x0006e5ec bl 0x68450 | r0 = fcn_00068450 ();
0x0006e5f0 cmp r0, sb |
| if (r0 < sb) {
0x0006e5f2 blt 0x6e682 | goto label_18;
| }
0x0006e5f4 ldr r2, [pc, 0x1d8] |
0x0006e5f6 mov r1, r5 | r1 = r5;
0x0006e5f8 ldr r4, [pc, 0x1d8] |
0x0006e5fa mov r0, sb | r0 = sb;
0x0006e5fc ldr r3, [pc, 0x1d8] |
0x0006e5fe add r2, pc | r2 = 0xdcdd2;
0x0006e600 add r4, pc | r4 = 0xdcdd8;
0x0006e602 adds r2, 7 | r2 += 7;
0x0006e604 add r3, pc | r3 = 0xdcde0;
0x0006e606 strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x0006e60a mov.w r3, 0x568 | r3 = 0x568;
0x0006e60e bl 0x68ca8 | fcn_00068ca8 (r0, r1, r2, r3, r4, r5, r6);
0x0006e612 b 0x6e682 | goto label_18;
| label_41:
0x0006e614 add r4, sp, 0xa4 | r4 += big;
0x0006e616 movs r2, 0x80 | r2 = 0x80;
0x0006e618 add r1, sp, 0x24 | r1 += var_24h;
0x0006e61a mov r0, r4 | r0 = r4;
0x0006e61c blx 0xe8b0 | fcn_0000e8b0 ();
0x0006e620 movs r1, 0x11 | r1 = 0x11;
0x0006e622 mov r0, r4 | r0 = r4;
0x0006e624 blx 0xe9b8 | r0 = memmem (r0, r1, r2, r3);
0x0006e628 cmp r0, 0 |
| if (r0 < 0) {
0x0006e62a blt 0x6e6c6 | goto label_51;
| }
0x0006e62c mov r1, r4 | r1 = r4;
0x0006e62e movs r2, 0 | r2 = 0;
0x0006e630 movs r0, 2 | r0 = 2;
0x0006e632 blx 0xed24 | fprintf_chk ()
0x0006e636 b 0x6e308 | goto label_15;
| label_43:
0x0006e638 ldr r1, [pc, 0x1a0] |
0x0006e63a movw r2, 0x4dc | r2 = 0x4dc;
0x0006e63e ldr r3, [pc, 0x1a0] |
0x0006e640 ldr r0, [pc, 0x1a0] |
0x0006e642 add r1, pc | r1 = 0xdce22;
0x0006e644 add r3, pc | r3 = 0xdce2a;
0x0006e646 adds r1, 7 | r1 += 7;
0x0006e648 add r0, pc | r0 = 0xdce30;
0x0006e64a bl 0x68d78 | fcn_00068d78 (r0, r1, r2, r3);
| label_27:
0x0006e64e ldr r3, [pc, 0x198] |
0x0006e650 mov r1, r6 | r1 = r6;
0x0006e652 ldr r2, [pc, 0x198] |
0x0006e654 mov r0, r7 | r0 = r7;
0x0006e656 add r3, pc | r3 = 0xdce44;
0x0006e658 str r3, [sp, 4] | var_4h = r3;
0x0006e65a add r2, pc | r2 = 0xdce4c;
0x0006e65c ldr r3, [pc, 0x190] |
0x0006e65e adds r2, 7 | r2 += 7;
0x0006e660 add r3, pc | r3 = 0xdce54;
0x0006e662 str r3, [sp] | *(sp) = r3;
0x0006e664 movw r3, 0x517 | r3 = 0x517;
0x0006e668 bl 0x68ca8 | fcn_00068ca8 (r0, r1, r2, r3, r4, r5, r6);
0x0006e66c b 0x6e214 | goto label_6;
| label_42:
0x0006e66e mvn r4, 0x46 | r4 = ~0x46;
0x0006e672 b 0x6e32e | goto label_1;
| label_28:
0x0006e674 blx 0xf3c0 | r0 = fcn_0000f3c0 ();
0x0006e678 ldr r5, [r0] | r5 = *(r0);
0x0006e67a bl 0x68450 | r0 = fcn_00068450 ();
0x0006e67e cmp r0, sb |
0x0006e680 bge 0x6e6e0 |
| while (1) {
| label_18:
0x0006e682 movs r0, 1 | r0 = 1;
0x0006e684 blx 0xe578 | fcn_0000e578 ();
| label_40:
0x0006e688 ldr r3, [pc, 0x168] |
0x0006e68a add r3, pc | r3 = 0xdce82;
0x0006e68c b 0x6e2d4 | goto label_16;
| label_47:
0x0006e68e ldr r2, [pc, 0x168] |
0x0006e690 mov r1, r4 | r1 = r4;
0x0006e692 ldr r5, [pc, 0x168] |
0x0006e694 mov r0, sb | r0 = sb;
0x0006e696 ldr r3, [pc, 0x168] |
0x0006e698 add r2, pc | r2 = 0xdce96;
0x0006e69a add r5, pc | r5 = 0xdce9c;
0x0006e69c adds r2, 7 | r2 += 7;
0x0006e69e add r3, pc | r3 = 0xdcea4;
0x0006e6a0 strd r3, r5, [sp] | __asm ("strd r3, r5, [sp]");
0x0006e6a4 movw r3, 0x4e3 | r3 = 0x4e3;
0x0006e6a8 bl 0x68ca8 | r0 = fcn_00068ca8 (r0, r1, r2, r3, r4, r5, r6);
0x0006e6ac mov r4, r0 | r4 = r0;
0x0006e6ae b 0x6e3e6 | goto label_17;
| label_45:
0x0006e6b0 ldr r1, [pc, 0x150] |
0x0006e6b2 movw r2, 0x4d6 | r2 = 0x4d6;
0x0006e6b6 ldr r3, [pc, 0x150] |
0x0006e6b8 ldr r0, [pc, 0x150] |
0x0006e6ba add r1, pc | r1 = 0xdcec2;
0x0006e6bc add r3, pc | r3 = 0xdceca;
0x0006e6be adds r1, 7 | r1 += 7;
0x0006e6c0 add r0, pc | r0 = 0xdced0;
0x0006e6c2 bl 0x68d78 | fcn_00068d78 (r0, r1, r2, r3);
| label_51:
0x0006e6c6 ldr r1, [pc, 0x148] |
0x0006e6c8 mov.w r2, 0x4f8 | r2 = 0x4f8;
0x0006e6cc ldr r3, [pc, 0x144] |
0x0006e6ce ldr r0, [pc, 0x148] |
0x0006e6d0 add r1, pc | r1 = 0xdcee6;
0x0006e6d2 add r3, pc | r3 = 0xdceea;
0x0006e6d4 adds r1, 7 | r1 += 7;
0x0006e6d6 add r0, pc | r0 = 0xdcef4;
0x0006e6d8 bl 0x68d78 | r0 = fcn_00068d78 (r0, r1, r2, r3);
| label_38:
0x0006e6dc blx 0xed3c | strnlen ();
0x0006e6e0 ldr r2, [pc, 0x138] |
0x0006e6e2 mov r1, r5 | r1 = r5;
0x0006e6e4 ldr r4, [pc, 0x138] |
0x0006e6e6 mov r0, sb | r0 = sb;
0x0006e6e8 ldr r3, [pc, 0x138] |
0x0006e6ea add r2, pc | r2 = 0xdcf0a;
0x0006e6ec add r4, pc | r4 = 0xdcf10;
0x0006e6ee adds r2, 7 | r2 += 7;
0x0006e6f0 add r3, pc | r3 = 0xdcf18;
0x0006e6f2 strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x0006e6f6 movw r3, 0x51d | r3 = 0x51d;
0x0006e6fa bl 0x68ca8 | fcn_00068ca8 (r0, r1, r2, r3, r4, r5, r6);
0x0006e6fe b 0x6e682 |
| }
| label_48:
0x0006e700 bl 0x68450 | r0 = fcn_00068450 ();
0x0006e704 cmp r0, sb |
| if (r0 < sb) {
0x0006e706 blt 0x6e682 | goto label_18;
| }
0x0006e708 ldr r2, [pc, 0x11c] |
0x0006e70a mov r1, r6 | r1 = r6;
0x0006e70c ldr r4, [pc, 0x11c] |
0x0006e70e mov r0, sb | r0 = sb;
0x0006e710 ldr r3, [pc, 0x11c] |
0x0006e712 add r2, pc | r2 = 0xdcf3e;
0x0006e714 add r4, pc | r4 = 0xdcf44;
0x0006e716 adds r2, 7 | r2 += 7;
0x0006e718 add r3, pc | r3 = 0xdcf4c;
0x0006e71a strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x0006e71e movw r3, 0x524 | r3 = 0x524;
0x0006e722 bl 0x68ca8 | fcn_00068ca8 (r0, r1, r2, r3, r4, r5, r6);
0x0006e726 b 0x6e682 | goto label_18;
| label_50:
0x0006e728 ldr r2, [pc, 0x108] |
0x0006e72a movw r3, 0x53e | r3 = 0x53e;
0x0006e72e ldr r4, [pc, 0x108] |
0x0006e730 movs r1, 0 | r1 = 0;
0x0006e732 ldr r0, [pc, 0x108] |
0x0006e734 add r2, pc | r2 = 0xdcf6c;
0x0006e736 add r4, pc | r4 = 0xdcf74;
0x0006e738 adds r2, 7 | r2 += 7;
0x0006e73a add r0, pc | r0 = 0xdcf7c;
0x0006e73c strd r0, r4, [sp] | __asm ("strd r0, r4, [sp]");
0x0006e740 movs r0, 7 | r0 = 7;
0x0006e742 bl 0x68ca8 | fcn_00068ca8 (r0, r1, r2, r3, r4, r5, r6);
0x0006e746 b 0x6e594 | goto label_19;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x6efd8 */
| #include <stdint.h>
|
; (fcn) fcn.0006efd8 () | void fcn_0006efd8 () {
| int16_t var_4h;
| int16_t var_84h;
0x0006efd8 ldr r2, [pc, 0x78] |
0x0006efda ldr r3, [pc, 0x7c] | r3 = *(0x6f05a);
0x0006efdc push {r4, lr} |
0x0006efde sub sp, 0x88 |
0x0006efe0 add r2, pc | r2 = 0xde038;
0x0006efe2 add r4, sp, 4 | r4 += var_4h;
0x0006efe4 mov r0, r4 | r0 = r4;
0x0006efe6 ldr r3, [r2, r3] |
0x0006efe8 ldr r3, [r3] | r3 = *(0xde038);
0x0006efea str r3, [sp, 0x84] | var_84h = r3;
0x0006efec mov.w r3, 0 | r3 = 0;
0x0006eff0 blx 0xdfb0 | r0 = sigemptyset ();
0x0006eff4 cmp r0, 0 |
| if (r0 < 0) {
0x0006eff6 blt 0x6f01e | goto label_1;
| }
0x0006eff8 movs r2, 0 | r2 = 0;
0x0006effa mov r1, r4 | r1 = r4;
0x0006effc movs r0, 2 | r0 = 2;
0x0006effe blx 0xed24 | r0 = fprintf_chk ()
0x0006f002 cmp r0, 0 |
| if (r0 < 0) {
0x0006f004 blt 0x6f028 | goto label_2;
| }
| do {
| label_0:
0x0006f006 ldr r2, [pc, 0x54] |
0x0006f008 ldr r3, [pc, 0x4c] | r3 = *(0x6f058);
0x0006f00a add r2, pc | r2 = 0xde06c;
0x0006f00c ldr r3, [r2, r3] | r3 = *(0xde06c);
0x0006f00e ldr r2, [r3] | r2 = *(0xde06c);
0x0006f010 ldr r3, [sp, 0x84] | r3 = var_84h;
0x0006f012 eors r2, r3 | r2 ^= r3;
0x0006f014 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006f018 bne 0x6f050 | goto label_3;
| }
0x0006f01a add sp, 0x88 |
0x0006f01c pop {r4, pc} |
| label_1:
0x0006f01e blx 0xf3c0 | r0 = fcn_0000f3c0 ();
0x0006f022 ldr r0, [r0] | r0 = *(r0);
0x0006f024 rsbs r0, r0, 0 | r0 -= ;
0x0006f026 b 0x6f006 |
| } while (1);
| label_2:
0x0006f028 blx 0xf3c0 | r0 = fcn_0000f3c0 ();
0x0006f02c ldr r0, [r0] | r0 = *(r0);
0x0006f02e cmp r0, 0 |
0x0006f030 it gt |
| if (r0 <= 0) {
0x0006f032 rsbgt r0, r0, 0 | __asm ("rsbgt r0, r0, 0");
| goto label_4;
| }
| if (r0 > 0) {
| label_4:
0x0006f034 bgt 0x6f006 | goto label_0;
| }
0x0006f036 ldr r1, [pc, 0x28] |
0x0006f038 movs r2, 0x1e | r2 = 0x1e;
0x0006f03a ldr r3, [pc, 0x28] |
0x0006f03c ldr r0, [pc, 0x28] |
0x0006f03e add r1, pc | r1 = 0xde0a4;
0x0006f040 add r3, pc | r3 = 0xde0aa;
0x0006f042 adds r1, 7 | r1 += 7;
0x0006f044 add r0, pc | r0 = 0xde0b0;
0x0006f046 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0006f04a mvn r0, 0x15 | r0 = ~0x15;
0x0006f04e b 0x6f006 | goto label_0;
| label_3:
0x0006f050 blx 0xed3c | strnlen ();
| if (r1 > 7) {
0x0006f054 bhi 0x6efa0 | void (*0x6efa0)() ();
| }
0x0006f056 movs r2, r0 | r2 = r0;
0x0006f058 lsls r4, r6, 0x1c | r4 = r6 << 0x1c;
0x0006f05a movs r0, r0 |
| if (r0 > r0) {
0x0006f05c bhi 0x6f154 | void (*0x6f154)() ();
| }
0x0006f05e movs r2, r0 | r2 = r0;
0x0006f060 ldr r6, [r2, 0x30] | r6 = *((r2 + 0x30));
0x0006f062 movs r1, r0 | r1 = r0;
0x0006f064 asrs r4, r7, 0x1a | r4 = r7 >> 0x1a;
0x0006f066 movs r2, r0 | r2 = r0;
0x0006f068 ldr r4, [r1, 0x34] | r4 = *((r1 + 0x34));
0x0006f06a movs r1, r0 | r1 = r0;
| }
[*] Function fprintf used 6 times libsystemd.so.0.34.0