[*] Binary protection state of libsystemd.so.0.32.0
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libsystemd.so.0.32.0
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.32.0 @ 0x6ba2c */
| #include <stdint.h>
|
; (fcn) case.0x54008.13 () | void case_0x54008_13 () {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_24h;
| int16_t var_a4h;
| int16_t var_124h;
| if (? >= ?) {
| label_12:
0x0006b838 strlo lr, [r2, -sp, asr 19] |
| }
0x0006b83c movs r1, 0 | r1 = 0;
0x0006b83e ldr.w r3, [pc, 0x540] |
0x0006b842 movs r0, 7 | r0 = 7;
0x0006b844 ldr.w r2, [pc, 0x53c] |
0x0006b848 add r3, pc | r3 = 0xd75ce;
0x0006b84a str r3, [sp, 4] | var_4h = r3;
0x0006b84c add r2, pc | r2 = 0xd75d4;
0x0006b84e ldr.w r3, [pc, 0x538] |
0x0006b852 adds r2, 7 | r2 += 7;
0x0006b854 add r3, pc | r3 = 0xd75e2;
0x0006b856 str r3, [sp] | *(sp) = r3;
0x0006b858 movw r3, 0x531 | r3 = 0x531;
0x0006b85c bl 0x664b0 | fcn_000664b0 (r0, r1, r2, r3, r4, r5, r6);
0x0006b860 lsls r3, r4, 0x18 | r3 = r4 << 0x18;
| if (r3 < r4) {
0x0006b862 bpl 0x6b886 |
0x0006b864 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006b866 cmp r3, 0 |
| if (r3 != 0) {
0x0006b868 bne.w 0x6bc3e | goto label_15;
| }
| label_10:
0x0006b86c cmp.w sl, 0 |
0x0006b870 mov r0, r6 | r0 = r6;
0x0006b872 ite eq |
| if (sl != 0) {
0x0006b874 moveq r2, sl | r2 = sl;
| }
| if (sl == 0) {
0x0006b876 movne r2, 3 | r2 = 3;
| }
0x0006b878 mov r1, r7 | r1 = r7;
0x0006b87a bl 0x6af4c | r0 = fcn_0006af4c (r0, r1, r2);
0x0006b87e subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0006b880 blt 0x6b892 | goto label_11;
| }
| if (r4 != r0) {
0x0006b882 bne.w 0x6bc98 | goto label_16;
| }
| }
0x0006b886 movs r4, 1 | r4 = 1;
0x0006b888 cmp.w r8, 0 |
| if (r8 != 0) {
0x0006b88c beq 0x6b892 |
0x0006b88e str.w r7, [r8] | __asm ("str.w r7, [r8]");
| }
| if (r5 == 0) {
| label_11:
0x0006b892 cbz r5, 0x6b89e | goto label_0;
| }
0x0006b894 movs r2, 0 | r2 = 0;
0x0006b896 mov r1, r5 | r1 = r5;
0x0006b898 movs r0, 2 | r0 = 2;
0x0006b89a blx 0xd63c | fcn_0000d63c ();
| do {
| label_0:
0x0006b89e ldr.w r2, [pc, 0x4ec] | r2 = *(0x0006bd8c);
0x0006b8a2 ldr.w r3, [pc, 0x4d4] | r3 = *(0x6bd7a);
0x0006b8a6 add r2, pc | r2 += pc;
0x0006b8a8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0006b8aa ldr r2, [r3] | r2 = *(0x6bd7a);
0x0006b8ac ldr r3, [sp, 0x124] | r3 = var_124h;
0x0006b8ae eors r2, r3 | r2 ^= r3;
0x0006b8b0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006b8b4 bne.w 0x6bd06 | goto label_17;
| }
0x0006b8b8 mov r0, r4 | r0 = r4;
0x0006b8ba add sp, 0x12c |
0x0006b8bc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_1:
0x0006b8d4 mov r0, r6 | r0 = r6;
0x0006b8d6 bl 0x6b348 | r0 = fcn_0006b348 (r0);
0x0006b8da subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x0006b8dc bge 0x6b8f2 |
0x0006b8de cmp.w sl, 0 |
0x0006b8e2 ite ne |
| if (sl == 0) {
0x0006b8e4 movne r7, 4 | r7 = 4;
| }
| if (sl != 0) {
0x0006b8e6 moveq r7, 7 | r7 = 7;
| }
0x0006b8e8 bl 0x65c6c | r0 = fcn_00065c6c ();
0x0006b8ec cmp r0, r7 |
| if (r0 >= r7) {
0x0006b8ee bge.w 0x6bc78 | goto label_18;
| }
| }
| label_2:
0x0006b8f2 tst.w r4, 0xc |
| if ((r4 & 0xc) != 0) {
0x0006b8f6 beq 0x6b910 |
0x0006b8f8 tst.w r4, 8 |
0x0006b8fc mov.w r0, 1 | r0 = 1;
0x0006b900 ite ne |
| if ((r4 & 8) == 0) {
0x0006b902 movne r1, 2 | r1 = 2;
| }
| if ((r4 & 8) != 0) {
0x0006b904 moveq r1, 0xf | r1 = 0xf;
| }
0x0006b906 blx 0xe160 | r0 = fcn_0000e160 ();
0x0006b90a cmp r0, 0 |
| if (r0 < 0) {
0x0006b90c blt.w 0x6bc9e | goto label_19;
| }
| }
0x0006b910 ands r2, r4, 1 | r2 = r4 & 1;
| if (r2 != r4) {
0x0006b914 bne.w 0x6ba38 | goto label_20;
| }
0x0006b918 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006b91a cmp r3, 0 |
| if (r3 != 0) {
0x0006b91c bne.w 0x6bc02 | goto label_21;
| }
| label_3:
0x0006b920 lsls r6, r4, 0x1d | r6 = r4 << 0x1d;
| if (r6 < r4) {
0x0006b922 bmi.w 0x6bb28 | goto label_22;
| }
| label_6:
0x0006b926 mvns r2, r4 | r2 = ~r4;
0x0006b928 ands r2, r2, 0x300 | r2 &= 0x300;
| if (r2 == r2) {
0x0006b92c beq.w 0x6bae2 | goto label_23;
| }
| label_5:
0x0006b930 lsls r0, r4, 0x1e | r0 = r4 << 0x1e;
| if (r0 < r4) {
0x0006b932 bmi.w 0x6ba76 | goto label_24;
| }
| label_4:
0x0006b936 cmp r5, 0 |
| if (r5 != 0) {
0x0006b938 bne.w 0x6bbba | goto label_25;
| }
| label_9:
0x0006b93c lsls r1, r4, 0x1b | r1 = r4 << 0x1b;
| if (r1 < r4) {
0x0006b93e bmi.w 0x6bb7e | goto label_26;
| }
0x0006b942 lsls r2, r4, 0x14 | r2 = r4 << 0x14;
| if (r2 < r4) {
0x0006b944 bmi.w 0x6bbc6 | goto label_27;
| }
| label_8:
0x0006b948 lsls r3, r4, 0x15 | r3 = r4 << 0x15;
| if (r3 < r4) {
0x0006b94a bmi.w 0x6bb4a | goto label_28;
| }
| label_7:
0x0006b94e mov r4, r8 | r4 = r8;
0x0006b950 cmp.w r8, 0 |
0x0006b954 beq 0x6b89e |
| } while (r8 == 0);
0x0006b956 bl 0x6ad9c | fcn_0006ad9c (r0);
0x0006b95a movs r4, 0 | r4 = 0;
0x0006b95c str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0006b960 b 0x6b89e | goto label_0;
0x0006ba2c bl 0x66ea4 | fcn_00066ea4 (r0);
0x0006ba30 cmp r6, 0 |
| if (r6 != 0) {
0x0006ba32 bne.w 0x6b8d4 | goto label_1;
| }
0x0006ba36 b 0x6b8f2 | goto label_2;
| label_20:
0x0006ba38 bl 0x6c6fc | r0 = fcn_0006c6fc ();
0x0006ba3c subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x0006ba3e blt.w 0x6bd0a | goto label_29;
| }
0x0006ba40 strh r4, [r4, 0xa] | *((r4 + 0xa)) = r4;
0x0006ba42 bl 0x6c750 | r0 = fcn_0006c750 ();
0x0006ba46 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 >= r0) {
0x0006ba48 bge.w 0x6b920 | goto label_3;
| }
0x0006ba4c bl 0x65c6c | r0 = fcn_00065c6c ();
0x0006ba50 cmp r0, sb |
| if (r0 < sb) {
0x0006ba52 blt.w 0x6bcac | goto label_13;
| }
0x0006ba56 ldr r2, [pc, 0x34c] |
0x0006ba58 mov r1, r6 | r1 = r6;
0x0006ba5a ldr r4, [pc, 0x34c] |
0x0006ba5c mov r0, sb | r0 = sb;
0x0006ba5e ldr r3, [pc, 0x34c] |
0x0006ba60 add r2, pc | r2 = 0xd780a;
0x0006ba62 add r4, pc | r4 = 0xd7810;
0x0006ba64 adds r2, 7 | r2 += 7;
0x0006ba66 add r3, pc | r3 = 0xd7818;
0x0006ba68 strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x0006ba6c movw r3, 0x56a | r3 = 0x56a;
0x0006ba70 bl 0x664b0 | fcn_000664b0 (r0, r1, r2, r3, r4, r5, r6);
0x0006ba74 b 0x6bcac | goto label_13;
| label_24:
0x0006ba76 bl 0x65c10 | fcn_00065c10 ();
0x0006ba7a ldr r1, [sp, 0x18] | r1 = var_18h;
0x0006ba7c mov r0, fp | r0 = fp;
0x0006ba7e bl 0x5ee9c | r0 = fcn_0005ee9c (r0, r1, r2);
0x0006ba82 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 >= r0) {
0x0006ba84 bge.w 0x6b936 | goto label_4;
| }
0x0006ba88 bl 0x65c6c | r0 = fcn_00065c6c ();
0x0006ba8c cmp r0, sb |
| if (r0 < sb) {
0x0006ba8e blt.w 0x6bcac | goto label_13;
| }
0x0006ba92 ldr r2, [pc, 0x31c] |
0x0006ba94 mov r1, r6 | r1 = r6;
0x0006ba96 ldr r4, [pc, 0x31c] |
0x0006ba98 mov r0, sb | r0 = sb;
0x0006ba9a ldr r3, [pc, 0x31c] |
0x0006ba9c add r2, pc | r2 = 0xd7852;
0x0006ba9e add r4, pc | r4 = 0xd7858;
0x0006baa0 adds r2, 7 | r2 += 7;
0x0006baa2 add r3, pc | r3 = 0xd7860;
0x0006baa4 strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x0006baa8 movw r3, 0x593 | r3 = 0x593;
0x0006baac bl 0x664b0 | fcn_000664b0 (r0, r1, r2, r3, r4, r5, r6);
0x0006bab0 b 0x6bcac | goto label_13;
| label_23:
0x0006bae2 ldr r1, [pc, 0x2e4] |
0x0006bae4 mov.w r3, 0x84000 | r3 = 0x84000;
0x0006bae8 mov r0, r2 | r0 = r2;
0x0006baea str r2, [sp] | *(sp) = r2;
0x0006baec add r1, pc | r1 = 0xd78ba;
0x0006baee blx 0xe8c4 | r0 = fcn_0000e8c4 ();
0x0006baf2 cmp r0, 0 |
| if (r0 >= 0) {
0x0006baf4 bge.w 0x6b930 | goto label_5;
| }
0x0006baf8 blx 0xdfdc | r0 = fcn_0000dfdc ();
0x0006bafc ldr r5, [r0] | r5 = *(r0);
0x0006bafe bl 0x65c6c | r0 = fcn_00065c6c ();
0x0006bb02 cmp r0, sb |
| if (r0 < sb) {
0x0006bb04 blt.w 0x6bcac | goto label_13;
| }
0x0006bb08 ldr r2, [pc, 0x2c0] |
0x0006bb0a mov r1, r5 | r1 = r5;
0x0006bb0c ldr r4, [pc, 0x2c0] |
0x0006bb0e mov r0, sb | r0 = sb;
0x0006bb10 ldr r3, [pc, 0x2c0] |
0x0006bb12 add r2, pc | r2 = 0xd78e2;
0x0006bb14 add r4, pc | r4 = 0xd78e8;
0x0006bb16 adds r2, 7 | r2 += 7;
0x0006bb18 add r3, pc | r3 = 0xd78f0;
0x0006bb1a strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x0006bb1e mov.w r3, 0x588 | r3 = 0x588;
0x0006bb22 bl 0x664b0 | fcn_000664b0 (r0, r1, r2, r3, r4, r5, r6);
0x0006bb26 b 0x6bcac | goto label_13;
| label_22:
0x0006bb28 blx 0xe538 | fcn_0000e538 ();
0x0006bb2c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006bb2e cmp r3, r0 |
0x0006bb30 it ne |
| if (r3 == r0) {
0x0006bb32 cmpne r0, 0 | __asm ("cmpne r0, 0");
| goto label_30;
| }
| if (r3 == r0) {
| label_30:
0x0006bb34 beq.w 0x6b926 | goto label_6;
| }
0x0006bb38 bl 0x65c6c | r0 = fcn_00065c6c ();
0x0006bb3c cmp r0, 6 |
| if (r0 > 6) {
0x0006bb3e bgt.w 0x6bd52 | goto label_31;
| }
| label_14:
0x0006bb42 movs r0, 0xf | r0 = 0xf;
0x0006bb44 blx 0xd414 | fcn_0000d414 ();
0x0006bb48 b 0x6bcac | goto label_13;
| label_28:
0x0006bb4a bl 0x6c540 | r0 = fcn_0006c540 ();
0x0006bb4e subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x0006bb50 bge.w 0x6b94e | goto label_7;
| }
0x0006bb54 bl 0x65c6c | r0 = fcn_00065c6c ();
0x0006bb58 cmp r0, sb |
| if (r0 < sb) {
0x0006bb5a blt.w 0x6bcac | goto label_13;
| }
0x0006bb5e ldr r2, [pc, 0x278] |
0x0006bb60 mov r1, r4 | r1 = r4;
0x0006bb62 ldr r5, [pc, 0x278] |
0x0006bb64 mov r0, sb | r0 = sb;
0x0006bb66 ldr r3, [pc, 0x278] |
0x0006bb68 add r2, pc | r2 = 0xd7946;
0x0006bb6a add r5, pc | r5 = 0xd794c;
0x0006bb6c adds r2, 7 | r2 += 7;
0x0006bb6e add r3, pc | r3 = 0xd7954;
0x0006bb70 strd r3, r5, [sp] | __asm ("strd r3, r5, [sp]");
0x0006bb74 movw r3, 0x5af | r3 = 0x5af;
0x0006bb78 bl 0x664b0 | fcn_000664b0 (r0, r1, r2, r3, r4, r5, r6);
0x0006bb7c b 0x6bcac | goto label_13;
| label_26:
0x0006bb7e mov.w r2, -1 | r2 = -1;
0x0006bb82 mov r1, r2 | r1 = r2;
0x0006bb84 mov r0, r2 | r0 = r2;
0x0006bb86 bl 0x5f480 | r0 = fcn_0005f480 (r0, r1, r2, r3, r4);
0x0006bb8a subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 >= r0) {
0x0006bb8c bge.w 0x6b948 | goto label_8;
| }
0x0006bb90 bl 0x65c6c | r0 = fcn_00065c6c ();
0x0006bb94 cmp r0, sb |
| if (r0 < sb) {
0x0006bb96 blt.w 0x6bcac | goto label_13;
| }
0x0006bb9a ldr r2, [pc, 0x248] |
0x0006bb9c mov r1, r5 | r1 = r5;
0x0006bb9e ldr r4, [pc, 0x248] |
0x0006bba0 mov r0, sb | r0 = sb;
0x0006bba2 ldr r3, [pc, 0x248] |
0x0006bba4 add r2, pc | r2 = 0xd798e;
0x0006bba6 add r4, pc | r4 = 0xd7994;
0x0006bba8 adds r2, 7 | r2 += 7;
0x0006bbaa add r3, pc | r3 = 0xd799c;
0x0006bbac strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x0006bbb0 movw r3, 0x5a1 | r3 = 0x5a1;
0x0006bbb4 bl 0x664b0 | fcn_000664b0 (r0, r1, r2, r3, r4, r5, r6);
0x0006bbb8 b 0x6bcac | goto label_13;
| label_25:
0x0006bbba bl 0x658dc | fcn_000658dc ();
0x0006bbbe movs r0, 0 | r0 = 0;
0x0006bbc0 bl 0x66ea4 | fcn_00066ea4 (r0);
0x0006bbc4 b 0x6b93c | goto label_9;
| label_27:
0x0006bbc6 movs r1, 1 | r1 = 1;
0x0006bbc8 movs r0, 2 | r0 = 2;
0x0006bbca blx 0xd93c | r0 = fcn_0000d93c ();
0x0006bbce cmp r0, 0 |
| if (r0 >= 0) {
0x0006bbd0 bge.w 0x6b948 | goto label_8;
| }
0x0006bbd4 blx 0xdfdc | r0 = fcn_0000dfdc ();
0x0006bbd8 ldr r5, [r0] | r5 = *(r0);
0x0006bbda bl 0x65c6c | r0 = fcn_00065c6c ();
0x0006bbde cmp r0, sb |
| if (r0 < sb) {
0x0006bbe0 blt 0x6bcac | goto label_13;
| }
0x0006bbe2 ldr r2, [pc, 0x20c] |
0x0006bbe4 mov r1, r5 | r1 = r5;
0x0006bbe6 ldr r4, [pc, 0x20c] |
0x0006bbe8 mov r0, sb | r0 = sb;
0x0006bbea ldr r3, [pc, 0x20c] |
0x0006bbec add r2, pc | r2 = 0xd79e2;
0x0006bbee add r4, pc | r4 = 0xd79e8;
0x0006bbf0 adds r2, 7 | r2 += 7;
0x0006bbf2 add r3, pc | r3 = 0xd79f0;
0x0006bbf4 strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x0006bbf8 movw r3, 0x5a7 | r3 = 0x5a7;
0x0006bbfc bl 0x664b0 | fcn_000664b0 (r0, r1, r2, r3, r4, r5, r6);
0x0006bc00 b 0x6bcac | goto label_13;
| label_21:
0x0006bc02 add r1, sp, 0x24 | r1 += var_24h;
0x0006bc04 movs r0, 2 | r0 = 2;
0x0006bc06 blx 0xd63c | r0 = fcn_0000d63c ();
0x0006bc0a cmp r0, 0 |
| if (r0 >= 0) {
0x0006bc0c bge.w 0x6b920 | goto label_3;
| }
0x0006bc10 blx 0xdfdc | r0 = fcn_0000dfdc ();
0x0006bc14 ldr r5, [r0] | r5 = *(r0);
0x0006bc16 bl 0x65c6c | r0 = fcn_00065c6c ();
0x0006bc1a cmp r0, sb |
| if (r0 < sb) {
0x0006bc1c blt 0x6bcac | goto label_13;
| }
0x0006bc1e ldr r2, [pc, 0x1dc] |
0x0006bc20 mov r1, r5 | r1 = r5;
0x0006bc22 ldr r4, [pc, 0x1dc] |
0x0006bc24 mov r0, sb | r0 = sb;
0x0006bc26 ldr r3, [pc, 0x1dc] |
0x0006bc28 add r2, pc | r2 = 0xd7a2a;
0x0006bc2a add r4, pc | r4 = 0xd7a30;
0x0006bc2c adds r2, 7 | r2 += 7;
0x0006bc2e add r3, pc | r3 = 0xd7a38;
0x0006bc30 strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x0006bc34 movw r3, 0x56f | r3 = 0x56f;
0x0006bc38 bl 0x664b0 | fcn_000664b0 (r0, r1, r2, r3, r4, r5, r6);
0x0006bc3c b 0x6bcac | goto label_13;
| label_15:
0x0006bc3e add r4, sp, 0xa4 | r4 += var_a4h;
0x0006bc40 movs r2, 0x80 | r2 = 0x80;
0x0006bc42 add r1, sp, 0x24 | r1 += var_24h;
0x0006bc44 mov r0, r4 | r0 = r4;
0x0006bc46 blx 0xd71c | fcn_0000d71c ();
0x0006bc4a movs r1, 0x11 | r1 = 0x11;
0x0006bc4c mov r0, r4 | r0 = r4;
0x0006bc4e blx 0xdcf8 | r0 = fcn_0000dcf8 ();
0x0006bc52 cmp r0, 0 |
| if (r0 < 0) {
0x0006bc54 blt 0x6bcf0 | goto label_32;
| }
0x0006bc56 mov r1, r4 | r1 = r4;
0x0006bc58 movs r2, 0 | r2 = 0;
0x0006bc5a movs r0, 2 | r0 = 2;
0x0006bc5c blx 0xd63c | fcn_0000d63c ();
0x0006bc60 b 0x6b86c | goto label_10;
| label_18:
0x0006bc78 ldr r3, [pc, 0x198] |
0x0006bc7a mov r1, r6 | r1 = r6;
0x0006bc7c ldr r2, [pc, 0x198] |
0x0006bc7e mov r0, r7 | r0 = r7;
0x0006bc80 add r3, pc | r3 = 0xd7a98;
0x0006bc82 str r3, [sp, 4] | var_4h = r3;
0x0006bc84 add r2, pc | r2 = 0xd7aa0;
0x0006bc86 ldr r3, [pc, 0x194] |
0x0006bc88 adds r2, 7 | r2 += 7;
0x0006bc8a add r3, pc | r3 = 0xd7aac;
0x0006bc8c str r3, [sp] | *(sp) = r3;
0x0006bc8e movw r3, 0x556 | r3 = 0x556;
0x0006bc92 bl 0x664b0 | fcn_000664b0 (r0, r1, r2, r3, r4, r5, r6);
0x0006bc96 b 0x6b8f2 | goto label_2;
| label_16:
0x0006bc98 mvn r4, 0x46 | r4 = ~0x46;
0x0006bc9c b 0x6b892 | goto label_11;
| label_19:
0x0006bc9e blx 0xdfdc | r0 = fcn_0000dfdc ();
0x0006bca2 ldr r5, [r0] | r5 = *(r0);
0x0006bca4 bl 0x65c6c | r0 = fcn_00065c6c ();
0x0006bca8 cmp r0, sb |
| if (r0 >= sb) {
0x0006bcaa bge 0x6bd32 | goto label_33;
| }
| do {
| label_13:
0x0006bcac movs r0, 1 | r0 = 1;
0x0006bcae blx 0xd6e8 | vsnprintf_chk ()
0x0006bcb2 ldr r3, [pc, 0x16c] |
0x0006bcb4 add r3, pc | r3 = 0xd7ada;
0x0006bcb6 b 0x6b838 | goto label_12;
| label_32:
0x0006bcf0 ldr r1, [pc, 0x148] |
0x0006bcf2 movw r2, 0x537 | r2 = 0x537;
0x0006bcf6 ldr r3, [pc, 0x148] |
0x0006bcf8 ldr r0, [pc, 0x148] |
0x0006bcfa add r1, pc | r1 = 0xd7b3a;
0x0006bcfc add r3, pc | r3 = 0xd7b42;
0x0006bcfe adds r1, 7 | r1 += 7;
0x0006bd00 add r0, pc | r0 = 0xd7b48;
0x0006bd02 bl 0x66580 | r0 = fcn_00066580 (r0, r1, r2, r3, r4);
| label_17:
0x0006bd06 blx 0xd8a4 | fcn_0000d8a4 ();
| label_29:
0x0006bd0a bl 0x65c6c | r0 = fcn_00065c6c ();
0x0006bd0e cmp r0, sb |
0x0006bd10 blt 0x6bcac |
| } while (r0 < sb);
0x0006bd12 ldr r2, [pc, 0x134] |
0x0006bd14 mov r1, r6 | r1 = r6;
0x0006bd16 ldr r4, [pc, 0x134] |
0x0006bd18 mov r0, sb | r0 = sb;
0x0006bd1a ldr r3, [pc, 0x134] |
0x0006bd1c add r2, pc | r2 = 0xd7b6a;
0x0006bd1e add r4, pc | r4 = 0xd7b70;
0x0006bd20 adds r2, 7 | r2 += 7;
0x0006bd22 add r3, pc | r3 = 0xd7b78;
0x0006bd24 strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x0006bd28 movw r3, 0x563 | r3 = 0x563;
0x0006bd2c bl 0x664b0 | fcn_000664b0 (r0, r1, r2, r3, r4, r5, r6);
0x0006bd30 b 0x6bcac | goto label_13;
| label_33:
0x0006bd32 ldr r2, [pc, 0x120] |
0x0006bd34 mov r1, r5 | r1 = r5;
0x0006bd36 ldr r4, [pc, 0x120] |
0x0006bd38 mov r0, sb | r0 = sb;
0x0006bd3a ldr r3, [pc, 0x120] |
0x0006bd3c add r2, pc | r2 = 0xd7b96;
0x0006bd3e add r4, pc | r4 = 0xd7b9c;
0x0006bd40 adds r2, 7 | r2 += 7;
0x0006bd42 add r3, pc | r3 = 0xd7ba4;
0x0006bd44 strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x0006bd48 movw r3, 0x55c | r3 = 0x55c;
0x0006bd4c bl 0x664b0 | fcn_000664b0 (r0, r1, r2, r3, r4, r5, r6);
0x0006bd50 b 0x6bcac | goto label_13;
| label_31:
0x0006bd52 ldr r2, [pc, 0x10c] |
0x0006bd54 movw r3, 0x57d | r3 = 0x57d;
0x0006bd58 ldr r4, [pc, 0x108] |
0x0006bd5a movs r1, 0 | r1 = 0;
0x0006bd5c ldr r0, [pc, 0x108] |
0x0006bd5e add r2, pc | r2 = 0xd7bc4;
0x0006bd60 add r4, pc | r4 = 0xd7bc8;
0x0006bd62 adds r2, 7 | r2 += 7;
0x0006bd64 add r0, pc | r0 = 0xd7bd0;
0x0006bd66 strd r0, r4, [sp] | __asm ("strd r0, r4, [sp]");
0x0006bd6a movs r0, 7 | r0 = 7;
0x0006bd6c bl 0x664b0 | fcn_000664b0 (r0, r1, r2, r3, r4, r5, r6);
0x0006bd70 b 0x6bb42 | goto label_14;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.32.0 @ 0xe998 */
| #include <stdint.h>
|
; (fcn) fcn.0000e998 () | void fcn_0000e998 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int32_t var_10h_2;
| int16_t var_18h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| r0 = arg1;
0x0000e998 push {r4, r5, r6, r7, lr} |
0x0000e99a mov r4, r0 | r4 = r0;
0x0000e99c ldr r0, [pc, 0x2b8] |
0x0000e99e sub sp, 0x4c |
0x0000e9a0 mov.w r3, -1 | r3 = -1;
0x0000e9a4 movs r2, 0 | r2 = 0;
0x0000e9a6 ldr r1, [pc, 0x2b4] | r1 = *(0xec5e);
0x0000e9a8 add r0, pc | r0 = 0x1d604;
0x0000e9aa ldr r1, [r0, r1] |
0x0000e9ac ldr r1, [r1] | r1 = *(0x1d604);
0x0000e9ae str r1, [sp, 0x44] | var_44h = r1;
0x0000e9b0 mov.w r1, 0 | r1 = 0;
0x0000e9b4 strd r3, r3, [sp, 0x3c] | __asm ("strd r3, r3, [var_3ch]");
0x0000e9b8 strd r3, r3, [sp, 0x24] | __asm ("strd r3, r3, [var_28h]");
0x0000e9bc strd r3, r3, [sp, 0x2c] | __asm ("strd r3, r3, [var_30h]");
0x0000e9c0 str r2, [sp, 0x34] | var_34h = r2;
0x0000e9c2 cmp r4, 0 |
| if (r4 == 0) {
0x0000e9c4 beq.w 0xebb0 | goto label_3;
| }
0x0000e9c8 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000e9ca cmp r3, 0 |
| if (r3 >= 0) {
0x0000e9cc bge.w 0xebc4 | goto label_4;
| }
0x0000e9d0 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0000e9d2 cmp r3, 0 |
| if (r3 >= 0) {
0x0000e9d4 bge.w 0xebd8 | goto label_5;
| }
0x0000e9d8 ldr.w r5, [r4, 0x118] | r5 = *((r4 + 0x118));
0x0000e9dc cmp r5, 0 |
| if (r5 <= 0) {
0x0000e9de ble.w 0xeb04 | goto label_6;
| }
0x0000e9e2 bl 0x65c6c | r0 = fcn_00065c6c ();
0x0000e9e6 cmp r0, 6 |
| if (r0 <= 6) {
0x0000e9e8 ble 0xea1e | goto label_7;
| }
0x0000e9ea ldr.w r3, [r4, 0x3fc] | r3 = *((r4 + 0x3fc));
0x0000e9ee cmp r3, 0 |
| if (r3 == 0) {
0x0000e9f0 beq.w 0xeb9c | goto label_8;
| }
0x0000e9f4 ldr r1, [pc, 0x268] |
0x0000e9f6 add r1, pc | r1 = 0x1d65a;
| label_0:
0x0000e9f8 strd r1, r3, [sp, 8] | __asm ("strd r1, r3, [var_8h]");
0x0000e9fc movs r3, 0x23 | r3 = 0x23;
0x0000e9fe ldr r2, [pc, 0x264] |
0x0000ea00 ldr r0, [pc, 0x264] |
0x0000ea02 ldr r1, [pc, 0x268] |
0x0000ea04 add r2, pc | r2 = 0x1d66e;
0x0000ea06 str r5, [sp, 0x10] | var_10h = r5;
0x0000ea08 add r0, pc | r0 = 0x1d674;
0x0000ea0a adds r2, 7 | r2 += 7;
0x0000ea0c add r1, pc | r1 = 0x1d67e;
0x0000ea0e strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x0000ea12 movs r1, 0 | r1 = 0;
0x0000ea14 movs r0, 7 | r0 = 7;
0x0000ea16 bl 0x664b0 | fcn_000664b0 (r0, r1, r2, r3, r4, r5, r6);
| do {
0x0000ea1a ldr.w r5, [r4, 0x118] | r5 = *((r4 + 0x118));
| label_7:
0x0000ea1e add r2, sp, 0x30 | r2 += var_30h;
0x0000ea20 mov r0, r5 | r0 = r5;
0x0000ea22 str r2, [sp, 4] | var_4h = r2;
0x0000ea24 add r2, sp, 0x2c | r2 += var_2ch;
0x0000ea26 str r2, [sp] | *(sp) = r2;
0x0000ea28 movs r3, 0 | r3 = 0;
0x0000ea2a add r2, sp, 0x28 | r2 += var_28h;
0x0000ea2c add r1, sp, 0x24 | r1 += var_24h;
0x0000ea2e bl 0x67c5c | r0 = fcn_00067c5c (r0, r1, r2, r3, r4);
0x0000ea32 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0000ea34 blt.w 0xeb58 | goto label_9;
| }
0x0000ea38 movw r1, 0x801 |
0x0000ea3c ldrh.w r0, [r4, 0x94] | r0 = *((r4 + 0x94));
0x0000ea40 movs r2, 0 | r2 = 0;
0x0000ea42 movt r1, 8 | r1 = 0x80801;
0x0000ea46 blx 0xe604 | r0 = fcn_0000e604 ();
0x0000ea4a cmp r0, 0 |
0x0000ea4c str r0, [r4, 8] | *((r4 + 8)) = r0;
| if (r0 < 0) {
0x0000ea4e blt.w 0xeba4 | goto label_10;
| }
0x0000ea52 bl 0x5f404 | r0 = fcn_0005f404 (r0);
0x0000ea56 mov r3, r0 | r3 = r0;
0x0000ea58 mov r0, r4 | r0 = r4;
0x0000ea5a strd r3, r3, [r4, 8] | __asm ("strd r3, r3, [r4, 8]");
0x0000ea5e add r6, sp, 0x3c | r6 += var_3ch;
0x0000ea60 bl 0x2a81c | fcn_0002a81c (r0);
0x0000ea64 movs r1, 5 | r1 = 5;
0x0000ea66 mov r3, r6 | r3 = r6;
0x0000ea68 movs r2, 0 | r2 = 0;
0x0000ea6a movt r1, 8 | r1 = (r1 & 0xFFFF) | 0x80000;
0x0000ea6e movs r0, 1 | r0 = 1;
0x0000ea70 blx 0xd984 | r0 = fcn_0000d984 ();
0x0000ea74 cmp r0, 0 |
| if (r0 < 0) {
0x0000ea76 blt.w 0xeb92 | goto label_11;
| }
0x0000ea7a ldrd r2, r1, [sp, 0x2c] | __asm ("ldrd r2, r1, [var_30h]");
0x0000ea7e ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000ea80 ldr r7, [pc, 0x1ec] |
0x0000ea82 strd r2, r1, [sp, 0x10] | __asm ("strd r2, r1, [var_10h]");
0x0000ea86 add r1, sp, 0x38 | r1 += var_38h;
0x0000ea88 str r3, [sp, 8] | var_8h = r3;
0x0000ea8a mov.w r2, -1 | r2 = -1;
0x0000ea8e ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000ea90 add r7, pc | r7 = 0x1d704;
0x0000ea92 str r1, [sp, 0x18] | var_18h = r1;
0x0000ea94 mov r0, r7 | r0 = r7;
0x0000ea96 ldr r1, [pc, 0x1dc] |
0x0000ea98 str r2, [sp, 0xc] | var_ch = r2;
0x0000ea9a movs r2, 5 | r2 = 5;
0x0000ea9c str r3, [sp, 4] | var_4h = r3;
0x0000ea9e movs r3, 0 | r3 = 0;
0x0000eaa0 str r2, [sp] | *(sp) = r2;
0x0000eaa2 add r1, pc | r1 = 0x1d71c;
0x0000eaa4 mov r2, r3 | r2 = r3;
0x0000eaa6 bl 0x6be6c | r0 = fcn_0006be6c (r0, r1, r2, r3, r4, r5, r6);
0x0000eaaa subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0000eaac blt 0xeb5a | goto label_1;
| }
| if (r5 == r0) {
0x0000eaae beq.w 0xebec | goto label_12;
| }
0x0000eab2 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0000eab4 bl 0x5ec70 | fcn_0005ec70 (r0);
0x0000eab8 ldr r1, [sp, 0x38] | r1 = var_38h;
0x0000eaba mov r3, r0 | r3 = r0;
0x0000eabc movs r2, 0 | r2 = 0;
0x0000eabe mov r0, r7 | r0 = r7;
0x0000eac0 str r3, [sp, 0x40] | var_40h = r3;
0x0000eac2 bl 0x6af4c | r0 = fcn_0006af4c (r0, r1, r2);
0x0000eac6 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0000eac8 blt 0xeb5a | goto label_1;
| }
| if (r5 != r0) {
0x0000eaca bne.w 0xec2e | goto label_13;
| }
0x0000eace ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x0000ead0 movs r2, 4 | r2 = 4;
0x0000ead2 add r1, sp, 0x34 | r1 += var_34h;
0x0000ead4 blx 0xd5d0 | r0 = fcn_0000d5d0 ();
0x0000ead8 cmp r0, 0 |
| if (r0 < 0) {
0x0000eada blt 0xeb92 | goto label_11;
| }
| if (r0 != 0) {
0x0000eadc beq 0xeafa |
0x0000eade cmp r0, 4 |
| if (r0 != 4) {
0x0000eae0 bne.w 0xec34 | goto label_14;
| }
0x0000eae4 ldr r5, [sp, 0x34] | r5 = var_34h;
0x0000eae6 cmp r5, 0 |
| if (r5 < 0) {
0x0000eae8 blt.w 0xec34 | goto label_14;
| }
0x0000eaec cmp r5, 0x73 |
0x0000eaee it eq |
| if (r5 != 0x73) {
0x0000eaf0 moveq r5, 1 | r5 = 1;
| }
| if (r5 == 0x73) {
0x0000eaf2 beq 0xeb5a | goto label_1;
| }
0x0000eaf4 cmp r5, 0 |
| if (r5 != 0) {
0x0000eaf6 bne.w 0xec2a | goto label_15;
| }
| }
0x0000eafa mov r0, r4 | r0 = r4;
0x0000eafc bl 0x2a868 | r0 = fcn_0002a868 (r0);
0x0000eb00 mov r5, r0 | r5 = r0;
0x0000eb02 b 0xeb5a | goto label_1;
| label_6:
0x0000eb04 ldr.w r5, [r4, 0x11c] | r5 = *((r4 + 0x11c));
0x0000eb08 cmp r5, 0 |
| if (r5 == 0) {
0x0000eb0a beq.w 0xec16 | goto label_16;
| }
0x0000eb0e bl 0x65c6c | r0 = fcn_00065c6c ();
0x0000eb12 cmp r0, 6 |
| if (r0 > 6) {
0x0000eb14 ble 0xeb48 |
0x0000eb16 ldr.w r3, [r4, 0x3fc] | r3 = *((r4 + 0x3fc));
0x0000eb1a cmp r3, 0 |
| if (r3 == 0) {
0x0000eb1c beq 0xec0e | goto label_17;
| }
0x0000eb1e ldr r1, [pc, 0x158] |
0x0000eb20 add r1, pc | r1 = 0x1d79e;
| label_2:
0x0000eb22 strd r1, r3, [sp, 8] | __asm ("strd r1, r3, [var_8h]");
0x0000eb26 movs r3, 0x1c | r3 = 0x1c;
0x0000eb28 ldr r2, [pc, 0x150] |
0x0000eb2a ldr r0, [pc, 0x154] |
0x0000eb2c ldr r1, [pc, 0x154] |
0x0000eb2e add r2, pc | r2 = 0x1d7ae;
0x0000eb30 str r5, [sp, 0x10] | var_10h = r5;
0x0000eb32 add r0, pc | r0 = 0x1d7b8;
0x0000eb34 adds r2, 7 | r2 += 7;
0x0000eb36 add r1, pc | r1 = 0x1d7be;
0x0000eb38 strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x0000eb3c movs r1, 0 | r1 = 0;
0x0000eb3e movs r0, 7 | r0 = 7;
0x0000eb40 bl 0x664b0 | fcn_000664b0 (r0, r1, r2, r3, r4, r5, r6);
0x0000eb44 ldr.w r5, [r4, 0x11c] | r5 = *((r4 + 0x11c));
| }
0x0000eb48 mov r0, r5 | r0 = r5;
0x0000eb4a add.w r1, r4, 0x118 | r1 = r4 + 0x118;
0x0000eb4e bl 0x70e78 | r0 = fcn_00070e78 (r0, r1);
0x0000eb52 subs r5, r0, 0 | r5 = r0 - 0;
0x0000eb54 bge.w 0xea1a |
| } while (r5 >= r0);
| label_9:
0x0000eb58 add r6, sp, 0x3c | r6 += var_3ch;
| do {
| label_1:
0x0000eb5a ldr r0, [sp, 0x30] | r0 = var_30h;
0x0000eb5c bl 0x5ec70 | fcn_0005ec70 (r0);
0x0000eb60 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0000eb62 bl 0x5ec70 | fcn_0005ec70 (r0);
0x0000eb66 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0000eb68 bl 0x5ec70 | fcn_0005ec70 (r0);
0x0000eb6c ldr r0, [sp, 0x24] | r0 = var_24h;
0x0000eb6e bl 0x5ec70 | fcn_0005ec70 (r0);
0x0000eb72 mov r0, r6 | r0 = r6;
0x0000eb74 bl 0x5ecbc | fcn_0005ecbc (r0, r1);
0x0000eb78 ldr r2, [pc, 0x10c] |
0x0000eb7a ldr r3, [pc, 0xe0] | r3 = *(0xec5e);
0x0000eb7c add r2, pc | r2 = 0x1d808;
0x0000eb7e ldr r3, [r2, r3] | r3 = *(0x1d808);
0x0000eb80 ldr r2, [r3] | r2 = *(0x1d808);
0x0000eb82 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0000eb84 eors r2, r3 | r2 ^= r3;
0x0000eb86 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000eb8a bne 0xec3a | goto label_18;
| }
0x0000eb8c mov r0, r5 | r0 = r5;
0x0000eb8e add sp, 0x4c |
0x0000eb90 pop {r4, r5, r6, r7, pc} |
| label_11:
0x0000eb92 blx 0xdfdc | r0 = fcn_0000dfdc ();
0x0000eb96 ldr r5, [r0] | r5 = *(r0);
0x0000eb98 rsbs r5, r5, 0 | r5 -= ;
0x0000eb9a b 0xeb5a |
| } while (1);
| label_8:
0x0000eb9c ldr r1, [pc, 0xec] |
0x0000eb9e add r1, pc | r1 = 0x1d82e;
0x0000eba0 mov r3, r1 | r3 = r1;
0x0000eba2 b 0xe9f8 | goto label_0;
| label_10:
0x0000eba4 blx 0xdfdc | r0 = fcn_0000dfdc ();
0x0000eba8 ldr r5, [r0] | r5 = *(r0);
0x0000ebaa add r6, sp, 0x3c | r6 += var_3ch;
0x0000ebac rsbs r5, r5, 0 | r5 -= ;
0x0000ebae b 0xeb5a | goto label_1;
| label_3:
0x0000ebb0 ldr r1, [pc, 0xdc] |
0x0000ebb2 movs r2, 0x16 | r2 = 0x16;
0x0000ebb4 ldr r3, [pc, 0xdc] |
0x0000ebb6 ldr r0, [pc, 0xe0] |
0x0000ebb8 add r1, pc | r1 = 0x1d84c;
0x0000ebba add r3, pc | r3 = 0x1d852;
0x0000ebbc adds r1, 7 | r1 += 7;
0x0000ebbe add r0, pc | r0 = 0x1d85c;
0x0000ebc0 bl 0x66580 | fcn_00066580 (r0, r1, r2, r3, r4);
| label_4:
0x0000ebc4 ldr r1, [pc, 0xd4] |
0x0000ebc6 movs r2, 0x17 | r2 = 0x17;
0x0000ebc8 ldr r3, [pc, 0xd4] |
0x0000ebca ldr r0, [pc, 0xd8] |
0x0000ebcc add r1, pc | r1 = 0x1d86c;
0x0000ebce add r3, pc | r3 = 0x1d872;
0x0000ebd0 adds r1, 7 | r1 += 7;
0x0000ebd2 add r0, pc | r0 = 0x1d87c;
0x0000ebd4 bl 0x66580 | fcn_00066580 (r0, r1, r2, r3, r4);
| label_5:
0x0000ebd8 ldr r1, [pc, 0xcc] |
0x0000ebda movs r2, 0x18 | r2 = 0x18;
0x0000ebdc ldr r3, [pc, 0xcc] |
0x0000ebde ldr r0, [pc, 0xd0] |
0x0000ebe0 add r1, pc | r1 = 0x1d88c;
0x0000ebe2 add r3, pc | r3 = 0x1d892;
0x0000ebe4 adds r1, 7 | r1 += 7;
0x0000ebe6 add r0, pc | r0 = 0x1d89c;
0x0000ebe8 bl 0x66580 | fcn_00066580 (r0, r1, r2, r3, r4);
| label_12:
0x0000ebec ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x0000ebee bl 0x5ec70 | fcn_0005ec70 (r0);
0x0000ebf2 ldr.w r2, [r4, 0x114] | r2 = *((r4 + 0x114));
0x0000ebf6 mov r3, r0 | r3 = r0;
0x0000ebf8 add.w r1, r4, 0x94 | r1 = r4 + 0x94;
0x0000ebfc ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0000ebfe str r3, [sp, 0x3c] | var_3ch = r3;
0x0000ec00 blx 0xe84c | r0 = fcn_0000e84c ();
0x0000ec04 cmp r0, 0 |
| if (r0 >= 0) {
0x0000ec06 blt 0xec3e |
0x0000ec08 mov r0, r5 | r0 = r5;
0x0000ec0a blx 0xd6e8 | vsnprintf_chk ()
| label_17:
0x0000ec0e ldr r1, [pc, 0xa4] |
0x0000ec10 add r1, pc | r1 = 0x1d8ca;
0x0000ec12 mov r3, r1 | r3 = r1;
0x0000ec14 b 0xeb22 | goto label_2;
| label_16:
0x0000ec16 ldr r1, [pc, 0xa0] |
0x0000ec18 movs r2, 0x19 | r2 = 0x19;
0x0000ec1a ldr r3, [pc, 0xa0] |
0x0000ec1c ldr r0, [pc, 0xa0] |
0x0000ec1e add r1, pc | r1 = 0x1d8dc;
0x0000ec20 add r3, pc | r3 = 0x1d8e2;
0x0000ec22 adds r1, 7 | r1 += 7;
0x0000ec24 add r0, pc | r0 = 0x1d8e8;
0x0000ec26 bl 0x66580 | fcn_00066580 (r0, r1, r2, r3, r4);
| label_15:
0x0000ec2a rsbs r5, r5, 0 | r5 -= ;
0x0000ec2c b 0xeb5a | goto label_1;
| label_13:
0x0000ec2e mvn r5, 0x46 | r5 = ~0x46;
0x0000ec32 b 0xeb5a | goto label_1;
| label_14:
0x0000ec34 mvn r5, 4 | r5 = ~4;
0x0000ec38 b 0xeb5a | goto label_1;
| label_18:
0x0000ec3a blx 0xd8a4 | fcn_0000d8a4 ();
| }
0x0000ec3e blx 0xdfdc | r0 = fcn_0000dfdc ();
0x0000ec42 ldr r3, [r0] | r3 = *(r0);
0x0000ec44 movs r2, 4 | r2 = 4;
0x0000ec46 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0000ec48 add r1, sp, 0x34 | r1 += var_34h;
0x0000ec4a str r3, [sp, 0x34] | var_34h = r3;
0x0000ec4c blx 0xe178 | fcn_0000e178 ();
0x0000ec50 movs r0, 1 | r0 = 1;
0x0000ec52 blx 0xd6e8 | vsnprintf_chk ()
0x0000ec56 nop |
0x0000ec58 lsrs r0, r0, 0x1b | r0 >>= 0x1b;
0x0000ec5a movs r1, r1 |
0x0000ec5c lsls r0, r1, 0x1c | r0 = r1 << 0x1c;
0x0000ec5e movs r0, r0 |
0x0000ec60 strb r6, [r4, r2] | *((r4 + r2)) = r6;
0x0000ec62 movs r6, r0 | r6 = r0;
0x0000ec64 subs r7, 0x68 | r7 -= 0x68;
0x0000ec66 movs r6, r0 | r6 = r0;
0x0000ec68 ands r0, r0 | r0 &= r0;
0x0000ec6a movs r6, r0 | r6 = r0;
0x0000ec6c eors r4, r6 | r4 ^= r6;
0x0000ec6e movs r6, r0 | r6 = r0;
0x0000ec70 subs r7, 0xc0 | r7 -= 0xc0;
0x0000ec72 movs r6, r0 | r6 = r0;
0x0000ec74 subs r7, 0x9e | r7 -= 0x9e;
0x0000ec76 movs r6, r0 | r6 = r0;
0x0000ec78 strh r4, [r7, r5] | *((r7 + r5)) = r4;
0x0000ec7a movs r6, r0 | r6 = r0;
0x0000ec7c subs r6, 0x3e | r6 -= 0x3e;
0x0000ec7e movs r6, r0 | r6 = r0;
0x0000ec80 subs r6, 0xaa | r6 -= 0xaa;
0x0000ec82 movs r6, r0 | r6 = r0;
0x0000ec84 subs r7, 0x4a | r7 -= 0x4a;
0x0000ec86 movs r6, r0 | r6 = r0;
0x0000ec88 lsrs r4, r5, 0x13 | r4 = r5 >> 0x13;
0x0000ec8a movs r1, r1 |
0x0000ec8c ldr r6, [r3, r4] | r6 = *((r3 + r4));
0x0000ec8e movs r6, r0 | r6 = r0;
0x0000ec90 subs r5, 0xb4 | r5 -= 0xb4;
0x0000ec92 movs r6, r0 | r6 = r0;
0x0000ec94 subs r6, 0xa6 | r6 -= 0xa6;
0x0000ec96 movs r6, r0 | r6 = r0;
0x0000ec98 pop {r1, r2, r6, r7, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.32.0 @ 0x2acfc */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0002acfc () | void fcn_0002acfc (int16_t arg_20h, int16_t arg_24h, int16_t arg_2ch, int16_t arg_140h, int16_t arg_200h, uint32_t arg1) {
| int16_t var_2ch;
| int16_t var_ch;
| int16_t var_1ch;
| int16_t var_1ch_2;
| r0 = arg1;
0x0002acfc blmi 0x1a3d6a0 | __asm ("blmi aav.0x00074b64");
0x0002ad00 push {r4, r5, r6, lr} |
0x0002ad02 sub sp, 0x30 |
0x0002ad04 add r2, pc | r2 += pc;
0x0002ad06 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002ad08 ldr r3, [r3] | r3 = *(r3);
0x0002ad0a str r3, [sp, 0x2c] | var_2ch = r3;
0x0002ad0c mov.w r3, 0 | r3 = 0;
0x0002ad10 cmp r0, 0 |
| if (r0 == 0) {
0x0002ad12 beq 0x2ae0e | goto label_8;
| }
0x0002ad14 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0002ad16 mov r4, r0 | r4 = r0;
0x0002ad18 cmp r3, 0 |
| if (r3 >= 0) {
0x0002ad1a bge.w 0x2ae24 | goto label_9;
| }
0x0002ad1e ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x0002ad20 cmp r3, 0 |
| if (r3 >= 0) {
0x0002ad22 bge.w 0x2ae42 | goto label_10;
| }
0x0002ad26 ldr.w r5, [r0, 0x198] | r5 = *((r0 + 0x198));
0x0002ad2a cmp r5, 0 |
| if (r5 == 0) {
0x0002ad2c beq.w 0x2ae58 | goto label_11;
| }
0x0002ad30 ldr.w r3, [r0, 0x3c0] | r3 = *((r0 + 0x3c0));
0x0002ad34 cmp r3, 0 |
| if (r3 != 0) {
0x0002ad36 bne.w 0x2ae6e | goto label_12;
| }
0x0002ad3a bl 0x65c6c | r0 = fcn_00065c6c ();
0x0002ad3e cmp r0, 6 |
| if (r0 > 6) {
0x0002ad40 ble 0x2ad72 |
0x0002ad42 ldr.w r3, [r4, 0x3fc] | r3 = *((r4 + 0x3fc));
0x0002ad46 cmp r3, 0 |
| if (r3 == 0) {
0x0002ad48 beq 0x2ae3a | goto label_13;
| }
0x0002ad4a ldr r1, [pc, 0x158] |
0x0002ad4c add r1, pc | r1 = 0x55bf6;
| label_0:
0x0002ad4e strd r1, r3, [sp, 8] | __asm ("strd r1, r3, [sp, 8]");
0x0002ad52 movw r3, 0x3c5 | r3 = 0x3c5;
0x0002ad56 ldr r2, [pc, 0x150] |
0x0002ad58 ldr r0, [pc, 0x150] |
0x0002ad5a ldr r1, [pc, 0x154] |
0x0002ad5c add r2, pc | r2 = 0x55c0a;
0x0002ad5e str r5, [sp, 0x10] | var_1ch = r5;
0x0002ad60 add r0, pc | r0 = 0x55c10;
0x0002ad62 adds r2, 7 | r2 += 7;
0x0002ad64 add r1, pc | r1 = 0x55c1a;
0x0002ad66 strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x0002ad6a movs r1, 0 | r1 = 0;
0x0002ad6c movs r0, 7 | r0 = 7;
0x0002ad6e bl 0x664b0 | fcn_000664b0 (r0, r1, r2, r3, r4, r5, r6);
0x0002ad70 invalid |
| }
0x0002ad72 add r6, sp, 0x1c | r6 += var_1ch_2;
0x0002ad74 movw r1, 0x801 |
0x0002ad78 mov r3, r6 | r3 = r6;
0x0002ad7a movs r2, 0 | r2 = 0;
0x0002ad7c movt r1, 8 | r1 = 0x80801;
0x0002ad80 movs r0, 1 | r0 = 1;
0x0002ad82 blx 0xd984 | r0 = fcn_0000d984 ();
0x0002ad86 cmp r0, 0 |
| if (r0 >= 0) {
0x0002ad88 blt 0x2adca |
0x0002ad8a ldr r0, [pc, 0x128] |
0x0002ad8c add.w r1, r4, 0x3c0 | r1 = r4 + 0x3c0;
0x0002ad90 str r1, [sp] | *(sp) = r1;
0x0002ad92 movs r3, 3 | r3 = 3;
0x0002ad94 movs r2, 1 | r2 = 1;
0x0002ad96 add r1, sp, 0x20 | r1 += arg_20h;
0x0002ad98 add r0, pc | r0 = 0x55c52;
0x0002ad9a bl 0x6b7a0 | r0 = fcn_0006b7a0 (r0, r1, r2, r3, r4);
0x0002ad9e subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0002ada0 blt 0x2ae84 | goto label_14;
| }
0x0002ada2 ldr r1, [sp, 0x20] | r1 = *(arg_20h);
| if (r5 != r0) {
0x0002ada4 bne 0x2adec | goto label_15;
| }
0x0002ada6 movs r2, 2 | r2 = 2;
0x0002ada8 mov r0, r1 | r0 = r1;
0x0002adaa invalid |
0x0002adac smmls r8, sb, r0, r2 | __asm ("smmls r8, sb, r0, r2");
| if (r2 >= 2) {
0x0002adb0 blt 0x2adc4 |
0x0002adb2 bl 0x6c540 | fcn_0006c540 ();
0x0002adb6 ldrd r0, r3, [r4, 0x198] | __asm ("ldrd r0, r3, aav.0x000000ff");
0x0002adba cmp r3, 0 |
| if (r3 == 0) {
0x0002adbc beq 0x2ae8c | goto label_3;
| }
0x0002adbe mov r1, r3 | r1 = r3;
0x0002adc0 blx 0xd734 | fcn_0000d734 ();
| }
| label_2:
0x0002adc4 movs r0, 1 | r0 = 1;
0x0002adc6 blx 0xd6e8 | vsnprintf_chk ()
| }
0x0002adca invalid |
0x0002adcc invalid |
0x0002add0 rsbs r5, r5, 0 | r5 -= ;
| do {
| label_1:
0x0002add2 ldr r2, [pc, 0xe4] |
0x0002add4 ldr r3, [pc, 0xc8] | r3 = *(0x2aea0);
0x0002add6 add r2, pc | r2 = 0x55c94;
0x0002add8 ldr r3, [r2, r3] | r3 = *(0x55c94);
0x0002adda ldr r2, [r3] | r2 = *(0x55c94);
0x0002addc ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x0002adde eors r2, r3 | r2 ^= r3;
0x0002ade0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002ade4 bne 0x2ae98 | goto label_16;
| }
0x0002ade6 mov r0, r5 | r0 = r5;
0x0002ade8 add sp, 0x30 |
0x0002adea pop {r4, r5, r6, pc} |
| label_15:
0x0002adec mov r0, r1 | r0 = r1;
0x0002adee bl 0x5ec70 | fcn_0005ec70 (r0);
0x0002adf2 ldr r0, [sp, 0x1c] | r0 = var_1ch_2;
0x0002adf4 bl 0x5f404 | r0 = fcn_0005f404 (r0);
0x0002adf8 mov r3, r0 | r3 = r0;
0x0002adfa mov r0, r4 | r0 = r4;
0x0002adfc strd r3, r3, [r4, 8] | __asm ("strd r3, r3, [r4, 8]");
0x0002ae00 bl 0x2a81c | fcn_0002a81c (r0);
0x0002ae04 mov r0, r4 | r0 = r4;
0x0002ae06 bl 0x2a868 | r0 = fcn_0002a868 (r0);
0x0002ae0a mov r5, r0 | r5 = r0;
0x0002ae0c b 0x2add2 |
| } while (1);
| label_8:
0x0002ae0e ldr r1, [pc, 0xac] |
0x0002ae10 movw r2, 0x3bf | r2 = 0x3bf;
0x0002ae14 ldr r3, [pc, 0xa8] |
0x0002ae16 ldr r0, [pc, 0xac] |
0x0002ae18 add r1, pc | r1 = 0x55cda;
0x0002ae1a add r3, pc | r3 = 0x55cde;
0x0002ae1c adds r1, 7 | r1 += 7;
0x0002ae1e add r0, pc | r0 = 0x55ce8;
0x0002ae20 bl 0x66580 | fcn_00066580 (r0, r1, r2, r3, r4);
| label_9:
0x0002ae24 ldr r1, [pc, 0xa0] |
0x0002ae26 mov.w r2, 0x3c0 | r2 = 0x3c0;
0x0002ae2a ldr r3, [pc, 0xa0] |
0x0002ae2c ldr r0, [pc, 0xa0] |
0x0002ae2e add r1, pc | r1 = 0x55cfa;
0x0002ae30 add r3, pc | r3 = 0x55d02;
0x0002ae32 adds r1, 7 | r1 += 7;
0x0002ae34 add r0, pc | r0 = 0x55d08;
0x0002ae36 bl 0x66580 | fcn_00066580 (r0, r1, r2, r3, r4);
| label_13:
0x0002ae3a ldr r1, [pc, 0x98] |
0x0002ae3c add r1, pc | r1 = 0x55d16;
0x0002ae3e mov r3, r1 | r3 = r1;
0x0002ae40 b 0x2ad4e | goto label_0;
| label_10:
0x0002ae42 ldr r1, [pc, 0x94] | r1 = *(0x2aeda);
0x0002ae44 movw r2, 0x3c1 | r2 = 0x3c1;
0x0002ae48 ldr r3, [pc, 0x90] | r3 = *(0x2aedc);
0x0002ae4a ldr r0, [pc, 0x94] | r0 = *(0x2aee2);
| label_6:
0x0002ae4c add r1, pc | r1 += pc;
0x0002ae4e add r3, pc | r3 += pc;
0x0002ae50 adds r1, 7 | r1 += 7;
0x0002ae52 add r0, pc | r0 += pc;
0x0002ae54 bl 0x66580 | fcn_00066580 (r0, r1, r2, r3, r4);
| label_11:
0x0002ae58 ldr r1, [pc, 0x88] |
0x0002ae5a movw r2, 0x3c2 | r2 = 0x3c2;
0x0002ae5e ldr r3, [pc, 0x88] | r3 = *(0x2aeea);
0x0002ae60 ldr r0, [pc, 0x88] | r0 = *(0x2aeec);
0x0002ae62 add r1, pc | r1 = 0x55d4a;
| do {
0x0002ae64 add r3, pc | r3 += pc;
0x0002ae66 adds r1, 7 | r1 += 7;
0x0002ae68 add r0, pc | r0 += pc;
0x0002ae6a bl 0x66580 | fcn_00066580 (r0, r1, r2, r3, r4);
| label_4:
0x0002ae6c invalid |
| label_12:
0x0002ae6e ldr r1, [pc, 0x80] |
0x0002ae70 movw r2, 0x3c3 | r2 = 0x3c3;
0x0002ae74 ldr r3, [pc, 0x7c] |
0x0002ae76 ldr r0, [pc, 0x80] |
0x0002ae78 add r1, pc | r1 = 0x55d6e;
0x0002ae7a add r3, pc | r3 = 0x55d72;
0x0002ae7c adds r1, 7 | r1 += 7;
0x0002ae7e add r0, pc | r0 = 0x55d7c;
0x0002ae80 bl 0x66580 | fcn_00066580 (r0, r1, r2, r3, r4);
| label_14:
0x0002ae84 mov r0, r6 | r0 = r6;
0x0002ae86 bl 0x5ecbc | fcn_0005ecbc (r0, r1);
0x0002ae8a b 0x2add2 | goto label_1;
| label_3:
0x0002ae8c add r1, sp, 0x24 | r1 += arg_24h;
0x0002ae8e strd r0, r3, [sp, 0x24] | __asm ("strd r0, r3, [sp, 0x24]");
0x0002ae92 blx 0xd734 | fcn_0000d734 ();
0x0002ae96 b 0x2adc4 | goto label_2;
| label_16:
0x0002ae98 blx 0xd8a4 | fcn_0000d8a4 ();
0x0002ae9c ldr r3, [pc, 0x190] | r3 = *(0x2b030);
0x0002ae9e movs r7, r0 | r7 = r0;
0x0002aea0 lsls r0, r1, 0x1c | r0 = r1 << 0x1c;
0x0002aea2 movs r0, r0 |
0x0002aea4 str r1, [sp, 0x140] | *(arg_140h) = r1;
0x0002aea6 movs r4, r0 | r4 = r0;
| if (r4 <= r0) {
0x0002aea8 blo 0x2aecc | goto label_17;
| }
0x0002aeaa movs r4, r0 | r4 = r0;
0x0002aeac bvc 0x2af00 | __asm ("bvc aav.0x000000ff");
0x0002aeae movs r4, r0 | r4 = r0;
0x0002aeb0 bge 0x2ae64 |
| } while (r4 >= r0);
0x0002aeb2 movs r4, r0 | r4 = r0;
0x0002aeb4 bvc 0x2aee0 | __asm ("bvc aav.0x000000ff");
0x0002aeb6 movs r4, r0 | r4 = r0;
| do {
0x0002aeb8 ldr r2, [pc, 0x248] | r2 = *(0x2b104);
0x0002aeba movs r7, r0 | r7 = r0;
| if (r7 >= r0) {
0x0002aebc bhs 0x2af68 | goto label_18;
| }
0x0002aebe movs r4, r0 | r4 = r0;
| if (r4 > r0) {
0x0002aec0 bhi 0x2aed8 | goto label_19;
| }
0x0002aec2 movs r4, r0 | r4 = r0;
0x0002aec4 smmls r0, r6, r5, r0 | __asm ("smmls r0, r6, r5, r0");
| if (r4 >= r0) {
0x0002aec8 bhs 0x2af48 | goto label_20;
| }
0x0002aeca movs r4, r0 | r4 = r0;
| label_17:
0x0002aecc bvc 0x2aeb8 | __asm ("bvc aav.0x000000ff");
| } while (1);
0x0002aece movs r4, r0 | r4 = r0;
0x0002aed0 ldrb r0, [r5, 0xd] | r0 = *((r5 + 0xd));
0x0002aed2 movs r4, r0 | r4 = r0;
0x0002aed4 str r6, [sp, 0x200] | *(arg_200h) = r6;
0x0002aed6 movs r4, r0 | r4 = r0;
| if (r4 >= r0) {
| label_19:
0x0002aed8 bhs 0x2af1c | void (*0x2af1c)() ();
| }
0x0002aeda movs r4, r0 | r4 = r0;
| label_5:
0x0002aedc bvc 0x2ae8c | __asm ("bvc aav.0x000000ff");
| goto label_3;
0x0002aede movs r4, r0 | r4 = r0;
0x0002aee0 ldrb r2, [r3, 0xd] | r2 = *((r3 + 0xd));
0x0002aee2 movs r4, r0 | r4 = r0;
| if (r4 >= r0) {
0x0002aee4 bhs 0x2aefc | void (*0x2aefc)() ();
| }
0x0002aee6 movs r4, r0 | r4 = r0;
| do {
| label_7:
0x0002aee8 bvc 0x2ae6c | __asm ("bvc aav.0x000000ff");
| goto label_4;
0x0002aeea movs r4, r0 | r4 = r0;
0x0002aeec bpl 0x2aee8 |
| } while (r4 >= r0);
0x0002aeee movs r4, r0 | r4 = r0;
| if (r4 != r0) {
0x0002aef0 bne 0x2aedc | goto label_5;
| }
0x0002aef2 movs r4, r0 | r4 = r0;
0x0002aef4 bvc 0x2ae4c | __asm ("bvc aav.0x000000ff");
| goto label_6;
0x0002aef6 movs r4, r0 | r4 = r0;
| if (r4 >= r0) {
0x0002aef8 bpl 0x2aee8 | goto label_7;
| }
0x0002aefa movs r4, r0 | r4 = r0;
| label_20:
0x0002af48 str r3, [r7, 0x24] | *((r7 + 0x24)) = r3;
0x0002af4a mov.w r3, 0 | r3 = 0;
0x0002af4e cmp r0, 0 |
| if (r0 == 0) {
0x0002af50 beq.w 0x2b0a0 | void (*0x2b0a0)() ();
| }
0x0002af54 mov r4, r1 | r4 = r1;
0x0002af56 cmp r1, 0 |
| if (r1 == 0) {
0x0002af58 beq.w 0x2b0b6 | void (*0x2b0b6)() ();
| }
0x0002af5c cmp r6, 0 |
| if (r6 == 0) {
0x0002af5e beq.w 0x2b0cc | void (*0x2b0cc)() ();
| }
0x0002af62 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0002af64 mov r5, r0 | r5 = r0;
0x0002af66 subs r3, 4 | r3 -= 4;
| label_18:
0x0002af68 cmp r3, 1 |
| if (r3 >= 1) {
0x0002af6a bls 0x2af82 |
0x0002af6c ldr r1, [pc, 0x3c0] |
0x0002af6e movw r2, 0x3fd | r2 = 0x3fd;
0x0002af72 ldr r3, [pc, 0x3c0] |
0x0002af74 ldr r0, [pc, 0x3c0] |
0x0002af76 add r1, pc | r1 = 0x562aa;
0x0002af78 add r3, pc | r3 = 0x562b2;
0x0002af7a adds r1, 7 | r1 += 7;
0x0002af7c add r0, pc | r0 = 0x562b8;
0x0002af7e bl 0x66580 | fcn_00066580 (r0, r1, r2, r3, r4);
| }
0x0002af82 ldrd r1, r3, [r1, 0x114] | __asm ("ldrd r1, r3, aav.0x000000ff");
0x0002af86 ldr r2, [r6] | r2 = *(r6);
0x0002af88 adds r1, 7 | r1 += 7;
0x0002af8a adds r3, 0x10 | r3 += 0x10;
0x0002af8c bic r1, r1, 7 | r1 = BIT_MASK (r1, 7);
0x0002af90 add r3, r1 | r3 += r1;
0x0002af92 cmp r2, r3 |
| if (r2 > r3) {
0x0002af94 blo 0x2afb6 |
| }
0x0002afb6 ldrb.w r3, [r4, 0x100] | r3 = *((r4 + 0x100));
0x0002afba lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 >= r3) {
0x0002afbc bpl.w 0x2b10a | void (*0x2b10a)() ();
| }
0x0002afc0 ldr.w sb, [r4, 0x1b4] | sb = *((r4 + 0x1b4));
0x0002afc4 cmp.w sb, 0 |
| if (sb != 0) {
0x0002afc8 bne 0x2b078 | void (*0x2b078)() ();
| }
0x0002afca ldr.w r3, [r4, 0x1a0] | r3 = *((r4 + 0x1a0));
0x0002afce cmp r3, 0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.32.0 @ 0x6be6c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0006be6c () | void fcn_0006be6c (int16_t arg_30h, int16_t arg_34h, int16_t arg_3ch, int16_t arg_44h, int16_t arg_48h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006be6c push.w {r4, r5, r6, r7, r8, sb, lr} |
0x0006be70 mov r4, r2 | r4 = r2;
0x0006be72 ldr r2, [pc, 0xdc] | r2 = *(0x6bf52);
0x0006be74 mov r5, r3 | r5 = r3;
0x0006be76 sub sp, 0x14 |
| label_1:
0x0006be78 mov r6, r1 | r6 = r1;
0x0006be7a ldr r3, [pc, 0xd8] |
0x0006be7c mov r1, r4 | r1 = r4;
0x0006be7e add r2, pc | r2 += pc;
0x0006be80 ldr.w sb, [sp, 0x30] | sb = *(arg_30h);
0x0006be84 ldr r7, [sp, 0x48] | r7 = *(arg_48h);
0x0006be86 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0006be88 mov r2, r5 | r2 = r5;
0x0006be8a ldr r3, [r3] | r3 = *(0x6bf56);
0x0006be8c str r3, [sp, 0xc] | var_ch = r3;
0x0006be8e mov.w r3, 0 | r3 = 0;
0x0006be92 bic r3, sb, 0x324 | r3 = BIT_MASK (sb, 0x324);
0x0006be96 orr r3, r3, 4 | r3 |= 4;
0x0006be9a str r7, [sp] | *(sp) = r7;
0x0006be9c bl 0x6b7a0 | r0 = fcn_0006b7a0 (r0, r1, r2, r3, r4);
0x0006bea0 cmp r0, 0 |
| if (r0 < 0) {
0x0006bea2 blt 0x6beaa | goto label_0;
| }
0x0006bea4 it ne |
| if (r0 == 0) {
0x0006bea6 movne r0, 1 | r0 = 1;
| }
0x0006bea8 beq 0x6bec4 |
| while (r7 == 0) {
| label_0:
0x0006beaa ldr r2, [pc, 0xac] |
0x0006beac ldr r3, [pc, 0xa4] | r3 = *(0x6bf54);
0x0006beae add r2, pc | r2 = 0xd7e0c;
0x0006beb0 ldr r3, [r2, r3] | r3 = *(0xd7e0c);
0x0006beb2 ldr r2, [r3] | r2 = *(0xd7e0c);
0x0006beb4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0006beb6 eors r2, r3 | r2 ^= r3;
0x0006beb8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006bebc bne 0x6bf4a | goto label_5;
| }
0x0006bebe add sp, 0x14 |
0x0006bec0 pop.w {r4, r5, r6, r7, r8, sb, pc} |
0x0006bec4 ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x0006bec6 ldrd r0, r1, [sp, 0x34] | __asm ("ldrd r0, r1, [arg_34h]");
0x0006beca str r3, [sp] | *(sp) = r3;
0x0006becc ldrd r2, r3, [sp, 0x3c] | __asm ("ldrd r2, r3, [arg_3ch]");
0x0006bed0 bl 0x67ff8 | r0 = fcn_00067ff8 (r0, r1, r2, r3, r4);
0x0006bed4 subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 < r0) {
0x0006bed8 blt 0x6bf14 | goto label_6;
| }
0x0006beda add r3, sp, 8 | r3 += var_8h;
0x0006bedc mov r2, r5 | r2 = r5;
0x0006bede str r3, [sp] | *(sp) = r3;
0x0006bee0 mov r1, r4 | r1 = r4;
0x0006bee2 bic r3, sb, 0x93 | r3 = BIT_MASK (sb, 0x93);
0x0006bee6 mov r0, r6 | r0 = r6;
0x0006bee8 bl 0x6b7a0 | r0 = fcn_0006b7a0 (r0, r1, r2, r3, r4);
0x0006beec cmp r0, 0 |
| if (r0 < 0) {
0x0006beee blt 0x6bf44 | goto label_7;
| }
| if (r0 != 0) {
0x0006bef0 beq 0x6bf0a |
0x0006bef2 ands r2, sb, 0x40 | r2 = sb & 0x40;
0x0006bef6 ldr r1, [sp, 8] | r1 = var_8h;
0x0006bef8 it ne |
| if (r2 == sb) {
0x0006befa movne r2, 3 | r2 = 3;
| }
0x0006befc mov r0, r6 | r0 = r6;
0x0006befe bl 0x6af4c | r0 = fcn_0006af4c (r0, r1, r2);
0x0006bf02 cmp r0, 0 |
| if (r0 < 0) {
0x0006bf04 blt 0x6bf44 | goto label_7;
| }
0x0006bf06 blx 0xd6e8 | vsnprintf_chk ()
| }
0x0006bf0a cmp r7, 0 |
0x0006bf0c beq 0x6beaa |
| }
0x0006bf0e ldr r3, [sp, 8] | r3 = var_8h;
0x0006bf10 str r3, [r7] | *(r7) = r3;
0x0006bf12 b 0x6beaa | goto label_0;
| label_6:
0x0006bf14 tst.w sb, 0x40 |
0x0006bf18 ite ne |
| if ((sb & 0x40) == 0) {
0x0006bf1a movne r5, 3 | r5 = 3;
| }
| if ((sb & 0x40) != 0) {
0x0006bf1c moveq r5, 7 | r5 = 7;
| }
0x0006bf1e bl 0x65c6c | r0 = fcn_00065c6c ();
0x0006bf22 cmp r0, r5 |
| if (r0 >= r5) {
0x0006bf24 blt 0x6bf44 |
0x0006bf26 ldr r2, [pc, 0x34] |
0x0006bf28 mov r1, r8 | r1 = r8;
0x0006bf2a ldr r4, [pc, 0x34] |
0x0006bf2c mov r0, r5 | r0 = r5;
0x0006bf2e ldr r3, [pc, 0x34] |
0x0006bf30 add r2, pc | r2 = 0xd7e92;
0x0006bf32 add r4, pc | r4 = 0xd7e98;
0x0006bf34 adds r2, 7 | r2 += 7;
0x0006bf36 add r3, pc | r3 = 0xd7ea0;
0x0006bf38 strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x0006bf3c movw r3, 0x5d7 | r3 = 0x5d7;
0x0006bf40 bl 0x664b0 | fcn_000664b0 (r0, r1, r2, r3, r4, r5, r6);
| }
| label_7:
0x0006bf44 movs r0, 1 | r0 = 1;
0x0006bf46 blx 0xd6e8 | vsnprintf_chk ()
| label_5:
0x0006bf4a blx 0xd8a4 | fcn_0000d8a4 ();
0x0006bf4e nop |
0x0006bf50 subs r1, 0xea | r1 -= 0xea;
0x0006bf52 movs r3, r0 | r3 = r0;
0x0006bf54 lsls r0, r1, 0x1c | r0 = r1 << 0x1c;
0x0006bf56 movs r0, r0 |
0x0006bf58 subs r1, 0xba | r1 -= 0xba;
0x0006bf5a movs r3, r0 | r3 = r0;
| if (r3 > r0) {
0x0006bf5c bgt 0x6be78 | goto label_1;
| }
0x0006bf5e movs r1, r0 | r1 = r0;
0x0006bf60 b 0x6c228 |
| while (r1 == r0) {
0x0006c186 ldr r3, [pc, 0x1a8] |
0x0006c188 add r3, pc |
0x0006c18a ldr r3, [r3] | r3 = *(0xd84be);
| if (r3 != 0) {
0x0006c18c cbz r3, 0x6c1d6 |
0x0006c18e ldr.w sb, [pc, 0x1a4] |
0x0006c192 lsr.w sl, r8, 2 | sl = r8 >> 2;
0x0006c196 and fp, r8, 2 |
0x0006c19a movs r7, 1 | r7 = 1;
0x0006c19c add sb, pc | sb = 0xd84d6;
| label_2:
0x0006c19e and r2, sl, 4 | r2 = sl & 4;
0x0006c1a2 mov r1, r4 | r1 = r4;
0x0006c1a4 cmp.w fp, 0 |
0x0006c1a8 it eq |
| if (fp != 0) {
0x0006c1aa orreq r2, r2, 1 | r2 |= 1;
| }
0x0006c1ae mov r0, r6 | r0 = r6;
0x0006c1b0 blx 0xe690 | r0 = unsetenv ();
0x0006c1b4 cmp r0, 0 |
| if (r0 <= 0) {
0x0006c1b6 ble 0x6c25c | goto label_8;
| }
0x0006c1b8 cmp r4, r0 |
0x0006c1ba str.w r7, [sb] | __asm ("str.w r7, [sb]");
| if (r4 == r0) {
0x0006c1be beq 0x6c234 | goto label_9;
| }
0x0006c1c0 cmp r0, r4 |
| if (r0 >= r4) {
0x0006c1c2 bhs 0x6c2ba | goto label_10;
| }
0x0006c1c4 tst.w r8, 1 |
0x0006c1c8 add r6, r0 | r6 += r0;
0x0006c1ca sub.w r4, r4, r0 | r4 -= r0;
| if ((r8 & 1) != 0) {
0x0006c1ce bne 0x6c2ce | goto label_11;
| }
0x0006c1d0 cmp.w fp, 0 |
| if (fp != 0) {
0x0006c1d4 bne 0x6c2a2 | goto label_12;
| }
| }
| label_3:
0x0006c1d6 ldr r0, [pc, 0x160] |
0x0006c1d8 mov.w r1, 0x100 |
0x0006c1dc movt r1, 8 | r1 = 0x80100;
0x0006c1e0 add r0, pc | r0 = 0xd851e;
0x0006c1e2 blx 0xdc64 | r0 = ppoll ();
0x0006c1e6 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0006c1e8 blt 0x6c2a6 | goto label_13;
| }
0x0006c1ea mov r2, r4 | r2 = r4;
0x0006c1ec movs r3, 1 | r3 = 1;
0x0006c1ee mov r1, r6 | r1 = r6;
0x0006c1f0 bl 0x64c30 | r0 = fcn_00064c30 (r0, r1, r2, r3);
0x0006c1f4 mov r4, r0 | r4 = r0;
0x0006c1f6 b 0x6c23a | goto label_4;
0x0006c228 lsrs r1, r0, 0x1c | r1 = r0 >> 0x1c;
0x0006c22a beq 0x6c186 |
| }
0x0006c22c mov r1, r4 | r1 = r4;
0x0006c22e mov r0, r6 | r0 = r6;
0x0006c230 bl 0x6c124 | fcn_0006c124 (r0, r1);
| label_9:
0x0006c234 mov.w r5, -1 | r5 = -1;
0x0006c238 movs r4, 0 | r4 = 0;
| label_4:
0x0006c23a mov r0, r5 | r0 = r5;
0x0006c23c bl 0x5ec70 | fcn_0005ec70 (r0);
0x0006c240 ldr r2, [pc, 0xf8] |
0x0006c242 ldr r3, [pc, 0xe8] | r3 = *(0x6c32e);
0x0006c244 add r2, pc | r2 = 0xd8584;
0x0006c246 ldr r3, [r2, r3] | r3 = *(0xd8584);
0x0006c248 ldr r2, [r3] | r2 = *(0xd8584);
0x0006c24a ldr r3, [sp, 4] | r3 = var_4h;
0x0006c24c eors r2, r3 | r2 ^= r3;
0x0006c24e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006c252 bne 0x6c324 | goto label_14;
| }
0x0006c254 mov r0, r4 | r0 = r4;
0x0006c256 add sp, 0xc |
0x0006c258 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| if (r2 == r3) {
| label_8:
0x0006c25c beq 0x6c2de | goto label_15;
| }
0x0006c25e blx 0xdfdc | r0 = fcn_0000dfdc ();
0x0006c262 ldr r3, [r0] | r3 = *(r0);
0x0006c264 eor.w r2, r3, r3, asr 31 | r2 = r3 ^ (r3 >> 31);
0x0006c268 sub.w r2, r2, r3, asr 31 | r2 -= (r3 >> 31);
0x0006c26c cmp r2, 0x26 |
| if (r2 == 0x26) {
0x0006c26e beq 0x6c298 | goto label_16;
| }
| if (r2 > 0x26) {
0x0006c270 bgt 0x6c292 | goto label_17;
| }
0x0006c272 cmp r2, 0x19 |
| if (r2 == 0x19) {
0x0006c274 beq 0x6c298 | goto label_16;
| }
| do {
0x0006c276 cmp r3, 0xb |
| if (r3 == 0xb) {
0x0006c278 beq 0x6c2fa | goto label_18;
| }
0x0006c27a cmp r3, 0x16 |
| if (r3 != 0x16) {
0x0006c27c bne 0x6c31c | goto label_19;
| }
0x0006c27e tst.w r8, 0x10 |
| if ((r8 & 0x10) == 0) {
0x0006c282 beq 0x6c2f0 | goto label_20;
| }
0x0006c284 bic r8, r8, 0x10 | r8 = BIT_MASK (r8, 0x10);
0x0006c288 lsr.w sl, r8, 2 | sl = r8 >> 2;
0x0006c28c and fp, r8, 2 |
0x0006c290 b 0x6c19e | goto label_2;
| label_17:
0x0006c292 subs r2, 0x5d | r2 -= 0x5d;
0x0006c294 cmp r2, 4 |
0x0006c296 bhi 0x6c276 |
| } while (r2 > 4);
| label_16:
0x0006c298 ldr r3, [pc, 0xa4] |
0x0006c29a movs r2, 0 | r2 = 0;
0x0006c29c add r3, pc | r3 = 0xd85e0;
0x0006c29e str r2, [r3] | *(r3) = r2;
0x0006c2a0 b 0x6c1d6 | goto label_3;
| label_12:
0x0006c2a2 movs r5, 1 | r5 = 1;
0x0006c2a4 b 0x6c19e | goto label_2;
| label_13:
0x0006c2a6 blx 0xdfdc | r0 = fcn_0000dfdc ();
0x0006c2aa ldr r4, [r0] | r4 = *(r0);
0x0006c2ac cmp r4, 2 |
0x0006c2ae it ne |
| if (r4 == 2) {
0x0006c2b0 rsbne r4, r4, 0 | __asm ("rsbne r4, r4, 0");
| goto label_21;
| }
| if (r4 != 2) {
| label_21:
0x0006c2b2 bne 0x6c23a | goto label_4;
| }
0x0006c2b4 mvn r4, 0x25 | r4 = ~0x25;
0x0006c2b8 b 0x6c23a | goto label_4;
| label_10:
0x0006c2ba ldr r1, [pc, 0x88] |
0x0006c2bc movs r2, 0xe8 | r2 = 0xe8;
0x0006c2be ldr r3, [pc, 0x88] |
0x0006c2c0 ldr r0, [pc, 0x88] |
0x0006c2c2 add r1, pc | r1 = 0xd860c;
0x0006c2c4 add r3, pc | r3 = 0xd8612;
0x0006c2c6 adds r1, 7 | r1 += 7;
0x0006c2c8 add r0, pc | r0 = 0xd8618;
0x0006c2ca bl 0x66580 | fcn_00066580 (r0, r1, r2, r3, r4);
| do {
| label_11:
0x0006c2ce mov r1, r4 | r1 = r4;
0x0006c2d0 mov r0, r6 | r0 = r6;
0x0006c2d2 mov.w r5, -1 | r5 = -1;
0x0006c2d6 movs r4, 0 | r4 = 0;
0x0006c2d8 bl 0x6c124 | fcn_0006c124 (r0, r1);
0x0006c2dc b 0x6c23a | goto label_4;
| label_15:
0x0006c2de ldr r3, [pc, 0x70] |
0x0006c2e0 movs r2, 1 | r2 = 1;
0x0006c2e2 mov.w r5, -1 | r5 = -1;
0x0006c2e6 mvn r4, 4 | r4 = ~4;
0x0006c2ea add r3, pc | r3 = 0xd8640;
0x0006c2ec str r2, [r3] | *(r3) = r2;
0x0006c2ee b 0x6c23a | goto label_4;
| label_20:
0x0006c2f0 mov.w r5, -1 | r5 = -1;
0x0006c2f4 mvn r4, 0x15 | r4 = ~0x15;
0x0006c2f8 b 0x6c23a | goto label_4;
| label_18:
0x0006c2fa ldr r3, [pc, 0x58] |
0x0006c2fc movs r2, 1 | r2 = 1;
0x0006c2fe add r3, pc | r3 = 0xd8658;
0x0006c300 str r2, [r3] | *(r3) = r2;
| if (r5 == 0) {
0x0006c302 cbz r5, 0x6c30a | goto label_22;
| }
0x0006c304 tst.w r8, 1 |
0x0006c308 bne 0x6c2ce |
| } while ((r8 & 1) != 0);
| label_22:
0x0006c30a tst.w r8, 4 |
| if ((r8 & 4) == 0) {
0x0006c30e beq.w 0x6c1d6 | goto label_3;
| }
0x0006c312 mov.w r5, -1 | r5 = -1;
0x0006c316 mvn r4, 0x3c | r4 = ~0x3c;
0x0006c31a b 0x6c23a | goto label_4;
| label_19:
0x0006c31c rsbs r4, r3, 0 | r4 = r3 - ;
0x0006c31e mov.w r5, -1 | r5 = -1;
0x0006c322 b 0x6c23a | goto label_4;
| label_14:
0x0006c324 blx 0xd8a4 | fcn_0000d8a4 ();
0x0006c328 adds r6, 0xfc | r6 += 0xfc;
0x0006c32a movs r3, r0 | r3 = r0;
0x0006c32c lsls r0, r1, 0x1c | r0 = r1 << 0x1c;
0x0006c32e movs r0, r0 |
0x0006c330 adcs r0, r6 | __asm ("adcs r0, r6");
0x0006c332 movs r3, r0 | r3 = r0;
0x0006c334 adcs r4, r3 | __asm ("adcs r4, r3");
0x0006c336 movs r3, r0 | r3 = r0;
0x0006c338 b 0x6c38c |
0x0006c38c movs r0, 1 | r0 = 1;
| if (r3 == 0) {
0x0006c38e cbz r3, 0x6c3dc | goto label_23;
| }
0x0006c390 bl 0x6f834 | fcn_0006f834 (r0);
0x0006c394 ldrd r3, r2, [r4, 0x10] | __asm ("ldrd r3, r2, [r4, 0x10]");
0x0006c398 orrs.w ip, r3, r2 |
| if (ip == r3) {
0x0006c39c beq 0x6c3d2 | goto label_24;
| }
0x0006c39e cmp.w r1, -1 |
0x0006c3a2 it eq |
| if (r1 == -1) {
0x0006c3a4 cmpeq r0, -1 | __asm ("cmpeq r0, -1");
| }
| if (r1 == -1) {
0x0006c3a8 beq 0x6c3f2 | goto label_25;
| }
0x0006c3aa cmp r0, r3 |
0x0006c3ac sbcs.w ip, r1, r2 | __asm ("sbcs.w ip, r1, r2");
| if (r0 <= r3) {
0x0006c3b0 blo 0x6c3c2 | goto label_26;
| }
0x0006c3b2 subs r3, r0, r3 | r3 = r0 - r3;
0x0006c3b4 sbc.w r2, r1, r2 | __asm ("sbc.w r2, r1, r2");
| do {
0x0006c3b8 ldr r5, [r4] | r5 = *(r4);
0x0006c3ba cmp r5, r3 |
0x0006c3bc ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0006c3be sbcs r3, r2 | __asm ("sbcs r3, r2");
| if (r5 > r3) {
0x0006c3c0 blo 0x6c3d2 |
| label_26:
0x0006c3c2 ldrd r2, r3, [r4, 8] | __asm ("ldrd r2, r3, [r4, 8]");
0x0006c3c6 cmp r3, r2 |
0x0006c3c8 it hs |
| if (r3 < r2) {
0x0006c3ca movhs r0, 0 | r0 = 0;
| }
| if (r3 >= r2) {
0x0006c3cc bhs 0x6c3dc | goto label_23;
| }
0x0006c3ce adds r3, 1 | r3++;
0x0006c3d0 b 0x6c3d8 |
| } else {
| label_24:
0x0006c3d2 movs r3, 1 | r3 = 1;
0x0006c3d4 strd r0, r1, [r4, 0x10] | __asm ("strd r0, r1, [r4, 0x10]");
| }
0x0006c3d8 movs r0, 1 | r0 = 1;
0x0006c3da str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| label_23:
0x0006c3dc pop {r3, r4, r5, pc} |
| label_25:
0x0006c3f2 mov r3, r0 | r3 = r0;
0x0006c3f4 mov r2, r1 | r2 = r1;
0x0006c3f6 b 0x6c3b8 |
| } while (1);
| }
[*] Function printf used 7 times libsystemd.so.0.32.0