[*] Binary protection state of libsystemd.so.0.32.0

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


[*] Function strcat tear down of libsystemd.so.0.32.0

    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.32.0 @ 0x23fd4 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00023fd4 ()                          | void fcn_00023fd4 (int16_t arg_30h, int16_t arg_34h, int16_t arg_38h, uint32_t arg1, uint32_t arg2, uint32_t arg3, int16_t arg4) {
                                                     |     int32_t var_0h;
                                                     |     int32_t var_0h_2;
                                                     |     int16_t var_8h;
                                                     |     int16_t var_ch;
                                                     |     int16_t var_10h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
                                                     |     r3 = arg4;
    0x00023fd4 mvnsmi lr, sp, lsr 18                 |     __asm ("mvnsmi lr, sp, lsr 18");
    0x00023fd8 sub sp, 0x18                          |     
    0x00023fda ldr r7, [sp, 0x30]                    |     r7 = *(arg_30h);
    0x00023fdc cmp r0, 0                             |     
                                                     |     if (arg_30h == ) {
    0x00023fde beq 0x2409a                           |         goto label_0;
                                                     |     }
    0x00023fe0 mov r4, r1                            |     r4 = r1;
    0x00023fe2 cmp r1, 0                             |     
                                                     |     if (r1 == 0) {
    0x00023fe4 beq 0x240b0                           |         goto label_1;
                                                     |     }
    0x00023fe6 mov r6, r2                            |     r6 = r2;
    0x00023fe8 cmp r2, 0                             |     
                                                     |     if (r2 == 0) {
    0x00023fea beq 0x240c6                           |         goto label_2;
                                                     |     }
    0x00023fec mov r8, r3                            |     r8 = r3;
    0x00023fee cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00023ff0 beq 0x240dc                           |         goto label_3;
                                                     |     }
    0x00023ff2 cmp r7, 0                             |     
                                                     |     if (r7 == 0) {
    0x00023ff4 beq 0x240f2                           |         goto label_4;
                                                     |     }
    0x00023ff6 ldr r3, [r3, 0x10]                    |     r3 = *((r3 + 0x10));
    0x00023ff8 mov r5, r0                            |     r5 = r0;
    0x00023ffa ldr.w r3, [r3, 1]                     |     r3 = *((r3 + 1));
    0x00023ffc adds r0, 1                            |     r0++;
    0x00023ffe lsls r2, r3, 0x17                     |     r2 = r3 << 0x17;
                                                     |     if (r2 < r3) {
    0x00024000 bpl 0x2400c                           |         
    0x00024002 mov r0, r1                            |         r0 = r1;
    0x00024004 blx 0xe4fc                            |         r0 = fcn_0000e4fc ();
    0x00024008 cmp r0, 0                             |         
                                                     |         if (r0 < 0) {
    0x0002400a blt 0x24094                           |             goto label_5;
                                                     |         }
                                                     |     }
    0x0002400c ldr r2, [pc, 0xfc]                    |     
    0x0002400e movs r1, 0x65                         |     r1 = 0x65;
    0x00024010 mov r0, r4                            |     r0 = r4;
    0x00024012 add r2, pc                            |     r2 = 0x48122;
    0x00024014 blx 0xe6d8                            |     r0 = abort ();
    0x00024018 cmp r0, 0                             |     
                                                     |     if (r0 < 0) {
    0x0002401a blt 0x24094                           |         goto label_5;
                                                     |     }
    0x0002401c ldr r1, [pc, 0xf0]                    |     
    0x0002401e mov r0, r4                            |     r0 = r4;
    0x00024020 ldr r2, [r7, 8]                       |     r2 = *((r7 + 8));
    0x00024022 add r1, pc                            |     r1 = 0x48136;
    0x00024024 blx 0xe2fc                            |     r0 = fcn_0000e2fc ();
    0x00024028 cmp r0, 0                             |     
                                                     |     if (r0 < 0) {
    0x0002402a blt 0x24094                           |         goto label_5;
                                                     |     }
    0x0002402c ldr r2, [r7, 0xc]                     |     r2 = *((r7 + 0xc));
    0x0002402e movs r1, 0x76                         |     r1 = 0x76;
    0x00024030 mov r0, r4                            |     r0 = r4;
    0x00024032 blx 0xe6d8                            |     r0 = abort ();
    0x00024036 cmp r0, 0                             |     
                                                     |     if (r0 < 0) {
    0x00024038 blt 0x24094                           |         goto label_5;
                                                     |     }
    0x0002403a ldr r3, [sp, 0x34]                    |     r3 = *(arg_34h);
    0x0002403c sub.w r1, r8, 0x20                    |     r1 = r8 - 0x20;
    0x00024040 ldr.w r2, [r8, 0xc]                   |     r2 = *((r8 + 0xc));
    0x00024044 ldr r0, [r7, 8]                       |     r0 = *((r7 + 8));
    0x00024046 ldr.w lr, [r7, 0x18]                  |     
    0x0002404a cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x0002404c beq 0x24108                           |         goto label_6;
                                                     |     }
    0x0002404e ldr.w ip, [r7, 1]                     |     ip = *((r7 + 1));
    0x00024052 tst.w ip, 0x200                       |     
                                                     |     if ((ip & 0x200) != 0) {
    0x00024056 bne 0x24108                           |         goto label_6;
                                                     |     }
    0x00024058 ldr r3, [sp, 0x34]                    |     r3 = *(arg_34h);
    0x0002405a add r3, lr                            |     r3 += lr;
                                                     |     do {
    0x0002405c strd r2, r0, [sp]                     |         __asm ("strd r2, r0, [sp]");
    0x00024060 mov r2, r7                            |         r2 = r7;
    0x00024062 ldr r0, [sp, 0x38]                    |         r0 = *(arg_38h);
    0x00024064 str r3, [sp, 0xc]                     |         var_ch = r3;
    0x00024066 mov r3, r6                            |         r3 = r6;
    0x00024068 str r4, [sp, 8]                       |         var_8h = r4;
    0x0002406a str r0, [sp, 0x10]                    |         var_10h = r0;
    0x0002406c mov r0, r5                            |         r0 = r5;
    0x0002406e bl 0x23ac0                            |         r0 = fcn_00023ac0 (r0, r1, r2, r3);
    0x00024072 cmp r0, 0                             |         
                                                     |         if (r0 >= 0) {
    0x00024074 blt 0x24094                           |             
    0x00024076 ldrb r3, [r5, 0x1d]                   |             r3 = *((r5 + 0x1d));
    0x00024078 lsls r3, r3, 0x1e                     |             r3 <<= 0x1e;
    0x0002407a it mi                                 |             
                                                     |             if (r3 >= r3) {
    0x0002407c movmi r0, 0                           |                 r0 = 0;
                                                     |             }
                                                     |             if (r3 < r3) {
    0x0002407e bmi 0x24094                           |                 goto label_5;
                                                     |             }
    0x00024080 mov r0, r4                            |             r0 = r4;
    0x00024082 blx 0xd458                            |             r0 = fcn_0000d458 ();
    0x00024086 cmp r0, 0                             |             
                                                     |             if (r0 < 0) {
    0x00024088 blt 0x24094                           |                 goto label_5;
                                                     |             }
    0x0002408a mov r0, r4                            |             r0 = r4;
    0x0002408c blx 0xd458                            |             r0 = fcn_0000d458 ();
    0x00024090 and.w r0, r0, r0, asr 31              |             r0 &= (r0 >> 31);
                                                     |         }
                                                     | label_5:
    0x00024094 add sp, 0x18                          |         
    0x00024096 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_0:
    0x0002409a ldr r1, [pc, 0x78]                    |         
    0x0002409c mov.w r2, 0x2c8                       |         r2 = 0x2c8;
    0x000240a0 ldr r3, [pc, 0x74]                    |         
    0x000240a2 ldr r0, [pc, 0x78]                    |         
    0x000240a4 add r1, pc                            |         r1 = 0x481be;
    0x000240a6 add r3, pc                            |         r3 = 0x481c2;
    0x000240a8 adds r1, 7                            |         r1 += 7;
    0x000240aa add r0, pc                            |         r0 = 0x481cc;
    0x000240ac bl 0x66580                            |         fcn_00066580 (r0, r1, r2, r3, r4);
                                                     | label_1:
    0x000240b0 ldr r1, [pc, 0x6c]                    |         
    0x000240b2 movw r2, 0x2c9                        |         r2 = 0x2c9;
    0x000240b6 ldr r3, [pc, 0x6c]                    |         
    0x000240b8 ldr r0, [pc, 0x6c]                    |         
    0x000240ba add r1, pc                            |         r1 = 0x481de;
    0x000240bc add r3, pc                            |         r3 = 0x481e6;
    0x000240be adds r1, 7                            |         r1 += 7;
    0x000240c0 add r0, pc                            |         r0 = 0x481ec;
    0x000240c2 bl 0x66580                            |         fcn_00066580 (r0, r1, r2, r3, r4);
                                                     | label_2:
    0x000240c6 ldr r1, [pc, 0x64]                    |         
    0x000240c8 movw r2, 0x2ca                        |         r2 = 0x2ca;
    0x000240cc ldr r3, [pc, 0x60]                    |         
    0x000240ce ldr r0, [pc, 0x64]                    |         
    0x000240d0 add r1, pc                            |         r1 = 0x48202;
    0x000240d2 add r3, pc                            |         r3 = 0x48206;
    0x000240d4 adds r1, 7                            |         r1 += 7;
    0x000240d6 add r0, pc                            |         r0 = 0x48210;
    0x000240d8 bl 0x66580                            |         fcn_00066580 (r0, r1, r2, r3, r4);
                                                     | label_3:
    0x000240dc ldr r1, [pc, 0x58]                    |         
    0x000240de movw r2, 0x2cb                        |         r2 = 0x2cb;
    0x000240e2 ldr r3, [pc, 0x58]                    |         
    0x000240e4 ldr r0, [pc, 0x58]                    |         
    0x000240e6 add r1, pc                            |         r1 = 0x48222;
    0x000240e8 add r3, pc                            |         r3 = 0x4822a;
    0x000240ea adds r1, 7                            |         r1 += 7;
    0x000240ec add r0, pc                            |         r0 = 0x48230;
    0x000240ee bl 0x66580                            |         fcn_00066580 (r0, r1, r2, r3, r4);
                                                     | label_4:
    0x000240f2 ldr r1, [pc, 0x50]                    |         
    0x000240f4 mov.w r2, 0x2cc                       |         r2 = 0x2cc;
    0x000240f8 ldr r3, [pc, 0x4c]                    |         
    0x000240fa ldr r0, [pc, 0x50]                    |         
    0x000240fc add r1, pc                            |         r1 = 0x48246;
    0x000240fe add r3, pc                            |         r3 = 0x4824a;
    0x00024100 adds r1, 7                            |         r1 += 7;
    0x00024102 add r0, pc                            |         r0 = 0x48254;
    0x00024104 bl 0x66580                            |         fcn_00066580 (r0, r1, r2, r3, r4);
                                                     | label_6:
    0x00024108 mov r3, lr                            |         r3 = lr;
    0x0002410a b 0x2405c                             |         
                                                     |     } while (1);
                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.32.0 @ 0x419bc */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000419bc ()                                      | void fcn_000419bc (int16_t arg1) {
                                                                 |     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_1ch;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_1h;
                                                                 |     int16_t var_38h;
                                                                 |     int8_t var_30h;
                                                                 |     int16_t var_64h;
                                                                 |     int16_t var_0h_2;
                                                                 |     int16_t var_90h;
                                                                 |     r0 = arg1;
    0x000419bc sub sp, 8                                         |     
    0x000419be push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000419c2 sub sp, 0x6c                                      |     
    0x000419c4 add r1, sp, 0x90                                  |     r1 += var_90h;
    0x000419c6 ldr r4, [pc, 0x23c]                               |     
    0x000419c8 add.w sl, sp, 0x38                                |     sl += var_38h;
    0x000419cc mov r8, r0                                        |     r8 = r0;
    0x000419ce stm.w r1, {r2, r3}                                |     *(r1) = r2;
                                                                 |     *((r1 + 4)) = r3;
    0x000419d2 mov r0, sl                                        |     r0 = sl;
    0x000419d4 ldr r3, [pc, 0x230]                               |     r3 = *(0x41c08);
    0x000419d6 add r4, pc                                        |     r4 = 0x835e0;
    0x000419d8 movs r2, 0x28                                     |     r2 = 0x28;
    0x000419da movs r1, 0                                        |     r1 = 0;
    0x000419dc add.w sb, sp, 0x28                                |     sb += var_28h;
    0x000419e0 ldr r3, [r4, r3]                                  |     
    0x000419e2 ldr r3, [r3]                                      |     r3 = *(0x835e0);
    0x000419e4 str r3, [sp, 0x64]                                |     var_64h = r3;
    0x000419e6 mov.w r3, 0                                       |     r3 = 0;
    0x000419ea blx 0xe0a4                                        |     fcn_0000e0a4 ();
    0x000419ee add r3, sp, 0x90                                  |     r3 += var_90h;
    0x000419f0 ldm r3, {r0, r1, r2, r3}                          |     r0 = *(r3);
                                                                 |     r1 = *((r3 + 4));
                                                                 |     r2 = *((r3 + 8));
                                                                 |     r3 = *((r3 + 12));
    0x000419f2 stm.w sb, {r0, r1, r2, r3}                        |     *(sb) = r0;
                                                                 |     *((sb + 4)) = r1;
                                                                 |     *((sb + 8)) = r2;
                                                                 |     *((sb + 12)) = r3;
    0x000419f6 movs r1, 0                                        |     r1 = 0;
    0x000419f8 movs r0, 5                                        |     r0 = 5;
    0x000419fa blx 0xe344                                        |     r0 = fcn_0000e344 ();
                                                                 |     if (r0 != 0) {
    0x000419fe cbz r0, 0x41a08                                   |         
    0x00041a00 ldrb r3, [r0]                                     |         r3 = *(r0);
    0x00041a02 mov r5, r0                                        |         r5 = r0;
    0x00041a04 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00041a06 bne 0x41a90                                       |             goto label_9;
                                                                 |         }
                                                                 |     }
                                                                 | label_1:
    0x00041a08 movs r2, 0x20                                     |     r2 = 0x20;
    0x00041a0a mov r0, sl                                        |     r0 = sl;
    0x00041a0c movs r1, 0                                        |     r1 = 0;
    0x00041a0e movs r6, 0                                        |     r6 = 0;
    0x00041a10 blx 0xe0a4                                        |     fcn_0000e0a4 ();
    0x00041a14 ldr.w r3, [r8, 0x18]                              |     r3 = *((r8 + 0x18));
    0x00041a18 ldr.w r2, [r8, 0x20]                              |     r2 = *((r8 + 0x20));
    0x00041a1c ldr.w fp, [r8, 0x10]                              |     fp = *((r8 + 0x10));
    0x00041a20 mov r7, r3                                        |     r7 = r3;
    0x00041a22 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00041a24 cmp r6, r7                                        |     
    0x00041a26 mov r3, sl                                        |     r3 = sl;
    0x00041a28 mov sl, sb                                        |     sl = sb;
    0x00041a2a mov sb, r2                                        |     sb = r2;
    0x00041a2c mov r2, r3                                        |     r2 = r3;
                                                                 |     if (r6 >= r7) {
    0x00041a2e bhs 0x41a6e                                       |         goto label_2;
                                                                 |     }
                                                                 | label_0:
    0x00041a30 adds r4, r6, r7                                   |     r4 = r6 + r7;
    0x00041a32 mov r1, sl                                        |     r1 = sl;
    0x00041a34 lsrs r4, r4, 1                                    |     r4 >>= 1;
    0x00041a36 mla r5, r4, sb, fp                                |     __asm ("mla r5, r4, sb, fp");
    0x00041a3a add r5, r8                                        |     r5 += r8;
    0x00041a3c subs r3, r5, 1                                    |     r3 = r5 - 1;
    0x00041a3e add.w lr, r5, 0xf                                 |     lr = r5 + 0xf;
                                                                 |     do {
    0x00041a42 ldrb ip, [r1], 1                                  |         ip = *(r1);
                                                                 |         r1++;
    0x00041a46 ldrb r0, [r3, 1]!                                 |         r0 = *((r3 += 1));
    0x00041a4a cmp ip, r0                                        |         
                                                                 |         if (ip <= r0) {
    0x00041a4c blo 0x41ae8                                       |             goto label_10;
                                                                 |         }
                                                                 |         if (ip > r0) {
    0x00041a4e bhi 0x41a68                                       |             goto label_11;
                                                                 |         }
    0x00041a50 cmp lr, r3                                        |         
    0x00041a52 bne 0x41a42                                       |         
                                                                 |     } while (lr != r3);
    0x00041a54 mov r0, r2                                        |     r0 = r2;
    0x00041a56 add.w r1, r5, 0x10                                |     r1 = r5 + 0x10;
    0x00041a5a str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00041a5c blx 0xd4a4                                        |     r0 = fcn_0000d4a4 ();
    0x00041a60 cmp r0, 0                                         |     
    0x00041a62 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
                                                                 |     if (r0 < 0) {
    0x00041a64 blt 0x41ae8                                       |         goto label_10;
                                                                 |     }
                                                                 |     if (r0 == 0) {
    0x00041a66 beq 0x41af0                                       |         goto label_12;
                                                                 |     }
                                                                 | label_11:
    0x00041a68 adds r6, r4, 1                                    |     r6 = r4 + 1;
    0x00041a6a cmp r6, r7                                        |     
                                                                 |     if (r6 <= r7) {
    0x00041a6c blo 0x41a30                                       |         goto label_0;
                                                                 |     }
                                                                 | label_2:
    0x00041a6e movs r0, 0                                        |     r0 = 0;
                                                                 | label_3:
    0x00041a70 ldr r2, [pc, 0x198]                               |     
    0x00041a72 ldr r3, [pc, 0x194]                               |     r3 = *(0x41c0a);
    0x00041a74 add r2, pc                                        |     r2 = 0x83684;
    0x00041a76 ldr r3, [r2, r3]                                  |     r3 = *(0x83684);
    0x00041a78 ldr r2, [r3]                                      |     r2 = *(0x83684);
    0x00041a7a ldr r3, [sp, 0x64]                                |     r3 = var_64h;
    0x00041a7c eors r2, r3                                       |     r2 ^= r3;
    0x00041a7e mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00041a82 bne.w 0x41bfe                                     |         goto label_13;
                                                                 |     }
    0x00041a86 add sp, 0x6c                                      |     
    0x00041a88 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x00041a8c add sp, 8                                         |     
    0x00041a8e bx lr                                             |     return;
                                                                 | label_9:
    0x00041a90 ldr r3, [pc, 0x17c]                               |     
    0x00041a92 add r3, pc                                        |     r3 = 0x836a6;
    0x00041a94 ldm.w r3, {r0, r1, r2}                            |     r0 = *(r3);
                                                                 |     r1 = *((r3 + 4));
                                                                 |     r2 = *((r3 + 8));
    0x00041a98 add r3, sp, 0x1c                                  |     r3 += var_1ch;
    0x00041a9a stm.w r3, {r0, r1, r2}                            |     *(r3) = r0;
                                                                 |     *((r3 + 4)) = r1;
                                                                 |     *((r3 + 8)) = r2;
    0x00041a9e mov r0, r3                                        |     r0 = r3;
    0x00041aa0 mov r1, r5                                        |     r1 = r5;
    0x00041aa2 bl 0x6e644                                        |     r0 = fcn_0006e644 (r0, r1);
    0x00041aa6 mov r4, r0                                        |     r4 = r0;
    0x00041aa8 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00041aaa bne 0x41a08                                       |         goto label_1;
                                                                 |     }
    0x00041aac ldr r1, [pc, 0x164]                               |     
    0x00041aae mov r0, r5                                        |     r0 = r5;
    0x00041ab0 add r1, pc                                        |     r1 = 0x836c8;
    0x00041ab2 blx 0xd550                                        |     r0 = fcn_0000d550 ();
    0x00041ab6 cmp r0, 0x1f                                      |     
    0x00041ab8 mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r0 < 0x1f) {
    0x00041aba bls 0x41b02                                       |         goto label_14;
                                                                 |     }
    0x00041abc bl 0x65c6c                                        |     r0 = fcn_00065c6c ();
    0x00041ac0 cmp r0, 6                                         |     
                                                                 |     if (r0 <= 6) {
    0x00041ac2 ble 0x41a08                                       |         goto label_1;
                                                                 |     }
    0x00041ac4 ldr r3, [pc, 0x150]                               |     
    0x00041ac6 mov r1, r4                                        |     r1 = r4;
    0x00041ac8 ldr r2, [pc, 0x150]                               |     
    0x00041aca movs r0, 7                                        |     r0 = 7;
    0x00041acc str r5, [sp, 0xc]                                 |     var_ch = r5;
    0x00041ace add r3, pc                                        |     r3 = 0x836ea;
    0x00041ad0 str r6, [sp, 8]                                   |     var_8h = r6;
    0x00041ad2 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00041ad4 add r2, pc                                        |     r2 = 0x836f4;
    0x00041ad6 ldr r3, [pc, 0x148]                               |     
    0x00041ad8 adds r2, 7                                        |     r2 += 7;
    0x00041ada add r3, pc                                        |     r3 = 0x83700;
    0x00041adc str r3, [sp]                                      |     *(sp) = r3;
    0x00041ade movw r3, 0x233                                    |     r3 = 0x233;
    0x00041ae2 bl 0x664b0                                        |     fcn_000664b0 (r0, r1, r2, r3, r4, r5, r6);
    0x00041ae6 b 0x41a08                                         |     goto label_1;
                                                                 | label_10:
    0x00041ae8 cmp r6, r4                                        |     
                                                                 |     if (r6 >= r4) {
    0x00041aea bhs 0x41a6e                                       |         goto label_2;
                                                                 |     }
    0x00041aec mov r7, r4                                        |     r7 = r4;
    0x00041aee b 0x41a30                                         |     goto label_0;
                                                                 | label_12:
    0x00041af0 mov r2, sb                                        |     r2 = sb;
                                                                 | label_8:
    0x00041af2 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x00041af4 mla r3, r3, r2, fp                                |     __asm ("mla r3, r3, r2, fp");
    0x00041af8 ldr r2, [r5, 0x30]                                |     r2 = *((r5 + 0x30));
    0x00041afa add r3, r2                                        |     r3 += r2;
    0x00041afc add.w r0, r8, r3                                  |     r0 = r8 + r3;
    0x00041b00 b 0x41a70                                         |     goto label_3;
                                                                 | label_14:
    0x00041b02 mov r2, r0                                        |     r2 = r0;
    0x00041b04 movs r3, 0x20                                     |     r3 = 0x20;
    0x00041b06 mov r0, sl                                        |     r0 = sl;
    0x00041b08 mov r1, r5                                        |     r1 = r5;
    0x00041b0a blx 0xd870                                        |     fcn_0000d870 ();
    0x00041b0e ldr.w r2, [r8, 0x20]                              |     r2 = *((r8 + 0x20));
    0x00041b12 add.w r3, r6, 0x68                                |     r3 = r6 + 0x68;
    0x00041b16 ldr.w r7, [r8, 0x18]                              |     r7 = *((r8 + 0x18));
    0x00041b1a add.w r6, sp, r3                                  |     r6 = sp + r3;
    0x00041b1e mov r3, sl                                        |     r3 = sl;
    0x00041b20 ldr.w fp, [r8, 0x10]                              |     fp = *((r8 + 0x10));
    0x00041b24 mov sl, sb                                        |     sl = sb;
    0x00041b26 mov sb, r8                                        |     sb = r8;
    0x00041b28 mov r8, r2                                        |     r8 = r2;
    0x00041b2a mov r2, r3                                        |     r2 = r3;
    0x00041b2c strb r4, [r6, -0x30]                              |     var_30h = r4;
    0x00041b30 str r7, [sp, 0x14]                                |     var_14h = r7;
                                                                 | label_4:
    0x00041b32 cmp r7, r4                                        |     
                                                                 |     if (r7 < r4) {
    0x00041b34 bls 0x41b7a                                       |         goto label_15;
                                                                 |     }
                                                                 | label_5:
    0x00041b36 adds r6, r4, r7                                   |     r6 = r4 + r7;
    0x00041b38 mov r1, sl                                        |     r1 = sl;
    0x00041b3a lsrs r6, r6, 1                                    |     r6 >>= 1;
    0x00041b3c mla r5, r6, r8, fp                                |     __asm ("mla r5, r6, r8, fp");
    0x00041b40 add r5, sb                                        |     r5 += sb;
    0x00041b42 subs r3, r5, 1                                    |     r3 = r5 - 1;
    0x00041b44 add.w lr, r5, 0xf                                 |     lr = r5 + 0xf;
                                                                 |     do {
    0x00041b48 ldrb ip, [r1], 1                                  |         ip = *(r1);
                                                                 |         r1++;
    0x00041b4c ldrb r0, [r3, 1]!                                 |         r0 = *((r3 += 1));
    0x00041b50 cmp ip, r0                                        |         
                                                                 |         if (ip <= r0) {
    0x00041b52 blo 0x41b72                                       |             goto label_16;
                                                                 |         }
                                                                 |         if (ip > r0) {
    0x00041b54 bhi 0x41b6e                                       |             goto label_17;
                                                                 |         }
    0x00041b56 cmp r3, lr                                        |         
    0x00041b58 bne 0x41b48                                       |         
                                                                 |     } while (r3 != lr);
    0x00041b5a mov r0, r2                                        |     r0 = r2;
    0x00041b5c add.w r1, r5, 0x10                                |     r1 = r5 + 0x10;
    0x00041b60 str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00041b62 blx 0xd4a4                                        |     r0 = fcn_0000d4a4 ();
    0x00041b66 cmp r0, 0                                         |     
    0x00041b68 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
                                                                 |     if (r0 >= 0) {
    0x00041b6a blt 0x41b72                                       |         
                                                                 |         if (r0 == 0) {
    0x00041b6c beq 0x41bf0                                       |             goto label_18;
                                                                 |         }
                                                                 | label_17:
    0x00041b6e adds r4, r6, 1                                    |         r4 = r6 + 1;
    0x00041b70 b 0x41b32                                         |         goto label_4;
                                                                 |     }
                                                                 | label_16:
    0x00041b72 cmp r6, r4                                        |     
                                                                 |     if (r6 >= r4) {
    0x00041b74 bls 0x41b7a                                       |         
    0x00041b76 mov r7, r6                                        |         r7 = r6;
    0x00041b78 b 0x41b36                                         |         goto label_5;
                                                                 |     }
                                                                 | label_15:
    0x00041b7a mov r3, r2                                        |     r3 = r2;
    0x00041b7c movs r1, 0x5f                                     |     r1 = 0x5f;
    0x00041b7e mov r2, r8                                        |     r2 = r8;
    0x00041b80 mov r0, r3                                        |     r0 = r3;
    0x00041b82 str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00041b84 mov r8, sb                                        |     r8 = sb;
    0x00041b86 mov sb, sl                                        |     sb = sl;
    0x00041b88 mov sl, r3                                        |     sl = r3;
    0x00041b8a blx 0xded4                                        |     fcn_0000ded4 ();
    0x00041b8e ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x00041b90 mov r3, r0                                        |     r3 = r0;
    0x00041b92 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00041b94 beq.w 0x41a08                                     |         goto label_1;
                                                                 |     }
    0x00041b98 movs r4, 0                                        |     r4 = 0;
    0x00041b9a mov r7, sl                                        |     r7 = sl;
    0x00041b9c strb r4, [r3]                                     |     *(r3) = r4;
    0x00041b9e mov sl, sb                                        |     sl = sb;
    0x00041ba0 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x00041ba2 mov sb, r8                                        |     sb = r8;
    0x00041ba4 mov r8, r2                                        |     r8 = r2;
    0x00041ba6 str r3, [sp, 0x10]                                |     var_10h = r3;
                                                                 | label_6:
    0x00041ba8 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00041baa cmp r4, r3                                        |     
                                                                 |     if (r4 >= r3) {
    0x00041bac bhs 0x41bf6                                       |         goto label_19;
                                                                 |     }
                                                                 | label_7:
    0x00041bae ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00041bb0 mov r2, sl                                        |     r2 = sl;
    0x00041bb2 adds r6, r4, r3                                   |     r6 = r4 + r3;
    0x00041bb4 lsrs r6, r6, 1                                    |     r6 >>= 1;
    0x00041bb6 mla r5, r6, r8, fp                                |     __asm ("mla r5, r6, r8, fp");
    0x00041bba add r5, sb                                        |     r5 += sb;
    0x00041bbc subs r3, r5, 1                                    |     r3 = r5 - 1;
    0x00041bbe add.w ip, r5, 0xf                                 |     
                                                                 |     do {
    0x00041bc2 ldrb r0, [r2], 1                                  |         r0 = *(r2);
                                                                 |         r2++;
    0x00041bc6 ldrb r1, [r3, 1]!                                 |         r1 = *((r3 += 1));
    0x00041bca cmp r0, r1                                        |         
                                                                 |         if (r0 <= r1) {
    0x00041bcc blo 0x41be8                                       |             goto label_20;
                                                                 |         }
                                                                 |         if (r0 > r1) {
    0x00041bce bhi 0x41be4                                       |             goto label_21;
                                                                 |         }
    0x00041bd0 cmp ip, r3                                        |         
    0x00041bd2 bne 0x41bc2                                       |         
                                                                 |     } while (ip != r3);
    0x00041bd4 add.w r1, r5, 0x10                                |     r1 = r5 + 0x10;
    0x00041bd8 mov r0, r7                                        |     r0 = r7;
    0x00041bda blx 0xd4a4                                        |     r0 = fcn_0000d4a4 ();
    0x00041bde cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x00041be0 blt 0x41be8                                       |         
                                                                 |         if (r0 == 0) {
    0x00041be2 beq 0x41bf0                                       |             goto label_18;
                                                                 |         }
                                                                 | label_21:
    0x00041be4 adds r4, r6, 1                                    |         r4 = r6 + 1;
    0x00041be6 b 0x41ba8                                         |         goto label_6;
                                                                 |     }
                                                                 | label_20:
    0x00041be8 cmp r4, r6                                        |     
                                                                 |     if (r4 < r6) {
    0x00041bea bhs 0x41bf6                                       |         
    0x00041bec str r6, [sp, 0x10]                                |         var_10h = r6;
    0x00041bee b 0x41bae                                         |         goto label_7;
                                                                 | label_18:
    0x00041bf0 mov r2, r8                                        |         r2 = r8;
    0x00041bf2 mov r8, sb                                        |         r8 = sb;
    0x00041bf4 b 0x41af2                                         |         goto label_8;
                                                                 |     }
                                                                 | label_19:
    0x00041bf6 mov r8, sb                                        |     r8 = sb;
    0x00041bf8 mov sb, sl                                        |     sb = sl;
    0x00041bfa mov sl, r7                                        |     sl = r7;
    0x00041bfc b 0x41a08                                         |     goto label_1;
                                                                 | label_13:
    0x00041bfe blx 0xd8a4                                        |     fcn_0000d8a4 ();
    0x00041c02 nop                                               |     
    0x00041c04 udf 0x92                                          |     __asm ("udf 0x92");
                                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.32.0 @ 0x62f80 */
                                                 | #include <stdint.h>
                                                 |  
                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                 |  
    ; (fcn) fcn.00062f80 ()                      | void fcn_00062f80 (int16_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
                                                 |     r2 = arg3;
                                                 |     r3 = arg4;
    0x00062f80 invalid                           |     
    0x00062f84 ldrb.w ip, [r0, 0x27]             |     ip = *((r0 + 0x27));
    0x00062f88 mov r4, r0                        |     r4 = r0;
    0x00062f8a mov r6, r2                        |     r6 = r2;
    0x00062f8c ands r1, ip, 4                    |     r1 = ip & 4;
                                                 |     if (r1 == ip) {
    0x00062f90 beq 0x63048                       |         goto label_4;
                                                 |     }
    0x00062f92 ldr r2, [r0, 0x1c]                |     r2 = *((r0 + 0x1c));
    0x00062f94 cmp r5, r2                        |     
                                                 |     if (r5 >= r2) {
    0x00062f96 bhs 0x6305a                       |         goto label_5;
                                                 |     }
                                                 |     do {
    0x00062f98 cmp r3, 0                         |         
                                                 |         if (r3 != 0) {
    0x00062f9a bne 0x63076                       |             goto label_6;
                                                 |         }
    0x00062f9c cmp r1, 0                         |         
                                                 |         if (r1 != 0) {
    0x00062f9e bne 0x63070                       |             goto label_3;
                                                 |         }
                                                 | label_2:
    0x00062fa0 ldr r3, [pc, 0x14c]               |         
    0x00062fa2 and r1, ip, 3                     |         r1 = ip & 3;
    0x00062fa6 ubfx r2, ip, 3, 3                 |         r2 = (ip >> 3) & ((1 << 3) - 1);
    0x00062faa add r3, pc                        |         r3 = 0xc609e;
    0x00062fac add.w r3, r3, r1, lsl 4           |         r3 += (r1 << 4);
    0x00062fb0 ldr r3, [r3, 0xc]                 |         r3 = *((r3 + 0xc));
                                                 | label_0:
    0x00062fb2 cmp r3, r2                        |         
                                                 |         if (r3 < r2) {
    0x00062fb4 bls 0x630ac                       |             goto label_7;
                                                 |         }
    0x00062fb6 and ip, ip, 3                     |         
    0x00062fba cmp.w ip, 1                       |         
                                                 |         if (ip == 1) {
    0x00062fbe bne 0x6300c                       |             
    0x00062fc0 mov.w r3, -1                      |             r3 = -1;
    0x00062fc4 str r3, [r6, 8]                   |             *((r6 + 8)) = r3;
    0x00062fc6 ldr r3, [r4, 0x30]                |             r3 = *((r4 + 0x30));
    0x00062fc8 adds r1, r3, 1                    |             r1 = r3 + 1;
    0x00062fca str r3, [r6, 0xc]                 |             *((r6 + 0xc)) = r3;
                                                 |             if (r1 != r3) {
    0x00062fcc beq 0x62ffe                       |                 
    0x00062fce ldrb.w ip, [r4, 0x27]             |                 ip = *((r4 + 0x27));
    0x00062fd2 ldr r1, [pc, 0x120]               |                 
    0x00062fd4 tst.w ip, 4                       |                 
    0x00062fd8 and ip, ip, 3                     |                 
    0x00062fdc add r1, pc                        |                 r1 = 0xc60d6;
    0x00062fde it ne                             |                 
                                                 |                 if ((ip & 4) == 0) {
    0x00062fe0 ldrne r2, [r4, 4]                 |                     r2 = *((r4 + 4));
                                                 |                 }
    0x00062fe2 add.w r1, r1, ip, lsl 4           |                 r1 += (ip << 4);
    0x00062fe6 it eq                             |                 
                                                 |                 if ((ip & 4) != 0) {
    0x00062fe8 addeq r2, r4, 4                   |                     r2 = r4 + 4;
                                                 |                 }
    0x00062fea ldr r1, [r1, 4]                   |                 r1 = *((r1 + 4));
    0x00062fec mla r3, r1, r3, r2                |                 __asm ("mla r3, r1, r3, r2");
    0x00062ff0 ldr r2, [r3, 8]                   |                 r2 = *((r3 + 8));
    0x00062ff2 adds r2, 1                        |                 r2++;
    0x00062ff4 itt eq                            |                 
                                                 |                 if (r2 != 1) {
    0x00062ff6 mvneq r2, 3                       |                     r2 = ~3;
                                                 |                 }
                                                 |                 if (r2 != 1) {
    0x00062ff8 lsleq r3, r0, 8                   |                     r3 = r0 << 8;
                                                 |                 }
    0x00062ffa str r2, [r3, 8]                   |                 *((r3 + 8)) = r2;
                                                 |                 if (r2 != 1) {
    0x00062ffc bne 0x630d8                       |                     goto label_8;
                                                 |                 }
                                                 |             }
    0x00062ffe ldr r2, [r4, 0x2c]                |             r2 = *((r4 + 0x2c));
    0x00063000 mvn r3, 3                         |             r3 = ~3;
    0x00063004 str r3, [r4, 0x30]                |             *((r4 + 0x30)) = r3;
    0x00063006 adds r2, 1                        |             r2++;
    0x00063008 it eq                             |             
                                                 |             if (r2 == 1) {
    0x0006300a streq r3, [r4, 0x2c]              |                 *((r4 + 0x2c)) = r3;
                                                 |                 goto label_9;
                                                 |             }
                                                 |         }
                                                 | label_9:
    0x0006300c mov r2, r6                        |         r2 = r6;
    0x0006300e mov r1, r5                        |         r1 = r5;
    0x00063010 mov r0, r4                        |         r0 = r4;
    0x00063012 bl 0x62a14                        |         fcn_00062a14 (r0, r1, r2, r3);
    0x00063014 ldc2l p8, c2, [pc], 0             |         __asm ("ldc2l p8, c2, [pc], 0");
                                                 |         if (r2 != 1) {
    0x00063018 bne 0x630c2                       |             goto label_10;
                                                 |         }
    0x0006301a ldrb.w r3, [r4, 0x27]             |         r3 = *((r4 + 0x27));
    0x0006301e movs r0, 1                        |         r0 = 1;
    0x00063020 lsls r2, r3, 0x1d                 |         r2 = r3 << 0x1d;
    0x00063022 iteee mi                          |         
                                                 |         if (r2 >= r3) {
    0x00063024 ldrmi r3, [r4, 0x18]              |             r3 = *((r4 + 0x18));
                                                 |         }
                                                 |         if (r2 >= r3) {
    0x00063026 invalid                           |             
                                                 |         }
                                                 |         if (r2 < r3) {
    0x00063028 lslpl r2, r0, 0xb                 |             r2 = r0 << 0xb;
                                                 |         }
                                                 |         if (r2 < r3) {
    0x0006302a addpl r2, 1                       |             r2++;
                                                 |         }
    0x0006302c bfi r3, r2, 3, 3                  |         value_0 = BIT_MASK (3, 3);
                                                 |         value_1 = r2 & value_0;
                                                 |         value_0 = ~value_0;
                                                 |         r3 &= value_0;
                                                 |         r3 |= value_1;
    0x00063030 itet mi                           |         
                                                 |         if (r2 >= r3) {
    0x00063032 addmi r3, 1                       |             r3++;
                                                 |         }
                                                 |         if (r2 < r3) {
    0x00063034 strbpl r3, [r4, 0x27]             |             *((r4 + 0x27)) = r3;
                                                 |         }
                                                 |         if (r2 < r3) {
    0x00063038 str r3, [r4, 0x18]                |             *((r4 + 0x18)) = r3;
                                                 |         }
    0x0006303a ldrb.w r3, [r4, 0x27]             |         r3 = *((r4 + 0x27));
    0x0006303e orr r3, r3, 0x80                  |         r3 |= 0x80;
    0x00063040 lsls r0, r0, 0xe                  |         r0 <<= 0xe;
    0x00063042 strb.w r3, [r4, 0x27]             |         *((r4 + 0x27)) = r3;
                                                 | label_1:
    0x00063046 pop {r4, r5, r6, pc}              |         
                                                 | label_4:
    0x00063048 ldr r2, [pc, 0xac]                |         
    0x0006304a and r0, ip, 3                     |         r0 = ip & 3;
    0x0006304e add r2, pc                        |         r2 = 0xc614a;
    0x00063050 add.w r2, r2, r0, lsl 4           |         r2 += (r0 << 4);
    0x00063054 ldr r2, [r2, 0xc]                 |         r2 = *((r2 + 0xc));
    0x00063056 cmp r5, r2                        |         
    0x00063058 blo 0x62f98                       |         
                                                 |     } while (r5 <= r2);
                                                 | label_5:
    0x0006305a ldr r1, [pc, 0xa0]                |     
    0x0006305c movw r2, 0x3f5                    |     r2 = 0x3f5;
    0x00063060 ldr r3, [pc, 0x9c]                |     
    0x00063062 ldr r0, [pc, 0xa0]                |     
    0x00063064 add r1, pc                        |     r1 = 0xc6166;
    0x00063066 add r3, pc                        |     r3 = 0xc616a;
    0x00063068 adds r1, 7                        |     r1 += 7;
    0x0006306a add r0, pc                        |     r0 = 0xc6174;
    0x0006306c bl 0x66580                        |     fcn_00066580 (r0, r1, r2, r3, r4);
                                                 | label_3:
    0x00063070 ldrd r2, r3, [r4, 0x18]           |     __asm ("ldrd r2, r3, [r4, 0x18]");
    0x00063074 b 0x62fb2                         |     goto label_0;
                                                 | label_6:
    0x00063076 movs r1, 1                        |     r1 = 1;
    0x00063078 mov r0, r4                        |     r0 = r4;
    0x0006307a bl 0x62bd0                        |     r0 = void (*0x62bd0)(uint32_t, uint32_t) (r0, r1);
    0x0006307e cmp r0, 0                         |     
                                                 |     if (r0 < 0) {
    0x00063080 blt 0x63046                       |         goto label_1;
                                                 |     }
                                                 |     if (r0 != 0) {
    0x00063082 bne 0x63092                       |         goto label_11;
                                                 |     }
    0x00063084 ldrb.w ip, [r4, 0x27]             |     ip = *((r4 + 0x27));
    0x00063088 and r1, ip, 4                     |     r1 = ip & 4;
    0x0006308c cmp r1, 0                         |     
                                                 |     if (r1 == 0) {
    0x0006308e beq 0x62fa0                       |         goto label_2;
                                                 |     }
    0x00063090 b 0x63070                         |     goto label_3;
                                                 | label_11:
    0x00063092 ldr r1, [r6]                      |     r1 = *(r6);
    0x00063094 mov r0, r4                        |     r0 = r4;
    0x00063096 bl 0x624dc                        |     fcn_000624dc (r0, r1);
    0x00063098 sxtab16 r8, r1, r4, ror 8         |     __asm ("sxtab16 r8, r1, r4, ror 8");
    0x0006309c stm r0!, {r0, r1, r2, r5}         |     *(r0!) = r0;
                                                 |     *((r0! + 4)) = r1;
                                                 |     *((r0! + 8)) = r2;
                                                 |     *((r0! + 12)) = r5;
    0x0006309e mov r5, r0                        |     r5 = r0;
    0x000630a0 and r1, ip, 4                     |     r1 = ip & 4;
    0x000630a4 cmp r1, 0                         |     
                                                 |     if (r1 == 0) {
    0x000630a6 beq.w 0x62fa0                     |         goto label_2;
                                                 |     }
    0x000630a8 add r7, sp, 0x1ec                 |     r7 = sp + 0x1ec;
    0x000630aa b 0x63070                         |     goto label_3;
                                                 | label_7:
    0x000630ac ldr r1, [pc, 0x58]                |     
    0x000630ae mov.w r2, 0x400                   |     r2 = 0x400;
    0x000630b0 str r0, [r0, 0x28]                |     *((r0 + 0x28)) = r0;
    0x000630b2 ldr r3, [pc, 0x58]                |     
    0x000630b4 ldr r0, [pc, 0x58]                |     
    0x000630b6 add r1, pc                        |     r1 = 0xc61c2;
    0x000630b8 add r3, pc                        |     r3 = 0xc61ca;
    0x000630ba adds r1, 7                        |     r1 += 7;
    0x000630bc add r0, pc                        |     r0 = 0xc61d0;
    0x000630be bl 0x66580                        |     fcn_00066580 (r0, r1, r2, r3, r4);
                                                 | label_10:
    0x000630c2 ldr r1, [pc, 0x50]                |     
    0x000630c4 movw r2, 0x415                    |     r2 = 0x415;
    0x000630c8 ldr r3, [pc, 0x4c]                |     
    0x000630ca ldr r0, [pc, 0x50]                |     
    0x000630cc add r1, pc                        |     r1 = 0xc61e6;
    0x000630ce add r3, pc                        |     r3 = 0xc61ea;
    0x000630d0 adds r1, 7                        |     r1 += 7;
    0x000630d2 add r0, pc                        |     r0 = 0xc61f4;
    0x000630d4 bl 0x66580                        |     fcn_00066580 (r0, r1, r2, r3, r4);
                                                 | label_8:
    0x000630d8 ldr r1, [pc, 0x44]                |     
    0x000630da movw r2, 0x40c                    |     r2 = 0x40c;
    0x000630dc tst r4, r1                        |     
    0x000630de ldr r3, [pc, 0x44]                |     
    0x000630e0 ldr r0, [pc, 0x44]                |     
    0x000630e2 add r1, pc                        |     r1 = 0xc6206;
    0x000630e4 add r3, pc                        |     r3 = 0xc620e;
    0x000630e6 adds r1, 7                        |     r1 += 7;
    0x000630e8 add r0, pc                        |     r0 = 0xc6214;
    0x000630ea bl 0x66580                        |     fcn_00066580 (r0, r1, r2, r3, r4);
    0x000630ee nop                               |     
    0x000630f0 stm r3!, {r1, r4}                 |     *(r3!) = r1;
                                                 |     *((r3! + 4)) = r4;
    0x000630f2 movs r3, r0                       |     r3 = r0;
    0x000630f4 stm r2!, {r5, r6, r7}             |     *(r2!) = r5;
                                                 |     *((r2! + 4)) = r6;
                                                 |     *((r2! + 8)) = r7;
    0x000630f6 movs r3, r0                       |     r3 = r0;
    0x000630f8 stm r2!, {r1, r2, r3, r5, r6}     |     *(r2!) = r1;
                                                 |     *((r2! + 4)) = r2;
                                                 |     *((r2! + 8)) = r3;
                                                 |     *((r2! + 12)) = r5;
                                                 |     *((r2! + 16)) = r6;
    0x000630fa movs r3, r0                       |     r3 = r0;
    0x000630fc str r4, [r3, r5]                  |     *((r3 + r5)) = r4;
    0x000630fe movs r2, r0                       |     r2 = r0;
    0x00063100 strb r2, [r2, r0]                 |     *((r2 + r0)) = r2;
    0x00063102 movs r2, r0                       |     r2 = r0;
    0x00063104 str r2, [r6, r7]                  |     *((r6 + r7)) = r2;
    0x00063106 movs r2, r0                       |     r2 = r0;
    0x00063108 str r2, [r1, r4]                  |     *((r1 + r4)) = r2;
    0x0006310a movs r2, r0                       |     r2 = r0;
    0x0006310c strh r0, [r0, r7]                 |     *((r0 + r7)) = r0;
    0x0006310e movs r2, r0                       |     r2 = r0;
    0x00063110 strh r0, [r0, r0]                 |     *((r0 + r0)) = r0;
    0x00063112 movs r2, r0                       |     r2 = r0;
    0x00063114 str r4, [r6, r3]                  |     *((r6 + r3)) = r4;
    0x00063116 movs r2, r0                       |     r2 = r0;
    0x00063118 strh r2, [r5, r6]                 |     *((r5 + r6)) = r2;
    0x0006311a movs r2, r0                       |     r2 = r0;
    0x0006311c strh r2, [r5, r0]                 |     *((r5 + r0)) = r2;
    0x0006311e movs r2, r0                       |     r2 = r0;
    0x00063120 str r6, [r3, r3]                  |     *((r3 + r3)) = r6;
    0x00063122 movs r2, r0                       |     r2 = r0;
    0x00063124 strh r4, [r2, r6]                 |     *((r2 + r6)) = r4;
    0x00063126 movs r2, r0                       |     r2 = r0;
    0x00063128 str r0, [r6, r7]                  |     *((r6 + r7)) = r0;
    0x0006312a movs r2, r0                       |     r2 = r0;
                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.32.0 @ 0x63304 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.00063304 ()                                      | void fcn_00063304 (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00063304 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00063308 sub sp, 0xc                                       |     
    0x0006330a ldrb.w r7, [r0, 0x27]                             |     r7 = *((r0 + 0x27));
    0x0006330e mov r5, r0                                        |     r5 = r0;
    0x00063310 mov r6, r1                                        |     r6 = r1;
    0x00063312 ldr r3, [pc, 0x27c]                               |     
    0x00063314 and r2, r7, 3                                     |     r2 = r7 & 3;
    0x00063318 ands sb, r7, 4                                    |     sb = r7 & 4;
    0x0006331c add r3, pc                                        |     r3 = 0xc68b2;
    0x0006331e add.w r3, r3, r2, lsl 4                           |     r3 += (r2 << 4);
    0x00063322 ldr r2, [r3, 4]                                   |     r2 = *((r3 + 4));
    0x00063324 str r2, [sp]                                      |     *(sp) = r2;
                                                                 |     if (sb == r7) {
    0x00063326 beq 0x63378                                       |         goto label_9;
                                                                 |     }
    0x00063328 ldr r3, [r0, 4]                                   |     r3 = *((r0 + 4));
    0x0006332a ldr.w sl, [r0, 0x1c]                              |     sl = *((r0 + 0x1c));
    0x0006332e str r3, [sp, 4]                                   |     var_4h = r3;
    0x00063330 mla r8, r2, sl, r3                                |     __asm ("mla r8, r2, sl, r3");
    0x00063334 ldrb.w r3, [r8, r1]                               |     r3 = *((r8 + r1));
    0x00063338 cmp r3, 0xff                                      |     
                                                                 |     if (r3 == 0xff) {
    0x0006333a beq 0x6338e                                       |         goto label_10;
                                                                 |     }
                                                                 | label_0:
    0x0006333c add.w fp, r6, 1                                   |     
    0x00063340 mov r1, sl                                        |     r1 = sl;
    0x00063342 mov r0, fp                                        |     r0 = fp;
    0x00063344 bl 0x71424                                        |     fcn_00071424 (r0, r1, r2);
    0x00063348 b 0x63352                                         |     
                                                                 |     while (r1 != r6) {
    0x0006334a adds r0, r1, 1                                    |         r0 = r1 + 1;
    0x0006334c mov r1, sl                                        |         r1 = sl;
    0x0006334e bl 0x71424                                        |         fcn_00071424 (r0, r1, r2);
    0x00063352 ldrb.w r3, [r8, r1]                               |         r3 = *((r8 + r1));
    0x00063356 subs r3, 1                                        |         r3--;
    0x00063358 uxtb r3, r3                                       |         r3 = (int8_t) r3;
    0x0006335a cmp r3, 0xfd                                      |         
                                                                 |         if (r3 > 0xfd) {
    0x0006335c bhi 0x633a4                                       |             goto label_11;
                                                                 |         }
    0x0006335e cmp r1, r6                                        |         
    0x00063360 bne 0x6334a                                       |         
                                                                 |     }
    0x00063362 ldr r1, [pc, 0x230]                               |     
    0x00063364 movw r2, 0x21e                                    |     r2 = 0x21e;
    0x00063368 ldr r3, [pc, 0x22c]                               |     
    0x0006336a ldr r0, [pc, 0x230]                               |     
    0x0006336c add r1, pc                                        |     r1 = 0xc6906;
    0x0006336e add r3, pc                                        |     r3 = 0xc690a;
    0x00063370 adds r1, 7                                        |     r1 += 7;
    0x00063372 add r0, pc                                        |     r0 = 0xc6914;
    0x00063374 bl 0x66580                                        |     fcn_00066580 (r0, r1, r2, r3, r4);
                                                                 | label_9:
    0x00063378 ldr.w sl, [r3, 0xc]                               |     sl = *((r3 + 0xc));
    0x0006337c adds r3, r0, 4                                    |     r3 = r0 + 4;
    0x0006337e ldr r2, [sp]                                      |     r2 = *(sp);
    0x00063380 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00063382 mla r8, r2, sl, r3                                |     __asm ("mla r8, r2, sl, r3");
    0x00063386 ldrb.w r3, [r8, r1]                               |     r3 = *((r8 + r1));
    0x0006338a cmp r3, 0xff                                      |     
                                                                 |     if (r3 != 0xff) {
    0x0006338c bne 0x6333c                                       |         goto label_0;
                                                                 |     }
                                                                 | label_10:
    0x0006338e ldr r1, [pc, 0x210]                               |     
    0x00063390 movw r2, 0x20d                                    |     r2 = 0x20d;
    0x00063394 ldr r3, [pc, 0x20c]                               |     
    0x00063396 ldr r0, [pc, 0x210]                               |     
    0x00063398 add r1, pc                                        |     r1 = 0xc693e;
    0x0006339a add r3, pc                                        |     r3 = 0xc6942;
    0x0006339c adds r1, 7                                        |     r1 += 7;
    0x0006339e add r0, pc                                        |     r0 = 0xc694c;
    0x000633a0 bl 0x66580                                        |     fcn_00066580 (r0, r1, r2, r3, r4);
                                                                 | label_11:
    0x000633a4 and r3, r7, 3                                     |     r3 = r7 & 3;
    0x000633a8 mov r4, r1                                        |     r4 = r1;
    0x000633aa cmp r3, 1                                         |     
                                                                 |     if (r3 == 1) {
    0x000633ac beq 0x63482                                       |         goto label_12;
                                                                 |     }
                                                                 | label_4:
    0x000633ae cmp.w sb, 0                                       |     
                                                                 |     if (sb != 0) {
    0x000633b2 bne 0x6347e                                       |         goto label_6;
                                                                 |     }
                                                                 | label_5:
    0x000633b4 ldr r3, [pc, 0x1f4]                               |     
    0x000633b6 and r2, r7, 3                                     |     r2 = r7 & 3;
    0x000633ba add r3, pc                                        |     r3 = 0xc696a;
    0x000633bc add.w r3, r3, r2, lsl 4                           |     r3 += (r2 << 4);
    0x000633c0 ldr r1, [r3, 0xc]                                 |     r1 = *((r3 + 0xc));
                                                                 | label_3:
    0x000633c2 mov r0, fp                                        |     r0 = fp;
    0x000633c4 bl 0x71424                                        |     fcn_00071424 (r0, r1, r2);
    0x000633c8 cmp r4, r1                                        |     
    0x000633ca mov sl, r1                                        |     sl = r1;
                                                                 |     if (r4 == r1) {
    0x000633cc beq.w 0x6358a                                     |         goto label_13;
                                                                 |     }
    0x000633d0 ldr r3, [pc, 0x1dc]                               |     
    0x000633d2 ldrb.w r0, [r8, sl]                               |     r0 = *((r8 + sl));
    0x000633d6 ldr.w fp, [pc, 0x1dc]                             |     fp = *(0x000635b4);
    0x000633da add r3, pc                                        |     r3 = 0xc698e;
    0x000633dc str r3, [sp]                                      |     *(sp) = r3;
    0x000633de cmp r0, 0xff                                      |     
    0x000633e0 ldr r3, [pc, 0x1d4]                               |     
    0x000633e2 add fp, pc                                        |     
    0x000633e4 add r3, pc                                        |     r3 = 0xc69a0;
    0x000633e6 str r3, [sp, 4]                                   |     var_4h = r3;
                                                                 |     if (r0 == 0xff) {
    0x000633e8 beq 0x63458                                       |         goto label_14;
                                                                 |     }
                                                                 |     do {
    0x000633ea cmp r0, 0xfc                                      |         
                                                                 |         if (r0 > 0xfc) {
    0x000633ec bhi 0x6345c                                       |             goto label_15;
                                                                 |         }
    0x000633ee cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000633f0 beq 0x63468                                       |             goto label_16;
                                                                 |         }
                                                                 | label_2:
    0x000633f2 subs r7, r0, 1                                    |         r7 = r0 - 1;
    0x000633f4 cmp r7, 0xfd                                      |         
    0x000633f6 it hs                                             |         
                                                                 |         if (r7 < 0xfd) {
    0x000633f8 movhs r7, 0xfd                                    |             r7 = 0xfd;
                                                                 |         }
    0x000633fa uxtb r7, r7                                       |         r7 = (int8_t) r7;
                                                                 | label_1:
    0x000633fc mov r3, r6                                        |         r3 = r6;
    0x000633fe mov r2, sl                                        |         r2 = sl;
    0x00063400 movs r1, 0                                        |         r1 = 0;
    0x00063402 mov r0, r5                                        |         r0 = r5;
    0x00063404 bl 0x62890                                        |         fcn_00062890 (r0, r1, r2, r3);
    0x00063408 ldrb.w r2, [r5, 0x27]                             |         r2 = *((r5 + 0x27));
    0x0006340c lsls r3, r2, 0x1d                                 |         r3 = r2 << 0x1d;
                                                                 |         if (r3 >= r2) {
    0x0006340e bpl 0x634e8                                       |             goto label_17;
                                                                 |         }
    0x00063410 ldr r3, [sp]                                      |         r3 = *(sp);
    0x00063412 and r2, r2, 3                                     |         r2 &= 3;
    0x00063416 ldr r1, [r5, 4]                                   |         r1 = *((r5 + 4));
    0x00063418 add.w r2, r3, r2, lsl 4                           |         r2 = r3 + (r2 << 4);
    0x0006341c ldr r0, [r2, 4]                                   |         r0 = *((r2 + 4));
    0x0006341e ldr r2, [r5, 0x1c]                                |         r2 = *((r5 + 0x1c));
                                                                 | label_7:
    0x00063420 mla r2, r0, r2, r1                                |         __asm ("mla r2, r0, r2, r1");
    0x00063424 add.w r0, sl, 1                                   |         r0 = sl + 1;
    0x00063428 strb r7, [r2, r6]                                 |         *((r2 + r6)) = r7;
    0x0006342a mov r6, sl                                        |         r6 = sl;
    0x0006342c ldrb.w sb, [r5, 0x27]                             |         sb = *((r5 + 0x27));
    0x00063430 ands r7, sb, 4                                    |         r7 = sb & 4;
    0x00063434 ittet eq                                          |         
                                                                 |         if (r7 != sb) {
    0x00063436 ldreq r2, [sp, 4]                                 |             r2 = var_4h;
                                                                 |         }
                                                                 |         if (r7 != sb) {
    0x00063438 andeq r3, sb, 3                                   |             r3 = sb & 3;
                                                                 |         }
                                                                 |         if (r7 != sb) {
    0x0006343c ldreq r1, [r5, 0x1c]                              |             r1 = *((r5 + 0x1c));
                                                                 |         }
                                                                 |         if (r7 == sb) {
    0x0006343e add.w r3, r2, r3, lsl 4                           |             r3 = r2 + (r3 << 4);
                                                                 |         }
    0x00063442 it eq                                             |         
                                                                 |         if (r7 != sb) {
    0x00063444 ldreq r1, [r3, 0xc]                               |             r1 = *((r3 + 0xc));
                                                                 |         }
    0x00063446 bl 0x71424                                        |         fcn_00071424 (r0, r1, r2);
    0x0006344a cmp r4, r1                                        |         
                                                                 |         if (r4 == r1) {
    0x0006344c beq 0x634f8                                       |             goto label_18;
                                                                 |         }
    0x0006344e mov sl, r1                                        |         sl = r1;
    0x00063450 ldrb.w r0, [r8, sl]                               |         r0 = *((r8 + sl));
    0x00063454 cmp r0, 0xff                                      |         
    0x00063456 bne 0x633ea                                       |         
                                                                 |     } while (r0 != 0xff);
                                                                 | label_14:
    0x00063458 movs r7, 0xfd                                     |     r7 = 0xfd;
    0x0006345a b 0x633fc                                         |     goto label_1;
                                                                 | label_15:
    0x0006345c mov r1, sl                                        |     r1 = sl;
    0x0006345e mov r0, r5                                        |     r0 = r5;
    0x00063460 bl 0x626b0                                        |     r0 = fcn_000626b0 (r0, r1);
    0x00063464 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00063466 bne 0x633f2                                       |         goto label_2;
                                                                 |     }
                                                                 | label_16:
    0x00063468 ldr r1, [pc, 0x150]                               |     
    0x0006346a mov.w r2, 0x234                                   |     r2 = 0x234;
    0x0006346c strb r5, [r1, 8]                                  |     *((r1 + 8)) = r5;
    0x0006346e ldr r3, [pc, 0x150]                               |     
    0x00063470 ldr r0, [pc, 0x150]                               |     
    0x00063472 add r1, pc                                        |     r1 = 0xc6a32;
    0x00063474 add r3, pc                                        |     r3 = 0xc6a3a;
    0x00063476 adds r1, 7                                        |     r1 += 7;
    0x00063478 add r0, pc                                        |     r0 = 0xc6a40;
    0x0006347a bl 0x66580                                        |     fcn_00066580 (r0, r1, r2, r3, r4);
                                                                 | label_6:
    0x0006347e ldr r1, [r5, 0x1c]                                |     r1 = *((r5 + 0x1c));
    0x00063480 b 0x633c2                                         |     goto label_3;
                                                                 | label_12:
    0x00063482 ldrd r3, r0, [sp]                                 |     __asm ("ldrd r3, r0, [sp]");
    0x00063486 mla r3, r3, r6, r0                                |     __asm ("mla r3, r3, r6, r0");
    0x0006348a ldrd r2, r1, [r3, 8]                              |     __asm ("ldrd r2, r1, [r3, 8]");
    0x0006348e cmp.w r2, -1                                      |     
    0x00063492 itett ne                                          |     
                                                                 |     if (r2 == -1) {
    0x00063494 ldrne r7, [sp]                                    |         r7 = *(sp);
                                                                 |     }
                                                                 |     if (r2 != -1) {
    0x00063496 streq r1, [r5, 0x30]                              |         *((r5 + 0x30)) = r1;
                                                                 |     }
                                                                 |     if (r2 != -1) {
    0x00063498 mlane r2, r7, r2, r0                              |         __asm ("mlane r2, r7, r2, r0");
                                                                 |     }
                                                                 |     if (r2 != -1) {
    0x0006349c str r1, [r2, 0xc]                                 |         *((r2 + 0xc)) = r1;
                                                                 |     }
    0x0006349e it ne                                             |     
                                                                 |     if (r2 == -1) {
    0x000634a0 ldrbne r7, [r5, 0x27]                             |         r7 = *((r5 + 0x27));
                                                                 |     }
    0x000634a4 ldrd r0, r2, [r3, 8]                              |     __asm ("ldrd r0, r2, [r3, 8]");
    0x000634a8 it ne                                             |     
                                                                 |     if (r2 == -1) {
    0x000634aa andne sb, r7, 4                                   |         sb = r7 & 4;
                                                                 |     }
    0x000634ae adds r1, r2, 1                                    |     r1 = r2 + 1;
    0x000634b0 it eq                                             |     
                                                                 |     if (r1 == r2) {
    0x000634b2 streq r0, [r5, 0x2c]                              |         *((r5 + 0x2c)) = r0;
                                                                 |         goto label_19;
                                                                 |     }
                                                                 |     if (r1 == r2) {
                                                                 | label_19:
    0x000634b4 beq.w 0x633ae                                     |         goto label_4;
                                                                 |     }
    0x000634b8 adds r3, r5, 4                                    |     r3 = r5 + 4;
    0x000634ba cmp.w sb, 0                                       |     
    0x000634bc lsrs r0, r0, 0x1c                                 |     r0 >>= 0x1c;
                                                                 |     if (r0 != r0) {
    0x000634be beq 0x634c2                                       |         
    0x000634c0 ldr r3, [r5, 4]                                   |         r3 = *((r5 + 4));
                                                                 |     }
    0x000634c2 ldr r1, [pc, 0x104]                               |     
    0x000634c4 and r7, r7, 3                                     |     r7 &= 3;
    0x000634c8 add r1, pc                                        |     r1 = 0xc6a96;
    0x000634ca add.w r1, r1, r7, lsl 4                           |     r1 += (r7 << 4);
    0x000634ce ldr r1, [r1, 4]                                   |     r1 = *((r1 + 4));
    0x000634d0 mla r3, r1, r2, r3                                |     __asm ("mla r3, r1, r2, r3");
    0x000634d4 str r0, [r3, 8]                                   |     *((r3 + 8)) = r0;
    0x000634d6 ldrb.w r7, [r5, 0x27]                             |     r7 = *((r5 + 0x27));
    0x000634da and sb, r7, 4                                     |     sb = r7 & 4;
    0x000634de cmp.w sb, 0                                       |     
    0x000634e0 lsrs r0, r0, 0x1c                                 |     r0 >>= 0x1c;
                                                                 |     if (r0 == r0) {
    0x000634e2 beq.w 0x633b4                                     |         goto label_5;
                                                                 |     }
    0x000634e6 b 0x6347e                                         |     goto label_6;
                                                                 | label_17:
    0x000634e8 and r2, r2, 3                                     |     r2 &= 3;
    0x000634ec adds r1, r5, 4                                    |     r1 = r5 + 4;
    0x000634ee add.w r2, fp, r2, lsl 4                           |     r2 = fp + (r2 << 4);
    0x000634f0 asrs r2, r0, 8                                    |     r2 = r0 >> 8;
    0x000634f2 ldr r0, [r2, 4]                                   |     r0 = *((r2 + 4));
    0x000634f4 ldr r2, [r2, 0xc]                                 |     r2 = *((r2 + 0xc));
    0x000634f6 b 0x63420                                         |     goto label_7;
                                                                 | label_18:
    0x000634f8 mov r3, sb                                        |     r3 = sb;
    0x000634fa mov sb, r7                                        |     sb = r7;
    0x000634fc mov r7, r3                                        |     r7 = r3;
                                                                 | label_8:
    0x000634fe ldr r3, [pc, 0xcc]                                |     
    0x00063500 and r7, r7, 3                                     |     r7 &= 3;
    0x00063504 lsls r7, r7, 4                                    |     r7 <<= 4;
    0x00063506 add r3, pc                                        |     r3 = 0xc6ad8;
    0x00063508 add r3, r7                                        |     r3 += r7;
    0x0006350a ldr r2, [r3, 4]                                   |     r2 = *(0xc6adc);
                                                                 |     if (r2 != 0) {
    0x0006350c cbz r2, 0x63538                                   |         
    0x0006350e adds r0, r5, 4                                    |         r0 = r5 + 4;
    0x00063510 cmp.w sb, 0                                       |         
                                                                 |         if (sb != 0) {
    0x00063514 beq 0x63518                                       |             
    0x00063516 ldr r0, [r5, 4]                                   |             r0 = *((r5 + 4));
                                                                 |         }
    0x00063518 mla r0, sl, r2, r0                                |         __asm ("mla r0, sl, r2, r0");
    0x0006351c movs r1, 0                                        |         r1 = 0;
    0x0006351e blx 0xe0a4                                        |         fcn_0000e0a4 ();
    0x00063522 ldrb.w sb, [r5, 0x27]                             |         sb = *((r5 + 0x27));
    0x00063526 ldr r3, [pc, 0xa8]                                |         
    0x00063528 and r7, sb, 3                                     |         r7 = sb & 3;
    0x0006352c and sb, sb, 4                                     |         sb &= 4;
    0x00063530 lsls r7, r7, 4                                    |         r7 <<= 4;
    0x00063532 add r3, pc                                        |         r3 = 0xc6b08;
    0x00063534 add r3, r7                                        |         r3 += r7;
    0x00063536 ldr r2, [r3, 4]                                   |         r2 = *(0xc6b0c);
                                                                 |     }
    0x00063538 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x0006353c beq 0x6357e                                       |         goto label_20;
                                                                 |     }
    0x0006353e ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x00063540 ldr r1, [r5, 0x1c]                                |     r1 = *((r5 + 0x1c));
                                                                 |     do {
    0x00063542 mla r3, r2, r1, r3                                |         __asm ("mla r3, r2, r1, r3");
    0x00063546 movs r2, 0xff                                     |         r2 = 0xff;
    0x00063548 strb.w r2, [r3, sl]                               |         *((r3 + sl)) = r2;
    0x0006354c ldrb.w r3, [r5, 0x27]                             |         r3 = *((r5 + 0x27));
    0x00063550 lsls r2, r3, 0x1d                                 |         r2 = r3 << 0x1d;
    0x00063552 iteee mi                                          |         
                                                                 |         if (r2 >= r3) {
    0x00063554 ldrmi r3, [r5, 0x18]                              |             r3 = *((r5 + 0x18));
                                                                 |         }
                                                                 |         if (r2 >= r3) {
    0x00063556 ubfxpl r2, r3, 3, 3                               |             __asm ("ubfxpl r2, r3, 3, 3");
                                                                 |         }
                                                                 |         if (r2 < r3) {
    0x0006355a addpl r2, 7                                       |             r2 += 7;
                                                                 |         }
                                                                 |         if (r2 >= r3) {
    0x0006355c bfi r3, r2, 3, 3                                  |             value_0 = BIT_MASK (3, 3);
                                                                 |             value_1 = r2 & value_0;
                                                                 |             value_0 = ~value_0;
                                                                 |             r3 &= value_0;
                                                                 |             r3 |= value_1;
                                                                 |         }
    0x00063560 itet mi                                           |         
                                                                 |         if (r2 >= r3) {
    0x00063562 addmi r3, r3, -1                                  |             r3 += -1;
                                                                 |         }
                                                                 |         if (r2 >= r3) {
    0x00063566 strbmi r3, [r5, 0x27]                             |             *((r5 + 0x27)) = r3;
                                                                 |         }
                                                                 |         if (r2 < r3) {
    0x0006356a str r3, [r5, 0x18]                                |             *((r5 + 0x18)) = r3;
                                                                 |         }
    0x0006356c ldrb.w r3, [r5, 0x27]                             |         r3 = *((r5 + 0x27));
    0x00063570 orr r3, r3, 0x80                                  |         r3 |= 0x80;
    0x00063574 strb.w r3, [r5, 0x27]                             |         *((r5 + 0x27)) = r3;
    0x00063578 add sp, 0xc                                       |         
    0x0006357a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_20:
    0x0006357e ldr r1, [pc, 0x54]                                |         
    0x00063580 adds r3, r5, 4                                    |         r3 = r5 + 4;
    0x00063582 add r1, pc                                        |         
    0x00063584 add r1, r7                                        |         r1 += r7;
    0x00063586 ldr r1, [r1, 0xc]                                 |         r1 = *(0xc6b68);
    0x00063588 b 0x63542                                         |         
                                                                 |     } while (1);
                                                                 | label_13:
    0x0006358a mov sl, r6                                        |     sl = r6;
    0x0006358c b 0x634fe                                         |     goto label_8;
                                                                 | }

[*] Function strcat used 1 times libsystemd.so.0.32.0