[*] Binary protection state of systemd-fstab-generator
Full RELRO Canary found NX enabled PIE enabled RPATH No RUNPATH No Symbols
[*] Function printf tear down of systemd-fstab-generator
; 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/system-generators/systemd-fstab-generator @ 0x1a68 */
| #include <stdint.h>
|
; (fcn) fcn.00001a68 () | void fcn_00001a68 (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00001a68 push {r4, r5, r6, lr} |
0x00001a6a mov r4, r1 | r4 = r1;
| if (r1 != 0) {
0x00001a6c cbz r1, 0x1a74 |
0x00001a6e ldrb r3, [r1] | r3 = *(r1);
| if (r3 != 0) {
0x00001a70 cbnz r3, 0x1a80 | goto label_0;
| }
0x00001a72 mov r4, r3 | r4 = r3;
| }
0x00001a74 mov r5, r4 | r5 = r4;
| do {
0x00001a76 mov r0, r4 | r0 = r4;
0x00001a78 blx 0x127c | free (r0);
0x00001a7a invalid |
0x00001a7e pop {r4, r5, r6, pc} |
| label_0:
0x00001a80 ldr r1, [pc, 0x5c] |
0x00001a82 mov r6, r0 | r6 = r0;
0x00001a84 mov r0, r4 | r0 = r4;
0x00001a86 add r1, pc | r1 = 0x356a;
0x00001a88 blx 0x1514 | r0 = fcn_00001514 ();
0x00001a8c mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00001a8e cbnz r0, 0x1a9c |
0x00001a90 mov r4, r0 | r4 = r0;
0x00001a92 mov r0, r4 | r0 = r4;
0x00001a94 blx 0x127c | free (r0);
0x00001a98 mov r0, r5 | r0 = r5;
0x00001a9a pop {r4, r5, r6, pc} |
| }
0x00001a9c ldr r2, [pc, 0x44] |
0x00001a9e mov r0, r4 | r0 = r4;
0x00001aa0 ldr r1, [pc, 0x44] |
0x00001aa2 add r2, pc | r2 = 0x358a;
0x00001aa4 add r1, pc | r1 = 0x3590;
0x00001aa6 blx 0x1258 | r0 = strreplace ();
0x00001aaa mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x00001aac cbz r0, 0x1ac8 |
0x00001aae ldr r2, [pc, 0x3c] |
0x00001ab0 mov r3, r0 | r3 = r0;
0x00001ab2 movs r1, 1 | r1 = 1;
0x00001ab4 mov r0, r6 | r0 = r6;
0x00001ab6 movs r5, 1 | r5 = 1;
0x00001ab8 add r2, pc | r2 = 0x35aa;
0x00001aba blx 0x1354 | fprintf_chk ()
0x00001abe mov r0, r4 | r0 = r4;
0x00001ac0 blx 0x127c | free (r0);
0x00001ac4 mov r0, r5 | r0 = r5;
0x00001ac6 pop {r4, r5, r6, pc} |
| }
0x00001ac8 ldr r1, [pc, 0x24] |
0x00001aca movs r2, 0x4d | r2 = 0x4d;
0x00001acc ldr r3, [pc, 0x24] |
0x00001ace movs r0, 3 | r0 = 3;
0x00001ad0 add r1, pc | r1 = 0x35c4;
0x00001ad2 add r3, pc | r3 = 0x35ca;
0x00001ad4 adds r1, 7 | r1 += 7;
0x00001ad6 blx 0x15c0 | fcn_000015c0 ();
0x00001ad8 ldcl p6, c4, [r4, -0x14]! | __asm ("ldcl p6, c4, [r4, -0x14]!");
0x00001adc b 0x1a76 |
| } 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/system-generators/systemd-fstab-generator @ 0x1af8 */
| #include <stdint.h>
|
; (fcn) fcn.00001af8 () | void fcn_00001af8 (int16_t arg_80h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int32_t var_0h_2;
| int32_t var_8h;
| int32_t var_8h_2;
| void * ptr;
| int16_t var_18h;
| int32_t var_18h_2;
| void * s;
| int16_t var_64h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00001af8 push.w {r4, r5, r6, r7, r8, lr} |
0x00001afc mov r7, r0 | r7 = r0;
0x00001afe mov r0, r2 | r0 = r2;
0x00001b00 ldr r2, [pc, 0xfc] |
0x00001b02 mov r6, r1 | r6 = r1;
0x00001b04 mov r1, r3 | r1 = r3;
0x00001b06 ldr r3, [pc, 0xfc] | r3 = *(0x1c06);
0x00001b08 sub sp, 0x68 |
0x00001b0a add r2, pc | r2 = 0x370e;
0x00001b0c movs r5, 0 | r5 = 0;
0x00001b0e ldr.w r8, [sp, 0x80] | r8 = *(arg_80h);
0x00001b12 ldr r3, [r2, r3] |
0x00001b14 mov r2, r5 | r2 = r5;
0x00001b16 ldr r3, [r3] | r3 = *(0x370e);
0x00001b18 str r3, [sp, 0x64] | var_64h = r3;
0x00001b1a mov.w r3, 0 | r3 = 0;
0x00001b1e add r3, sp, 0x14 | r3 += ptr;
0x00001b20 strd r5, r5, [sp] | __asm ("strd r5, r5, [sp]");
0x00001b24 str r5, [sp, 0x14] | ptr = r5;
0x00001b26 blx 0x1508 | r0 = fcn_00001508 ();
0x00001b2a subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00001b2c blt 0x1b94 | goto label_2;
| }
0x00001b2e ldr r0, [sp, 0x14] | r0 = ptr;
0x00001b30 bne 0x1b56 |
| while (1) {
| label_1:
0x00001b32 movs r4, 0 | r4 = 0;
| label_0:
0x00001b34 ldr r0, [sp, 0x14] | r0 = ptr;
0x00001b36 blx 0x127c | free (r0);
0x00001b3a ldr r2, [pc, 0xcc] |
0x00001b3c ldr r3, [pc, 0xc4] | r3 = *(0x1c04);
0x00001b3e add r2, pc | r2 = 0x374c;
0x00001b40 ldr r3, [r2, r3] | r3 = *(0x374c);
0x00001b42 ldr r2, [r3] | r2 = *(0x374c);
0x00001b44 ldr r3, [sp, 0x64] | r3 = var_64h;
0x00001b46 eors r2, r3 | r2 ^= r3;
0x00001b48 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00001b4c bne 0x1bfc | goto label_3;
| }
0x00001b4e mov r0, r4 | r0 = r4;
0x00001b50 add sp, 0x68 |
0x00001b52 pop.w {r4, r5, r6, r7, r8, pc} |
0x00001b56 add r1, sp, 0x18 | r1 += var_18h;
0x00001b58 blx 0x15b0 | r0 = fcn_000015b0 ();
0x00001b5c cmp r0, 0 |
| if (r0 < 0) {
0x00001b5e blt 0x1bd0 | goto label_4;
| }
0x00001b60 add r4, sp, 0x24 | r4 += s;
0x00001b62 mov r1, r5 | r1 = r5;
0x00001b64 movs r2, 0x40 | r2 = 0x40;
0x00001b66 mov r0, r4 | r0 = r4;
0x00001b68 blx 0x136c | memset (r0, r1, r2);
0x00001b6c vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00001b6e movs r0, r2 | r0 = r2;
0x00001b70 mov r0, r4 | r0 = r4;
0x00001b72 ldrd r2, r3, [sp, 0x18] | __asm ("ldrd r2, r3, [var_18h]");
0x00001b76 movs r1, 0x40 | r1 = 0x40;
0x00001b78 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x00001b7c blx 0x1550 | fcn_00001550 ();
0x00001b80 ldr r2, [pc, 0x88] |
0x00001b82 mov r4, r0 | r4 = r0;
0x00001b84 mov r3, r8 | r3 = r8;
0x00001b86 movs r1, 1 | r1 = 1;
0x00001b88 mov r0, r7 | r0 = r7;
0x00001b8a str r4, [sp] | *(sp) = r4;
0x00001b8c add r2, pc | r2 = 0x379c;
0x00001b8e blx 0x1354 | fprintf_chk ()
0x00001b92 b 0x1b32 |
| }
| label_2:
0x00001b94 blx 0x1360 | r0 = log_get_max_level ();
0x00001b98 cmp r0, 3 |
0x00001b9a ittt le |
| if (r0 <= 3) {
0x00001b9c rsble r4, r4, 0 | __asm ("rsble r4, r4, 0");
| }
| if (r0 <= 3) {
0x00001b9e bicle r4, r4, 0x40000000 | __asm ("bicle r4, r4, 0x40000000");
| }
| if (r0 <= 3) {
0x00001ba2 rsbs r4, r4, 0 | r4 -= ;
| }
0x00001ba4 bgt 0x1bb0 |
| while (1) {
0x00001ba6 cmp r4, 0 |
0x00001ba8 it ge |
| if (r4 < 0) {
0x00001baa mvnge r4, 0x55 | r4 = ~0x55;
| }
0x00001bae b 0x1b34 | goto label_0;
0x00001bb0 ldr r2, [pc, 0x5c] |
0x00001bb2 mov r1, r4 | r1 = r4;
0x00001bb4 ldr r5, [pc, 0x5c] |
0x00001bb6 movs r3, 0xcf | r3 = 0xcf;
0x00001bb8 ldr r0, [pc, 0x5c] |
0x00001bba add r2, pc | r2 = 0x37ce;
0x00001bbc add r5, pc | r5 = 0x37d4;
0x00001bbe adds r2, 7 | r2 += 7;
0x00001bc0 add r0, pc | r0 = 0x37dc;
0x00001bc2 strd r0, r5, [sp] | __asm ("strd r0, r5, [sp]");
0x00001bc6 movs r0, 4 | r0 = 4;
0x00001bc8 blx 0x13cc | r0 = log_internal ();
0x00001bcc mov r4, r0 | r4 = r0;
0x00001bce b 0x1ba6 |
| }
| label_4:
0x00001bd0 blx 0x1360 | r0 = log_get_max_level ();
0x00001bd4 cmp r0, 3 |
0x00001bd6 ldr r3, [sp, 0x14] | r3 = ptr;
| if (r0 <= 3) {
0x00001bd8 ble 0x1b32 | goto label_1;
| }
0x00001bda ldr r2, [pc, 0x40] |
0x00001bdc mov r1, r5 | r1 = r5;
0x00001bde ldr r4, [pc, 0x40] |
0x00001be0 ldr r0, [pc, 0x40] |
0x00001be2 add r2, pc | r2 = 0x3804;
0x00001be4 strd r6, r3, [sp, 8] | __asm ("strd r6, r3, [var_8h]");
0x00001be6 str r2, [r0, 0x30] | *((r0 + 0x30)) = r2;
0x00001be8 add r4, pc | r4 = 0x380e;
0x00001bea movs r3, 0xd5 | r3 = 0xd5;
0x00001bec add r0, pc | r0 = 0x3814;
0x00001bee adds r2, 7 | r2 += 7;
0x00001bf0 strd r0, r4, [sp] | __asm ("strd r0, r4, [sp]");
0x00001bf2 lsls r0, r0, 0x10 | r0 <<= 0x10;
0x00001bf4 movs r0, 4 | r0 = 4;
0x00001bf6 blx 0x13cc | log_internal ();
0x00001bfa b 0x1b32 | goto label_1;
| label_3:
0x00001bfc blx 0x13fc | stack_chk_fail ();
0x00001c00 strh r6, [r1, r6] | *((r1 + r6)) = r6;
0x00001c02 movs r0, r0 |
0x00001c04 lsls r4, r7, 4 | r4 = r7 << 4;
0x00001c06 movs r0, r0 |
0x00001c08 strh r2, [r3, r5] | *((r3 + r5)) = r2;
0x00001c0a movs r0, r0 |
0x00001c0c cmp r1, 0xcc |
0x00001c0e movs r0, r0 |
0x00001c10 cmp r0, 0xe6 |
0x00001c12 movs r0, r0 |
0x00001c14 cmp r1, 0x50 |
0x00001c16 movs r0, r0 |
0x00001c18 subs r0, 0xd0 | r0 -= 0xd0;
0x00001c1a movs r0, r0 |
0x00001c1c cmp r0, 0xbe |
0x00001c1e movs r0, r0 |
0x00001c20 cmp r1, 0x40 |
0x00001c22 movs r0, r0 |
0x00001c24 subs r0, 0xa4 | r0 -= 0xa4;
0x00001c26 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/systemd/system-generators/systemd-fstab-generator @ 0x1fa4 */
| #include <stdint.h>
|
; (fcn) fcn.00001fa4 () | void fcn_00001fa4 (uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h_2;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
| if (? >= ?) {
0x00001fa4 ldrbmi lr, [r0, sp, lsr 18]! |
| }
0x00001fa8 mov r4, r1 | r4 = r1;
0x00001faa mov r1, r2 | r1 = r2;
0x00001fac ldr r2, [pc, 0x1b0] |
0x00001fae mov sb, r3 | sb = r3;
0x00001fb0 sub sp, 0x18 |
0x00001fb2 ldr r3, [pc, 0x1b0] | r3 = *(0x2166);
0x00001fb4 movs r6, 0 | r6 = 0;
0x00001fb6 add r2, pc | r2 = 0x411a;
0x00001fb8 ldr r3, [r2, r3] |
0x00001fba ldr r3, [r3] | r3 = *(0x411a);
0x00001fbc str r3, [sp, 0x14] | var_14h = r3;
0x00001fbe mov.w r3, 0 | r3 = 0;
0x00001fc2 strd r6, r6, [sp, 8] | __asm ("strd r6, r6, [var_ch]");
0x00001fc6 cmp r0, 0 |
| if (r0 == 0) {
0x00001fc8 beq 0x20c2 | goto label_3;
| }
0x00001fca cmp r4, 0 |
| if (r4 == 0) {
0x00001fcc beq.w 0x210e | goto label_4;
| }
0x00001fd0 add r3, sp, 8 | r3 += var_8h;
0x00001fd2 mov r5, r0 | r5 = r0;
0x00001fd4 str r3, [sp] | *(sp) = r3;
0x00001fd6 mov r0, r4 | r0 = r4;
0x00001fd8 mov r3, r6 | r3 = r6;
0x00001fda mov r2, r6 | r2 = r6;
0x00001fdc str r6, [sp, 4] | var_4h_2 = r6;
0x00001fde blx 0x1508 | r0 = fcn_00001508 ();
0x00001fe2 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00001fe4 blt 0x2082 | goto label_5;
| }
| if (r4 == r0) {
0x00001fe6 beq 0x204a | goto label_6;
| }
0x00001fe8 ldr r4, [sp, 8] | r4 = var_8h;
| if (r4 == 0) {
0x00001fea cbz r4, 0x2022 | goto label_7;
| }
0x00001fec ldr.w r8, [pc, 0x178] |
0x00001ff0 subs r4, 4 | r4 -= 4;
0x00001ff2 ldr r7, [pc, 0x178] |
0x00001ff4 add r6, sp, 0x10 | r6 += var_10h_2;
0x00001ff6 add r8, pc | r8 = 0x4162;
0x00001ff8 add r7, pc | r7 = 0x416a;
0x00001ffa b 0x201a |
| while (r0 != 0) {
0x00001ffc mov r3, r8 | r3 = r8;
0x00001ffe movs r2, 0 | r2 = 0;
0x00002000 mov r1, r7 | r1 = r7;
0x00002002 str r6, [sp] | *(sp) = r6;
0x00002004 blx 0x1498 | r0 = unit_name_mangle_with_suffix ();
0x00002008 subs.w sl, r0, 0 | sl = r0 - 0;
| if (sl < r0) {
0x0000200c blt 0x20d6 | goto label_8;
| }
0x0000200e ldr r1, [sp, 0x10] | r1 = var_10h_2;
0x00002010 add r0, sp, 0xc | r0 += var_ch;
0x00002012 blx 0x13d8 | r0 = strv_consume ();
0x00002016 cmp r0, 0 |
| if (r0 < 0) {
0x00002018 blt 0x20f6 | goto label_9;
| }
0x0000201a ldr r0, [r4, 4]! | r0 = *((r4 += 4));
0x0000201e cmp r0, 0 |
0x00002020 bne 0x1ffc |
| }
| label_7:
0x00002022 ldr r0, [sp, 0xc] | r0 = var_ch;
| if (r0 != 0) {
0x00002024 cbz r0, 0x204a |
0x00002026 ldr r1, [pc, 0x148] |
0x00002028 movs r3, 0 | r3 = 0;
0x0000202a mov r2, r3 | r2 = r3;
0x0000202c add r1, pc | r1 = 0x41a2;
0x0000202e blx 0x12c4 | r0 = strv_join_full ();
0x00002032 mov r6, r0 | r6 = r0;
0x00002034 cmp r0, 0 |
| if (r0 == 0) {
0x00002036 beq.w 0x2144 | goto label_10;
| }
0x0000203a mov r3, r0 | r3 = r0;
0x0000203c mov r2, sb | r2 = sb;
0x0000203e movs r1, 1 | r1 = 1;
0x00002040 mov r0, r5 | r0 = r5;
0x00002042 movs r4, 0 | r4 = 0;
0x00002044 blx 0x1354 | fprintf_chk ()
0x00002048 b 0x204e |
| } else {
| label_6:
0x0000204a movs r6, 0 | r6 = 0;
0x0000204c mov r4, r6 | r4 = r6;
| }
| do {
| label_1:
0x0000204e mov r0, r6 | r0 = r6;
0x00002050 blx 0x127c | free (r0);
0x00002054 ldr r0, [sp, 0xc] | r0 = var_ch;
| if (r0 != 0) {
0x00002056 cbz r0, 0x205e |
0x00002058 blx 0x155c | fcn_0000155c ();
0x0000205c str r0, [sp, 0xc] | var_ch = r0;
| }
0x0000205e ldr r0, [sp, 8] | r0 = var_8h;
| if (r0 != 0) {
0x00002060 cbz r0, 0x2066 |
0x00002062 blx 0x155c | fcn_0000155c ();
| }
0x00002066 ldr r2, [pc, 0x10c] |
0x00002068 ldr r3, [pc, 0xf8] | r3 = *(0x2164);
0x0000206a add r2, pc | r2 = 0x41e4;
0x0000206c ldr r3, [r2, r3] | r3 = *(0x41e4);
0x0000206e ldr r2, [r3] | r2 = *(0x41e4);
0x00002070 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00002072 eors r2, r3 | r2 ^= r3;
0x00002074 mov.w r3, 0 | r3 = 0;
0x00002076 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x00002078 bne 0x215c | goto label_11;
| }
0x0000207a mov r0, r4 | r0 = r4;
0x0000207c add sp, 0x18 |
0x0000207e pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_5:
0x00002082 blx 0x1360 | r0 = log_get_max_level ();
0x00002086 cmp r0, 3 |
0x00002088 ittt le |
| if (r0 <= 3) {
0x0000208a rsble r0, r4, 0 | __asm ("rsble r0, r4, 0");
| }
| if (r0 <= 3) {
0x0000208c bicle r0, r0, 0x40000000 | __asm ("bicle r0, r0, 0x40000000");
| }
| if (r0 <= 3) {
0x00002090 rsbs r4, r0, 0 | r4 = r0 - ;
| }
| if (r0 > 3) {
0x00002092 bgt 0x20a2 | goto label_12;
| }
| label_0:
0x00002094 cmp r4, 0 |
0x00002096 mov.w r6, 0 | r6 = 0;
0x0000209a it ge |
| if (r4 < 0) {
0x0000209c mvnge r4, 0x55 | r4 = ~0x55;
| }
0x0000209e lsls r5, r2, 0x11 | r5 = r2 << 0x11;
0x000020a0 b 0x204e |
| } while (1);
| label_12:
0x000020a2 ldr r2, [pc, 0xd4] |
0x000020a4 mov r1, r4 | r1 = r4;
0x000020a6 ldr r5, [pc, 0xd4] |
0x000020a8 movs r3, 0xf7 | r3 = 0xf7;
0x000020aa ldr r0, [pc, 0xd4] |
0x000020ac add r2, pc | r2 = 0x422a;
0x000020ae add r5, pc | r5 = 0x4230;
0x000020b0 adds r2, 7 | r2 += 7;
0x000020b2 add r0, pc | r0 = 0x4238;
0x000020b4 strd r0, r5, [sp] | __asm ("strd r0, r5, [sp]");
0x000020b8 movs r0, 4 | r0 = 4;
0x000020ba blx 0x13cc | r0 = log_internal ();
0x000020be mov r4, r0 | r4 = r0;
0x000020c0 b 0x2094 | goto label_0;
| label_3:
0x000020c2 ldr r1, [pc, 0xc0] |
0x000020c4 movs r2, 0xf2 | r2 = 0xf2;
0x000020c6 ldr r3, [pc, 0xc0] |
0x000020c8 ldr r0, [pc, 0xc0] |
0x000020ca add r1, pc | r1 = 0x4254;
0x000020cc add r3, pc | r3 = 0x425a;
0x000020ce adds r1, 7 | r1 += 7;
0x000020d0 add r0, pc | r0 = 0x4260;
0x000020d2 blx 0x1270 | log_assert_failed ();
| label_8:
0x000020d6 blx 0x1360 | r0 = log_get_max_level ();
0x000020da cmp r0, 2 |
0x000020dc ittt le |
| if (r0 <= 2) {
0x000020de rsble r0, sl, 0 | __asm ("rsble r0, sl, 0");
| }
| if (r0 <= 2) {
0x000020e2 bicle r0, r0, 0x40000000 | __asm ("bicle r0, r0, 0x40000000");
| }
| if (r0 <= 2) {
0x000020e6 rsbs r4, r0, 0 | r4 = r0 - ;
| }
| if (r0 > 2) {
0x000020e8 bgt 0x2122 | goto label_13;
| }
| label_2:
0x000020ea cmp r4, 0 |
0x000020ec it ge |
0x000020ee mvnge r4, 0x55 | r4 = ~0x55;
| while (1) {
0x000020f2 movs r6, 0 | r6 = 0;
0x000020f4 b 0x204e | goto label_1;
| label_9:
0x000020f6 ldr r1, [pc, 0x98] |
0x000020f8 mov.w r2, 0x104 | r2 = 0x104;
0x000020fc ldr r3, [pc, 0x94] |
0x000020fe movs r0, 3 | r0 = 3;
0x00002100 add r1, pc | r1 = 0x4296;
0x00002102 add r3, pc | r3 = 0x429a;
0x00002104 adds r1, 7 | r1 += 7;
0x00002106 blx 0x15c0 | r0 = fcn_000015c0 ();
0x0000210a mov r4, r0 | r4 = r0;
0x0000210c b 0x20f2 |
| }
| label_4:
0x0000210e ldr r1, [pc, 0x88] |
0x00002110 movs r2, 0xf3 | r2 = 0xf3;
0x00002112 ldr r3, [pc, 0x88] |
0x00002114 ldr r0, [pc, 0x88] |
0x00002116 add r1, pc | r1 = 0x42b4;
0x00002118 add r3, pc | r3 = 0x42ba;
0x0000211a adds r1, 7 | r1 += 7;
0x0000211c add r0, pc | r0 = 0x42c0;
0x0000211e blx 0x1270 | log_assert_failed ();
| label_13:
0x00002122 ldr r2, [pc, 0x80] |
0x00002124 mov.w r3, 0x100 | r3 = 0x100;
0x00002128 ldr r4, [pc, 0x7c] |
0x0000212a mov r1, sl | r1 = sl;
0x0000212c ldr r0, [pc, 0x7c] |
0x0000212e add r2, pc | r2 = 0x42d8;
0x00002130 add r4, pc | r4 = 0x42dc;
0x00002132 adds r2, 7 | r2 += 7;
0x00002134 add r0, pc | r0 = 0x42e4;
0x00002136 strd r0, r4, [sp] | __asm ("strd r0, r4, [sp]");
0x00002138 lsls r0, r0, 0x10 | r0 <<= 0x10;
0x0000213a movs r0, 3 | r0 = 3;
0x0000213c blx 0x13cc | r0 = log_internal ();
0x00002140 mov r4, r0 | r4 = r0;
0x00002142 b 0x20ea | goto label_2;
| label_10:
0x00002144 ldr r1, [pc, 0x68] |
0x00002146 mov.w r2, 0x10a | r2 = 0x10a;
0x0000214a ldr r3, [pc, 0x68] |
0x0000214c movs r0, 3 | r0 = 3;
0x0000214e add r1, pc | r1 = 0x4302;
0x00002150 add r3, pc | r3 = 0x430a;
0x00002152 adds r1, 7 | r1 += 7;
0x00002154 blx 0x15c0 | r0 = fcn_000015c0 ();
0x00002158 mov r4, r0 | r4 = r0;
0x0000215a b 0x204e | goto label_1;
| label_11:
0x0000215c blx 0x13fc | stack_chk_fail ();
0x00002160 ldr r6, [pc, 0x388] | r6 = *(0x24ec);
0x00002162 movs r0, r0 |
0x00002164 lsls r4, r7, 4 | r4 = r7 << 4;
0x00002166 movs r0, r0 |
0x00002168 movs r6, 0xd6 | r6 = 0xd6;
0x0000216a movs r0, r0 |
0x0000216c movs r6, 0xdc | r6 = 0xdc;
0x0000216e movs r0, r0 |
0x00002170 movs r6, 0xdc | r6 = 0xdc;
0x00002172 movs r0, r0 |
0x00002174 ldr r6, [pc, 0xb8] | r6 = *(0x2230);
0x00002176 movs r0, r0 |
0x00002178 movs r3, 0xf4 | r3 = 0xf4;
0x0000217a movs r0, r0 |
0x0000217c movs r4, 0x5e | r4 = 0x5e;
0x0000217e movs r0, r0 |
0x00002180 adds r4, 0x16 | r4 += 0x16;
0x00002182 movs r0, r0 |
0x00002184 movs r3, 0xd6 | r3 = 0xd6;
0x00002186 movs r0, r0 |
0x00002188 adds r4, 0x10 | r4 += 0x10;
0x0000218a movs r0, r0 |
0x0000218c movs r5, 0xf0 | r5 = 0xf0;
0x0000218e movs r0, r0 |
0x00002190 movs r3, 0xa0 | r3 = 0xa0;
0x00002192 movs r0, r0 |
0x00002194 adds r3, 0xc6 | r3 += 0xc6;
0x00002196 movs r0, r0 |
0x00002198 movs r3, 0x8a | r3 = 0x8a;
0x0000219a movs r0, r0 |
0x0000219c adds r3, 0xc4 | r3 += 0xc4;
0x0000219e movs r0, r0 |
0x000021a0 movs r5, 0xa8 | r5 = 0xa8;
0x000021a2 movs r0, r0 |
0x000021a4 movs r3, 0x72 | r3 = 0x72;
0x000021a6 movs r0, r0 |
0x000021a8 movs r5, 0xb4 | r5 = 0xb4;
0x000021aa movs r0, r0 |
0x000021ac adds r3, 0x94 | r3 += 0x94;
0x000021ae movs r0, r0 |
0x000021b0 movs r3, 0x52 | r3 = 0x52;
0x000021b2 movs r0, r0 |
0x000021b4 adds r3, 0x78 | r3 += 0x78;
0x000021b6 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/systemd/system-generators/systemd-fstab-generator @ 0x21b8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000021b8 () | void fcn_000021b8 (int16_t arg_0h, int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h_2;
| int16_t var_10h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000021b8 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x000021bc sub sp, 0x5c |
0x000021be mov r6, r2 | r6 = r2;
0x000021c0 add r7, sp, 0x10 | r7 += var_10h;
0x000021c2 ldr.w r2, [pc, 0x9a8] |
0x000021c6 str r3, [r7, 0xc] | *((r7 + 0xc)) = r3;
0x000021c8 ldr.w r3, [pc, 0x9a4] | r3 = *(0x2b70);
0x000021cc add r2, pc | r2 = 0x4d3e;
0x000021ce ldrd sl, fp, [r7, 0x70] | __asm ("ldrd sl, fp, [r7, 0x70]");
0x000021d2 ldr r3, [r2, r3] |
0x000021d4 ldr r3, [r3] | r3 = *(0x4d3e);
0x000021d6 str r3, [r7, 0x44] | *((r7 + 0x44)) = r3;
0x000021d8 mov.w r3, 0 | r3 = 0;
0x000021dc movs r3, 0 | r3 = 0;
0x000021de strd r3, r3, [r7, 0x18] | __asm ("strd r3, r3, [r7, 0x18]");
0x000021e2 strd r3, r3, [r7, 0x20] | __asm ("strd r3, r3, [r7, 0x20]");
0x000021e4 adds r3, 8 | r3 += 8;
0x000021e6 strd r3, r3, [r7, 0x28] | __asm ("strd r3, r3, [r7, 0x28]");
0x000021ea ldr.w r3, [r7, 0x80] | r3 = *((r7 + 0x80));
0x000021ee str r3, [r7, 0x10] | *((r7 + 0x10)) = r3;
0x000021f0 ldr.w r3, [r7, 0x84] | r3 = *((r7 + 0x84));
0x000021f4 str r3, [r7, 0x14] | *((r7 + 0x14)) = r3;
0x000021f6 cmp r1, 0 |
| if (r1 == 0) {
0x000021f8 beq 0x22ac | goto label_25;
| }
0x000021fa cmp.w fp, 0 |
| if (fp == 0) {
0x000021fe beq 0x22c8 | goto label_26;
| }
0x00002200 mov r8, r0 | r8 = r0;
0x00002202 mov r5, r1 | r5 = r1;
0x00002204 cmp.w sl, 0 |
0x00002208 bne 0x2278 |
| while (r0 != 0) {
0x0000220a movs r1, 0x2f | r1 = 0x2f;
0x0000220c mov r0, r6 | r0 = r6;
0x0000220e blx 0x158c | r0 = fcn_0000158c ();
0x00002212 mov sb, r0 | sb = r0;
0x00002214 cmp r0, 0 |
| if (r0 != 0) {
0x00002216 bne 0x2298 | goto label_27;
| }
0x00002218 blx 0x1360 | r0 = log_get_max_level ();
0x0000221c cmp r0, 3 |
0x0000221e itt le |
| if (r0 > 3) {
0x00002220 movle r0, sb | r0 = sb;
| }
| if (r0 > 3) {
0x00002222 movle r4, sb | r4 = sb;
| }
| if (r0 > 3) {
0x00002224 bgt 0x22f4 | goto label_28;
| }
| label_2:
0x00002226 blx 0x14cc | fcn_000014cc ();
0x0000222a ldr r0, [r7, 0x28] | r0 = *((r7 + 0x28));
| if (r0 != 0) {
0x0000222c cbz r0, 0x2234 |
| label_0:
0x0000222e blx 0x155c | fcn_0000155c ();
0x00002232 str r0, [r7, 0x28] | *((r7 + 0x28)) = r0;
| }
| label_1:
0x00002234 ldr r0, [r7, 0x24] | r0 = *((r7 + 0x24));
| if (r0 != 0) {
0x00002236 cbz r0, 0x223c |
0x00002238 blx 0x155c | fcn_0000155c ();
| }
0x0000223c mov r0, sb | r0 = sb;
0x0000223e blx 0x127c | free (r0);
0x00002242 ldr r0, [r7, 0x20] | r0 = *((r7 + 0x20));
0x00002244 blx 0x127c | free (r0);
0x00002248 ldr r0, [r7, 0x1c] | r0 = *((r7 + 0x1c));
0x0000224a blx 0x127c | free (r0);
0x0000224e ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
0x00002250 blx 0x127c | free (r0);
0x00002254 ldr.w r2, [pc, 0x91c] |
0x00002258 ldr.w r3, [pc, 0x914] | r3 = *(0x2b70);
0x0000225c add r2, pc | r2 = 0x4dd4;
0x0000225e ldr r3, [r2, r3] | r3 = *(0x4dd4);
0x00002260 ldr r2, [r3] | r2 = *(0x4dd4);
0x00002262 ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x00002264 eors r2, r3 | r2 ^= r3;
0x00002266 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000226a bne.w 0x28ea | goto label_29;
| }
0x0000226e mov r0, r4 | r0 = r4;
0x00002270 adds r7, 0x4c | r7 += 0x4c;
0x00002272 mov sp, r7 |
0x00002274 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00002278 ldr.w r1, [pc, 0x8fc] |
0x0000227c mov r0, sl | r0 = sl;
0x0000227e add r1, pc | r1 = 0x4dfa;
0x00002280 blx 0x1514 | r0 = fcn_00001514 ();
0x00002284 mov r4, r0 | r4 = r0;
0x00002286 mov sb, r0 | sb = r0;
0x00002288 cmp r0, 0 |
0x0000228a bne 0x220a |
| }
0x0000228c blx 0x14cc | fcn_000014cc ();
0x00002290 ldr r0, [r7, 0x28] | r0 = *((r7 + 0x28));
0x00002292 cmp r0, 0 |
| if (r0 != 0) {
0x00002294 bne 0x222e | goto label_0;
| }
0x00002296 b 0x2234 | goto label_1;
| label_27:
0x00002298 mov r0, r6 | r0 = r6;
0x0000229a blx 0x1568 | r0 = fcn_00001568 ();
0x0000229e mov sb, r0 | sb = r0;
| if (r0 != 0) {
0x000022a0 cbz r0, 0x22e4 |
0x000022a2 mov.w sb, 0 | sb = 0;
0x000022a6 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x000022a8 mov r4, sb | r4 = sb;
0x000022aa b 0x2226 | goto label_2;
| label_25:
0x000022ac ldr.w r1, [pc, 0x8cc] |
0x000022b0 mov.w r2, 0x16a | r2 = 0x16a;
0x000022b4 ldr.w r3, [pc, 0x8c8] |
0x000022b8 ldr.w r0, [pc, 0x8c8] |
0x000022bc add r1, pc | r1 = 0x4e3c;
0x000022be add r3, pc | r3 = 0x4e42;
0x000022c0 adds r1, 7 | r1 += 7;
0x000022c2 add r0, pc | r0 = 0x4e4a;
0x000022c4 blx 0x1270 | log_assert_failed ();
| label_26:
0x000022c8 ldr.w r1, [pc, 0x8bc] |
0x000022cc mov.w r2, 0x16c | r2 = 0x16c;
0x000022d0 ldr.w r3, [pc, 0x8b8] |
0x000022d4 ldr.w r0, [pc, 0x8b8] |
0x000022d8 add r1, pc | r1 = 0x4e64;
0x000022da add r3, pc | r3 = 0x4e6a;
0x000022dc adds r1, 7 | r1 += 7;
0x000022de add r0, pc | r0 = 0x4e72;
0x000022e0 blx 0x1270 | log_assert_failed ();
| }
0x000022e4 mov r0, r6 | r0 = r6;
0x000022e6 blx 0x1480 | r0 = mount_point_ignore ();
0x000022ea mov r3, r0 | r3 = r0;
| if (r0 != 0) {
0x000022ec cbz r0, 0x2320 |
0x000022ee ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x000022f0 mov r4, sb | r4 = sb;
0x000022f2 b 0x2226 | goto label_2;
| label_28:
0x000022f4 ldr.w r2, [pc, 0x89c] |
0x000022f8 mov.w r3, 0x174 | r3 = 0x174;
0x000022fc ldr.w r1, [pc, 0x898] |
0x00002300 movs r0, 4 | r0 = 4;
0x00002302 ldr.w r4, [pc, 0x898] |
0x00002306 add r2, pc | r2 = 0x4e9e;
0x00002308 str r6, [sp, 8] | var_8h_2 = r6;
0x0000230a add r1, pc | r1 = 0x4ea6;
0x0000230c adds r2, 7 | r2 += 7;
0x0000230e add r4, pc | r4 = "Canonicalized what=%s where=%s to %s";
0x00002310 str r1, [sp, 4] | var_4h = r1;
0x00002312 str r4, [sp] | *(sp) = r4;
0x00002314 mov r1, sb | r1 = sb;
0x00002316 blx 0x13cc | log_internal ();
0x0000231a mov r4, sb | r4 = sb;
0x0000231c ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x0000231e b 0x2226 | goto label_2;
| }
0x00002320 ldr.w sb, [pc, 0x87c] |
0x00002324 add.w r2, r7, 0x24 | r2 = r7 + 0x24;
0x00002328 str r0, [sp, 4] | var_4h = r0;
0x0000232a str r2, [sp] | *(sp) = r2;
0x0000232c mov r2, r0 | r2 = r0;
0x0000232e add sb, pc | sb = 0x4ed2;
0x00002330 str r0, [r7, 8] | *((r7 + 8)) = r0;
0x00002332 mov r1, sb | r1 = sb;
0x00002334 mov r0, fp | r0 = fp;
0x00002336 blx 0x1508 | r0 = fcn_00001508 ();
0x0000233a subs r4, r0, 0 | r4 = r0 - 0;
0x0000233c ldr r3, [r7, 8] | r3 = *((r7 + 8));
| if (r4 < r0) {
0x0000233e blt.w 0x26ba | goto label_30;
| }
0x00002342 add.w r2, r7, 0x28 | r2 = r7 + 0x28;
0x00002346 str r3, [sp, 4] | var_4h = r3;
0x00002348 str r2, [sp] | *(sp) = r2;
0x0000234a add.w r1, sb, 0x18 | r1 = sb + 0x18;
0x0000234e mov r2, r3 | r2 = r3;
0x00002350 str r3, [r7, 8] | *((r7 + 8)) = r3;
0x00002352 mov r0, fp | r0 = fp;
0x00002354 blx 0x1508 | r0 = fcn_00001508 ();
0x00002358 subs r4, r0, 0 | r4 = r0 - 0;
0x0000235a ldr r3, [r7, 8] | r3 = *((r7 + 8));
| if (r4 < r0) {
0x0000235c blt.w 0x26ba | goto label_30;
| }
0x00002360 ldr.w r1, [pc, 0x840] |
0x00002364 mov r0, r6 | r0 = r6;
0x00002366 add r1, pc | r1 = 0x4f0e;
0x00002368 blx 0x133c | r0 = path_compare ();
0x0000236c mov r4, r0 | r4 = r0;
0x0000236e cmp r0, 0 |
| if (r0 == 0) {
0x00002370 bne 0x23f8 |
0x00002372 ldr r3, [r7, 0x7c] | r3 = *((r7 + 0x7c));
0x00002374 lsls r0, r3, 0x1f | r0 = r3 << 0x1f;
| if (r0 >= r3) {
0x00002376 bpl.w 0x270e | goto label_31;
| }
0x0000237a blx 0x1360 | r0 = log_get_max_level ();
0x0000237e cmp r0, 3 |
| if (r0 > 3) {
0x00002380 bgt.w 0x26ea | goto label_32;
| }
0x00002384 ldr r3, [r7, 0x7c] | r3 = *((r7 + 0x7c));
0x00002386 lsls r3, r3, 0x1e | r3 <<= 0x1e;
| if (r3 >= r3) {
0x00002388 bmi 0x23bc |
| label_3:
0x0000238a ldr r3, [r7, 0x7c] | r3 = *((r7 + 0x7c));
0x0000238c lsls r2, r3, 0x1d | r2 = r3 << 0x1d;
| if (r2 >= r3) {
0x0000238e bpl 0x23bc | goto label_4;
| }
0x00002390 blx 0x1360 | r0 = log_get_max_level ();
0x00002394 cmp r0, 3 |
| if (r0 <= 3) {
0x00002396 ble 0x23bc | goto label_4;
| }
0x00002398 ldr.w r3, [pc, 0x80c] |
0x0000239c movs r1, 0 | r1 = 0;
0x0000239e ldr.w r2, [pc, 0x80c] |
0x000023a0 cmp r0, 0xc |
0x000023a2 movs r0, 4 | r0 = 4;
0x000023a4 add r3, pc | r3 = 0x4f50;
0x000023a6 str r3, [sp, 4] | var_4h = r3;
0x000023a8 add r2, pc | r2 = 0x4f5a;
0x000023aa ldr.w r3, [pc, 0x804] |
0x000023ae adds r2, 7 | r2 += 7;
0x000023b0 add r3, pc | r3 = 0x4f66;
0x000023b2 str r3, [sp] | *(sp) = r3;
0x000023b4 mov.w r3, 0x18a | r3 = 0x18a;
0x000023b8 blx 0x13cc | log_internal ();
| }
| label_4:
0x000023bc ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
| if (r3 != 0) {
0x000023be cbz r3, 0x23ce |
0x000023c0 ldr r3, [r3] | r3 = *(r3);
| if (r3 == 0) {
0x000023c2 cbz r3, 0x23ce | goto label_8;
| }
0x000023c4 blx 0x1360 | r0 = log_get_max_level ();
0x000023c8 cmp r0, 3 |
| if (r0 > 3) {
0x000023ca bgt.w 0x279e | goto label_33;
| }
| }
| label_8:
0x000023ce ldr r4, [r7, 0x28] | r4 = *((r7 + 0x28));
| if (r4 != 0) {
0x000023d0 cbz r4, 0x23e0 |
0x000023d2 ldr r3, [r4] | r3 = *(r4);
| if (r3 == 0) {
0x000023d4 cbz r3, 0x23e0 | goto label_7;
| }
0x000023d6 blx 0x1360 | r0 = log_get_max_level ();
0x000023da cmp r0, 3 |
| if (r0 > 3) {
0x000023dc bgt.w 0x2776 | goto label_34;
| }
| }
| label_7:
0x000023e0 ldr r3, [r7, 0x7c] | r3 = *((r7 + 0x7c));
0x000023e2 mov r0, r4 | r0 = r4;
0x000023e4 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x000023e6 lsls r7, r0, 0xc | r7 = r0 << 0xc;
0x000023e8 str r3, [r7, 0x7c] | *((r7 + 0x7c)) = r3;
0x000023ea blx 0x155c | fcn_0000155c ();
0x000023ee str r0, [r7, 0x28] | *((r7 + 0x28)) = r0;
0x000023f0 ldr r0, [r7, 0x24] | r0 = *((r7 + 0x24));
0x000023f2 blx 0x155c | fcn_0000155c ();
0x000023f4 ldm.w r4!, {r3, r4, r5, r6, sb, sp, lr} | r3 = *(r4!);
| r4 = *((r4! + 4));
| r5 = *((r4! + 8));
| r6 = *((r4! + 12));
| sb = *((r4! + 16));
| sp = *((r4! + 20));
| lr = *((r4! + 24));
| }
0x000023f8 ldr.w r1, [pc, 0x7b8] |
0x000023fc add.w r2, r7, 0x18 | r2 = r7 + 0x18;
0x00002400 mov r0, r6 | r0 = r6;
0x00002402 add r1, pc | r1 = 0x4fba;
0x00002404 blx 0x1420 | r0 = unit_name_from_path ();
0x00002408 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0000240a blt.w 0x26c8 | goto label_35;
| }
0x0000240e ldr.w r0, [pc, 0x7a8] |
0x00002412 add r0, pc | r0 = 0x4fd0;
0x00002414 blx 0x1574 | r0 = fcn_00001574 ();
0x00002416 stm.w lr!, {r0, sb, sl, lr} | *(lr!) = r0;
| *((lr! + 4)) = sb;
| *((lr! + 8)) = sl;
| *((lr! + 12)) = lr;
0x00002418 mov r1, r0 | r1 = r0;
0x0000241a cmp r0, 0 |
| if (r0 == 0) {
0x0000241c beq.w 0x2746 | goto label_36;
| }
| label_5:
0x00002420 add.w r3, r7, 0x2c | r3 = r7 + 0x2c;
0x00002424 ldr r2, [r7, 0x18] | r2 = *((r7 + 0x18));
0x00002426 mov r0, r8 | r0 = r8;
0x00002428 str r3, [r7, 4] | *((r7 + 4)) = r3;
0x0000242a blx 0x1474 | r0 = generator_open_unit_file ();
0x0000242e subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00002430 blt.w 0x26c0 | goto label_37;
| }
0x00002434 ldr.w r2, [pc, 0x784] |
0x00002438 movs r1, 1 | r1 = 1;
0x0000243a ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x0000243c ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x0000243e add r2, pc | r2 = 0x4ffe;
0x00002440 blx 0x1354 | fprintf_chk ()
0x00002444 cmp.w sl, 0 |
| if (sl != 0) {
0x00002448 beq 0x2472 |
0x0000244a ldr.w r3, [pc, 0x774] |
0x0000244e add.w r4, r7, 0x38 | r4 = r7 + 0x38;
0x00002450 lsls r0, r7, 0x10 | r0 = r7 << 0x10;
0x00002452 add r3, pc | r3 = 0x5018;
0x00002454 adds r3, 0x18 | r3 += 0x18;
0x00002456 ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x0000245a stm.w r4, {r0, r1, r2} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
0x0000245e mov r1, sl | r1 = sl;
0x00002460 mov r0, r4 | r0 = r4;
0x00002462 blx 0x124c | r0 = strv_find ();
| if (r0 == 0) {
0x00002466 cbz r0, 0x2472 | goto label_9;
| }
0x00002468 ldr r3, [r7, 0x7c] | r3 = *((r7 + 0x7c));
0x0000246a ands r3, r3, 4 | r3 &= 4;
| if (r3 == r3) {
0x0000246e beq.w 0x27c4 | goto label_38;
| }
| }
| label_9:
0x00002472 ldr r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
0x00002474 str r3, [r7, 8] | *((r7 + 8)) = r3;
0x00002476 cmp r3, 0 |
| if (r3 == 0) {
0x00002478 beq.w 0x288c | goto label_39;
| }
0x0000247c ldr.w sb, [pc, 0x744] |
0x00002480 mov r1, fp | r1 = fp;
0x00002482 ldr.w r3, [pc, 0x744] |
0x00002486 ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x00002488 add sb, pc | sb = 0x5050;
0x0000248a add r3, pc | r3 = 0x5058;
0x0000248c add.w r2, sb, 0x38 | r2 = sb + 0x38;
0x00002490 bl 0x1fa4 | r0 = fcn_00001fa4 (r0, r1, r2, r3);
0x00002494 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00002496 blt.w 0x26c0 | goto label_37;
| }
0x0000249a ldr.w r3, [pc, 0x730] |
0x0000249e add.w r2, sb, 0x4c | r2 = sb + 0x4c;
0x000024a2 ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x000024a4 mov r1, fp | r1 = fp;
0x000024a6 add r3, pc | r3 = 0x5078;
0x000024a8 bl 0x1fa4 | fcn_00001fa4 (r0, r1, r2, r3);
0x000024aa ldc2l p14, c1, [ip, -0x10]! | __asm ("ldc2l p14, c1, [ip, -0x10]!");
| if (r4 < r0) {
0x000024ae blt.w 0x26c0 | goto label_37;
| }
0x000024b2 ldr.w r3, [pc, 0x71c] |
0x000024b6 add.w r2, sb, 0x60 | r2 = sb + 0x60;
0x000024ba ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x000024bc mov r1, fp | r1 = fp;
0x000024be add r3, pc | r3 = 0x5094;
0x000024c0 bl 0x1fa4 | r0 = fcn_00001fa4 (r0, r1, r2, r3);
0x000024c4 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x000024c6 blt.w 0x26c0 | goto label_37;
| }
0x000024ca movs r3, 0 | r3 = 0;
0x000024cc add.w r2, r7, 0x30 | r2 = r7 + 0x30;
0x000024d0 str r3, [sp, 4] | var_4h = r3;
0x000024d2 add.w r1, sb, 0x74 | r1 = sb + 0x74;
0x000024d6 strd r3, r3, [r7, 0x30] | __asm ("strd r3, r3, [r7, 0x30]");
0x000024da mov r0, fp | r0 = fp;
0x000024dc str r2, [sp] | *(sp) = r2;
0x000024de mov r2, r3 | r2 = r3;
0x000024e0 blx 0x1508 | r0 = fcn_00001508 ();
0x000024e4 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x000024e6 blt.w 0x28ee | goto label_40;
| }
| if (r4 == r0) {
0x000024ea beq.w 0x28a2 | goto label_41;
| }
0x000024ee ldr r0, [r7, 0x30] | r0 = *((r7 + 0x30));
0x000024f0 add.w r1, r7, 0x34 | r1 = r7 + 0x34;
0x000024f4 blx 0x12b8 | r0 = specifier_escape_strv ();
0x000024f8 subs r4, r0, 0 | r4 = r0 - 0;
0x000024fa mov.w r3, 0 | r3 = 0;
| if (r4 < r0) {
0x000024fe blt.w 0x29be | goto label_42;
| }
0x00002502 ldr.w r1, [pc, 0x6d0] |
0x00002506 mov r2, r3 | r2 = r3;
0x00002508 ldr r0, [r7, 0x34] | r0 = *((r7 + 0x34));
0x0000250a add r1, pc | r1 = 0x50e4;
0x0000250c blx 0x12c4 | strv_join_full ();
0x00002510 movs r3, 0 | r3 = 0;
0x00002512 mov sb, r0 | sb = r0;
0x00002514 cmp r0, 0 |
| if (r0 == 0) {
0x00002516 beq.w 0x2b32 | goto label_43;
| }
0x0000251a ldr.w r2, [pc, 0x6bc] |
0x0000251e mov r4, r3 | r4 = r3;
0x00002520 ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x00002522 mov r3, sb | r3 = sb;
0x00002524 movs r1, 1 | r1 = 1;
0x00002526 add r2, pc | r2 = 0x5104;
0x00002528 blx 0x1354 | fprintf_chk ()
| label_11:
0x0000252c mov r0, sb | r0 = sb;
0x0000252e blx 0x127c | free (r0);
0x00002532 ldr r0, [r7, 0x34] | r0 = *((r7 + 0x34));
| if (r0 != 0) {
0x00002534 cbz r0, 0x253c |
0x00002536 blx 0x155c | fcn_0000155c ();
0x0000253a str r0, [r7, 0x34] | *((r7 + 0x34)) = r0;
| }
0x0000253c ldr r0, [r7, 0x30] | r0 = *((r7 + 0x30));
| if (r0 != 0) {
0x0000253e cbz r0, 0x2544 |
0x00002540 blx 0x155c | fcn_0000155c ();
| }
0x00002544 ldr r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
0x00002546 cmp r4, 0 |
0x00002548 mov r0, r3 | r0 = r3;
| if (r4 < 0) {
0x0000254a blt.w 0x290e | goto label_44;
| }
0x0000254e ldr r2, [r7, 0x7c] | r2 = *((r7 + 0x7c));
0x00002550 ands r2, r2, 2 | r2 &= 2;
0x00002554 str r2, [r7, 8] | *((r7 + 8)) = r2;
| if (r2 == r2) {
0x00002556 beq.w 0x287c | goto label_45;
| }
| label_10:
0x0000255a ldr r2, [r7, 0x78] | r2 = *((r7 + 0x78));
| if (r2 != 0) {
0x0000255c cbz r2, 0x2576 |
0x0000255e mov r0, r3 | r0 = r3;
0x00002560 mov r2, r5 | r2 = r5;
0x00002562 mov r3, r6 | r3 = r6;
0x00002564 mov r1, r8 | r1 = r8;
0x00002566 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0000256a blx 0x13e4 | r0 = generator_write_fsck_deps ();
0x0000256e subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00002570 blt.w 0x26c0 | goto label_37;
| }
0x00002574 ldr r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
| }
0x00002576 mov r0, r3 | r0 = r3;
0x00002578 mov r1, r5 | r1 = r5;
0x0000257a blx 0x1240 | r0 = generator_write_blockdev_dependency ();
0x0000257e subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00002580 blt.w 0x26c0 | goto label_37;
| }
0x00002584 ldr.w r0, [pc, 0x654] |
0x00002588 movs r2, 9 | r2 = 9;
0x0000258a ldr r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
0x0000258c movs r1, 1 | r1 = 1;
0x0000258e add r0, pc | r0 = 0x516e;
0x00002590 blx 0x14a4 | fwrite (r0, r1, r2, r3);
0x00002594 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x00002596 mov r1, r5 | r1 = r5;
0x00002598 bl 0x1a04 | r0 = fcn_00001a04 (r0, r1);
0x0000259c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0000259e blt.w 0x26c0 | goto label_37;
| }
0x000025a2 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
| if (r3 != 0) {
0x000025a4 cbz r3, 0x25b4 |
0x000025a6 ldr.w r2, [pc, 0x638] |
0x000025aa movs r1, 1 | r1 = 1;
0x000025ac ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x000025ae add r2, pc | r2 = 0x5194;
0x000025b0 blx 0x1354 | fprintf_chk ()
| }
0x000025b4 ldr.w r4, [pc, 0x62c] |
0x000025b8 mov r0, r6 | r0 = r6;
0x000025ba ldr.w r3, [pc, 0x62c] |
0x000025be add r4, pc | r4 = 0x51a6;
0x000025c0 add r3, pc | r3 = 0x51ae;
0x000025c2 mov r2, r4 | r2 = r4;
0x000025c4 mov r1, r3 | r1 = r3;
0x000025c6 str r3, [r7, 0xc] | *((r7 + 0xc)) = r3;
0x000025c8 blx 0x1258 | r0 = strreplace ();
0x000025cc mov sb, r0 | sb = r0;
0x000025ce cmp r0, 0 |
| if (r0 == 0) {
0x000025d0 beq.w 0x28d0 | goto label_46;
| }
0x000025d4 ldr.w r2, [pc, 0x614] |
0x000025d8 mov r3, sb | r3 = sb;
0x000025da ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x000025dc movs r1, 1 | r1 = 1;
0x000025de add r2, pc | r2 = 0x51ce;
0x000025e0 blx 0x1354 | fprintf_chk ()
0x000025e4 cmp.w sl, 0 |
| if (sl != 0) {
0x000025e8 beq 0x2602 |
0x000025ea ldrb.w r3, [sl] | r3 = *(sl);
| if (r3 == 0) {
0x000025ee cbz r3, 0x2602 | goto label_12;
| }
0x000025f0 ldr.w r1, [pc, 0x5fc] |
0x000025f4 mov r0, sl | r0 = sl;
0x000025f6 add r1, pc | r1 = 0x51ea;
0x000025f8 blx 0x1514 | r0 = fcn_00001514 ();
0x000025fc cmp r0, 0 |
| if (r0 != 0) {
0x000025fe bne.w 0x28a8 | goto label_47;
| }
| }
| label_12:
0x00002602 add.w r3, r7, 0x20 | r3 = r7 + 0x20;
0x00002606 mov r2, r6 | r2 = r6;
0x00002608 str r3, [sp] | *(sp) = r3;
0x0000260a mov r1, r5 | r1 = r5;
0x0000260c mov r3, fp | r3 = fp;
0x0000260e mov r0, r8 | r0 = r8;
0x00002610 blx 0x1538 | r0 = fcn_00001538 ();
0x00002614 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00002616 blt 0x26b6 | goto label_13;
| }
0x00002618 mov r3, fp | r3 = fp;
0x0000261a mov r2, r6 | r2 = r6;
0x0000261c mov r1, r5 | r1 = r5;
0x0000261e mov r0, r8 | r0 = r8;
0x00002620 blx 0x1544 | r0 = fcn_00001544 ();
0x00002624 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00002626 blt 0x26b6 | goto label_13;
| }
0x00002628 ldr.w r2, [pc, 0x5c8] |
0x0000262c mov r1, r6 | r1 = r6;
0x0000262e ldr.w r3, [pc, 0x5c8] |
0x00002632 add r2, pc | r2 = 0x522a;
0x00002634 str r2, [sp] | *(sp) = r2;
0x00002636 add r3, pc | r3 = 0x5234;
0x00002638 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x0000263a adds r3, 0x94 | r3 += 0x94;
0x0000263c mov r2, fp | r2 = fp;
0x0000263e bl 0x1af8 | r0 = fcn_00001af8 (r0, r1, r2, r3, r4);
0x00002642 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00002644 blt 0x26b6 | goto label_13;
| }
0x00002646 ldr r1, [r7, 0x20] | r1 = *((r7 + 0x20));
0x00002648 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x0000264a bl 0x1a68 | r0 = fcn_00001a68 (r0, r1);
0x0000264e subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00002650 blt 0x26b6 | goto label_13;
| }
0x00002652 ldr r3, [r7, 0x7c] | r3 = *((r7 + 0x7c));
0x00002654 lsls r3, r3, 0x1a | r3 <<= 0x1a;
| if (r3 < r3) {
0x00002656 bmi.w 0x29e8 | goto label_48;
| }
| label_17:
0x0000265a ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x0000265c blx 0x12ac | r0 = fflush_and_check ();
0x00002660 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00002662 blt.w 0x2970 | goto label_49;
| }
0x00002666 ldr r3, [r7, 0x7c] | r3 = *((r7 + 0x7c));
0x00002668 lsls r4, r3, 0x1c | r4 = r3 << 0x1c;
| if (r4 < r3) {
0x0000266a bmi.w 0x295c | goto label_50;
| }
| label_14:
0x0000266e ldr r3, [r7, 0x7c] | r3 = *((r7 + 0x7c));
0x00002670 lsls r0, r3, 0x1b | r0 = r3 << 0x1b;
| if (r0 < r3) {
0x00002672 bmi.w 0x2a90 | goto label_51;
| }
| label_18:
0x00002676 ldr r3, [r7, 0x7c] | r3 = *((r7 + 0x7c));
0x00002678 lsls r1, r3, 0x1d | r1 = r3 << 0x1d;
| if (r1 < r3) {
0x0000267a bmi.w 0x29f8 | goto label_52;
| }
0x0000267e lsls r2, r3, 0x1f | r2 = r3 << 0x1f;
0x00002680 ldr r5, [r7, 0x24] | r5 = *((r7 + 0x24));
| if (r2 >= r3) {
0x00002682 bmi 0x2692 |
0x00002684 cmp r5, 0 |
| if (r5 == 0) {
0x00002686 beq.w 0x2b0a | goto label_53;
| }
0x0000268a ldr r3, [r5] | r3 = *(r5);
0x0000268c cmp r3, 0 |
| if (r3 == 0) {
0x0000268e beq.w 0x2b0a | goto label_53;
| }
| }
| label_23:
0x00002692 ldr.w r6, [pc, 0x568] |
0x00002696 add r6, pc | r6 = "initrd-usr-fs.target";
| do {
0x00002698 cmp r5, 0 |
| if (r5 == 0) {
0x0000269a beq.w 0x293e | goto label_54;
| }
0x0000269e ldr r1, [r5], 4 | r1 = *(r5);
| r5 += 4;
0x000026a2 cmp r1, 0 |
| if (r1 == 0) {
0x000026a4 beq.w 0x293e | goto label_54;
| }
0x000026a8 ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x000026aa mov r2, r6 | r2 = r6;
0x000026ac mov r0, r8 | r0 = r8;
0x000026ae blx 0x13b4 | r0 = generator_add_symlink ();
0x000026b2 subs r4, r0, 0 | r4 = r0 - 0;
0x000026b4 bge 0x2698 |
| } while (r4 >= r0);
| label_13:
0x000026b6 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x000026b8 b 0x2226 | goto label_2;
| label_30:
0x000026ba ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x000026bc mov sb, r3 | sb = r3;
0x000026be b 0x2226 | goto label_2;
| label_37:
0x000026c0 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x000026c2 mov.w sb, 0 | sb = 0;
0x000026c6 b 0x2226 | goto label_2;
| label_35:
0x000026c8 blx 0x1360 | r0 = log_get_max_level ();
0x000026cc cmp r0, 2 |
0x000026ce ittt le |
| if (r0 <= 2) {
0x000026d0 rsble r4, r4, 0 | __asm ("rsble r4, r4, 0");
| }
| if (r0 <= 2) {
0x000026d2 bicle r4, r4, 0x40000000 | __asm ("bicle r4, r4, 0x40000000");
| }
| if (r0 <= 2) {
0x000026d6 rsbs r4, r4, 0 | r4 -= ;
| }
| if (r0 > 2) {
0x000026d8 bgt 0x274e | goto label_55;
| }
| label_6:
0x000026da cmp r4, 0 |
0x000026dc ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x000026de mov.w sb, 0 | sb = 0;
0x000026e2 it ge |
| if (r4 < 0) {
0x000026e4 mvnge r4, 0x55 | r4 = ~0x55;
| }
0x000026e8 b 0x2226 | goto label_2;
| label_32:
0x000026ea ldr.w r3, [pc, 0x514] |
0x000026ee mov r1, r4 | r1 = r4;
0x000026f0 ldr.w r2, [pc, 0x510] |
0x000026f4 movs r0, 4 | r0 = 4;
0x000026f6 add r3, pc | r3 = 0x52fc;
0x000026f8 str r3, [sp, 4] | var_4h = r3;
0x000026fa add r2, pc | r2 = 0x5302;
0x000026fc ldr.w r3, [pc, 0x508] |
0x00002700 adds r2, 7 | r2 += 7;
0x00002702 add r3, pc | r3 = 0x530e;
0x00002704 str r3, [sp] | *(sp) = r3;
0x00002706 mov.w r3, 0x186 | r3 = 0x186;
0x0000270a blx 0x13cc | log_internal ();
| label_31:
0x0000270e ldr r3, [r7, 0x7c] | r3 = *((r7 + 0x7c));
0x00002710 lsls r1, r3, 0x1e | r1 = r3 << 0x1e;
| if (r1 >= r3) {
0x00002712 bpl.w 0x238a | goto label_3;
| }
0x00002716 blx 0x1360 | r0 = log_get_max_level ();
0x0000271a cmp r0, 3 |
| if (r0 <= 3) {
0x0000271c ble.w 0x23bc | goto label_4;
| }
0x00002720 ldr.w r3, [pc, 0x4e8] |
0x00002724 movs r1, 0 | r1 = 0;
0x00002726 ldr.w r2, [pc, 0x4e8] |
0x0000272a movs r0, 4 | r0 = 4;
0x0000272c add r3, pc | r3 = 0x533c;
0x0000272e str r3, [sp, 4] | var_4h = r3;
0x00002730 add r2, pc | r2 = 0x5346;
0x00002732 ldr.w r3, [pc, 0x4e0] |
0x00002736 adds r2, 7 | r2 += 7;
0x00002738 add r3, pc | r3 = 0x5352;
0x0000273a str r3, [sp] | *(sp) = r3;
0x0000273c mov.w r3, 0x188 | r3 = 0x188;
0x00002740 blx 0x13cc | log_internal ();
0x00002742 cdp p6, 4, c14, c4, c1, 1 | __asm ("cdp p6, 4, c14, c4, c1, 1");
| label_36:
0x00002746 ldr.w r1, [pc, 0x4d0] |
0x0000274a add r1, pc | r1 = 0x5368;
0x0000274c b 0x2420 | goto label_5;
| label_55:
0x0000274e ldr.w r2, [pc, 0x4cc] |
0x00002752 mov r1, r4 | r1 = r4;
0x00002754 ldr.w r6, [pc, 0x4c8] |
0x00002758 movw r3, 0x197 | r3 = 0x197;
0x0000275c ldr.w r5, [pc, 0x4c4] |
0x00002760 movs r0, 3 | r0 = 3;
0x00002762 add r2, pc | r2 = 0x5384;
0x00002764 add r6, pc | r6 = 0x5388;
0x00002766 adds r2, 7 | r2 += 7;
0x00002768 add r5, pc | r5 = 0x5390;
0x0000276a strd r5, r6, [sp] | __asm ("strd r5, r6, [sp]");
0x0000276e blx 0x13cc | r0 = log_internal ();
0x00002772 mov r4, r0 | r4 = r0;
0x00002774 b 0x26da | goto label_6;
| label_34:
0x00002776 ldr.w r3, [pc, 0x4b0] |
0x0000277a movs r1, 0 | r1 = 0;
0x0000277c ldr.w r2, [pc, 0x4ac] |
0x00002780 movs r0, 4 | r0 = 4;
0x00002782 add r3, pc | r3 = 0x53b0;
0x00002784 str r3, [sp, 4] | var_4h = r3;
0x00002786 add r2, pc | r2 = 0x53b6;
0x00002788 ldr.w r3, [pc, 0x4a4] |
0x0000278c adds r2, 7 | r2 += 7;
0x0000278e add r3, pc | r3 = 0x53c2;
0x00002790 str r3, [sp] | *(sp) = r3;
0x00002792 mov.w r3, 0x18e | r3 = 0x18e;
0x00002796 blx 0x13cc | log_internal ();
0x0000279a ldr r4, [r7, 0x28] | r4 = *((r7 + 0x28));
0x0000279c b 0x23e0 | goto label_7;
| label_33:
0x0000279e ldr.w r3, [pc, 0x494] |
0x000027a2 movs r1, 0 | r1 = 0;
0x000027a4 ldr.w r2, [pc, 0x490] |
0x000027a8 movs r0, 4 | r0 = 4;
0x000027aa add r3, pc | r3 = 0x53e4;
0x000027ac str r3, [sp, 4] | var_4h = r3;
0x000027ae add r2, pc | r2 = 0x53ea;
0x000027b0 ldr.w r3, [pc, 0x488] |
0x000027b4 adds r2, 7 | r2 += 7;
0x000027b6 add r3, pc | r3 = 0x53f6;
0x000027b8 str r3, [sp] | *(sp) = r3;
0x000027ba mov.w r3, 0x18c | r3 = 0x18c;
0x000027be blx 0x13cc | log_internal ();
0x000027c2 b 0x23ce | goto label_8;
| label_38:
0x000027c4 ldr.w sb, [pc, 0x478] |
0x000027c8 add.w r2, r7, 0x34 | r2 = r7 + 0x34;
0x000027cc strd r3, r3, [sp] | __asm ("strd r3, r3, [sp]");
0x000027d0 mov r0, fp | r0 = fp;
0x000027d2 str r3, [r7, 8] | *((r7 + 8)) = r3;
0x000027d4 add sb, pc |
0x000027d6 add.w sb, sb, 0x30 | sb = "parse_fstab";
0x000027d8 lsrs r0, r6, 4 | r0 = r6 >> 4;
0x000027da mov r1, sb | r1 = sb;
0x000027dc blx 0x1508 | r0 = fcn_00001508 ();
0x000027e0 cmp r0, 0 |
0x000027e2 ldr r3, [r7, 8] | r3 = *((r7 + 8));
| if (r0 < 0) {
0x000027e4 blt.w 0x2914 | goto label_56;
| }
0x000027e6 strh r6, [r2, 4] | *((r2 + 4)) = r6;
0x000027e8 ldr r2, [r7, 0x34] | r2 = *((r7 + 0x34));
0x000027ea cmp r2, sb |
| if (r2 != sb) {
0x000027ec bne.w 0x2472 | goto label_9;
| }
0x000027f0 ldr.w r1, [pc, 0x450] |
0x000027f4 mov r2, r4 | r2 = r4;
0x000027f6 str.w fp, [r7, 0x3c] | __asm ("str.w fp, [r7, 0x3c]");
0x000027fa mov sb, r3 | sb = r3;
0x000027fc mov fp, r4 |
0x000027fe str r6, [r7, 8] | *((r7 + 8)) = r6;
0x00002800 add r1, pc | r1 = "parse_fstab";
0x00002802 str.w sl, [r7] | __asm ("str.w sl, [r7]");
0x00002806 str r1, [r7, 0x38] | *((r7 + 0x38)) = r1;
0x00002808 mov sl, r5 | sl = r5;
0x0000280a ldr.w r1, [pc, 0x43c] |
0x0000280e mov r4, r3 | r4 = r3;
0x00002810 mov r6, r3 | r6 = r3;
0x00002812 mov r5, r2 | r5 = r2;
0x00002814 add r1, pc | r1 = 0x5462;
0x00002816 str r1, [r7, 0x40] | *((r7 + 0x40)) = r1;
| do {
0x00002818 ldr r0, [fp], 4 | r0 = *(fp);
| fp += 4;
| if (r0 == 0) {
0x0000281c cbz r0, 0x282e | goto label_57;
| }
0x0000281e add.w sb, sb, 1 | sb++;
0x00002822 blx 0x14d8 | fcn_000014d8 ();
0x00002826 cmp.w sb, 3 |
0x0000282a add r4, r0 | r4 += r0;
0x0000282c bne 0x2818 |
| } while (sb != 3);
| label_57:
0x0000282e adds r4, 1 | r4++;
0x00002830 mov r2, r5 | r2 = r5;
0x00002832 cmp.w r4, 0x400000 |
0x00002836 mov r3, r6 | r3 = r6;
0x00002838 mov r5, sl | r5 = sl;
0x0000283a ldr r6, [r7, 8] | r6 = *((r7 + 8));
0x0000283c ldr.w sl, [r7] | sl = *(r7);
| if (r4 > 0x400000) {
0x00002840 bhi 0x2928 | goto label_58;
| }
0x00002842 cmp r4, 1 |
0x00002844 mov r1, r4 | r1 = r4;
0x00002846 it lo |
| if (r4 >= 1) {
0x00002848 movlo r1, 1 | r1 = 1;
| }
0x0000284a mov sb, r2 | sb = r2;
0x0000284c adds r1, 7 | r1 += 7;
0x0000284e mov r4, r3 | r4 = r3;
0x00002850 bic r1, r1, 7 | r1 = BIT_MASK (r1, 7);
0x00002854 sub.w sp, sp, r1 |
0x00002858 add.w fp, sp, 0x10 |
0x0000285c mov r0, fp | r0 = fp;
| do {
0x0000285e ldr r1, [sb], 4 | r1 = *(sb);
| sb += 4;
| if (r1 == 0) {
0x00002862 cbz r1, 0x286e | goto label_59;
| }
0x00002864 adds r4, 1 | r4++;
0x00002866 blx 0x130c | stpcpy ();
0x0000286a cmp r4, 3 |
0x0000286c bne 0x285e |
| } while (r4 != 3);
| label_59:
0x0000286e ldr r3, [r7, 0x7c] | r3 = *((r7 + 0x7c));
0x00002870 orr r3, r3, 2 | r3 |= 2;
0x00002874 str r3, [r7, 0x7c] | *((r7 + 0x7c)) = r3;
0x00002876 movs r3, 0 | r3 = 0;
0x00002878 strb r3, [r0] | *(r0) = r3;
0x0000287a b 0x2472 | goto label_9;
| label_45:
0x0000287c ldr r2, [pc, 0x3cc] |
0x0000287e movs r1, 1 | r1 = 1;
0x00002880 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00002882 add r2, pc | r2 = 0x54d2;
0x00002884 blx 0x1354 | fprintf_chk ()
0x00002888 ldr r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
0x0000288a b 0x255a | goto label_10;
| label_39:
0x0000288c ldr r1, [pc, 0x3c0] |
0x0000288e movw r2, 0x141 | r2 = 0x141;
0x00002892 ldr r3, [pc, 0x3c0] |
0x00002894 ldr r0, [pc, 0x3c0] |
0x00002896 add r1, pc | r1 = 0x54ea;
0x00002898 add r3, pc | r3 = 0x54f2;
0x0000289a adds r1, 7 | r1 += 7;
0x0000289c add r0, pc | r0 = 0x54f8;
0x0000289e blx 0x1270 | log_assert_failed ();
| do {
| label_41:
0x000028a2 mov.w sb, 0 | sb = 0;
0x000028a6 b 0x252c | goto label_11;
| label_47:
0x000028a8 mov r2, r4 | r2 = r4;
0x000028aa ldr r1, [r7, 0xc] | r1 = *((r7 + 0xc));
0x000028ac mov r0, sl | r0 = sl;
0x000028ae blx 0x1258 | r0 = strreplace ();
0x000028b2 mov r4, r0 | r4 = r0;
0x000028b4 cmp r0, 0 |
| if (r0 == 0) {
0x000028b6 beq.w 0x2b22 | goto label_60;
| }
0x000028ba ldr r2, [pc, 0x3a0] |
0x000028bc mov r3, r4 | r3 = r4;
0x000028be ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x000028c0 movs r1, 1 | r1 = 1;
0x000028c2 add r2, pc | r2 = 0x5524;
0x000028c4 blx 0x1354 | fprintf_chk ()
0x000028c8 mov r0, r4 | r0 = r4;
0x000028ca blx 0x127c | free (r0);
0x000028ce b 0x2602 | goto label_12;
| label_46:
0x000028d0 ldr r1, [pc, 0x38c] |
0x000028d2 movw r2, 0x1d1 | r2 = 0x1d1;
0x000028d4 asrs r1, r2, 0xb | r1 = r2 >> 0xb;
0x000028d6 ldr r3, [pc, 0x38c] |
0x000028d8 movs r0, 3 | r0 = 3;
0x000028da add r1, pc | r1 = 0x553e;
0x000028dc add r3, pc | r3 = 0x5546;
0x000028de adds r1, 7 | r1 += 7;
0x000028e0 blx 0x15c0 | r0 = fcn_000015c0 ();
0x000028e4 mov r4, r0 | r4 = r0;
0x000028e6 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x000028e8 b 0x2226 | goto label_2;
| label_29:
0x000028ea blx 0x13fc | stack_chk_fail ();
| label_40:
0x000028ee blx 0x1360 | r0 = log_get_max_level ();
0x000028f2 cmp r0, 3 |
| if (r0 > 3) {
0x000028f4 bgt.w 0x2b4a | goto label_61;
| }
| label_15:
0x000028f8 rsbs r4, r4, 0 | r4 -= ;
0x000028fa bic r4, r4, 0x40000000 | r4 = BIT_MASK (r4, 0x40000000);
0x000028fe rsbs r4, r4, 0 | r4 -= ;
| label_16:
0x00002900 cmp r4, 0 |
0x00002902 blt 0x28a2 |
| } while (r4 < 0);
0x00002904 mov.w sb, 0 | sb = 0;
0x00002908 mvn r4, 0x55 | r4 = ~0x55;
0x0000290c b 0x252c | goto label_11;
| label_44:
0x0000290e mov.w sb, 0 | sb = 0;
0x00002912 b 0x2226 | goto label_2;
| label_56:
0x00002914 ldr r1, [pc, 0x350] |
0x00002916 movs r2, 0x21 | r2 = 0x21;
0x00002918 ldr r3, [pc, 0x350] |
0x0000291a ldr r0, [pc, 0x354] |
0x0000291c add r1, pc | r1 = 0x5588;
0x0000291e add r3, pc | r3 = 0x558e;
0x00002920 adds r1, 7 | r1 += 7;
0x00002922 add r0, pc | r0 = 0x5598;
0x00002924 blx 0x1270 | log_assert_failed ();
| label_58:
0x00002928 ldr r1, [pc, 0x348] |
0x0000292a movw r2, 0x1ad | r2 = 0x1ad;
0x0000292e ldr r3, [pc, 0x348] |
0x00002930 ldr r0, [pc, 0x348] |
0x00002932 add r1, pc | r1 = 0x55aa;
0x00002934 add r3, pc | r3 = 0x55b2;
0x00002936 adds r1, 7 | r1 += 7;
0x00002938 add r0, pc | r0 = 0x55b8;
0x0000293a blx 0x1270 | log_assert_failed ();
| label_54:
0x0000293e ldr r6, [pc, 0x340] |
0x00002940 ldr r5, [r7, 0x28] | r5 = *((r7 + 0x28));
0x00002942 add r6, pc | r6 = 0x55c8;
| if (r5 == 0) {
| do {
0x00002944 cbz r5, 0x2992 | goto label_62;
| }
0x00002946 ldr r1, [r5], 4 | r1 = *(r5);
| r5 += 4;
| if (r1 == 0) {
0x0000294a cbz r1, 0x298c | goto label_63;
| }
0x0000294c ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x0000294e mov r2, r6 | r2 = r6;
0x00002950 mov r0, r8 | r0 = r8;
0x00002952 blx 0x13b4 | r0 = generator_add_symlink ();
0x00002956 subs r4, r0, 0 | r4 = r0 - 0;
0x00002958 bge 0x2944 |
| } while (r4 >= r0);
0x0000295a b 0x26b6 | goto label_13;
| label_50:
0x0000295c mov r3, sl | r3 = sl;
0x0000295e mov r1, r5 | r1 = r5;
0x00002960 mov r2, r6 | r2 = r6;
0x00002962 mov r0, r8 | r0 = r8;
0x00002964 blx 0x1378 | r0 = generator_hook_up_mkfs ();
0x00002968 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x0000296a bge.w 0x266e | goto label_14;
| }
0x0000296c add r6, sp, 0x200 | r6 = sp + 0x200;
0x0000296e b 0x26b6 | goto label_13;
| label_49:
0x00002970 blx 0x1360 | r0 = log_get_max_level ();
0x00002974 cmp r0, 2 |
| if (r0 > 2) {
0x00002976 bgt 0x2998 | goto label_64;
| }
| label_20:
0x00002978 rsbs r4, r4, 0 | r4 -= ;
0x0000297a bic r4, r4, 0x40000000 | r4 = BIT_MASK (r4, 0x40000000);
0x0000297e rsbs r4, r4, 0 | r4 -= ;
| do {
| label_21:
0x00002980 cmp r4, 0 |
0x00002982 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x00002984 it ge |
| if (r4 < 0) {
0x00002986 mvnge r4, 0x55 | r4 = ~0x55;
| }
0x0000298a b 0x2226 | goto label_2;
| label_63:
0x0000298c ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x0000298e mov r4, r1 | r4 = r1;
0x00002990 b 0x2226 | goto label_2;
| label_62:
0x00002992 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x00002994 mov r4, r5 | r4 = r5;
0x00002996 b 0x2226 | goto label_2;
| label_64:
0x00002998 ldr r2, [pc, 0x2e8] |
0x0000299a mov r1, r4 | r1 = r4;
0x0000299c ldr r3, [pc, 0x2e8] |
0x0000299e ldr r5, [pc, 0x2ec] |
0x000029a0 ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
0x000029a2 add r2, pc | r2 = 0x562a;
0x000029a4 add r3, pc | r3 = 0x5630;
0x000029a6 adds r2, 7 | r2 += 7;
0x000029a8 add r5, pc | r5 = 0x563a;
0x000029aa strd r3, r0, [sp, 4] | __asm ("strd r3, r0, [sp, 4]");
0x000029ae movw r3, 0x1f3 | r3 = 0x1f3;
0x000029b2 movs r0, 3 | r0 = 3;
0x000029b4 str r5, [sp] | *(sp) = r5;
0x000029b6 blx 0x13cc | r0 = log_internal ();
0x000029ba mov r4, r0 | r4 = r0;
0x000029bc b 0x2980 |
| } while (1);
| label_42:
0x000029be blx 0x1360 | r0 = log_get_max_level ();
0x000029c2 cmp r0, 2 |
| if (r0 <= 2) {
0x000029c4 ble 0x28f8 | goto label_15;
| }
0x000029c6 ldr r3, [pc, 0x2c8] |
0x000029c8 mov r1, r4 | r1 = r4;
0x000029ca ldr r2, [pc, 0x2c8] |
0x000029cc movs r0, 3 | r0 = 3;
0x000029ce add r3, pc | r3 = 0x5664;
0x000029d0 str r3, [sp, 4] | var_4h = r3;
0x000029d2 add r2, pc | r2 = 0x566c;
0x000029d4 ldr r3, [pc, 0x2c0] |
0x000029d6 adds r2, 7 | r2 += 7;
0x000029d8 add r3, pc | r3 = 0x5674;
0x000029da str r3, [sp] | *(sp) = r3;
0x000029dc movw r3, 0x133 | r3 = 0x133;
0x000029e0 blx 0x13cc | r0 = log_internal ();
0x000029e4 mov r4, r0 | r4 = r0;
0x000029e6 b 0x2900 | goto label_16;
| label_48:
0x000029e8 ldr r0, [pc, 0x2b0] |
0x000029ea movs r2, 0x12 | r2 = 0x12;
0x000029ec ldr r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
0x000029ee movs r1, 1 | r1 = 1;
0x000029f0 add r0, pc | r0 = 0x5690;
0x000029f2 blx 0x14a4 | fwrite (r0, r1, r2, r3);
0x000029f6 b 0x265a | goto label_17;
| label_52:
0x000029f8 ldr r1, [pc, 0x2a4] |
0x000029fa add.w r2, r7, 0x1c | r2 = r7 + 0x1c;
0x000029fe mov r0, r6 | r0 = r6;
0x00002a00 add r1, pc | r1 = 0x56a4;
0x00002a02 blx 0x1420 | r0 = unit_name_from_path ();
0x00002a06 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00002a08 blt 0x2ade | goto label_65;
| }
0x00002a0a ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x00002a0c blx 0x14cc | fcn_000014cc ();
0x00002a10 str r0, [r7, 0x2c] | *((r7 + 0x2c)) = r0;
0x00002a12 ldr r0, [pc, 0x290] |
0x00002a14 add r0, pc | r0 = 0x56be;
0x00002a16 blx 0x1574 | r0 = fcn_00001574 ();
0x00002a1a mov r1, r0 | r1 = r0;
0x00002a1c cmp r0, 0 |
| if (r0 == 0) {
0x00002a1e beq 0x2ad8 | goto label_66;
| }
| label_22:
0x00002a20 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00002a22 mov r0, r8 | r0 = r8;
0x00002a24 ldr r2, [r7, 0x1c] | r2 = *((r7 + 0x1c));
0x00002a26 blx 0x1474 | r0 = generator_open_unit_file ();
0x00002a2a subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00002a2c blt.w 0x26b6 | goto label_13;
| }
0x00002a2e add r6, sp, 0x10c | r6 = sp + 0x10c;
0x00002a30 ldr r2, [pc, 0x274] |
0x00002a32 movs r1, 1 | r1 = 1;
0x00002a34 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x00002a36 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x00002a38 add r2, pc | r2 = "x-systemd.mount-timeout";
0x00002a3a blx 0x1354 | fprintf_chk ()
0x00002a3e ldr r2, [pc, 0x26c] |
0x00002a40 mov r3, sb | r3 = sb;
0x00002a42 movs r1, 1 | r1 = 1;
0x00002a44 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x00002a46 add r2, pc | r2 = 0x56f8;
0x00002a48 blx 0x1354 | fprintf_chk ()
0x00002a4c ldr r0, [pc, 0x260] |
0x00002a4e mov r2, fp | r2 = fp;
0x00002a50 ldr r3, [pc, 0x260] |
0x00002a52 mov r1, r6 | r1 = r6;
0x00002a54 add r0, pc | r0 = 0x5708;
0x00002a56 str r0, [sp] | *(sp) = r0;
0x00002a58 add r3, pc | r3 = 0x5710;
0x00002a5a ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x00002a5c adds r3, 0xb0 | r3 += 0xb0;
0x00002a5e bl 0x1af8 | r0 = fcn_00001af8 (r0, r1, r2, r3, r4);
0x00002a62 subs r4, r0, 0 | r4 = r0 - 0;
0x00002a64 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
| if (r4 < r0) {
0x00002a66 blt.w 0x2226 | goto label_2;
| }
0x00002a6a blx 0x12ac | r0 = fflush_and_check ();
0x00002a6e subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00002a70 blt 0x2aa8 | goto label_67;
| }
0x00002a72 ldr r3, [r7, 8] | r3 = *((r7 + 8));
| if (r3 == 0) {
0x00002a74 cbz r3, 0x2aa2 | goto label_68;
| }
0x00002a76 ldr r2, [pc, 0x240] |
0x00002a78 add r2, pc | r2 = 0x5736;
| label_19:
0x00002a7a ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
| label_24:
0x00002a7c ldr r1, [r7, 0x10] | r1 = *((r7 + 0x10));
0x00002a7e mov r0, r8 | r0 = r8;
0x00002a80 blx 0x13b4 | r0 = generator_add_symlink ();
0x00002a84 mov r4, r0 | r4 = r0;
0x00002a86 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x00002a88 and.w r4, r4, r4, asr 31 | r4 &= (r4 >> 31);
0x00002a8a strb r4, [r4, 0x13] | *((r4 + 0x13)) = r4;
0x00002a8c b.w 0x2226 | goto label_2;
| label_51:
0x00002a90 ldr r2, [r7, 0x10] | r2 = *((r7 + 0x10));
0x00002a92 mov r1, r6 | r1 = r6;
0x00002a94 mov r0, r8 | r0 = r8;
0x00002a96 blx 0x13c0 | r0 = generator_hook_up_growfs ();
0x00002a9a subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x00002a9c bge.w 0x2676 | goto label_18;
| }
0x00002aa0 b 0x26b6 | goto label_13;
| label_68:
0x00002aa2 ldr r2, [pc, 0x218] |
0x00002aa4 add r2, pc | r2 = 0x5766;
0x00002aa6 b 0x2a7a | goto label_19;
| label_67:
0x00002aa8 blx 0x1360 | r0 = log_get_max_level ();
0x00002aac cmp r0, 2 |
| if (r0 <= 2) {
0x00002aae ble.w 0x2978 | goto label_20;
| }
0x00002ab2 ldr r2, [pc, 0x20c] |
0x00002ab4 mov r1, r4 | r1 = r4;
0x00002ab6 ldr r3, [pc, 0x20c] |
0x00002ab8 ldr r5, [pc, 0x20c] |
0x00002aba ldr r0, [r7, 0x1c] | r0 = *((r7 + 0x1c));
0x00002abc add r2, pc | r2 = 0x5782;
0x00002abe add r3, pc | r3 = 0x5788;
0x00002ac0 adds r2, 7 | r2 += 7;
0x00002ac2 add r5, pc | r5 = 0x578e;
0x00002ac4 strd r3, r0, [sp, 4] | __asm ("strd r3, r0, [sp, 4]");
0x00002ac8 movw r3, 0x231 | r3 = 0x231;
0x00002acc movs r0, 3 | r0 = 3;
0x00002ace str r5, [sp] | *(sp) = r5;
0x00002ad0 blx 0x13cc | r0 = log_internal ();
0x00002ad4 mov r4, r0 | r4 = r0;
0x00002ad6 b 0x2980 | goto label_21;
| label_66:
0x00002ad8 ldr r1, [pc, 0x1f0] |
0x00002ada add r1, pc | r1 = 0x57aa;
0x00002adc b 0x2a20 | goto label_22;
| label_65:
0x00002ade blx 0x1360 | r0 = log_get_max_level ();
0x00002ae2 cmp r0, 2 |
| if (r0 <= 2) {
0x00002ae4 ble.w 0x2978 | goto label_20;
| }
0x00002ae8 ldr r2, [pc, 0x1e4] |
0x00002aea mov r1, r4 | r1 = r4;
0x00002aec ldr r5, [pc, 0x1e4] |
0x00002aee movw r3, 0x217 | r3 = 0x217;
0x00002af2 ldr r0, [pc, 0x1e4] |
0x00002af4 add r2, pc | r2 = 0x57c8;
0x00002af6 add r5, pc | r5 = 0x57ce;
0x00002af8 adds r2, 7 | r2 += 7;
0x00002afa add r0, pc | r0 = 0x57d8;
0x00002afc strd r0, r5, [sp] | __asm ("strd r0, r5, [sp]");
0x00002b00 movs r0, 3 | r0 = 3;
0x00002b02 blx 0x13cc | r0 = log_internal ();
0x00002b06 mov r4, r0 | r4 = r0;
0x00002b08 b 0x2980 | goto label_21;
| label_53:
0x00002b0a ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
| if (r3 == 0) {
0x00002b0c cbz r3, 0x2b16 | goto label_69;
| }
0x00002b0e ldr r3, [r3] | r3 = *(r3);
0x00002b10 cmp r3, 0 |
| if (r3 != 0) {
0x00002b12 bne.w 0x2692 | goto label_23;
| }
| label_69:
0x00002b16 ldr r3, [r7, 8] | r3 = *((r7 + 8));
| if (r3 == 0) {
0x00002b18 cbz r3, 0x2b2c | goto label_70;
| }
0x00002b1a ldr r2, [pc, 0x1c0] |
0x00002b1c add r2, pc | r2 = 0x57fe;
| do {
0x00002b1e ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x00002b20 b 0x2a7c | goto label_24;
| label_60:
0x00002b22 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x00002b24 mvn r4, 0xb | r4 = ~0xb;
0x00002b28 b.w 0x2226 | goto label_2;
| label_70:
0x00002b2c ldr r2, [pc, 0x1b0] |
0x00002b2e add r2, pc | r2 = 0x5812;
0x00002b30 b 0x2b1e |
| } while (1);
| label_43:
0x00002b32 ldr r1, [pc, 0x1b0] |
0x00002b34 movw r2, 0x137 | r2 = 0x137;
0x00002b38 ldr r3, [pc, 0x1ac] |
0x00002b3a movs r0, 3 | r0 = 3;
0x00002b3c add r1, pc | r1 = 0x5826;
0x00002b3e adds r1, 7 | r1 += 7;
0x00002b40 add r3, pc | r3 = 0x582c;
0x00002b42 blx 0x15c0 | r0 = fcn_000015c0 ();
0x00002b46 mov r4, r0 | r4 = r0;
0x00002b48 b 0x252c | goto label_11;
| label_61:
0x00002b4a ldr r3, [pc, 0x1a0] |
0x00002b4c mov r1, r4 | r1 = r4;
0x00002b4e ldr r2, [pc, 0x1a0] |
0x00002b50 movs r0, 4 | r0 = 4;
0x00002b52 add r3, pc | r3 = 0x5844;
0x00002b54 str r3, [sp, 4] | var_4h = r3;
0x00002b56 add r2, pc | r2 = 0x584c;
0x00002b58 ldr r3, [pc, 0x198] |
0x00002b5a adds r2, 7 | r2 += 7;
0x00002b5c add r3, pc | r3 = 0x5854;
0x00002b5e str r3, [sp] | *(sp) = r3;
0x00002b60 movw r3, 0x12d | r3 = 0x12d;
0x00002b64 blx 0x13cc | r0 = log_internal ();
0x00002b68 mov r4, r0 | r4 = r0;
0x00002b6a b 0x2900 | goto label_16;
| }
[*] Function printf used 12 times systemd-fstab-generator