[*] Binary protection state of libsystemd-shared-251.so

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


[*] Function strcpy tear down of libsystemd-shared-251.so

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/systemd/libsystemd-shared-251.so @ 0xbc620 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.group_record_show ()                             | void group_record_show (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_3ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 | label_0:
    0x0003cedc invalid                                           |     void (*0x3cee0)() ();
    0x000bc620 ldr r2, [pc, 0x1f0]                               |     
    0x000bc622 ldr r3, [pc, 0x1f4]                               |     r3 = *(0xbc81a);
    0x000bc624 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x000bc626 blx lr                                            |     lr (r2, r3);
    0x000bc628 sub sp, 0x40                                      |     
    0x000bc62a add r2, pc                                        |     r2 = 0x178e42;
    0x000bc62c mov r5, r0                                        |     r5 = r0;
    0x000bc62e mov r4, r1                                        |     r4 = r1;
    0x000bc630 ldr r3, [r2, r3]                                  |     
    0x000bc632 ldr r3, [r3]                                      |     r3 = *(0x178e42);
    0x000bc634 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x000bc636 mov.w r3, 0                                       |     r3 = 0;
    0x000bc63a blx 0x3ea74                                       |     fcn_0003ea74 ();
    0x000bc63e ldr r1, [pc, 0x1dc]                               |     
    0x000bc640 mov r2, r0                                        |     r2 = r0;
    0x000bc642 movs r0, 1                                        |     r0 = 1;
    0x000bc644 add r1, pc                                        |     r1 = 0x178e66;
    0x000bc646 blx 0x3cee0                                       |     fcn_0003cee0 ();
    0x000bc64a mov r0, r5                                        |     r0 = r5;
    0x000bc64c blx 0x4046c                                       |     fcn_0004046c ();
    0x000bc650 blx 0x3e620                                       |     fcn_0003e620 ();
    0x000bc654 ldr r1, [pc, 0x1c8]                               |     
    0x000bc656 mov r2, r0                                        |     r2 = r0;
    0x000bc658 movs r0, 1                                        |     r0 = 1;
    0x000bc65a add r1, pc                                        |     r1 = 0x178e7e;
    0x000bc65c blx 0x3cee0                                       |     fcn_0003cee0 ();
    0x000bc660 ldrd r7, r6, [r5, 0x20]                           |     __asm ("ldrd r7, r6, [r5, 0x20]");
    0x000bc664 cmp.w r6, -1                                      |     
    0x000bc668 it eq                                             |     
                                                                 |     if (r6 == -1) {
    0x000bc66a cmpeq r7, -1                                      |         __asm ("cmpeq r7, -1");
                                                                 |     }
                                                                 |     if (r6 != -1) {
    0x000bc66e beq 0xbc69a                                       |         
    0x000bc670 add.w r8, sp, 0x14                                |         r8 += var_14h;
    0x000bc674 movs r2, 0x26                                     |         r2 = 0x26;
    0x000bc676 movs r1, 0                                        |         r1 = 0;
    0x000bc678 mov r0, r8                                        |         r0 = r8;
    0x000bc67a blx 0x3d4c4                                       |         fcn_0003d4c4 ();
    0x000bc67e movs r1, 0                                        |         r1 = 0;
    0x000bc680 mov r2, r7                                        |         r2 = r7;
    0x000bc682 str r1, [sp]                                      |         *(sp) = r1;
    0x000bc684 mov r3, r6                                        |         r3 = r6;
    0x000bc686 movs r1, 0x26                                     |         r1 = 0x26;
    0x000bc688 mov r0, r8                                        |         r0 = r8;
    0x000bc68a blx 0x3df78                                       |         fcn_0003df78 ();
    0x000bc68e ldr r1, [pc, 0x194]                               |         
    0x000bc690 mov r2, r0                                        |         r2 = r0;
    0x000bc692 movs r0, 1                                        |         r0 = 1;
    0x000bc694 add r1, pc                                        |         r1 = 0x178ebe;
    0x000bc696 blx 0x3cee0                                       |         fcn_0003cee0 ();
                                                                 |     }
    0x000bc69a ldr r0, [r5, 0x28]                                |     r0 = *((r5 + 0x28));
    0x000bc69c blx 0x3be4c                                       |     r0 = fcn_0003be4c ();
    0x000bc6a0 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000bc6a2 bne 0xbc746                                       |         goto label_5;
                                                                 |     }
    0x000bc6a4 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x000bc6a6 bne 0xbc756                                       |         goto label_6;
                                                                 |     }
                                                                 | label_1:
    0x000bc6a8 ldr r4, [r5, 0x2c]                                |     r4 = *((r5 + 0x2c));
                                                                 |     if (r4 == 0) {
    0x000bc6aa cbz r4, 0xbc6ce                                   |         goto label_2;
                                                                 |     }
    0x000bc6ac ldr r3, [r4]                                      |     r3 = *(r4);
                                                                 |     if (r3 == 0) {
    0x000bc6ae cbz r3, 0xbc6ce                                   |         goto label_2;
                                                                 |     }
    0x000bc6b0 ldr r2, [pc, 0x174]                               |     
    0x000bc6b2 ldr r7, [pc, 0x178]                               |     
    0x000bc6b4 ldr r6, [pc, 0x178]                               |     
    0x000bc6b6 add r2, pc                                        |     r2 = 0x178ee2;
    0x000bc6b8 add r7, pc                                        |     r7 = 0x178eea;
    0x000bc6ba add r6, pc                                        |     r6 = 0x178eee;
                                                                 |     do {
    0x000bc6bc mov r1, r7                                        |         r1 = r7;
    0x000bc6be movs r0, 1                                        |         r0 = 1;
    0x000bc6c0 blx 0x3cee0                                       |         fcn_0003cee0 ();
    0x000bc6c4 ldr r3, [r4, 4]!                                  |         r3 = *((r4 += 4));
    0x000bc6c8 mov r2, r6                                        |         r2 = r6;
    0x000bc6ca cmp r3, 0                                         |         
    0x000bc6cc bne 0xbc6bc                                       |         
                                                                 |     } while (r3 != 0);
                                                                 | label_2:
    0x000bc6ce ldr r4, [r5, 0x34]                                |     r4 = *((r5 + 0x34));
                                                                 |     if (r4 == 0) {
    0x000bc6d0 cbz r4, 0xbc6f4                                   |         goto label_7;
                                                                 |     }
    0x000bc6d2 ldr r3, [r4]                                      |     r3 = *(r4);
                                                                 |     if (r3 == 0) {
    0x000bc6d4 cbz r3, 0xbc6f4                                   |         goto label_7;
                                                                 |     }
    0x000bc6d6 ldr r2, [pc, 0x15c]                               |     
    0x000bc6d8 ldr r7, [pc, 0x15c]                               |     
    0x000bc6da ldr r6, [pc, 0x160]                               |     
    0x000bc6dc add r2, pc                                        |     r2 = 0x178f16;
    0x000bc6de add r7, pc                                        |     r7 = 0x178f1a;
    0x000bc6e0 add r6, pc                                        |     r6 = 0x178f22;
                                                                 |     do {
    0x000bc6e2 mov r1, r7                                        |         r1 = r7;
    0x000bc6e4 movs r0, 1                                        |         r0 = 1;
    0x000bc6e6 blx 0x3cee0                                       |         fcn_0003cee0 ();
    0x000bc6ea ldr r3, [r4, 4]!                                  |         r3 = *((r4 += 4));
    0x000bc6ec subs r7, 4                                        |         r7 -= 4;
    0x000bc6ee mov r2, r6                                        |         r2 = r6;
    0x000bc6f0 cmp r3, 0                                         |         
    0x000bc6f2 bne 0xbc6e2                                       |         
                                                                 |     } while (r3 != 0);
                                                                 | label_7:
    0x000bc6f4 ldr r4, [r5, 0x18]                                |     r4 = *((r5 + 0x18));
                                                                 |     if (r4 != 0) {
    0x000bc6f6 cbz r4, 0xbc704                                   |         
    0x000bc6f8 ldr r1, [r5, 0xc]                                 |         r1 = *((r5 + 0xc));
    0x000bc6fa mov r0, r4                                        |         r0 = r4;
    0x000bc6fc blx 0x42d2c                                       |         r0 = fcn_00042d2c ();
    0x000bc700 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x000bc702 bne 0xbc7be                                       |             goto label_8;
                                                                 |         }
                                                                 |     }
    0x000bc704 ldr r0, [r5, 0x38]                                |     r0 = *((r5 + 0x38));
                                                                 |     if (r0 != 0) {
    0x000bc706 cbz r0, 0xbc71c                                   |         
    0x000bc708 ldr r3, [r0]                                      |         r3 = *(r0);
                                                                 |         if (r3 == 0) {
    0x000bc70a cbz r3, 0xbc71c                                   |             goto label_9;
                                                                 |         }
    0x000bc70c blx 0x3e7a4                                       |         fcn_0003e7a4 ();
    0x000bc710 ldr r1, [pc, 0x12c]                               |         
    0x000bc712 mov r2, r0                                        |         r2 = r0;
    0x000bc714 movs r0, 1                                        |         r0 = 1;
    0x000bc716 add r1, pc                                        |         r1 = 0x178f5a;
    0x000bc718 blx 0x3cee0                                       |         fcn_0003cee0 ();
                                                                 |     }
                                                                 | label_9:
    0x000bc71c ldr r2, [r5, 0x30]                                |     r2 = *((r5 + 0x30));
    0x000bc71e cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x000bc720 beq 0xbc7cc                                       |         goto label_10;
                                                                 |     }
    0x000bc722 ldr r1, [pc, 0x120]                               |     
    0x000bc724 ldr r3, [pc, 0xf0]                                |     r3 = *(0xbc818);
    0x000bc726 add r1, pc                                        |     r1 = 0x178f70;
    0x000bc728 ldr r3, [r1, r3]                                  |     r3 = *(0x178f70);
    0x000bc72a ldr r1, [r3]                                      |     r1 = *(0x178f70);
    0x000bc72c ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x000bc72e eors r1, r3                                       |     r1 ^= r3;
    0x000bc730 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r1 != r3) {
    0x000bc734 bne 0xbc810                                       |         goto label_11;
                                                                 |     }
    0x000bc736 ldr r1, [pc, 0x110]                               |     
    0x000bc738 movs r0, 1                                        |     r0 = 1;
    0x000bc73a add r1, pc                                        |     r1 = 0x178f88;
    0x000bc73c add sp, 0x40                                      |     
    0x000bc73e pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x000bc742 b.w 0x3cedc                                       |     goto label_0;
                                                                 | label_5:
    0x000bc746 ldr r1, [pc, 0x104]                               |     
    0x000bc748 movs r0, 1                                        |     r0 = 1;
    0x000bc74a ldr r2, [r5, 0x28]                                |     r2 = *((r5 + 0x28));
    0x000bc74c add r1, pc                                        |     r1 = 0x178f9e;
    0x000bc74e blx 0x3cee0                                       |     fcn_0003cee0 ();
    0x000bc752 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x000bc754 beq 0xbc6a8                                       |         goto label_1;
                                                                 |     }
                                                                 | label_6:
    0x000bc756 mov.w sl, 0                                       |     sl = 0;
    0x000bc75a ldr r0, [r5, 0xc]                                 |     r0 = *((r5 + 0xc));
    0x000bc75c add r2, sp, 0xc                                   |     r2 += var_ch;
    0x000bc75e mov r1, sl                                        |     r1 = sl;
    0x000bc760 str.w sl, [sp, 0xc]                               |     __asm ("str.w sl, [var_ch]");
    0x000bc764 blx 0x3c790                                       |     r0 = fcn_0003c790 ();
    0x000bc768 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x000bc76a blt 0xbc7fc                                       |         goto label_12;
                                                                 |     }
    0x000bc76c ldr r6, [pc, 0xe0]                                |     
    0x000bc76e add r7, sp, 0x10                                  |     r7 += var_10h;
    0x000bc770 ldr.w sb, [pc, 0xe0]                              |     
    0x000bc774 ldr.w r8, [pc, 0xe0]                              |     
    0x000bc778 add r6, pc                                        |     r6 = 0x178fcc;
    0x000bc77a add sb, pc                                        |     sb = 0x178fd2;
    0x000bc77c add r8, pc                                        |     r8 = 0x178fd8;
    0x000bc77e b 0xbc798                                         |     
                                                                 |     while (r3 != r0) {
    0x000bc780 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x000bc782 blt 0xbc7e6                                       |             goto label_13;
                                                                 |         }
    0x000bc784 mov r2, r6                                        |         r2 = r6;
    0x000bc786 ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x000bc788 mov r1, sb                                        |         r1 = sb;
    0x000bc78a movs r0, 1                                        |         r0 = 1;
    0x000bc78c blx 0x3cee0                                       |         fcn_0003cee0 ();
    0x000bc790 ldr r0, [sp, 0x10]                                |         r0 = var_10h;
    0x000bc792 mov r6, r8                                        |         r6 = r8;
    0x000bc794 blx 0x3e160                                       |         getopt_long ();
    0x000bc798 ldr r0, [sp, 0xc]                                 |         r0 = var_ch;
    0x000bc79a movs r2, 0                                        |         r2 = 0;
    0x000bc79c mov r1, r7                                        |         r1 = r7;
    0x000bc79e str.w sl, [sp, 0x10]                              |         __asm ("str.w sl, [var_10h]");
    0x000bc7a2 blx 0x41938                                       |         r0 = fcn_00041938 ();
    0x000bc7a6 adds r3, r0, 3                                    |         r3 = r0 + 3;
    0x000bc7a8 mov r4, r0                                        |         r4 = r0;
    0x000bc7aa bne 0xbc780                                       |         
                                                                 |     }
                                                                 | label_3:
    0x000bc7ac ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x000bc7ae blx 0x3e160                                       |     getopt_long ();
                                                                 | label_4:
    0x000bc7b2 ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x000bc7b4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000bc7b6 beq 0xbc6ce                                       |         goto label_2;
                                                                 |     }
    0x000bc7b8 blx 0x3f540                                       |     strcpy (r0, r1)
    0x000bc7bc b 0xbc6ce                                         |     goto label_2;
                                                                 | label_8:
    0x000bc7be ldr r1, [pc, 0x9c]                                |     
    0x000bc7c0 mov r2, r4                                        |     r2 = r4;
    0x000bc7c2 movs r0, 1                                        |     r0 = 1;
    0x000bc7c4 add r1, pc                                        |     r1 = 0x179026;
    0x000bc7c6 blx 0x3cee0                                       |     fcn_0003cee0 ();
    0x000bc7c8 invalid                                           |     
                                                                 | label_10:
    0x000bc7cc ldr r2, [pc, 0x90]                                |     
    0x000bc7ce ldr r3, [pc, 0x48]                                |     r3 = *(0xbc81a);
    0x000bc7d0 add r2, pc                                        |     r2 = 0x179034;
    0x000bc7d2 ldr r3, [r2, r3]                                  |     r3 = *(0x179034);
    0x000bc7d4 ldr r2, [r3]                                      |     r2 = *(0x179034);
    0x000bc7d6 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x000bc7d8 eors r2, r3                                       |     r2 ^= r3;
    0x000bc7da mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 == r3) {
    0x000bc7de bne 0xbc810                                       |         
    0x000bc7e0 add sp, 0x40                                      |         
    0x000bc7e2 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_13:
    0x000bc7e6 blx 0x42e4c                                       |         dlclose ();
    0x000bc7ea ldr r1, [pc, 0x78]                                |         
    0x000bc7ec rsbs r4, r4, 0                                    |         r4 -= ;
    0x000bc7ee str r4, [r0]                                      |         *(r0) = r4;
    0x000bc7f0 mov r2, r6                                        |         r2 = r6;
    0x000bc7f2 movs r0, 1                                        |         r0 = 1;
    0x000bc7f4 add r1, pc                                        |         r1 = 0x17905e;
    0x000bc7f6 blx 0x3cee0                                       |         fcn_0003cee0 ();
    0x000bc7fa b 0xbc7ac                                         |         goto label_3;
                                                                 | label_12:
    0x000bc7fc blx 0x42e4c                                       |         dlclose ();
    0x000bc800 ldr r1, [pc, 0x64]                                |         
    0x000bc802 rsbs r4, r4, 0                                    |         r4 -= ;
    0x000bc804 str r4, [r0]                                      |         *(r0) = r4;
    0x000bc806 movs r0, 1                                        |         r0 = 1;
    0x000bc808 add r1, pc                                        |         r1 = 0x179074;
    0x000bc80a blx 0x3cee0                                       |         fcn_0003cee0 ();
    0x000bc80e b 0xbc7b2                                         |         goto label_4;
                                                                 |     }
                                                                 | label_11:
    0x000bc810 blx 0x40af0                                       |     fcn_00040af0 ();
    0x000bc814 beq 0xbc814                                       |     
    0x000bc816 movs r2, r2                                       |     
    0x000bc818 cmp r0, 0x40                                      |     
    0x000bc81a movs r0, r0                                       |     
    0x000bc81c lsls r0, r2, 4                                    |     r0 = r2 << 4;
    0x000bc81e movs r6, r1                                       |     r6 = r1;
    0x000bc820 sub.w r0, r6, 0x8d0000                            |     r0 = r6 - 0x8d0000;
    0x000bc824 invalid                                           |     
                                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/systemd/libsystemd-shared-251.so @ 0xc4758 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.groupdb_all ()                   | void groupdb_all (int16_t arg1, uint32_t arg2) {
                                                 |     int16_t var_0h;
                                                 |     int16_t var_4h;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x000c4758 push {r4, r5, r6, r7, lr}         |     
    0x000c475a sub sp, 0xc                       |     
    0x000c475c cmp r1, 0                         |     
                                                 |     if (r1 == 0) {
    0x000c475e beq 0xc4860                       |         goto label_6;
                                                 |     }
    0x000c4760 mov r4, r0                        |     r4 = r0;
    0x000c4762 mov r7, r1                        |     r7 = r1;
    0x000c4764 mov r1, r0                        |     r1 = r0;
    0x000c4766 movs r0, 1                        |     r0 = 1;
    0x000c4768 bl 0xc2f04                        |     r0 = fcn_000c2f04 (r0, r1);
    0x000c476c mov r5, r0                        |     r5 = r0;
    0x000c476e cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x000c4770 beq.w 0xc4876                     |         goto label_7;
                                                 |     }
    0x000c4774 ldr r1, [pc, 0x104]               |     
    0x000c4776 movs r3, 0                        |     r3 = 0;
    0x000c4778 movs r2, 1                        |     r2 = 1;
    0x000c477a str r4, [sp]                      |     *(sp) = r4;
    0x000c477c add r1, pc                        |     r1 = 0x188ffc;
    0x000c477e bl 0xc307c                        |     fcn_000c307c (r0, r1, r2, r3, r4, r5);
    0x000c4782 lsls r3, r4, 0x1f                 |     r3 = r4 << 0x1f;
    0x000c4784 mov r6, r0                        |     r6 = r0;
                                                 |     if (r3 >= r4) {
    0x000c4786 bmi 0xc47a2                       |         
    0x000c4788 cmp r0, 0                         |         
    0x000c478a ldrb r2, [r5, 0xc]                |         r2 = *((r5 + 0xc));
                                                 |         if (r0 >= 0) {
    0x000c478c blt 0xc4792                       |             
    0x000c478e lsls r0, r2, 0x1f                 |             r0 = r2 << 0x1f;
                                                 |             if (r0 < r2) {
    0x000c4790 bmi 0xc47f8                       |                 goto label_8;
                                                 |             }
                                                 |         }
    0x000c4792 lsls r2, r2, 0x1a                 |         r2 <<= 0x1a;
                                                 |         if (r2 >= r2) {
    0x000c4794 bpl 0xc47fe                       |             goto label_9;
                                                 |         }
                                                 | label_3:
    0x000c4796 blx 0x3e58c                       |         fcn_0003e58c ();
    0x000c479a ldrb r3, [r5, 0xc]                |         r3 = *((r5 + 0xc));
    0x000c479c orr r3, r3, 2                     |         r3 |= 2;
    0x000c47a0 strb r3, [r5, 0xc]                |         *((r5 + 0xc)) = r3;
                                                 |     }
    0x000c47a2 ands r2, r4, 4                    |     r2 = r4 & 4;
                                                 |     if (r2 == r4) {
    0x000c47a6 beq 0xc47c8                       |         goto label_10;
                                                 |     }
                                                 | label_0:
    0x000c47a8 cmp r6, 0                         |     
                                                 |     if (r6 >= 0) {
    0x000c47aa bge 0xc47be                       |         goto label_2;
                                                 |     }
                                                 | label_4:
    0x000c47ac ldrb r3, [r5, 0xc]                |     r3 = *((r5 + 0xc));
    0x000c47ae lsls r3, r3, 0x1e                 |     r3 <<= 0x1e;
                                                 |     if (r3 < r3) {
    0x000c47b0 bmi 0xc47be                       |         goto label_2;
                                                 |     }
    0x000c47b2 ldr r3, [r5, 0x10]                |     r3 = *((r5 + 0x10));
    0x000c47b4 cmp r3, 0                         |     
                                                 |     if (r3 == 0) {
    0x000c47b6 beq 0xc4854                       |         goto label_11;
                                                 |     }
    0x000c47b8 ldr r3, [r3]                      |     r3 = *(r3);
    0x000c47ba cmp r3, 0                         |     
                                                 |     if (r3 == 0) {
    0x000c47bc beq 0xc4854                       |         goto label_11;
                                                 |     }
                                                 |     do {
                                                 | label_2:
    0x000c47be movs r6, 0                        |         r6 = 0;
    0x000c47c0 str r5, [r7]                      |         *(r7) = r5;
                                                 | label_5:
    0x000c47c2 mov r0, r6                        |         r0 = r6;
    0x000c47c4 add sp, 0xc                       |         
    0x000c47c6 pop {r4, r5, r6, r7, pc}          |         
                                                 | label_10:
    0x000c47c8 cmp r6, 0                         |         
                                                 |         if (r6 < 0) {
    0x000c47ca blt 0xc4812                       |             goto label_12;
                                                 |         }
    0x000c47cc ldrb r2, [r5, 0xc]                |         r2 = *((r5 + 0xc));
                                                 | label_1:
    0x000c47ce ubfx r2, r2, 2, 1                 |         r2 = (r2 >> 2) & ((1 << 1) - 1);
    0x000c47d2 cmp r2, 0                         |         
    0x000c47d4 bne 0xc47be                       |         
                                                 |     } while (r2 != 0);
    0x000c47d6 ldr r3, [pc, 0xa8]                |     
    0x000c47d8 add.w r0, r5, 0x10                |     r0 = r5 + 0x10;
    0x000c47dc ldr r1, [pc, 0xa4]                |     
    0x000c47de add r3, pc                        |     r3 = 0x189064;
    0x000c47e0 str r3, [sp]                      |     *(sp) = r3;
    0x000c47e2 add r1, pc                        |     r1 = 0x18906a;
    0x000c47e4 movs r3, 0x12                     |     r3 = 0x12;
    0x000c47e6 blx 0x3d620                       |     r0 = fcn_0003d620 ();
    0x000c47ea subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 >= r0) {
    0x000c47ec bge 0xc47a8                       |         goto label_0;
                                                 |     }
    0x000c47ee blx 0x40e28                       |     r0 = fcn_00040e28 ();
    0x000c47f2 cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x000c47f4 ble 0xc47a8                       |         goto label_0;
                                                 |     }
    0x000c47f6 b 0xc4832                         |     goto label_13;
                                                 | label_8:
    0x000c47f8 lsls r1, r4, 0x1d                 |     r1 = r4 << 0x1d;
                                                 |     if (r1 >= r4) {
    0x000c47fa bpl 0xc47ce                       |         goto label_1;
                                                 |     }
    0x000c47fc b 0xc47be                         |     goto label_2;
                                                 | label_9:
    0x000c47fe movs r0, 1                        |     r0 = 1;
    0x000c4800 blx 0x3ed68                       |     r0 = fcn_0003ed68 ();
    0x000c4804 cmp r0, 0                         |     
                                                 |     if (r0 < 0) {
    0x000c4806 blt 0xc4852                       |         goto label_14;
                                                 |     }
    0x000c4808 ldrb r3, [r5, 0xc]                |     r3 = *((r5 + 0xc));
    0x000c480a orr r3, r3, 0x20                  |     r3 |= 0x20;
    0x000c480e strb r3, [r5, 0xc]                |     *((r5 + 0xc)) = r3;
    0x000c4810 b 0xc4796                         |     goto label_3;
                                                 | label_12:
    0x000c4812 ldr r3, [pc, 0x74]                |     
    0x000c4814 add.w r0, r5, 0x10                |     r0 = r5 + 0x10;
    0x000c4816 movs r0, r2                       |     r0 = r2;
    0x000c4818 ldr r1, [pc, 0x70]                |     
    0x000c481a add r3, pc                        |     r3 = 0x1890a8;
    0x000c481c str r3, [sp]                      |     *(sp) = r3;
    0x000c481e add r1, pc                        |     r1 = 0x1890ae;
    0x000c4820 movs r3, 0x12                     |     r3 = 0x12;
    0x000c4822 blx 0x3d620                       |     r0 = fcn_0003d620 ();
    0x000c4826 subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 >= r0) {
    0x000c4828 bge 0xc47ac                       |         goto label_4;
                                                 |     }
    0x000c482a blx 0x40e28                       |     r0 = fcn_00040e28 ();
    0x000c482e cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x000c4830 ble 0xc47ac                       |         goto label_4;
                                                 |     }
                                                 | label_13:
    0x000c4832 ldr r3, [pc, 0x5c]                |     
    0x000c4834 mov r1, r4                        |     r1 = r4;
    0x000c4836 ldr r2, [pc, 0x5c]                |     
    0x000c4838 movs r0, 7                        |     r0 = 7;
    0x000c483a add r3, pc                        |     r3 = 0x1890d0;
    0x000c483c str r3, [sp, 4]                   |     var_4h = r3;
    0x000c483e add r2, pc                        |     r2 = "400000basekr4-full";
    0x000c4840 ldr r3, [pc, 0x54]                |     
    0x000c4842 adds r2, 7                        |     r2 += 7;
    0x000c4844 add r3, pc                        |     r3 = 0x1890e0;
    0x000c4846 str r3, [sp]                      |     *(sp) = r3;
    0x000c4848 movw r3, 0x3ff                    |     r3 = 0x3ff;
    0x000c484c blx 0x3d328                       |     fcn_0003d328 ();
    0x000c4850 b 0xc47a8                         |     goto label_0;
                                                 | label_14:
    0x000c4852 mov r6, r0                        |     r6 = r0;
                                                 | label_11:
    0x000c4854 mov r0, r5                        |     r0 = r5;
    0x000c4856 blx 0x3f540                       |     strcpy (r0, r1)
    0x000c485a mov r0, r6                        |     r0 = r6;
    0x000c485c add sp, 0xc                       |     
    0x000c485e pop {r4, r5, r6, r7, pc}          |     
                                                 | label_6:
    0x000c4860 ldr r1, [pc, 0x38]                |     
    0x000c4862 movw r2, 0x3e6                    |     r2 = 0x3e6;
    0x000c4866 ldr r3, [pc, 0x38]                |     
    0x000c4868 ldr r0, [pc, 0x38]                |     
    0x000c486a add r1, pc                        |     r1 = 0x18910a;
    0x000c486c add r3, pc                        |     r3 = 0x189112;
    0x000c486e adds r1, 7                        |     r1 += 7;
    0x000c4870 add r0, pc                        |     r0 = 0x189118;
    0x000c4872 blx 0x3ede8                       |     fcn_0003ede8 ();
                                                 | label_7:
    0x000c4876 mvn r6, 0xb                       |     r6 = ~0xb;
    0x000c487a b 0xc47c2                         |     goto label_5;
                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/systemd/libsystemd-shared-251.so @ 0xc4ea4 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.groupdb_by_gid ()                            | void groupdb_by_gid (int16_t arg_198h, int16_t arg1, int16_t arg2, int16_t arg3) {
                                                             |     int16_t var_0h_2;
                                                             |     int16_t var_8h_3;
                                                             |     int16_t var_ch_3;
                                                             |     int16_t var_10h_3;
                                                             |     int16_t var_18h;
                                                             |     int16_t var_1ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
    0x000c4ea4 push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x000c4ea8 mov r8, r2                                    |     r8 = r2;
    0x000c4eaa ldr r2, [pc, 0x160]                           |     
    0x000c4eac sub sp, 0x24                                  |     
    0x000c4eae movs r7, 0                                    |     r7 = 0;
    0x000c4eb0 mov r6, r0                                    |     r6 = r0;
    0x000c4eb2 ldr r3, [pc, 0x15c]                           |     r3 = *(0xc5012);
    0x000c4eb4 mov r5, r1                                    |     r5 = r1;
    0x000c4eb6 add r2, pc                                    |     r2 = 0x189ec8;
    0x000c4eb8 ldr r3, [r2, r3]                              |     
    0x000c4eba ldr r3, [r3]                                  |     r3 = *(0x189ec8);
    0x000c4ebc str r3, [sp, 0x1c]                            |     var_1ch = r3;
    0x000c4ebe mov.w r3, 0                                   |     r3 = 0;
    0x000c4ec2 str r7, [sp, 0x18]                            |     var_18h = r7;
    0x000c4ec4 blx 0x3be4c                                   |     r0 = fcn_0003be4c ();
    0x000c4ec8 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000c4eca beq.w 0xc4fec                                 |         goto label_7;
                                                             |     }
    0x000c4ece movs r3, 8                                    |     r3 = 8;
    0x000c4ed0 movs r2, 9                                    |     r2 = 9;
    0x000c4ed2 str r3, [sp, 0x10]                            |     var_10h_3 = r3;
    0x000c4ed4 movs r3, 2                                    |     r3 = 2;
    0x000c4ed6 str r3, [sp]                                  |     *(sp) = r3;
    0x000c4ed8 movs r1, 7                                    |     r1 = 7;
    0x000c4eda ldr r3, [pc, 0x138]                           |     
    0x000c4edc add r0, sp, 0x18                              |     r0 += var_18h;
    0x000c4ede str r6, [sp, 8]                               |     var_8h_3 = r6;
    0x000c4ee0 str r7, [sp, 0xc]                             |     var_ch_3 = r7;
    0x000c4ee2 add r3, pc                                    |     r3 = "NOTRUNNING";
    0x000c4ee4 blx 0x3e4ec                                   |     r0 = fcn_0003e4ec ();
    0x000c4ee8 subs r4, r0, 0                                |     r4 = r0 - 0;
                                                             |     if (r4 < r0) {
    0x000c4eea blt 0xc4f6c                                   |         goto label_8;
                                                             |     }
    0x000c4eec mov r1, r5                                    |     r1 = r5;
    0x000c4eee movs r0, 1                                    |     r0 = 1;
    0x000c4ef0 bl 0xc2f04                                    |     fcn_000c2f04 (r0, r1);
    0x000c4ef4 ldr r3, [sp, 0x18]                            |     r3 = var_18h;
    0x000c4ef6 mov sb, r0                                    |     sb = r0;
    0x000c4ef8 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000c4efa beq 0xc4ffa                                   |         goto label_9;
                                                             |     }
    0x000c4efc ldr r1, [pc, 0x118]                           |     
    0x000c4efe mov r2, r7                                    |     r2 = r7;
    0x000c4f00 str r5, [sp]                                  |     *(sp) = r5;
    0x000c4f02 add r1, pc                                    |     r1 = 0x189f1e;
    0x000c4f04 bl 0xc307c                                    |     r0 = fcn_000c307c (r0, r1, r2, r3, r4, r5);
    0x000c4f08 subs r4, r0, 0                                |     r4 = r0 - 0;
    0x000c4f0a bge 0xc4f58                                   |     
                                                             |     while (r4 < r0) {
    0x000c4f0c lsls r7, r5, 0x1d                             |         r7 = r5 << 0x1d;
                                                             |         if (r7 >= r5) {
    0x000c4f0e bmi 0xc4f1c                                   |             
    0x000c4f10 ldrb.w r1, [sb, 0xc]                          |             r1 = *((sb + 0xc));
    0x000c4f14 ubfx r1, r1, 2, 1                             |             r1 = (r1 >> 2) & ((1 << 1) - 1);
    0x000c4f16 lsls r0, r0, 6                                |             r0 <<= 6;
    0x000c4f18 cmp r1, 0                                     |             
                                                             |             if (r1 == 0) {
    0x000c4f1a beq 0xc4f9a                                   |                 goto label_10;
                                                             |             }
                                                             |         }
                                                             | label_4:
    0x000c4f1c lsls r0, r5, 0x1f                             |         r0 = r5 << 0x1f;
                                                             |         if (r0 >= r5) {
    0x000c4f1e bmi 0xc4f28                                   |             
    0x000c4f20 ldrb.w r3, [sb, 0xc]                          |             r3 = *((sb + 0xc));
    0x000c4f24 lsls r1, r3, 0x1f                             |             r1 = r3 << 0x1f;
                                                             |             if (r1 >= r3) {
    0x000c4f26 bpl 0xc4faa                                   |                 goto label_11;
                                                             |             }
                                                             |         }
                                                             | label_5:
    0x000c4f28 lsls r3, r5, 0x19                             |         r3 = r5 << 0x19;
                                                             |         if (r3 >= r5) {
    0x000c4f2a bpl 0xc4f78                                   |             goto label_12;
                                                             |         }
                                                             | label_0:
    0x000c4f2c ldr r0, [sp, 0x18]                            |         r0 = var_18h;
                                                             |         if (r0 != 0) {
    0x000c4f2e cbz r0, 0xc4f36                               |             
                                                             | label_2:
    0x000c4f30 blx 0x3fbc4                                   |             fcntl64 ();
    0x000c4f34 str r0, [sp, 0x18]                            |             var_18h = r0;
                                                             |         }
                                                             | label_3:
    0x000c4f36 mov r0, sb                                    |         r0 = sb;
    0x000c4f38 blx 0x3f540                                   |         strcpy (r0, r1)
                                                             | label_1:
    0x000c4f3c ldr r2, [pc, 0xdc]                            |         
    0x000c4f3e ldr r3, [pc, 0xd0]                            |         r3 = *(0xc5012);
    0x000c4f40 add r2, pc                                    |         r2 = 0x189f60;
    0x000c4f42 ldr r3, [r2, r3]                              |         r3 = *(0x189f60);
    0x000c4f44 ldr r2, [r3]                                  |         r2 = *(0x189f60);
    0x000c4f46 ldr r3, [sp, 0x1c]                            |         r3 = var_1ch;
    0x000c4f48 eors r2, r3                                   |         r2 ^= r3;
    0x000c4f4a mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x000c4f4e bne 0xc5008                                   |             goto label_13;
                                                             |         }
    0x000c4f50 mov r0, r4                                    |         r0 = r4;
    0x000c4f52 add sp, 0x24                                  |         
    0x000c4f54 pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
    0x000c4f58 mov r3, r7                                    |         r3 = r7;
    0x000c4f5a mov r1, r7                                    |         r1 = r7;
    0x000c4f5c mov r2, r8                                    |         r2 = r8;
    0x000c4f5e mov r0, sb                                    |         r0 = sb;
    0x000c4f60 str r7, [sp]                                  |         *(sp) = r7;
    0x000c4f62 bl 0xc2f38                                    |         r0 = fcn_000c2f38 (r0, r1, r2, r3, r4);
    0x000c4f66 subs r4, r0, 0                                |         r4 = r0 - 0;
    0x000c4f68 blt 0xc4f0c                                   |         
                                                             |     }
    0x000c4f6a b 0xc4f2c                                     |     goto label_0;
                                                             | label_8:
    0x000c4f6c ldr r0, [sp, 0x18]                            |     r0 = var_18h;
    0x000c4f6e cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000c4f70 beq 0xc4f3c                                   |         goto label_1;
                                                             |     }
    0x000c4f72 blx 0x3fbc4                                   |     fcntl64 ();
    0x000c4f76 b 0xc4f3c                                     |     goto label_1;
                                                             |     if (r6 == 0) {
                                                             | label_12:
    0x000c4f78 cbz r6, 0xc4fdc                               |         goto label_14;
                                                             |     }
    0x000c4f7a movw r3, 0xfffe                               |     r3 = 0xfffe;
    0x000c4f7e cmp r6, r3                                    |     
                                                             |     if (r6 != r3) {
    0x000c4f80 bne 0xc4f2c                                   |         goto label_0;
                                                             |     }
    0x000c4f82 blx 0x3c218                                   |     r0 = fcn_0003c218 ();
    0x000c4f86 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000c4f88 beq 0xc4f2c                                   |         goto label_0;
                                                             |     }
    0x000c4f8a mov r0, r8                                    |     r0 = r8;
    0x000c4f8c bl 0xc2e98                                    |     r0 = fcn_000c2e98 ();
    0x000c4f90 mov r4, r0                                    |     r4 = r0;
    0x000c4f92 ldr r0, [sp, 0x18]                            |     r0 = var_18h;
    0x000c4f94 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000c4f96 bne 0xc4f30                                   |         goto label_2;
                                                             |     }
    0x000c4f98 b 0xc4f36                                     |     goto label_3;
                                                             | label_10:
    0x000c4f9a mov r3, r8                                    |     r3 = r8;
    0x000c4f9c mov r2, r5                                    |     r2 = r5;
    0x000c4f9e mov r0, r6                                    |     r0 = r6;
    0x000c4fa0 blx 0x42b20                                   |     r0 = fcn_00042b20 ();
    0x000c4fa4 subs r4, r0, 0                                |     r4 = r0 - 0;
                                                             |     if (r4 < r0) {
    0x000c4fa6 blt 0xc4f1c                                   |         goto label_4;
                                                             |     }
    0x000c4fa8 b 0xc4f2c                                     |     goto label_0;
                                                             | label_11:
    0x000c4faa lsls r2, r3, 0x1a                             |     r2 = r3 << 0x1a;
                                                             |     if (r2 >= r3) {
    0x000c4fac bpl 0xc4fc4                                   |         goto label_15;
                                                             |     }
                                                             | label_6:
    0x000c4fae eor r1, r5, 8                                 |     r1 = r5 ^ 8;
    0x000c4fb2 mov r2, r8                                    |     r2 = r8;
    0x000c4fb4 ubfx r1, r1, 3, 1                             |     r1 = (r1 >> 3) & ((1 << 1) - 1);
    0x000c4fb8 mov r0, r6                                    |     r0 = r6;
    0x000c4fba blx 0x3d5d8                                   |     strrchr (r0, r1);
    0x000c4fbc add.w lr, lr, r4, lsl 4                       |     lr += (r4 << 4);
                                                             |     if (r2 < r3) {
    0x000c4fc0 blt 0xc4f28                                   |         goto label_5;
                                                             |     }
    0x000c4fc2 b 0xc4f2c                                     |     goto label_0;
                                                             | label_15:
    0x000c4fc4 movs r0, 1                                    |     r0 = 1;
    0x000c4fc6 blx 0x3ed68                                   |     r0 = fcn_0003ed68 ();
    0x000c4fca subs r4, r0, 0                                |     r4 = r0 - 0;
                                                             |     if (r4 < r0) {
    0x000c4fcc blt 0xc4f28                                   |         goto label_5;
                                                             |     }
    0x000c4fce ldrb.w r3, [sb, 0xc]                          |     r3 = *((sb + 0xc));
    0x000c4fd2 orr r3, r3, 0x20                              |     r3 |= 0x20;
    0x000c4fd6 strb.w r3, [sb, 0xc]                          |     *((sb + 0xc)) = r3;
    0x000c4fda b 0xc4fae                                     |     goto label_6;
                                                             | label_14:
    0x000c4fdc mov r0, r8                                    |     r0 = r8;
    0x000c4fde bl 0xc2e34                                    |     r0 = fcn_000c2e34 ();
    0x000c4fe2 mov r4, r0                                    |     r4 = r0;
    0x000c4fe4 ldr r0, [sp, 0x18]                            |     r0 = var_18h;
    0x000c4fe6 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000c4fe8 bne 0xc4f30                                   |         goto label_2;
                                                             |     }
    0x000c4fea b 0xc4f36                                     |     goto label_3;
                                                             | label_7:
    0x000c4fec ldr r0, [sp, 0x18]                            |     r0 = var_18h;
                                                             |     if (r0 != 0) {
    0x000c4fee cbz r0, 0xc4ff4                               |         
    0x000c4ff0 blx 0x3fbc4                                   |         fcntl64 ();
                                                             |     }
    0x000c4ff4 mvn r4, 0x15                                  |     r4 = ~0x15;
    0x000c4ff8 b 0xc4f3c                                     |     goto label_1;
                                                             |     if (r3 != 0) {
                                                             | label_9:
    0x000c4ffa cbz r3, 0xc5002                               |         
    0x000c4ffc mov r0, r3                                    |         r0 = r3;
    0x000c4ffe blx 0x3fbc4                                   |         fcntl64 ();
                                                             |     }
    0x000c5002 mvn r4, 0xb                                   |     r4 = ~0xb;
    0x000c5006 b 0xc4f3c                                     |     goto label_1;
                                                             | label_13:
    0x000c5008 blx 0x40af0                                   |     fcn_00040af0 ();
    0x000c500c ldr r0, [pc, 0x1c8]                           |     r0 = *(0xc51d8);
    0x000c500e movs r2, r2                                   |     
    0x000c5010 cmp r0, 0x40                                  |     
    0x000c5012 movs r0, r0                                   |     
    0x000c5014 ldrh r6, [r0, 0x2a]                           |     r6 = *((r0 + 0x2a));
    0x000c5016 movs r4, r1                                   |     r4 = r1;
    0x000c5018 ldr r4, [sp, 0x198]                           |     r4 = *(arg_198h);
    0x000c501a movs r5, r1                                   |     r5 = r1;
    0x000c501c blx sp                                        |     sp (r0, r2);
    0x000c501e movs r2, r2                                   |     
                                                             | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/systemd/libsystemd-shared-251.so @ 0xc44ec */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.groupdb_by_name ()                       | void groupdb_by_name (int16_t arg_70h, int16_t arg1, int16_t arg2, int16_t arg3) {
                                                         |     int16_t var_0h;
                                                         |     int32_t var_4h;
                                                         |     int32_t var_4h_2;
                                                         |     int16_t var_10h;
                                                         |     int16_t var_14h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
    0x000c44ec mvnsmi lr, 0xb4000                        |     __asm ("mvnsmi lr, aav.0x000000ff");
    0x000c44f0 mov r8, r2                                |     r8 = r2;
    0x000c44f2 ldr r2, [pc, 0x170]                       |     
    0x000c44f4 sub sp, 0x1c                              |     
    0x000c44f6 movs r7, 0                                |     r7 = 0;
    0x000c44f8 mov r5, r1                                |     r5 = r1;
    0x000c44fa ldr r3, [pc, 0x16c]                       |     r3 = *(0xc466a);
    0x000c44fc movs r1, 1                                |     r1 = 1;
    0x000c44fe add r2, pc                                |     r2 = 0x188b68;
    0x000c4500 mov r6, r0                                |     r6 = r0;
    0x000c4502 ldr r3, [r2, r3]                          |     
    0x000c4504 ldr r3, [r3]                              |     r3 = *(0x188b68);
    0x000c4506 str r3, [sp, 0x14]                        |     var_14h = r3;
    0x000c4508 mov.w r3, 0                               |     r3 = 0;
    0x000c450c str r7, [sp, 0x10]                        |     var_10h = r7;
    0x000c450e blx 0x4313c                               |     r0 = fcn_0004313c ();
    0x000c4512 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000c4514 beq.w 0xc4644                             |         goto label_7;
                                                         |     }
    0x000c4518 movs r3, 8                                |     r3 = 8;
    0x000c451a movs r2, 9                                |     r2 = 9;
    0x000c451c strd r6, r3, [sp, 4]                      |     __asm ("strd r6, r3, [var_4h]");
    0x000c4520 movs r1, 7                                |     r1 = 7;
    0x000c4522 ldr r3, [pc, 0x148]                       |     
    0x000c4524 add r0, sp, 0x10                          |     r0 += var_10h;
    0x000c4526 str r7, [sp]                              |     *(sp) = r7;
    0x000c4528 add r3, pc                                |     r3 = 0x188b9a;
    0x000c452a blx 0x3e4ec                               |     fcn_0003e4ec ();
    0x000c452e subs r4, r0, 0                            |     r4 -= var_10h;
                                                         |     if (r4 < var_10h) {
    0x000c4530 blt 0xc45b4                               |         goto label_8;
                                                         |     }
    0x000c4532 mov r1, r5                                |     r1 = r5;
    0x000c4534 movs r0, 1                                |     r0 = 1;
    0x000c4536 bl 0xc2f04                                |     fcn_000c2f04 (r0, r1);
    0x000c453a ldr r3, [sp, 0x10]                        |     r3 = var_10h;
    0x000c453c mov sb, r0                                |     sb = r0;
    0x000c453e cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000c4540 beq.w 0xc4652                             |         goto label_9;
                                                         |     }
    0x000c4544 ldr r1, [pc, 0x128]                       |     
    0x000c4546 mov r2, r7                                |     r2 = r7;
    0x000c4548 str r5, [sp]                              |     *(sp) = r5;
    0x000c454a add r1, pc                                |     r1 = 0x188bbe;
    0x000c454c bl 0xc307c                                |     r0 = fcn_000c307c (r0, r1, r2, r3, r4, r5);
    0x000c4550 subs r4, r0, 0                            |     r4 = r0 - 0;
    0x000c4552 bge 0xc45a0                               |     
                                                         |     while (r4 < r0) {
    0x000c4554 lsls r7, r5, 0x1d                         |         r7 = r5 << 0x1d;
                                                         |         if (r7 >= r5) {
    0x000c4556 bmi 0xc4564                               |             
    0x000c4558 ldrb.w r1, [sb, 0xc]                      |             r1 = *((sb + 0xc));
    0x000c455c ubfx r1, r1, 2, 1                         |             r1 = (r1 >> 2) & ((1 << 1) - 1);
    0x000c4560 cmp r1, 0                                 |             
                                                         |             if (r1 == 0) {
    0x000c4562 beq 0xc45f2                               |                 goto label_10;
                                                         |             }
                                                         |         }
                                                         | label_4:
    0x000c4564 lsls r0, r5, 0x1f                         |         r0 = r5 << 0x1f;
                                                         |         if (r0 >= r5) {
    0x000c4566 bmi 0xc4570                               |             
    0x000c4568 ldrb.w r3, [sb, 0xc]                      |             r3 = *((sb + 0xc));
    0x000c456c lsls r1, r3, 0x1f                         |             r1 = r3 << 0x1f;
                                                         |             if (r1 >= r3) {
    0x000c456e bpl 0xc4602                               |                 goto label_11;
                                                         |             }
                                                         |         }
                                                         | label_5:
    0x000c4570 lsls r3, r5, 0x19                         |         r3 = r5 << 0x19;
                                                         |         if (r3 >= r5) {
    0x000c4572 bpl 0xc45c0                               |             goto label_12;
                                                         |         }
                                                         | label_0:
    0x000c4574 ldr r0, [sp, 0x10]                        |         r0 = var_10h;
                                                         |         if (r0 != 0) {
    0x000c4576 cbz r0, 0xc457e                           |             
                                                         | label_2:
    0x000c4578 blx 0x3fbc4                               |             fcntl64 ();
    0x000c457c str r0, [sp, 0x10]                        |             var_10h = r0;
                                                         |         }
                                                         | label_3:
    0x000c457e mov r0, sb                                |         r0 = sb;
    0x000c4580 blx 0x3f540                               |         strcpy (r0, r1)
                                                         | label_1:
    0x000c4584 ldr r2, [pc, 0xec]                        |         
    0x000c4586 ldr r3, [pc, 0xe0]                        |         r3 = *(0xc466a);
    0x000c4588 add r2, pc                                |         r2 = 0x188c00;
    0x000c458a ldr r3, [r2, r3]                          |         r3 = *(0x188c00);
    0x000c458c ldr r2, [r3]                              |         r2 = *(0x188c00);
    0x000c458e ldr r3, [sp, 0x14]                        |         r3 = var_14h;
    0x000c4590 eors r2, r3                               |         r2 ^= r3;
    0x000c4592 mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x000c4596 bne 0xc4660                               |             goto label_13;
                                                         |         }
    0x000c4598 mov r0, r4                                |         r0 = r4;
    0x000c459a add sp, 0x1c                              |         
    0x000c459c pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
    0x000c45a0 mov r3, r7                                |         r3 = r7;
    0x000c45a2 mov r1, r7                                |         r1 = r7;
    0x000c45a4 mov r2, r8                                |         r2 = r8;
    0x000c45a6 mov r0, sb                                |         r0 = sb;
    0x000c45a8 str r7, [sp]                              |         *(sp) = r7;
    0x000c45aa bl 0xc2f38                                |         r0 = fcn_000c2f38 (r0, r1, r2, r3, r4);
    0x000c45ae subs r4, r0, 0                            |         r4 = r0 - 0;
    0x000c45b0 blt 0xc4554                               |         
                                                         |     }
    0x000c45b2 b 0xc4574                                 |     goto label_0;
                                                         | label_8:
    0x000c45b4 ldr r0, [sp, 0x10]                        |     r0 = var_10h;
    0x000c45b6 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000c45b8 beq 0xc4584                               |         goto label_1;
                                                         |     }
    0x000c45ba blx 0x3fbc4                               |     fcntl64 ();
    0x000c45be b 0xc4584                                 |     goto label_1;
                                                         | label_12:
    0x000c45c0 ldr r1, [pc, 0xb4]                        |     
    0x000c45c2 mov r0, r6                                |     r0 = r6;
    0x000c45c4 add r1, pc                                |     r1 = 0x188c40;
    0x000c45c6 blx 0x42d2c                               |     r0 = fcn_00042d2c ();
                                                         |     if (r0 == 0) {
    0x000c45ca cbz r0, 0xc4634                           |         goto label_14;
                                                         |     }
    0x000c45cc ldr r1, [pc, 0xac]                        |     
    0x000c45ce mov r0, r6                                |     r0 = r6;
    0x000c45d0 add r1, pc                                |     r1 = 0x188c50;
    0x000c45d2 blx 0x42d2c                               |     r0 = fcn_00042d2c ();
    0x000c45d6 cmp r0, 0                                 |     
                                                         |     if (r0 != 0) {
    0x000c45d8 bne 0xc4574                               |         goto label_0;
                                                         |     }
    0x000c45da blx 0x3c218                               |     r0 = fcn_0003c218 ();
    0x000c45de cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000c45e0 beq 0xc4574                               |         goto label_0;
                                                         |     }
    0x000c45e2 mov r0, r8                                |     r0 = r8;
    0x000c45e4 bl 0xc2e98                                |     r0 = fcn_000c2e98 ();
    0x000c45e8 mov r4, r0                                |     r4 = r0;
    0x000c45ea ldr r0, [sp, 0x10]                        |     r0 = var_10h;
    0x000c45ec cmp r0, 0                                 |     
                                                         |     if (r0 != 0) {
    0x000c45ee bne 0xc4578                               |         goto label_2;
                                                         |     }
    0x000c45f0 b 0xc457e                                 |     goto label_3;
                                                         | label_10:
    0x000c45f2 mov r3, r8                                |     r3 = r8;
    0x000c45f4 mov r2, r5                                |     r2 = r5;
    0x000c45f6 mov r0, r6                                |     r0 = r6;
    0x000c45f8 blx 0x426e8                               |     fcn_000426e8 ();
    0x000c45fa ldrd r1, lr, [r6], -0x10                  |     __asm ("ldrd r1, lr, [r6], -0x10");
                                                         |     if (r0 < 0) {
    0x000c45fe blt 0xc4564                               |         goto label_4;
                                                         |     }
    0x000c4600 b 0xc4574                                 |     goto label_0;
                                                         | label_11:
    0x000c4602 lsls r2, r3, 0x1a                         |     r2 = r3 << 0x1a;
                                                         |     if (r2 >= r3) {
    0x000c4604 bpl 0xc461c                               |         goto label_15;
                                                         |     }
                                                         | label_6:
    0x000c4606 eor r1, r5, 8                             |     r1 = r5 ^ 8;
    0x000c460a mov r2, r8                                |     r2 = r8;
    0x000c460c ubfx r1, r1, 3, 1                         |     r1 = (r1 >> 3) & ((1 << 1) - 1);
    0x000c4610 mov r0, r6                                |     r0 = r6;
    0x000c4612 blx 0x3cdc0                               |     r0 = fcn_0003cdc0 ();
    0x000c4616 subs r4, r0, 0                            |     r4 = r0 - 0;
                                                         |     if (r4 < r0) {
    0x000c4618 blt 0xc4570                               |         goto label_5;
                                                         |     }
    0x000c461a b 0xc4574                                 |     goto label_0;
                                                         | label_15:
    0x000c461c movs r0, 1                                |     r0 = 1;
    0x000c461e blx 0x3ed68                               |     r0 = fcn_0003ed68 ();
    0x000c4622 subs r4, r0, 0                            |     r4 = r0 - 0;
                                                         |     if (r4 < r0) {
    0x000c4624 blt 0xc4570                               |         goto label_5;
                                                         |     }
    0x000c4626 ldrb.w r3, [sb, 0xc]                      |     r3 = *((sb + 0xc));
    0x000c462a orr r3, r3, 0x20                          |     r3 |= 0x20;
    0x000c462e strb.w r3, [sb, 0xc]                      |     *((sb + 0xc)) = r3;
    0x000c4632 b 0xc4606                                 |     goto label_6;
                                                         | label_14:
    0x000c4634 mov r0, r8                                |     r0 = r8;
    0x000c4636 bl 0xc2e34                                |     r0 = fcn_000c2e34 ();
    0x000c463a mov r4, r0                                |     r4 = r0;
    0x000c463c ldr r0, [sp, 0x10]                        |     r0 = var_10h;
    0x000c463e cmp r0, 0                                 |     
                                                         |     if (r0 != 0) {
    0x000c4640 bne 0xc4578                               |         goto label_2;
                                                         |     }
    0x000c4642 b 0xc457e                                 |     goto label_3;
                                                         | label_7:
    0x000c4644 ldr r0, [sp, 0x10]                        |     r0 = var_10h;
                                                         |     if (r0 != 0) {
    0x000c4646 cbz r0, 0xc464c                           |         
    0x000c4648 blx 0x3fbc4                               |         fcntl64 ();
                                                         |     }
    0x000c464c mvn r4, 0x15                              |     r4 = ~0x15;
    0x000c4650 b 0xc4584                                 |     goto label_1;
                                                         |     if (r3 != 0) {
                                                         | label_9:
    0x000c4652 cbz r3, 0xc465a                           |         
    0x000c4654 mov r0, r3                                |         r0 = r3;
    0x000c4656 blx 0x3fbc4                               |         fcntl64 ();
                                                         |     }
    0x000c465a mvn r4, 0xb                               |     r4 = ~0xb;
    0x000c465e b 0xc4584                                 |     goto label_1;
                                                         | label_13:
    0x000c4660 blx 0x40af0                               |     fcn_00040af0 ();
    0x000c4664 strh r2, [r5, r0]                         |     *((r5 + r0)) = r2;
    0x000c4666 movs r2, r2                               |     
    0x000c4668 cmp r0, 0x40                              |     
    0x000c466a movs r0, r0                               |     
    0x000c466c str r7, [sp, 0x70]                        |     *(arg_70h) = r7;
    0x000c466e movs r4, r1                               |     r4 = r1;
    0x000c4670 adr r6, 0x78                              |     r6 = 0x78;
    0x000c4672 movs r5, r1                               |     r5 = r1;
    0x000c4674 str r0, [r4, r6]                          |     *((r4 + r6)) = r0;
    0x000c4676 movs r2, r2                               |     
    0x000c4678 invalid                                   |     
                                                         | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/systemd/libsystemd-shared-251.so @ 0xc4680 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.membershipdb_all ()              | void membershipdb_all (int16_t arg1, uint32_t arg2) {
                                                 |     int16_t var_0h;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x000c4680 strdlt fp, ip, [r3], r0           |     __asm ("strdlt fp, ip, [r3], r0");
    0x000c4684 cmp r1, 0                         |     
                                                 |     if (r1 == 0) {
    0x000c4686 beq 0xc472a                       |         goto label_5;
                                                 |     }
    0x000c4688 mov r6, r0                        |     r6 = r0;
    0x000c468a mov r7, r1                        |     r7 = r1;
    0x000c468c mov r1, r0                        |     r1 = r0;
    0x000c468e movs r0, 2                        |     r0 = 2;
    0x000c4690 bl 0xc2f04                        |     r0 = fcn_000c2f04 (r0, r1);
    0x000c4694 mov r4, r0                        |     r4 = r0;
    0x000c4696 cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x000c4698 beq 0xc4740                       |         goto label_6;
                                                 |     }
    0x000c469a ldr r1, [pc, 0xac]                |     
    0x000c469c movs r3, 0                        |     r3 = 0;
    0x000c469e movs r2, 1                        |     r2 = 1;
    0x000c46a0 str r6, [sp]                      |     *(sp) = r6;
    0x000c46a2 add r1, pc                        |     r1 = 0x188df0;
    0x000c46a4 bl 0xc307c                        |     fcn_000c307c (r0, r1, r2, r3, r4, r5);
    0x000c46a8 lsls r1, r6, 0x1f                 |     r1 = r6 << 0x1f;
    0x000c46aa mov r5, r0                        |     r5 = r0;
                                                 |     if (r1 >= r6) {
    0x000c46ac bmi 0xc46c8                       |         
    0x000c46ae cmp r0, 0                         |         
    0x000c46b0 ldrb r3, [r4, 0xc]                |         r3 = *((r4 + 0xc));
                                                 |         if (r0 >= 0) {
    0x000c46b2 blt 0xc46b8                       |             
    0x000c46b4 lsls r2, r3, 0x1f                 |             r2 = r3 << 0x1f;
                                                 |             if (r2 < r3) {
    0x000c46b6 bmi 0xc46fa                       |                 goto label_7;
                                                 |             }
                                                 |         }
    0x000c46b8 lsls r1, r3, 0x1a                 |         r1 = r3 << 0x1a;
                                                 |         if (r1 >= r3) {
    0x000c46ba bpl 0xc4700                       |             goto label_8;
                                                 |         }
                                                 | label_2:
    0x000c46bc blx 0x3e58c                       |         fcn_0003e58c ();
    0x000c46c0 ldrb r3, [r4, 0xc]                |         r3 = *((r4 + 0xc));
    0x000c46c2 orr r3, r3, 2                     |         r3 |= 2;
    0x000c46c6 strb r3, [r4, 0xc]                |         *((r4 + 0xc)) = r3;
                                                 |     }
    0x000c46c8 lsls r2, r6, 0x1d                 |     r2 = r6 << 0x1d;
                                                 |     if (r2 >= r6) {
    0x000c46ca bpl 0xc46e8                       |         goto label_9;
                                                 |     }
    0x000c46cc cmp r5, 0                         |     
                                                 |     if (r5 >= 0) {
    0x000c46ce bge 0xc46de                       |         goto label_0;
                                                 |     }
                                                 | label_3:
    0x000c46d0 ldrb r3, [r4, 0xc]                |     r3 = *((r4 + 0xc));
    0x000c46d2 lsls r3, r3, 0x1e                 |     r3 <<= 0x1e;
                                                 |     if (r3 < r3) {
    0x000c46d4 bmi 0xc46de                       |         goto label_0;
                                                 |     }
    0x000c46d6 ldr r3, [r4, 0x10]                |     r3 = *((r4 + 0x10));
                                                 |     if (r3 == 0) {
    0x000c46d8 cbz r3, 0xc471e                   |         goto label_10;
                                                 |     }
    0x000c46da ldr r3, [r3]                      |     r3 = *(r3);
                                                 |     if (r3 == 0) {
    0x000c46dc cbz r3, 0xc471e                   |         goto label_10;
                                                 |     }
                                                 |     do {
                                                 | label_0:
    0x000c46de movs r5, 0                        |         r5 = 0;
    0x000c46e0 str r4, [r7]                      |         *(r7) = r4;
                                                 | label_4:
    0x000c46e2 mov r0, r5                        |         r0 = r5;
    0x000c46e4 add sp, 0xc                       |         
    0x000c46e6 pop {r4, r5, r6, r7, pc}          |         
                                                 | label_9:
    0x000c46e8 cmp r5, 0                         |         
                                                 |         if (r5 < 0) {
    0x000c46ea blt 0xc4714                       |             goto label_11;
                                                 |         }
    0x000c46ec movs r0, 0x23                     |         r0 = 0x23;
                                                 | label_1:
    0x000c46ee movs r0, r0                       |         
                                                 |         if (r0 >= r0) {
    0x000c46f0 bmi 0xc46f4                       |             
    0x000c46f2 mov r0, r4                        |             r0 = r4;
                                                 |         }
    0x000c46f4 bl 0xc301c                        |         fcn_000c301c ();
    0x000c46f8 b 0xc46de                         |         
                                                 |     } while (1);
                                                 | label_7:
    0x000c46fa lsls r5, r6, 0x1d                 |     r5 = r6 << 0x1d;
                                                 |     if (r5 < r6) {
    0x000c46fc bmi 0xc46de                       |         goto label_0;
                                                 |     }
    0x000c46fe b 0xc46ee                         |     goto label_1;
                                                 | label_8:
    0x000c4700 movs r0, 1                        |     r0 = 1;
    0x000c4702 blx 0x3ed68                       |     r0 = fcn_0003ed68 ();
    0x000c4706 cmp r0, 0                         |     
                                                 |     if (r0 >= 0) {
    0x000c4708 blt 0xc471c                       |         
    0x000c470a ldrb r3, [r4, 0xc]                |         r3 = *((r4 + 0xc));
    0x000c470c orr r3, r3, 0x20                  |         r3 |= 0x20;
    0x000c4710 strb r3, [r4, 0xc]                |         *((r4 + 0xc)) = r3;
    0x000c4712 b 0xc46bc                         |         goto label_2;
                                                 | label_11:
    0x000c4714 mov r0, r4                        |         r0 = r4;
    0x000c4716 bl 0xc301c                        |         fcn_000c301c ();
    0x000c471a b 0xc46d0                         |         goto label_3;
                                                 |     }
    0x000c471c mov r5, r0                        |     r5 = r0;
                                                 | label_10:
    0x000c471e mov r0, r4                        |     r0 = r4;
    0x000c4720 blx 0x3f540                       |     strcpy (r0, r1)
    0x000c4724 mov r0, r5                        |     r0 = r5;
    0x000c4726 add sp, 0xc                       |     
    0x000c4728 pop {r4, r5, r6, r7, pc}          |     
                                                 | label_5:
    0x000c472a ldr r1, [pc, 0x20]                |     
    0x000c472c movw r2, 0x4eb                    |     r2 = 0x4eb;
    0x000c4730 ldr r3, [pc, 0x1c]                |     
    0x000c4732 ldr r0, [pc, 0x20]                |     
    0x000c4734 add r1, pc                        |     r1 = 0x188e86;
    0x000c4736 add r3, pc                        |     r3 = 0x188e8a;
    0x000c4738 adds r1, 7                        |     r1 += 7;
    0x000c473a add r0, pc                        |     r0 = "100000basekr2-full";
    0x000c473c blx 0x3ede8                       |     fcn_0003ede8 ();
                                                 | label_6:
    0x000c4740 mvn r5, 0xb                       |     r5 = ~0xb;
    0x000c4744 b 0xc46e2                         |     goto label_4;
                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/systemd/libsystemd-shared-251.so @ 0xc4ba4 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.membershipdb_by_group ()                     | void membershipdb_by_group (int16_t arg1, int16_t arg2, uint32_t arg3) {
                                                             |     int16_t var_0h;
                                                             |     int32_t var_4h;
                                                             |     int32_t var_4h_2;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_18h;
                                                             |     int16_t var_1ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
    0x000c4ba4 push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x000c4ba8 mov r5, r1                                    |     r5 = r1;
    0x000c4baa ldr r1, [pc, 0x1c8]                           |     
    0x000c4bac sub sp, 0x24                                  |     
    0x000c4bae movs r4, 0                                    |     r4 = 0;
    0x000c4bb0 ldr r3, [pc, 0x1c4]                           |     r3 = *(0xc4d78);
    0x000c4bb2 add r1, pc                                    |     r1 = "config_parse_duplex";
    0x000c4bb4 ldr r3, [r1, r3]                              |     
    0x000c4bb6 ldr r3, [r3]                                  |     r3 = "config_parse_duplex";
    0x000c4bb8 str r3, [sp, 0x1c]                            |     var_1ch = r3;
    0x000c4bba mov.w r3, 0                                   |     r3 = 0;
    0x000c4bbe str r4, [sp, 0x14]                            |     var_14h = r4;
    0x000c4bc0 cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x000c4bc2 beq.w 0xc4ce6                                 |         goto label_7;
                                                             |     }
    0x000c4bc4 strh r0, [r2, 4]                              |     *((r2 + 4)) = r0;
    0x000c4bc6 movs r1, 1                                    |     r1 = 1;
    0x000c4bc8 mov r7, r0                                    |     r7 = r0;
    0x000c4bca mov r8, r2                                    |     r8 = r2;
    0x000c4bcc blx 0x4313c                                   |     r0 = fcn_0004313c ();
    0x000c4bd0 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000c4bd2 beq.w 0xc4d42                                 |         goto label_8;
                                                             |     }
    0x000c4bd6 movs r3, 8                                    |     r3 = 8;
    0x000c4bd8 str r4, [sp]                                  |     *(sp) = r4;
    0x000c4bda strd r7, r3, [sp, 4]                          |     __asm ("strd r7, r3, [var_4h]");
    0x000c4bde movs r2, 9                                    |     r2 = 9;
    0x000c4be0 ldr r3, [pc, 0x198]                           |     
    0x000c4be2 movs r1, 7                                    |     r1 = 7;
    0x000c4be4 add r0, sp, 0x14                              |     r0 += var_14h;
    0x000c4be6 add r3, pc                                    |     r3 = 0x189966;
    0x000c4be8 blx 0x3e4ec                                   |     fcn_0003e4ec ();
    0x000c4bec subs r4, r0, 0                                |     r4 -= var_14h;
                                                             |     if (r4 < var_14h) {
    0x000c4bee blt 0xc4cc6                                   |         goto label_9;
                                                             |     }
    0x000c4bf0 mov r1, r5                                    |     r1 = r5;
    0x000c4bf2 movs r0, 2                                    |     r0 = 2;
    0x000c4bf4 bl 0xc2f04                                    |     fcn_000c2f04 (r0, r1);
    0x000c4bf8 ldr.w sb, [sp, 0x14]                          |     sb = var_14h;
    0x000c4bfc mov r6, r0                                    |     r6 = r0;
    0x000c4bfe cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000c4c00 beq.w 0xc4d56                                 |         goto label_10;
                                                             |     }
    0x000c4c04 mov r0, r7                                    |     r0 = r7;
    0x000c4c06 blx 0x408fc                                   |     fcn_000408fc ();
    0x000c4c0a str r0, [r6, 0x40]                            |     *((r6 + 0x40)) = r0;
    0x000c4c0c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000c4c0e beq.w 0xc4d6c                                 |         goto label_11;
                                                             |     }
    0x000c4c12 ldr r1, [pc, 0x16c]                           |     
    0x000c4c14 mov r3, sb                                    |     r3 = sb;
    0x000c4c16 movs r2, 1                                    |     r2 = 1;
    0x000c4c18 mov r0, r6                                    |     r0 = r6;
    0x000c4c1a str r5, [sp]                                  |     *(sp) = r5;
    0x000c4c1c add r1, pc                                    |     r1 = 0x1899a2;
    0x000c4c1e bl 0xc307c                                    |     fcn_000c307c (r0, r1, r2, r3, r4, r5);
    0x000c4c20 invalid                                       |     
    0x000c4c24 mov r4, r0                                    |     r4 = r0;
                                                             |     if (r2 >= 1) {
    0x000c4c26 bmi 0xc4c8a                                   |         
    0x000c4c28 cmp r0, 0                                     |         
    0x000c4c2a ldrb r3, [r6, 0xc]                            |         r3 = *((r6 + 0xc));
                                                             |         if (r0 >= 0) {
    0x000c4c2c blt 0xc4c38                                   |             
    0x000c4c2e lsls r2, r3, 0x1f                             |             r2 = r3 << 0x1f;
                                                             |             if (r2 >= r3) {
    0x000c4c30 bpl 0xc4c38                                   |                 goto label_12;
                                                             |             }
    0x000c4c32 lsls r1, r5, 0x1d                             |             r1 = r5 << 0x1d;
                                                             |             if (r1 >= r5) {
    0x000c4c34 bpl 0xc4cd8                                   |                 goto label_13;
                                                             |             }
    0x000c4c36 b 0xc4c9c                                     |             goto label_1;
                                                             |         }
                                                             | label_12:
    0x000c4c38 lsls r0, r3, 0x1a                             |         r0 = r3 << 0x1a;
    0x000c4c3a mov.w r2, 0                                   |         r2 = 0;
    0x000c4c3e str r2, [sp, 0x18]                            |         var_18h = r2;
                                                             |         if (r0 >= r3) {
    0x000c4c40 bmi 0xc4c56                                   |             
    0x000c4c42 movs r0, 1                                    |             r0 = 1;
    0x000c4c44 blx 0x3ed68                                   |             r0 = fcn_0003ed68 ();
    0x000c4c48 subs r3, r0, 0                                |             r3 = r0 - 0;
                                                             |             if (r3 < r0) {
    0x000c4c4a blt.w 0xc4d50                                 |                 goto label_14;
                                                             |             }
    0x000c4c4e ldrb r3, [r6, 0xc]                            |             r3 = *((r6 + 0xc));
    0x000c4c50 orr r3, r3, 0x20                              |             r3 |= 0x20;
    0x000c4c54 strb r3, [r6, 0xc]                            |             *((r6 + 0xc)) = r3;
                                                             |         }
    0x000c4c56 add r2, sp, 0x18                              |         r2 += var_18h;
    0x000c4c58 movs r1, 0                                    |         r1 = 0;
    0x000c4c5a mov r0, r7                                    |         r0 = r7;
    0x000c4c5c blx 0x3cdc0                                   |         fcn_0003cdc0 ();
    0x000c4c60 ldr r3, [sp, 0x18]                            |         r3 = var_18h;
                                                             |         if (r3 == 0) {
    0x000c4c62 cbz r3, 0xc4c8a                               |             goto label_15;
                                                             |         }
    0x000c4c64 ldr r0, [r3, 0x2c]                            |         r0 = *((r3 + 0x2c));
    0x000c4c66 blx 0x41b34                                   |         fcn_00041b34 ();
    0x000c4c6a str r0, [r6, 0x34]                            |         *((r6 + 0x34)) = r0;
    0x000c4c6c cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x000c4c6e beq 0xc4d2a                                   |             goto label_16;
                                                             |         }
    0x000c4c70 movs r3, 0                                    |         r3 = 0;
    0x000c4c72 mov r0, r7                                    |         r0 = r7;
    0x000c4c74 str r3, [r6, 0x38]                            |         *((r6 + 0x38)) = r3;
    0x000c4c76 blx 0x408fc                                   |         r0 = fcn_000408fc ();
    0x000c4c7a mov r3, r0                                    |         r3 = r0;
    0x000c4c7c str r0, [r6, 0x30]                            |         *((r6 + 0x30)) = r0;
    0x000c4c7e ldr r0, [sp, 0x18]                            |         r0 = var_18h;
    0x000c4c80 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x000c4c82 beq 0xc4d2c                                   |             goto label_17;
                                                             |         }
                                                             |         if (r0 == 0) {
    0x000c4c84 cbz r0, 0xc4c8a                               |             goto label_15;
                                                             |         }
    0x000c4c86 blx 0x42220                                   |         fcn_00042220 ();
                                                             |     }
                                                             | label_15:
    0x000c4c8a lsls r3, r5, 0x1d                             |     r3 = r5 << 0x1d;
                                                             |     if (r3 >= r5) {
    0x000c4c8c bpl 0xc4cd2                                   |         goto label_18;
                                                             |     }
    0x000c4c8e cmp r4, 0                                     |     
                                                             |     if (r4 < 0) {
    0x000c4c90 bge 0xc4c9c                                   |         
                                                             | label_3:
    0x000c4c92 ldr r3, [r6, 0x34]                            |         r3 = *((r6 + 0x34));
    0x000c4c94 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x000c4c96 beq 0xc4cfc                                   |             goto label_19;
                                                             |         }
    0x000c4c98 ldr r3, [r3]                                  |         r3 = *(r3);
                                                             |         if (r3 == 0) {
    0x000c4c9a cbz r3, 0xc4cfc                               |             goto label_19;
                                                             |         }
                                                             |     }
                                                             | label_1:
    0x000c4c9c ldr r0, [sp, 0x14]                            |     r0 = var_14h;
                                                             | label_2:
    0x000c4c9e str.w r6, [r8]                                |     __asm ("str.w r6, [r8]");
                                                             |     if (r0 != 0) {
    0x000c4ca2 cbz r0, 0xc4ca8                               |         
    0x000c4ca4 blx 0x3fbc4                                   |         fcntl64 ();
                                                             |     }
    0x000c4ca8 movs r4, 0                                    |     r4 = 0;
                                                             |     do {
                                                             | label_0:
    0x000c4caa ldr r2, [pc, 0xd8]                            |         
    0x000c4cac ldr r3, [pc, 0xc8]                            |         r3 = *(0xc4d78);
    0x000c4cae add r2, pc                                    |         r2 = 0x189a38;
    0x000c4cb0 ldr r3, [r2, r3]                              |         r3 = *(0x189a38);
    0x000c4cb2 ldr r2, [r3]                                  |         r2 = *(0x189a38);
    0x000c4cb4 ldr r3, [sp, 0x1c]                            |         r3 = var_1ch;
    0x000c4cb6 eors r2, r3                                   |         r2 ^= r3;
    0x000c4cb8 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x000c4cbc bne 0xc4d68                                   |             goto label_20;
                                                             |         }
    0x000c4cbe mov r0, r4                                    |         r0 = r4;
    0x000c4cc0 add sp, 0x24                                  |         
    0x000c4cc2 pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
                                                             | label_9:
    0x000c4cc6 ldr r0, [sp, 0x14]                            |         r0 = var_14h;
    0x000c4cc8 cmp r0, 0                                     |         
    0x000c4cca beq 0xc4caa                                   |         
                                                             |     } while (r0 == 0);
    0x000c4ccc blx 0x3fbc4                                   |     fcntl64 ();
    0x000c4cd0 b 0xc4caa                                     |     goto label_0;
                                                             | label_18:
    0x000c4cd2 cmp r4, 0                                     |     
                                                             |     if (r4 < 0) {
    0x000c4cd4 blt 0xc4d22                                   |         goto label_21;
                                                             |     }
    0x000c4cd6 ldrb r3, [r6, 0xc]                            |     r3 = *((r6 + 0xc));
                                                             | label_13:
    0x000c4cd8 lsls r2, r3, 0x1d                             |     r2 = r3 << 0x1d;
                                                             |     if (r2 < r3) {
    0x000c4cda bmi 0xc4c9c                                   |         goto label_1;
                                                             |     }
    0x000c4cdc mov r0, r6                                    |     r0 = r6;
    0x000c4cde bl 0xc301c                                    |     fcn_000c301c ();
    0x000c4ce2 ldr r0, [sp, 0x14]                            |     r0 = var_14h;
    0x000c4ce4 b 0xc4c9e                                     |     goto label_2;
                                                             | label_7:
    0x000c4ce6 ldr r1, [pc, 0xa0]                            |     
    0x000c4ce8 movw r2, 0x4b1                                |     r2 = 0x4b1;
    0x000c4cec ldr r3, [pc, 0x9c]                            |     
    0x000c4cee ldr r0, [pc, 0xa0]                            |     
    0x000c4cf0 add r1, pc                                    |     r1 = 0x189a7e;
    0x000c4cf2 add r3, pc                                    |     r3 = 0x189a82;
    0x000c4cf4 adds r1, 7                                    |     r1 += 7;
    0x000c4cf6 add r0, pc                                    |     r0 = 0x189a8c;
    0x000c4cf8 blx 0x3ede8                                   |     fcn_0003ede8 ();
                                                             | label_19:
    0x000c4cfc ldr r3, [r6, 0x10]                            |     r3 = *((r6 + 0x10));
    0x000c4cfe ldr.w sb, [sp, 0x14]                          |     sb = var_14h;
    0x000c4d02 mov r0, sb                                    |     r0 = sb;
                                                             |     if (r3 == 0) {
    0x000c4d04 cbz r3, 0xc4d0c                               |         goto label_6;
                                                             |     }
    0x000c4d06 ldr r3, [r3]                                  |     r3 = *(r3);
    0x000c4d08 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x000c4d0a bne 0xc4c9e                                   |         goto label_2;
                                                             |     }
                                                             | label_6:
    0x000c4d0c cmp.w sb, 0                                   |     
    0x000c4d10 beq 0xc4d1a                                   |     
                                                             |     while (sb != 0) {
    0x000c4d12 mov r0, sb                                    |         r0 = sb;
    0x000c4d14 blx 0x3fbc4                                   |         fcntl64 ();
    0x000c4d16 vhadd.s16 d25, d6, d5                         |         __asm ("vhadd.s16 d25, d6, d5");
                                                             | label_4:
    0x000c4d1a mov r0, r6                                    |         r0 = r6;
    0x000c4d1c blx 0x3f540                                   |         strcpy (r0, r1)
    0x000c4d20 b 0xc4caa                                     |         goto label_0;
                                                             | label_21:
    0x000c4d22 mov r0, r6                                    |         r0 = r6;
    0x000c4d24 bl 0xc301c                                    |         fcn_000c301c ();
    0x000c4d28 b 0xc4c92                                     |         goto label_3;
                                                             | label_16:
    0x000c4d2a ldr r0, [sp, 0x18]                            |         r0 = var_18h;
                                                             | label_17:
    0x000c4d2c mvn r4, 0xb                                   |         r4 = ~0xb;
                                                             |         if (r0 != 0) {
                                                             | label_5:
    0x000c4d30 cbz r0, 0xc4d36                               |             
    0x000c4d32 blx 0x42220                                   |             fcn_00042220 ();
                                                             |         }
    0x000c4d36 ldr.w sb, [sp, 0x14]                          |         sb = var_14h;
    0x000c4d3a cmp.w sb, 0                                   |         
    0x000c4d3e bne 0xc4d12                                   |         
                                                             |     }
    0x000c4d40 b 0xc4d1a                                     |     goto label_4;
                                                             | label_8:
    0x000c4d42 ldr r0, [sp, 0x14]                            |     r0 = var_14h;
                                                             |     if (r0 != 0) {
    0x000c4d44 cbz r0, 0xc4d4a                               |         
    0x000c4d46 blx 0x3fbc4                                   |         fcntl64 ();
                                                             |     }
    0x000c4d4a mvn r4, 0x15                                  |     r4 = ~0x15;
    0x000c4d4e b 0xc4caa                                     |     goto label_0;
                                                             | label_14:
    0x000c4d50 ldr r0, [sp, 0x18]                            |     r0 = var_18h;
    0x000c4d52 mov r4, r3                                    |     r4 = r3;
    0x000c4d54 b 0xc4d30                                     |     goto label_5;
                                                             | label_10:
    0x000c4d56 cmp.w sb, 0                                   |     
                                                             |     if (sb != 0) {
    0x000c4d5a beq 0xc4d62                                   |         
    0x000c4d5c mov r0, sb                                    |         r0 = sb;
    0x000c4d5e blx 0x3fbc4                                   |         fcntl64 ();
                                                             |     }
    0x000c4d62 mvn r4, 0xb                                   |     r4 = ~0xb;
    0x000c4d66 b 0xc4caa                                     |     goto label_0;
                                                             | label_20:
    0x000c4d68 blx 0x40af0                                   |     fcn_00040af0 ();
                                                             | label_11:
    0x000c4d6c mvn r4, 0xb                                   |     r4 = ~0xb;
    0x000c4d70 b 0xc4d0c                                     |     goto label_6;
                                                             | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/systemd/libsystemd-shared-251.so @ 0xc4d94 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.membershipdb_by_group_strv ()            | void membershipdb_by_group_strv (int16_t arg_108h, int16_t arg_160h, int16_t arg_3b0h, uint32_t arg1, uint32_t arg3) {
                                                         |     int16_t var_10h;
                                                         |     int16_t var_14h;
                                                         |     int16_t var_0h_3;
                                                         |     int16_t var_4h;
                                                         |     int16_t var_8h;
                                                         |     int16_t var_ch;
                                                         |     r0 = arg1;
                                                         |     r2 = arg3;
    0x000c4d94 push.w {r4, r5, r6, r7, r8, lr}           |     
    0x000c4d98 movs r5, 0                                |     r5 = 0;
    0x000c4d9a ldr r4, [pc, 0xe4]                        |     
    0x000c4d9c sub sp, 0x10                              |     
    0x000c4d9e ldr r3, [pc, 0xe4]                        |     r3 = *(0xc4e86);
    0x000c4da0 add r4, pc                                |     r4 = 0x189c26;
    0x000c4da2 ldr r3, [r4, r3]                          |     
    0x000c4da4 ldr r3, [r3]                              |     r3 = *(0x189c26);
    0x000c4da6 str r3, [sp, 0xc]                         |     var_ch = r3;
    0x000c4da8 mov.w r3, 0                               |     r3 = 0;
    0x000c4dac strd r5, r5, [sp]                         |     __asm ("strd r5, r5, [sp]");
    0x000c4db0 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000c4db2 beq 0xc4e4e                               |         goto label_2;
                                                         |     }
    0x000c4db4 mov r8, r2                                |     r8 = r2;
    0x000c4db6 cmp r2, 0                                 |     
                                                         |     if (r2 == 0) {
    0x000c4db8 beq 0xc4e64                               |         goto label_3;
                                                         |     }
    0x000c4dba mov r2, sp                                |     r2 = sp;
    0x000c4dbc blx 0x3c790                               |     r0 = fcn_0003c790 ();
    0x000c4dc0 subs r4, r0, 0                            |     r4 = r0 - 0;
                                                         |     if (r4 < r0) {
    0x000c4dc2 blt 0xc4e3a                               |         goto label_4;
                                                         |     }
    0x000c4dc4 add r6, sp, 8                             |     r6 += var_8h;
    0x000c4dc6 add r7, sp, 4                             |     r7 += var_4h;
    0x000c4dc8 b 0xc4de2                                 |     
                                                         |     while (r3 != r0) {
    0x000c4dca cmp r0, 0                                 |         
    0x000c4dcc ldr r1, [sp, 8]                           |         r1 = var_8h;
                                                         |         if (r0 < 0) {
    0x000c4dce blt 0xc4e34                               |             goto label_5;
                                                         |         }
    0x000c4dd0 mov r0, r7                                |         r0 = r7;
    0x000c4dd2 str r5, [sp, 8]                           |         var_8h = r5;
    0x000c4dd4 blx 0x40784                               |         fcn_00040784 ();
    0x000c4dd8 subs r4, r0, 0                            |         r4 -= var_4h;
                                                         |         if (r4 < var_4h) {
    0x000c4dda blt 0xc4e34                               |             goto label_5;
                                                         |         }
    0x000c4ddc ldr r0, [sp, 8]                           |         r0 = var_8h;
    0x000c4dde blx 0x3e160                               |         getopt_long ();
    0x000c4de2 ldr r0, [sp]                              |         r0 = *(sp);
    0x000c4de4 movs r2, 0                                |         r2 = 0;
    0x000c4de6 mov r1, r6                                |         r1 = r6;
    0x000c4de8 str r5, [sp, 8]                           |         var_8h = r5;
    0x000c4dea blx 0x41938                               |         r0 = fcn_00041938 ();
    0x000c4dee adds r3, r0, 3                            |         r3 = r0 + 3;
    0x000c4df0 mov r4, r0                                |         r4 = r0;
    0x000c4df2 bne 0xc4dca                               |         
                                                         |     }
    0x000c4df4 ldr r0, [sp, 8]                           |     r0 = var_8h;
    0x000c4df6 movs r4, 0                                |     r4 = 0;
    0x000c4df8 blx 0x3e160                               |     getopt_long ();
    0x000c4dfc ldr r0, [sp, 4]                           |     r0 = var_4h;
    0x000c4dfe blx 0x42814                               |     fcn_00042814 ();
    0x000c4e02 ldr r0, [sp, 4]                           |     r0 = var_4h;
    0x000c4e04 blx 0x408e0                               |     fcn_000408e0 ();
    0x000c4e08 ldr r3, [sp, 4]                           |     r3 = var_4h;
    0x000c4e0a str r5, [sp, 4]                           |     var_4h = r5;
    0x000c4e0c str.w r3, [r8]                            |     __asm ("str.w r3, [r8]");
                                                         |     do {
    0x000c4e10 ldr r0, [sp]                              |         r0 = *(sp);
                                                         |         if (r0 != 0) {
    0x000c4e12 cbz r0, 0xc4e18                           |             
                                                         | label_0:
    0x000c4e14 blx 0x3f540                               |             strcpy (r0, r1)
                                                         |         }
                                                         | label_1:
    0x000c4e18 ldr r2, [pc, 0x6c]                        |         
    0x000c4e1a ldr r3, [pc, 0x68]                        |         r3 = *(0xc4e86);
    0x000c4e1c add r2, pc                                |         r2 = 0x189ca8;
    0x000c4e1e ldr r3, [r2, r3]                          |         r3 = *(0x189ca8);
    0x000c4e20 ldr r2, [r3]                              |         r2 = *(0x189ca8);
    0x000c4e22 ldr r3, [sp, 0xc]                         |         r3 = var_ch;
    0x000c4e24 eors r2, r3                               |         r2 ^= r3;
    0x000c4e26 mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x000c4e2a bne 0xc4e7a                               |             goto label_6;
                                                         |         }
    0x000c4e2c mov r0, r4                                |         r0 = r4;
    0x000c4e2e add sp, 0x10                              |         
    0x000c4e30 pop.w {r4, r5, r6, r7, r8, pc}            |         
                                                         | label_5:
    0x000c4e34 ldr r0, [sp, 8]                           |         r0 = var_8h;
    0x000c4e36 blx 0x3e160                               |         getopt_long ();
                                                         | label_4:
    0x000c4e3a ldr r0, [sp, 4]                           |         r0 = var_4h;
    0x000c4e3c cmp r0, 0                                 |         
    0x000c4e3e beq 0xc4e10                               |         
                                                         |     } while (r0 == 0);
    0x000c4e40 blx 0x415f8                               |     fcn_000415f8 ();
    0x000c4e44 str r0, [sp, 4]                           |     var_4h = r0;
    0x000c4e46 ldr r0, [sp]                              |     r0 = *(sp);
    0x000c4e48 cmp r0, 0                                 |     
                                                         |     if (r0 != 0) {
    0x000c4e4a bne 0xc4e14                               |         goto label_0;
                                                         |     }
    0x000c4e4c b 0xc4e18                                 |     goto label_1;
                                                         | label_2:
    0x000c4e4e ldr r1, [pc, 0x3c]                        |     
    0x000c4e50 movw r2, 0x591                            |     r2 = 0x591;
    0x000c4e54 ldr r3, [pc, 0x38]                        |     
    0x000c4e56 ldr r0, [pc, 0x3c]                        |     
    0x000c4e58 add r1, pc                                |     r1 = 0x189cea;
    0x000c4e5a add r3, pc                                |     r3 = 0x189cee;
    0x000c4e5c adds r1, 7                                |     r1 += 7;
    0x000c4e5e add r0, pc                                |     r0 = 0x189cf8;
    0x000c4e60 blx 0x3ede8                               |     fcn_0003ede8 ();
                                                         | label_3:
    0x000c4e64 ldr r1, [pc, 0x30]                        |     
    0x000c4e66 movw r2, 0x592                            |     r2 = 0x592;
    0x000c4e6a ldr r3, [pc, 0x30]                        |     
    0x000c4e6c ldr r0, [pc, 0x30]                        |     
    0x000c4e6e add r1, pc                                |     r1 = 0x189d0a;
    0x000c4e70 add r3, pc                                |     r3 = 0x189d12;
    0x000c4e72 adds r1, 7                                |     r1 += 7;
    0x000c4e74 add r0, pc                                |     r0 = 0x189d18;
    0x000c4e76 blx 0x3ede8                               |     fcn_0003ede8 ();
                                                         | label_6:
    0x000c4e7a blx 0x40af0                               |     fcn_00040af0 ();
    0x000c4e7e nop                                       |     
    0x000c4e80 ldr r1, [pc, 0x220]                       |     r1 = *(0xc50a4);
    0x000c4e82 movs r2, r2                               |     
    0x000c4e84 cmp r0, 0x40                              |     
    0x000c4e86 movs r0, r0                               |     
    0x000c4e88 ldr r1, [pc, 0x30]                        |     r1 = *(0xc4ebc);
    0x000c4e8a movs r2, r2                               |     
    0x000c4e8c str r6, [sp, 0x160]                       |     *(arg_160h) = r6;
    0x000c4e8e movs r5, r1                               |     r5 = r1;
    0x000c4e90 ldr r6, [sp, 8]                           |     r6 = var_8h;
    0x000c4e92 movs r5, r1                               |     r5 = r1;
    0x000c4e94 lsls r2, r3, 0x1f                         |     r2 = r3 << 0x1f;
    0x000c4e96 movs r7, r1                               |     r7 = r1;
    0x000c4e98 str r6, [sp, 0x108]                       |     *(arg_108h) = r6;
    0x000c4e9a movs r5, r1                               |     r5 = r1;
    0x000c4e9c ldr r5, [sp, 0x3b0]                       |     r5 = *(arg_3b0h);
    0x000c4e9e movs r5, r1                               |     r5 = r1;
    0x000c4ea0 blx r5                                    |     uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x000c4ea2 movs r3, r1                               |     r3 = r1;
                                                         | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/systemd/libsystemd-shared-251.so @ 0xc4d94 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.membershipdb_by_group_strv ()        | void membershipdb_by_group_strv (int16_t arg_108h, int16_t arg_160h, int16_t arg_3b0h, uint32_t arg1, uint32_t arg3) {
                                                     |     int16_t var_10h;
                                                     |     int16_t var_14h;
                                                     |     int16_t var_0h_3;
                                                     |     int16_t var_4h;
                                                     |     int16_t var_8h;
                                                     |     int16_t var_ch;
                                                     |     r0 = arg1;
                                                     |     r2 = arg3;
    0x000c4d94 mvnsmi lr, sp, lsr 18                 |     __asm ("mvnsmi lr, sp, lsr 18");
    0x000c4d98 movs r5, 0                            |     r5 = 0;
    0x000c4d9a ldr r4, [pc, 0xe4]                    |     
    0x000c4d9c sub sp, 0x10                          |     
    0x000c4d9e ldr r3, [pc, 0xe4]                    |     r3 = *(0xc4e86);
    0x000c4da0 add r4, pc                            |     r4 = 0x189c26;
    0x000c4da2 ldr r3, [r4, r3]                      |     
    0x000c4da4 ldr r3, [r3]                          |     r3 = *(0x189c26);
    0x000c4da6 str r3, [sp, 0xc]                     |     var_ch = r3;
    0x000c4da8 mov.w r3, 0                           |     r3 = 0;
    0x000c4dac strd r5, r5, [sp]                     |     __asm ("strd r5, r5, [sp]");
    0x000c4db0 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x000c4db2 beq 0xc4e4e                           |         goto label_2;
                                                     |     }
    0x000c4db4 mov r8, r2                            |     r8 = r2;
    0x000c4db6 cmp r2, 0                             |     
                                                     |     if (r2 == 0) {
    0x000c4db8 beq 0xc4e64                           |         goto label_3;
                                                     |     }
    0x000c4dba mov r2, sp                            |     r2 = sp;
    0x000c4dbc blx 0x3c790                           |     r0 = fcn_0003c790 ();
    0x000c4dc0 subs r4, r0, 0                        |     r4 = r0 - 0;
                                                     |     if (r4 < r0) {
    0x000c4dc2 blt 0xc4e3a                           |         goto label_4;
                                                     |     }
    0x000c4dc4 add r6, sp, 8                         |     r6 += var_8h;
    0x000c4dc6 add r7, sp, 4                         |     r7 += var_4h;
    0x000c4dc8 b 0xc4de2                             |     
                                                     |     while (r3 != r0) {
    0x000c4dca cmp r0, 0                             |         
    0x000c4dcc ldr r1, [sp, 8]                       |         r1 = var_8h;
                                                     |         if (r0 < 0) {
    0x000c4dce blt 0xc4e34                           |             goto label_5;
                                                     |         }
    0x000c4dd0 mov r0, r7                            |         r0 = r7;
    0x000c4dd2 str r5, [sp, 8]                       |         var_8h = r5;
    0x000c4dd4 blx 0x40784                           |         fcn_00040784 ();
    0x000c4dd8 subs r4, r0, 0                        |         r4 -= var_4h;
                                                     |         if (r4 < var_4h) {
    0x000c4dda blt 0xc4e34                           |             goto label_5;
                                                     |         }
    0x000c4ddc ldr r0, [sp, 8]                       |         r0 = var_8h;
    0x000c4dde blx 0x3e160                           |         getopt_long ();
    0x000c4de2 ldr r0, [sp]                          |         r0 = *(sp);
    0x000c4de4 movs r2, 0                            |         r2 = 0;
    0x000c4de6 mov r1, r6                            |         r1 = r6;
    0x000c4de8 str r5, [sp, 8]                       |         var_8h = r5;
    0x000c4dea blx 0x41938                           |         r0 = fcn_00041938 ();
    0x000c4dee adds r3, r0, 3                        |         r3 = r0 + 3;
    0x000c4df0 mov r4, r0                            |         r4 = r0;
    0x000c4df2 bne 0xc4dca                           |         
                                                     |     }
    0x000c4df4 ldr r0, [sp, 8]                       |     r0 = var_8h;
    0x000c4df6 movs r4, 0                            |     r4 = 0;
    0x000c4df8 blx 0x3e160                           |     getopt_long ();
    0x000c4dfc ldr r0, [sp, 4]                       |     r0 = var_4h;
    0x000c4dfe blx 0x42814                           |     fcn_00042814 ();
    0x000c4e02 ldr r0, [sp, 4]                       |     r0 = var_4h;
    0x000c4e04 blx 0x408e0                           |     fcn_000408e0 ();
    0x000c4e08 ldr r3, [sp, 4]                       |     r3 = var_4h;
    0x000c4e0a str r5, [sp, 4]                       |     var_4h = r5;
    0x000c4e0c str.w r3, [r8]                        |     __asm ("str.w r3, [r8]");
                                                     |     do {
    0x000c4e10 ldr r0, [sp]                          |         r0 = *(sp);
                                                     |         if (r0 != 0) {
    0x000c4e12 cbz r0, 0xc4e18                       |             
                                                     | label_0:
    0x000c4e14 blx 0x3f540                           |             strcpy (r0, r1)
                                                     |         }
                                                     | label_1:
    0x000c4e18 ldr r2, [pc, 0x6c]                    |         
    0x000c4e1a ldr r3, [pc, 0x68]                    |         r3 = *(0xc4e86);
    0x000c4e1c add r2, pc                            |         r2 = 0x189ca8;
    0x000c4e1e ldr r3, [r2, r3]                      |         r3 = *(0x189ca8);
    0x000c4e20 ldr r2, [r3]                          |         r2 = *(0x189ca8);
    0x000c4e22 ldr r3, [sp, 0xc]                     |         r3 = var_ch;
    0x000c4e24 eors r2, r3                           |         r2 ^= r3;
    0x000c4e26 mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x000c4e2a bne 0xc4e7a                           |             goto label_6;
                                                     |         }
    0x000c4e2c mov r0, r4                            |         r0 = r4;
    0x000c4e2e add sp, 0x10                          |         
    0x000c4e30 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_5:
    0x000c4e34 ldr r0, [sp, 8]                       |         r0 = var_8h;
    0x000c4e36 blx 0x3e160                           |         getopt_long ();
                                                     | label_4:
    0x000c4e3a ldr r0, [sp, 4]                       |         r0 = var_4h;
    0x000c4e3c cmp r0, 0                             |         
    0x000c4e3e beq 0xc4e10                           |         
                                                     |     } while (r0 == 0);
    0x000c4e40 blx 0x415f8                           |     fcn_000415f8 ();
    0x000c4e44 str r0, [sp, 4]                       |     var_4h = r0;
    0x000c4e46 ldr r0, [sp]                          |     r0 = *(sp);
    0x000c4e48 cmp r0, 0                             |     
                                                     |     if (r0 != 0) {
    0x000c4e4a bne 0xc4e14                           |         goto label_0;
                                                     |     }
    0x000c4e4c b 0xc4e18                             |     goto label_1;
                                                     | label_2:
    0x000c4e4e ldr r1, [pc, 0x3c]                    |     
    0x000c4e50 movw r2, 0x591                        |     r2 = 0x591;
    0x000c4e54 ldr r3, [pc, 0x38]                    |     
    0x000c4e56 ldr r0, [pc, 0x3c]                    |     
    0x000c4e58 add r1, pc                            |     r1 = 0x189cea;
    0x000c4e5a add r3, pc                            |     r3 = 0x189cee;
    0x000c4e5c adds r1, 7                            |     r1 += 7;
    0x000c4e5e add r0, pc                            |     r0 = 0x189cf8;
    0x000c4e60 blx 0x3ede8                           |     fcn_0003ede8 ();
                                                     | label_3:
    0x000c4e64 ldr r1, [pc, 0x30]                    |     
    0x000c4e66 movw r2, 0x592                        |     r2 = 0x592;
    0x000c4e6a ldr r3, [pc, 0x30]                    |     
    0x000c4e6c ldr r0, [pc, 0x30]                    |     
    0x000c4e6e add r1, pc                            |     r1 = 0x189d0a;
    0x000c4e70 add r3, pc                            |     r3 = 0x189d12;
    0x000c4e72 adds r1, 7                            |     r1 += 7;
    0x000c4e74 add r0, pc                            |     r0 = 0x189d18;
    0x000c4e76 blx 0x3ede8                           |     fcn_0003ede8 ();
                                                     | label_6:
    0x000c4e7a blx 0x40af0                           |     fcn_00040af0 ();
    0x000c4e7e nop                                   |     
    0x000c4e80 ldr r1, [pc, 0x220]                   |     r1 = *(0xc50a4);
    0x000c4e82 movs r2, r2                           |     
    0x000c4e84 cmp r0, 0x40                          |     
    0x000c4e86 movs r0, r0                           |     
    0x000c4e88 ldr r1, [pc, 0x30]                    |     r1 = *(0xc4ebc);
    0x000c4e8a movs r2, r2                           |     
    0x000c4e8c str r6, [sp, 0x160]                   |     *(arg_160h) = r6;
    0x000c4e8e movs r5, r1                           |     r5 = r1;
    0x000c4e90 ldr r6, [sp, 8]                       |     r6 = var_8h;
    0x000c4e92 movs r5, r1                           |     r5 = r1;
    0x000c4e94 lsls r2, r3, 0x1f                     |     r2 = r3 << 0x1f;
    0x000c4e96 movs r7, r1                           |     r7 = r1;
    0x000c4e98 str r6, [sp, 0x108]                   |     *(arg_108h) = r6;
    0x000c4e9a movs r5, r1                           |     r5 = r1;
    0x000c4e9c ldr r5, [sp, 0x3b0]                   |     r5 = *(arg_3b0h);
    0x000c4e9e movs r5, r1                           |     r5 = r1;
    0x000c4ea0 blx r5                                |     uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x000c4ea2 movs r3, r1                           |     r3 = r1;
                                                     | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/systemd/libsystemd-shared-251.so @ 0xc49f8 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.membershipdb_by_user ()                  | void membershipdb_by_user (int16_t arg1, int16_t arg2, uint32_t arg3) {
                                                         |     int16_t var_0h;
                                                         |     int32_t var_4h;
                                                         |     int32_t var_4h_2;
                                                         |     int16_t var_10h;
                                                         |     int16_t var_14h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
    0x000c49f8 mvnsmi lr, 0xb4000                        |     __asm ("mvnsmi lr, aav.0x000000ff");
    0x000c49fc mov r4, r1                                |     r4 = r1;
    0x000c49fe ldr r1, [pc, 0x184]                       |     
    0x000c4a00 sub sp, 0x1c                              |     
    0x000c4a02 movs r5, 0                                |     r5 = 0;
    0x000c4a04 ldr r3, [pc, 0x180]                       |     r3 = *(0xc4b88);
    0x000c4a06 add r1, pc                                |     r1 = 0x189590;
    0x000c4a08 ldr r3, [r1, r3]                          |     
    0x000c4a0a ldr r3, [r3]                              |     r3 = *(0x189590);
    0x000c4a0c str r3, [sp, 0x14]                        |     var_14h = r3;
    0x000c4a0e mov.w r3, 0                               |     r3 = 0;
    0x000c4a12 str r5, [sp, 0x10]                        |     var_10h = r5;
    0x000c4a14 cmp r2, 0                                 |     
                                                         |     if (r2 == 0) {
    0x000c4a16 beq.w 0xc4b2a                             |         goto label_6;
                                                         |     }
    0x000c4a1a movs r1, 1                                |     r1 = 1;
    0x000c4a1c mov r7, r0                                |     r7 = r0;
    0x000c4a1e mov r8, r2                                |     r8 = r2;
    0x000c4a20 blx 0x4313c                               |     r0 = fcn_0004313c ();
    0x000c4a24 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000c4a26 beq.w 0xc4b54                             |         goto label_7;
                                                         |     }
    0x000c4a2a movs r3, 8                                |     r3 = 8;
    0x000c4a2c movs r2, 9                                |     r2 = 9;
    0x000c4a2e strd r7, r3, [sp, 4]                      |     __asm ("strd r7, r3, [var_4h]");
    0x000c4a32 movs r1, 7                                |     r1 = 7;
    0x000c4a34 ldr r3, [pc, 0x154]                       |     
    0x000c4a36 add r0, sp, 0x10                          |     r0 += var_10h;
    0x000c4a38 str r5, [sp]                              |     *(sp) = r5;
    0x000c4a3a add r3, pc                                |     r3 = 0x1895ca;
    0x000c4a3c blx 0x3e4ec                               |     fcn_0003e4ec ();
    0x000c4a40 subs r6, r0, 0                            |     r6 -= var_10h;
                                                         |     if (r6 < var_10h) {
    0x000c4a42 blt 0xc4aec                               |         goto label_8;
                                                         |     }
    0x000c4a44 mov r1, r4                                |     r1 = r4;
    0x000c4a46 movs r0, 2                                |     r0 = 2;
    0x000c4a48 bl 0xc2f04                                |     fcn_000c2f04 (r0, r1);
    0x000c4a4c ldr.w sb, [sp, 0x10]                      |     sb = var_10h;
    0x000c4a50 mov r5, r0                                |     r5 = r0;
    0x000c4a52 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000c4a54 beq.w 0xc4b62                             |         goto label_9;
                                                         |     }
    0x000c4a58 mov r0, r7                                |     r0 = r7;
    0x000c4a5a blx 0x408fc                               |     fcn_000408fc ();
    0x000c4a5e str r0, [r5, 0x3c]                        |     *((r5 + 0x3c)) = r0;
    0x000c4a60 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000c4a62 beq.w 0xc4b78                             |         goto label_10;
                                                         |     }
    0x000c4a66 ldr r1, [pc, 0x128]                       |     
    0x000c4a68 mov r3, sb                                |     r3 = sb;
    0x000c4a6a movs r2, 1                                |     r2 = 1;
    0x000c4a6c mov r0, r5                                |     r0 = r5;
    0x000c4a6e str r4, [sp]                              |     *(sp) = r4;
    0x000c4a70 add r1, pc                                |     r1 = 0x189606;
    0x000c4a72 bl 0xc307c                                |     fcn_000c307c (r0, r1, r2, r3, r4, r5);
    0x000c4a76 lsls r3, r4, 0x1f                         |     r3 = r4 << 0x1f;
    0x000c4a78 mov r7, r0                                |     r7 = r0;
                                                         |     if (r3 >= r4) {
    0x000c4a7a bmi 0xc4aae                               |         
    0x000c4a7c cmp r0, 0                                 |         
    0x000c4a7e ldrb r3, [r5, 0xc]                        |         r3 = *((r5 + 0xc));
                                                         |         if (r0 >= 0) {
    0x000c4a80 blt 0xc4a8c                               |             
    0x000c4a82 lsls r6, r3, 0x1f                         |             r6 = r3 << 0x1f;
                                                         |             if (r6 >= r3) {
    0x000c4a84 bpl 0xc4a8c                               |                 goto label_11;
                                                         |             }
    0x000c4a86 lsls r4, r4, 0x1d                         |             r4 <<= 0x1d;
                                                         |             if (r4 >= r4) {
    0x000c4a88 bpl 0xc4ab8                               |                 goto label_12;
                                                         |             }
    0x000c4a8a b 0xc4ac2                                 |             goto label_1;
                                                         |         }
                                                         | label_11:
    0x000c4a8c lsls r1, r3, 0x1a                         |         r1 = r3 << 0x1a;
                                                         |         if (r1 >= r3) {
    0x000c4a8e bmi 0xc4aa2                               |             
    0x000c4a90 movs r0, 1                                |             r0 = 1;
    0x000c4a92 blx 0x3ed68                               |             r0 = fcn_0003ed68 ();
    0x000c4a96 subs r6, r0, 0                            |             r6 = r0 - 0;
                                                         |             if (r6 < r0) {
    0x000c4a98 blt 0xc4b48                               |                 goto label_13;
                                                         |             }
    0x000c4a9a ldrb r3, [r5, 0xc]                        |             r3 = *((r5 + 0xc));
    0x000c4a9c orr r3, r3, 0x20                          |             r3 |= 0x20;
    0x000c4aa0 strb r3, [r5, 0xc]                        |             *((r5 + 0xc)) = r3;
                                                         |         }
    0x000c4aa2 blx 0x3e58c                               |         fcn_0003e58c ();
    0x000c4aa6 ldrb r3, [r5, 0xc]                        |         r3 = *((r5 + 0xc));
    0x000c4aa8 orr r3, r3, 2                             |         r3 |= 2;
    0x000c4aac strb r3, [r5, 0xc]                        |         *((r5 + 0xc)) = r3;
                                                         |     }
    0x000c4aae lsls r2, r4, 0x1d                         |     r2 = r4 << 0x1d;
                                                         |     if (r2 < r4) {
    0x000c4ab0 bmi 0xc4af8                               |         goto label_14;
                                                         |     }
    0x000c4ab2 cmp r7, 0                                 |     
                                                         |     if (r7 < 0) {
    0x000c4ab4 blt 0xc4b40                               |         goto label_15;
                                                         |     }
    0x000c4ab6 ldrb r3, [r5, 0xc]                        |     r3 = *((r5 + 0xc));
                                                         | label_12:
    0x000c4ab8 lsls r0, r3, 0x1d                         |     r0 = r3 << 0x1d;
                                                         |     if (r0 >= r3) {
    0x000c4aba bmi 0xc4ac2                               |         
    0x000c4abc mov r0, r5                                |         r0 = r5;
    0x000c4abe bl 0xc301c                                |         fcn_000c301c ();
                                                         |     }
                                                         | label_1:
    0x000c4ac2 ldr r0, [sp, 0x10]                        |     r0 = var_10h;
                                                         | label_2:
    0x000c4ac4 str.w r5, [r8]                            |     __asm ("str.w r5, [r8]");
                                                         |     if (r0 != 0) {
    0x000c4ac8 cbz r0, 0xc4ace                           |         
    0x000c4aca blx 0x3fbc4                               |         fcntl64 ();
                                                         |     }
    0x000c4ace movs r6, 0                                |     r6 = 0;
                                                         |     do {
                                                         | label_0:
    0x000c4ad0 ldr r2, [pc, 0xc0]                        |         
    0x000c4ad2 ldr r3, [pc, 0xb4]                        |         r3 = *(0xc4b8a);
    0x000c4ad4 add r2, pc                                |         r2 = 0x18966c;
    0x000c4ad6 ldr r3, [r2, r3]                          |         r3 = *(0x18966c);
    0x000c4ad8 ldr r2, [r3]                              |         r2 = *(0x18966c);
    0x000c4ada ldr r3, [sp, 0x14]                        |         r3 = var_14h;
    0x000c4adc eors r2, r3                               |         r2 ^= r3;
    0x000c4ade mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x000c4ae2 bne 0xc4b74                               |             goto label_16;
                                                         |         }
    0x000c4ae4 mov r0, r6                                |         r0 = r6;
    0x000c4ae6 add sp, 0x1c                              |         
    0x000c4ae8 pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
                                                         | label_8:
    0x000c4aec ldr r0, [sp, 0x10]                        |         r0 = var_10h;
    0x000c4aee cmp r0, 0                                 |         
    0x000c4af0 beq 0xc4ad0                               |         
                                                         |     } while (r0 == 0);
    0x000c4af2 blx 0x3fbc4                               |     fcntl64 ();
    0x000c4af6 b 0xc4ad0                                 |     goto label_0;
                                                         | label_14:
    0x000c4af8 cmp r7, 0                                 |     
                                                         |     if (r7 >= 0) {
    0x000c4afa bge 0xc4ac2                               |         goto label_1;
                                                         |     }
                                                         | label_3:
    0x000c4afc ldrb r3, [r5, 0xc]                        |     r3 = *((r5 + 0xc));
    0x000c4afe ldr.w sb, [sp, 0x10]                      |     sb = var_10h;
    0x000c4b02 lsls r3, r3, 0x1e                         |     r3 <<= 0x1e;
    0x000c4b04 mov r0, sb                                |     r0 = sb;
                                                         |     if (r3 < r3) {
    0x000c4b06 bmi 0xc4ac4                               |         goto label_2;
                                                         |     }
    0x000c4b08 ldr r3, [r5, 0x10]                        |     r3 = *((r5 + 0x10));
                                                         |     if (r3 == 0) {
    0x000c4b0a cbz r3, 0xc4b12                           |         goto label_17;
                                                         |     }
    0x000c4b0c ldr r3, [r3]                              |     r3 = *(r3);
    0x000c4b0e cmp r3, 0                                 |     
                                                         |     if (r3 != 0) {
    0x000c4b10 bne 0xc4ac4                               |         goto label_2;
                                                         |     }
                                                         | label_17:
    0x000c4b12 mov r6, r7                                |     r6 = r7;
    0x000c4b14 cmp.w sb, 0                               |     
    0x000c4b18 beq 0xc4b22                               |     
                                                         |     while (r0 != r0) {
                                                         | label_5:
    0x000c4b1a mov r0, sb                                |         r0 = sb;
    0x000c4b1c blx 0x3fbc4                               |         fcntl64 ();
    0x000c4b20 str r0, [sp, 0x10]                        |         var_10h = r0;
                                                         | label_4:
    0x000c4b22 mov r0, r5                                |         r0 = r5;
    0x000c4b24 blx 0x3f540                               |         strcpy (r0, r1)
    0x000c4b28 b 0xc4ad0                                 |         goto label_0;
                                                         | label_6:
    0x000c4b2a ldr r1, [pc, 0x6c]                        |         
    0x000c4b2c movw r2, 0x483                            |         r2 = 0x483;
    0x000c4b30 ldr r3, [pc, 0x68]                        |         
    0x000c4b32 ldr r0, [pc, 0x6c]                        |         
    0x000c4b34 add r1, pc                                |         r1 = 0x1896d2;
    0x000c4b36 add r3, pc                                |         r3 = 0x1896d6;
    0x000c4b38 adds r1, 7                                |         r1 += 7;
    0x000c4b3a add r0, pc                                |         r0 = 0x1896e0;
    0x000c4b3c blx 0x3ede8                               |         fcn_0003ede8 ();
                                                         | label_15:
    0x000c4b40 mov r0, r5                                |         r0 = r5;
    0x000c4b42 bl 0xc301c                                |         fcn_000c301c ();
    0x000c4b46 b 0xc4afc                                 |         goto label_3;
                                                         | label_13:
    0x000c4b48 ldr.w sb, [sp, 0x10]                      |         sb = var_10h;
    0x000c4b4c cmp.w sb, 0                               |         
    0x000c4b4e lsrs r0, r0, 0x1c                         |         r0 >>= 0x1c;
    0x000c4b50 bne 0xc4b1a                               |         
                                                         |     }
    0x000c4b52 b 0xc4b22                                 |     goto label_4;
                                                         | label_7:
    0x000c4b54 ldr r0, [sp, 0x10]                        |     r0 = var_10h;
                                                         |     if (r0 != 0) {
    0x000c4b56 cbz r0, 0xc4b5c                           |         
    0x000c4b58 blx 0x3fbc4                               |         fcntl64 ();
                                                         |     }
    0x000c4b5c mvn r6, 0x15                              |     r6 = ~0x15;
    0x000c4b60 b 0xc4ad0                                 |     goto label_0;
                                                         | label_9:
    0x000c4b62 cmp.w sb, 0                               |     
                                                         |     if (sb != 0) {
    0x000c4b66 beq 0xc4b6e                               |         
    0x000c4b68 mov r0, sb                                |         r0 = sb;
    0x000c4b6a blx 0x3fbc4                               |         fcntl64 ();
                                                         |     }
    0x000c4b6e mvn r6, 0xb                               |     r6 = ~0xb;
    0x000c4b72 b 0xc4ad0                                 |     goto label_0;
                                                         | label_16:
    0x000c4b74 blx 0x40af0                               |     fcn_00040af0 ();
                                                         | label_10:
    0x000c4b78 mvn r6, 0xb                               |     r6 = ~0xb;
    0x000c4b7c cmp.w sb, 0                               |     
                                                         |     if (sb != 0) {
    0x000c4b80 bne 0xc4b1a                               |         goto label_5;
                                                         |     }
    0x000c4b82 b 0xc4b22                                 |     goto label_4;
                                                         | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/systemd/libsystemd-shared-251.so @ 0xc48a8 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.userdb_all ()                    | void userdb_all (int16_t arg1, uint32_t arg2) {
                                                 |     int16_t var_0h;
                                                 |     int16_t var_4h;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x000c48a8 push {r4, r5, r6, r7, lr}         |     
    0x000c48aa sub sp, 0xc                       |     
    0x000c48ac cmp r1, 0                         |     
                                                 |     if (r1 == 0) {
    0x000c48ae beq 0xc49b0                       |         goto label_6;
                                                 |     }
    0x000c48b0 mov r4, r0                        |     r4 = r0;
    0x000c48b2 mov r7, r1                        |     r7 = r1;
    0x000c48b4 mov r1, r0                        |     r1 = r0;
    0x000c48b6 movs r0, 0                        |     r0 = 0;
    0x000c48b8 bl 0xc2f04                        |     r0 = fcn_000c2f04 (r0, r1);
    0x000c48bc mov r5, r0                        |     r5 = r0;
    0x000c48be cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x000c48c0 beq.w 0xc49c6                     |         goto label_7;
                                                 |     }
    0x000c48c2 strh r1, [r0, 4]                  |     *((r0 + 4)) = r1;
    0x000c48c4 ldr r1, [pc, 0x104]               |     
    0x000c48c6 movs r3, 0                        |     r3 = 0;
    0x000c48c8 movs r2, 1                        |     r2 = 1;
    0x000c48ca str r4, [sp]                      |     *(sp) = r4;
    0x000c48cc add r1, pc                        |     r1 = 0x18929c;
    0x000c48ce bl 0xc307c                        |     fcn_000c307c (r0, r1, r2, r3, r4, r5);
    0x000c48d2 lsls r3, r4, 0x1f                 |     r3 = r4 << 0x1f;
    0x000c48d4 mov r6, r0                        |     r6 = r0;
                                                 |     if (r3 >= r4) {
    0x000c48d6 bmi 0xc48f2                       |         
    0x000c48d8 cmp r0, 0                         |         
    0x000c48da ldrb r2, [r5, 0xc]                |         r2 = *((r5 + 0xc));
                                                 |         if (r0 >= 0) {
    0x000c48dc blt 0xc48e2                       |             
    0x000c48de lsls r0, r2, 0x1f                 |             r0 = r2 << 0x1f;
                                                 |             if (r0 < r2) {
    0x000c48e0 bmi 0xc4948                       |                 goto label_8;
                                                 |             }
                                                 |         }
    0x000c48e2 lsls r2, r2, 0x1a                 |         r2 <<= 0x1a;
                                                 |         if (r2 >= r2) {
    0x000c48e4 bpl 0xc494e                       |             goto label_9;
                                                 |         }
                                                 | label_3:
    0x000c48e6 blx 0x40790                       |         fcn_00040790 ();
    0x000c48ea ldrb r3, [r5, 0xc]                |         r3 = *((r5 + 0xc));
    0x000c48ec orr r3, r3, 2                     |         r3 |= 2;
    0x000c48f0 strb r3, [r5, 0xc]                |         *((r5 + 0xc)) = r3;
                                                 |     }
    0x000c48f2 ands r2, r4, 4                    |     r2 = r4 & 4;
                                                 |     if (r2 == r4) {
    0x000c48f6 beq 0xc4918                       |         goto label_10;
                                                 |     }
                                                 | label_0:
    0x000c48f8 cmp r6, 0                         |     
                                                 |     if (r6 >= 0) {
    0x000c48fa bge 0xc490e                       |         goto label_2;
                                                 |     }
                                                 | label_4:
    0x000c48fc ldrb r3, [r5, 0xc]                |     r3 = *((r5 + 0xc));
    0x000c48fe lsls r3, r3, 0x1e                 |     r3 <<= 0x1e;
                                                 |     if (r3 < r3) {
    0x000c4900 bmi 0xc490e                       |         goto label_2;
                                                 |     }
    0x000c4902 ldr r3, [r5, 0x10]                |     r3 = *((r5 + 0x10));
    0x000c4904 cmp r3, 0                         |     
                                                 |     if (r3 == 0) {
    0x000c4906 beq 0xc49a4                       |         goto label_11;
                                                 |     }
    0x000c4908 ldr r3, [r3]                      |     r3 = *(r3);
    0x000c490a cmp r3, 0                         |     
                                                 |     if (r3 == 0) {
    0x000c490c beq 0xc49a4                       |         goto label_11;
                                                 |     }
                                                 |     do {
                                                 | label_2:
    0x000c490e movs r6, 0                        |         r6 = 0;
    0x000c4910 str r5, [r7]                      |         *(r7) = r5;
                                                 | label_5:
    0x000c4912 mov r0, r6                        |         r0 = r6;
    0x000c4914 add sp, 0xc                       |         
    0x000c4916 pop {r4, r5, r6, r7, pc}          |         
                                                 | label_10:
    0x000c4918 cmp r6, 0                         |         
                                                 |         if (r6 < 0) {
    0x000c491a blt 0xc4962                       |             goto label_12;
                                                 |         }
    0x000c491c ldrb r2, [r5, 0xc]                |         r2 = *((r5 + 0xc));
                                                 | label_1:
    0x000c491e ubfx r2, r2, 2, 1                 |         r2 = (r2 >> 2) & ((1 << 1) - 1);
    0x000c4922 cmp r2, 0                         |         
    0x000c4924 bne 0xc490e                       |         
                                                 |     } while (r2 != 0);
    0x000c4926 ldr r3, [pc, 0xa8]                |     
    0x000c4928 add.w r0, r5, 0x10                |     r0 = r5 + 0x10;
    0x000c492c ldr r1, [pc, 0xa4]                |     
    0x000c492e add r3, pc                        |     r3 = 0x189304;
    0x000c4930 str r3, [sp]                      |     *(sp) = r3;
    0x000c4932 add r1, pc                        |     r1 = 0x18930a;
    0x000c4934 movs r3, 0x12                     |     r3 = 0x12;
    0x000c4936 blx 0x3d620                       |     r0 = fcn_0003d620 ();
    0x000c493a subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 >= r0) {
    0x000c493c bge 0xc48f8                       |         goto label_0;
                                                 |     }
    0x000c493e blx 0x40e28                       |     r0 = fcn_00040e28 ();
    0x000c4942 cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x000c4944 ble 0xc48f8                       |         goto label_0;
                                                 |     }
    0x000c4946 b 0xc4982                         |     goto label_13;
                                                 | label_8:
    0x000c4948 lsls r1, r4, 0x1d                 |     r1 = r4 << 0x1d;
                                                 |     if (r1 >= r4) {
    0x000c494a bpl 0xc491e                       |         goto label_1;
                                                 |     }
    0x000c494c b 0xc490e                         |     goto label_2;
                                                 | label_9:
    0x000c494e movs r0, 1                        |     r0 = 1;
    0x000c4950 blx 0x3ed68                       |     r0 = fcn_0003ed68 ();
    0x000c4954 cmp r0, 0                         |     
                                                 |     if (r0 < 0) {
    0x000c4956 blt 0xc49a2                       |         goto label_14;
                                                 |     }
    0x000c4958 ldrb r3, [r5, 0xc]                |     r3 = *((r5 + 0xc));
    0x000c495a orr r3, r3, 0x20                  |     r3 |= 0x20;
    0x000c495e strb r3, [r5, 0xc]                |     *((r5 + 0xc)) = r3;
    0x000c4960 b 0xc48e6                         |     goto label_3;
                                                 | label_12:
    0x000c4962 ldr r3, [pc, 0x74]                |     
    0x000c4964 add.w r0, r5, 0x10                |     r0 = r5 + 0x10;
    0x000c4968 ldr r1, [pc, 0x70]                |     
    0x000c496a add r3, pc                        |     r3 = 0x189348;
    0x000c496c str r3, [sp]                      |     *(sp) = r3;
    0x000c496e add r1, pc                        |     r1 = 0x18934e;
    0x000c4970 movs r3, 0x12                     |     r3 = 0x12;
    0x000c4972 blx 0x3d620                       |     r0 = fcn_0003d620 ();
    0x000c4976 subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 >= r0) {
    0x000c4978 bge 0xc48fc                       |         goto label_4;
                                                 |     }
    0x000c497a blx 0x40e28                       |     r0 = fcn_00040e28 ();
    0x000c497e cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x000c4980 ble 0xc48fc                       |         goto label_4;
                                                 |     }
                                                 | label_13:
    0x000c4982 ldr r3, [pc, 0x5c]                |     
    0x000c4984 mov r1, r4                        |     r1 = r4;
    0x000c4986 ldr r2, [pc, 0x5c]                |     
    0x000c4988 movs r0, 7                        |     r0 = 7;
    0x000c498a add r3, pc                        |     r3 = 0x189370;
    0x000c498c str r3, [sp, 4]                   |     var_4h = r3;
    0x000c498e add r2, pc                        |     r2 = 0x189378;
    0x000c4990 ldr r3, [pc, 0x54]                |     
    0x000c4992 adds r2, 7                        |     r2 += 7;
    0x000c4994 add r3, pc                        |     r3 = 0x189380;
    0x000c4996 str r3, [sp]                      |     *(sp) = r3;
    0x000c4998 movw r3, 0x2f1                    |     r3 = 0x2f1;
    0x000c499c blx 0x3d328                       |     fcn_0003d328 ();
    0x000c49a0 b 0xc48f8                         |     goto label_0;
                                                 | label_14:
    0x000c49a2 mov r6, r0                        |     r6 = r0;
                                                 | label_11:
    0x000c49a4 mov r0, r5                        |     r0 = r5;
    0x000c49a6 blx 0x3f540                       |     strcpy (r0, r1)
    0x000c49aa mov r0, r6                        |     r0 = r6;
    0x000c49ac add sp, 0xc                       |     
    0x000c49ae pop {r4, r5, r6, r7, pc}          |     
                                                 | label_6:
    0x000c49b0 ldr r1, [pc, 0x38]                |     
    0x000c49b2 mov.w r2, 0x2d8                   |     r2 = 0x2d8;
    0x000c49b6 ldr r3, [pc, 0x38]                |     
    0x000c49b8 ldr r0, [pc, 0x38]                |     
    0x000c49ba add r1, pc                        |     r1 = 0x1893aa;
    0x000c49bc add r3, pc                        |     r3 = 0x1893b2;
    0x000c49be adds r1, 7                        |     r1 += 7;
    0x000c49c0 add r0, pc                        |     r0 = 0x1893b8;
    0x000c49c2 blx 0x3ede8                       |     fcn_0003ede8 ();
                                                 | label_7:
    0x000c49c6 mvn r6, 0xb                       |     r6 = ~0xb;
    0x000c49ca b 0xc4912                         |     goto label_5;
                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/systemd/libsystemd-shared-251.so @ 0xc519c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.userdb_by_name ()                            | void userdb_by_name (int16_t arg_1a0h, int16_t arg_3c8h, int16_t arg1, int16_t arg2, int16_t arg3) {
                                                             |     int16_t var_0h;
                                                             |     int32_t var_4h;
                                                             |     int32_t var_4h_2;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
    0x000c519c push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x000c51a0 mov r8, r2                                    |     r8 = r2;
    0x000c51a2 ldr r2, [pc, 0x170]                           |     
    0x000c51a4 sub sp, 0x1c                                  |     
    0x000c51a6 movs r6, 0                                    |     r6 = 0;
    0x000c51a8 mov r5, r1                                    |     r5 = r1;
    0x000c51aa ldr r3, [pc, 0x16c]                           |     r3 = *(0xc531a);
    0x000c51ac movs r1, 1                                    |     r1 = 1;
    0x000c51ae add r2, pc                                    |     r2 = "/proc/self/fd";
    0x000c51b0 mov r7, r0                                    |     r7 = r0;
    0x000c51b2 ldr r3, [r2, r3]                              |     
    0x000c51b4 ldr r3, [r3]                                  |     r3 = "/proc/self/fd";
    0x000c51b6 str r3, [sp, 0x14]                            |     var_14h = r3;
    0x000c51b8 mov.w r3, 0                                   |     r3 = 0;
    0x000c51bc str r6, [sp, 0x10]                            |     var_10h = r6;
    0x000c51be blx 0x4313c                                   |     r0 = fcn_0004313c ();
    0x000c51c2 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000c51c4 beq.w 0xc52f4                                 |         goto label_7;
                                                             |     }
    0x000c51c8 movs r3, 8                                    |     r3 = 8;
    0x000c51ca movs r2, 9                                    |     r2 = 9;
    0x000c51cc strd r7, r3, [sp, 4]                          |     __asm ("strd r7, r3, [var_4h]");
    0x000c51d0 movs r1, 7                                    |     r1 = 7;
    0x000c51d2 ldr r3, [pc, 0x148]                           |     
    0x000c51d4 add r0, sp, 0x10                              |     r0 += var_10h;
    0x000c51d6 str r6, [sp]                                  |     *(sp) = r6;
    0x000c51d8 add r3, pc                                    |     r3 = 0x18a4fa;
    0x000c51da blx 0x3e4ec                                   |     fcn_0003e4ec ();
    0x000c51de subs r4, r0, 0                                |     r4 -= var_10h;
                                                             |     if (r4 < var_10h) {
    0x000c51e0 blt 0xc5264                                   |         goto label_8;
                                                             |     }
    0x000c51e2 mov r1, r5                                    |     r1 = r5;
    0x000c51e4 mov r0, r6                                    |     r0 = r6;
    0x000c51e6 bl 0xc2f04                                    |     fcn_000c2f04 (r0, r1);
    0x000c51ea ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x000c51ec mov sb, r0                                    |     sb = r0;
    0x000c51ee cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000c51f0 beq.w 0xc5302                                 |         goto label_9;
                                                             |     }
    0x000c51f4 ldr r1, [pc, 0x128]                           |     
    0x000c51f6 mov r2, r6                                    |     r2 = r6;
    0x000c51f8 str r5, [sp]                                  |     *(sp) = r5;
    0x000c51fa add r1, pc                                    |     r1 = 0x18a51e;
    0x000c51fc bl 0xc307c                                    |     r0 = fcn_000c307c (r0, r1, r2, r3, r4, r5);
    0x000c5200 subs r4, r0, 0                                |     r4 = r0 - 0;
    0x000c5202 bge 0xc5250                                   |     
                                                             |     while (r2 < r3) {
    0x000c5204 lsls r6, r5, 0x1d                             |         r6 = r5 << 0x1d;
                                                             |         if (r6 >= r5) {
    0x000c5206 bmi 0xc5214                                   |             
    0x000c5208 ldrb.w r1, [sb, 0xc]                          |             r1 = *((sb + 0xc));
    0x000c520c ubfx r1, r1, 2, 1                             |             r1 = (r1 >> 2) & ((1 << 1) - 1);
    0x000c5210 cmp r1, 0                                     |             
                                                             |             if (r1 == 0) {
    0x000c5212 beq 0xc52a2                                   |                 goto label_10;
                                                             |             }
                                                             |         }
                                                             | label_4:
    0x000c5214 lsls r0, r5, 0x1f                             |         r0 = r5 << 0x1f;
                                                             |         if (r0 >= r5) {
    0x000c5216 bmi 0xc5220                                   |             
    0x000c5218 ldrb.w r3, [sb, 0xc]                          |             r3 = *((sb + 0xc));
    0x000c521c lsls r1, r3, 0x1f                             |             r1 = r3 << 0x1f;
                                                             |             if (r1 >= r3) {
    0x000c521e bpl 0xc52b2                                   |                 goto label_11;
                                                             |             }
                                                             |         }
                                                             | label_5:
    0x000c5220 lsls r3, r5, 0x19                             |         r3 = r5 << 0x19;
                                                             |         if (r3 >= r5) {
    0x000c5222 bpl 0xc5270                                   |             goto label_12;
                                                             |         }
                                                             | label_0:
    0x000c5224 ldr r0, [sp, 0x10]                            |         r0 = var_10h;
                                                             |         if (r0 != 0) {
    0x000c5226 cbz r0, 0xc522e                               |             
                                                             | label_2:
    0x000c5228 blx 0x3fbc4                                   |             fcntl64 ();
    0x000c522c str r0, [sp, 0x10]                            |             var_10h = r0;
                                                             |         }
                                                             | label_3:
    0x000c522e mov r0, sb                                    |         r0 = sb;
    0x000c5230 blx 0x3f540                                   |         strcpy (r0, r1)
                                                             | label_1:
    0x000c5234 ldr r2, [pc, 0xec]                            |         
    0x000c5236 ldr r3, [pc, 0xe0]                            |         r3 = *(0xc531a);
    0x000c5238 add r2, pc                                    |         r2 = 0x18a560;
    0x000c523a ldr r3, [r2, r3]                              |         r3 = *(0x18a560);
    0x000c523c ldr r2, [r3]                                  |         r2 = *(0x18a560);
    0x000c523e ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x000c5240 eors r2, r3                                   |         r2 ^= r3;
    0x000c5242 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x000c5246 bne 0xc5310                                   |             goto label_13;
                                                             |         }
    0x000c5248 mov r0, r4                                    |         r0 = r4;
    0x000c524a add sp, 0x1c                                  |         
    0x000c524c pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
    0x000c5250 mov r3, r6                                    |         r3 = r6;
    0x000c5252 mov r2, r6                                    |         r2 = r6;
    0x000c5254 mov r1, r8                                    |         r1 = r8;
    0x000c5256 mov r0, sb                                    |         r0 = sb;
    0x000c5258 str r6, [sp]                                  |         *(sp) = r6;
    0x000c525a bl 0xc2f38                                    |         fcn_000c2f38 (r0, r1, r2, r3, r4);
    0x000c525c cdp2 p14, 6, c1, c13, c4, 0                   |         __asm ("cdp2 p14, 6, c1, c13, c4, 0");
    0x000c5260 blt 0xc5204                                   |         
                                                             |     }
    0x000c5262 b 0xc5224                                     |     goto label_0;
                                                             | label_8:
    0x000c5264 ldr r0, [sp, 0x10]                            |     r0 = var_10h;
    0x000c5266 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000c5268 beq 0xc5234                                   |         goto label_1;
                                                             |     }
    0x000c526a blx 0x3fbc4                                   |     fcntl64 ();
    0x000c526e b 0xc5234                                     |     goto label_1;
                                                             | label_12:
    0x000c5270 ldr r1, [pc, 0xb4]                            |     
    0x000c5272 mov r0, r7                                    |     r0 = r7;
    0x000c5274 add r1, pc                                    |     r1 = 0x18a5a0;
    0x000c5276 blx 0x42d2c                                   |     r0 = fcn_00042d2c ();
                                                             |     if (r0 == 0) {
    0x000c527a cbz r0, 0xc52e4                               |         goto label_14;
                                                             |     }
    0x000c527c ldr r1, [pc, 0xac]                            |     
    0x000c527e mov r0, r7                                    |     r0 = r7;
    0x000c5280 add r1, pc                                    |     r1 = 0x18a5b0;
    0x000c5282 blx 0x42d2c                                   |     r0 = fcn_00042d2c ();
    0x000c5286 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000c5288 bne 0xc5224                                   |         goto label_0;
                                                             |     }
    0x000c528a blx 0x3c218                                   |     r0 = fcn_0003c218 ();
    0x000c528e cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000c5290 beq 0xc5224                                   |         goto label_0;
                                                             |     }
    0x000c5292 mov r0, r8                                    |     r0 = r8;
    0x000c5294 bl 0xc2d94                                    |     r0 = fcn_000c2d94 ();
    0x000c5298 mov r4, r0                                    |     r4 = r0;
    0x000c529a ldr r0, [sp, 0x10]                            |     r0 = var_10h;
    0x000c529c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000c529e bne 0xc5228                                   |         goto label_2;
                                                             |     }
    0x000c52a0 b 0xc522e                                     |     goto label_3;
                                                             | label_10:
    0x000c52a2 mov r3, r8                                    |     r3 = r8;
    0x000c52a4 mov r2, r5                                    |     r2 = r5;
    0x000c52a6 mov r0, r7                                    |     r0 = r7;
    0x000c52a8 blx 0x41cac                                   |     r0 = ZSTD_compressStream2 ();
    0x000c52ac subs r4, r0, 0                                |     r4 = r0 - 0;
                                                             |     if (r4 < r0) {
    0x000c52ae blt 0xc5214                                   |         goto label_4;
                                                             |     }
    0x000c52b0 b 0xc5224                                     |     goto label_0;
                                                             | label_11:
    0x000c52b2 lsls r2, r3, 0x1a                             |     r2 = r3 << 0x1a;
                                                             |     if (r2 >= r3) {
    0x000c52b4 bpl 0xc52cc                                   |         goto label_15;
                                                             |     }
                                                             | label_6:
    0x000c52b6 eor r1, r5, 8                                 |     r1 = r5 ^ 8;
    0x000c52ba mov r2, r8                                    |     r2 = r8;
    0x000c52bc ubfx r1, r1, 3, 1                             |     r1 = (r1 >> 3) & ((1 << 1) - 1);
    0x000c52c0 mov r0, r7                                    |     r0 = r7;
    0x000c52c2 blx 0x3d4e8                                   |     r0 = fcn_0003d4e8 ();
    0x000c52c6 subs r4, r0, 0                                |     r4 = r0 - 0;
                                                             |     if (r4 < r0) {
    0x000c52c8 blt 0xc5220                                   |         goto label_5;
                                                             |     }
    0x000c52ca b 0xc5224                                     |     goto label_0;
                                                             | label_15:
    0x000c52cc movs r0, 1                                    |     r0 = 1;
    0x000c52ce blx 0x3ed68                                   |     r0 = fcn_0003ed68 ();
    0x000c52d2 subs r4, r0, 0                                |     r4 = r0 - 0;
                                                             |     if (r4 < r0) {
    0x000c52d4 blt 0xc5220                                   |         goto label_5;
                                                             |     }
    0x000c52d6 ldrb.w r3, [sb, 0xc]                          |     r3 = *((sb + 0xc));
    0x000c52da orr r3, r3, 0x20                              |     r3 |= 0x20;
    0x000c52de strb.w r3, [sb, 0xc]                          |     *((sb + 0xc)) = r3;
    0x000c52e2 b 0xc52b6                                     |     goto label_6;
                                                             | label_14:
    0x000c52e4 mov r0, r8                                    |     r0 = r8;
    0x000c52e6 bl 0xc2d08                                    |     r0 = fcn_000c2d08 ();
    0x000c52ea mov r4, r0                                    |     r4 = r0;
    0x000c52ec ldr r0, [sp, 0x10]                            |     r0 = var_10h;
    0x000c52ee cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000c52f0 bne 0xc5228                                   |         goto label_2;
                                                             |     }
    0x000c52f2 b 0xc522e                                     |     goto label_3;
                                                             | label_7:
    0x000c52f4 ldr r0, [sp, 0x10]                            |     r0 = var_10h;
                                                             |     if (r0 != 0) {
    0x000c52f6 cbz r0, 0xc52fc                               |         
    0x000c52f8 blx 0x3fbc4                                   |         fcntl64 ();
                                                             |     }
    0x000c52fc mvn r4, 0x15                                  |     r4 = ~0x15;
    0x000c5300 b 0xc5234                                     |     goto label_1;
                                                             |     if (r3 != 0) {
                                                             | label_9:
    0x000c5302 cbz r3, 0xc530a                               |         
    0x000c5304 mov r0, r3                                    |         r0 = r3;
    0x000c5306 blx 0x3fbc4                                   |         fcntl64 ();
                                                             |     }
    0x000c530a mvn r4, 0xb                                   |     r4 = ~0xb;
    0x000c530e b 0xc5234                                     |     goto label_1;
                                                             | label_13:
    0x000c5310 blx 0x40af0                                   |     fcn_00040af0 ();
    0x000c5314 cmp r2, pc                                    |     
    0x000c5316 movs r2, r2                                   |     
    0x000c5318 cmp r0, 0x40                                  |     
    0x000c531a movs r0, r0                                   |     
    0x000c531c str r0, [r7, 0x58]                            |     *((r7 + 0x58)) = r0;
    0x000c531e movs r5, r1                                   |     r5 = r1;
    0x000c5320 ldr r1, [sp, 0x3c8]                           |     r1 = *(arg_3c8h);
    0x000c5322 movs r5, r1                                   |     r5 = r1;
    0x000c5324 add r8, lr                                    |     r8 += lr;
    0x000c5326 movs r2, r2                                   |     
    0x000c5328 add r2, sp, 0x1a0                             |     r2 += arg_1a0h;
    0x000c532a movs r6, r1                                   |     r6 = r1;
    0x000c532c invalid                                       |     
                                                             | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/systemd/libsystemd-shared-251.so @ 0xc5020 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.userdb_by_uid ()                         | void userdb_by_uid (int16_t arg_1b8h, int16_t arg1, int16_t arg2, int16_t arg3) {
                                                         |     int16_t var_0h;
                                                         |     int16_t var_8h_2;
                                                         |     int16_t var_ch_2;
                                                         |     int16_t var_10h_2;
                                                         |     int16_t var_18h_2;
                                                         |     int16_t var_1ch_2;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
    0x000c5020 mvnsmi lr, 0xb4000                        |     __asm ("mvnsmi lr, aav.0x000000ff");
    0x000c5024 mov r8, r2                                |     r8 = r2;
    0x000c5026 ldr r2, [pc, 0x160]                       |     
    0x000c5028 sub sp, 0x24                              |     
    0x000c502a movs r6, 0                                |     r6 = 0;
    0x000c502c mov r7, r0                                |     r7 = r0;
    0x000c502e ldr r3, [pc, 0x15c]                       |     r3 = *(0xc518e);
    0x000c5030 mov r5, r1                                |     r5 = r1;
    0x000c5032 add r2, pc                                |     r2 = 0x18a1c0;
    0x000c5034 ldr r3, [r2, r3]                          |     
    0x000c5036 ldr r3, [r3]                              |     r3 = *(0x18a1c0);
    0x000c5038 str r3, [sp, 0x1c]                        |     var_1ch_2 = r3;
    0x000c503a mov.w r3, 0                               |     r3 = 0;
    0x000c503e str r6, [sp, 0x18]                        |     var_18h_2 = r6;
    0x000c5040 blx 0x3be4c                               |     r0 = fcn_0003be4c ();
    0x000c5044 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000c5046 beq.w 0xc5168                             |         goto label_7;
                                                         |     }
    0x000c504a movs r3, 8                                |     r3 = 8;
    0x000c504c movs r2, 9                                |     r2 = 9;
    0x000c504e str r3, [sp, 0x10]                        |     var_10h_2 = r3;
    0x000c5050 movs r3, 2                                |     r3 = 2;
    0x000c5052 str r3, [sp]                              |     *(sp) = r3;
    0x000c5054 movs r1, 7                                |     r1 = 7;
    0x000c5056 ldr r3, [pc, 0x138]                       |     
    0x000c5058 add r0, sp, 0x18                          |     r0 += var_18h_2;
    0x000c505a str r7, [sp, 8]                           |     var_8h_2 = r7;
    0x000c505c str r6, [sp, 0xc]                         |     var_ch_2 = r6;
    0x000c505e add r3, pc                                |     r3 = "SYSEXT_SCOPE";
    0x000c5060 blx 0x3e4ec                               |     r0 = fcn_0003e4ec ();
    0x000c5064 subs r4, r0, 0                            |     r4 = r0 - 0;
                                                         |     if (r4 < r0) {
    0x000c5066 blt 0xc50e8                               |         goto label_8;
                                                         |     }
    0x000c5068 mov r1, r5                                |     r1 = r5;
    0x000c506a mov r0, r6                                |     r0 = r6;
    0x000c506c bl 0xc2f04                                |     fcn_000c2f04 (r0, r1);
    0x000c5070 ldr r3, [sp, 0x18]                        |     r3 = var_18h_2;
    0x000c5072 mov sb, r0                                |     sb = r0;
    0x000c5074 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000c5076 beq 0xc5176                               |         goto label_9;
                                                         |     }
    0x000c5078 ldr r1, [pc, 0x118]                       |     
    0x000c507a mov r2, r6                                |     r2 = r6;
    0x000c507c str r5, [sp]                              |     *(sp) = r5;
    0x000c507e add r1, pc                                |     r1 = 0x18a216;
    0x000c5080 bl 0xc307c                                |     r0 = fcn_000c307c (r0, r1, r2, r3, r4, r5);
    0x000c5084 subs r4, r0, 0                            |     r4 = r0 - 0;
    0x000c5086 bge 0xc50d4                               |     
                                                         |     while (r4 < r0) {
    0x000c5088 lsls r6, r5, 0x1d                         |         r6 = r5 << 0x1d;
                                                         |         if (r6 >= r5) {
    0x000c508a bmi 0xc5098                               |             
    0x000c508c ldrb.w r1, [sb, 0xc]                      |             r1 = *((sb + 0xc));
    0x000c5090 ubfx r1, r1, 2, 1                         |             r1 = (r1 >> 2) & ((1 << 1) - 1);
    0x000c5094 cmp r1, 0                                 |             
                                                         |             if (r1 == 0) {
    0x000c5096 beq 0xc5116                               |                 goto label_10;
                                                         |             }
                                                         |         }
                                                         | label_4:
    0x000c5098 lsls r0, r5, 0x1f                         |         r0 = r5 << 0x1f;
                                                         |         if (r0 >= r5) {
    0x000c509a bmi 0xc50a4                               |             
    0x000c509c ldrb.w r3, [sb, 0xc]                      |             r3 = *((sb + 0xc));
    0x000c50a0 lsls r1, r3, 0x1f                         |             r1 = r3 << 0x1f;
                                                         |             if (r1 >= r3) {
    0x000c50a2 bpl 0xc5126                               |                 goto label_11;
                                                         |             }
                                                         |         }
                                                         | label_5:
    0x000c50a4 lsls r3, r5, 0x19                         |         r3 = r5 << 0x19;
                                                         |         if (r3 >= r5) {
    0x000c50a6 bpl 0xc50f4                               |             goto label_12;
                                                         |         }
                                                         | label_0:
    0x000c50a8 ldr r0, [sp, 0x18]                        |         r0 = var_18h_2;
                                                         |         if (r0 != 0) {
    0x000c50aa cbz r0, 0xc50b2                           |             
                                                         | label_2:
    0x000c50ac blx 0x3fbc4                               |             fcntl64 ();
    0x000c50b0 str r0, [sp, 0x18]                        |             var_18h_2 = r0;
                                                         |         }
                                                         | label_3:
    0x000c50b2 mov r0, sb                                |         r0 = sb;
    0x000c50b4 blx 0x3f540                               |         strcpy (r0, r1)
                                                         | label_1:
    0x000c50b8 ldr r2, [pc, 0xdc]                        |         
    0x000c50ba ldr r3, [pc, 0xd0]                        |         r3 = *(0xc518e);
    0x000c50bc add r2, pc                                |         r2 = "Extension '%s' is for OS '%s', but deployed on top of '%s'.";
    0x000c50be ldr r3, [r2, r3]                          |         r3 = "Extension '%s' is for OS '%s', but deployed on top of '%s'.";
    0x000c50c0 ldr r2, [r3]                              |         r2 = "Extension '%s' is for OS '%s', but deployed on top of '%s'.";
    0x000c50c2 ldr r3, [sp, 0x1c]                        |         r3 = var_1ch_2;
    0x000c50c4 eors r2, r3                               |         r2 ^= r3;
    0x000c50c6 mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x000c50ca bne 0xc5184                               |             goto label_13;
                                                         |         }
    0x000c50cc mov r0, r4                                |         r0 = r4;
    0x000c50ce add sp, 0x24                              |         
    0x000c50d0 pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
    0x000c50d4 mov r3, r6                                |         r3 = r6;
    0x000c50d6 mov r2, r6                                |         r2 = r6;
    0x000c50d8 mov r1, r8                                |         r1 = r8;
    0x000c50da mov r0, sb                                |         r0 = sb;
    0x000c50dc str r6, [sp]                              |         *(sp) = r6;
    0x000c50de bl 0xc2f38                                |         r0 = fcn_000c2f38 (r0, r1, r2, r3, r4);
    0x000c50e2 subs r4, r0, 0                            |         r4 = r0 - 0;
    0x000c50e4 blt 0xc5088                               |         
                                                         |     }
    0x000c50e6 b 0xc50a8                                 |     goto label_0;
                                                         | label_8:
    0x000c50e8 ldr r0, [sp, 0x18]                        |     r0 = var_18h_2;
    0x000c50ea cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000c50ec beq 0xc50b8                               |         goto label_1;
                                                         |     }
    0x000c50ee blx 0x3fbc4                               |     fcntl64 ();
    0x000c50f2 b 0xc50b8                                 |     goto label_1;
                                                         |     if (r7 == 0) {
                                                         | label_12:
    0x000c50f4 cbz r7, 0xc5158                           |         goto label_14;
                                                         |     }
    0x000c50f6 movw r3, 0xfffe                           |     r3 = 0xfffe;
    0x000c50fa cmp r7, r3                                |     
                                                         |     if (r7 != r3) {
    0x000c50fc bne 0xc50a8                               |         goto label_0;
                                                         |     }
    0x000c50fe blx 0x3c218                               |     r0 = fcn_0003c218 ();
    0x000c5102 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000c5104 beq 0xc50a8                               |         goto label_0;
                                                         |     }
    0x000c5106 mov r0, r8                                |     r0 = r8;
    0x000c5108 bl 0xc2d94                                |     r0 = fcn_000c2d94 ();
    0x000c510c mov r4, r0                                |     r4 = r0;
    0x000c510e ldr r0, [sp, 0x18]                        |     r0 = var_18h_2;
    0x000c5110 cmp r0, 0                                 |     
                                                         |     if (r0 != 0) {
    0x000c5112 bne 0xc50ac                               |         goto label_2;
                                                         |     }
    0x000c5114 b 0xc50b2                                 |     goto label_3;
                                                         | label_10:
    0x000c5116 mov r3, r8                                |     r3 = r8;
    0x000c5118 mov r2, r5                                |     r2 = r5;
    0x000c511a mov r0, r7                                |     r0 = r7;
    0x000c511c blx 0x400b8                               |     r0 = fcn_000400b8 ();
    0x000c5120 subs r4, r0, 0                            |     r4 = r0 - 0;
                                                         |     if (r4 < r0) {
    0x000c5122 blt 0xc5098                               |         goto label_4;
                                                         |     }
    0x000c5124 b 0xc50a8                                 |     goto label_0;
                                                         | label_11:
    0x000c5126 lsls r2, r3, 0x1a                         |     r2 = r3 << 0x1a;
                                                         |     if (r2 >= r3) {
    0x000c5128 bpl 0xc5140                               |         goto label_15;
                                                         |     }
                                                         | label_6:
    0x000c512a eor r1, r5, 8                             |     r1 = r5 ^ 8;
    0x000c512e mov r2, r8                                |     r2 = r8;
    0x000c5130 ubfx r1, r1, 3, 1                         |     r1 = (r1 >> 3) & ((1 << 1) - 1);
    0x000c5134 mov r0, r7                                |     r0 = r7;
    0x000c5136 blx 0x40930                               |     r0 = fcn_00040930 ();
    0x000c513a subs r4, r0, 0                            |     r4 = r0 - 0;
                                                         |     if (r4 < r0) {
    0x000c513c blt 0xc50a4                               |         goto label_5;
                                                         |     }
    0x000c513e b 0xc50a8                                 |     goto label_0;
                                                         | label_15:
    0x000c5140 movs r0, 1                                |     r0 = 1;
    0x000c5142 blx 0x3ed68                               |     r0 = fcn_0003ed68 ();
    0x000c5146 subs r4, r0, 0                            |     r4 = r0 - 0;
                                                         |     if (r4 < r0) {
    0x000c5148 blt 0xc50a4                               |         goto label_5;
                                                         |     }
    0x000c514a ldrb.w r3, [sb, 0xc]                      |     r3 = *((sb + 0xc));
    0x000c514e orr r3, r3, 0x20                          |     r3 |= 0x20;
    0x000c5152 strb.w r3, [sb, 0xc]                      |     *((sb + 0xc)) = r3;
    0x000c5156 b 0xc512a                                 |     goto label_6;
                                                         | label_14:
    0x000c5158 mov r0, r8                                |     r0 = r8;
    0x000c515a bl 0xc2d08                                |     r0 = fcn_000c2d08 ();
    0x000c515e mov r4, r0                                |     r4 = r0;
    0x000c5160 ldr r0, [sp, 0x18]                        |     r0 = var_18h_2;
    0x000c5162 cmp r0, 0                                 |     
                                                         |     if (r0 != 0) {
    0x000c5164 bne 0xc50ac                               |         goto label_2;
                                                         |     }
    0x000c5166 b 0xc50b2                                 |     goto label_3;
                                                         | label_7:
    0x000c5168 ldr r0, [sp, 0x18]                        |     r0 = var_18h_2;
                                                         |     if (r0 != 0) {
    0x000c516a cbz r0, 0xc5170                           |         
    0x000c516c blx 0x3fbc4                               |         fcntl64 ();
                                                         |     }
    0x000c5170 mvn r4, 0x15                              |     r4 = ~0x15;
    0x000c5174 b 0xc50b8                                 |     goto label_1;
                                                         |     if (r3 != 0) {
                                                         | label_9:
    0x000c5176 cbz r3, 0xc517e                           |         
    0x000c5178 mov r0, r3                                |         r0 = r3;
    0x000c517a blx 0x3fbc4                               |         fcntl64 ();
                                                         |     }
    0x000c517e mvn r4, 0xb                               |     r4 = ~0xb;
    0x000c5182 b 0xc50b8                                 |     goto label_1;
                                                         | label_13:
    0x000c5184 blx 0x40af0                               |     fcn_00040af0 ();
    0x000c5188 mov lr, lr                                |     
    0x000c518a movs r2, r2                               |     
    0x000c518c cmp r0, 0x40                              |     
    0x000c518e movs r0, r0                               |     
    0x000c5190 ldrh r6, [r3, 0x1c]                       |     r6 = *((r3 + 0x1c));
    0x000c5192 movs r5, r1                               |     r5 = r1;
    0x000c5194 ldr r3, [sp, 0x1b8]                       |     r3 = *(arg_1b8h);
    0x000c5196 movs r5, r1                               |     r5 = r1;
    0x000c5198 mov r4, sp                                |     r4 = sp;
    0x000c519a movs r2, r2                               |     
                                                         | }

[*] Function strcpy used 13 times libsystemd-shared-251.so