[*] Binary protection state of systemd-run

  
  	Full RELRO     Canary found      NX enabled   PIE enabled  RPATH        No RUNPATH   No Symbols


[*] Function system tear down of systemd-run



r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/systemd-run @ 0x593c).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.
    ; 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-run @ 0x7510 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00007510 ()                          | void fcn_00007510 (int16_t arg_1ch, uint32_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
                                                     |     r3 = arg4;
    0x00007510 mvnsmi lr, 0xb4000                    |     __asm ("mvnsmi lr, 0xb4000");
    0x00007514 cmp r0, r2                            |     
    0x00007516 mov r5, r1                            |     r5 = r1;
    0x00007518 mov r4, r0                            |     r4 = r0;
    0x0000751a sbcs.w r1, r5, r3                     |     __asm ("sbcs.w r1, r5, r3");
    0x0000751e it lo                                 |     
                                                     |     if (r0 >= r2) {
    0x00007520 movlo r0, 0                           |         r0 = 0;
                                                     |     }
    0x00007522 ldr r7, [sp, 0x1c]                    |     r7 = *(arg_1ch);
    0x00007524 it lo                                 |     
                                                     |     if (r0 >= r2) {
    0x00007526 movlo r1, r0                          |         r1 = r0;
                                                     |     }
                                                     |     if (r0 <= r2) {
    0x00007528 blo 0x75f0                            |         goto label_3;
                                                     |     }
    0x0000752a clz r6, r3                            |     r6 &= r3;
    0x0000752e cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00007530 beq 0x7602                            |         goto label_4;
                                                     |     }
    0x00007532 clz r1, r5                            |     r1 &= r5;
    0x00007536 cmp r5, 0                             |     
                                                     |     if (r5 == 0) {
    0x00007538 beq 0x75fa                            |         goto label_2;
                                                     |     }
                                                     | label_1:
    0x0000753a subs r6, r6, r1                       |     r6 -= r1;
    0x0000753c sub.w ip, r6, 0x20                    |     
    0x00007540 lsls r3, r6                           |     r3 <<= r6;
    0x00007542 lsl.w r1, r2, ip                      |     r1 = r2 << ip;
    0x00007546 rsb.w lr, r6, 0x20                    |     lr = 0x20 - r6;
    0x0000754a orrs r3, r1                           |     r3 |= r1;
    0x0000754c lsr.w r1, r2, lr                      |     r1 = r2 >> lr;
    0x00007550 lsls r2, r6                           |     r2 <<= r6;
    0x00007552 orrs r3, r1                           |     r3 |= r1;
    0x00007554 cmp r4, r2                            |     
    0x00007556 sbcs.w r1, r5, r3                     |     __asm ("sbcs.w r1, r5, r3");
    0x0000755a itt lo                                |     
                                                     |     if (r4 >= r2) {
    0x0000755c movlo r0, 0                           |         r0 = 0;
                                                     |     }
                                                     |     if (r4 >= r2) {
    0x0000755e movlo r1, r0                          |         r1 = r0;
                                                     |     }
                                                     |     if (r4 > r2) {
    0x00007560 blo 0x757a                            |         
    0x00007562 movs r0, 1                            |         r0 = 1;
    0x00007564 subs r4, r4, r2                       |         r4 -= r2;
    0x00007566 lsl.w r1, r0, ip                      |         r1 = r0 << ip;
    0x0000756a lsr.w r8, r0, lr                      |         r8 = r0 >> lr;
    0x0000756e lsl.w r0, r0, r6                      |         r0 <<= r6;
    0x00007572 sbc.w r5, r5, r3                      |         __asm ("sbc.w r5, r5, r3");
    0x00007576 orr.w r1, r1, r8                      |         r1 |= r8;
                                                     |     }
                                                     |     if (r6 == 0) {
    0x0000757a cbz r6, 0x75f0                        |         goto label_3;
                                                     |     }
    0x0000757c lsrs r2, r2, 1                        |     r2 >>= 1;
    0x0000757e mov r8, r6                            |     r8 = r6;
    0x00007580 orr.w r2, r2, r3, lsl 31              |     r2 |= (r3 << 31);
    0x00007584 lsrs r3, r3, 1                        |     r3 >>= 1;
    0x00007586 b 0x759e                              |     
                                                     |     while (r4 >= r2) {
    0x00007588 subs r4, r4, r2                       |         r4 -= r2;
    0x0000758a sbc.w r5, r5, r3                      |         __asm ("sbc.w r5, r5, r3");
    0x0000758e adds r4, r4, r4                       |         r4 += r4;
    0x00007590 adcs r5, r5                           |         __asm ("adcs r5, r5");
    0x00007592 adds r4, 1                            |         r4++;
    0x00007594 adc r5, r5, 0                         |         __asm ("adc r5, r5, 0");
    0x00007598 subs.w r8, r8, 1                      |         r8--;
                                                     |         if (r8 == r8) {
    0x0000759c beq 0x75b0                            |             goto label_5;
                                                     |         }
                                                     | label_0:
    0x0000759e cmp r4, r2                            |         
    0x000075a0 sbcs.w sb, r5, r3                     |         __asm ("sbcs.w sb, r5, r3");
    0x000075a4 bhs 0x7588                            |         
                                                     |     }
    0x000075a6 adds r4, r4, r4                       |     r4 += r4;
    0x000075a8 adcs r5, r5                           |     __asm ("adcs r5, r5");
    0x000075aa subs.w r8, r8, 1                      |     r8--;
                                                     |     if (r8 != r8) {
    0x000075ae bne 0x759e                            |         goto label_0;
                                                     |     }
                                                     | label_5:
    0x000075b0 adds r0, r0, r4                       |     r0 += r4;
    0x000075b2 lsl.w lr, r5, lr                      |     lr = r5 << lr;
    0x000075b6 lsr.w r4, r4, r6                      |     r4 >>= r6;
    0x000075ba lsr.w ip, r5, ip                      |     
    0x000075be adc.w r1, r1, r5                      |     __asm ("adc.w r1, r1, r5");
    0x000075c2 orr.w r4, r4, lr                      |     r4 |= lr;
    0x000075c6 lsrs r5, r6                           |     r5 >>= r6;
    0x000075c8 orr.w r4, r4, ip                      |     r4 |= ip;
    0x000075cc sub.w ip, r6, 0x20                    |     
    0x000075d0 lsl.w ip, r4, ip                      |     
    0x000075d4 lsl.w r2, r5, r6                      |     r2 = r5 << r6;
    0x000075d8 rsb.w r3, r6, 0x20                    |     r3 = 0x20 - r6;
    0x000075dc orr.w r2, r2, ip                      |     r2 |= ip;
    0x000075e0 lsr.w r3, r4, r3                      |     r3 = r4 >> r3;
    0x000075e4 orrs r2, r3                           |     r2 |= r3;
    0x000075e6 lsl.w r3, r4, r6                      |     r3 = r4 << r6;
    0x000075ea subs r0, r0, r3                       |     r0 -= r3;
    0x000075ec sbc.w r1, r1, r2                      |     __asm ("sbc.w r1, r1, r2");
                                                     |     if (r7 != 0) {
                                                     | label_3:
    0x000075f0 cbz r7, 0x75f6                        |         
    0x000075f2 strd r4, r5, [r7]                     |         __asm ("strd r4, r5, [r7]");
                                                     |     }
    0x000075f6 pop.w {r4, r5, r6, r7, r8, sb, pc}    |     
                                                     | label_2:
    0x000075fa clz r1, r4                            |     r1 &= r4;
    0x000075fe adds r1, 0x20                         |     r1 += 0x20;
    0x00007600 b 0x753a                              |     goto label_1;
                                                     | label_4:
    0x00007602 clz r6, r2                            |     r6 &= r2;
    0x00007606 clz r1, r5                            |     r1 &= r5;
    0x0000760a adds r6, 0x20                         |     r6 += 0x20;
    0x0000760c cmp r5, 0                             |     
                                                     |     if (r5 != 0) {
    0x0000760e bne 0x753a                            |         goto label_1;
                                                     |     }
    0x00007610 b 0x75fa                              |     goto label_2;
                                                     | }

[*] Function system used 4 times systemd-run