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

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


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

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

[*] Function printf used 7 times libsystemd.so.0.32.0