[*] Binary protection state of systemd-delta
Full RELRO Canary found NX enabled PIE enabled RPATH No RUNPATH No Symbols
[*] Function printf tear down of systemd-delta
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/systemd-delta @ 0x18d8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000018d8 () | void fcn_000018d8 (int16_t arg_8h, int16_t arg_14h, int16_t arg_18h, int16_t arg_1ch, int16_t arg_20h, int16_t arg_2ch, void * ptr, int16_t arg_34h) {
| int16_t var_0h;
| int16_t var_4h;
| label_2:
0x0000137a ldrd r3, r2, [sp, 0x14] | __asm ("ldrd r3, r2, [arg_14h]");
0x0000137e mov r1, fp | r1 = fp;
0x00001380 mov r0, r8 | r0 = r8;
0x00001382 str r7, [sp] | *(sp) = r7;
0x00001384 blx 0x1204 | r0 = getopt_long ();
0x00001388 cmp r0, 0 |
| if (r0 < 0) {
0x0000138a blt.w 0x175c | goto label_15;
| }
0x0000138e cmp.w r0, 0x100 |
| if (r0 == 0x100) {
0x00001392 beq.w 0x15d6 | goto label_16;
| }
| if (r0 > 0x100) {
0x00001396 bgt 0x1492 | goto label_17;
| }
0x00001398 cmp r0, 0x68 |
| if (r0 == 0x68) {
0x0000139a beq.w 0x15e4 | goto label_18;
| }
0x0000139e cmp r0, 0x74 |
| if (r0 != 0x74) {
0x000013a0 bne 0x142e | goto label_19;
| }
0x000013a2 ldr.w r3, [pc, 0x434] |
0x000013a6 add r1, sp, 0x2c | r1 += arg_2ch;
0x000013a8 ldr.w r2, [pc, 0x430] |
0x000013ac add.w sb, sp, 0x30 | sb += ptr;
0x000013b0 ldr.w sl, [pc, 0x42c] |
0x000013b4 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x000013b6 add r2, pc | r2 = 0x2b96;
0x000013b8 strd r8, fp, [sp, 0x20] | __asm ("strd r8, fp, [var_0hx20]");
0x000013bc str r5, [sp, 0x1c] | *(arg_1ch) = r5;
0x000013be add sl, pc | sl = 0x2ba2;
0x000013c0 ldr r3, [r3] | r3 = *(0x17da);
0x000013c2 mov r8, r1 | r8 = r1;
0x000013c4 mov r5, r2 | r5 = r2;
0x000013c6 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x000013c8 ldr.w r3, [pc, 0x418] |
0x000013cc add r3, pc | r3 = 0x2bb4;
0x000013ce ldr r6, [r3] | r6 = *(0x2bb4);
0x000013d0 ldr.w r3, [pc, 0x414] |
0x000013d4 add r3, pc | r3 = 0x2bc0;
0x000013d6 mov fp, r3 |
0x000013d8 b 0x13e4 |
| while (r0 == 0) {
0x000013da orr r6, r6, 1 | r6 |= 1;
| label_0:
0x000013de mov r0, r4 | r0 = r4;
0x000013e0 blx 0x1060 | free (r0);
0x000013e4 movs r3, 0x40 | r3 = 0x40;
0x000013e6 mov r2, sl | r2 = sl;
0x000013e8 mov r1, sb | r1 = sb;
0x000013ea mov r0, r8 | r0 = r8;
0x000013ec str r7, [sp, 0x30] | *(ptr) = r7;
0x000013ee blx 0x11bc | r0 = extract_first_word ();
0x000013f2 cmp r0, 0 |
| if (r0 < 0) {
0x000013f4 blt.w 0x1766 | goto label_20;
| }
0x000013f8 ldr r4, [sp, 0x30] | r4 = *(ptr);
| if (r0 == 0) {
0x000013fa beq.w 0x1616 | goto label_21;
| }
0x000013fe mov r1, fp | r1 = fp;
0x00001400 mov r0, r4 | r0 = r4;
0x00001402 blx 0x1270 | r0 = strcmp (r0, r1);
0x00001406 cmp r0, 0 |
0x00001408 beq 0x13da |
| }
0x0000140a mov r1, r5 | r1 = r5;
0x0000140c mov r0, r4 | r0 = r4;
0x0000140e blx 0x1270 | r0 = strcmp (r0, r1);
0x00001412 cmp r0, 0 |
| if (r0 == 0) {
0x00001414 beq.w 0x1578 | goto label_22;
| }
0x00001416 strh r0, [r6, 4] | *((r6 + 4)) = r0;
0x00001418 ldr r1, [pc, 0x3d0] | r1 = *(0x17ec);
0x0000141a mov r0, r4 | r0 = r4;
| label_14:
0x0000141c add r1, pc | r1 += pc;
0x0000141e blx 0x1270 | r0 = strcmp (r0, r1);
0x00001422 cmp r0, 0 |
| if (r0 != 0) {
0x00001424 bne.w 0x157e | goto label_23;
| }
0x00001428 orr r6, r6, 4 | r6 |= 4;
0x0000142c b 0x13de | goto label_0;
| label_19:
0x0000142e cmp r0, 0x3f |
| if (r0 != 0x3f) {
0x00001430 bne.w 0x17a4 | goto label_24;
| }
| label_13:
0x00001434 mvn r4, 0x15 | r4 = ~0x15;
| label_4:
0x00001438 ldr r1, [pc, 0x3b4] |
0x0000143a rsbs r2, r4, 0 | r2 = r4 - ;
0x0000143c movs r0, 0 | r0 = 0;
0x0000143e add r1, pc | r1 = 0x2c32;
0x00001440 blx 0x10c0 | sd_notifyf ();
| label_3:
0x00001444 blx 0x1090 | ask_password_agent_close ();
0x00001448 blx 0x109c | polkit_agent_close ();
0x0000144c blx 0x1228 | pager_close ();
0x00001450 blx 0x10a8 | mac_selinux_finish ();
0x00001454 ldr r3, [pc, 0x39c] | r3 = *(0x17f4);
0x00001456 ldr r6, [r5, r3] | r6 = *((r5 + r3));
| if (r6 == 0) {
0x00001458 cbz r6, 0x1474 | goto label_25;
| }
0x0000145a ldr r3, [pc, 0x39c] | r3 = *(0x17fa);
0x0000145c adds r6, 3 | r6 += 3;
0x0000145e bic r6, r6, 3 | r6 = BIT_MASK (r6, 3);
0x00001462 ldr r5, [r5, r3] | r5 = *((r5 + r3));
0x00001464 cmp r6, r5 |
| if (r6 >= r5) {
0x00001466 bhs 0x1474 | goto label_25;
| }
| do {
0x00001468 ldrd r0, r3, [r6] | __asm ("ldrd r0, r3, [r6]");
0x0000146c adds r6, 8 | r6 += 8;
0x0000146e blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x00001470 cmp r6, r5 |
0x00001472 blo 0x1468 |
| } while (r6 <= r5);
| label_25:
0x00001474 ldr r2, [pc, 0x384] |
0x00001476 lsrs r0, r4, 0x1f | r0 = r4 >> 0x1f;
0x00001478 ldr r3, [pc, 0x344] | r3 = *(0x17c0);
0x0000147a add r2, pc | r2 = 0x2c7a;
0x0000147c ldr r3, [r2, r3] | r3 = *(0x2c7a);
0x0000147e ldr r2, [r3] | r2 = *(0x2c7a);
0x00001480 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00001482 eors r2, r3 | r2 ^= r3;
0x00001484 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00001488 bne.w 0x17b6 | goto label_26;
| }
0x0000148c add sp, 0x3c |
0x0000148e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_17:
0x00001492 movw r3, 0x101 | r3 = 0x101;
0x00001496 cmp r0, r3 |
| if (r0 == r3) {
0x00001498 beq.w 0x159e | goto label_27;
| }
0x0000149c cmp.w r0, 0x102 |
| if (r0 != 0x102) {
0x000014a0 bne.w 0x17a4 | goto label_24;
| }
0x000014a4 blx 0x103c | r0 = version ();
0x000014a8 mov r4, r0 | r4 = r0;
| label_11:
0x000014aa cmp r4, 0 |
| if (r4 <= 0) {
0x000014ac ble.w 0x16fe | goto label_28;
| }
| label_12:
0x000014b0 ldr r3, [pc, 0x34c] |
0x000014b2 add r3, pc | r3 = 0x2cb6;
0x000014b4 ldr r2, [r3] | r2 = *(0x2cb6);
| if (r2 == 0) {
0x000014b6 cbnz r2, 0x14bc |
0x000014b8 movs r2, 0x2f | r2 = 0x2f;
0x000014ba str r2, [r3] | *(r3) = r2;
| }
0x000014bc ldr r3, [pc, 0x344] |
0x000014be add r3, pc | r3 = 0x2cc6;
0x000014c0 ldr r2, [r3] | r2 = *(0x2cc6);
0x000014c2 cmp r2, 0 |
| if (r2 < 0) {
0x000014c4 blt.w 0x16b4 | goto label_29;
| }
| if (r2 != 0) {
0x000014c8 beq 0x14d6 |
0x000014ca ldr r2, [pc, 0x33c] |
0x000014cc add r2, pc | r2 = 0x2cda;
0x000014ce ldr r3, [r2] | r3 = *(0x2cda);
0x000014d0 orr r3, r3, 8 | r3 |= 8;
0x000014d4 str r3, [r2] | *(r2) = r3;
| }
| label_6:
0x000014d6 ldr r3, [pc, 0x334] |
0x000014d8 add r3, pc | r3 = 0x2cea;
0x000014da ldr r0, [r3] | r0 = *(0x2cea);
0x000014dc blx 0x12b8 | pager_open ();
0x000014e0 ldr r3, [pc, 0x32c] | r3 = *(0x1810);
0x000014e2 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x000014e4 ldr.w sb, [r3] | sb = *(0x1810);
0x000014e8 cmp r8, sb |
| if (r8 <= sb) {
0x000014ea ble.w 0x1652 | goto label_30;
| }
0x000014ee ldr r3, [pc, 0x324] |
0x000014f0 add.w r6, fp, sb, lsl 2 | r6 = fp + (sb << 2);
0x000014f4 mov r7, r4 | r7 = r4;
0x000014f6 str r5, [sp, 0x1c] | *(arg_1ch) = r5;
0x000014f8 mov.w fp, 0 |
0x000014fc add r3, pc | r3 = 0x2d16;
0x000014fe adds r3, 7 | r3 += 7;
0x00001500 str r3, [sp, 0x14] | *(arg_14h) = r3;
0x00001502 ldr r3, [pc, 0x314] |
0x00001504 add r3, pc | r3 = 0x2d22;
0x00001506 str r3, [sp, 0x18] | *(arg_18h) = r3;
| label_1:
0x00001508 ldr r0, [r6] | r0 = *(r6);
0x0000150a blx 0x1138 | path_simplify ();
0x0000150e ldr r5, [r6], 4 | r5 = *(r6);
| r6 += 4;
0x00001512 cmp r5, 0 |
| if (r5 == 0) {
0x00001514 beq.w 0x1722 | goto label_31;
| }
0x00001516 strh r5, [r0, 8] | *((r0 + 8)) = r5;
0x00001518 ldrb r2, [r5] | r2 = *(r5);
0x0000151a cmp r2, 0x2f |
| if (r2 != 0x2f) {
0x0000151c bne.w 0x16c2 | goto label_32;
| }
0x00001520 ldr r4, [pc, 0x2f8] |
0x00001522 add r4, pc | r4 = 0x2d42;
0x00001524 b 0x1538 |
| while (r0 == 0) {
0x00001526 mov r0, r4 | r0 = r4;
0x00001528 blx 0x1258 | strlen (r0);
0x0000152c adds r0, 1 | r0++;
0x0000152e add r4, r0 | r4 += r0;
0x00001530 ldrb r3, [r4] | r3 = *(r4);
0x00001532 cmp r3, 0 |
| if (r3 == 0) {
0x00001534 beq.w 0x1684 | goto label_33;
| }
0x00001538 mov r1, r4 | r1 = r4;
0x0000153a mov r0, r5 | r0 = r5;
0x0000153c blx 0x10cc | r0 = startswith ();
0x00001540 mov sl, r0 | sl = r0;
0x00001542 cmp r0, 0 |
0x00001544 beq 0x1526 |
| }
0x00001546 ldr r1, [pc, 0x2d8] |
0x00001548 add r1, pc | r1 = 0x2d6e;
0x0000154a blx 0x1108 | strspn (r0, r1);
0x0000154e ldrb.w r2, [sl, r0] | r2 = *((sl + r0));
0x00001552 add r0, sl | r0 += sl;
0x00001554 cmp r2, 0 |
| if (r2 == 0) {
0x00001556 beq.w 0x16ce | goto label_34;
| }
0x0000155a mov r1, r4 | r1 = r4;
0x0000155c bl 0x19a0 | r0 = fcn_000019a0 (r0, r1, r2, r3);
0x00001560 mov r4, r0 | r4 = r0;
| label_7:
0x00001562 cmp r4, 0 |
| if (r4 >= 0) {
0x00001564 blt 0x156a |
| label_8:
0x00001566 add fp, r4 |
0x00001568 mov r4, r7 | r4 = r7;
| }
| label_5:
0x0000156a add.w sb, sb, 1 | sb++;
0x0000156e cmp r8, sb |
| if (r8 == sb) {
0x00001570 beq.w 0x1702 | goto label_35;
| }
0x00001574 mov r7, r4 | r7 = r4;
0x00001576 b 0x1508 | goto label_1;
| label_22:
0x00001578 orr r6, r6, 2 | r6 |= 2;
0x0000157c b 0x13de | goto label_0;
| label_23:
0x0000157e ldr r1, [pc, 0x2a4] |
0x00001580 mov r0, r4 | r0 = r4;
0x00001582 add r1, pc | r1 = 0x2dac;
0x00001584 blx 0x1270 | r0 = strcmp (r0, r1);
| if (r0 != 0) {
0x00001588 cbz r0, 0x15d0 |
0x0000158a ldr r1, [pc, 0x29c] |
0x0000158c mov r0, r4 | r0 = r4;
0x0000158e add r1, pc | r1 = "process_suffix_chop";
0x00001590 blx 0x1270 | r0 = strcmp (r0, "process_suffix_chop");
0x00001594 cmp r0, 0 |
| if (r0 != 0) {
0x00001596 bne 0x1630 | goto label_36;
| }
0x00001598 orr r6, r6, 0x10 | r6 |= 0x10;
0x0000159c b 0x13de | goto label_0;
| label_27:
0x0000159e ldr r3, [pc, 0x238] | r3 = *(0x17da);
0x000015a0 movs r2, 0 | r2 = 0;
0x000015a2 ldr r0, [pc, 0x288] |
0x000015a4 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x000015a6 add r0, pc | r0 = "help";
0x000015a8 ldr r1, [r3] | r1 = *(0x17da);
0x000015aa blx 0x1240 | r0 = parse_boolean_argument ();
0x000015ae cmp r0, 0 |
| if (r0 < 0) {
0x000015b0 blt 0x167a | goto label_37;
| }
0x000015b2 ldr r3, [pc, 0x27c] |
0x000015b4 add r3, pc | r3 = 0x2dea;
0x000015b6 str r0, [r3] | *(r3) = r0;
0x000015b8 b 0x137a | goto label_2;
| }
0x000015d0 orr r6, r6, 8 | r6 |= 8;
0x000015d4 b 0x13de | goto label_0;
| label_16:
0x000015d6 ldr r2, [pc, 0x268] |
0x000015d8 add r2, pc | r2 = 0x2e1e;
0x000015da ldr r3, [r2] | r3 = *(0x2e1e);
0x000015dc orr r3, r3, 1 | r3 |= 1;
0x000015e0 str r3, [r2] | *(r2) = r3;
0x000015e2 b 0x137a | goto label_2;
| label_18:
0x000015e4 ldr r1, [pc, 0x25c] |
0x000015e6 add r2, sp, 0x30 | r2 += ptr;
0x000015e8 ldr r0, [pc, 0x25c] |
0x000015ea str r7, [sp, 0x30] | *(ptr) = r7;
0x000015ec add r1, pc | r1 = 0x2e34;
0x000015ee add r0, pc | r0 = 0x2e3a;
0x000015f0 blx 0x11a4 | terminal_urlify_man ();
0x000015f2 ldcl p8, c2, [r8] | __asm ("ldcl p8, c2, [r8]");
| if (r0 < 0) {
0x000015f6 blt.w 0x173e | goto label_38;
| }
0x000015fa ldr r2, [pc, 0x250] |
0x000015fc movs r0, 1 | r0 = 1;
0x000015fe ldr r1, [pc, 0x250] |
0x00001600 ldr r3, [sp, 0x30] | r3 = *(ptr);
0x00001602 ldr r2, [r5, r2] | r2 = *((r5 + r2));
0x00001604 add r1, pc | r1 = 0x2e5a;
0x00001606 ldr r2, [r2] | r2 = *(0x184e);
0x00001608 blx 0x12f4 | printf_chk ()
0x0000160c ldr r0, [sp, 0x30] | r0 = *(ptr);
0x0000160e blx 0x1060 | free (r0);
| label_10:
0x00001612 movs r4, 0 | r4 = 0;
0x00001614 b 0x1444 | goto label_3;
| label_21:
0x00001616 mov r0, r4 | r0 = r4;
0x00001618 ldrd r8, fp, [sp, 0x20] | __asm ("ldrd r8, fp, [arg_20h]");
0x0000161c ldr r5, [sp, 0x1c] | r5 = *(arg_1ch);
0x0000161e blx 0x1060 | free (r0);
0x00001622 cmp r6, 0 |
| if (r6 < 0) {
0x00001624 blt.w 0x176e | goto label_39;
| }
0x00001628 ldr r3, [pc, 0x228] |
0x0000162a add r3, pc | r3 = 0x2e82;
0x0000162c str r6, [r3] | *(r3) = r6;
0x0000162e b 0x137a | goto label_2;
| label_36:
0x00001630 ldr r1, [pc, 0x224] |
0x00001632 mov r0, r4 | r0 = r4;
0x00001634 add r1, pc | r1 = 0x2e90;
0x00001636 blx 0x1270 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x0000163a cbz r0, 0x167e | goto label_40;
| }
0x0000163c ldr r1, [pc, 0x21c] |
0x0000163e mov r0, r4 | r0 = r4;
0x00001640 add r1, pc | r1 = 0x2ea0;
0x00001642 blx 0x1270 | r0 = strcmp (r0, r1);
0x00001646 cmp r0, 0 |
| if (r0 != 0) {
0x00001648 bne.w 0x1766 | goto label_20;
| }
0x0000164c orr r6, r6, 0x2f | r6 |= 0x2f;
0x00001650 b 0x13de | goto label_0;
| label_30:
0x00001652 ldr r6, [pc, 0x20c] |
0x00001654 mov.w fp, 0 |
0x00001656 lsrs r0, r0, 0xc | r0 >>= 0xc;
0x00001658 add r6, pc | r6 = 0x2ebe;
0x0000165a b 0x166e |
| while (r0 >= 0) {
0x0000165c add fp, r0 |
0x0000165e mov r0, r6 | r0 = r6;
0x00001660 blx 0x1258 | strlen (r0);
0x00001664 adds r0, 1 | r0++;
0x00001666 add r6, r0 | r6 += r0;
0x00001668 ldrb r3, [r6] | r3 = *(r6);
0x0000166a cmp r3, 0 |
| if (r3 == 0) {
0x0000166c beq 0x170a | goto label_41;
| }
0x0000166e movs r1, 0 | r1 = 0;
0x00001670 mov r0, r6 | r0 = r6;
0x00001672 bl 0x19a0 | r0 = fcn_000019a0 (r0, r1, r2, r3);
0x00001676 cmp r0, 0 |
0x00001678 bge 0x165c |
| }
| label_37:
0x0000167a mov r4, r0 | r4 = r0;
0x0000167c b 0x1438 | goto label_4;
| label_40:
0x0000167e orr r6, r6, 0x20 | r6 |= 0x20;
0x00001682 b 0x13de | goto label_0;
| label_33:
0x00001684 blx 0x10fc | r0 = log_get_max_level ();
0x00001688 cmp r0, 2 |
| if (r0 <= 2) {
0x0000168a ble 0x1760 | goto label_42;
| }
0x0000168c ldr r3, [sp, 0x18] | r3 = *(arg_18h);
0x0000168e movs r1, 0x16 | r1 = 0x16;
0x00001690 ldr r2, [sp, 0x14] | r2 = *(arg_14h);
0x00001692 movt r1, 0x4000 | r1 = (r1 & 0xFFFF) | 0x40000000;
0x00001696 movs r0, 3 | r0 = 3;
0x00001698 str r5, [sp, 8] | *(arg_8h) = r5;
0x0000169a str r3, [sp, 4] | var_4h = r3;
0x0000169c ldr r3, [pc, 0x1c4] |
0x0000169e add r3, pc | r3 = 0x2f06;
0x000016a0 str r3, [sp] | *(sp) = r3;
0x000016a2 movw r3, 0x201 | r3 = 0x201;
0x000016a6 blx 0x1180 | r0 = log_internal ();
0x000016aa subs r4, r0, 0 | r4 = r0 - 0;
0x000016ac it ge |
| if (r4 < r0) {
0x000016ae mvnge r4, 0x55 | r4 = ~0x55;
| }
0x000016b2 b 0x156a | goto label_5;
| label_29:
0x000016b4 ldr r2, [pc, 0x1b0] |
0x000016b6 add r2, pc |
0x000016b8 ldr r2, [r2] | r2 = *(0x2f22);
0x000016ba ubfx r2, r2, 3, 1 | r2 = (r2 >> 3) & ((1 << 1) - 1);
0x000016be str r2, [r3] | *(r3) = r2;
0x000016c0 b 0x14d6 | goto label_6;
| label_32:
0x000016c2 mov r0, r5 | r0 = r5;
0x000016c4 movs r1, 0 | r1 = 0;
0x000016c6 bl 0x19a0 | r0 = fcn_000019a0 (r0, r1, r2, r3);
0x000016ca mov r4, r0 | r4 = r0;
0x000016cc b 0x1562 | goto label_7;
| label_34:
0x000016ce ldr.w sl, [pc, 0x19c] |
0x000016d2 mov r4, r2 | r4 = r2;
0x000016d4 add sl, pc | sl = 0x2f46;
0x000016d6 b 0x16ee | goto label_43;
| label_9:
0x000016d8 add r4, r0 | r4 += r0;
0x000016da mov r0, sl | r0 = sl;
0x000016dc blx 0x1258 | strlen (r0);
0x000016e0 adds r0, 1 | r0++;
0x000016e2 add sl, r0 | sl += r0;
0x000016e4 ldrb.w r3, [sl] | r3 = *(sl);
0x000016e8 cmp r3, 0 |
| if (r3 == 0) {
0x000016ea beq.w 0x1566 | goto label_8;
| }
| label_43:
0x000016ee mov r1, r5 | r1 = r5;
0x000016f0 mov r0, sl | r0 = sl;
0x000016f2 bl 0x19a0 | r0 = fcn_000019a0 (r0, r1, r2, r3);
0x000016f6 cmp r0, 0 |
| if (r0 >= 0) {
0x000016f8 bge 0x16d8 | goto label_9;
| }
0x000016fa mov r4, r0 | r4 = r0;
0x000016fc b 0x156a | goto label_5;
| if (r0 == 0) {
| label_28:
0x000016fe beq 0x1612 | goto label_10;
| }
0x00001700 b 0x1438 | goto label_4;
| label_35:
0x00001702 cmp r4, 0 |
0x00001704 ldr r5, [sp, 0x1c] | r5 = *(arg_1ch);
| if (r4 < 0) {
0x00001706 blt.w 0x1438 | goto label_4;
| }
| label_41:
0x0000170a cmp.w fp, 0 |
| if (fp == 0) {
0x0000170e beq 0x1738 | goto label_44;
| }
0x00001710 ldr r2, [pc, 0x15c] |
0x00001712 add r2, pc | r2 = 0x2f86;
| do {
0x00001714 ldr r1, [pc, 0x15c] |
0x00001716 mov r3, fp | r3 = fp;
0x00001718 movs r0, 1 | r0 = 1;
0x0000171a add r1, pc | r1 = 0x2f92;
0x0000171c blx 0x12f4 | printf_chk ()
0x00001720 b 0x1444 | goto label_3;
| label_31:
0x00001722 ldr r1, [pc, 0x154] |
0x00001724 mov.w r2, 0x1ee | r2 = 0x1ee;
0x00001728 ldr r3, [pc, 0x150] |
0x0000172a ldr r0, [pc, 0x154] |
0x0000172c add r1, pc | r1 = 0x2faa;
0x0000172e add r3, pc | r3 = 0x2fae;
0x00001730 adds r1, 7 | r1 += 7;
0x00001732 add r0, pc | r0 = 0x2fb8;
0x00001734 blx 0x1048 | log_assert_failed ();
| label_44:
0x00001738 ldr r2, [pc, 0x148] |
0x0000173a add r2, pc | r2 = 0x2fc2;
0x0000173c b 0x1714 |
| } while (1);
| label_38:
0x0000173e ldr r1, [pc, 0x148] |
0x00001740 movw r2, 0x20b | r2 = 0x20b;
0x00001744 ldr r3, [pc, 0x144] |
0x00001746 movs r0, 3 | r0 = 3;
0x00001748 add r1, pc | r1 = 0x2fd6;
0x0000174a add r3, pc | r3 = 0x2fda;
0x0000174c adds r1, 7 | r1 += 7;
0x0000174e blx 0x130c | r0 = log_oom_internal ();
0x00001752 mov r4, r0 | r4 = r0;
0x00001754 ldr r0, [sp, 0x30] | r0 = *(ptr);
0x00001756 blx 0x1060 | free (r0);
0x0000175a b 0x14aa | goto label_11;
| label_15:
0x0000175c movs r4, 1 | r4 = 1;
0x0000175e b 0x14b0 | goto label_12;
| label_42:
0x00001760 mvn r4, 0x15 | r4 = ~0x15;
0x00001764 b 0x156a | goto label_5;
| label_20:
0x00001766 ldr r0, [sp, 0x30] | r0 = *(ptr);
0x00001768 ldr r5, [sp, 0x1c] | r5 = *(arg_1ch);
0x0000176a blx 0x1060 | r0 = free (r0);
| label_39:
0x0000176e blx 0x10fc | r0 = log_get_max_level ();
0x00001772 cmp r0, 2 |
| if (r0 <= 2) {
0x00001774 ble.w 0x1434 | goto label_13;
| }
0x00001778 ldr r2, [pc, 0x114] |
0x0000177a movs r1, 0x16 | r1 = 0x16;
0x0000177c ldr r4, [pc, 0x114] |
0x0000177e movw r3, 0x261 | r3 = 0x261;
0x00001782 ldr r0, [pc, 0x114] |
0x00001784 movt r1, 0x4000 | r1 = (r1 & 0xFFFF) | 0x40000000;
0x00001788 add r2, pc | r2 = 0x301c;
0x0000178a add r4, pc | r4 = 0x3022;
0x0000178c adds r2, 7 | r2 += 7;
0x0000178e add r0, pc | r0 = 0x302c;
0x00001790 strd r0, r4, [sp] | __asm ("strd r0, r4, [sp]");
0x00001794 movs r0, 3 | r0 = 3;
0x00001796 blx 0x1180 | r0 = log_internal ();
0x0000179a subs r4, r0, 0 | r4 = r0 - 0;
0x0000179c it ge |
| if (r4 < r0) {
0x0000179e mvnge r4, 0x55 | r4 = ~0x55;
| }
0x000017a2 b 0x1438 | goto label_4;
| label_24:
0x000017a4 ldr r0, [pc, 0xf4] |
0x000017a6 movw r1, 0x272 | r1 = 0x272;
0x000017aa ldr r2, [pc, 0xf4] |
0x000017ac add r0, pc | r0 = 0x304c;
0x000017ae add r2, pc | r2 = 0x3054;
0x000017b0 adds r0, 7 | r0 += 7;
0x000017b2 blx 0x1294 | log_assert_failed_unreachable ();
| label_26:
0x000017b6 blx 0x1198 | stack_chk_fail ();
0x000017ba nop |
0x000017bc cmp r3, 0x88 |
0x000017be movs r0, r0 |
0x000017c0 lsls r4, r2, 4 | r4 = r2 << 4;
0x000017c2 movs r0, r0 |
0x000017c4 cmp r3, 0x7e |
0x000017c6 movs r0, r0 |
0x000017c8 lsls r0, r5, 4 | r0 = r5 << 4;
0x000017ca movs r0, r0 |
0x000017cc lsls r4, r3, 4 | r4 = r3 << 4;
0x000017ce movs r0, r0 |
0x000017d0 cmp r1, 0xce |
0x000017d2 movs r0, r0 |
0x000017d4 adds r6, r5, r5 | r6 = r5 + r5;
0x000017d6 movs r0, r0 |
0x000017d8 lsls r4, r4, 4 | r4 <<= 4;
0x000017da movs r0, r0 |
0x000017dc adds r6, r7, r2 | r6 = r7 + r2;
0x000017de movs r0, r0 |
0x000017e0 adds r2, r5, r2 | r2 = r5 + r2;
0x000017e2 movs r0, r0 |
0x000017e4 cmp r4, 0x3c |
0x000017e6 movs r0, r0 |
0x000017e8 adds r0, r3, r2 | r0 = r3 + r2;
0x000017ea movs r0, r0 |
0x000017ec adds r4, r4, r1 | r4 += r1;
0x000017ee movs r0, r0 |
0x000017f0 adds r2, r7, r3 | r2 = r7 + r3;
0x000017f2 movs r0, r0 |
0x000017f4 lsls r4, r5, 4 | r4 = r5 << 4;
0x000017f6 movs r0, r0 |
0x000017f8 lsls r0, r6, 4 | r0 = r6 << 4;
0x000017fa movs r0, r0 |
0x000017fc cmp r2, 0x36 |
0x000017fe movs r0, r0 |
0x00001800 cmp r3, 0x56 |
0x00001802 movs r0, r0 |
0x00001804 cmp r3, 0x42 |
0x00001806 movs r0, r0 |
0x00001808 cmp r3, 0x3c |
0x0000180a movs r0, r0 |
0x0000180c cmp r3, 0x34 |
0x0000180e movs r0, r0 |
0x00001810 lsls r0, r3, 4 | r0 = r3 << 4;
0x00001812 movs r0, r0 |
0x00001814 asrs r4, r0, 0xf | r4 = r0 >> 0xf;
0x00001816 movs r0, r0 |
0x00001818 asrs r4, r4, 0x1f | r4 >>= 0x1f;
0x0000181a movs r0, r0 |
0x0000181c adds r2, r5, r6 | r2 = r5 + r6;
0x0000181e movs r0, r0 |
0x00001820 asrs r4, r6, 0xe | r4 = r6 >> 0xe;
0x00001822 movs r0, r0 |
0x00001824 asrs r2, r1, 0x1c | r2 = r1 >> 0x1c;
0x00001826 movs r0, r0 |
0x00001828 asrs r2, r1, 0x1c | r2 = r1 >> 0x1c;
0x0000182a movs r0, r0 |
0x0000182c asrs r2, r6, 0x1c | r2 = r6 >> 0x1c;
0x0000182e movs r0, r0 |
0x00001830 cmp r2, 0x4c |
0x00001832 movs r0, r0 |
0x00001834 asrs r4, r7, 0xb | r4 = r7 >> 0xb;
0x00001836 movs r0, r0 |
0x00001838 adds r2, r1, r1 | r2 = r1 + r1;
0x0000183a movs r0, r0 |
0x0000183c asrs r2, r0, 0x14 | r2 = r0 >> 0x14;
0x0000183e movs r0, r0 |
0x00001840 cmp r2, 0x34 |
0x00001842 movs r0, r0 |
0x00001844 asrs r0, r0, 0x14 | r0 >>= 0x14;
0x00001846 movs r0, r0 |
0x00001848 asrs r2, r0, 0x14 | r2 = r0 >> 0x14;
0x0000184a movs r0, r0 |
0x0000184c lsls r4, r7, 4 | r4 = r7 << 4;
0x0000184e movs r0, r0 |
0x00001850 asrs r4, r7, 0x13 | r4 = r7 >> 0x13;
0x00001852 movs r0, r0 |
0x00001854 cmp r1, 0xde |
0x00001856 movs r0, r0 |
0x00001858 asrs r0, r6, 0x19 | r0 = r6 >> 0x19;
0x0000185a movs r0, r0 |
0x0000185c asrs r0, r6, 0x19 | r0 = r6 >> 0x19;
0x0000185e movs r0, r0 |
0x00001860 asrs r4, r4, 0x1f | r4 >>= 0x1f;
0x00001862 movs r0, r0 |
0x00001864 asrs r6, r0, 0x1c | r6 = r0 >> 0x1c;
0x00001866 movs r0, r0 |
0x00001868 cmp r1, 0x52 |
0x0000186a movs r0, r0 |
0x0000186c asrs r0, r5, 0x1d | r0 = r5 >> 0x1d;
0x0000186e movs r0, r0 |
0x00001870 asrs r2, r2, 0x15 | r2 >>= 0x15;
0x00001872 movs r0, r0 |
0x00001874 asrs r2, r6, 0x17 | r2 = r6 >> 0x17;
0x00001876 movs r0, r0 |
0x00001878 asrs r4, r2, 6 | r4 = r2 >> 6;
0x0000187a movs r0, r0 |
0x0000187c asrs r2, r1, 0x1a | r2 = r1 >> 0x1a;
0x0000187e movs r0, r0 |
0x00001880 asrs r2, r6, 0x16 | r2 = r6 >> 0x16;
0x00001882 movs r0, r0 |
0x00001884 asrs r6, r1, 0xb | r6 = r1 >> 0xb;
0x00001886 movs r0, r0 |
0x00001888 asrs r0, r7, 5 | r0 = r7 >> 5;
0x0000188a movs r0, r0 |
0x0000188c asrs r2, r0, 0x1a | r2 = r0 >> 0x1a;
0x0000188e movs r0, r0 |
0x00001890 asrs r0, r7, 4 | r0 = r7 >> 4;
0x00001892 movs r0, r0 |
0x00001894 asrs r6, r5, 0x14 | r6 = r5 >> 0x14;
0x00001896 movs r0, r0 |
0x00001898 asrs r2, r5, 0x19 | r2 = r5 >> 0x19;
0x0000189a movs r0, r0 |
0x0000189c asrs r4, r2, 4 | r4 = r2 >> 4;
0x0000189e movs r0, r0 |
0x000018a0 asrs r6, r2, 0x19 | r6 = r2 >> 0x19;
0x000018a2 movs r0, r0 |
0x000018d8 adds r0, 0x14 | r0 += 0x14;
0x000018da b 0x141c | goto label_14;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/systemd-delta @ 0x19a0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000019a0 () | void fcn_000019a0 (FILE * stream, int16_t arg_2h, char * arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_20h;
| char * s1;
| 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;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_74h;
| void * ptr;
| int16_t var_7ch;
| int16_t var_80h;
| void * var_84h;
| void * var_88h;
| int16_t var_8ch;
| int16_t var_90h;
| void * var_94h;
| int32_t var_94h_2;
| int16_t var_9ch;
| r0 = arg1;
| r1 = arg2;
0x000019a0 ldr.w r3, [pc, 0xc7c] |
0x000019a4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000019a8 sub sp, 0xa4 |
0x000019aa ldr.w r2, [pc, 0xc78] |
0x000019ae add r3, pc | r3 = 0x3fd2;
0x000019b0 str r3, [sp, 0x38] | var_38h = r3;
0x000019b2 ldr.w r3, [pc, 0xc74] | r3 = *(0x262a);
0x000019b6 add r2, pc | r2 = 0x3fe0;
0x000019b8 str r1, [sp, 0x48] | var_48h = r1;
0x000019ba str r0, [sp, 0x24] | s1 = r0;
0x000019bc ldr r3, [r2, r3] |
0x000019be ldr r3, [r3] | r3 = *(0x3fe0);
0x000019c0 str r3, [sp, 0x9c] | var_9ch = r3;
0x000019c2 mov.w r3, 0 | r3 = 0;
0x000019c6 cmp r0, 0 |
| if (stream == ) {
0x000019c8 beq.w 0x20c0 | goto label_43;
| }
0x000019cc ldr.w r1, [pc, 0xc5c] |
0x000019d0 add r1, pc | r1 = .data;
0x000019d2 blx 0x10cc | r0 = startswith ();
0x000019d6 cmp r0, 0 |
| if (r0 != 0) {
0x000019d8 bne.w 0x20dc | goto label_44;
| }
0x000019dc ldr.w r1, [pc, 0xc50] |
0x000019e0 ldr r0, [sp, 0x24] | r0 = s1;
0x000019e2 add r1, pc | r1 = 0x4016;
0x000019e4 blx 0x11e0 | r0 = strstr (r0, r1);
0x000019e8 cmp r0, 0 |
| if (r0 != 0) {
0x000019ea bne.w 0x20f8 | goto label_45;
| }
0x000019ee ldr.w r0, [pc, 0xc44] |
0x000019f2 ldr r1, [sp, 0x24] | r1 = s1;
0x000019f4 add r0, pc | r0 = 0x402e;
0x000019f6 blx 0x121c | nulstr_get ();
0x000019fa ldr r2, [sp, 0x38] | r2 = var_38h;
0x000019fc mov r5, r0 | r5 = r0;
0x000019fe ldr.w r3, [pc, 0xc38] | r3 = *(0x263a);
0x00001a02 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00001a04 mov r4, r3 | r4 = r3;
0x00001a06 mov r0, r3 | r0 = r3;
0x00001a08 str r3, [sp, 0x40] | var_40h = r3;
0x00001a0a blx 0x1168 | r0 = ordered_hashmap_new ();
0x00001a0e mov r7, r0 | r7 = r0;
0x00001a10 str r0, [sp, 0x28] | var_28h = r0;
0x00001a12 mov r0, r4 | r0 = r4;
0x00001a14 blx 0x1168 | ordered_hashmap_new ();
0x00001a16 sub.w r6, r8, r6, lsl 16 | r6 = r8 - (r6 << 16);
0x00001a1a str r0, [sp, 0x3c] | var_3ch = r0;
0x00001a1c mov r0, r4 | r0 = r4;
0x00001a1e blx 0x1168 | ordered_hashmap_new ();
0x00001a22 cmp r6, 0 |
0x00001a24 it ne |
| if (r6 != 0) {
0x00001a26 cmpne r7, 0 | __asm ("cmpne r7, 0");
| }
0x00001a28 mov r3, r7 | r3 = r7;
0x00001a2a ite eq |
| if (r6 != 0) {
0x00001a2c moveq r3, 1 | r3 = 1;
| }
| if (r6 == 0) {
0x00001a2e movne r3, 0 | r3 = 0;
| }
0x00001a30 cmp r0, 0 |
0x00001a32 it eq |
| if (r0 != 0) {
0x00001a34 orreq r3, r3, 1 | r3 |= 1;
| }
0x00001a38 str r0, [sp, 0x20] | var_20h = r0;
0x00001a3a cmp r3, 0 |
| if (r3 != 0) {
0x00001a3c bne.w 0x1ca2 | goto label_46;
| }
0x00001a40 ldr.w r2, [pc, 0xbf8] |
0x00001a44 str r3, [sp, 0x30] | var_30h = r3;
0x00001a46 ldr.w r3, [pc, 0xbf8] |
0x00001a4a add r2, pc | r2 = 0x408a;
0x00001a4c str r5, [sp, 0x58] | var_58h = r5;
0x00001a4e str r2, [sp, 0x34] | var_34h = r2;
0x00001a50 add r3, pc | r3 = 0x4096;
0x00001a52 ldr.w r2, [pc, 0xbf0] |
0x00001a56 adds r3, 7 | r3 += 7;
0x00001a58 str r3, [sp, 0x50] | var_50h = r3;
0x00001a5a ldr.w r3, [pc, 0xbec] |
0x00001a5e add r2, pc | r2 = 0x40a8;
0x00001a60 str r2, [sp, 0x5c] | var_5ch = r2;
0x00001a62 ldr.w r2, [pc, 0xbe8] |
0x00001a66 add r3, pc | r3 = 0x40b4;
0x00001a68 mov sl, r3 | sl = r3;
0x00001a6a add r2, pc | r2 = 0x40bc;
0x00001a6c str r2, [sp, 0x54] | var_54h = r2;
| label_0:
0x00001a6e ldr r2, [sp, 0x24] | r2 = s1;
0x00001a70 mov.w r3, -1 | r3 = -1;
0x00001a74 mov r1, sl | r1 = sl;
0x00001a76 movs r0, 0 | r0 = 0;
0x00001a78 blx 0x11ec | r0 = path_extend_internal ();
0x00001a7c mov r7, r0 | r7 = r0;
0x00001a7e cmp r0, 0 |
| if (r0 == 0) {
0x00001a80 beq.w 0x1ca2 | goto label_46;
| }
0x00001a84 movs r4, 0 | r4 = 0;
0x00001a86 strd r4, r4, [sp, 0x88] | __asm ("strd r4, r4, [var_8ch]");
0x00001a8a blx 0x10fc | r0 = log_get_max_level ();
0x00001a8e cmp r0, 6 |
| if (r0 > 6) {
0x00001a90 bgt.w 0x205c | goto label_47;
| }
| label_15:
0x00001a94 mov r0, r7 | r0 = r7;
0x00001a96 blx 0x1114 | r0 = opendir ();
0x00001a9a mov r4, r0 | r4 = r0;
0x00001a9c cmp r0, 0 |
| if (r0 == 0) {
0x00001a9e beq.w 0x27d4 | goto label_48;
| }
0x00001aa2 blx 0x1210 | r0 = readdir_ensure_type ();
0x00001aa6 cmp r0, 0 |
| if (r0 == 0) {
0x00001aa8 beq 0x1b18 | goto label_49;
| }
0x00001aaa ldr r5, [sp, 0x58] | r5 = var_58h;
0x00001aac mov.w fp, 0 |
0x00001ab0 add.w r8, sp, 0x8c | r8 += var_8ch;
0x00001ab4 str r7, [sp, 0x2c] | var_2ch = r7;
0x00001ab6 mov r6, fp | r6 = fp;
0x00001ab8 mov r7, r0 | r7 = r0;
0x00001aba mov sb, r8 | sb = r8;
0x00001abc str.w sl, [sp, 0x44] | __asm ("str.w sl, [var_44h]");
| if (r5 != 0) {
| do {
0x00001ac0 cbz r5, 0x1ace |
0x00001ac2 ldrb.w sl, [r7, 0x12] | sl = *((r7 + 0x12));
0x00001ac6 cmp.w sl, 4 |
| if (sl == 4) {
0x00001aca beq.w 0x1d44 | goto label_50;
| }
| }
| label_5:
0x00001ace mov r0, r7 | r0 = r7;
0x00001ad0 blx 0x1054 | r0 = dirent_is_file ();
| if (r0 != 0) {
0x00001ad4 cbz r0, 0x1b06 |
0x00001ad6 movs r2, 4 | r2 = 4;
0x00001ad8 add.w r1, fp, 2 | r1 += arg_2h;
0x00001adc add r0, sp, 0x88 | r0 += var_88h;
0x00001ade blx 0x1144 | r0 = greedy_realloc0 ();
0x00001ae2 cmp r0, 0 |
| if (r0 == 0) {
0x00001ae4 beq.w 0x1d80 | goto label_51;
| }
0x00001ae8 add.w r0, r7, 0x13 | r0 = r7 + 0x13;
0x00001aec ldr r7, [sp, 0x88] | r7 = var_88h;
0x00001aee blx 0x12e8 | strdup (r0);
0x00001af2 str.w r0, [r7, fp, lsl 2] | __asm ("str.w r0, [r7, fp, lsl 2]");
0x00001af6 ldr r3, [sp, 0x88] | r3 = var_88h;
0x00001af8 ldr.w r3, [r3, fp, lsl 2] | offset_0 = fp << 2;
| r3 = *((r3 + offset_0));
0x00001afc cmp r3, 0 |
| if (r3 == 0) {
0x00001afe beq.w 0x1d80 | goto label_51;
| }
0x00001b02 add.w fp, fp, 1 |
| }
0x00001b06 mov r0, r4 | r0 = r4;
0x00001b08 blx 0x1210 | r0 = readdir_ensure_type ();
0x00001b0c mov r7, r0 | r7 = r0;
0x00001b0e cmp r0, 0 |
0x00001b10 bne 0x1ac0 |
| } while (r0 != 0);
0x00001b12 ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x00001b14 ldr.w sl, [sp, 0x44] | sl = var_44h;
0x00001b16 adr r0, 0x110 | r0 = 0x110;
| label_49:
0x00001b18 blx 0x127c | r0 = errno_location ();
0x00001b1c ldr r3, [r0] | r3 = *(r0);
0x00001b1e ldr r0, [sp, 0x8c] | r0 = var_8ch;
0x00001b20 cmp r3, 0 |
| if (r3 <= 0) {
0x00001b22 ble.w 0x1d9c | goto label_52;
| }
0x00001b26 rsbs r3, r3, 0 | r3 -= ;
0x00001b28 cmp r0, 0 |
| if (r0 == 0) {
0x00001b2a beq.w 0x1d92 | goto label_14;
| }
| label_6:
0x00001b2e str r3, [sp, 0x2c] | var_2ch = r3;
0x00001b30 blx 0x12ac | strv_free ();
0x00001b34 str r0, [sp, 0x8c] | var_8ch = r0;
0x00001b36 ldr r0, [sp, 0x88] | r0 = var_88h;
0x00001b38 ldr r3, [sp, 0x2c] | r3 = var_2ch;
| if (r0 != 0) {
0x00001b3a cbz r0, 0x1b46 |
| label_7:
0x00001b3c str r3, [sp, 0x2c] | var_2ch = r3;
0x00001b3e blx 0x12ac | strv_free ();
0x00001b42 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00001b44 str r0, [sp, 0x88] | var_88h = r0;
| }
| label_8:
0x00001b46 mov r0, r4 | r0 = r4;
0x00001b48 str r3, [sp, 0x2c] | var_2ch = r3;
0x00001b4a blx 0x1084 | closedir ();
0x00001b4e ldr r3, [sp, 0x2c] | r3 = var_2ch;
| label_39:
0x00001b50 ldr r1, [sp, 0x30] | r1 = var_30h;
0x00001b52 mov r0, r7 | r0 = r7;
0x00001b54 mov r2, r1 | r2 = r1;
0x00001b56 cmp r1, 0 |
0x00001b58 it eq |
| if (r1 != 0) {
0x00001b5a moveq r2, r3 | r2 = r3;
| }
0x00001b5c str r2, [sp, 0x30] | var_30h = r2;
0x00001b5e blx 0x1060 | free (r0);
0x00001b62 mov r0, sl | r0 = sl;
0x00001b64 blx 0x1258 | strlen (r0);
0x00001b68 adds r0, 1 | r0++;
0x00001b6a add sl, r0 | sl += r0;
0x00001b6c ldrb.w r3, [sl] | r3 = *(sl);
0x00001b70 cmp r3, 0 |
| if (r3 != 0) {
0x00001b72 bne.w 0x1a6e | goto label_0;
| }
0x00001b76 mov r8, r3 | r8 = r3;
0x00001b78 str r3, [sp, 0x90] | var_90h = r3;
0x00001b7a mvn r3, 1 | r3 = ~1;
0x00001b7e add r4, sp, 0x78 | r4 += ptr;
0x00001b80 str r3, [sp, 0x8c] | var_8ch = r3;
0x00001b82 mov sl, r4 | sl = r4;
0x00001b84 ldr.w r3, [pc, 0xac8] |
0x00001b88 ldr.w r6, [pc, 0xac8] |
0x00001b8c ldr r4, [sp, 0x48] | r4 = var_48h;
0x00001b8e add r3, pc | r3 = 0x41e2;
0x00001b90 str r3, [sp, 0x4c] | var_4ch = r3;
0x00001b92 add r6, pc | r6 = 0x41ea;
0x00001b94 ldr.w r3, [pc, 0xac0] |
0x00001b98 add r3, pc | r3 = 0x41f4;
0x00001b9a str r3, [sp, 0x2c] | var_2ch = r3;
0x00001b9c ldr.w r3, [pc, 0xabc] |
0x00001ba0 add r3, pc | r3 = 0x4200;
0x00001ba2 str r3, [sp, 0x34] | var_34h = r3;
0x00001ba4 add r3, sp, 0x8c | r3 += var_8ch;
0x00001ba6 str r3, [sp, 0x44] | var_44h = r3;
0x00001ba8 add r3, sp, 0x74 | r3 += var_74h;
0x00001baa str r3, [sp, 0x40] | var_40h = r3;
| do {
| label_20:
0x00001bac ldrd r2, r1, [sp, 0x40] | __asm ("ldrd r2, r1, [var_44h]");
0x00001bb0 mov r3, sl | r3 = sl;
0x00001bb2 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00001bb4 blx 0x1024 | r0 = hashmap_iterate ();
0x00001bb8 cmp r0, 0 |
| if (r0 == 0) {
0x00001bba beq.w 0x2540 | goto label_53;
| }
0x00001bbe ldr r1, [sp, 0x78] | r1 = ptr;
0x00001bc0 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x00001bc2 blx 0x10e4 | r0 = hashmap_get ();
0x00001bc6 mov r7, r0 | r7 = r0;
0x00001bc8 str r0, [sp, 0x80] | var_80h = r0;
0x00001bca cmp r0, 0 |
| if (r0 == 0) {
0x00001bcc beq.w 0x2404 | goto label_54;
| }
| if (r4 != 0) {
0x00001bd0 cbz r4, 0x1bda |
0x00001bd2 mov r1, r4 | r1 = r4;
0x00001bd4 blx 0x10cc | r0 = startswith ();
| if (r0 == 0) {
0x00001bd8 cbz r0, 0x1c00 | goto label_21;
| }
| }
0x00001bda ldr r5, [sp, 0x74] | r5 = var_74h;
0x00001bdc mov r0, r7 | r0 = r7;
0x00001bde mov r1, r5 | r1 = r5;
0x00001be0 blx 0x10d8 | r0 = path_compare ();
0x00001be4 cmp r0, 0 |
| if (r0 != 0) {
0x00001be6 bne.w 0x215c | goto label_55;
| }
0x00001bea ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00001bec ldr r3, [r3] | r3 = *(r3);
0x00001bee lsls r0, r3, 0x1b | r0 = r3 << 0x1b;
| if (r0 < r3) {
0x00001bf0 bpl 0x1c00 |
0x00001bf2 ldr.w r1, [pc, 0xa6c] |
0x00001bf6 mov r2, r5 | r2 = r5;
0x00001bf8 movs r0, 1 | r0 = 1;
0x00001bfa add r1, pc | r1 = 0x4260;
0x00001bfc blx 0x12f4 | printf_chk ()
| }
| label_21:
0x00001c00 ldr r1, [sp, 0x78] | r1 = ptr;
0x00001c02 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00001c04 blx 0x10e4 | hashmap_get ();
0x00001c08 str r0, [sp, 0x7c] | var_7ch = r0;
0x00001c0a cmp r0, 0 |
0x00001c0c beq 0x1bac |
| } while (r0 == 0);
0x00001c0e mvn r5, 1 | r5 = ~1;
0x00001c12 movs r3, 0 | r3 = 0;
0x00001c14 add.w sb, sp, 0x94 | sb += var_94h;
0x00001c16 lsrs r4, r2, 6 | r4 = r2 >> 6;
0x00001c18 add r7, sp, 0x80 | r7 += var_80h;
0x00001c1a strd r5, r3, [sp, 0x94] | __asm ("strd r5, r3, [var_94h]");
0x00001c1e str.w sl, [sp, 0x48] | __asm ("str.w sl, [var_48h]");
0x00001c22 b 0x1c5a | goto label_56;
| label_2:
0x00001c24 ldr.w sl, [pc, 0xa3c] |
0x00001c28 add sl, pc | sl = 0x4290;
0x00001c2a blx 0x1078 | r0 = get_color_mode ();
0x00001c2e cmp r0, 0 |
| if (r0 == 0) {
0x00001c30 beq 0x1c9a | goto label_57;
| }
| label_3:
0x00001c32 ldr.w fp, [pc, 0xa34] |
0x00001c36 add fp, pc | fp = 0x42a4;
| label_4:
0x00001c38 movs r0, 0xf | r0 = 0xf;
0x00001c3a add.w r8, r8, 1 | r8++;
0x00001c3e blx 0x11d4 | special_glyph ();
0x00001c42 ldr r3, [sp, 0x24] | r3 = s1;
0x00001c44 mov r2, sl | r2 = sl;
0x00001c46 strd r0, r5, [sp, 8] | __asm ("strd r0, r5, [var_8h]");
0x00001c4a movs r0, 1 | r0 = 1;
0x00001c4c ldr r1, [sp, 0x34] | r1 = var_34h;
0x00001c4e strd fp, r3, [sp] | __asm ("strd fp, r3, [sp]");
0x00001c52 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00001c54 blx 0x12f4 | printf_chk ()
| do {
| label_1:
0x00001c58 ldr r0, [sp, 0x7c] | r0 = var_7ch;
| label_56:
0x00001c5a movs r3, 0 | r3 = 0;
0x00001c5c mov r2, r7 | r2 = r7;
0x00001c5e mov r1, sb | r1 = sb;
0x00001c60 blx 0x1024 | r0 = hashmap_iterate ();
0x00001c64 cmp r0, 0 |
| if (r0 == 0) {
0x00001c66 beq.w 0x2156 | goto label_58;
| }
0x00001c6a ldr r5, [sp, 0x80] | r5 = var_80h;
| if (r4 == 0) {
0x00001c6c cbz r4, 0x1c7a | goto label_59;
| }
0x00001c6e mov r1, r4 | r1 = r4;
0x00001c70 mov r0, r5 | r0 = r5;
0x00001c72 blx 0x10cc | r0 = startswith ();
0x00001c76 cmp r0, 0 |
0x00001c78 beq 0x1c58 |
| } while (r0 == 0);
| label_59:
0x00001c7a ldr r3, [r6] | r3 = *(r6);
0x00001c7c lsls r1, r3, 0x1a | r1 = r3 << 0x1a;
| if (r1 >= r3) {
0x00001c7e bpl 0x1c58 | goto label_1;
| }
0x00001c80 ldr r3, [sp, 0x74] | r3 = var_74h;
0x00001c82 str r3, [sp, 0x24] | s1 = r3;
0x00001c84 blx 0x1078 | r0 = get_color_mode ();
0x00001c88 cmp r0, 0 |
| if (r0 != 0) {
0x00001c8a bne 0x1c24 | goto label_2;
| }
0x00001c8c ldr.w sl, [pc, 0x9dc] |
0x00001c90 add sl, pc | sl = 0x4300;
0x00001c92 blx 0x1078 | r0 = get_color_mode ();
0x00001c96 cmp r0, 0 |
| if (r0 != 0) {
0x00001c98 bne 0x1c32 | goto label_3;
| }
| label_57:
0x00001c9a ldr.w fp, [pc, 0x9d4] |
0x00001c9e add fp, pc | fp = 0x4314;
0x00001ca0 b 0x1c38 | goto label_4;
| label_46:
0x00001ca2 mov.w r8, 0 | r8 = 0;
0x00001ca6 add r4, sp, 0x78 | r4 += ptr;
0x00001ca8 mvn r3, 0xb | r3 = ~0xb;
0x00001cac str r3, [sp, 0x30] | var_30h = r3;
| label_27:
0x00001cae ldr.w r3, [pc, 0x9c4] | r3 = *(0x2676);
0x00001cb2 movs r1, 0 | r1 = 0;
0x00001cb4 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00001cb6 add r7, sp, 0x94 | r7 += var_94h;
0x00001cb8 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00001cba add r6, sp, 0x7c | r6 += var_7ch;
0x00001cbc ldr r5, [r2, r3] | r5 = *((r2 + r3));
0x00001cbe mov r2, r5 | r2 = r5;
0x00001cc0 blx 0x11b0 | hashmap_free ();
0x00001cc4 mov r2, r5 | r2 = r5;
0x00001cc6 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x00001cc8 movs r1, 0 | r1 = 0;
0x00001cca blx 0x11b0 | hashmap_free ();
0x00001cce mvn r2, 1 | r2 = ~1;
0x00001cd2 movs r3, 0 | r3 = 0;
0x00001cd4 ldr.w sb, [sp, 0x20] | sb = var_20h;
0x00001cd8 strd r2, r3, [sp, 0x94] | __asm ("strd r2, r3, [var_94h]");
0x00001cdc b 0x1cfc |
| while (r0 != 0) {
0x00001cde ldr r1, [sp, 0x78] | r1 = ptr;
0x00001ce0 mov r0, sb | r0 = sb;
0x00001ce2 blx 0x12dc | hashmap_remove ();
0x00001ce6 mov r2, r5 | r2 = r5;
0x00001ce8 movs r1, 0 | r1 = 0;
0x00001cea blx 0x11b0 | hashmap_free ();
0x00001cee ldr r1, [sp, 0x78] | r1 = ptr;
0x00001cf0 mov r0, sb | r0 = sb;
0x00001cf2 blx 0x12dc | hashmap_remove ();
0x00001cf6 ldr r0, [sp, 0x78] | r0 = ptr;
0x00001cf8 blx 0x1060 | free (r0);
0x00001cfc mov r3, r4 | r3 = r4;
0x00001cfe mov r2, r6 | r2 = r6;
0x00001d00 mov r1, r7 | r1 = r7;
0x00001d02 mov r0, sb | r0 = sb;
0x00001d04 blx 0x1024 | r0 = hashmap_iterate ();
0x00001d08 cmp r0, 0 |
0x00001d0a bne 0x1cde |
| }
0x00001d0c ldr r2, [sp, 0x30] | r2 = var_30h;
0x00001d0e mov r1, r0 | r1 = r0;
0x00001d10 mov r3, r2 | r3 = r2;
0x00001d12 cmp r2, 0 |
0x00001d14 it eq |
| if (r2 != 0) {
0x00001d16 moveq r3, r8 | r3 = r8;
| }
0x00001d18 mov r2, r0 | r2 = r0;
0x00001d1a ldr r0, [sp, 0x20] | r0 = var_20h;
0x00001d1c str r3, [sp, 0x30] | var_30h = r3;
0x00001d1e blx 0x11b0 | hashmap_free ();
0x00001d22 ldr.w r2, [pc, 0x954] |
0x00001d26 ldr.w r3, [pc, 0x900] | r3 = *(0x262a);
0x00001d2a add r2, pc | r2 = 0x43a8;
0x00001d2c ldr r3, [r2, r3] | r3 = *(0x43a8);
0x00001d2e ldr r2, [r3] | r2 = *(0x43a8);
0x00001d30 ldr r3, [sp, 0x9c] | r3 = var_9ch;
0x00001d32 eors r2, r3 | r2 ^= r3;
0x00001d34 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00001d38 bne.w 0x27d0 | goto label_60;
| }
0x00001d3c ldr r0, [sp, 0x30] | r0 = var_30h;
0x00001d3e add sp, 0xa4 |
0x00001d40 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_50:
0x00001d44 add.w r8, r7, 0x13 | r8 = r7 + 0x13;
0x00001d48 ldr r1, [sp, 0x34] | r1 = var_34h;
0x00001d4a mov r0, r8 | r0 = r8;
0x00001d4c blx 0x1120 | r0 = endswith ();
0x00001d50 cmp r0, 0 |
| if (r0 == 0) {
0x00001d52 beq.w 0x1ace | goto label_5;
| }
0x00001d56 mov r2, sl | r2 = sl;
0x00001d58 adds r1, r6, 2 | r1 = r6 + 2;
0x00001d5a mov r0, sb | r0 = sb;
0x00001d5c blx 0x1144 | r0 = greedy_realloc0 ();
| if (r0 != 0) {
0x00001d60 cbz r0, 0x1d80 |
0x00001d62 mov r0, r8 | r0 = r8;
0x00001d64 ldr.w r8, [sp, 0x8c] | r8 = var_8ch;
0x00001d68 blx 0x12e8 | strdup (r0);
0x00001d6c str.w r0, [r8, r6, lsl 2] | __asm ("str.w r0, [r8, r6, lsl 2]");
0x00001d70 ldr r0, [sp, 0x8c] | r0 = var_8ch;
0x00001d72 ldr.w r2, [r0, r6, lsl 2] | offset_1 = r6 << 2;
| r2 = *((r0 + offset_1));
0x00001d76 cmp r2, 0 |
| if (r2 == 0) {
0x00001d78 beq.w 0x241a | goto label_61;
| }
0x00001d7c adds r6, 1 | r6++;
0x00001d7e b 0x1ace | goto label_5;
| }
| label_51:
0x00001d80 ldr r0, [sp, 0x8c] | r0 = var_8ch;
0x00001d82 mvn r3, 0xb | r3 = ~0xb;
0x00001d86 ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x00001d88 ldr.w sl, [sp, 0x44] | sl = var_44h;
0x00001d8c cmp r0, 0 |
| if (r0 != 0) {
0x00001d8e bne.w 0x1b2e | goto label_6;
| }
| label_14:
0x00001d92 ldr r0, [sp, 0x88] | r0 = var_88h;
0x00001d94 cmp r0, 0 |
| if (r0 != 0) {
0x00001d96 bne.w 0x1b3c | goto label_7;
| }
0x00001d9a b 0x1b46 | goto label_8;
| label_52:
0x00001d9c blx 0x10f0 | strv_sort ();
0x00001da0 ldr r0, [sp, 0x88] | r0 = var_88h;
0x00001da2 blx 0x10f0 | strv_sort ();
0x00001da6 ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x00001da8 cmp r3, 0 |
| if (r3 == 0) {
0x00001daa beq.w 0x226c | goto label_62;
| }
0x00001dae subs r3, 4 | r3 -= 4;
0x00001db0 ldr.w sb, [sp, 0x3c] | sb = var_3ch;
0x00001db4 str r3, [sp, 0x4c] | var_4ch = r3;
0x00001db6 mov fp, r4 |
0x00001db8 ldr.w r3, [pc, 0x8c0] |
0x00001dbc str.w sl, [sp, 0x6c] | __asm ("str.w sl, [var_6ch]");
0x00001dc0 mov sl, r7 | sl = r7;
0x00001dc2 add r3, pc | r3 = 0x4442;
0x00001dc4 adds r3, 7 | r3 += 7;
0x00001dc6 str r3, [sp, 0x68] | var_68h = r3;
0x00001dc8 ldr.w r3, [pc, 0x8b4] |
0x00001dcc add r3, pc | r3 = 0x4450;
0x00001dce adds r3, 7 | r3 += 7;
0x00001dd0 str r3, [sp, 0x64] | var_64h = r3;
| label_17:
0x00001dd2 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00001dd4 ldr r4, [r3, 4]! | r4 = *((r3 += 4));
0x00001dd8 str r3, [sp, 0x4c] | var_4ch = r3;
0x00001dda cmp r4, 0 |
| if (r4 == 0) {
0x00001ddc beq.w 0x2264 | goto label_63;
| }
0x00001de0 movs r3, 0 | r3 = 0;
0x00001de2 ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x00001de4 mov r0, r4 | r0 = r4;
0x00001de6 str r3, [sp, 0x94] | var_94h = r3;
0x00001de8 blx 0x1120 | r0 = endswith ();
0x00001dec mov r6, r0 | r6 = r0;
0x00001dee cmp r0, 0 |
| if (r0 != 0) {
0x00001df0 bne.w 0x2238 | goto label_64;
| }
0x00001df4 mov.w r3, -1 | r3 = -1;
0x00001df8 mov r2, r4 | r2 = r4;
0x00001dfa mov r1, sl | r1 = sl;
0x00001dfc blx 0x11ec | r0 = path_extend_internal ();
0x00001e00 mov r7, r0 | r7 = r0;
0x00001e02 cmp r0, 0 |
| if (r0 == 0) {
0x00001e04 beq.w 0x1ffa | goto label_65;
| }
0x00001e08 blx 0x10fc | r0 = log_get_max_level ();
0x00001e0c cmp r0, 6 |
| if (r0 > 6) {
0x00001e0e bgt.w 0x2084 | goto label_66;
| }
| label_16:
0x00001e12 mov r0, r4 | r0 = r4;
0x00001e14 blx 0x12e8 | strdup (r0);
0x00001e16 orn r6, r8, r6, lsl 16 | r6 = r8 | r6;
| r6 = ~r6;
0x00001e1a cmp r0, 0 |
| if (r0 == 0) {
0x00001e1c beq.w 0x1ffa | goto label_65;
| }
0x00001e20 movs r1, 0x2e | r1 = 0x2e;
0x00001e22 blx 0x12a0 | r0 = strrchr (r0, r1);
0x00001e26 cmp r0, 0 |
| if (r0 == 0) {
0x00001e28 beq.w 0x2588 | goto label_67;
| }
0x00001e2c movs r3, 0 | r3 = 0;
0x00001e2e add r1, sp, 0x94 | r1 += var_94h;
0x00001e30 strb r3, [r0] | *(r0) = r3;
0x00001e32 mov r0, r7 | r0 = r7;
0x00001e34 blx 0x1018 | r0 = get_files_in_directory ();
0x00001e38 cmp r0, 0 |
| if (r0 < 0) {
0x00001e3a blt.w 0x200e | goto label_68;
| }
0x00001e3e ldr r0, [sp, 0x94] | r0 = var_94h;
0x00001e40 blx 0x10f0 | strv_sort ();
0x00001e44 ldr r3, [sp, 0x94] | r3 = var_94h;
0x00001e46 cmp r3, 0 |
| if (r3 == 0) {
0x00001e48 beq.w 0x20b2 | goto label_37;
| }
0x00001e4c sub.w r8, r3, 4 | r8 = r3 - 4;
0x00001e50 ldr.w r3, [pc, 0x830] |
0x00001e54 add r3, pc | r3 = 0x44dc;
0x00001e56 str r3, [sp, 0x2c] | var_2ch = r3;
0x00001e58 ldr.w r3, [pc, 0x82c] |
0x00001e5c add r3, pc | r3 = 0x44e8;
0x00001e5e str r3, [sp, 0x60] | var_60h = r3;
| do {
| label_9:
0x00001e60 ldr r4, [r8, 4]! | r4 = *((r8 += 4));
0x00001e64 cmp r4, 0 |
| if (r4 == 0) {
0x00001e66 beq.w 0x20aa | goto label_69;
| }
0x00001e6a ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00001e6c mov r0, r4 | r0 = r4;
0x00001e6e blx 0x1120 | r0 = endswith ();
0x00001e72 cmp r0, 0 |
0x00001e74 beq 0x1e60 |
| } while (r0 == 0);
0x00001e76 mov r2, r4 | r2 = r4;
0x00001e78 mov.w r3, -1 | r3 = -1;
0x00001e7c mov r1, r7 | r1 = r7;
0x00001e7e movs r0, 0 | r0 = 0;
0x00001e80 blx 0x11ec | r0 = path_extend_internal ();
0x00001e84 mov r5, r0 | r5 = r0;
0x00001e86 cmp r0, 0 |
| if (r0 == 0) {
0x00001e88 beq.w 0x2252 | goto label_70;
| }
0x00001e8c mov r0, sl | r0 = sl;
0x00001e8e blx 0x1258 | r0 = strlen (r0);
0x00001e92 adds r4, r0, 1 | r4 = r0 + 1;
0x00001e94 blx 0x10fc | r0 = log_get_max_level ();
0x00001e98 cmp r0, 6 |
0x00001e9a add r4, r5 | r4 += r5;
| if (r0 > 6) {
0x00001e9c bgt 0x1f78 | goto label_71;
| }
| label_11:
0x00001e9e ldr r0, [sp, 0x28] | r0 = var_28h;
0x00001ea0 mov r2, r5 | r2 = r5;
0x00001ea2 mov r1, r4 | r1 = r4;
0x00001ea4 blx 0x1300 | r0 = hashmap_put ();
0x00001ea8 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 >= r0) {
0x00001eaa bge 0x1f2e | goto label_72;
| }
0x00001eac cmn.w r3, 0x11 |
| if (r3 != 0x11) {
0x00001eb0 bne.w 0x2114 | goto label_73;
| }
0x00001eb4 blx 0x10fc | r0 = log_get_max_level ();
0x00001eb8 cmp r0, 6 |
| if (r0 > 6) {
0x00001eba bgt 0x1f4e | goto label_74;
| }
| label_10:
0x00001ebc mov r1, r4 | r1 = r4;
0x00001ebe mov r0, sb | r0 = sb;
0x00001ec0 blx 0x12dc | hashmap_remove ();
0x00001ec4 blx 0x1060 | free (r0);
0x00001ec8 mov r2, r5 | r2 = r5;
0x00001eca mov r1, r4 | r1 = r4;
0x00001ecc mov r0, sb | r0 = sb;
0x00001ece blx 0x1300 | r0 = hashmap_put ();
0x00001ed2 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 < r0) {
0x00001ed4 blt.w 0x2114 | goto label_73;
| }
0x00001ed8 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00001eda mov r1, r6 | r1 = r6;
0x00001edc blx 0x10e4 | r0 = hashmap_get ();
0x00001ee0 mov r4, r0 | r4 = r0;
0x00001ee2 cmp r0, 0 |
| if (r0 == 0) {
0x00001ee4 beq 0x1fd4 | goto label_75;
| }
| label_13:
0x00001ee6 mov r0, r5 | r0 = r5;
0x00001ee8 blx 0x12e8 | r0 = strdup (r0);
0x00001eec mov r5, r0 | r5 = r0;
0x00001eee cmp r0, 0 |
| if (r0 == 0) {
0x00001ef0 beq.w 0x2252 | goto label_70;
| }
0x00001ef4 blx 0x10fc | r0 = log_get_max_level ();
0x00001ef8 cmp r0, 6 |
| if (r0 > 6) {
0x00001efa bgt 0x1fa2 | goto label_76;
| }
| label_12:
0x00001efc mov r0, r5 | r0 = r5;
0x00001efe blx 0x11f8 | basename (r0);
0x00001f02 mov r2, r5 | r2 = r5;
0x00001f04 mov r1, r0 | r1 = r0;
0x00001f06 mov r0, r4 | r0 = r4;
0x00001f08 blx 0x1300 | r0 = hashmap_put ();
0x00001f0c subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 >= r0) {
0x00001f0e bge 0x1e60 | goto label_9;
| }
0x00001f10 mov r0, r5 | r0 = r5;
0x00001f12 str r3, [sp, 0x44] | var_44h = r3;
0x00001f14 blx 0x1060 | free (r0);
0x00001f16 invalid |
0x00001f1a cmn.w r3, 0x11 |
| if (r3 == 0x11) {
0x00001f1e beq 0x1e60 | goto label_9;
| }
0x00001f20 mov sb, r7 | sb = r7;
0x00001f22 mov r4, fp | r4 = fp;
0x00001f24 mov r7, sl | r7 = sl;
0x00001f26 mov r8, r6 | r8 = r6;
0x00001f28 ldr.w sl, [sp, 0x6c] | sl = var_6ch;
0x00001f2c b 0x203a | goto label_18;
| label_72:
0x00001f2e mov r0, r5 | r0 = r5;
0x00001f30 blx 0x12e8 | r0 = strdup (r0);
0x00001f34 mov r5, r0 | r5 = r0;
0x00001f36 cmp r0, 0 |
| if (r0 == 0) {
0x00001f38 beq.w 0x2252 | goto label_70;
| }
0x00001f3c mov r0, sl | r0 = sl;
0x00001f3e blx 0x1258 | r0 = strlen (r0);
0x00001f42 adds r4, r0, 1 | r4 = r0 + 1;
0x00001f44 blx 0x10fc | r0 = log_get_max_level ();
0x00001f48 cmp r0, 6 |
0x00001f4a add r4, r5 | r4 += r5;
| if (r0 <= 6) {
0x00001f4c ble 0x1ebc | goto label_10;
| }
| label_74:
0x00001f4e movs r0, 0xf | r0 = 0xf;
0x00001f50 blx 0x11d4 | special_glyph ();
0x00001f54 ldr.w r3, [pc, 0x734] |
0x00001f58 movs r1, 0 | r1 = 0;
0x00001f5a strd r0, r5, [sp, 0xc] | __asm ("strd r0, r5, [var_ch]");
0x00001f5e movs r0, 7 | r0 = 7;
0x00001f60 ldr r2, [sp, 0x64] | r2 = var_64h;
0x00001f62 add r3, pc |
0x00001f64 str r4, [sp, 8] | var_8h = r4;
0x00001f66 str r3, [sp, 4] | var_4h = r3;
0x00001f68 ldr.w r3, [pc, 0x724] | r3 = *(0x00002690);
0x00001f6c add r3, pc | r3 = 0x6562;
0x00001f6e str r3, [sp] | *(sp) = r3;
0x00001f70 movs r3, 0xfa | r3 = 0xfa;
0x00001f72 blx 0x1180 | log_internal ();
0x00001f76 b 0x1ebc | goto label_10;
| label_71:
0x00001f78 movs r0, 0xf | r0 = 0xf;
0x00001f7a blx 0x11d4 | special_glyph ();
0x00001f7e ldr.w r3, [pc, 0x714] |
0x00001f82 movs r1, 0 | r1 = 0;
0x00001f84 strd r0, r5, [sp, 0xc] | __asm ("strd r0, r5, [var_ch]");
0x00001f88 movs r0, 7 | r0 = 7;
0x00001f8a ldr r2, [sp, 0x50] | r2 = var_50h;
0x00001f8c add r3, pc | r3 = 0x4626;
0x00001f8e str r4, [sp, 8] | var_8h = r4;
0x00001f90 str r3, [sp, 4] | var_4h = r3;
0x00001f92 ldr.w r3, [pc, 0x704] |
0x00001f96 add r3, pc | r3 = 0x4634;
0x00001f98 str r3, [sp] | *(sp) = r3;
0x00001f9a movs r3, 0xee | r3 = 0xee;
0x00001f9c blx 0x1180 | log_internal ();
0x00001fa0 b 0x1e9e | goto label_11;
| label_76:
0x00001fa2 movs r0, 0xf | r0 = 0xf;
0x00001fa4 blx 0x11d4 | special_glyph ();
0x00001fa8 str r0, [sp, 0x44] | var_44h = r0;
0x00001faa mov r0, r5 | r0 = r5;
0x00001fac blx 0x11f8 | basename (r0);
0x00001fb0 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00001fb2 movs r1, 0 | r1 = 0;
0x00001fb4 str r0, [sp, 0x10] | var_10h = r0;
0x00001fb6 movs r0, 7 | r0 = 7;
0x00001fb8 ldr r2, [sp, 0x68] | r2 = var_68h;
0x00001fba str r3, [sp, 0x14] | var_14h = r3;
0x00001fbc strd r6, r3, [sp, 8] | __asm ("strd r6, r3, [var_8h]");
0x00001fc0 ldr r3, [sp, 0x60] | r3 = var_60h;
0x00001fc2 str r5, [sp, 0x18] | var_18h = r5;
0x00001fc4 str r3, [sp, 4] | var_4h = r3;
0x00001fc6 ldr r3, [sp, 0x54] | r3 = var_54h;
0x00001fc8 str r3, [sp] | *(sp) = r3;
0x00001fca movw r3, 0x111 | r3 = 0x111;
0x00001fce blx 0x1180 | log_internal ();
0x00001fd2 b 0x1efc | goto label_12;
| label_75:
0x00001fd4 ldr r0, [sp, 0x40] | r0 = var_40h;
0x00001fd6 blx 0x1168 | r0 = ordered_hashmap_new ();
0x00001fda mov r4, r0 | r4 = r0;
0x00001fdc cmp r0, 0 |
| if (r0 == 0) {
0x00001fde beq.w 0x2252 | goto label_70;
| }
0x00001fe2 mov r1, r6 | r1 = r6;
0x00001fe4 mov r2, r0 | r2 = r0;
0x00001fe6 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00001fe8 blx 0x1300 | hashmap_put ();
0x00001fec mov r0, r6 | r0 = r6;
0x00001fee blx 0x12e8 | r0 = strdup (r0);
0x00001ff2 mov r6, r0 | r6 = r0;
0x00001ff4 cmp r0, 0 |
| if (r0 != 0) {
0x00001ff6 bne.w 0x1ee6 | goto label_13;
| }
| label_65:
0x00001ffa mov sb, r7 | sb = r7;
0x00001ffc mov r4, fp | r4 = fp;
0x00001ffe mov r7, sl | r7 = sl;
0x00002000 mov.w r8, 0 | r8 = 0;
0x00002004 ldr.w sl, [sp, 0x6c] | sl = var_6ch;
0x00002008 mvn r3, 0xb | r3 = ~0xb;
0x0000200c b 0x203a | goto label_18;
| label_68:
0x0000200e mov r8, r6 | r8 = r6;
0x00002010 mov r6, r0 | r6 = r0;
0x00002012 blx 0x10fc | r0 = log_get_max_level ();
0x00002016 cmp r0, 2 |
0x00002018 mov sb, r7 | sb = r7;
0x0000201a it le |
| if (r0 <= 2) {
0x0000201c rsble r3, r6, 0 | __asm ("rsble r3, r6, 0");
| }
0x0000201e mov r7, sl | r7 = sl;
0x00002020 it le |
| if (r0 <= 2) {
0x00002022 bicle r3, r3, 0x40000000 | __asm ("bicle r3, r3, 0x40000000");
| }
0x00002026 ldr.w sl, [sp, 0x6c] | sl = var_6ch;
0x0000202a mov r4, fp | r4 = fp;
0x0000202c it le |
| if (r0 <= 2) {
0x0000202e rsble r3, r3, 0 | __asm ("rsble r3, r3, 0");
| }
| if (r0 > 2) {
0x00002030 bgt 0x212c | goto label_77;
| }
| label_19:
0x00002032 cmp r3, 0 |
0x00002034 it ge |
| if (r3 < 0) {
0x00002036 mvnge r3, 0x55 | r3 = ~0x55;
| }
| label_18:
0x0000203a ldr r0, [sp, 0x94] | r0 = var_94h;
0x0000203c cmp r0, 0 |
| if (r0 != 0) {
0x0000203e bne.w 0x2616 | goto label_78;
| }
0x00002042 str r3, [sp, 0x2c] | var_2ch = r3;
| label_38:
0x00002044 mov r0, sb | r0 = sb;
0x00002046 blx 0x1060 | free (r0);
0x0000204a mov r0, r8 | r0 = r8;
0x0000204c blx 0x1060 | free (r0);
0x00002050 ldr r0, [sp, 0x8c] | r0 = var_8ch;
0x00002052 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00002054 cmp r0, 0 |
| if (r0 != 0) {
0x00002056 bne.w 0x1b2e | goto label_6;
| }
0x0000205a b 0x1d92 | goto label_14;
| label_47:
0x0000205c ldr.w r3, [pc, 0x63c] |
0x00002060 mov r1, r4 | r1 = r4;
0x00002062 ldr.w r2, [pc, 0x63c] |
0x00002066 movs r0, 7 | r0 = 7;
0x00002068 str r7, [sp, 8] | var_8h = r7;
0x0000206a add r3, pc | r3 = 0x470a;
0x0000206c str r3, [sp, 4] | var_4h = r3;
0x0000206e add r2, pc | r2 = 0x4714;
0x00002070 ldr.w r3, [pc, 0x630] |
0x00002074 adds r2, 7 | r2 += 7;
0x00002076 add r3, pc | r3 = 0x471e;
0x00002078 str r3, [sp] | *(sp) = r3;
0x0000207a movw r3, 0x12d | r3 = 0x12d;
0x0000207e blx 0x1180 | log_internal ();
0x00002082 b 0x1a94 | goto label_15;
| label_66:
0x00002084 ldr.w r3, [pc, 0x620] |
0x00002088 mov r1, r6 | r1 = r6;
0x0000208a ldr.w r2, [pc, 0x620] |
0x0000208e movs r0, 7 | r0 = 7;
0x00002090 str r7, [sp, 8] | var_8h = r7;
0x00002092 add r3, pc | r3 = 0x473e;
0x00002094 str r3, [sp, 4] | var_4h = r3;
0x00002096 add r2, pc | r2 = 0x4748;
0x00002098 ldr.w r3, [pc, 0x614] |
0x0000209c adds r2, 7 | r2 += 7;
0x0000209e add r3, pc | r3 = 0x4752;
0x000020a0 str r3, [sp] | *(sp) = r3;
0x000020a2 movs r3, 0xcf | r3 = 0xcf;
0x000020a4 blx 0x1180 | log_internal ();
0x000020a8 b 0x1e12 | goto label_16;
| label_69:
0x000020aa ldr r0, [sp, 0x94] | r0 = var_94h;
0x000020ac cmp r0, 0 |
| if (r0 != 0) {
0x000020ae bne.w 0x25e4 | goto label_79;
| }
| label_37:
0x000020b2 mov r0, r7 | r0 = r7;
0x000020b4 blx 0x1060 | free (r0);
0x000020b8 mov r0, r6 | r0 = r6;
0x000020ba blx 0x1060 | free (r0);
0x000020be b 0x1dd2 | goto label_17;
| label_43:
0x000020c0 ldr.w r1, [pc, 0x5f0] |
0x000020c4 mov.w r2, 0x196 | r2 = 0x196;
0x000020c8 ldr.w r3, [pc, 0x5ec] |
0x000020cc ldr.w r0, [pc, 0x5ec] |
0x000020d0 add r1, pc | r1 = 0x4788;
0x000020d2 add r3, pc | r3 = 0x478e;
0x000020d4 adds r1, 7 | r1 += 7;
0x000020d6 add r0, pc | r0 = 0x4796;
0x000020d8 blx 0x1048 | log_assert_failed ();
| label_44:
0x000020dc ldr.w r1, [pc, 0x5e0] |
0x000020e0 movw r2, 0x197 | r2 = 0x197;
0x000020e4 ldr.w r3, [pc, 0x5dc] |
0x000020e8 ldr.w r0, [pc, 0x5dc] |
0x000020ec add r1, pc | r1 = 0x47b0;
0x000020ee add r3, pc | r3 = 0x47b6;
0x000020f0 adds r1, 7 | r1 += 7;
0x000020f2 add r0, pc | r0 = 0x47be;
0x000020f4 blx 0x1048 | log_assert_failed ();
| label_45:
0x000020f8 ldr.w r1, [pc, 0x5d0] |
0x000020fc mov.w r2, 0x198 | r2 = 0x198;
0x00002100 ldr.w r3, [pc, 0x5cc] |
0x00002104 ldr.w r0, [pc, 0x5cc] |
0x00002108 add r1, pc | r1 = 0x47d8;
0x0000210a add r3, pc | r3 = 0x47de;
0x0000210c adds r1, 7 | r1 += 7;
0x0000210e add r0, pc | r0 = 0x47e6;
0x00002110 blx 0x1048 | log_assert_failed ();
| label_73:
0x00002114 mov r0, r5 | r0 = r5;
0x00002116 str r3, [sp, 0x2c] | var_2ch = r3;
0x00002118 mov sb, r7 | sb = r7;
0x0000211a mov r4, fp | r4 = fp;
0x0000211c mov r7, sl | r7 = sl;
0x0000211e mov r8, r6 | r8 = r6;
0x00002120 ldr.w sl, [sp, 0x6c] | sl = var_6ch;
0x00002124 blx 0x1060 | free (r0);
0x00002128 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000212a b 0x203a | goto label_18;
| label_77:
0x0000212c ldr.w r3, [pc, 0x5a8] |
0x00002130 mov r1, r6 | r1 = r6;
0x00002132 ldr.w r2, [pc, 0x5a8] |
0x00002136 movs r0, 3 | r0 = 3;
0x00002138 str.w sb, [sp, 8] | __asm ("str.w sb, [var_8h]");
0x0000213c add r3, pc | r3 = 0x4818;
0x0000213e str r3, [sp, 4] | var_4h = r3;
0x00002140 add r2, pc | r2 = 0x4822;
0x00002142 ldr.w r3, [pc, 0x59c] |
0x00002146 adds r2, 7 | r2 += 7;
0x00002148 add r3, pc | r3 = 0x482e;
0x0000214a str r3, [sp] | *(sp) = r3;
0x0000214c movs r3, 0xdc | r3 = 0xdc;
0x0000214e blx 0x1180 | r0 = log_internal ();
0x00002152 mov r3, r0 | r3 = r0;
0x00002154 b 0x2032 | goto label_19;
| label_58:
0x00002156 ldr.w sl, [sp, 0x48] | sl = var_48h;
0x0000215a b 0x1bac | goto label_20;
| label_55:
0x0000215c mov.w sb, 0 | sb = 0;
0x00002160 str.w sb, [sp, 0x84] | __asm ("str.w sb, [var_84h]");
0x00002164 cmp r5, 0 |
| if (r5 == 0) {
0x00002166 beq.w 0x2552 | goto label_80;
| }
0x0000216a mov r1, sb | r1 = sb;
0x0000216c mov r0, r5 | r0 = r5;
0x0000216e blx 0x1174 | r0 = null_or_empty_path_with_root ();
0x00002172 cmp r0, 0 |
| if (r0 > 0) {
0x00002174 bgt.w 0x23ae | goto label_81;
| }
0x00002178 add r1, sp, 0x84 | r1 += var_84h;
0x0000217a mov r0, r5 | r0 = r5;
0x0000217c blx 0x118c | r0 = readlink_malloc ();
0x00002180 cmp r0, 0 |
| if (r0 < 0) {
0x00002182 blt.w 0x242c | goto label_82;
| }
0x00002186 ldr r0, [sp, 0x84] | r0 = var_84h;
0x00002188 add r3, sp, 0x88 | r3 += var_88h;
0x0000218a movs r2, 0x10 | r2 = 0x10;
0x0000218c mov r1, sb | r1 = sb;
0x0000218e str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00002192 str.w sb, [sp, 0x88] | __asm ("str.w sb, [var_88h]");
0x00002196 str.w sb, [sp, 0x94] | __asm ("str.w sb, [var_94h]");
0x0000219a blx 0x124c | r0 = chase_symlinks ();
0x0000219e cmp r0, 0 |
| if (r0 < 0) {
0x000021a0 blt.w 0x24e0 | goto label_83;
| }
0x000021a4 mov r1, sb | r1 = sb;
0x000021a6 add r3, sp, 0x94 | r3 += var_94h;
0x000021a8 movs r2, 0x10 | r2 = 0x10;
0x000021aa mov r0, r7 | r0 = r7;
0x000021ac str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x000021b0 blx 0x124c | r0 = chase_symlinks ();
0x000021b4 cmp r0, 0 |
| if (r0 < 0) {
0x000021b6 blt.w 0x24e0 | goto label_83;
| }
0x000021ba ldr.w fp, [sp, 0x94] | fp = var_94h;
0x000021be ldr r0, [sp, 0x88] | r0 = var_88h;
0x000021c0 mov r1, fp | r1 = fp;
0x000021c2 blx 0x10d8 | r0 = path_compare ();
0x000021c6 mov sb, r0 | sb = r0;
0x000021c8 mov r0, fp | r0 = fp;
0x000021ca blx 0x1060 | free (r0);
0x000021ce ldr r0, [sp, 0x88] | r0 = var_88h;
0x000021d0 blx 0x1060 | free (r0);
0x000021d4 ldr.w r3, [pc, 0x50c] |
0x000021d8 add r3, pc |
0x000021da ldr r3, [r3] | r3 = *(0x48c0);
0x000021dc cmp.w sb, 0 |
| if (sb != 0) {
0x000021e0 bne.w 0x24ec | goto label_84;
| }
0x000021e4 lsls r2, r3, 0x1e | r2 = r3 << 0x1e;
| if (r2 >= r3) {
0x000021e6 bpl.w 0x23a6 | goto label_26;
| }
0x000021ea blx 0x1078 | r0 = get_color_mode ();
0x000021ee cmp r0, 0 |
| if (r0 == 0) {
0x000021f0 beq.w 0x25a2 | goto label_85;
| }
0x000021f4 ldr.w sb, [pc, 0x4f0] |
0x000021f8 add sb, pc | sb = 0x48e4;
| label_32:
0x000021fa blx 0x1078 | r0 = get_color_mode ();
0x000021fe cmp r0, 0 |
| if (r0 == 0) {
0x00002200 beq.w 0x259a | goto label_86;
| }
0x00002204 ldr.w fp, [pc, 0x4e4] |
0x00002208 add fp, pc | fp = 0x48f8;
| label_31:
0x0000220a movs r0, 0xf | r0 = 0xf;
0x0000220c add.w r8, r8, 1 | r8++;
0x00002210 blx 0x11d4 | special_glyph ();
0x00002214 ldr.w r3, [pc, 0x4d8] |
0x00002216 adds r4, 0xd8 | r4 += 0xd8;
0x00002218 mov r2, sb | r2 = sb;
0x0000221a ldr.w r1, [pc, 0x4d8] |
0x0000221e strd r0, r7, [sp, 8] | __asm ("strd r0, r7, [var_8h]");
0x00002222 movs r0, 1 | r0 = 1;
0x00002224 add r3, pc | r3 = 0x4918;
0x00002226 strd fp, r5, [sp] | __asm ("strd fp, r5, [sp]");
0x0000222a add r1, pc | r1 = 0x4924;
0x0000222c blx 0x12f4 | printf_chk ()
0x00002230 ldr r0, [sp, 0x84] | r0 = var_84h;
0x00002232 blx 0x1060 | free (r0);
0x00002236 b 0x1c00 | goto label_21;
| label_64:
0x00002238 ldr.w r1, [pc, 0x4bc] |
0x0000223c movs r2, 0xc9 | r2 = 0xc9;
0x0000223e ldr.w r3, [pc, 0x4bc] |
0x00002242 ldr.w r0, [pc, 0x4bc] |
0x00002246 add r1, pc | r1 = 0x4942;
0x00002248 add r3, pc | r3 = 0x494a;
0x0000224a adds r1, 7 | r1 += 7;
0x0000224c add r0, pc | r0 = 0x4952;
0x0000224e blx 0x1048 | log_assert_failed ();
| label_70:
0x00002252 mov sb, r7 | sb = r7;
0x00002254 mov r4, fp | r4 = fp;
0x00002256 mov r7, sl | r7 = sl;
0x00002258 mov r8, r6 | r8 = r6;
0x0000225a ldr.w sl, [sp, 0x6c] | sl = var_6ch;
0x0000225e mvn r3, 0xb | r3 = ~0xb;
0x00002262 b 0x203a | goto label_18;
| label_63:
0x00002264 mov r7, sl | r7 = sl;
0x00002266 ldr.w sl, [sp, 0x6c] | sl = var_6ch;
0x0000226a mov r4, fp | r4 = fp;
| label_62:
0x0000226c ldr r3, [sp, 0x88] | r3 = var_88h;
0x0000226e cmp r3, 0 |
| if (r3 == 0) {
0x00002270 beq.w 0x25d6 | goto label_87;
| }
0x00002274 subs r6, r3, 4 | r6 = r3 - 4;
0x00002276 ldr.w r3, [pc, 0x48c] |
0x0000227a ldr.w fp, [pc, 0x48c] |
0x0000227e str.w sl, [sp, 0x4c] | __asm ("str.w sl, [var_4ch]");
0x00002282 add r3, pc | r3 = 0x498c;
0x00002284 ldr.w r8, [sp, 0x3c] | r8 = var_3ch;
0x00002288 add.w sb, r3, 7 | sb = r3 + 7;
0x0000228c ldr.w r3, [pc, 0x47c] |
0x00002290 add fp, pc | fp = 0x499e;
0x00002292 ldr.w sl, [sp, 0x28] | sl = var_28h;
0x00002296 str.w fp, [sp, 0x44] | __asm ("str.w fp, [var_44h]");
0x0000229a add r3, pc | r3 = 0x49aa;
0x0000229c str r4, [sp, 0x60] | var_60h = r4;
0x0000229e adds r5, r3, 7 | r5 = r3 + 7;
0x000022a0 ldr.w r3, [pc, 0x46c] |
0x000022a4 mov fp, r5 |
0x000022a6 add r3, pc | r3 = 0x49ba;
0x000022a8 str r3, [sp, 0x2c] | var_2ch = r3;
0x000022aa b 0x22e4 |
| while (r0 < 0) {
0x000022ac cmn.w r0, 0x11 |
| if (r0 != 0x11) {
0x000022b0 bne.w 0x2546 | goto label_88;
| }
| label_22:
0x000022b4 blx 0x10fc | r0 = log_get_max_level ();
0x000022b8 cmp r0, 6 |
| if (r0 > 6) {
0x000022ba bgt 0x2374 | goto label_89;
| }
| label_24:
0x000022bc mov r0, r4 | r0 = r4;
0x000022be blx 0x11f8 | r0 = basename (r0);
0x000022c2 mov r1, r0 | r1 = r0;
0x000022c4 mov r0, r8 | r0 = r8;
0x000022c6 blx 0x12dc | hashmap_remove ();
0x000022ca blx 0x1060 | free (r0);
0x000022ce mov r0, r4 | r0 = r4;
0x000022d0 blx 0x11f8 | basename (r0);
0x000022d4 mov r2, r4 | r2 = r4;
0x000022d6 mov r1, r0 | r1 = r0;
0x000022d8 mov r0, r8 | r0 = r8;
0x000022da blx 0x1300 | r0 = hashmap_put ();
0x000022de cmp r0, 0 |
| if (r0 < 0) {
0x000022e0 blt.w 0x2546 | goto label_88;
| }
0x000022e4 ldr r2, [r6, 4]! | r2 = *((r6 += 4));
0x000022e8 cmp r2, 0 |
| if (r2 == 0) {
0x000022ea beq.w 0x2566 | goto label_90;
| }
0x000022ee mov.w r3, -1 | r3 = -1;
0x000022f2 mov r1, r7 | r1 = r7;
0x000022f4 movs r0, 0 | r0 = 0;
0x000022f6 blx 0x11ec | r0 = path_extend_internal ();
0x000022fa mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x000022fc cbz r0, 0x2326 | goto label_91;
| }
0x000022fe blx 0x10fc | r0 = log_get_max_level ();
0x00002302 cmp r0, 6 |
| if (r0 > 6) {
0x00002304 bgt 0x2348 | goto label_92;
| }
| label_23:
0x00002306 mov r0, r4 | r0 = r4;
0x00002308 blx 0x11f8 | basename (r0);
0x0000230c mov r2, r4 | r2 = r4;
0x0000230e mov r1, r0 | r1 = r0;
0x00002310 mov r0, sl | r0 = sl;
0x00002312 blx 0x1300 | r0 = hashmap_put ();
0x00002316 cmp r0, 0 |
0x00002318 blt 0x22ac |
| }
0x0000231a mov r0, r4 | r0 = r4;
0x0000231c blx 0x12e8 | r0 = strdup (r0);
0x00002320 mov r4, r0 | r4 = r0;
0x00002322 cmp r0, 0 |
| if (r0 != 0) {
0x00002324 bne 0x22b4 | goto label_22;
| }
| label_91:
0x00002326 ldr.w sl, [sp, 0x4c] | sl = var_4ch;
0x0000232a mov.w r8, 0 | r8 = 0;
0x0000232e ldr r4, [sp, 0x60] | r4 = var_60h;
0x00002330 mvn r3, 0xb | r3 = ~0xb;
| label_28:
0x00002334 mov r0, r8 | r0 = r8;
0x00002336 str r3, [sp, 0x2c] | var_2ch = r3;
0x00002338 blx 0x1060 | free (r0);
0x0000233c ldr r0, [sp, 0x8c] | r0 = var_8ch;
0x0000233e ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00002340 cmp r0, 0 |
| if (r0 != 0) {
0x00002342 bne.w 0x1b2e | goto label_6;
| }
0x00002346 b 0x1d92 | goto label_14;
| label_92:
0x00002348 mov r0, r4 | r0 = r4;
0x0000234a blx 0x11f8 | r0 = basename (r0);
0x0000234e mov r5, r0 | r5 = r0;
0x00002350 movs r0, 0xf | r0 = 0xf;
0x00002352 blx 0x11d4 | special_glyph ();
0x00002356 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00002358 mov r2, sb | r2 = sb;
0x0000235a strd r5, r0, [sp, 8] | __asm ("strd r5, r0, [var_8h]");
0x0000235e movs r1, 0 | r1 = 0;
0x00002360 str r4, [sp, 0x10] | var_10h = r4;
0x00002362 movs r0, 7 | r0 = 7;
0x00002364 str r3, [sp, 4] | var_4h = r3;
0x00002366 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00002368 str r3, [sp] | *(sp) = r3;
0x0000236a mov.w r3, 0x15e | r3 = 0x15e;
0x0000236e blx 0x1180 | log_internal ();
0x00002372 b 0x2306 | goto label_23;
| label_89:
0x00002374 mov r0, r4 | r0 = r4;
0x00002376 blx 0x11f8 | r0 = basename (r0);
0x0000237a mov r5, r0 | r5 = r0;
0x0000237c movs r0, 0xf | r0 = 0xf;
0x0000237e blx 0x11d4 | special_glyph ();
0x00002382 ldr r3, [pc, 0x390] |
0x00002384 mov r2, fp | r2 = fp;
0x00002386 strd r5, r0, [sp, 8] | __asm ("strd r5, r0, [var_8h]");
0x0000238a movs r1, 0 | r1 = 0;
0x0000238c str r4, [sp, 0x10] | var_10h = r4;
0x0000238e movs r0, 7 | r0 = 7;
0x00002390 add r3, pc | r3 = 0x4aaa;
0x00002392 str r3, [sp, 4] | var_4h = r3;
0x00002394 ldr r3, [pc, 0x380] |
0x00002396 add r3, pc | r3 = 0x4ab2;
0x00002398 str r3, [sp] | *(sp) = r3;
0x0000239a movw r3, 0x167 | r3 = 0x167;
0x0000239e blx 0x1180 | log_internal ();
0x000023a2 b 0x22bc | goto label_24;
| label_25:
0x000023a4 add r8, r3 | r8 += r3;
| do {
| label_26:
0x000023a6 ldr r0, [sp, 0x84] | r0 = var_84h;
0x000023a8 blx 0x1060 | free (r0);
0x000023ac b 0x1c00 | goto label_21;
| label_81:
0x000023ae ldr r3, [pc, 0x36c] |
0x000023b0 add r3, pc |
0x000023b2 ldr r3, [r3] | r3 = *(0x4ad2);
0x000023b4 lsls r1, r3, 0x1f | r1 = r3 << 0x1f;
0x000023b6 bpl 0x23a6 |
| } while (r1 >= r3);
0x000023b8 blx 0x1078 | r0 = get_color_mode ();
0x000023bc cmp r0, 0 |
| if (r0 == 0) {
0x000023be beq.w 0x2580 | goto label_93;
| }
0x000023c2 ldr.w sb, [pc, 0x35c] |
0x000023c6 add sb, pc | sb = 0x4aec;
| label_30:
0x000023c8 blx 0x1078 | r0 = get_color_mode ();
0x000023cc cmp r0, 0 |
| if (r0 == 0) {
0x000023ce beq.w 0x2578 | goto label_94;
| }
0x000023d2 ldr.w fp, [pc, 0x350] |
0x000023d6 add fp, pc | fp = 0x4b00;
| label_29:
0x000023d8 movs r0, 0xf | r0 = 0xf;
0x000023da add.w r8, r8, 1 | r8++;
0x000023de blx 0x11d4 | special_glyph ();
0x000023e2 ldr r3, [pc, 0x344] |
0x000023e4 mov r2, sb | r2 = sb;
0x000023e6 ldr r1, [pc, 0x344] |
0x000023e8 strd r0, r7, [sp, 8] | __asm ("strd r0, r7, [var_8h]");
0x000023ec movs r0, 1 | r0 = 1;
0x000023ee add r3, pc | r3 = 0x4b1c;
0x000023f0 strd fp, r5, [sp] | __asm ("strd fp, r5, [sp]");
0x000023f4 add r1, pc | r1 = 0x4b26;
0x000023f6 blx 0x12f4 | printf_chk ()
0x000023fa ldr r0, [sp, 0x84] | r0 = var_84h;
0x000023fc blx 0x1060 | free (r0);
0x00002400 b.w 0x1c00 | goto label_21;
| label_54:
0x00002404 ldr r1, [pc, 0x328] |
0x00002406 movw r2, 0x1b9 | r2 = 0x1b9;
0x0000240a ldr r3, [pc, 0x328] |
0x0000240c ldr r0, [pc, 0x328] |
0x0000240e add r1, pc | r1 = 0x4b42;
0x00002410 add r3, pc | r3 = 0x4b4a;
0x00002412 adds r1, 7 | r1 += 7;
0x00002414 add r0, pc | r0 = 0x4b50;
0x00002416 blx 0x1048 | log_assert_failed ();
| label_61:
0x0000241a ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x0000241c mvn r3, 0xb | r3 = ~0xb;
0x00002420 ldr.w sl, [sp, 0x44] | sl = var_44h;
0x00002424 cmp r0, 0 |
| if (r0 != 0) {
0x00002426 bne.w 0x1b2e | goto label_6;
| }
0x0000242a b 0x1d92 | goto label_14;
| label_82:
0x0000242c ldr r3, [pc, 0x30c] |
0x0000242e add r3, pc |
0x00002430 ldr r3, [r3] | r3 = *(0x4b6e);
0x00002432 ands r3, r3, 8 | r3 &= 8;
| if (r3 != r3) {
0x00002436 beq 0x247a |
0x00002438 blx 0x1078 | r0 = get_color_mode ();
0x0000243c cmp r0, 0 |
| if (r0 == 0) {
0x0000243e beq.w 0x25b2 | goto label_95;
| }
0x00002442 ldr.w sb, [pc, 0x2fc] |
0x00002446 add sb, pc | sb = 0x4b8c;
| label_34:
0x00002448 blx 0x1078 | r0 = get_color_mode ();
0x0000244c cmp r0, 0 |
| if (r0 == 0) {
0x0000244e beq.w 0x25aa | goto label_96;
| }
0x00002452 ldr.w fp, [pc, 0x2f0] |
0x00002456 add fp, pc | fp = 0x4ba0;
| label_33:
0x00002458 movs r0, 0xf | r0 = 0xf;
0x0000245a blx 0x11d4 | special_glyph ();
0x0000245e ldr r3, [pc, 0x2e8] |
0x00002460 mov r2, sb | r2 = sb;
0x00002462 ldr r1, [pc, 0x2e8] |
0x00002464 str r0, [sp, 8] | var_8h = r0;
0x00002466 movs r0, 1 | r0 = 1;
0x00002468 add r3, pc | r3 = 0x4bb6;
0x0000246a str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x0000246e add r1, pc | r1 = 0x4bc0;
0x00002470 str r7, [sp, 0xc] | var_ch = r7;
0x00002472 str r5, [sp, 4] | var_4h = r5;
0x00002474 blx 0x12f4 | printf_chk ()
0x00002476 invalid |
| }
0x0000247a ldr r2, [pc, 0x2d4] |
0x0000247c add r2, pc |
0x0000247e ldr r2, [r2] | r2 = *(0x4bd2);
0x00002480 cmp r2, 0 |
| if (r2 == 0) {
0x00002482 beq 0x23a4 | goto label_25;
| }
0x00002484 ldr r3, [pc, 0x2cc] | r3 = *(0x2754);
0x00002486 movs r0, 0xa | r0 = 0xa;
0x00002488 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0000248a add.w sb, sp, 0x94 | sb += var_94h;
0x0000248e ldr.w fp, [r2, r3] | fp = *((r2 + r3));
0x00002492 ldr.w r1, [fp] | r1 = *(fp);
0x00002496 blx 0x11c8 | putc (r0, r1);
0x0000249a ldr.w r0, [fp] | r0 = *(fp);
0x0000249e blx 0x1288 | fflush (r0);
0x000024a2 ldr r0, [pc, 0x2b4] |
0x000024a4 movs r2, 0 | r2 = 0;
0x000024a6 movw r3, 0x447 | r3 = 0x447;
0x000024aa mov r1, r2 | r1 = r2;
0x000024ac str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x000024b0 add r0, pc | r0 = 0x4c0e;
0x000024b2 blx 0x115c | r0 = safe_fork_full ();
0x000024b6 cmp r0, 0 |
| if (r0 < 0) {
0x000024b8 blt 0x25ba | goto label_97;
| }
| if (r0 == 0) {
0x000024ba beq.w 0x25ea | goto label_98;
| }
0x000024be add r8, r0 | r8 += r0;
0x000024c0 ldr r0, [pc, 0x298] |
0x000024c2 ldr r1, [sp, 0x94] | r1 = var_94h;
0x000024c4 movs r2, 1 | r2 = 1;
0x000024c6 add r0, pc | r0 = 0x4c26;
0x000024c8 blx 0x10b4 | wait_for_terminate_and_check ();
0x000024cc ldr.w r1, [fp] | r1 = *(fp);
0x000024d0 movs r0, 0xa | r0 = 0xa;
0x000024d2 blx 0x11c8 | putc (r0, r1);
0x000024d6 ldr r0, [sp, 0x84] | r0 = var_84h;
0x000024d8 blx 0x1060 | free (r0);
0x000024dc b.w 0x1c00 | goto label_21;
| label_83:
0x000024e0 ldr r0, [sp, 0x94] | r0 = var_94h;
0x000024e2 blx 0x1060 | free (r0);
0x000024e6 ldr r0, [sp, 0x88] | r0 = var_88h;
0x000024e8 blx 0x1060 | free (r0);
| label_84:
0x000024ec ldr r3, [pc, 0x270] |
0x000024ee add r3, pc |
0x000024f0 ldr r3, [r3] | r3 = *(0x4c52);
0x000024f2 lsls r3, r3, 0x1d | r3 <<= 0x1d;
| if (r3 >= r3) {
0x000024f4 bpl.w 0x23a6 | goto label_26;
| }
0x000024f8 blx 0x1078 | r0 = get_color_mode ();
0x000024fc cmp r0, 0 |
| if (r0 == 0) {
0x000024fe beq 0x25ce | goto label_99;
| }
0x00002500 ldr.w sb, [pc, 0x260] |
0x00002504 add sb, pc | sb = 0x4c6c;
| label_36:
0x00002506 blx 0x1078 | r0 = get_color_mode ();
0x0000250a cmp r0, 0 |
| if (r0 == 0) {
0x0000250c beq 0x25c6 | goto label_100;
| }
0x0000250e ldr.w fp, [pc, 0x258] |
0x00002512 add fp, pc | fp = 0x4c80;
| label_35:
0x00002514 movs r0, 0xf | r0 = 0xf;
0x00002516 add.w r8, r8, 1 | r8++;
0x0000251a blx 0x11d4 | special_glyph ();
0x0000251e ldr r3, [pc, 0x24c] |
0x00002520 mov r2, sb | r2 = sb;
0x00002522 ldr r1, [pc, 0x24c] |
0x00002524 strd r0, r7, [sp, 8] | __asm ("strd r0, r7, [var_8h]");
0x00002528 movs r0, 1 | r0 = 1;
0x0000252a add r3, pc | r3 = 0x4c9c;
0x0000252c strd fp, r5, [sp] | __asm ("strd fp, r5, [sp]");
0x00002530 add r1, pc | r1 = 0x4ca6;
0x00002532 blx 0x12f4 | printf_chk ()
0x00002536 ldr r0, [sp, 0x84] | r0 = var_84h;
0x00002538 blx 0x1060 | free (r0);
0x0000253c b.w 0x1c00 | goto label_21;
| label_53:
0x00002540 mov r4, sl | r4 = sl;
0x00002542 b.w 0x1cae | goto label_27;
| label_88:
0x00002546 mov r8, r4 | r8 = r4;
0x00002548 ldr.w sl, [sp, 0x4c] | sl = var_4ch;
0x0000254a adr r0, 0x130 | r0 = 0x130;
0x0000254c ldr r4, [sp, 0x60] | r4 = var_60h;
0x0000254e mov r3, r0 | r3 = r0;
0x00002550 b 0x2334 | goto label_28;
| label_80:
0x00002552 ldr r1, [pc, 0x220] |
0x00002554 movs r2, 0x97 | r2 = 0x97;
0x00002556 ldr r3, [pc, 0x220] |
0x00002558 ldr r0, [pc, 0x220] |
0x0000255a add r1, pc | r1 = 0x4cd4;
0x0000255c add r3, pc | r3 = 0x4cda;
0x0000255e adds r1, 7 | r1 += 7;
0x00002560 add r0, pc | r0 = 0x4ce0;
0x00002562 blx 0x1048 | log_assert_failed ();
| label_90:
0x00002566 ldr r0, [sp, 0x8c] | r0 = var_8ch;
0x00002568 mov r3, r2 | r3 = r2;
0x0000256a ldr.w sl, [sp, 0x4c] | sl = var_4ch;
0x0000256e ldr r4, [sp, 0x60] | r4 = var_60h;
0x00002570 cmp r0, 0 |
| if (r0 != 0) {
0x00002572 bne.w 0x1b2e | goto label_6;
| }
0x00002576 b 0x1d92 | goto label_14;
| label_94:
0x00002578 ldr.w fp, [pc, 0x204] |
0x0000257c add fp, pc | fp = 0x4d00;
0x0000257e b 0x23d8 | goto label_29;
| label_93:
0x00002580 ldr.w sb, [pc, 0x200] |
0x00002584 add sb, pc | sb = 0x4d0c;
0x00002586 b 0x23c8 | goto label_30;
| label_67:
0x00002588 mov sb, r7 | sb = r7;
0x0000258a mov r4, fp | r4 = fp;
0x0000258c mov r7, sl | r7 = sl;
0x0000258e mov r8, r6 | r8 = r6;
0x00002590 ldr.w sl, [sp, 0x6c] | sl = var_6ch;
0x00002594 mvn r3, 0x15 | r3 = ~0x15;
0x00002598 b 0x203a | goto label_18;
| label_86:
0x0000259a ldr.w fp, [pc, 0x1ec] |
0x0000259e add fp, pc | fp = 0x4d2c;
0x000025a0 b 0x220a | goto label_31;
| label_85:
0x000025a2 ldr.w sb, [pc, 0x1e8] |
0x000025a6 add sb, pc | sb = 0x4d38;
0x000025a8 b 0x21fa | goto label_32;
| label_96:
0x000025aa ldr.w fp, [pc, 0x1e4] |
0x000025ae add fp, pc | fp = 0x4d44;
0x000025b0 b 0x2458 | goto label_33;
| label_95:
0x000025b2 ldr.w sb, [pc, 0x1e0] |
0x000025b6 add sb, pc | sb = 0x4d50;
0x000025b8 b 0x2448 | goto label_34;
| label_97:
0x000025ba str r0, [sp, 0x30] | var_30h = r0;
0x000025bc ldr r0, [sp, 0x84] | r0 = var_84h;
0x000025be blx 0x1060 | free (r0);
0x000025c2 b.w 0x1c00 | goto label_21;
| label_100:
0x000025c6 ldr.w fp, [pc, 0x1d0] |
0x000025ca add fp, pc | fp = 0x4d68;
0x000025cc b 0x2514 | goto label_35;
| label_99:
0x000025ce ldr.w sb, [pc, 0x1cc] |
0x000025d2 add sb, pc | sb = 0x4d74;
0x000025d4 b 0x2506 | goto label_36;
| label_87:
0x000025d6 ldr r0, [sp, 0x8c] | r0 = var_8ch;
0x000025d8 cmp r0, 0 |
| if (r0 != 0) {
0x000025da bne.w 0x1b2e | goto label_6;
| }
0x000025de mov r3, r0 | r3 = r0;
0x000025e0 b.w 0x1b46 | goto label_8;
| label_79:
0x000025e4 blx 0x12ac | strv_free ();
0x000025e8 b 0x20b2 | goto label_37;
| label_98:
0x000025ea ldr r1, [pc, 0x1b4] |
0x000025ec ldr r3, [pc, 0x1b4] |
0x000025ee ldr r2, [pc, 0x1b8] |
0x000025f0 add r1, pc | r1 = 0x4d96;
0x000025f2 strd r5, r0, [sp, 4] | __asm ("strd r5, r0, [var_8h]");
0x000025f6 add r3, pc | r3 = 0x4d9e;
0x000025f8 mov r0, r1 | r0 = r1;
0x000025fa add r2, pc | r2 = 0x4da8;
0x000025fc str r7, [sp] | *(sp) = r7;
0x000025fe blx 0x1234 | execlp ();
0x00002602 blx 0x106c | log_open ();
0x00002606 blx 0x10fc | r0 = log_get_max_level ();
0x0000260a cmp r0, 2 |
0x0000260c bgt.w 0x27ac |
| while (1) {
0x00002610 movs r0, 1 | r0 = 1;
0x00002612 blx 0x1264 | exit (r0);
| label_78:
0x00002616 str r3, [sp, 0x2c] | var_2ch = r3;
0x00002618 blx 0x12ac | strv_free ();
0x0000261c b 0x2044 | goto label_38;
0x000027ac blx 0x127c | errno_location ();
0x000027b0 ldr r2, [pc, 0xc4] |
0x000027b2 mov r4, r0 | r4 = r0;
0x000027b4 ldr r1, [pc, 0xc4] |
0x000027b6 movs r3, 0xb3 | r3 = 0xb3;
0x000027b8 ldr r0, [pc, 0xc4] |
0x000027ba add r2, pc | r2 = 0x5036;
0x000027bc add r1, pc | r1 = 0x503c;
0x000027be adds r2, 7 | r2 += 7;
0x000027c0 add r0, pc | r0 = 0x5044;
0x000027c2 str r1, [sp] | *(sp) = r1;
0x000027c4 str r0, [sp, 4] | var_4h = r0;
0x000027c6 movs r0, 3 | r0 = 3;
0x000027c8 ldr r1, [r4] | r1 = *(r4);
0x000027ca blx 0x1180 | log_internal ();
0x000027ce b 0x2610 |
| }
| label_60:
0x000027d0 blx 0x1198 | stack_chk_fail ();
| label_48:
0x000027d4 blx 0x127c | r0 = errno_location ();
0x000027d8 ldr r6, [r0] | r6 = *(r0);
0x000027da cmp r6, 2 |
| if (r6 == 2) {
0x000027dc beq 0x281e | goto label_101;
| }
0x000027de blx 0x10fc | r0 = log_get_max_level ();
0x000027e2 cmp r0, 2 |
| if (r0 > 2) {
0x000027e4 bgt 0x2852 | goto label_102;
| }
0x000027e6 eor.w r3, r6, r6, asr 31 | r3 = r6 ^ (r6 >> 31);
0x000027ea sub.w r3, r3, r6, asr 31 | r3 -= (r6 >> 31);
0x000027ee bic r3, r3, 0x40000000 | r3 = BIT_MASK (r3, 0x40000000);
0x000027f2 rsbs r3, r3, 0 | r3 -= ;
| label_42:
0x000027f4 cmp r3, 0 |
0x000027f6 ldr r0, [sp, 0x8c] | r0 = var_8ch;
| if (r3 < 0) {
0x000027f8 blt 0x2844 | goto label_103;
| }
| if (r0 == 0) {
0x000027fa cbz r0, 0x2826 | goto label_104;
| }
0x000027fc mvn r3, 0x55 | r3 = ~0x55;
| label_40:
0x00002800 str r3, [sp, 0x2c] | var_2ch = r3;
0x00002802 blx 0x12ac | strv_free ();
0x00002806 str r0, [sp, 0x8c] | var_8ch = r0;
0x00002808 ldr r0, [sp, 0x88] | r0 = var_88h;
0x0000280a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000280c cmp r0, 0 |
| if (r0 == 0) {
0x0000280e beq.w 0x1b50 | goto label_39;
| }
| label_41:
0x00002812 str r3, [sp, 0x2c] | var_2ch = r3;
0x00002814 blx 0x12ac | strv_free ();
0x00002816 vstr d25, [sl, -0x2c] | __asm ("vstr d25, [sl, -0x2c]");
0x0000281a b.w 0x1b50 | goto label_39;
| label_101:
0x0000281e ldr r0, [sp, 0x8c] | r0 = var_8ch;
| if (r0 != 0) {
0x00002820 cbz r0, 0x2836 |
0x00002822 mov r3, r4 | r3 = r4;
0x00002824 b 0x2800 | goto label_40;
| label_104:
0x00002826 ldr r0, [sp, 0x88] | r0 = var_88h;
| if (r0 != 0) {
0x00002828 cbz r0, 0x282e |
0x0000282a blx 0x12ac | strv_free ();
| }
0x0000282e mvn r3, 0x55 | r3 = ~0x55;
0x00002832 b.w 0x1b50 | goto label_39;
| }
0x00002836 ldr r0, [sp, 0x88] | r0 = var_88h;
| if (r0 != 0) {
0x00002838 cbz r0, 0x283e |
0x0000283a blx 0x12ac | strv_free ();
| }
0x0000283e movs r3, 0 | r3 = 0;
0x00002840 b.w 0x1b50 | goto label_39;
| label_103:
0x00002844 cmp r0, 0 |
| if (r0 != 0) {
0x00002846 bne 0x2800 | goto label_40;
| }
0x00002848 ldr r0, [sp, 0x88] | r0 = var_88h;
0x0000284a cmp r0, 0 |
| if (r0 != 0) {
0x0000284c bne 0x2812 | goto label_41;
| }
0x0000284e b.w 0x1b50 | goto label_39;
| label_102:
0x00002852 ldr r3, [pc, 0x30] |
0x00002854 mov r1, r6 | r1 = r6;
0x00002856 ldr r2, [pc, 0x30] |
0x00002858 movs r0, 3 | r0 = 3;
0x0000285a str r7, [sp, 8] | var_8h = r7;
0x0000285c add r3, pc | r3 = 0x50e6;
0x0000285e str r3, [sp, 4] | var_4h = r3;
0x00002860 add r2, pc | r2 = 0x50ee;
0x00002862 ldr r3, [pc, 0x28] |
0x00002864 adds r2, 7 | r2 += 7;
0x00002866 add r3, pc | r3 = 0x50f8;
0x00002868 str r3, [sp] | *(sp) = r3;
0x0000286a mov.w r3, 0x134 | r3 = 0x134;
0x0000286e blx 0x1180 | r0 = log_internal ();
0x00002872 mov r3, r0 | r3 = r0;
0x00002874 b 0x27f4 | goto label_42;
| }
[*] Function printf used 9 times systemd-delta