[*] Binary protection state of libudev.so.1.7.2

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


[*] Function mmap tear down of libudev.so.1.7.2

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0xae88 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.0000ae88 ()                                      | void fcn_0000ae88 (uint32_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int16_t var_0h_4;
                                                                 |     int16_t var_8h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x0000ae88 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x0000ae8c mov r6, r2                                        |     r6 = r2;
    0x0000ae8e ldr r2, [pc, 0x264]                               |     
    0x0000ae90 sub sp, 0x2c                                      |     
    0x0000ae92 add r7, sp, 8                                     |     r7 += var_8h;
    0x0000ae94 ldr r3, [pc, 0x260]                               |     r3 = *(0xb0f8);
    0x0000ae96 add r2, pc                                        |     r2 = 0x15f90;
    0x0000ae98 ldr r3, [r2, r3]                                  |     
    0x0000ae9a ldr r3, [r3]                                      |     r3 = *(0x15f90);
    0x0000ae9c str r3, [r7, 0x1c]                                |     *((r7 + 0x1c)) = r3;
    0x0000ae9e mov.w r3, 0                                       |     r3 = 0;
    0x0000aea2 cmp r0, 0                                         |     
                                                                 |     if (var_0h_4 == ) {
    0x0000aea4 beq.w 0xb064                                      |         goto label_4;
                                                                 |     }
    0x0000aea8 mov r4, r0                                        |     r4 = r0;
    0x0000aeaa mov r0, r1                                        |     r0 = r1;
    0x0000aeac mov r5, r1                                        |     r5 = r1;
    0x0000aeae bl 0x18a80                                        |     r0 = fcn_00018a80 (r0);
    0x0000aeb2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000aeb4 beq.w 0xb080                                      |         goto label_5;
                                                                 |     }
    0x0000aeb8 mov r0, r6                                        |     r0 = r6;
    0x0000aeba bl 0x18a80                                        |     r0 = fcn_00018a80 (r0);
    0x0000aebe cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000aec0 beq.w 0xb09c                                      |         goto label_6;
                                                                 |     }
    0x0000aec4 ldr r1, [pc, 0x234]                               |     
    0x0000aec6 mov r0, r5                                        |     r0 = r5;
    0x0000aec8 add r1, pc                                        |     r1 = 0x15fc8;
    0x0000aeca blx 0x3490                                        |     r0 = fcn_00003490 ();
    0x0000aece mov r3, r0                                        |     r3 = r0;
    0x0000aed0 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000aed2 bne 0xafaa                                        |         goto label_7;
                                                                 |     }
    0x0000aed4 ldr r0, [pc, 0x228]                               |     
    0x0000aed6 add.w r8, r7, 0xc                                 |     r8 = r7 + 0xc;
    0x0000aeda ldr r2, [pc, 0x228]                               |     
    0x0000aedc mov sb, r8                                        |     sb = r8;
    0x0000aede str r3, [r7, 0x18]                                |     *((r7 + 0x18)) = r3;
    0x0000aee0 ldr r3, [pc, 0x224]                               |     
    0x0000aee2 add r0, pc                                        |     r0 = 0x15fe6;
    0x0000aee4 add r2, pc                                        |     r2 = 0x15fee;
    0x0000aee6 strd r0, r2, [r7, 0xc]                            |     __asm ("strd r0, r2, [r7, 0xc]");
    0x0000aeea add r3, pc                                        |     r3 = 0x15ff6;
    0x0000aeec str r3, [r7, 0x14]                                |     *((r7 + 0x14)) = r3;
                                                                 |     do {
    0x0000aeee movs r3, 0                                        |         r3 = 0;
    0x0000aef0 mov r1, r6                                        |         r1 = r6;
    0x0000aef2 mov r2, r3                                        |         r2 = r3;
    0x0000aef4 str r4, [sp]                                      |         *(sp) = r4;
    0x0000aef6 bl 0xab50                                         |         r0 = fcn_0000ab50 (r0, r1, r2, r3);
    0x0000aefa cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x0000aefc blt 0xaf8c                                        |             goto label_3;
                                                                 |         }
                                                                 |         if (r0 != 0) {
    0x0000aefe bne 0xaf8a                                        |             goto label_0;
                                                                 |         }
    0x0000af00 ldr r0, [sb, 4]!                                  |         r0 = *((sb += 4));
    0x0000af04 cmp r0, 0                                         |         
    0x0000af06 bne 0xaeee                                        |         
                                                                 |     } while (r0 != 0);
                                                                 | label_2:
    0x0000af08 mov r0, r6                                        |     r0 = r6;
    0x0000af0a blx 0x37c8                                        |     r0 = fcn_000037c8 ();
    0x0000af0e add.w r3, r0, 8                                   |     r3 = r0 + 8;
    0x0000af12 adds r2, r0, 1                                    |     r2 = r0 + 1;
    0x0000af14 bic r3, r3, 7                                     |     r3 = BIT_MASK (r3, 7);
    0x0000af18 mov r1, r6                                        |     r1 = r6;
    0x0000af1a sub.w sp, sp, r3                                  |     
    0x0000af1e add r0, sp, 8                                     |     r0 += var_8h;
    0x0000af20 blx 0x3578                                        |     r0 = mmap64 ()
    0x0000af24 ldrb r3, [r0]                                     |     r3 = *(r0);
    0x0000af26 mov sb, r0                                        |     sb = r0;
                                                                 |     if (r3 == 0) {
    0x0000af28 cbz r3, 0xaf3c                                    |         goto label_8;
                                                                 |     }
    0x0000af2a mov r2, r0                                        |     r2 = r0;
    0x0000af2c movs r1, 0x21                                     |     r1 = 0x21;
                                                                 |     do {
    0x0000af2e cmp r3, 0x2f                                      |         
    0x0000af30 it eq                                             |         
                                                                 |         if (r3 != 0x2f) {
    0x0000af32 strbeq r1, [r2]                                   |             *(r2) = r1;
                                                                 |         }
    0x0000af34 ldrb r3, [r2, 1]!                                 |         r3 = *((r2 += 1));
    0x0000af38 cmp r3, 0                                         |         
    0x0000af3a bne 0xaf2e                                        |         
                                                                 |     } while (r3 != 0);
                                                                 | label_8:
    0x0000af3c ldr.w sl, [pc, 0x1cc]                             |     
    0x0000af40 ldr r3, [pc, 0x1cc]                               |     
    0x0000af42 ldr r0, [pc, 0x1d0]                               |     
    0x0000af44 add sl, pc                                        |     sl = 0x16054;
    0x0000af46 add r3, pc                                        |     r3 = 0x1605a;
    0x0000af48 add r0, pc                                        |     r0 = 0x16062;
    0x0000af4a str r3, [r7, 0x10]                                |     *((r7 + 0x10)) = r3;
    0x0000af4c movs r3, 0                                        |     r3 = 0;
    0x0000af4e str r0, [r7, 0xc]                                 |     *((r7 + 0xc)) = r0;
    0x0000af50 str r3, [r7, 0x14]                                |     *((r7 + 0x14)) = r3;
                                                                 |     do {
    0x0000af52 mov r3, sb                                        |         r3 = sb;
    0x0000af54 mov r2, sl                                        |         r2 = sl;
    0x0000af56 mov r1, r5                                        |         r1 = r5;
    0x0000af58 str r4, [sp]                                      |         *(sp) = r4;
    0x0000af5a bl 0xab50                                         |         r0 = fcn_0000ab50 (r0, r1, r2, r3);
    0x0000af5e cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x0000af60 blt 0xaf8c                                        |             goto label_3;
                                                                 |         }
                                                                 |         if (r0 != 0) {
    0x0000af62 bne 0xaf8a                                        |             goto label_0;
                                                                 |         }
    0x0000af64 ldr r0, [r8, 4]!                                  |         r0 = *((r8 += 4));
    0x0000af68 cmp r0, 0                                         |         
    0x0000af6a bne 0xaf52                                        |         
                                                                 |     } while (r0 != 0);
    0x0000af6c ldr.w r8, [pc, 0x1a8]                             |     
    0x0000af70 mov r3, sb                                        |     r3 = sb;
    0x0000af72 ldr r0, [pc, 0x1a8]                               |     
    0x0000af74 mov r1, r5                                        |     r1 = r5;
    0x0000af76 str r4, [sp]                                      |     *(sp) = r4;
    0x0000af78 add r8, pc                                        |     r8 = 0x16094;
    0x0000af7a mov r2, r8                                        |     r2 = r8;
    0x0000af7c add r0, pc                                        |     r0 = 0x1609e;
    0x0000af7e bl 0xab50                                         |     r0 = fcn_0000ab50 (r0, r1, r2, r3);
    0x0000af82 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000af84 blt 0xaf8c                                        |         goto label_3;
                                                                 |     }
                                                                 |     if (r0 == 0) {
    0x0000af86 beq.w 0xb0b8                                      |         goto label_9;
                                                                 |     }
                                                                 | label_0:
    0x0000af8a movs r0, 0                                        |     r0 = 0;
                                                                 |     do {
                                                                 | label_3:
    0x0000af8c ldr r2, [pc, 0x190]                               |         
    0x0000af8e ldr r3, [pc, 0x168]                               |         r3 = *(0xb0fa);
    0x0000af90 add r2, pc                                        |         r2 = 0x160b4;
    0x0000af92 ldr r3, [r2, r3]                                  |         r3 = *(0x160b4);
    0x0000af94 ldr r2, [r3]                                      |         r2 = *(0x160b4);
    0x0000af96 ldr r3, [r7, 0x1c]                                |         r3 = *((r7 + 0x1c));
    0x0000af98 eors r2, r3                                       |         r2 ^= r3;
    0x0000af9a mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000af9e bne.w 0xb0ee                                      |             goto label_10;
                                                                 |         }
    0x0000afa2 adds r7, 0x24                                     |         r7 += 0x24;
    0x0000afa4 mov sp, r7                                        |         
    0x0000afa6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_7:
    0x0000afaa ldr r1, [pc, 0x178]                               |         
    0x0000afac mov r0, r5                                        |         r0 = r5;
    0x0000afae add r1, pc                                        |         r1 = 0x160d8;
    0x0000afb0 blx 0x3490                                        |         r0 = fcn_00003490 ();
    0x0000afb4 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000afb6 beq 0xb048                                        |             goto label_11;
                                                                 |         }
    0x0000afb8 ldr r1, [pc, 0x16c]                               |         
    0x0000afba mov r0, r5                                        |         r0 = r5;
    0x0000afbc add r1, pc                                        |         r1 = 0x160e8;
    0x0000afbe blx 0x3490                                        |         r0 = fcn_00003490 ();
    0x0000afc2 mov r8, r0                                        |         r8 = r0;
    0x0000afc4 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0000afc6 bne 0xb05e                                        |             goto label_12;
                                                                 |         }
    0x0000afc8 movs r1, 0x3a                                     |         r1 = 0x3a;
    0x0000afca mov r0, r6                                        |         r0 = r6;
    0x0000afcc blx 0x37d4                                        |         r0 = fcn_000037d4 ();
    0x0000afd0 mov sb, r0                                        |         sb = r0;
    0x0000afd2 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000afd4 beq 0xb05e                                        |             goto label_12;
                                                                 |         }
    0x0000afd6 ldrb r3, [r0, 1]                                  |         r3 = *((r0 + 1));
    0x0000afd8 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0000afda beq 0xb05e                                        |             goto label_12;
                                                                 |         }
    0x0000afdc subs r2, r0, r6                                   |         r2 = r0 - r6;
    0x0000afde cmp.w r2, 0x400000                                |         
                                                                 |         if (r2 > 0x400000) {
    0x0000afe2 bhi 0xb0d8                                        |             goto label_13;
                                                                 |         }
    0x0000afe4 add.w r3, r2, 8                                   |         r3 = r2 + 8;
    0x0000afe8 bic r3, r3, 7                                     |         r3 = BIT_MASK (r3, 7);
    0x0000afec sub.w sp, sp, r3                                  |         
    0x0000aff0 add.w fp, sp, 0xf                                 |         
    0x0000aff4 lsr.w r3, fp, 3                                   |         r3 = fp >> 3;
    0x0000aff8 bic fp, fp, 7                                     |         fp = BIT_MASK (fp, 7);
    0x0000affc strb.w r8, [r2, r3, lsl 3]                        |         offset_0 = r3 << 3;
                                                                 |         *((r2 + offset_0)) = r8;
                                                                 |         if (r2 != 0) {
    0x0000b000 cbz r2, 0xb00c                                    |             
    0x0000b002 mov r0, fp                                        |             r0 = fp;
    0x0000b004 mov r1, r6                                        |             r1 = r6;
    0x0000b006 blx 0x3578                                        |             r0 = mmap64 ()
    0x0000b00a mov fp, r0                                        |             
                                                                 |         }
    0x0000b00c ldr r2, [pc, 0x11c]                               |         
    0x0000b00e add.w r8, r7, 0xc                                 |         r8 = r7 + 0xc;
    0x0000b012 ldr r3, [pc, 0x11c]                               |         
    0x0000b014 add.w sb, sb, 1                                   |         sb++;
    0x0000b018 ldr r0, [pc, 0x118]                               |         
    0x0000b01a mov sl, r8                                        |         sl = r8;
    0x0000b01c add r2, pc                                        |         r2 = 0x1614c;
    0x0000b01e add r3, pc                                        |         r3 = 0x16154;
    0x0000b020 add r0, pc                                        |         r0 = 0x16158;
    0x0000b022 str r3, [r7, 0x10]                                |         *((r7 + 0x10)) = r3;
    0x0000b024 movs r3, 0                                        |         r3 = 0;
    0x0000b026 str r0, [r7, 0xc]                                 |         *((r7 + 0xc)) = r0;
    0x0000b028 str r3, [r7, 0x14]                                |         *((r7 + 0x14)) = r3;
                                                                 | label_1:
    0x0000b02a mov r3, sb                                        |         r3 = sb;
    0x0000b02c mov r1, fp                                        |         r1 = fp;
    0x0000b02e str r4, [sp]                                      |         *(sp) = r4;
    0x0000b030 str r2, [r7, 4]                                   |         *((r7 + 4)) = r2;
    0x0000b032 bl 0xab50                                         |         r0 = fcn_0000ab50 (r0, r1, r2, r3);
    0x0000b036 cmp r0, 0                                         |         
    0x0000b038 blt 0xaf8c                                        |         
                                                                 |     } while (r0 < 0);
                                                                 |     if (r0 != 0) {
    0x0000b03a bne 0xaf8a                                        |         goto label_0;
                                                                 |     }
    0x0000b03c ldr r0, [sl, 4]!                                  |     r0 = *((sl += 4));
    0x0000b040 ldr r2, [r7, 4]                                   |     r2 = *((r7 + 4));
    0x0000b042 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000b044 bne 0xb02a                                        |         goto label_1;
                                                                 |     }
    0x0000b046 b 0xaf08                                          |     goto label_2;
                                                                 | label_11:
    0x0000b048 mov r3, r0                                        |     r3 = r0;
    0x0000b04a mov r2, r0                                        |     r2 = r0;
    0x0000b04c ldr r0, [pc, 0xe8]                                |     
    0x0000b04e mov r1, r6                                        |     r1 = r6;
    0x0000b050 str r4, [sp]                                      |     *(sp) = r4;
    0x0000b052 add r0, pc                                        |     r0 = 0x1618e;
    0x0000b054 bl 0xab50                                         |     r0 = fcn_0000ab50 (r0, r1, r2, r3);
    0x0000b058 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000b05a blt 0xaf8c                                        |         goto label_3;
                                                                 |     }
                                                                 |     if (r0 != 0) {
    0x0000b05c bne 0xaf8a                                        |         goto label_0;
                                                                 |     }
                                                                 | label_12:
    0x0000b05e add.w r8, r7, 0xc                                 |     r8 = r7 + 0xc;
    0x0000b062 b 0xaf08                                          |     goto label_2;
                                                                 | label_4:
    0x0000b064 ldr r1, [pc, 0xd4]                                |     
    0x0000b066 mov.w r2, 0x146                                   |     r2 = 0x146;
    0x0000b06a ldr r3, [pc, 0xd4]                                |     
    0x0000b06c ldr r0, [pc, 0xd4]                                |     
    0x0000b06e add r1, pc                                        |     r1 = 0x161ae;
    0x0000b070 add r3, pc                                        |     r3 = 0x161b6;
    0x0000b072 adds r1, 7                                        |     r1 += 7;
    0x0000b074 add r0, pc                                        |     r0 = 0x161bc;
    0x0000b076 bl 0x167c8                                        |     fcn_000167c8 (r0, r1, r2, r3);
    0x0000b07a mvn r0, 0x15                                      |     r0 = ~0x15;
    0x0000b07e b 0xaf8c                                          |     goto label_3;
                                                                 | label_5:
    0x0000b080 ldr r1, [pc, 0xc4]                                |     
    0x0000b082 movw r2, 0x147                                    |     r2 = 0x147;
    0x0000b086 ldr r3, [pc, 0xc4]                                |     
    0x0000b088 ldr r0, [pc, 0xc4]                                |     
    0x0000b08a add r1, pc                                        |     r1 = 0x161d6;
    0x0000b08c add r3, pc                                        |     r3 = 0x161de;
    0x0000b08e adds r1, 7                                        |     r1 += 7;
    0x0000b090 add r0, pc                                        |     r0 = 0x161e4;
    0x0000b092 bl 0x167c8                                        |     fcn_000167c8 (r0, r1, r2, r3);
    0x0000b096 mvn r0, 0x15                                      |     r0 = ~0x15;
    0x0000b09a b 0xaf8c                                          |     goto label_3;
                                                                 | label_6:
    0x0000b09c ldr r1, [pc, 0xb4]                                |     
    0x0000b09e mov.w r2, 0x148                                   |     r2 = 0x148;
    0x0000b0a0 strb r4, [r4, 0xa]                                |     *((r4 + 0xa)) = r4;
    0x0000b0a2 ldr r3, [pc, 0xb4]                                |     
    0x0000b0a4 ldr r0, [pc, 0xb4]                                |     
    0x0000b0a6 add r1, pc                                        |     r1 = 0x161fe;
    0x0000b0a8 add r3, pc                                        |     r3 = 0x16206;
    0x0000b0aa adds r1, 7                                        |     r1 += 7;
    0x0000b0ac add r0, pc                                        |     r0 = 0x1620c;
    0x0000b0ae bl 0x167c8                                        |     fcn_000167c8 (r0, r1, r2, r3);
    0x0000b0b2 mvn r0, 0x15                                      |     r0 = ~0x15;
    0x0000b0b6 b 0xaf8c                                          |     goto label_3;
                                                                 | label_9:
    0x0000b0b8 ldr r0, [pc, 0xa4]                                |     
    0x0000b0ba mov r3, r6                                        |     r3 = r6;
    0x0000b0bc mov r2, r8                                        |     r2 = r8;
    0x0000b0be mov r1, r5                                        |     r1 = r5;
    0x0000b0c0 str r4, [sp]                                      |     *(sp) = r4;
    0x0000b0c2 add r0, pc                                        |     r0 = 0x16226;
    0x0000b0c4 bl 0xab50                                         |     fcn_0000ab50 (r0, r1, r2, r3);
    0x0000b0c6 stc2l p8, c2, [r4, -0]                            |     __asm ("stc2l p8, c2, [r4, -0]");
    0x0000b0c8 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000b0ca blt.w 0xaf8c                                      |         goto label_3;
                                                                 |     }
                                                                 |     if (r0 != 0) {
    0x0000b0ce bne.w 0xaf8a                                      |         goto label_0;
                                                                 |     }
    0x0000b0d2 mvn r0, 0x12                                      |     r0 = ~0x12;
    0x0000b0d6 b 0xaf8c                                          |     goto label_3;
                                                                 | label_13:
    0x0000b0d8 ldr r1, [pc, 0x88]                                |     
    0x0000b0da movw r2, 0x163                                    |     r2 = 0x163;
    0x0000b0de ldr r3, [pc, 0x88]                                |     
    0x0000b0e0 ldr r0, [pc, 0x88]                                |     
    0x0000b0e2 add r1, pc                                        |     r1 = 0x1624a;
    0x0000b0e4 add r3, pc                                        |     r3 = 0x16252;
    0x0000b0e6 adds r1, 7                                        |     r1 += 7;
    0x0000b0e8 add r0, pc                                        |     r0 = 0x16258;
    0x0000b0ea bl 0x16594                                        |     r0 = fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_10:
    0x0000b0ee blx 0x35d0                                        |     fcn_000035d0 ();
    0x0000b0f2 nop                                               |     
    0x0000b0f4 ldr r6, [r7, 0x68]                                |     r6 = *((r7 + 0x68));
    0x0000b0f6 movs r2, r0                                       |     r2 = r0;
    0x0000b0f8 lsls r4, r5, 9                                    |     r4 = r5 << 9;
    0x0000b0fa movs r0, r0                                       |     
    0x0000b0fc asrs r4, r7, 0xf                                  |     r4 = r7 >> 0xf;
    0x0000b0fe movs r1, r0                                       |     r1 = r0;
    0x0000b100 cmp r4, 0x56                                      |     
    0x0000b102 movs r1, r0                                       |     r1 = r0;
    0x0000b104 cmp r4, 0xa0                                      |     
    0x0000b106 movs r1, r0                                       |     r1 = r0;
    0x0000b108 cmp r4, 0xa6                                      |     
    0x0000b10a movs r1, r0                                       |     r1 = r0;
    0x0000b10c cmp r3, 0x48                                      |     
    0x0000b10e movs r1, r0                                       |     r1 = r0;
    0x0000b110 cmp r4, 0x3e                                      |     
    0x0000b112 movs r1, r0                                       |     r1 = r0;
    0x0000b114 cmp r3, 0xf0                                      |     
    0x0000b116 movs r1, r0                                       |     r1 = r0;
    0x0000b118 cmp r3, 0x1c                                      |     
    0x0000b11a movs r1, r0                                       |     r1 = r0;
    0x0000b11c cmp r4, 0x14                                      |     
    0x0000b11e movs r1, r0                                       |     r1 = r0;
    0x0000b120 ldr r4, [r0, 0x5c]                                |     r4 = *((r0 + 0x5c));
    0x0000b122 movs r2, r0                                       |     r2 = r0;
    0x0000b124 asrs r2, r6, 0x15                                 |     r2 = r6 >> 0x15;
    0x0000b126 movs r1, r0                                       |     r1 = r0;
    0x0000b128 asrs r4, r2, 0x17                                 |     r4 = r2 >> 0x17;
    0x0000b12a movs r1, r0                                       |     r1 = r0;
    0x0000b12c cmp r3, 0xa4                                      |     
    0x0000b12e movs r1, r0                                       |     r1 = r0;
    0x0000b130 cmp r3, 0x66                                      |     
    0x0000b132 movs r1, r0                                       |     r1 = r0;
    0x0000b134 cmp r3, 0x18                                      |     
    0x0000b136 movs r1, r0                                       |     r1 = r0;
    0x0000b138 cmp r3, 0x4a                                      |     
    0x0000b13a movs r1, r0                                       |     r1 = r0;
    0x0000b13c cmp r0, 0xf2                                      |     
    0x0000b13e movs r1, r0                                       |     r1 = r0;
    0x0000b140 adds r5, 0x30                                     |     r5 += 0x30;
    0x0000b142 movs r1, r0                                       |     r1 = r0;
    0x0000b144 asrs r4, r1, 9                                    |     r4 = r1 >> 9;
    0x0000b146 movs r1, r0                                       |     r1 = r0;
    0x0000b148 cmp r0, 0xd6                                      |     
    0x0000b14a movs r1, r0                                       |     r1 = r0;
    0x0000b14c adds r5, 0x14                                     |     r5 += 0x14;
    0x0000b14e movs r1, r0                                       |     r1 = r0;
    0x0000b150 cmp r2, 0xb8                                      |     
    0x0000b152 movs r1, r0                                       |     r1 = r0;
    0x0000b154 cmp r0, 0xba                                      |     
    0x0000b156 movs r1, r0                                       |     r1 = r0;
    0x0000b158 adds r4, 0xf8                                     |     r4 += 0xf8;
    0x0000b15a movs r1, r0                                       |     r1 = r0;
    0x0000b15c cmp r2, 0xbc                                      |     
    0x0000b15e movs r1, r0                                       |     r1 = r0;
    0x0000b160 cmp r3, 0xa                                       |     
    0x0000b162 movs r1, r0                                       |     r1 = r0;
    0x0000b164 cmp r0, 0x7e                                      |     
    0x0000b166 movs r1, r0                                       |     r1 = r0;
    0x0000b168 adds r4, 0xbc                                     |     r4 += 0xbc;
    0x0000b16a movs r1, r0                                       |     r1 = r0;
    0x0000b16c cmp r2, 0xc4                                      |     
    0x0000b16e movs r1, r0                                       |     r1 = r0;
                                                                 | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0xb510 */
                                                         | #include <stdint.h>
                                                         |  
                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                         |  
    ; (fcn) fcn.0000b510 ()                              | void fcn_0000b510 (uint32_t arg1, uint32_t arg2) {
                                                         |     int16_t var_0h_4;
                                                         |     int16_t var_0h;
                                                         |     int32_t var_0h_3;
                                                         |     int32_t var_ch;
                                                         |     int16_t var_0h_2;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
    0x0000b510 blmi 0x125de38                            |     __asm ("blmi 0x125de38");
    0x0000b514 push.w {r4, r5, r6, r7, r8, lr}           |     
    0x0000b518 sub sp, 0x10                              |     
    0x0000b51a add r2, pc                                |     r2 += pc;
    0x0000b51c add r7, sp, 0                             |     r7 += var_0h;
    0x0000b51e ldr r3, [r2, r3]                          |     r3 = *((r2 + r3));
    0x0000b520 ldr r3, [r3]                              |     r3 = *(r3);
    0x0000b522 str r3, [r7, 0xc]                         |     var_ch = r3;
    0x0000b524 mov.w r3, 0                               |     r3 = 0;
    0x0000b528 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x0000b52a beq 0xb5e0                                |         goto label_1;
                                                         |     }
    0x0000b52c mov r4, r1                                |     r4 = r1;
    0x0000b52e cmp r1, 0                                 |     
                                                         |     if (r1 == 0) {
    0x0000b530 beq 0xb5fc                                |         goto label_2;
                                                         |     }
    0x0000b532 ldrb r3, [r1]                             |     r3 = *(r1);
    0x0000b534 mov r5, r0                                |     r5 = r0;
    0x0000b536 cmp r3, 0x63                              |     
                                                         |     if (r3 > 0x63) {
    0x0000b538 bhi 0xb5ae                                |         goto label_3;
                                                         |     }
    0x0000b53a cmp r3, 0x61                              |     
                                                         |     if (r3 > 0x61) {
    0x0000b53c bhi 0xb5c6                                |         goto label_4;
                                                         |     }
    0x0000b53e cmp r3, 0x2b                              |     
                                                         |     if (r3 != 0x2b) {
    0x0000b540 bne 0xb58e                                |         goto label_5;
                                                         |     }
    0x0000b542 add.w r8, r1, 1                           |     r8 = r1 + 1;
    0x0000b546 movs r1, 0x3a                             |     r1 = 0x3a;
    0x0000b548 mov r0, r8                                |     r0 = r8;
    0x0000b54a blx 0x37d4                                |     r0 = fcn_000037d4 ();
    0x0000b54e mov r6, r0                                |     r6 = r0;
                                                         |     if (r0 == 0) {
    0x0000b550 cbz r0, 0xb58e                            |         goto label_5;
                                                         |     }
    0x0000b552 subs r4, r0, r4                           |     r4 = r0 - r4;
    0x0000b554 cmp.w r4, 0x100                           |     
                                                         |     if (r4 > 0x100) {
    0x0000b558 bgt 0xb58e                                |         goto label_5;
                                                         |     }
    0x0000b55a subs r2, r4, 1                            |     r2 = r4 - 1;
    0x0000b55c cmp.w r2, 0x400000                        |     
                                                         |     if (r2 > 0x400000) {
    0x0000b560 bhi 0xb618                                |         goto label_6;
                                                         |     }
    0x0000b562 adds r4, 7                                |     r4 += 7;
    0x0000b564 movs r0, 0                                |     r0 = 0;
    0x0000b566 bic r4, r4, 7                             |     r4 = BIT_MASK (r4, 7);
    0x0000b56a sub.w sp, sp, r4                          |     
    0x0000b56e mov r3, sp                                |     r3 = sp;
    0x0000b570 mov r1, sp                                |     r1 = sp;
    0x0000b572 lsrs r3, r3, 3                            |     r3 >>= 3;
    0x0000b574 strb.w r0, [r2, r3, lsl 3]                |     offset_0 = r3 << 3;
                                                         |     *((r2 + offset_0)) = r0;
                                                         |     if (r2 != 0) {
    0x0000b578 cbz r2, 0xb584                            |         
    0x0000b57a mov r0, r1                                |         r0 = r1;
    0x0000b57c mov r1, r8                                |         r1 = r8;
    0x0000b57e blx 0x3578                                |         r0 = mmap64 ()
    0x0000b582 mov r1, r0                                |         r1 = r0;
                                                         |     }
    0x0000b584 adds r2, r6, 1                            |     r2 = r6 + 1;
    0x0000b586 mov r0, r5                                |     r0 = r5;
    0x0000b588 bl 0xae88                                 |     fcn_0000ae88 (r0, r1, r2);
    0x0000b58c b 0xb592                                  |     
                                                         |     while (r3 != 0x6e) {
                                                         | label_5:
    0x0000b58e mvn r0, 0x15                              |         r0 = ~0x15;
                                                         | label_0:
    0x0000b592 ldr r2, [pc, 0xa8]                        |         
    0x0000b594 ldr r3, [pc, 0xa0]                        |         r3 = *(0xb638);
    0x0000b596 add r2, pc                                |         r2 = 0x16bd8;
    0x0000b598 ldr r3, [r2, r3]                          |         r3 = *(0x16bd8);
    0x0000b59a ldr r2, [r3]                              |         r2 = *(0x16bd8);
    0x0000b59c ldr r3, [r7, 0xc]                         |         r3 = var_ch;
    0x0000b59e eors r2, r3                               |         r2 ^= r3;
    0x0000b5a0 mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x0000b5a4 bne 0xb62e                                |             goto label_7;
                                                         |         }
    0x0000b5a6 adds r7, 0x10                             |         r7 += 0x10;
    0x0000b5a8 mov sp, r7                                |         
    0x0000b5aa pop.w {r4, r5, r6, r7, r8, pc}            |         
                                                         | label_3:
    0x0000b5ae cmp r3, 0x6e                              |         
    0x0000b5b0 bne 0xb58e                                |         
                                                         |     }
    0x0000b5b2 adds r0, r1, 1                            |     r0 = r1 + 1;
    0x0000b5b4 bl 0x17dc4                                |     r0 = fcn_00017dc4 (r0, r1, r2);
    0x0000b5b8 cmp r0, 0                                 |     
                                                         |     if (r0 < 0) {
    0x0000b5ba blt 0xb592                                |         goto label_0;
                                                         |     }
    0x0000b5bc mov r1, r0                                |     r1 = r0;
    0x0000b5be mov r0, r5                                |     r0 = r5;
    0x0000b5c0 bl 0xadd8                                 |     fcn_0000add8 (r0, r1);
    0x0000b5c4 b 0xb592                                  |     goto label_0;
                                                         | label_4:
    0x0000b5c6 mov r1, r7                                |     r1 = r7;
    0x0000b5c8 adds r0, r4, 1                            |     r0 = r4 + 1;
    0x0000b5ca bl 0x17f74                                |     r0 = fcn_00017f74 (r0, r1, r2);
    0x0000b5ce cmp r0, 0                                 |     
                                                         |     if (r0 < 0) {
    0x0000b5d0 blt 0xb592                                |         goto label_0;
                                                         |     }
    0x0000b5d2 ldrd r2, r3, [r7]                         |     __asm ("ldrd r2, r3, [r7]");
    0x0000b5d6 mov r0, r5                                |     r0 = r5;
    0x0000b5d8 ldrb r1, [r4]                             |     r1 = *(r4);
    0x0000b5da bl 0xac54                                 |     fcn_0000ac54 (r0, r1, r2, r3);
    0x0000b5de b 0xb592                                  |     goto label_0;
                                                         | label_1:
    0x0000b5e0 ldr r1, [pc, 0x5c]                        |     
    0x0000b5e2 movw r2, 0x2a3                            |     r2 = 0x2a3;
    0x0000b5e6 ldr r3, [pc, 0x5c]                        |     
    0x0000b5e8 ldr r0, [pc, 0x5c]                        |     
    0x0000b5ea add r1, pc                                |     r1 = 0x16c2e;
    0x0000b5ec add r3, pc                                |     r3 = 0x16c36;
    0x0000b5ee adds r1, 7                                |     r1 += 7;
    0x0000b5f0 add r0, pc                                |     r0 = 0x16c3c;
    0x0000b5f2 bl 0x167c8                                |     fcn_000167c8 (r0, r1, r2, r3);
    0x0000b5f6 mvn r0, 0x15                              |     r0 = ~0x15;
    0x0000b5fa b 0xb592                                  |     goto label_0;
                                                         | label_2:
    0x0000b5fc ldr r1, [pc, 0x4c]                        |     
    0x0000b5fe mov.w r2, 0x2a4                           |     r2 = 0x2a4;
    0x0000b602 ldr r3, [pc, 0x4c]                        |     
    0x0000b604 ldr r0, [pc, 0x4c]                        |     
    0x0000b606 add r1, pc                                |     r1 = 0x16c56;
    0x0000b608 add r3, pc                                |     r3 = 0x16c5e;
    0x0000b60a adds r1, 7                                |     r1 += 7;
    0x0000b60c add r0, pc                                |     r0 = 0x16c64;
    0x0000b60e bl 0x167c8                                |     fcn_000167c8 (r0, r1, r2, r3);
    0x0000b612 mvn r0, 0x15                              |     r0 = ~0x15;
    0x0000b616 b 0xb592                                  |     goto label_0;
                                                         | label_6:
    0x0000b618 ldr r1, [pc, 0x3c]                        |     
    0x0000b61a movw r2, 0x2c6                            |     r2 = 0x2c6;
    0x0000b61e ldr r3, [pc, 0x3c]                        |     
    0x0000b620 ldr r0, [pc, 0x3c]                        |     
    0x0000b622 add r1, pc                                |     r1 = 0x16c7e;
    0x0000b624 add r3, pc                                |     r3 = 0x16c86;
    0x0000b626 adds r1, 7                                |     r1 += 7;
    0x0000b628 add r0, pc                                |     r0 = 0x16c8c;
    0x0000b62a bl 0x16594                                |     r0 = fcn_00016594 (r0, r1, r2, r3, r4);
                                                         | label_7:
    0x0000b62e blx 0x35d0                                |     fcn_000035d0 ();
    0x0000b632 nop                                       |     
    0x0000b634 ldr r2, [r7]                              |     r2 = *(r7);
    0x0000b636 movs r2, r0                               |     r2 = r0;
    0x0000b638 lsls r4, r5, 9                            |     r4 = r5 << 9;
    0x0000b63a movs r0, r0                               |     
    0x0000b63c str r6, [r7, 0x78]                        |     *((r7 + 0x78)) = r6;
    0x0000b63e movs r2, r0                               |     r2 = r0;
    0x0000b640 movs r3, 0x76                             |     r3 = 0x76;
    0x0000b642 movs r1, r0                               |     r1 = r0;
    0x0000b644 cmp r6, 0xd8                              |     
    0x0000b646 movs r1, r0                               |     r1 = r0;
    0x0000b648 lsrs r0, r2, 0x13                         |     r0 = r2 >> 0x13;
    0x0000b64a movs r1, r0                               |     r1 = r0;
    0x0000b64c movs r3, 0x5a                             |     r3 = 0x5a;
    0x0000b64e movs r1, r0                               |     r1 = r0;
    0x0000b650 cmp r6, 0xbc                              |     
    0x0000b652 movs r1, r0                               |     r1 = r0;
    0x0000b654 str r4, [r7, r7]                          |     *((r7 + r7)) = r4;
    0x0000b656 movs r1, r0                               |     r1 = r0;
    0x0000b658 movs r3, 0x3e                             |     r3 = 0x3e;
    0x0000b65a movs r1, r0                               |     r1 = r0;
    0x0000b65c cmp r6, 0xa0                              |     
    0x0000b65e movs r1, r0                               |     r1 = r0;
    0x0000b660 movs r5, 0x84                             |     r5 = 0x84;
    0x0000b662 movs r1, r0                               |     r1 = r0;
                                                         | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0xddf4 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.0000ddf4 ()                                      | void fcn_0000ddf4 (int16_t arg_0h, int16_t arg_814h, uint32_t arg1, uint32_t arg2, int16_t arg3) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int32_t var_ch_2;
                                                                 |     int32_t var_ch_3;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_28h;
                                                                 |     int32_t var_4h_2;
                                                                 |     int32_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int32_t var_14h_2;
                                                                 |     int16_t var_18h_2;
                                                                 |     int32_t var_28h_2;
                                                                 |     int16_t var_84h;
                                                                 |     int32_t var_94h;
                                                                 |     int16_t var_0h_2;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x0000ddf4 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x0000ddf8 mov r8, r2                                        |     r8 = r2;
    0x0000ddfa ldr r2, [pc, 0x394]                               |     
    0x0000ddfc sub sp, 0xc4                                      |     
    0x0000ddfe movs r4, 0                                        |     r4 = 0;
    0x0000de00 ldr r3, [pc, 0x390]                               |     r3 = *(0xe194);
    0x0000de02 add r7, sp, 0x28                                  |     r7 += var_28h;
    0x0000de04 add r2, pc                                        |     r2 = 0x1bf9a;
    0x0000de06 ldr r3, [r2, r3]                                  |     
    0x0000de08 ldr r3, [r3]                                      |     r3 = *(0x1bf9a);
    0x0000de0a str.w r3, [r7, 0x94]                              |     __asm ("str.w r3, [var_94h]");
    0x0000de0e mov.w r3, 0                                       |     r3 = 0;
    0x0000de12 str r4, [r7, 0xc]                                 |     var_ch = r4;
    0x0000de14 cmp r0, 0                                         |     
                                                                 |     if (arg_0h == ) {
    0x0000de16 beq.w 0xdfce                                      |         goto label_13;
                                                                 |     }
    0x0000de1a mov r6, r1                                        |     r6 = r1;
    0x0000de1c cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x0000de1e beq.w 0xdfee                                      |         goto label_14;
                                                                 |     }
    0x0000de22 add.w sl, r7, 0x18                                |     sl += var_18h_2;
    0x0000de26 mov r5, r0                                        |     r5 = r0;
    0x0000de28 mov r2, sl                                        |     r2 = sl;
    0x0000de2a ldr r0, [r0, 0x34]                                |     r0 = *(arg_0hx34);
    0x0000de2c str r4, [r7, 0x18]                                |     var_18h_2 = r4;
    0x0000de2e bl 0x143d4                                        |     fcn_000143d4 (r0, r1, r2);
    0x0000de32 ldr.w sb, [r7, 0x18]                              |     sb = var_18h_2;
    0x0000de36 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x0000de3a beq 0xde7e                                        |         goto label_15;
                                                                 |     }
    0x0000de3c ldr.w sb, [r7, 0xc]                               |     sb = var_ch;
    0x0000de40 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000de42 beq.w 0xe166                                      |         goto label_16;
                                                                 |     }
    0x0000de46 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x0000de4a beq 0xde7a                                        |         goto label_17;
                                                                 |     }
    0x0000de4c str.w r0, [r8]                                    |     __asm ("str.w r0, [r8]");
                                                                 |     do {
                                                                 | label_0:
    0x0000de50 mov r0, sb                                        |         r0 = sb;
    0x0000de52 blx 0x3530                                        |         ferror (r0);
    0x0000de56 ldr r2, [pc, 0x340]                               |         
    0x0000de58 ldr r3, [pc, 0x338]                               |         r3 = *(0xe194);
    0x0000de5a add r2, pc                                        |         r2 = 0x1bff8;
    0x0000de5c ldr r3, [r2, r3]                                  |         r3 = *(0x1bff8);
    0x0000de5e ldr r2, [r3]                                      |         r2 = *(0x1bff8);
    0x0000de60 ldr.w r3, [r7, 0x94]                              |         r3 = var_94h;
    0x0000de64 eors r2, r3                                       |         r2 ^= r3;
    0x0000de66 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000de6a bne.w 0xe18a                                      |             goto label_18;
                                                                 |         }
    0x0000de6e mov r0, r4                                        |         r0 = r4;
    0x0000de70 adds r7, 0x9c                                     |         r7 += 0x9c;
    0x0000de72 mov sp, r7                                        |         
    0x0000de74 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_1:
    0x0000de78 mov sb, r3                                        |         sb = r3;
                                                                 | label_17:
    0x0000de7a mov r4, r8                                        |         r4 = r8;
    0x0000de7c b 0xde50                                          |         
                                                                 |     } while (1);
                                                                 | label_15:
    0x0000de7e add.w r1, r7, 0x10                                |     r1 += var_10h;
    0x0000de82 mov r0, r5                                        |     r0 = r5;
    0x0000de84 bl 0xb664                                         |     r0 = fcn_0000b664 (r0, r1);
    0x0000de88 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x0000de8a blt.w 0xe062                                      |         goto label_6;
                                                                 |     }
    0x0000de8e ldrb r2, [r6]                                     |     r2 = *(r6);
    0x0000de90 ldr.w fp, [r7, 0x10]                              |     fp = var_10h;
    0x0000de94 cmp r2, 0x2f                                      |     
                                                                 |     if (r2 != 0x2f) {
    0x0000de96 bne.w 0xe16c                                      |         goto label_19;
                                                                 |     }
    0x0000de9a mov r3, r6                                        |     r3 = r6;
                                                                 |     do {
    0x0000de9c mov r4, r3                                        |         r4 = r3;
    0x0000de9e ldrb r1, [r3, 1]!                                 |         r1 = *((r3 += 1));
    0x0000dea2 cmp r1, 0x2f                                      |         
    0x0000dea4 beq 0xde9c                                        |         
                                                                 |     } while (r1 == 0x2f);
                                                                 | label_7:
    0x0000dea6 cmp.w fp, 0                                       |     
                                                                 |     if (fp != 0) {
    0x0000deaa beq 0xdeb4                                        |         
    0x0000deac ldrb.w r3, [fp]                                   |         r3 = *(fp);
    0x0000deb0 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x0000deb2 bne 0xdf5c                                        |             goto label_20;
                                                                 |         }
                                                                 |     }
                                                                 | label_2:
    0x0000deb4 mov r1, sl                                        |     r1 = sl;
    0x0000deb6 mov r0, r4                                        |     r0 = r4;
    0x0000deb8 blx 0x3590                                        |     r0 = sendmsg ();
    0x0000debc cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000debe blt.w 0xe0b4                                      |         goto label_21;
                                                                 |     }
    0x0000dec2 ldr r2, [r7, 0x28]                                |     r2 = var_28h_2;
    0x0000dec4 and r3, r2, 0xf000                                |     r3 = r2 & 0xf000;
    0x0000dec8 cmp.w r3, 0xa000                                  |     
                                                                 |     if (r3 == 0xa000) {
    0x0000decc beq.w 0xe068                                      |         goto label_22;
                                                                 |     }
    0x0000ded0 cmp.w r3, 0x4000                                  |     
    0x0000ded4 itt eq                                            |     
                                                                 |     if (r3 != 0x4000) {
    0x0000ded6 ldreq sb, [r7, 0xc]                               |         sb = *((r7 + 0xc));
                                                                 |     }
                                                                 |     if (r3 != 0x4000) {
    0x0000ded8 streq r0, [sp, 0x30]                              |         *((sp + 0x30)) = r0;
                                                                 |     }
    0x0000deda mvn r4, 0x14                                      |     r4 = ~0x14;
                                                                 |     if (r3 == 0x4000) {
    0x0000dede beq 0xde50                                        |         goto label_0;
                                                                 |     }
    0x0000dee0 lsls r3, r2, 0x17                                 |     r3 = r2 << 0x17;
    0x0000dee2 itt pl                                            |     
                                                                 |     if (r3 < r2) {
    0x0000dee4 ldrpl sb, [r7, 0xc]                               |         sb = var_ch;
                                                                 |     }
                                                                 |     if (r3 < r2) {
    0x0000dee8 mov.w r4, -1                                      |         r4 = -1;
                                                                 |         goto label_23;
                                                                 |     }
                                                                 |     if (r3 >= r2) {
                                                                 | label_23:
    0x0000deec bpl 0xde50                                        |         goto label_0;
                                                                 |     }
    0x0000deee mov r0, r4                                        |     r0 = r4;
    0x0000def0 add.w r3, r7, 0x14                                |     r3 += var_14h_2;
    0x0000def4 add.w r2, r7, 0xc                                 |     r2 += var_ch;
    0x0000def8 mov.w r1, -1                                      |     r1 = -1;
    0x0000defc bl 0x10a20                                        |     r0 = fcn_00010a20 (r0, r1, r2);
    0x0000df00 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x0000df02 blt.w 0xe062                                      |         goto label_6;
                                                                 |     }
    0x0000df06 ldr r4, [r7, 0x14]                                |     r4 = var_14h_2;
    0x0000df08 ldr.w fp, [r7, 0xc]                               |     fp = var_ch;
    0x0000df0c mov r2, fp                                        |     r2 = fp;
                                                                 |     if (r4 == 0) {
    0x0000df0e cbz r4, 0xdf40                                    |         goto label_3;
                                                                 |     }
    0x0000df10 ldr.w sl, [pc, 0x288]                             |     
    0x0000df14 add sl, pc                                        |     sl = "udev_queue";
    0x0000df16 b 0xdf2c                                          |     
                                                                 |     while (r0 != 0) {
    0x0000df18 mov.w r3, 0                                       |         r3 = 0;
    0x0000df1c strb.w r3, [fp, r4]                               |         *((fp + r4)) = r3;
    0x0000df20 ldr r4, [r7, 0x14]                                |         r4 = var_14h_2;
    0x0000df22 cmp r4, 0                                         |         
                                                                 |         if (r4 == 0) {
    0x0000df24 beq.w 0xe092                                      |             goto label_24;
                                                                 |         }
    0x0000df28 ldr.w fp, [r7, 0xc]                               |         fp = var_ch;
    0x0000df2c subs r4, 1                                        |         r4--;
    0x0000df2e mov r0, sl                                        |         r0 = sl;
    0x0000df30 str r4, [r7, 0x14]                                |         var_14h_2 = r4;
    0x0000df32 ldrb.w r1, [fp, r4]                               |         r1 = *((fp + r4));
    0x0000df36 blx 0x37d4                                        |         fcn_000037d4 ();
    0x0000df3a mov r2, fp                                        |         r2 = fp;
    0x0000df3c cmp r0, 0                                         |         
    0x0000df3e bne 0xdf18                                        |         
                                                                 |     }
                                                                 | label_3:
    0x0000df40 mov r1, r6                                        |     r1 = r6;
    0x0000df42 mov r0, r5                                        |     r0 = r5;
    0x0000df44 bl 0xa20c                                         |     r0 = fcn_0000a20c (r0, r1, r2);
    0x0000df48 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x0000df4a blt 0xe00e                                        |         goto label_25;
                                                                 |     }
    0x0000df4c ldr r3, [r7, 0xc]                                 |     r3 = var_ch;
    0x0000df4e cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x0000df52 beq 0xde78                                        |         goto label_1;
                                                                 |     }
    0x0000df54 movs r4, 0                                        |     r4 = 0;
    0x0000df56 str.w r3, [r8]                                    |     __asm ("str.w r3, [r8]");
    0x0000df58 adds r0, 0                                        |     r0 += 0;
    0x0000df5a b 0xde50                                          |     goto label_0;
                                                                 | label_20:
    0x0000df5c mov r0, fp                                        |     r0 = fp;
    0x0000df5e str r2, [r7]                                      |     *(r7) = r2;
    0x0000df60 blx 0x37c8                                        |     fcn_000037c8 ();
    0x0000df64 str r0, [r7, 4]                                   |     var_4h_2 = r0;
    0x0000df66 mov r0, r4                                        |     r0 = r4;
    0x0000df68 blx 0x37c8                                        |     fcn_000037c8 ();
    0x0000df6c ldr r1, [r7, 4]                                   |     r1 = var_4h_2;
    0x0000df6e mov r3, r0                                        |     r3 = r0;
    0x0000df70 ldr r2, [r7]                                      |     r2 = *(r7);
    0x0000df72 adds r0, r1, r0                                   |     r0 = r1 + r0;
    0x0000df74 adds r1, r0, 2                                    |     r1 = r0 + 2;
    0x0000df76 cmp.w r1, 0x400000                                |     
                                                                 |     if (r1 > 0x400000) {
    0x0000df7a bhi.w 0xe11a                                      |         goto label_26;
                                                                 |     }
    0x0000df7e adds r0, 9                                        |     r0 += 9;
    0x0000df80 mov r1, fp                                        |     r1 = fp;
    0x0000df82 bic r0, r0, 7                                     |     r0 = BIT_MASK (r0, 7);
    0x0000df86 strd r2, r3, [r7]                                 |     __asm ("strd r2, r3, [r7]");
    0x0000df8a sub.w sp, sp, r0                                  |     
    0x0000df8e add.w fp, sp, 0x28                                |     
    0x0000df92 mov r0, fp                                        |     r0 = fp;
    0x0000df94 blx 0x35b4                                        |     strdup (r0);
    0x0000df96 add.w r5, lr, r8, lsr 17                          |     r5 = lr + (r8 >> 17);
    0x0000df9a ldrd r2, r3, [r7]                                 |     __asm ("ldrd r2, r3, [r7]");
    0x0000df9e mov r1, r0                                        |     r1 = r0;
                                                                 |     if (r0 > 9) {
    0x0000dfa0 bhi 0xdfa8                                        |         goto label_27;
                                                                 |     }
    0x0000dfa2 b 0xdfb6                                          |     goto label_4;
                                                                 |     do {
    0x0000dfa4 cmp fp, r1                                        |         
                                                                 |         if (fp == r1) {
    0x0000dfa6 beq 0xe096                                        |             goto label_28;
                                                                 |         }
                                                                 | label_27:
    0x0000dfa8 ldrb ip, [r1, -0x1]                               |         ip = *((r1 - 0x1));
    0x0000dfac mov r0, r1                                        |         r0 = r1;
    0x0000dfae subs r1, 1                                        |         r1--;
    0x0000dfb0 cmp.w ip, 0x2f                                    |         
    0x0000dfb4 beq 0xdfa4                                        |         
                                                                 |     } while (ip == 0x2f);
                                                                 | label_4:
    0x0000dfb6 cmp r2, 0x2f                                      |     
    0x0000dfb8 mov r1, r4                                        |     r1 = r4;
    0x0000dfba it ne                                             |     
                                                                 |     if (r2 == 0x2f) {
    0x0000dfbc movne r2, 0x2f                                    |         r2 = 0x2f;
                                                                 |     }
    0x0000dfbe mov r4, fp                                        |     r4 = fp;
    0x0000dfc0 it ne                                             |     
                                                                 |     if (r2 == 0x2f) {
    0x0000dfc2 strbne r2, [r0], 1                                |         *(r0) = r2;
                                                                 |         r0++;
                                                                 |     }
    0x0000dfc6 adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x0000dfc8 blx 0x3578                                        |     mmap64 ()
    0x0000dfcc b 0xdeb4                                          |     goto label_2;
                                                                 | label_13:
    0x0000dfce ldr r1, [pc, 0x1d0]                               |     
    0x0000dfd0 movw r2, 0x7b4                                    |     r2 = 0x7b4;
    0x0000dfd4 ldr r3, [pc, 0x1cc]                               |     
    0x0000dfd6 mvn r4, 0x15                                      |     r4 = ~0x15;
    0x0000dfda ldr r0, [pc, 0x1cc]                               |     
    0x0000dfdc add r1, pc                                        |     r1 = 0x1c182;
    0x0000dfde add r3, pc                                        |     r3 = 0x1c186;
    0x0000dfe0 adds r1, 7                                        |     r1 += 7;
    0x0000dfe2 add r0, pc                                        |     r0 = "../git/src/libsystemd/sd-device/device-enumerator.c";
    0x0000dfe4 bl 0x167c8                                        |     fcn_000167c8 ("../git/src/libsystemd/sd-device/device-enumerator.c", r1, r2, r3);
    0x0000dfe8 ldr.w sb, [r7, 0xc]                               |     sb = var_ch;
    0x0000dfec b 0xde50                                          |     goto label_0;
                                                                 | label_14:
    0x0000dfee ldr r1, [pc, 0x1bc]                               |     
    0x0000dff0 movw r2, 0x7b5                                    |     r2 = 0x7b5;
    0x0000dff4 ldr r3, [pc, 0x1b8]                               |     
    0x0000dff6 mvn r4, 0x15                                      |     r4 = ~0x15;
    0x0000dffa ldr r0, [pc, 0x1b8]                               |     
    0x0000dffc add r1, pc                                        |     r1 = 0x1c1ae;
    0x0000dffe add r3, pc                                        |     r3 = 0x1c1b2;
    0x0000e000 adds r1, 7                                        |     r1 += 7;
    0x0000e002 add r0, pc                                        |     r0 = 0x1c1bc;
    0x0000e004 bl 0x167c8                                        |     fcn_000167c8 (r0, r1, r2, r3);
    0x0000e008 ldr.w sb, [r7, 0xc]                               |     sb = var_ch;
    0x0000e00c b 0xde50                                          |     goto label_0;
                                                                 | label_25:
    0x0000e00e mov.w sl, 0                                       |     sl = 0;
    0x0000e012 str.w sl, [r7, 0x14]                              |     __asm ("str.w sl, [var_14h_2]");
    0x0000e016 bl 0x15ca8                                        |     r0 = fcn_00015ca8 ();
    0x0000e01a cmp r0, 6                                         |     
                                                                 |     if (r0 > 6) {
    0x0000e01c bgt 0xe09a                                        |         goto label_29;
                                                                 |     }
    0x0000e01e mov r0, sl                                        |     r0 = sl;
                                                                 | label_5:
    0x0000e020 ldr r3, [r7, 0xc]                                 |     r3 = var_ch;
    0x0000e022 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x0000e026 beq.w 0xe130                                      |         goto label_30;
                                                                 |     }
    0x0000e02a ldr r5, [pc, 0x18c]                               |     
    0x0000e02c ldr r2, [pc, 0x18c]                               |     
    0x0000e02e ldr.w ip, [pc, 0x190]                             |     
    0x0000e032 ldr r1, [pc, 0x190]                               |     
    0x0000e034 add r5, pc                                        |     r5 = 0x1c1f2;
    0x0000e036 add r2, pc                                        |     r2 = 0x1c1f6;
    0x0000e038 str r5, [sp, 0x14]                                |     var_14h = r5;
    0x0000e03a add ip, pc                                        |     ip = 0x1c200;
    0x0000e03c movs r5, 0                                        |     r5 = 0;
    0x0000e03e add r1, pc                                        |     r1 = 0x1c208;
    0x0000e040 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x0000e042 str r0, [sp, 8]                                   |     var_8h = r0;
    0x0000e044 movw r3, 0x7fa                                    |     r3 = 0x7fa;
    0x0000e048 str r1, [sp]                                      |     *(sp) = r1;
    0x0000e04a adds r2, 7                                        |     r2 += 7;
    0x0000e04c mov r1, r4                                        |     r1 = r4;
    0x0000e04e movs r0, 7                                        |     r0 = 7;
    0x0000e050 str.w sb, [sp, 4]                                 |     __asm ("str.w sb, [var_4h]");
    0x0000e054 str r6, [sp, 0x18]                                |     var_18h = r6;
    0x0000e056 str.w ip, [sp, 0x20]                              |     __asm ("str.w ip, [var_20h]");
    0x0000e05a strd r5, r5, [sp, 0xc]                            |     __asm ("strd r5, r5, [var_ch_2]");
    0x0000e05e bl 0x16964                                        |     fcn_00016964 (r0, r1, r2, r3, r4, r5, r6);
                                                                 |     do {
                                                                 | label_6:
    0x0000e062 ldr.w sb, [r7, 0xc]                               |         sb = var_ch;
    0x0000e066 b 0xde50                                          |         goto label_0;
                                                                 | label_22:
    0x0000e068 ldr r3, [pc, 0x15c]                               |         
    0x0000e06a add.w ip, r7, 0x84                                |         
    0x0000e06e add r3, pc                                        |         r3 = 0x1c23a;
    0x0000e070 adds r3, 0x10                                     |         r3 += 0x10;
    0x0000e072 ldm r3, {r0, r1, r2, r3}                          |         r0 = *(r3);
                                                                 |         r1 = *((r3 + 4));
                                                                 |         r2 = *((r3 + 8));
                                                                 |         r3 = *((r3 + 12));
    0x0000e074 stm.w ip, {r0, r1, r2, r3}                        |         *(ip) = r0;
                                                                 |         *((ip + 4)) = r1;
                                                                 |         *((ip + 8)) = r2;
                                                                 |         *((ip + 12)) = r3;
    0x0000e078 mov r0, ip                                        |         r0 = ip;
    0x0000e07a mov r1, r6                                        |         r1 = r6;
    0x0000e07c bl 0x1a0bc                                        |         r0 = fcn_0001a0bc (r0, r1);
    0x0000e080 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000e082 beq 0xe114                                        |             goto label_31;
                                                                 |         }
    0x0000e084 mov r0, r4                                        |         r0 = r4;
    0x0000e086 add.w r1, r7, 0xc                                 |         r1 += var_ch;
    0x0000e08a bl 0x11f1c                                        |         r0 = fcn_00011f1c (r0, r1);
    0x0000e08e subs r4, r0, 0                                    |         r4 = r0 - 0;
    0x0000e090 blt 0xe062                                        |         
                                                                 |     } while (r4 < r0);
                                                                 | label_24:
    0x0000e092 ldr r2, [r7, 0xc]                                 |     r2 = var_ch;
    0x0000e094 b 0xdf40                                          |     goto label_3;
                                                                 | label_28:
    0x0000e096 mov r0, fp                                        |     r0 = fp;
    0x0000e098 b 0xdfb6                                          |     goto label_4;
                                                                 | label_29:
    0x0000e09a add.w r1, r7, 0x14                                |     r1 += var_14h_2;
    0x0000e09e mov r0, r5                                        |     r0 = r5;
    0x0000e0a0 bl 0xba14                                         |     fcn_0000ba14 (r0, r1);
    0x0000e0a4 ldr r0, [r7, 0x14]                                |     r0 = var_14h_2;
    0x0000e0a6 mov sb, r0                                        |     sb = r0;
    0x0000e0a8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000e0aa beq 0xe020                                        |         goto label_5;
                                                                 |     }
    0x0000e0ac ldr.w sb, [pc, 0x11c]                             |     
    0x0000e0b0 add sb, pc                                        |     sb = 0x1c280;
    0x0000e0b2 invalid                                           |     
                                                                 | label_21:
    0x0000e0b4 blx 0x3828                                        |     fcn_00003828 ();
    0x0000e0b8 movs r2, 0                                        |     r2 = 0;
    0x0000e0ba ldr r4, [r0]                                      |     r4 = *(r0);
    0x0000e0bc mov r1, r6                                        |     r1 = r6;
    0x0000e0be mov r0, r5                                        |     r0 = r5;
    0x0000e0c0 bl 0xa20c                                         |     r0 = fcn_0000a20c (r0, r1, r2);
    0x0000e0c4 subs.w r8, r0, 0                                  |     r8 = r0 - 0;
    0x0000e0c8 rsb.w r4, r4, 0                                   |     r4 -= ;
                                                                 |     if (r8 >= r0) {
    0x0000e0cc bge 0xe062                                        |         goto label_6;
                                                                 |     }
    0x0000e0ce mov.w sl, 0                                       |     sl = 0;
    0x0000e0d2 str.w sl, [r7, 0x14]                              |     __asm ("str.w sl, [var_14h_2]");
    0x0000e0d6 bl 0x15ca8                                        |     r0 = fcn_00015ca8 ();
    0x0000e0da cmp r0, 6                                         |     
    0x0000e0dc it le                                             |     
                                                                 |     if (r0 > 6) {
    0x0000e0de movle r3, sl                                      |         r3 = sl;
                                                                 |     }
    0x0000e0e0 bgt 0xe170                                        |     
                                                                 |     while (r3 == 0) {
                                                                 | label_8:
    0x0000e0e2 ldr r5, [pc, 0xec]                                |         
    0x0000e0e4 mov r1, r8                                        |         r1 = r8;
    0x0000e0e6 ldr r2, [pc, 0xec]                                |         
    0x0000e0e8 ldr r0, [pc, 0xec]                                |         
    0x0000e0ea add r5, pc                                        |         r5 = 0x1c2c0;
    0x0000e0ec str.w sb, [sp, 4]                                 |         __asm ("str.w sb, [var_4h]");
    0x0000e0f0 str r5, [sp, 0x14]                                |         var_14h = r5;
    0x0000e0f2 add r2, pc                                        |         r2 = 0x1c2cc;
    0x0000e0f4 add r0, pc                                        |         r0 = 0x1c2d0;
    0x0000e0f6 movs r5, 0                                        |         r5 = 0;
    0x0000e0f8 str r3, [sp, 8]                                   |         var_8h = r3;
    0x0000e0fa adds r2, 7                                        |         r2 += 7;
    0x0000e0fc str r0, [sp]                                      |         *(sp) = r0;
    0x0000e0fe movw r3, 0x7d4                                    |         r3 = 0x7d4;
    0x0000e102 movs r0, 7                                        |         r0 = 7;
    0x0000e104 str r6, [sp, 0x18]                                |         var_18h = r6;
    0x0000e106 strd r5, r5, [sp, 0xc]                            |         __asm ("strd r5, r5, [var_ch_2]");
    0x0000e10a bl 0x16964                                        |         fcn_00016964 (r0, r1, r2, r3, r4, r5, r6);
    0x0000e10e ldr.w sb, [r7, 0xc]                               |         sb = var_ch;
    0x0000e112 b 0xde50                                          |         goto label_0;
                                                                 | label_31:
    0x0000e114 mvn r4, 0x15                                      |         r4 = ~0x15;
    0x0000e118 b 0xe062                                          |         goto label_6;
                                                                 | label_26:
    0x0000e11a ldr r1, [pc, 0xc0]                                |         
    0x0000e11c movw r2, 0x7cb                                    |         r2 = 0x7cb;
    0x0000e120 ldr r3, [pc, 0xbc]                                |         
    0x0000e122 ldr r0, [pc, 0xc0]                                |         
    0x0000e124 add r1, pc                                        |         r1 = 0x1c306;
    0x0000e126 add r3, pc                                        |         r3 = 0x1c30a;
    0x0000e128 adds r1, 7                                        |         r1 += 7;
    0x0000e12a add r0, pc                                        |         r0 = "/run/udev/tags/";
    0x0000e12c bl 0x16594                                        |         fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_30:
    0x0000e130 ldr r2, [pc, 0xb4]                                |         
    0x0000e132 mov r1, r4                                        |         r1 = r4;
    0x0000e134 str r3, [sp, 0x1c]                                |         var_1ch = r3;
    0x0000e136 mov r4, r8                                        |         r4 = r8;
    0x0000e138 ldr r3, [pc, 0xb0]                                |         
    0x0000e13a add r2, pc                                        |         r2 = 0x1c326;
    0x0000e13c ldr r5, [pc, 0xb0]                                |         
    0x0000e13e str r2, [sp]                                      |         *(sp) = r2;
    0x0000e140 ldr r2, [pc, 0xb0]                                |         
    0x0000e142 add r3, pc                                        |         r3 = 0x1c332;
    0x0000e144 add r5, pc                                        |         r5 = 0x1c338;
    0x0000e146 str r0, [sp, 8]                                   |         var_8h = r0;
    0x0000e148 movs r0, 7                                        |         r0 = 7;
    0x0000e14a str r3, [sp, 0x14]                                |         var_14h = r3;
    0x0000e14c add r2, pc                                        |         r2 = 0x1c344;
    0x0000e14e movw r3, 0x7fa                                    |         r3 = 0x7fa;
    0x0000e152 add r2, r0                                        |         r2 += r0;
    0x0000e154 str.w sb, [sp, 4]                                 |         __asm ("str.w sb, [var_4h]");
    0x0000e158 str r6, [sp, 0x18]                                |         var_18h = r6;
    0x0000e15a strd r8, r8, [sp, 0xc]                            |         __asm ("strd r8, r8, [var_ch_2]");
    0x0000e15e str r5, [sp, 0x20]                                |         var_20h = r5;
    0x0000e160 bl 0x16964                                        |         fcn_00016964 (r0, r1, r2, r3, r4, r5, r6);
    0x0000e164 b 0xe062                                          |         goto label_6;
                                                                 | label_16:
    0x0000e166 mvn r4, 1                                         |         r4 = ~1;
    0x0000e16a b 0xde50                                          |         goto label_0;
                                                                 | label_19:
    0x0000e16c mov r4, r6                                        |         r4 = r6;
    0x0000e16e b 0xdea6                                          |         goto label_7;
    0x0000e170 add.w r1, r7, 0x14                                |         r1 += var_14h_2;
    0x0000e174 mov r0, r5                                        |         r0 = r5;
    0x0000e176 bl 0xba14                                         |         fcn_0000ba14 (r0, r1);
    0x0000e17a ldr r3, [r7, 0x14]                                |         r3 = var_14h_2;
    0x0000e17c mov sb, r3                                        |         sb = r3;
    0x0000e17e cmp r3, 0                                         |         
    0x0000e180 beq 0xe0e2                                        |         
                                                                 |     }
    0x0000e182 ldr.w sb, [pc, 0x74]                              |     
    0x0000e186 add sb, pc                                        |     sb = 0x1c384;
    0x0000e188 b 0xe0e2                                          |     goto label_8;
                                                                 | label_18:
    0x0000e18a blx 0x35d0                                        |     fcn_000035d0 ();
    0x0000e18e nop                                               |     
    0x0000e190 subs r7, 0x50                                     |     r7 -= 0x50;
    0x0000e192 movs r2, r0                                       |     r2 = r0;
    0x0000e194 lsls r4, r5, 9                                    |     r4 = r5 << 9;
    0x0000e196 movs r0, r0                                       |     
    0x0000e198 subs r6, 0xfa                                     |     r6 -= 0xfa;
    0x0000e19a movs r2, r0                                       |     r2 = r0;
    0x0000e19c ldc2l p0, c0, [ip, -0]!                           |     __asm ("ldc2l p0, c0, [ip, -0]!");
    0x0000e1a0 vst1.8 {d0[0]}, [r4], r0                          |     __asm ("vst1.8 {d0[0]}, [r4], r0");
    0x0000e1a4 lsls r6, r6, 0x1a                                 |     r6 <<= 0x1a;
    0x0000e1a6 movs r1, r0                                       |     r1 = r0;
    0x0000e1a8 bfi r0, r2, 0, 1                                  |     value_0 = BIT_MASK (0, 1);
                                                                 |     value_1 = r2 & value_0;
                                                                 |     value_0 = ~value_0;
                                                                 |     r0 &= value_0;
                                                                 |     r0 |= value_1;
    0x0000e1ac vld4.8 {d16, d17, d18, d19}, [r4], r0             |     __asm ("vld4.8 {d16, d17, d18, d19}, [r4], r0");
    0x0000e1b0 lsls r6, r2, 0x1a                                 |     r6 = r2 << 0x1a;
    0x0000e1b2 movs r1, r0                                       |     r1 = r0;
    0x0000e1b4 b 0xe754                                          |     
                                                                 |     while (r0 != 0) {
    0x0000e70e ldr.w ip, [r7]                                    |         ip = *(r7);
    0x0000e712 ldr r3, [r7, 4]                                   |         r3 = *((r7 + 4));
    0x0000e714 orrs.w r3, ip, r3                                 |         r3 = ip | r3;
                                                                 |         if (r3 != ip) {
    0x0000e718 bne.w 0xe824                                      |             goto label_32;
                                                                 |         }
                                                                 | label_9:
    0x0000e71c mov r1, r7                                        |         r1 = r7;
    0x0000e71e movs r2, 0x2a                                     |         r2 = 0x2a;
    0x0000e720 mov r0, fp                                        |         r0 = fp;
    0x0000e722 add.w r4, sl, sb                                  |         r4 = sl + sb;
    0x0000e726 bl 0xe548                                         |         r0 = fcn_0000e548 (r0, r1, r2);
    0x0000e72a mov r1, r0                                        |         r1 = r0;
                                                                 |         if (r0 != 0) {
    0x0000e72c cbz r0, 0xe764                                    |             
    0x0000e72e ldr.w r3, [r6, 0x804]                             |             r3 = *((r6 + 0x804));
    0x0000e732 adds r0, r3, 1                                    |             r0 = r3 + 1;
    0x0000e734 cmp.w r0, 0x800                                   |             
    0x0000e738 it lo                                             |             
                                                                 |             if (r0 >= 0x800) {
    0x0000e73a strblo r2, [r6, r3]                               |                 *((r6 + r3)) = r2;
                                                                 |             }
    0x0000e73c mov r3, r6                                        |             r3 = r6;
    0x0000e73e it lo                                             |             
                                                                 |             if (r0 >= 0x800) {
    0x0000e740 strlo r0, [r6, 0x804]                             |                 *((r6 + 0x804)) = r0;
                                                                 |             }
    0x0000e744 movs r2, 0                                        |             r2 = 0;
    0x0000e746 mov r0, r8                                        |             r0 = r8;
    0x0000e748 str r4, [sp]                                      |             *(sp) = r4;
    0x0000e74a bl 0xe594                                         |             r0 = fcn_0000e594 (r0, r1, r2, r3, r4, r5, r6);
    0x0000e74e cmp r0, 0                                         |             
                                                                 |             if (r0 < 0) {
    0x0000e750 blt 0xe806                                        |                 goto label_11;
                                                                 |             }
    0x0000e752 ldr.w r3, [r6, 0x804]                             |             r3 = *((r6 + 0x804));
    0x0000e754 subs r0, 4                                        |             r0 -= 4;
    0x0000e756 cmp r3, 0                                         |             
                                                                 |             if (r3 == 0) {
    0x0000e758 beq 0xe856                                        |                 goto label_33;
                                                                 |             }
    0x0000e75a ldr.w fp, [r8, 0x70]                              |             fp = *((r8 + 0x70));
    0x0000e75e subs r3, 1                                        |             r3--;
    0x0000e760 str.w r3, [r6, 0x804]                             |             __asm ("str.w r3, [r6, 0x804]");
                                                                 |         }
    0x0000e764 mov r1, r7                                        |         r1 = r7;
    0x0000e766 movs r2, 0x3f                                     |         r2 = 0x3f;
    0x0000e768 mov r0, fp                                        |         r0 = fp;
    0x0000e76a bl 0xe548                                         |         r0 = fcn_0000e548 (r0, r1, r2);
    0x0000e76e mov r1, r0                                        |         r1 = r0;
                                                                 |         if (r0 != 0) {
    0x0000e770 cbz r0, 0xe7a8                                    |             
    0x0000e772 ldr.w r3, [r6, 0x804]                             |             r3 = *((r6 + 0x804));
    0x0000e776 adds r0, r3, 1                                    |             r0 = r3 + 1;
    0x0000e778 cmp.w r0, 0x800                                   |             
    0x0000e77c it lo                                             |             
                                                                 |             if (r0 >= 0x800) {
    0x0000e77e strblo r2, [r6, r3]                               |                 *((r6 + r3)) = r2;
                                                                 |             }
    0x0000e780 mov r3, r6                                        |             r3 = r6;
    0x0000e782 it lo                                             |             
                                                                 |             if (r0 >= 0x800) {
    0x0000e784 strlo r0, [r6, 0x804]                             |                 *((r6 + 0x804)) = r0;
                                                                 |             }
    0x0000e788 movs r2, 0                                        |             r2 = 0;
    0x0000e78a mov r0, r8                                        |             r0 = r8;
    0x0000e78c str r4, [sp]                                      |             *(sp) = r4;
    0x0000e78e bl 0xe594                                         |             r0 = fcn_0000e594 (r0, r1, r2, r3, r4, r5, r6);
    0x0000e792 cmp r0, 0                                         |             
                                                                 |             if (r0 < 0) {
    0x0000e794 blt 0xe806                                        |                 goto label_11;
                                                                 |             }
    0x0000e796 ldr.w r3, [r6, 0x804]                             |             r3 = *((r6 + 0x804));
    0x0000e79a cmp r3, 0                                         |             
                                                                 |             if (r3 == 0) {
    0x0000e79c beq 0xe856                                        |                 goto label_33;
                                                                 |             }
    0x0000e79e ldr.w fp, [r8, 0x70]                              |             fp = *((r8 + 0x70));
    0x0000e7a2 subs r3, 1                                        |             r3--;
    0x0000e7a4 str.w r3, [r6, 0x804]                             |             __asm ("str.w r3, [r6, 0x804]");
                                                                 |         }
    0x0000e7a8 mov r1, r7                                        |         r1 = r7;
    0x0000e7aa mov r0, fp                                        |         r0 = fp;
    0x0000e7ac movs r2, 0x5b                                     |         r2 = 0x5b;
    0x0000e7ae bl 0xe548                                         |         r0 = fcn_0000e548 (r0, r1, r2);
    0x0000e7b2 mov r1, r0                                        |         r1 = r0;
                                                                 |         if (r0 != 0) {
    0x0000e7b4 cbz r0, 0xe7e8                                    |             
    0x0000e7b6 ldr.w r3, [r6, 0x804]                             |             r3 = *((r6 + 0x804));
    0x0000e7ba adds r0, r3, 1                                    |             r0 = r3 + 1;
    0x0000e7bc cmp.w r0, 0x800                                   |             
    0x0000e7c0 it lo                                             |             
                                                                 |             if (r0 >= 0x800) {
    0x0000e7c2 strblo r2, [r6, r3]                               |                 *((r6 + r3)) = r2;
                                                                 |             }
    0x0000e7c4 mov r3, r6                                        |             r3 = r6;
    0x0000e7c6 it lo                                             |             
                                                                 |             if (r0 >= 0x800) {
    0x0000e7c8 strlo r0, [r6, 0x804]                             |                 *((r6 + 0x804)) = r0;
                                                                 |             }
    0x0000e7cc movs r2, 0                                        |             r2 = 0;
    0x0000e7ce mov r0, r8                                        |             r0 = r8;
    0x0000e7d0 str r4, [sp]                                      |             *(sp) = r4;
    0x0000e7d2 bl 0xe594                                         |             r0 = fcn_0000e594 (r0, r1, r2, r3, r4, r5, r6);
    0x0000e7d6 cmp r0, 0                                         |             
                                                                 |             if (r0 < 0) {
    0x0000e7d8 blt 0xe806                                        |                 goto label_11;
                                                                 |             }
    0x0000e7da ldr.w r3, [r6, 0x804]                             |             r3 = *((r6 + 0x804));
    0x0000e7de cmp r3, 0                                         |             
                                                                 |             if (r3 == 0) {
    0x0000e7e0 beq 0xe856                                        |                 goto label_33;
                                                                 |             }
    0x0000e7e2 subs r3, 1                                        |             r3--;
    0x0000e7e4 str.w r3, [r6, 0x804]                             |             __asm ("str.w r3, [r6, 0x804]");
                                                                 |         }
    0x0000e7e8 ldrb r2, [r4]                                     |         r2 = *(r4);
    0x0000e7ea cmp r2, 0                                         |         
                                                                 |         if (r2 == 0) {
    0x0000e7ec beq 0xe87c                                        |             goto label_34;
                                                                 |         }
    0x0000e7ee ldr.w fp, [r8, 0x70]                              |         fp = *((r8 + 0x70));
    0x0000e7f2 mov r1, r7                                        |         r1 = r7;
    0x0000e7f4 add.w sb, sb, 1                                   |         sb++;
    0x0000e7f8 mov r0, fp                                        |         r0 = fp;
    0x0000e7fa bl 0xe548                                         |         r0 = fcn_0000e548 (r0, r1, r2);
    0x0000e7fe mov r7, r0                                        |         r7 = r0;
    0x0000e800 cmp r0, 0                                         |         
    0x0000e802 bne 0xe70e                                        |         
                                                                 |     }
                                                                 | label_10:
    0x0000e804 movs r0, 0                                        |     r0 = 0;
                                                                 | label_11:
    0x0000e806 ldr r2, [pc, 0xc8]                                |     
    0x0000e808 ldr r3, [pc, 0xc0]                                |     r3 = *(0xe8cc);
    0x0000e80a add r2, pc                                        |     r2 = 0x1d0e0;
    0x0000e80c ldr r3, [r2, r3]                                  |     r3 = *(0x1d0e0);
    0x0000e80e ldr r2, [r3]                                      |     r2 = *(0x1d0e0);
    0x0000e810 ldr.w r3, [sp, 0x814]                             |     r3 = *(arg_814h);
    0x0000e814 eors r2, r3                                       |     r2 ^= r3;
    0x0000e816 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x0000e81a bne 0xe8c2                                        |         goto label_35;
                                                                 |     }
    0x0000e81c addw sp, sp, 0x81c                                |     __asm ("addw sp, sp, 0x81c");
    0x0000e820 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_32:
    0x0000e824 ldrb.w r4, [fp, ip]                               |     r4 = *((fp + ip));
    0x0000e828 add ip, fp                                        |     
    0x0000e82a cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x0000e82c beq.w 0xe71c                                      |         goto label_9;
                                                                 |     }
    0x0000e830 add.w r5, sl, sb                                  |     r5 = sl + sb;
    0x0000e834 movs r2, 0                                        |     r2 = 0;
    0x0000e836 b 0xe840                                          |     
                                                                 |     while (r3 == r4) {
    0x0000e838 ldrb r4, [ip, 1]!                                 |         r4 = *((ip += 1));
    0x0000e83c adds r2, 1                                        |         r2++;
                                                                 |         if (r4 == 0) {
    0x0000e83e cbz r4, 0xe878                                    |             goto label_36;
                                                                 |         }
    0x0000e840 cmp r4, 0x3f                                      |         
                                                                 |         if (r4 == 0x3f) {
    0x0000e842 beq 0xe86a                                        |             goto label_37;
                                                                 |         }
    0x0000e844 cmp r4, 0x5b                                      |         
                                                                 |         if (r4 == 0x5b) {
    0x0000e846 beq 0xe86a                                        |             goto label_37;
                                                                 |         }
    0x0000e848 cmp r4, 0x2a                                      |         
                                                                 |         if (r4 == 0x2a) {
    0x0000e84a beq 0xe86a                                        |             goto label_37;
                                                                 |         }
    0x0000e84c ldrb r3, [r5]                                     |         r3 = *(r5);
    0x0000e84e adds r5, 1                                        |         r5++;
    0x0000e850 cmp r3, r4                                        |         
    0x0000e852 beq 0xe838                                        |         
                                                                 |     }
    0x0000e854 b 0xe804                                          |     goto label_10;
                                                                 | label_33:
    0x0000e856 ldr r1, [pc, 0x7c]                                |     
    0x0000e858 movs r2, 0x3a                                     |     r2 = 0x3a;
    0x0000e85a ldr r3, [pc, 0x7c]                                |     
    0x0000e85c ldr r0, [pc, 0x7c]                                |     
    0x0000e85e add r1, pc                                        |     r1 = 0x1d138;
    0x0000e860 add r3, pc                                        |     r3 = 0x1d13e;
    0x0000e862 adds r1, 7                                        |     r1 += 7;
    0x0000e864 add r0, pc                                        |     r0 = 0x1d144;
    0x0000e866 bl 0x16594                                        |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_37:
    0x0000e86a mov r3, r6                                        |     r3 = r6;
    0x0000e86c mov r1, r7                                        |     r1 = r7;
    0x0000e86e mov r0, r8                                        |     r0 = r8;
    0x0000e870 str r5, [sp]                                      |     *(sp) = r5;
    0x0000e872 bl 0xe594                                         |     fcn_0000e594 (r0, r1, r2, r3, r4, r5, r6);
    0x0000e876 b 0xe806                                          |     goto label_11;
                                                                 | label_36:
    0x0000e878 add sb, r2                                        |     sb += r2;
    0x0000e87a b 0xe71c                                          |     goto label_9;
                                                                 | label_34:
    0x0000e87c ldr r3, [r7, 0x10]                                |     r3 = *((r7 + 0x10));
    0x0000e87e ldr r1, [r7, 0x14]                                |     r1 = *((r7 + 0x14));
    0x0000e880 orrs r3, r1                                       |     r3 |= r1;
                                                                 |     if (r3 == r1) {
    0x0000e882 beq 0xe804                                        |         goto label_10;
                                                                 |     }
    0x0000e884 mov r5, r2                                        |     r5 = r2;
    0x0000e886 mov r4, r2                                        |     r4 = r2;
    0x0000e888 b 0xe89a                                          |     goto label_38;
                                                                 | label_12:
    0x0000e88a ldr r1, [r7, 0x10]                                |     r1 = *((r7 + 0x10));
    0x0000e88c adds r5, 1                                        |     r5++;
    0x0000e88e ldr r3, [r7, 0x14]                                |     r3 = *((r7 + 0x14));
    0x0000e890 mov r2, r5                                        |     r2 = r5;
    0x0000e892 cmp r5, r1                                        |     
    0x0000e894 sbcs.w r3, r4, r3                                 |     __asm ("sbcs.w r3, r4, r3");
                                                                 |     if (r5 >= r1) {
    0x0000e898 bhs 0xe804                                        |         goto label_10;
                                                                 |     }
                                                                 | label_38:
    0x0000e89a ldr.w r6, [r8, 0x70]                              |     r6 = *((r8 + 0x70));
    0x0000e89e mov r0, r8                                        |     r0 = r8;
    0x0000e8a0 ldrb.w ip, [r7, 8]                                |     ip = *((r7 + 8));
    0x0000e8a4 ldr r3, [r6, 0x30]                                |     r3 = *((r6 + 0x30));
    0x0000e8a6 umull r1, r2, r3, r2                              |     r1:r2 = r3 * r2;
    0x0000e8aa ldr r3, [r6, 0x28]                                |     r3 = *((r6 + 0x28));
    0x0000e8ac ldr r2, [r6, 0x20]                                |     r2 = *((r6 + 0x20));
    0x0000e8ae umull r3, ip, r3, ip                              |     r3:ip = r3 * ip;
    0x0000e8b2 add r1, r2                                        |     r1 += r2;
    0x0000e8b4 add r1, r3                                        |     r1 += r3;
    0x0000e8b6 add r1, r7                                        |     r1 += r7;
    0x0000e8b8 bl 0xe490                                         |     fcn_0000e490 (r0, r1);
    0x0000e8ba stc2l p8, c2, [sl, 0]!                            |     __asm ("stc2l p8, c2, [sl, 0]!");
                                                                 |     if (r5 >= r1) {
    0x0000e8be bge 0xe88a                                        |         goto label_12;
                                                                 |     }
    0x0000e8c0 b 0xe806                                          |     goto label_11;
                                                                 | label_35:
    0x0000e8c2 blx 0x35d0                                        |     fcn_000035d0 ();
    0x0000e8c6 nop                                               |     
    0x0000e8c8 adds r6, 0x68                                     |     r6 += 0x68;
    0x0000e8ca movs r2, r0                                       |     r2 = r0;
    0x0000e8cc lsls r4, r5, 9                                    |     r4 = r5 << 9;
    0x0000e8ce movs r0, r0                                       |     
    0x0000e8d0 adds r5, 0x4a                                     |     r5 += 0x4a;
    0x0000e8d2 movs r2, r0                                       |     r2 = r0;
    0x0000e8d4 invalid                                           |     
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0xe1fc */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.0000e1fc ()                                      | void fcn_0000e1fc (int16_t arg_1h, uint32_t arg1, uint32_t arg2, int16_t arg3) {
                                                                 |     int16_t var_1h;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int32_t var_ch_2;
                                                                 |     int32_t var_ch_3;
                                                                 |     int16_t var_14h;
                                                                 |     int32_t var_18h;
                                                                 |     int32_t var_18h_2;
                                                                 |     char * src;
                                                                 |     int32_t var_4h_2;
                                                                 |     int16_t var_ch;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_14h_2;
                                                                 |     int16_t var_0h_2;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x0000e1fc svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x0000e200 mov r4, r2                                        |     r4 = r2;
    0x0000e202 ldr r2, [pc, 0x244]                               |     
    0x0000e204 sub sp, 0x3c                                      |     
    0x0000e206 add r7, sp, 0x20                                  |     r7 += src;
    0x0000e208 ldr r3, [pc, 0x240]                               |     r3 = *(0xe44c);
    0x0000e20a mov sb, r0                                        |     sb = r0;
    0x0000e20c add r2, pc                                        |     r2 = 0x1c65a;
    0x0000e20e ldr r3, [r2, r3]                                  |     
    0x0000e210 ldr r3, [r3]                                      |     r3 = *(0x1c65a);
    0x0000e212 str r3, [r7, 0x14]                                |     var_14h_2 = r3;
    0x0000e214 mov.w r3, 0                                       |     r3 = 0;
    0x0000e218 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000e21a beq.w 0xe3de                                      |         goto label_4;
                                                                 |     }
    0x0000e21e mov r5, r1                                        |     r5 = r1;
    0x0000e220 cmp r1, 0                                         |     
                                                                 |     if (arg_1h == ) {
    0x0000e222 beq.w 0xe3fc                                      |         goto label_5;
                                                                 |     }
    0x0000e226 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x0000e228 beq.w 0xe3d2                                      |         goto label_6;
                                                                 |     }
    0x0000e22c add.w r1, r7, 0xc                                 |     r1 += var_ch;
    0x0000e230 bl 0xb664                                         |     r0 = fcn_0000b664 (r0, r1);
    0x0000e234 subs r6, r0, 0                                    |     r6 = r0 - 0;
                                                                 |     if (r6 < r0) {
    0x0000e236 blt.w 0xe3b6                                      |         goto label_7;
                                                                 |     }
    0x0000e23a ldrb.w r8, [r5]                                   |     r8 = *(r5);
    0x0000e23e ldr.w sl, [r7, 0xc]                               |     sl = var_ch;
    0x0000e242 cmp.w r8, 0x2f                                    |     
                                                                 |     if (r8 != 0x2f) {
    0x0000e246 bne.w 0xe424                                      |         goto label_8;
                                                                 |     }
    0x0000e24a mov r3, r5                                        |     r3 = r5;
                                                                 |     do {
    0x0000e24c mov r6, r3                                        |         r6 = r3;
    0x0000e24e ldrb r2, [r3, 1]!                                 |         r2 = *((r3 += 1));
    0x0000e252 cmp r2, 0x2f                                      |         
    0x0000e254 beq 0xe24c                                        |         
                                                                 |     } while (r2 == 0x2f);
                                                                 | label_3:
    0x0000e256 cmp.w sl, 0                                       |     
                                                                 |     if (sl == 0) {
    0x0000e25a beq 0xe2ca                                        |         goto label_9;
                                                                 |     }
    0x0000e25c ldrb.w r3, [sl]                                   |     r3 = *(sl);
                                                                 |     if (r3 == 0) {
    0x0000e260 cbz r3, 0xe2ca                                    |         goto label_9;
                                                                 |     }
    0x0000e262 mov r0, sl                                        |     r0 = sl;
    0x0000e264 blx 0x37c8                                        |     fcn_000037c8 ();
    0x0000e268 str r0, [r7, 4]                                   |     var_4h_2 = r0;
    0x0000e26a mov r0, r6                                        |     r0 = r6;
    0x0000e26c blx 0x37c8                                        |     fcn_000037c8 ();
    0x0000e270 ldr r3, [r7, 4]                                   |     r3 = var_4h_2;
    0x0000e272 mov fp, r0                                        |     
    0x0000e274 add r3, r0                                        |     r3 += r0;
    0x0000e276 adds r2, r3, 2                                    |     r2 = r3 + 2;
    0x0000e278 cmp.w r2, 0x400000                                |     
                                                                 |     if (r2 > 0x400000) {
    0x0000e27c bhi.w 0xe428                                      |         goto label_10;
                                                                 |     }
    0x0000e280 adds r3, 9                                        |     r3 += 9;
    0x0000e282 mov r1, sl                                        |     r1 = sl;
    0x0000e284 bic r3, r3, 7                                     |     r3 = BIT_MASK (r3, 7);
    0x0000e288 sub.w sp, sp, r3                                  |     
    0x0000e28c add.w sl, sp, 0x20                                |     sl += src;
    0x0000e290 mov r0, sl                                        |     r0 = sl;
    0x0000e292 blx 0x35b4                                        |     r0 = strdup (r0);
    0x0000e296 cmp r0, sl                                        |     
    0x0000e298 mov r3, r0                                        |     r3 = r0;
                                                                 |     if (r0 > sl) {
    0x0000e29a bhi 0xe2a4                                        |         goto label_11;
                                                                 |     }
    0x0000e29c b 0xe2b0                                          |     goto label_2;
                                                                 |     do {
    0x0000e29e cmp r3, sl                                        |         
                                                                 |         if (r3 == sl) {
    0x0000e2a0 beq.w 0xe3da                                      |             goto label_12;
                                                                 |         }
                                                                 | label_11:
    0x0000e2a4 ldrb r2, [r3, -0x1]                               |         r2 = *((r3 - 0x1));
    0x0000e2a8 mov r0, r3                                        |         r0 = r3;
    0x0000e2aa subs r3, 1                                        |         r3--;
    0x0000e2ac cmp r2, 0x2f                                      |         
    0x0000e2ae beq 0xe29e                                        |         
                                                                 |     } while (r2 == 0x2f);
                                                                 | label_2:
    0x0000e2b0 cmp.w r8, 0x2f                                    |     
    0x0000e2b4 mov r1, r6                                        |     r1 = r6;
    0x0000e2b6 it ne                                             |     
                                                                 |     if (r8 == 0x2f) {
    0x0000e2b8 movne r3, 0x2f                                    |         r3 = 0x2f;
                                                                 |     }
    0x0000e2ba add.w r2, fp, 1                                   |     r2 += arg_1h;
    0x0000e2be it ne                                             |     
                                                                 |     if (r8 == 0x2f) {
    0x0000e2c0 strbne r3, [r0], 1                                |         *(r0) = r3;
                                                                 |         r0++;
                                                                 |     }
    0x0000e2c4 mov r6, sl                                        |     r6 = sl;
    0x0000e2c6 blx 0x3578                                        |     mmap64 ()
                                                                 | label_9:
    0x0000e2ca ldr.w r8, [pc, 0x184]                             |     
    0x0000e2ce mov r0, r4                                        |     r0 = r4;
    0x0000e2d0 blx 0x37c8                                        |     fcn_000037c8 ();
    0x0000e2d2 orns r6, sl, r2, lsl 18                           |     __asm ("orns r6, sl, r2, lsl 18");
    0x0000e2d6 add.w fp, r4, r0                                  |     
    0x0000e2da add r8, pc                                        |     r8 = 0x1c730;
    0x0000e2dc cmp.w sl, 0                                       |     
                                                                 |     if (sl == 0) {
    0x0000e2e0 beq 0xe2fa                                        |         goto label_13;
                                                                 |     }
                                                                 |     do {
    0x0000e2e2 ldrb r1, [fp, -0x1]!                              |         r1 = *((fp -= 0x1));
    0x0000e2e6 mov r0, r8                                        |         r0 = r8;
    0x0000e2e8 blx 0x37d4                                        |         fcn_000037d4 ();
    0x0000e2ec add.w r3, sl, -1                                  |         r3 = sl + -1;
                                                                 |         if (r0 == 0) {
    0x0000e2f0 cbz r0, 0xe34e                                    |             goto label_14;
                                                                 |         }
    0x0000e2f2 mov sl, r3                                        |         sl = r3;
    0x0000e2f4 cmp.w sl, 0                                       |         
    0x0000e2f8 bne 0xe2e2                                        |         
                                                                 |     } while (sl != 0);
                                                                 |     do {
                                                                 | label_13:
    0x0000e2fa mov r0, r4                                        |         r0 = r4;
    0x0000e2fc mov r1, sl                                        |         r1 = sl;
    0x0000e2fe blx 0x3548                                        |         r0 = openat64_2 ();
    0x0000e302 mov r4, r0                                        |         r4 = r0;
    0x0000e304 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000e306 beq.w 0xe442                                      |             goto label_15;
                                                                 |         }
    0x0000e30a mov r0, r6                                        |         r0 = r6;
    0x0000e30c movs r3, 0                                        |         r3 = 0;
    0x0000e30e mov.w r2, 0x180                                   |         r2 = 0x180;
    0x0000e312 mov r1, r4                                        |         r1 = r4;
    0x0000e314 bl 0x10f00                                        |         r0 = fcn_00010f00 (r0, r1, r2, r3, r4);
    0x0000e318 subs r6, r0, 0                                    |         r6 = r0 - 0;
                                                                 |         if (r6 < r0) {
    0x0000e31a blt 0xe41a                                        |             goto label_16;
                                                                 |         }
    0x0000e31c ldr r1, [pc, 0x134]                               |         
    0x0000e31e mov r0, r5                                        |         r0 = r5;
    0x0000e320 add r1, pc                                        |         r1 = 0x1c778;
    0x0000e322 blx 0x3490                                        |         r0 = fcn_00003490 ();
    0x0000e326 mov r6, r0                                        |         r6 = r0;
                                                                 |         if (r0 != 0) {
    0x0000e328 cbnz r0, 0xe35c                                   |             goto label_17;
                                                                 |         }
                                                                 | label_0:
    0x0000e32a mov r0, r4                                        |         r0 = r4;
    0x0000e32c blx 0x3530                                        |         ferror (r0);
    0x0000e330 ldr r2, [pc, 0x124]                               |         
    0x0000e332 ldr r3, [pc, 0x118]                               |         r3 = *(0xe44e);
    0x0000e334 add r2, pc                                        |         r2 = 0x1c790;
    0x0000e336 ldr r3, [r2, r3]                                  |         r3 = *(0x1c790);
    0x0000e338 ldr r2, [r3]                                      |         r2 = *(0x1c790);
    0x0000e33a ldr r3, [r7, 0x14]                                |         r3 = var_14h_2;
    0x0000e33c eors r2, r3                                       |         r2 ^= r3;
    0x0000e33e mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000e342 bne 0xe43e                                        |             goto label_18;
                                                                 |         }
    0x0000e344 mov r0, r6                                        |         r0 = r6;
    0x0000e346 adds r7, 0x1c                                     |         r7 += 0x1c;
    0x0000e348 mov sp, r7                                        |         
    0x0000e34a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_14:
    0x0000e34e cmp.w sl, 0x1000                                  |         
    0x0000e352 bls 0xe2fa                                        |         
                                                                 |     } while (sl < 0x1000);
    0x0000e354 mov r4, r0                                        |     r4 = r0;
    0x0000e356 mvn r6, 0x15                                      |     r6 = ~0x15;
    0x0000e35a b 0xe32a                                          |     goto label_0;
                                                                 | label_17:
    0x0000e35c mov r2, r4                                        |     r2 = r4;
    0x0000e35e mov r1, r5                                        |     r1 = r5;
    0x0000e360 mov r0, sb                                        |     r0 = sb;
    0x0000e362 bl 0xa20c                                         |     r0 = fcn_0000a20c (r0, r1, r2);
    0x0000e366 subs r6, r0, 0                                    |     r6 = r0 - 0;
    0x0000e368 itt ge                                            |     
                                                                 |     if (r6 < r0) {
    0x0000e36a movge r4, 0                                       |         r4 = 0;
                                                                 |     }
                                                                 |     if (r6 >= r0) {
    0x0000e36c movge r6, r4                                      |         r6 = r4;
                                                                 |         goto label_19;
                                                                 |     }
                                                                 |     if (r6 >= r0) {
                                                                 | label_19:
    0x0000e36e bge 0xe32a                                        |         goto label_0;
                                                                 |     }
    0x0000e370 mov.w r8, 0                                       |     r8 = 0;
    0x0000e374 str.w r8, [r7, 0x10]                              |     __asm ("str.w r8, [var_10h]");
    0x0000e378 bl 0x15ca8                                        |     r0 = fcn_00015ca8 ();
    0x0000e37c cmp r0, 6                                         |     
    0x0000e37e it le                                             |     
                                                                 |     if (r0 > 6) {
    0x0000e380 movle r3, r8                                      |         r3 = r8;
                                                                 |     }
                                                                 |     if (r0 > 6) {
    0x0000e382 bgt 0xe3ba                                        |         goto label_20;
                                                                 |     }
                                                                 | label_1:
    0x0000e384 mov ip, r3                                        |     
                                                                 |     do {
    0x0000e386 str r3, [sp, 8]                                   |         var_8h = r3;
    0x0000e388 mov r1, r6                                        |         r1 = r6;
    0x0000e38a ldr r2, [pc, 0xd0]                                |         
    0x0000e38c movs r6, 0                                        |         r6 = 0;
    0x0000e38e ldr r0, [pc, 0xd0]                                |         
    0x0000e390 ldr r3, [pc, 0xd0]                                |         
    0x0000e392 add r2, pc                                        |         r2 = 0x1c7f4;
    0x0000e394 strd r5, r4, [sp, 0x18]                           |         __asm ("strd r5, r4, [var_18h]");
    0x0000e396 strb r6, [r0, r0]                                 |         *((r0 + r0)) = r6;
    0x0000e398 add r0, pc                                        |         r0 = 0x1c7fe;
    0x0000e39a adds r2, 7                                        |         r2 += 7;
    0x0000e39c add r3, pc                                        |         r3 = 0x1c804;
    0x0000e39e str r0, [sp, 0x14]                                |         var_14h = r0;
    0x0000e3a0 str r3, [sp]                                      |         *(sp) = r3;
    0x0000e3a2 movs r0, 7                                        |         r0 = 7;
    0x0000e3a4 mov.w r3, 0x840                                   |         r3 = 0x840;
    0x0000e3a8 str.w ip, [sp, 4]                                 |         __asm ("str.w ip, [var_4h]");
    0x0000e3ac strd r6, r6, [sp, 0xc]                            |         __asm ("strd r6, r6, [var_ch_2]");
    0x0000e3b0 bl 0x16964                                        |         fcn_00016964 (r0, r1, r2, r3, r4, r5, r6);
    0x0000e3b4 b 0xe32a                                          |         goto label_0;
                                                                 | label_7:
    0x0000e3b6 movs r4, 0                                        |         r4 = 0;
    0x0000e3b8 b 0xe32a                                          |         goto label_0;
                                                                 | label_20:
    0x0000e3ba add.w r1, r7, 0x10                                |         r1 += var_10h;
    0x0000e3be mov r0, sb                                        |         r0 = sb;
    0x0000e3c0 bl 0xba14                                         |         fcn_0000ba14 (r0, r1);
    0x0000e3c4 ldr r3, [r7, 0x10]                                |         r3 = var_10h;
    0x0000e3c6 ldr.w ip, [pc, 0xa0]                              |         
    0x0000e3ca add ip, pc                                        |         ip = 0x1c838;
    0x0000e3cc cmp r3, 0                                         |         
    0x0000e3ce bne 0xe386                                        |         
                                                                 |     } while (r3 != 0);
    0x0000e3d0 b 0xe384                                          |     goto label_1;
                                                                 | label_6:
    0x0000e3d2 mov r6, r4                                        |     r6 = r4;
    0x0000e3d4 bl 0xa0d0                                         |     fcn_0000a0d0 (r0, r1);
    0x0000e3d8 b 0xe32a                                          |     goto label_0;
                                                                 | label_12:
    0x0000e3da mov r0, sl                                        |     r0 = sl;
    0x0000e3dc b 0xe2b0                                          |     goto label_2;
                                                                 | label_4:
    0x0000e3de ldr r1, [pc, 0x8c]                                |     
    0x0000e3e0 movw r2, 0x814                                    |     r2 = 0x814;
    0x0000e3e4 ldr r3, [pc, 0x88]                                |     
    0x0000e3e6 mov r4, sb                                        |     r4 = sb;
    0x0000e3e8 ldr r0, [pc, 0x88]                                |     
    0x0000e3ea mvn r6, 0x15                                      |     r6 = ~0x15;
    0x0000e3ee add r1, pc                                        |     r1 = 0x1c860;
    0x0000e3f0 add r3, pc                                        |     r3 = 0x1c864;
    0x0000e3f2 adds r1, 7                                        |     r1 += 7;
    0x0000e3f4 add r0, pc                                        |     r0 = "sd_device_enumerator_unref";
    0x0000e3f6 bl 0x167c8                                        |     fcn_000167c8 ("sd_device_enumerator_unref", r1, r2, r3);
    0x0000e3fa b 0xe32a                                          |     goto label_0;
                                                                 | label_5:
    0x0000e3fc ldr r1, [pc, 0x78]                                |     
    0x0000e3fe movw r2, 0x815                                    |     r2 = 0x815;
    0x0000e402 ldr r3, [pc, 0x78]                                |     
    0x0000e404 mov r4, r5                                        |     r4 = r5;
    0x0000e406 ldr r0, [pc, 0x78]                                |     
    0x0000e408 mvn r6, 0x15                                      |     r6 = ~0x15;
    0x0000e40c add r1, pc                                        |     r1 = "sd_device_enumerator_new";
    0x0000e40e add r3, pc                                        |     r3 = 0x1c890;
    0x0000e410 adds r1, 7                                        |     r1 += 7;
    0x0000e412 add r0, pc                                        |     r0 = 0x1c898;
    0x0000e414 bl 0x167c8                                        |     fcn_000167c8 (r0, "sd_device_enumerator_new", r2, r3);
    0x0000e418 b 0xe32a                                          |     goto label_0;
                                                                 | label_16:
    0x0000e41a mov r1, r5                                        |     r1 = r5;
    0x0000e41c mov r0, sb                                        |     r0 = sb;
    0x0000e41e bl 0xa0d0                                         |     fcn_0000a0d0 (r0, r1);
    0x0000e422 b 0xe32a                                          |     goto label_0;
                                                                 | label_8:
    0x0000e424 mov r6, r5                                        |     r6 = r5;
    0x0000e426 b 0xe256                                          |     goto label_3;
                                                                 | label_10:
    0x0000e428 ldr r1, [pc, 0x58]                                |     
    0x0000e42a movw r2, 0x823                                    |     r2 = 0x823;
    0x0000e42e ldr r3, [pc, 0x58]                                |     
    0x0000e430 ldr r0, [pc, 0x58]                                |     
    0x0000e432 add r1, pc                                        |     r1 = 0x1c8ba;
    0x0000e434 add r3, pc                                        |     r3 = 0x1c8c2;
    0x0000e436 adds r1, 7                                        |     r1 += 7;
    0x0000e438 add r0, pc                                        |     r0 = "device_enumerator_dedup_devices";
    0x0000e43a bl 0x16594                                        |     r0 = fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_18:
    0x0000e43e blx 0x35d0                                        |     fcn_000035d0 ();
                                                                 | label_15:
    0x0000e442 mvn r6, 0xb                                       |     r6 = ~0xb;
    0x0000e446 b 0xe32a                                          |     goto label_0;
                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0xe594 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0000e594 ()                                  | void fcn_0000e594 (int16_t arg_38h, int16_t arg_28h, int16_t arg_80ch, int16_t arg_810h, int16_t arg_814h, int16_t arg1, int16_t arg2, int16_t arg4) {
                                                             |     int16_t var_ch;
                                                             |     int16_t var_0h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r3 = arg4;
    0x0000e594 push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x0000e598 mov sb, r3                                    |     sb = r3;
    0x0000e59a ldr r3, [r1]                                  |     r3 = *(r1);
    0x0000e59c sub sp, 0xc                                   |     
    0x0000e59e mov r7, r0                                    |     r7 = r0;
    0x0000e5a0 mov r6, r1                                    |     r6 = r1;
    0x0000e5a2 ldr r5, [r0, 0x70]                            |     r5 = *(arg_28hx70);
    0x0000e5a4 add r2, r3                                    |     r2 += r3;
    0x0000e5a6 ldr r4, [sp, 0x28]                            |     r4 = *(arg_28h);
    0x0000e5a8 add r5, r2                                    |     r5 += r2;
    0x0000e5aa mov r0, r5                                    |     r0 = r5;
    0x0000e5ac blx 0x37c8                                    |     fcn_000037c8 ();
    0x0000e5b0 ldr.w r3, [sb, 0x804]                         |     r3 = *((sb + 0x804));
    0x0000e5b4 mov r8, r0                                    |     r8 = r0;
    0x0000e5b6 adds r2, r0, r3                               |     r2 = r0 + r3;
    0x0000e5b8 cmp.w r2, 0x800                               |     
                                                             |     if (r2 < 0x800) {
    0x0000e5bc bhs 0xe5d4                                    |         
    0x0000e5be add.w r0, sb, r3                              |         r0 = sb + r3;
    0x0000e5c2 mov r1, r5                                    |         r1 = r5;
    0x0000e5c4 mov r2, r8                                    |         r2 = r8;
    0x0000e5c6 blx 0x3578                                    |         mmap64 ()
    0x0000e5ca ldr.w r3, [sb, 0x804]                         |         r3 = *((sb + 0x804));
    0x0000e5ce add r3, r8                                    |         r3 += r8;
    0x0000e5d0 str.w r3, [sb, 0x804]                         |         __asm ("str.w r3, [sb, 0x804]");
                                                             |     }
    0x0000e5d4 ldrb r2, [r6, 8]                              |     r2 = *((r6 + 8));
                                                             |     if (r2 == 0) {
    0x0000e5d6 cbz r2, 0xe630                                |         goto label_0;
                                                             |     }
    0x0000e5d8 movs r5, 0                                    |     r5 = 0;
                                                             |     do {
    0x0000e5da ldr r2, [r7, 0x70]                            |         r2 = *((r7 + 0x70));
    0x0000e5dc adds r1, r3, 1                                |         r1 = r3 + 1;
    0x0000e5de cmp.w r1, 0x800                               |         
    0x0000e5e2 ldr.w ip, [r2, 0x28]                          |         ip = *((r2 + 0x28));
    0x0000e5e6 ldr r0, [r2, 0x20]                            |         r0 = *((r2 + 0x20));
    0x0000e5e8 umull ip, lr, ip, r5                          |         ip:lr = ip * r5;
    0x0000e5ec add ip, r0                                    |         
    0x0000e5ee it lo                                         |         
                                                             |         if (r1 >= 0x800) {
    0x0000e5f0 ldrblo r2, [r6, ip]                           |             r2 = *((r6 + ip));
                                                             |         }
    0x0000e5f4 add.w r0, r6, ip                              |         r0 = r6 + ip;
    0x0000e5f8 itt lo                                        |         
                                                             |         if (r1 >= 0x800) {
    0x0000e5fa strlo r1, [sb, 0x804]                         |             *((sb + 0x804)) = r1;
                                                             |         }
                                                             |         if (r1 < 0x800) {
    0x0000e5fe strb.w r2, [sb, r3]                           |             *((sb + r3)) = r2;
                                                             |         }
    0x0000e602 mov r3, sb                                    |         r3 = sb;
    0x0000e604 it lo                                         |         
                                                             |         if (r1 >= 0x800) {
    0x0000e606 ldrlo r2, [r7, 0x70]                          |             r2 = *((r7 + 0x70));
                                                             |         }
    0x0000e608 ldr r1, [r0, 8]                               |         r1 = *((r0 + 8));
    0x0000e60a mov r0, r7                                    |         r0 = r7;
    0x0000e60c str r4, [sp]                                  |         *(sp) = r4;
    0x0000e60e add r1, r2                                    |         r1 += r2;
    0x0000e610 movs r2, 0                                    |         r2 = 0;
    0x0000e612 bl 0xe594                                     |         r0 = fcn_0000e594 (r0, r1, r2, r3, r4, r5, r6);
    0x0000e616 cmp r0, 0                                     |         
                                                             |         if (r0 < 0) {
    0x0000e618 blt 0xe698                                    |             goto label_1;
                                                             |         }
    0x0000e61a ldr.w r3, [sb, 0x804]                         |         r3 = *((sb + 0x804));
    0x0000e61e cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x0000e620 beq 0xe6b6                                    |             goto label_2;
                                                             |         }
    0x0000e622 subs r3, 1                                    |         r3--;
    0x0000e624 adds r5, 1                                    |         r5++;
    0x0000e626 str.w r3, [sb, 0x804]                         |         __asm ("str.w r3, [sb, 0x804]");
    0x0000e62a ldrb r2, [r6, 8]                              |         r2 = *((r6 + 8));
    0x0000e62c cmp r2, r5                                    |         
    0x0000e62e bhi 0xe5da                                    |         
                                                             |     } while (r2 > r5);
                                                             | label_0:
    0x0000e630 ldr r2, [r6, 0x10]                            |     r2 = *((r6 + 0x10));
    0x0000e632 ldr r1, [r6, 0x14]                            |     r1 = *((r6 + 0x14));
    0x0000e634 orrs r2, r1                                   |     r2 |= r1;
                                                             |     if (r2 == r1) {
    0x0000e636 beq 0xe6a2                                    |         goto label_3;
                                                             |     }
    0x0000e638 adds r2, r3, 1                                |     r2 = r3 + 1;
    0x0000e63a mov r1, r4                                    |     r1 = r4;
    0x0000e63c cmp.w r2, 0x800                               |     
    0x0000e640 ittte lo                                      |     
                                                             |     if (r2 >= 0x800) {
    0x0000e642 movlo r2, 0                                   |         r2 = 0;
                                                             |     }
                                                             |     if (r2 >= 0x800) {
    0x0000e644 movlo r0, sb                                  |         r0 = sb;
                                                             |     }
                                                             |     if (r2 >= 0x800) {
    0x0000e646 strblo r2, [sb, r3]                           |         *((sb + r3)) = r2;
                                                             |     }
                                                             |     if (r2 >= 0x800) {
    0x0000e64a movs r0, 0                                    |         r0 = 0;
                                                             |     }
    0x0000e64c movs r2, 0                                    |     r2 = 0;
    0x0000e64e blx 0x36e0                                    |     r0 = fstatat64 ();
                                                             |     if (r0 != 0) {
    0x0000e652 cbnz r0, 0xe69e                               |         goto label_4;
                                                             |     }
    0x0000e654 ldr r3, [r6, 0x10]                            |     r3 = *((r6 + 0x10));
    0x0000e656 ldr r2, [r6, 0x14]                            |     r2 = *((r6 + 0x14));
    0x0000e658 orrs r3, r2                                   |     r3 |= r2;
                                                             |     if (r3 == r2) {
    0x0000e65a beq 0xe69e                                    |         goto label_4;
                                                             |     }
    0x0000e65c mov r5, r0                                    |     r5 = r0;
    0x0000e65e mov r3, r0                                    |     r3 = r0;
    0x0000e660 mov r4, r0                                    |     r4 = r0;
    0x0000e662 b 0xe674                                      |     
                                                             |     while (r0 >= 0) {
    0x0000e664 ldr r1, [r6, 0x10]                            |         r1 = *((r6 + 0x10));
    0x0000e666 adds r5, 1                                    |         r5++;
    0x0000e668 ldr r2, [r6, 0x14]                            |         r2 = *((r6 + 0x14));
    0x0000e66a mov r3, r5                                    |         r3 = r5;
    0x0000e66c cmp r5, r1                                    |         
    0x0000e66e sbcs.w r2, r4, r2                             |         __asm ("sbcs.w r2, r4, r2");
                                                             |         if (r5 >= r1) {
    0x0000e672 bhs 0xe69e                                    |             goto label_4;
                                                             |         }
    0x0000e674 ldr r2, [r7, 0x70]                            |         r2 = *((r7 + 0x70));
    0x0000e676 mov r0, r7                                    |         r0 = r7;
    0x0000e678 ldrb.w ip, [r6, 8]                            |         ip = *((r6 + 8));
    0x0000e67c ldr r1, [r2, 0x30]                            |         r1 = *((r2 + 0x30));
    0x0000e67e umull r1, r3, r1, r3                          |         r1:r3 = r1 * r3;
    0x0000e682 ldr r3, [r2, 0x28]                            |         r3 = *((r2 + 0x28));
    0x0000e684 ldr r2, [r2, 0x20]                            |         r2 = *((r2 + 0x20));
    0x0000e686 umull r3, ip, r3, ip                          |         r3:ip = r3 * ip;
    0x0000e68a add r1, r2                                    |         r1 += r2;
    0x0000e68c add r1, r3                                    |         r1 += r3;
    0x0000e68e add r1, r6                                    |         r1 += r6;
    0x0000e690 bl 0xe490                                     |         r0 = fcn_0000e490 (r0, r1);
    0x0000e694 cmp r0, 0                                     |         
    0x0000e696 bge 0xe664                                    |         
                                                             |     }
                                                             | label_1:
    0x0000e698 add sp, 0xc                                   |     
    0x0000e69a pop.w {r4, r5, r6, r7, r8, sb, pc}            |     
                                                             | label_4:
    0x0000e69e ldr.w r3, [sb, 0x804]                         |     r3 = *((sb + 0x804));
                                                             | label_3:
    0x0000e6a2 cmp r8, r3                                    |     
                                                             |     if (r8 <= r3) {
    0x0000e6a4 bhi 0xe6b6                                    |         
    0x0000e6a6 sub.w r3, r3, r8                              |         r3 -= r8;
    0x0000e6aa movs r0, 0                                    |         r0 = 0;
    0x0000e6ac str.w r3, [sb, 0x804]                         |         __asm ("str.w r3, [sb, 0x804]");
    0x0000e6b0 add sp, 0xc                                   |         
    0x0000e6b2 pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
                                                             |     }
                                                             | label_2:
    0x0000e6b6 ldr r1, [pc, 0x14]                            |     
    0x0000e6b8 movs r2, 0x3a                                 |     r2 = 0x3a;
    0x0000e6ba ldr r3, [pc, 0x14]                            |     
    0x0000e6bc ldr r0, [pc, 0x14]                            |     
    0x0000e6be add r1, pc                                    |     r1 = 0x1cd90;
    0x0000e6c0 add r3, pc                                    |     r3 = 0x1cd96;
    0x0000e6c2 adds r1, 7                                    |     r1 += 7;
    0x0000e6c4 add r0, pc                                    |     r0 = 0x1cd9c;
    0x0000e6c6 bl 0x16594                                    |     fcn_00016594 (r0, r1, r2, r3, r4);
    0x0000e6ca nop                                           |     
    0x0000e6cc lsls r6, r3, 3                                |     r6 = r3 << 3;
    0x0000e6ce movs r1, r0                                   |     r1 = r0;
    0x0000e6d0 lsls r0, r7, 0xd                              |     r0 = r7 << 0xd;
    0x0000e6d2 movs r1, r0                                   |     r1 = r0;
    0x0000e6d4 lsls r0, r0, 4                                |     r0 <<= 4;
    0x0000e6d6 movs r1, r0                                   |     r1 = r0;
                                                             | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0x113e4 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.000113e4 ()                          | void fcn_000113e4 (int16_t arg_bch, int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
                                                     |     int16_t var_0h;
                                                     |     int16_t var_4h;
                                                     |     int16_t var_8h;
                                                     |     int16_t var_ch;
                                                     |     int16_t var_10h;
                                                     |     int16_t var_14h;
                                                     |     int32_t var_14h_2;
                                                     |     FILE * stream;
                                                     |     int16_t var_20h;
                                                     |     int32_t var_10h_2;
                                                     |     int16_t var_8ch;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
                                                     |     r3 = arg4;
    0x000113e4 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x000113e8 mov r6, r2                            |     r6 = r2;
    0x000113ea ldr r2, [pc, 0xcc]                    |     
    0x000113ec mov r7, r3                            |     r7 = r3;
    0x000113ee sub sp, 0x90                          |     
    0x000113f0 ldr r3, [pc, 0xc8]                    |     r3 = *(0x114bc);
    0x000113f2 add r2, pc                            |     r2 = 0x228b0;
    0x000113f4 ldr r3, [r2, r3]                      |     
    0x000113f6 ldr r3, [r3]                          |     r3 = *(0x228b0);
    0x000113f8 str r3, [sp, 0x8c]                    |     var_8ch = r3;
    0x000113fa mov.w r3, 0                           |     r3 = 0;
    0x000113fc lsls r0, r0, 0xc                      |     r0 <<= 0xc;
                                                     |     if (r0 == 0) {
    0x000113fe cbz r0, 0x1141a                       |         goto label_10;
                                                     |     }
    0x00011400 mov r5, r0                            |     r5 = r0;
    0x00011402 cmp r1, 0                             |     
                                                     |     if (r1 == 0) {
    0x00011404 beq 0x1149a                           |         goto label_11;
                                                     |     }
                                                     | label_1:
    0x00011406 ldr.w r8, [r1, 0x10]                  |     r8 = var_10h_2;
    0x0001140a tst.w r8, 7                           |     
                                                     |     if ((r8 & 7) == 0) {
    0x0001140e beq 0x1141a                           |         goto label_10;
                                                     |     }
    0x00011410 bl 0x15ca8                            |     fcn_00015ca8 ();
                                                     |     if (r6 == 0) {
    0x00011414 cbz r6, 0x11436                       |         goto label_12;
                                                     |     }
    0x00011416 cmp r0, 3                             |     
                                                     |     if (r0 > 3) {
    0x00011418 bgt 0x11464                           |         goto label_13;
                                                     |     }
                                                     |     do {
                                                     | label_10:
    0x0001141a movs r0, 0                            |         r0 = 0;
                                                     | label_0:
    0x0001141c ldr r2, [pc, 0xa0]                    |         
    0x0001141e ldr r3, [pc, 0x9c]                    |         r3 = *(0x114be);
    0x00011420 add r2, pc                            |         r2 = 0x228e4;
    0x00011422 ldr r3, [r2, r3]                      |         r3 = *(0x228e4);
    0x00011424 ldr r2, [r3]                          |         r2 = *(0x228e4);
    0x00011426 ldr r3, [sp, 0x8c]                    |         r3 = var_8ch;
    0x00011428 eors r2, r3                           |         r2 ^= r3;
    0x0001142a mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x0001142e bne 0x114b4                           |             goto label_14;
                                                     |         }
    0x00011430 add sp, 0x90                          |         
    0x00011432 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_12:
    0x00011436 cmp r0, 3                             |         
    0x00011438 ble 0x1141a                           |         
                                                     |     } while (r0 <= 3);
    0x0001143a ldr r2, [pc, 0x88]                    |     
    0x0001143c ubfx r3, r8, 0, 0xc                   |     r3 = (r8 >> 0) & ((1 << 0xc) - 1);
    0x00011440 ldr r0, [pc, 0x84]                    |     r0 = *(0x114c8);
    0x00011442 ldr r1, [pc, 0x88]                    |     r1 = *(0x114ce);
    0x00011444 add r2, pc                            |     r2 = 0x2290e;
    0x00011446 invalid                               |     
    0x00011448 strh r2, [r0, r4]                     |     *((r0 + r4)) = r2;
    0x0001144a add r0, pc                            |     r0 += pc;
    0x0001144c movw r3, 0x589                        |     r3 = 0x589;
    0x00011450 add r1, pc                            |     r1 += pc;
    0x00011452 adds r2, 7                            |     r2 += 7;
    0x00011454 strd r1, r0, [sp]                     |     __asm ("strd r1, r0, [sp]");
    0x00011458 mov r1, r6                            |     r1 = r6;
    0x0001145a movs r0, 4                            |     r0 = 4;
    0x0001145c bl 0x164ec                            |     fcn_000164ec (r0, r1, r2);
    0x00011460 mov r0, r6                            |     r0 = r6;
    0x00011462 b 0x1141c                             |     goto label_0;
                                                     | label_13:
    0x00011464 ldr r3, [pc, 0x68]                    |     
    0x00011466 movs r4, 0                            |     r4 = 0;
    0x00011468 ldr r2, [pc, 0x68]                    |     
    0x0001146a mov r0, r6                            |     r0 = r6;
    0x0001146c ldr r1, [pc, 0x68]                    |     
    0x0001146e add r3, pc                            |     r3 = 0x22942;
    0x00011470 str r4, [sp]                          |     *(sp) = r4;
    0x00011472 add r2, pc                            |     r2 = 0x2294a;
    0x00011474 adds r3, 7                            |     r3 += 7;
    0x00011476 add r1, pc                            |     r1 = 0x22952;
    0x00011478 str r2, [sp, 0x10]                    |     var_10h = r2;
    0x0001147a str r1, [sp, 0xc]                     |     var_ch = r1;
    0x0001147c ubfx r2, r8, 0, 0xc                   |     r2 = (r8 >> 0) & ((1 << 0xc) - 1);
    0x00011480 movw r1, 0x585                        |     r1 = 0x585;
    0x00011484 str r3, [sp, 4]                       |     var_4h = r3;
    0x00011486 strd r5, r2, [sp, 0x14]               |     __asm ("strd r5, r2, [var_14h]");
    0x0001148a mov r3, r7                            |     r3 = r7;
    0x0001148c str r1, [sp, 8]                       |     var_8h = r1;
    0x0001148e mov r2, r5                            |     r2 = r5;
    0x00011490 movs r1, 4                            |     r1 = 4;
    0x00011492 bl 0x16d0c                            |     fcn_00016d0c (r0, r1, r2, r3, r4, r5, r6);
    0x00011496 mov r0, r4                            |     r0 = r4;
    0x00011498 b 0x1141c                             |     goto label_0;
                                                     | label_11:
    0x0001149a add r4, sp, 0x20                      |     r4 += var_20h;
    0x0001149c mov r1, r4                            |     r1 = r4;
    0x0001149e blx 0x35f8                            |     r0 = fcn_000035f8 ();
    0x000114a2 cmp r0, 0                             |     
    0x000114a4 it ge                                 |     
                                                     |     if (r0 >= 0) {
    0x000114a6 movge r1, r4                          |         r1 = r4;
                                                     |         goto label_15;
                                                     |     }
                                                     |     if (r0 >= 0) {
                                                     | label_15:
    0x000114a8 bge 0x11406                           |         goto label_1;
                                                     |     }
    0x000114aa blx 0x3828                            |     r0 = fcn_00003828 ();
    0x000114ae ldr r0, [r0]                          |     r0 = *(r0);
    0x000114b0 rsbs r0, r0, 0                        |     r0 -= ;
    0x000114b2 b 0x1141c                             |     goto label_0;
                                                     | label_14:
    0x000114b4 blx 0x35d0                            |     fcn_000035d0 ();
    0x000114b8 lsrs r2, r4, 5                        |     r2 = r4 >> 5;
    0x000114ba movs r2, r0                           |     r2 = r0;
    0x000114bc lsls r4, r5, 9                        |     r4 = r5 << 9;
    0x000114be movs r0, r0                           |     
    0x000114c0 lsrs r4, r6, 4                        |     r4 = r6 >> 4;
    0x000114c2 movs r2, r0                           |     r2 = r0;
    0x000114c4 svc 0x80                              |     __asm ("svc 0x80");
    0x000114c6 movs r0, r0                           |     
    0x000114c8 b 0x11630                             |     goto label_16;
                                                     | label_3:
    0x00011558 ldr r3, [sp, 0xbc]                    |     r3 = *(arg_bch);
    0x0001155a mov.w r8, 0                           |     r8 = 0;
    0x0001155e mov r7, r8                            |     r7 = r8;
    0x00011560 mov sb, r8                            |     sb = r8;
    0x00011562 adds r1, r5, 1                        |     r1 = r5 + 1;
    0x00011564 and r3, r3, 1                         |     r3 &= 1;
    0x00011568 str r3, [sp, 0xc]                     |     var_ch = r3;
    0x0001156a ldr r3, [sp, 0xc]                     |     r3 = var_ch;
    0x0001156c cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x0001156e beq 0x11616                           |         goto label_17;
                                                     |     }
                                                     |     do {
    0x00011570 mov r0, r1                            |         r0 = r1;
    0x00011572 blx 0x3728                            |         r0 = strftime (r0, r1, r2, r3);
    0x00011576 mov r4, r0                            |         r4 = r0;
    0x00011578 cmp r0, 0                             |         
                                                     |         if (r0 == 0) {
    0x0001157a beq.w 0x11874                         |             goto label_18;
                                                     |         }
    0x0001157e cmp.w sb, 0                           |         
                                                     |         if (sb != 0) {
    0x00011582 beq 0x115a0                           |             
    0x00011584 cmp.w r8, 0                           |             
                                                     |             if (r8 == 0) {
    0x00011588 beq.w 0x11728                         |                 goto label_19;
                                                     |             }
    0x0001158c mov r2, sb                            |             r2 = sb;
    0x0001158e mov r1, r8                            |             r1 = r8;
    0x00011590 blx 0x3578                            |             mmap64 ()
    0x00011594 mov r1, sb                            |             r1 = sb;
    0x00011596 mov.w r2, -1                          |             r2 = -1;
    0x0001159a mov r0, r8                            |             r0 = r8;
    0x0001159c blx 0x3970                            |             fcn_00003970 ();
    0x0001159e invalid                               |             
                                                     |         }
    0x000115a0 mov r0, r8                            |         r0 = r8;
    0x000115a2 blx 0x3530                            |         ferror (r0);
                                                     | label_2:
    0x000115a6 cmp.w sl, -1                          |         
                                                     |         if (sl == -1) {
    0x000115aa beq 0x116a2                           |             goto label_20;
                                                     |         }
                                                     | label_4:
    0x000115ac blx 0x3828                            |         fcn_00003828 ();
    0x000115b0 sub.w r8, r5, r7                      |         r8 = r5 - r7;
    0x000115b4 movs r3, 0                            |         r3 = 0;
    0x000115b6 str r3, [r0]                          |         *(r0) = r3;
    0x000115b8 mov sb, r0                            |         sb = r0;
    0x000115ba mov r3, r6                            |         r3 = r6;
    0x000115bc mov r2, r8                            |         r2 = r8;
    0x000115be movs r1, 1                            |         r1 = 1;
    0x000115c0 adds r0, r4, r7                       |         r0 = r4 + r7;
    0x000115c2 blx 0x36c8                            |         r0 = fnmatch ();
    0x000115c6 cmp r8, r0                            |         
    0x000115c8 mov fp, r0                            |         
                                                     |         if (r8 <= r0) {
    0x000115ca blo 0x116ac                           |             goto label_21;
                                                     |         }
    0x000115cc add r7, r0                            |         r7 += r0;
    0x000115ce mov r0, r6                            |         r0 = r6;
    0x000115d0 blx 0x353c                            |         r0 = strndup (r0, r1);
    0x000115d4 mov r8, r0                            |         r8 = r0;
    0x000115d6 cmp r0, 0                             |         
                                                     |         if (r0 != 0) {
    0x000115d8 bne.w 0x11802                         |             goto label_22;
                                                     |         }
    0x000115dc mov r0, r6                            |         r0 = r6;
    0x000115de blx 0x37a4                            |         r0 = fcn_000037a4 ();
    0x000115e2 cmp r0, 0                             |         
                                                     |         if (r0 != 0) {
    0x000115e4 bne.w 0x1173c                         |             goto label_6;
                                                     |         }
    0x000115e8 cmp.w sl, -1                          |         
                                                     |         if (sl != -1) {
    0x000115ec bne.w 0x11816                         |             goto label_23;
                                                     |         }
    0x000115f0 cmp.w fp, 0                           |         
                                                     |         if (fp == 0) {
    0x000115f4 beq 0x116c2                           |             goto label_24;
                                                     |         }
    0x000115f6 mvn r3, 0xfc000000                    |         r3 = ~0xfc000000;
    0x000115fa cmp r5, r3                            |         
                                                     |         if (r5 >= r3) {
    0x000115fc bhs.w 0x11830                         |             goto label_25;
                                                     |         }
    0x00011600 lsls r2, r5, 1                        |         r2 = r5 << 1;
    0x00011602 mov sb, r5                            |         sb = r5;
    0x00011604 mov r8, r4                            |         r8 = r4;
    0x00011606 cmp r2, r3                            |         
    0x00011608 it hs                                 |         
                                                     |         if (r2 < r3) {
    0x0001160a movhs r2, r3                          |             r2 = r3;
                                                     |         }
    0x0001160c ldr r3, [sp, 0xc]                     |         r3 = var_ch;
    0x0001160e mov r5, r2                            |         r5 = r2;
    0x00011610 adds r1, r5, 1                        |         r1 = r5 + 1;
    0x00011612 cmp r3, 0                             |         
    0x00011614 bne 0x11570                           |         
                                                     |     } while (r3 != 0);
                                                     | label_17:
    0x00011616 mov r0, r8                            |     r0 = r8;
    0x00011618 blx 0x361c                            |     r0 = fcn_0000361c ();
    0x0001161c mov r4, r0                            |     r4 = r0;
    0x0001161e cmp r0, 0                             |     
                                                     |     if (r0 != 0) {
    0x00011620 bne 0x115a6                           |         goto label_2;
                                                     |     }
    0x00011622 mov r4, r8                            |     r4 = r8;
    0x00011624 mvn r8, 0xb                           |     r8 = ~0xb;
    0x00011628 b 0x11644                             |     void (*0x11644)() ();
                                                     | label_16:
    0x00011630 blx 0x3a6c                            |     r0 = fcn_00003a6c ();
    0x00011634 cmp r0, 0                             |     
                                                     |     if (r0 >= 0) {
    0x00011636 bge 0x11558                           |         goto label_3;
                                                     |     }
    0x00011638 blx 0x3828                            |     r0 = fcn_00003828 ();
    0x0001163c ldr r3, [r0]                          |     r3 = *(r0);
    0x0001163e movs r4, 0                            |     r4 = 0;
    0x00011640 rsb.w r8, r3, 0                       |     r8 = r3 - ;
                                                     | label_20:
    0x000116a2 mov r0, r4                            |     r0 = r4;
    0x000116a4 blx 0x3840                            |     r0 = fcn_00003840 ();
    0x000116a8 subs r5, r0, 1                        |     r5 = r0 - 1;
    0x000116aa b 0x115ac                             |     goto label_4;
                                                     | label_21:
    0x000116ac ldr r1, [pc, 0x1e0]                   |     
    0x000116ae movw r2, 0x263                        |     r2 = 0x263;
    0x000116b2 ldr r3, [pc, 0x1e0]                   |     
    0x000116b4 ldr r0, [pc, 0x1e0]                   |     
    0x000116b6 add r1, pc                            |     r1 = 0x22f4a;
    0x000116b8 add r3, pc                            |     r3 = 0x22f52;
    0x000116ba adds r1, 7                            |     r1 += 7;
    0x000116bc add r0, pc                            |     r0 = 0x22f58;
    0x000116be bl 0x16594                            |     fcn_00016594 (r0, r1, r2, r3, r4);
    0x000116c0 invalid                               |     
                                                     | label_24:
    0x000116c2 ldr r1, [pc, 0x1d8]                   |     
    0x000116c4 movw r2, 0x272                        |     r2 = 0x272;
    0x000116c6 movs r2, 0x72                         |     r2 = 0x72;
    0x000116c8 ldr r3, [pc, 0x1d4]                   |     
    0x000116ca ldr r0, [pc, 0x1d8]                   |     
    0x000116cc add r1, pc                            |     r1 = 0x22f6e;
    0x000116ce add r3, pc                            |     r3 = 0x22f72;
    0x000116d0 adds r1, 7                            |     r1 += 7;
    0x000116d2 add r0, pc                            |     r0 = 0x22f7c;
    0x000116d4 bl 0x16594                            |     fcn_00016594 (r0, r1, r2, r3, r4);
    0x000116d8 ldr r1, [pc, 0x1cc]                   |     
    0x000116da mov.w r2, 0x21c                       |     r2 = 0x21c;
    0x000116de ldr r3, [pc, 0x1cc]                   |     
    0x000116e0 ldr r0, [pc, 0x1cc]                   |     
    0x000116e2 add r1, pc                            |     r1 = 0x22f8e;
    0x000116e4 add r3, pc                            |     r3 = 0x22f96;
    0x000116e6 adds r1, 7                            |     r1 += 7;
    0x000116e8 add r0, pc                            |     r0 = 0x22f9c;
    0x000116ea bl 0x16594                            |     fcn_00016594 (r0, r1, r2, r3, r4);
    0x000116ee ldr r1, [pc, 0x1c4]                   |     
    0x000116f0 movw r2, 0x21d                        |     r2 = 0x21d;
    0x000116f4 ldr r3, [pc, 0x1c0]                   |     
    0x000116f6 ldr r0, [pc, 0x1c4]                   |     
    0x000116f8 add r1, pc                            |     r1 = 0x22fb2;
    0x000116fa add r3, pc                            |     r3 = 0x22fb6;
    0x000116fc adds r1, 7                            |     r1 += 7;
    0x000116fe add r0, pc                            |     r0 = 0x22fc0;
    0x00011700 bl 0x16594                            |     fcn_00016594 (r0, r1, r2, r3, r4);
    0x00011704 ldr r1, [pc, 0x1b8]                   |     
    0x00011706 movw r2, 0x21e                        |     r2 = 0x21e;
    0x0001170a ldr r3, [pc, 0x1b8]                   |     
    0x0001170c ldr r0, [pc, 0x1b8]                   |     
    0x0001170e add r1, pc                            |     r1 = 0x22fd2;
    0x00011710 add r3, pc                            |     r3 = 0x22fda;
    0x00011712 adds r1, 7                            |     r1 += 7;
    0x00011714 add r0, pc                            |     r0 = 0x22fe0;
    0x00011716 bl 0x16594                            |     r0 = fcn_00016594 (r0, r1, r2, r3, r4);
    0x0001171a blx 0x3828                            |     r0 = fcn_00003828 ();
    0x0001171e ldr r3, [r0]                          |     r3 = *(r0);
    0x00011720 rsb.w r8, r3, 0                       |     r8 = r3 - ;
    0x00011724 movs r4, 0                            |     r4 = 0;
    0x00011726 b 0x11644                             |     void (*0x11644)() ();
                                                     | label_19:
    0x00011728 ldr r1, [pc, 0x1a0]                   |     
    0x0001172a movs r2, 0x16                         |     r2 = 0x16;
    0x0001172c ldr r3, [pc, 0x1a0]                   |     
    0x0001172e ldr r0, [pc, 0x1a4]                   |     
    0x00011730 add r1, pc                            |     r1 = 0x23000;
    0x00011732 add r3, pc                            |     r3 = 0x23006;
    0x00011734 adds r1, 7                            |     r1 += 7;
    0x00011736 add r0, pc                            |     r0 = 0x23010;
    0x00011738 bl 0x16594                            |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                     | label_6:
    0x0001173c ldr r3, [sp, 0xbc]                    |     r3 = *(arg_bch);
    0x0001173e tst.w r3, 6                           |     
                                                     |     if ((r3 & 6) != 0) {
    0x00011742 beq 0x11786                           |         
    0x00011744 movs r3, 0                            |         r3 = 0;
    0x00011746 ldrb.w r2, [sp, 0xc]                  |         r2 = var_ch;
    0x0001174a strb r3, [r4, r7]                     |         *((r4 + r7)) = r3;
    0x0001174c adds r1, r7, 1                        |         r1 = r7 + 1;
    0x0001174e str r3, [sp, 0x1c]                    |         stream = r3;
    0x00011750 mov r0, r4                            |         r0 = r4;
    0x00011752 ldr r3, [sp, 0xbc]                    |         r3 = *(arg_bch);
    0x00011754 tst.w r3, 2                           |         
    0x00011758 add r3, sp, 0x20                      |         r3 += var_20h;
    0x0001175a str r3, [sp]                          |         *(sp) = r3;
    0x0001175c add r3, sp, 0x1c                      |         r3 += stream;
                                                     |         if ((r3 & 2) == 0) {
    0x0001175e beq 0x11836                           |             goto label_26;
                                                     |         }
    0x00011760 bl 0x14da0                            |         r0 = fcn_00014da0 (r0, r1, r2, r3, r4, r5, r6);
    0x00011764 mov r3, r0                            |         r3 = r0;
                                                     | label_7:
    0x00011766 cmp r3, 0                             |         
                                                     |         if (r3 < 0) {
    0x00011768 blt 0x11856                           |             goto label_27;
                                                     |         }
    0x0001176a ldr r3, [sp, 0xc]                     |         r3 = var_ch;
    0x0001176c cmp r5, 0                             |         
    0x0001176e ite eq                                |         
                                                     |         if (r5 != 0) {
    0x00011770 moveq r3, 0                           |             r3 = 0;
                                                     |         }
                                                     |         if (r5 == 0) {
    0x00011772 andne r3, r3, 1                       |             r3 &= 1;
                                                     |         }
    0x00011776 cmp r3, 0                             |         
                                                     |         if (r3 != 0) {
    0x00011778 bne 0x11860                           |             goto label_28;
                                                     |         }
                                                     | label_8:
    0x0001177a mov r0, r4                            |         r0 = r4;
    0x0001177c blx 0x3530                            |         ferror (r0);
    0x00011780 ldrd r4, r5, [sp, 0x1c]               |         __asm ("ldrd r4, r5, [stream]");
    0x00011784 mov r7, r5                            |         r7 = r5;
                                                     |     }
    0x00011786 ldr r3, [sp, 0x14]                    |     r3 = var_14h;
                                                     |     if (r3 != 0) {
    0x00011788 cbz r3, 0x117d6                       |         
    0x0001178a ldr r2, [sp, 0x10]                    |         r2 = var_10h;
    0x0001178c movs r3, 0                            |         r3 = 0;
    0x0001178e strb r3, [r4, r7]                     |         *((r4 + r7)) = r3;
    0x00011790 str r4, [r2]                          |         *(r2) = r4;
    0x00011792 mov r4, r3                            |         r4 = r3;
    0x00011794 ldr r3, [sp, 0x14]                    |         r3 = var_14h;
    0x00011796 str r7, [r3]                          |         *(r3) = r7;
    0x00011798 b 0x11644                             |         void (*0x11644)() ();
                                                     |     }
    0x000117d6 mov r2, r7                            |     r2 = r7;
    0x000117d8 mov r1, r3                            |     r1 = r3;
    0x000117da mov r0, r4                            |     r0 = r4;
    0x000117dc blx 0x38e0                            |     fcn_000038e0 ();
    0x000117de invalid                               |     
    0x000117e2 mvn r8, 0x49                          |     r8 = ~0x49;
                                                     | label_5:
    0x000117e6 ldr r3, [sp, 0xc]                     |     r3 = var_ch;
    0x000117e8 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x000117ea beq.w 0x11644                         |         void (*0x11644)() ();
                                                     |     }
                                                     | label_9:
    0x000117ee cmp r5, 0                             |     
                                                     |     if (r5 == 0) {
    0x000117f0 beq.w 0x11644                         |         void (*0x11644)() ();
                                                     |     }
    0x000117f4 mov.w r2, -1                          |     r2 = -1;
    0x000117f8 mov r1, r5                            |     r1 = r5;
    0x000117fa mov r0, r4                            |     r0 = r4;
    0x000117fc blx 0x3970                            |     fcn_00003970 ();
    0x00011800 b 0x11644                             |     void (*0x11644)() ();
                                                     | label_22:
    0x00011802 ldr.w r3, [sb]                        |     r3 = *(sb);
    0x00011806 cmp r3, 0                             |     
    0x00011808 it gt                                 |     
                                                     |     if (r3 <= 0) {
    0x0001180a rsbgt r8, r3, 0                       |         __asm ("rsbgt r8, r3, 0");
                                                     |         goto label_29;
                                                     |     }
                                                     |     if (r3 > 0) {
                                                     | label_29:
    0x0001180e bgt 0x117e6                           |         goto label_5;
                                                     |     }
    0x00011810 mvn r8, 4                             |     r8 = ~4;
    0x00011814 b 0x117e6                             |     goto label_5;
                                                     | label_23:
    0x00011816 cmp sl, r7                            |     
                                                     |     if (sl == r7) {
    0x00011818 beq 0x1173c                           |         goto label_6;
                                                     |     }
    0x0001181a ldr r1, [pc, 0xbc]                    |     
    0x0001181c movw r2, 0x26e                        |     r2 = 0x26e;
    0x00011820 ldr r3, [pc, 0xb8]                    |     
    0x00011822 ldr r0, [pc, 0xbc]                    |     
    0x00011824 add r1, pc                            |     r1 = 0x23102;
    0x00011826 add r3, pc                            |     r3 = 0x23106;
    0x00011828 adds r1, 7                            |     r1 += 7;
    0x0001182a add r0, pc                            |     r0 = 0x23110;
    0x0001182c bl 0x16594                            |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                     | label_25:
    0x00011830 mvn r8, 6                             |     r8 = ~6;
    0x00011834 b 0x117e6                             |     goto label_5;
                                                     | label_26:
    0x00011836 bl 0x14b98                            |     r0 = fcn_00014b98 (r0, r1, r2, r3, r4);
    0x0001183a mov r3, r0                            |     r3 = r0;
    0x0001183c b 0x11766                             |     goto label_7;
    0x00011842 ldr r3, [sp, 0x14]                    |     r3 = var_14h;
    0x00011844 ldr r2, [sp, 0x10]                    |     r2 = var_10h;
    0x00011846 strb r3, [r4, r7]                     |     *((r4 + r7)) = r3;
    0x00011848 str r4, [r2]                          |     *(r2) = r4;
    0x0001184a mov r4, r3                            |     r4 = r3;
    0x0001184c b 0x11644                             |     void (*0x11644)() ();
                                                     | label_27:
    0x00011856 ldr r0, [sp, 0x1c]                    |     r0 = stream;
    0x00011858 mov r8, r3                            |     r8 = r3;
    0x0001185a blx 0x3530                            |     ferror (r0);
    0x0001185e b 0x117e6                             |     goto label_5;
                                                     | label_28:
    0x00011860 mov r1, r5                            |     r1 = r5;
    0x00011862 mov.w r2, -1                          |     r2 = -1;
    0x00011866 mov r0, r4                            |     r0 = r4;
    0x00011868 blx 0x3970                            |     fcn_00003970 ();
    0x0001186c b 0x1177a                             |     goto label_8;
                                                     | label_18:
    0x00011874 mov r4, r8                            |     r4 = r8;
    0x00011876 mov r5, sb                            |     r5 = sb;
    0x00011878 mvn r8, 0xb                           |     r8 = ~0xb;
    0x0001187a lsrs r3, r1, 0x20                     |     r3 = r1 >> 0x20;
    0x0001187c b 0x117ee                             |     goto label_9;
                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0x12340 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.00012340 ()                                      | void fcn_00012340 (uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int8_t var_1h;
                                                                 |     char * src;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int32_t var_4h_2;
                                                                 |     int32_t var_8h_2;
                                                                 |     int32_t var_ch_2;
                                                                 |     int32_t var_10h_2;
                                                                 |     int32_t var_14h;
                                                                 |     int32_t var_18h;
                                                                 |     int32_t var_1ch;
                                                                 |     int32_t var_20h;
                                                                 |     int32_t var_24h;
                                                                 |     int32_t var_28h;
                                                                 |     int32_t var_2ch;
                                                                 |     int32_t var_30h;
                                                                 |     int32_t var_34h;
                                                                 |     FILE * var_38h;
                                                                 |     FILE * var_38h_2;
                                                                 |     FILE * stream;
                                                                 |     int32_t var_44h;
                                                                 |     int16_t var_48h;
                                                                 |     FILE * var_4ch;
                                                                 |     int16_t var_50h;
                                                                 |     int16_t var_b8h;
                                                                 |     int32_t var_c8h;
                                                                 |     int32_t var_124h;
                                                                 |     int16_t var_12ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00012340 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00012344 sub sp, 0x13c                                     |     
    0x00012346 add r7, sp, 0x10                                  |     r7 += var_10h;
    0x00012348 movs r4, 0                                        |     r4 = 0;
    0x0001234a ldr.w r5, [r7, 0x150]                             |     r5 = *((r7 + 0x150));
    0x0001234e str r3, [r7, 0x30]                                |     var_30h = r3;
    0x00012350 ldr.w r3, [pc, 0x7b4]                             |     r3 = *(0x12b08);
    0x00012354 str r5, [r7, 0x34]                                |     var_34h = r5;
    0x00012356 mov r5, r2                                        |     r5 = r2;
    0x00012358 ldr.w r2, [pc, 0x7b0]                             |     
    0x0001235a movs r7, 0xb0                                     |     r7 = 0xb0;
    0x0001235c add r2, pc                                        |     r2 = 0x24e6c;
    0x0001235e ldr r3, [r2, r3]                                  |     
    0x00012360 ldr r3, [r3]                                      |     r3 = *(0x24e6c);
    0x00012362 str.w r3, [r7, 0x124]                             |     __asm ("str.w r3, [var_124h]");
    0x00012366 mov.w r3, 0                                       |     r3 = 0;
    0x0001236a strd r4, r4, [r7, 0x38]                           |     __asm ("strd r4, r4, [var_38h]");
    0x0001236e str r4, [r7, 0x40]                                |     stream = r4;
    0x00012370 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00012372 beq.w 0x128be                                     |         goto label_26;
                                                                 |     }
    0x00012376 ands r3, r5, 2                                    |     r3 = r5 & 2;
    0x0001237a mov r6, r1                                        |     r6 = r1;
    0x0001237c mov r4, r0                                        |     r4 = r0;
    0x0001237e str r3, [r7, 0x1c]                                |     var_1ch = r3;
                                                                 |     if (r3 != r5) {
    0x00012380 bne 0x123de                                       |         goto label_27;
                                                                 |     }
    0x00012382 ands r3, r5, 0x20                                 |     r3 = r5 & 0x20;
    0x00012386 str r3, [r7, 0x2c]                                |     var_2ch = r3;
                                                                 |     if (r3 != r5) {
    0x00012388 beq 0x1238e                                       |         
    0x0001238a ldr r3, [r7, 0x34]                                |         r3 = var_34h;
                                                                 |         if (r3 != 0) {
    0x0001238c cbnz r3, 0x12392                                  |             goto label_0;
                                                                 |         }
                                                                 |     }
    0x0001238e ldrb r3, [r4]                                     |     r3 = *(r4);
                                                                 |     if (r3 != 0) {
    0x00012390 cbnz r3, 0x123f0                                  |         goto label_28;
                                                                 |     }
                                                                 |     do {
                                                                 | label_0:
    0x00012392 mov.w r6, -1                                      |         r6 = -1;
    0x00012396 mvn r1, 0x15                                      |         r1 = ~0x15;
                                                                 | label_3:
    0x0001239a mov r0, r6                                        |         r0 = r6;
    0x0001239c str r1, [r7, 0x34]                                |         var_34h = r1;
    0x0001239e bl 0x10570                                        |         fcn_00010570 (r0);
    0x000123a2 ldr r0, [r7, 0x40]                                |         r0 = stream;
    0x000123a4 blx 0x3530                                        |         ferror (r0);
    0x000123a8 ldr r0, [r7, 0x3c]                                |         r0 = var_38h_2;
    0x000123aa blx 0x3530                                        |         ferror (r0);
    0x000123ae ldr r0, [r7, 0x38]                                |         r0 = var_38h;
    0x000123b0 blx 0x3530                                        |         ferror (r0);
    0x000123b4 ldr.w r2, [pc, 0x758]                             |         
    0x000123b8 ldr.w r3, [pc, 0x74c]                             |         r3 = *(0x12b08);
    0x000123bc ldr r1, [r7, 0x34]                                |         r1 = var_34h;
    0x000123be add r2, pc                                        |         r2 = 0x24ed2;
    0x000123c0 ldr r3, [r2, r3]                                  |         r3 = *(0x24ed2);
    0x000123c2 ldr r2, [r3]                                      |         r2 = *(0x24ed2);
    0x000123c4 ldr.w r3, [r7, 0x124]                             |         r3 = var_124h;
    0x000123c8 eors r2, r3                                       |         r2 ^= r3;
    0x000123ca mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000123ce bne.w 0x12aea                                     |             goto label_29;
                                                                 |         }
    0x000123d2 mov r0, r1                                        |         r0 = r1;
    0x000123d4 add.w r7, r7, 0x12c                               |         r7 += var_12ch;
    0x000123d8 mov sp, r7                                        |         
    0x000123da pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_27:
    0x000123de ldr r3, [r7, 0x34]                                |         r3 = var_34h;
    0x000123e0 cmp r3, 0                                         |         
    0x000123e2 bne 0x12392                                       |         
                                                                 |     } while (r3 != 0);
    0x000123e4 and r3, r5, 0x20                                  |     r3 = r5 & 0x20;
    0x000123e8 str r3, [r7, 0x2c]                                |     var_2ch = r3;
    0x000123ea ldrb r3, [r4]                                     |     r3 = *(r4);
    0x000123ec cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000123ee beq 0x12392                                       |         goto label_0;
                                                                 |     }
                                                                 | label_28:
    0x000123f0 mov r0, r6                                        |     r0 = r6;
    0x000123f2 bl 0x18b40                                        |     r0 = fcn_00018b40 (r0);
    0x000123f6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000123f8 beq.w 0x125aa                                     |         goto label_30;
                                                                 |     }
    0x000123fc ldr r3, [r7, 0x30]                                |     r3 = var_30h;
                                                                 |     if (r3 == 0) {
    0x000123fe cbnz r3, 0x12418                                  |         
                                                                 | label_1:
    0x00012400 ldr r3, [r7, 0x34]                                |         r3 = var_34h;
    0x00012402 and r2, r5, 0x2e                                  |         r2 = r5 & 0x2e;
    0x00012406 subs r3, 0                                        |         
    0x00012408 it ne                                             |         
                                                                 |         if (r3 == 0) {
    0x0001240a movne r3, 1                                       |             r3 = 1;
                                                                 |         }
    0x0001240c cmp r2, 0                                         |         
    0x0001240e it ne                                             |         
                                                                 |         if (r2 == 0) {
    0x00012410 movne r3, 0                                       |             r3 = 0;
                                                                 |         }
    0x00012412 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00012414 bne.w 0x12808                                     |             goto label_31;
                                                                 |         }
                                                                 |     }
                                                                 | label_2:
    0x00012418 add.w r1, r7, 0x38                                |     r1 += var_38h;
    0x0001241c mov r0, r4                                        |     r0 = r4;
    0x0001241e bl 0x1827c                                        |     r0 = fcn_0001827c (r0, r1, r2, r3);
    0x00012422 subs r1, r0, 0                                    |     r1 = r0 - 0;
                                                                 |     if (r1 < r0) {
    0x00012424 blt.w 0x1265c                                     |         goto label_32;
                                                                 |     }
    0x00012428 ldr r0, [r7, 0x40]                                |     r0 = stream;
    0x0001242a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001242c beq.w 0x128b8                                     |         goto label_33;
                                                                 |     }
                                                                 | label_10:
    0x00012430 mov.w r1, 0x284000                                |     r1 = 0x284000;
    0x00012434 blx 0x36ec                                        |     r0 = asprintf_chk ();
    0x00012438 subs r6, r0, 0                                    |     r6 = r0 - 0;
                                                                 |     if (r6 < r0) {
    0x0001243a blt.w 0x12670                                     |         goto label_34;
                                                                 |     }
    0x0001243e ands r3, r5, 8                                    |     r3 = r5 & 8;
    0x00012442 str r3, [r7, 0x18]                                |     var_18h = r3;
                                                                 |     if (r3 != r5) {
    0x00012444 bne.w 0x12662                                     |         goto label_35;
                                                                 |     }
                                                                 | label_4:
    0x00012448 ands r3, r5, 0x10                                 |     r3 = r5 & 0x10;
    0x0001244c ldr.w sb, [r7, 0x38]                              |     sb = var_38h;
    0x00012450 it eq                                             |     
                                                                 |     if (r3 != r5) {
    0x00012452 streq r3, [r7, 0xc]                               |         var_ch_2 = r3;
                                                                 |     }
                                                                 |     if (r3 != r5) {
    0x00012454 beq 0x1246c                                       |         
    0x00012456 ldr.w r1, [pc, 0x6bc]                             |         
    0x0001245a mov r0, sb                                        |         r0 = sb;
    0x0001245c add r1, pc                                        |         r1 = 0x24f76;
    0x0001245e bl 0x1af54                                        |         r0 = fcn_0001af54 (r0, r1);
    0x00012462 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00012464 beq.w 0x1293e                                     |             goto label_36;
                                                                 |         }
    0x00012468 movs r3, 1                                        |         r3 = 1;
    0x0001246a str r3, [r7, 0xc]                                 |         var_ch_2 = r3;
                                                                 |     }
                                                                 | label_14:
    0x0001246c ldr.w r8, [r7, 0x40]                              |     r8 = stream;
    0x00012470 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x00012474 beq.w 0x128e2                                     |         goto label_37;
                                                                 |     }
    0x00012478 mov r0, sb                                        |     r0 = sb;
    0x0001247a movs r2, 1                                        |     r2 = 1;
    0x0001247c mov r1, r8                                        |     r1 = r8;
    0x0001247e bl 0x18554                                        |     fcn_00018554 (r0, r1, r2, r3, r4);
    0x00012482 str r0, [r7, 0x44]                                |     var_44h = r0;
    0x00012484 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00012486 beq.w 0x1267a                                     |         goto label_38;
                                                                 |     }
    0x0001248a mov r0, r8                                        |     r0 = r8;
    0x0001248c blx 0x35c4                                        |     fcn_000035c4 ();
                                                                 | label_11:
    0x00012490 ldr.w r3, [pc, 0x684]                             |     
    0x00012494 str r0, [r7, 0x3c]                                |     var_38h_2 = r0;
    0x00012496 add r3, pc                                        |     r3 = 0x24fb2;
    0x00012498 str r3, [r7, 0x20]                                |     var_20h = r3;
    0x0001249a ldr.w r3, [pc, 0x680]                             |     
    0x0001249e add r3, pc                                        |     r3 = 0x24fc0;
    0x000124a0 str r3, [r7, 4]                                   |     var_4h_2 = r3;
    0x000124a2 ldr.w r3, [pc, 0x67c]                             |     
    0x000124a4 adds r6, 0x7c                                     |     r6 += 0x7c;
    0x000124a6 add r3, pc                                        |     r3 = 0x24fcc;
    0x000124a8 str r3, [r7, 8]                                   |     var_8h_2 = r3;
    0x000124aa movs r3, 0x20                                     |     r3 = 0x20;
    0x000124ac str r3, [r7, 0x14]                                |     var_14h = r3;
    0x000124ae add.w r3, r7, 0x48                                |     r3 += var_48h;
    0x000124b2 str r3, [r7, 0x24]                                |     var_24h = r3;
    0x000124b4 add.w r3, r7, 0x44                                |     r3 += var_44h;
    0x000124b8 str r3, [r7, 0x28]                                |     var_28h = r3;
                                                                 |     do {
                                                                 | label_6:
    0x000124ba movs r1, 1                                        |         r1 = 1;
    0x000124bc ldr r2, [r7, 0x24]                                |         r2 = var_24h;
    0x000124be ldr r0, [r7, 0x28]                                |         r0 = var_28h;
    0x000124c0 bl 0x183bc                                        |         r0 = fcn_000183bc (r0, r1, r2);
    0x000124c4 subs r1, r0, 0                                    |         r1 = r0 - 0;
                                                                 |         if (r1 < r0) {
    0x000124c6 blt.w 0x12974                                     |             goto label_39;
                                                                 |         }
                                                                 |         if (r1 == r0) {
    0x000124ca beq.w 0x1297e                                     |             goto label_40;
                                                                 |         }
    0x000124ce ldr r0, [r7, 0x48]                                |         r0 = var_48h;
    0x000124d0 blx 0x3548                                        |         r0 = openat64_2 ();
    0x000124d4 mov r8, r0                                        |         r8 = r0;
    0x000124d6 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000124d8 beq.w 0x12a76                                     |             goto label_41;
                                                                 |         }
    0x000124dc ldr r1, [r7, 0x20]                                |         r1 = var_20h;
    0x000124de bl 0x18674                                        |         r0 = fcn_00018674 (r0, r1, r2, r3);
    0x000124e2 mov sb, r0                                        |         sb = r0;
    0x000124e4 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x000124e6 bne.w 0x126ca                                     |             goto label_42;
                                                                 |         }
    0x000124ea ldr r0, [r7, 0x3c]                                |         r0 = var_38h_2;
    0x000124ec bl 0x18b40                                        |         r0 = fcn_00018b40 (r0);
    0x000124f0 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000124f2 bne 0x1258a                                       |             
    0x000124f4 ldr r0, [r7, 0x3c]                                |             r0 = var_38h_2;
    0x000124f6 bl 0x1834c                                        |             r0 = fcn_0001834c ();
    0x000124fa mov sb, r0                                        |             sb = r0;
    0x000124fc cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x000124fe beq.w 0x12ab2                                     |                 goto label_43;
                                                                 |             }
    0x00012502 ldrd sl, fp, [r7, 0x3c]                           |             __asm ("ldrd sl, fp, [var_38h_2]");
    0x00012506 cmp.w fp, 0                                       |             
                                                                 |             if (fp != 0) {
    0x0001250a beq 0x12524                                       |                 
    0x0001250c movs r2, 1                                        |                 r2 = 1;
    0x0001250e mov r1, fp                                        |                 r1 = fp;
    0x00012510 mov r0, sl                                        |                 r0 = sl;
    0x00012512 bl 0x18554                                        |                 r0 = fcn_00018554 (r0, r1, r2, r3, r4);
                                                                 |                 if (r0 == 0) {
    0x00012516 cbz r0, 0x12524                                   |                     goto label_44;
                                                                 |                 }
    0x00012518 mov r1, fp                                        |                 r1 = fp;
    0x0001251a movs r2, 1                                        |                 r2 = 1;
    0x0001251c mov r0, sb                                        |                 r0 = sb;
    0x0001251e bl 0x18554                                        |                 r0 = fcn_00018554 (r0, r1, r2, r3, r4);
                                                                 |                 if (r0 == 0) {
    0x00012522 cbz r0, 0x1258a                                   |                     goto label_45;
                                                                 |                 }
                                                                 |             }
                                                                 | label_44:
    0x00012524 mov r0, sl                                        |             r0 = sl;
    0x00012526 blx 0x3530                                        |             ferror (r0);
    0x00012528 invalid                                           |             
    0x0001252c str.w sb, [r7, 0x3c]                              |             __asm ("str.w sb, [var_38h_2]");
    0x00012530 cmp r3, 0                                         |             
                                                                 |             if (r3 != 0) {
    0x00012532 bne.w 0x12abc                                     |                 goto label_46;
                                                                 |             }
    0x00012536 ldr.w r1, [pc, 0x5ec]                             |             
    0x0001253a mov.w r2, 0x288000                                |             r2 = 0x288000;
    0x0001253e mov r0, r6                                        |             r0 = r6;
    0x00012540 add r1, pc                                        |             r1 = 0x2506a;
    0x00012542 blx 0x37ec                                        |             r0 = fcn_000037ec ();
    0x00012546 subs.w sb, r0, 0                                  |             sb = r0 - 0;
                                                                 |             if (sb < r0) {
    0x0001254a blt.w 0x12a58                                     |                 goto label_47;
                                                                 |             }
    0x0001254e ldr r3, [r7, 0x18]                                |             r3 = var_18h;
                                                                 |             if (r3 != 0) {
    0x00012550 cbz r3, 0x1257e                                   |                 
    0x00012552 add.w sl, r7, 0xb8                                |                 sl += var_b8h;
    0x00012556 mov r1, sl                                        |                 r1 = sl;
    0x00012558 blx 0x3a30                                        |                 r0 = fcn_00003a30 ();
    0x0001255c cmp r0, 0                                         |                 
                                                                 |                 if (r0 < 0) {
    0x0001255e blt.w 0x12a58                                     |                     goto label_47;
                                                                 |                 }
    0x00012562 add.w fp, r7, 0x50                                |                 
    0x00012566 mov r1, sl                                        |                 r1 = sl;
    0x00012568 mov r0, fp                                        |                 r0 = fp;
    0x0001256a bl 0x12330                                        |                 r0 = fcn_00012330 (r0, r1);
    0x0001256e cmp r0, 0                                         |                 
                                                                 |                 if (r0 != 0) {
    0x00012570 bne.w 0x12952                                     |                     goto label_48;
                                                                 |                 }
    0x00012572 strh r7, [r5, 0xe]                                |                 *((r5 + 0xe)) = r7;
    0x00012574 mov r1, sl                                        |                 r1 = sl;
    0x00012576 mov r0, fp                                        |                 r0 = fp;
    0x00012578 movs r2, 0x68                                     |                 r2 = 0x68;
    0x0001257a blx 0x3578                                        |                 mmap64 ()
                                                                 |             }
    0x0001257e mov r0, r6                                        |             r0 = r6;
    0x00012580 mov r6, sb                                        |             r6 = sb;
    0x00012582 mov.w sb, 0                                       |             sb = 0;
    0x00012584 lsrs r0, r0, 4                                    |             r0 >>= 4;
    0x00012586 bl 0x10570                                        |             fcn_00010570 (r0);
                                                                 |         }
                                                                 | label_45:
    0x0001258a mov.w r0, -1                                      |         r0 = -1;
    0x0001258e bl 0x10570                                        |         fcn_00010570 (r0);
    0x00012592 mov r0, sb                                        |         r0 = sb;
    0x00012594 mov.w sb, -1                                      |         sb = -1;
    0x00012598 blx 0x3530                                        |         ferror (r0);
                                                                 | label_5:
    0x0001259c mov r0, sb                                        |         r0 = sb;
    0x0001259e bl 0x10570                                        |         fcn_00010570 (r0);
    0x000125a2 mov r0, r8                                        |         r0 = r8;
    0x000125a4 blx 0x3530                                        |         ferror (r0);
    0x000125a8 b 0x124ba                                         |         
                                                                 |     } while (1);
                                                                 | label_30:
    0x000125aa ldr r3, [r7, 0x30]                                |     r3 = var_30h;
    0x000125ac orrs r3, r6                                       |     r3 |= r6;
                                                                 |     if (r3 == r6) {
    0x000125ae beq.w 0x12400                                     |         goto label_1;
                                                                 |     }
    0x000125b2 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x000125b4 beq.w 0x12418                                     |         goto label_2;
                                                                 |     }
    0x000125b8 add.w r1, r7, 0x40                                |     r1 += stream;
    0x000125bc mov r0, r6                                        |     r0 = r6;
    0x000125be bl 0x1827c                                        |     fcn_0001827c (r0, r1, r2, r3);
    0x000125c0 cdp2 p14, 5, c1, c13, c1, 0                       |     __asm ("cdp2 p14, 5, c1, c13, c1, 0");
                                                                 |     if (r6 < 0) {
    0x000125c4 blt 0x1265c                                       |         goto label_32;
                                                                 |     }
    0x000125c6 ldr.w r1, [pc, 0x560]                             |     
    0x000125ca ldr r0, [r7, 0x40]                                |     r0 = stream;
    0x000125cc add r1, pc                                        |     r1 = 0x250fa;
    0x000125ce bl 0x19e5c                                        |     fcn_00019e5c (r0, r1);
    0x000125d2 ldr r0, [r7, 0x40]                                |     r0 = stream;
    0x000125d4 bl 0x1847c                                        |     fcn_0001847c (r0, r1, r2);
    0x000125d6 vabd.u16 q8, q9, q12                              |     __asm ("vabd.u16 q8, q9, q12");
                                                                 |     if (r6 >= 0) {
    0x000125da bpl.w 0x12418                                     |         goto label_2;
                                                                 |     }
    0x000125de ldrb r3, [r4]                                     |     r3 = *(r4);
    0x000125e0 cmp r3, 0x2f                                      |     
                                                                 |     if (r3 != 0x2f) {
    0x000125e2 bne.w 0x12392                                     |         goto label_0;
                                                                 |     }
    0x000125e6 ldr r6, [r7, 0x40]                                |     r6 = stream;
    0x000125e8 mov r3, r4                                        |     r3 = r4;
                                                                 |     do {
    0x000125ea mov r4, r3                                        |         r4 = r3;
    0x000125ec adds r3, 1                                        |         r3++;
    0x000125ee ldrb r2, [r4, 1]                                  |         r2 = *((r4 + 1));
    0x000125f0 cmp r2, 0x2f                                      |         
    0x000125f2 beq 0x125ea                                       |         
                                                                 |     } while (r2 == 0x2f);
    0x000125f4 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x000125f6 beq.w 0x12418                                     |         goto label_2;
                                                                 |     }
    0x000125fa ldrb r3, [r6]                                     |     r3 = *(r6);
    0x000125fc cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000125fe beq.w 0x12418                                     |         goto label_2;
                                                                 |     }
    0x00012602 mov r0, r6                                        |     r0 = r6;
    0x00012604 blx 0x37c8                                        |     r0 = fcn_000037c8 ();
    0x00012608 mov sb, r0                                        |     sb = r0;
    0x0001260a mov r0, r4                                        |     r0 = r4;
    0x0001260c blx 0x37c8                                        |     r0 = fcn_000037c8 ();
    0x00012610 add.w r3, sb, r0                                  |     r3 = sb + r0;
    0x00012614 mov r8, r0                                        |     r8 = r0;
    0x00012616 adds r2, r3, 2                                    |     r2 = r3 + 2;
    0x00012618 cmp.w r2, 0x400000                                |     
                                                                 |     if (r2 > 0x400000) {
    0x0001261c bhi.w 0x12a42                                     |         goto label_49;
                                                                 |     }
    0x00012620 adds r3, 9                                        |     r3 += 9;
    0x00012622 mov r1, r6                                        |     r1 = r6;
    0x00012624 bic r3, r3, 7                                     |     r3 = BIT_MASK (r3, 7);
    0x00012628 sub.w sp, sp, r3                                  |     
    0x0001262c add r6, sp, 0x10                                  |     r6 += var_10h;
    0x0001262e mov r0, r6                                        |     r0 = r6;
    0x00012630 blx 0x35b4                                        |     r0 = strdup (r0);
    0x00012634 cmp r0, r6                                        |     
    0x00012636 mov r3, r0                                        |     r3 = r0;
                                                                 |     if (r0 > r6) {
    0x00012638 bhi 0x12642                                       |         goto label_50;
                                                                 |     }
    0x0001263a b 0x1264e                                         |     goto label_15;
                                                                 |     do {
    0x0001263c cmp r6, r3                                        |         
                                                                 |         if (r6 == r3) {
    0x0001263e beq.w 0x12970                                     |             goto label_51;
                                                                 |         }
                                                                 | label_50:
    0x00012642 ldrb r2, [r3, -0x1]                               |         r2 = *((r3 - 0x1));
    0x00012646 mov r0, r3                                        |         r0 = r3;
    0x00012648 subs r3, 1                                        |         r3--;
    0x0001264a cmp r2, 0x2f                                      |         
    0x0001264c beq 0x1263c                                       |         
                                                                 |     } while (r2 == 0x2f);
                                                                 | label_15:
    0x0001264e mov r1, r4                                        |     r1 = r4;
    0x00012650 add.w r2, r8, 1                                   |     r2 = r8 + 1;
    0x00012654 mov r4, r6                                        |     r4 = r6;
    0x00012656 blx 0x3578                                        |     mmap64 ()
    0x0001265a b 0x12418                                         |     goto label_2;
                                                                 | label_32:
    0x0001265c mov.w r6, -1                                      |     r6 = -1;
    0x00012660 b 0x1239a                                         |     goto label_3;
                                                                 | label_35:
    0x00012662 add.w r1, r7, 0x50                                |     r1 += var_50h;
    0x00012666 blx 0x3a30                                        |     r0 = fcn_00003a30 ();
    0x0001266a cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x0001266c bge.w 0x12448                                     |         goto label_4;
                                                                 |     }
                                                                 | label_34:
    0x00012670 blx 0x3828                                        |     r0 = fcn_00003828 ();
    0x00012674 ldr r1, [r0]                                      |     r1 = *(r0);
    0x00012676 rsbs r1, r1, 0                                    |     r1 -= ;
    0x00012678 b 0x1239a                                         |     goto label_3;
                                                                 | label_38:
    0x0001267a tst.w r5, 0x80                                    |     
    0x0001267e ite ne                                            |     
                                                                 |     if ((r5 & 0x80) == 0) {
    0x00012680 movne r5, 4                                       |         r5 = 4;
                                                                 |     }
                                                                 |     if ((r5 & 0x80) != 0) {
    0x00012682 moveq r5, 7                                       |         r5 = 7;
                                                                 |     }
    0x00012684 bl 0x15ca8                                        |     r0 = fcn_00015ca8 ();
    0x00012688 cmp r0, r5                                        |     
    0x0001268a it lt                                             |     
                                                                 |     if (r0 < r5) {
    0x0001268c mvnlt r1, 0x2b                                    |         r1 = ~0x2b;
                                                                 |         goto label_52;
                                                                 |     }
                                                                 |     if (r0 < r5) {
                                                                 | label_52:
    0x00012690 blt.w 0x1239a                                     |         goto label_3;
                                                                 |     }
    0x00012694 strd r4, r8, [sp, 8]                              |     __asm ("strd r4, r8, [src]");
    0x00012698 movs r1, 0x2c                                     |     r1 = 0x2c;
    0x0001269a ldr.w r2, [pc, 0x490]                             |     
    0x0001269e movt r1, 0x4000                                   |     r1 = (r1 & 0xFFFF) | 0x40000000;
    0x000126a2 ldr.w ip, [pc, 0x48c]                             |     
    0x000126a6 mov r0, r5                                        |     r0 = r5;
    0x000126a8 ldr.w r4, [pc, 0x488]                             |     
    0x000126ac movw r3, 0x387                                    |     r3 = 0x387;
    0x000126b0 add r2, pc                                        |     r2 = 0x251e2;
    0x000126b2 add ip, pc                                        |     ip = 0x251e8;
    0x000126b4 adds r2, 7                                        |     r2 += 7;
    0x000126b6 add r4, pc                                        |     r4 = 0x251ee;
    0x000126b8 strd r4, ip, [sp]                                 |     __asm ("strd r4, ip, [sp]");
    0x000126bc bl 0x164ec                                        |     r0 = fcn_000164ec (r0, r1, r2);
    0x000126c0 subs r1, r0, 0                                    |     r1 = r0 - 0;
    0x000126c2 it ge                                             |     
                                                                 |     if (r1 < r0) {
    0x000126c4 mvnge r1, 0x55                                    |         r1 = ~0x55;
                                                                 |     }
    0x000126c8 b 0x1239a                                         |     goto label_3;
                                                                 | label_42:
    0x000126ca mov.w r2, 0x288000                                |     r2 = 0x288000;
    0x000126ce mov r1, r8                                        |     r1 = r8;
    0x000126d0 mov r0, r6                                        |     r0 = r6;
    0x000126d2 blx 0x37ec                                        |     r0 = fcn_000037ec ();
    0x000126d6 subs.w sb, r0, 0                                  |     sb = r0 - 0;
                                                                 |     if (sb < r0) {
    0x000126da blt.w 0x12a18                                     |         goto label_53;
                                                                 |     }
    0x000126de add.w sl, r7, 0xb8                                |     sl += var_b8h;
    0x000126e2 mov r1, sl                                        |     r1 = sl;
    0x000126e4 blx 0x3a30                                        |     r0 = fcn_00003a30 ();
    0x000126e8 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x000126ea blt.w 0x12a38                                     |         goto label_54;
                                                                 |     }
    0x000126ee ldr r3, [r7, 0x18]                                |     r3 = var_18h;
    0x000126f0 add.w fp, r7, 0x50                                |     
    0x000126f4 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000126f6 bne.w 0x12828                                     |         goto label_55;
                                                                 |     }
                                                                 | label_7:
    0x000126fa mov r1, sl                                        |     r1 = sl;
    0x000126fc movs r2, 0x68                                     |     r2 = 0x68;
    0x000126fe mov r0, fp                                        |     r0 = fp;
    0x00012700 blx 0x3578                                        |     mmap64 ()
    0x00012702 invalid                                           |     
                                                                 |     if (r2 < 0x68) {
    0x00012706 bmi.w 0x12846                                     |         goto label_56;
                                                                 |     }
                                                                 | label_9:
    0x0001270a ldr.w r3, [r7, 0xc8]                              |     r3 = var_c8h;
    0x0001270e and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x00012712 cmp.w r3, 0xa000                                  |     
                                                                 |     if (r3 != 0xa000) {
    0x00012716 bne 0x127be                                       |         goto label_57;
                                                                 |     }
    0x00012718 lsls r3, r5, 0x19                                 |     r3 = r5 << 0x19;
                                                                 |     if (r3 < r5) {
    0x0001271a bpl 0x12728                                       |         
    0x0001271c ldr r3, [r7, 0x44]                                |         r3 = var_44h;
    0x0001271e cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00012720 beq 0x127be                                       |             goto label_57;
                                                                 |         }
    0x00012722 ldrb r3, [r3]                                     |         r3 = *(r3);
    0x00012724 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00012726 beq 0x127be                                       |             goto label_57;
                                                                 |         }
                                                                 |     }
    0x00012728 movs r3, 0                                        |     r3 = 0;
    0x0001272a str r3, [r7, 0x4c]                                |     var_4ch = r3;
    0x0001272c ldr r3, [r7, 0x14]                                |     r3 = var_14h;
    0x0001272e subs r3, 1                                        |     r3--;
    0x00012730 str r3, [r7, 0x14]                                |     var_14h = r3;
                                                                 |     if (r3 == 1) {
    0x00012732 beq.w 0x12ac8                                     |         goto label_58;
                                                                 |     }
    0x00012736 add.w r3, r7, 0x4c                                |     r3 += var_4ch;
    0x0001273a mov r1, r8                                        |     r1 = r8;
    0x0001273c mov r2, r3                                        |     r2 = r3;
    0x0001273e mov r0, r6                                        |     r0 = r6;
    0x00012740 str r3, [r7, 0x10]                                |     var_10h_2 = r3;
    0x00012742 bl 0x11e4c                                        |     r0 = fcn_00011e4c (r0);
    0x00012746 subs r1, r0, 0                                    |     r1 = r0 - 0;
    0x00012748 ldr r3, [r7, 0x10]                                |     r3 = var_10h_2;
    0x0001274a ldr r0, [r7, 0x4c]                                |     r0 = var_4ch;
                                                                 |     if (r1 < r0) {
    0x0001274c blt 0x127ee                                       |         goto label_13;
                                                                 |     }
    0x0001274e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00012750 beq 0x127ea                                       |         goto label_59;
                                                                 |     }
    0x00012752 ldrb r2, [r0]                                     |     r2 = *(r0);
    0x00012754 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00012756 beq 0x127ea                                       |         goto label_59;
                                                                 |     }
    0x00012758 cmp r2, 0x2f                                      |     
                                                                 |     if (r2 == 0x2f) {
    0x0001275a beq.w 0x128f0                                     |         goto label_60;
                                                                 |     }
                                                                 | label_12:
    0x0001275e ldr r1, [r7, 0x44]                                |     r1 = var_44h;
    0x00012760 mov r0, r3                                        |     r0 = r3;
    0x00012762 mov.w r2, -1                                      |     r2 = -1;
    0x00012766 bl 0x1812c                                        |     r0 = fcn_0001812c (r0, r1);
    0x0001276a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001276c beq.w 0x12ad0                                     |         goto label_61;
                                                                 |     }
    0x00012770 ldr r0, [r7, 0x38]                                |     r0 = var_38h;
    0x00012772 blx 0x3530                                        |     ferror (r0);
    0x00012776 ldr r3, [r7, 0x4c]                                |     r3 = var_4ch;
    0x00012778 str r3, [r7, 0x38]                                |     var_38h = r3;
    0x0001277a str r3, [r7, 0x44]                                |     var_44h = r3;
    0x0001277c ldr r3, [r7, 0x2c]                                |     r3 = var_2ch;
    0x0001277e cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00012780 beq.w 0x1259c                                     |         goto label_5;
                                                                 |     }
    0x00012784 mov r0, sb                                        |     r0 = sb;
    0x00012786 bl 0x10570                                        |     fcn_00010570 (r0);
    0x0001278a mov r0, r8                                        |     r0 = r8;
    0x0001278c blx 0x3530                                        |     ferror (r0);
    0x00012790 ldr r3, [r7, 0x30]                                |     r3 = var_30h;
    0x00012792 mov r1, r3                                        |     r1 = r3;
    0x00012794 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00012796 beq.w 0x1239a                                     |         goto label_3;
                                                                 |     }
    0x0001279a movs r1, 1                                        |     r1 = 1;
    0x0001279c ldr r0, [r7, 0x28]                                |     r0 = var_28h;
    0x0001279e add.w r2, r7, 0xb8                                |     r2 += var_b8h;
    0x000127a2 bl 0x183bc                                        |     r0 = fcn_000183bc (r0, r1, r2);
    0x000127a6 subs r1, r0, 0                                    |     r1 = r0 - 0;
                                                                 |     if (r1 < r0) {
    0x000127a8 blt.w 0x1239a                                     |         goto label_3;
                                                                 |     }
    0x000127ac ldr r0, [r7, 0x3c]                                |     r0 = var_38h_2;
    0x000127ae it eq                                             |     
                                                                 |     if (r1 != r0) {
    0x000127b0 streq r1, [r7, 0x3c]                              |         var_38h_2 = r1;
                                                                 |     }
                                                                 |     if (r1 != r0) {
    0x000127b2 bne.w 0x129fc                                     |         goto label_62;
                                                                 |     }
                                                                 | label_19:
    0x000127b6 ldr r3, [r7, 0x30]                                |     r3 = var_30h;
    0x000127b8 movs r1, 0                                        |     r1 = 0;
    0x000127ba str r0, [r3]                                      |     *(r3) = r0;
    0x000127bc b 0x1239a                                         |     goto label_3;
                                                                 | label_57:
    0x000127be mov.w r2, -1                                      |     r2 = -1;
    0x000127c2 mov r1, r8                                        |     r1 = r8;
    0x000127c4 add.w r0, r7, 0x3c                                |     r0 += var_38h_2;
    0x000127c8 bl 0x1812c                                        |     r0 = fcn_0001812c (r0, r1);
    0x000127cc cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000127ce beq.w 0x12aac                                     |         goto label_63;
                                                                 |     }
    0x000127d2 mov r0, r6                                        |     r0 = r6;
    0x000127d4 mov r6, sb                                        |     r6 = sb;
    0x000127d6 bl 0x10570                                        |     fcn_00010570 (r0);
    0x000127da mov.w r0, -1                                      |     r0 = -1;
    0x000127de bl 0x10570                                        |     fcn_00010570 (r0);
    0x000127e2 mov r0, r8                                        |     r0 = r8;
    0x000127e4 blx 0x3530                                        |     ferror (r0);
    0x000127e8 b 0x124ba                                         |     goto label_6;
                                                                 | label_59:
    0x000127ea mvn r1, 0x15                                      |     r1 = ~0x15;
                                                                 | label_13:
    0x000127ee str r1, [r7, 0x34]                                |     var_34h = r1;
    0x000127f0 blx 0x3530                                        |     ferror (r0);
    0x000127f4 ldr r1, [r7, 0x34]                                |     r1 = var_34h;
                                                                 | label_8:
    0x000127f6 mov r0, sb                                        |     r0 = sb;
    0x000127f8 str r1, [r7, 0x34]                                |     var_34h = r1;
    0x000127fa bl 0x10570                                        |     fcn_00010570 (r0);
    0x000127fe mov r0, r8                                        |     r0 = r8;
    0x00012800 blx 0x3530                                        |     ferror (r0);
    0x00012804 ldr r1, [r7, 0x34]                                |     r1 = var_34h;
    0x00012806 b 0x1239a                                         |     goto label_3;
                                                                 | label_31:
    0x00012808 lsls r1, r5, 9                                    |     r1 = r5 << 9;
    0x0001280a mov r0, r4                                        |     r0 = r4;
    0x0001280c and r1, r1, 0x8000                                |     r1 &= 0x8000;
    0x00012810 orr r1, r1, 0x280000                              |     r1 |= 0x280000;
    0x00012814 blx 0x3810                                        |     r0 = fcn_00003810 ();
    0x00012818 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0001281a blt 0x128d4                                       |         goto label_64;
                                                                 |     }
    0x0001281c ldr r3, [r7, 0x34]                                |     r3 = var_34h;
    0x0001281e mov.w r6, -1                                      |     r6 = -1;
    0x00012822 movs r1, 0                                        |     r1 = 0;
    0x00012824 str r0, [r3]                                      |     *(r3) = r0;
    0x00012826 b 0x1239a                                         |     goto label_3;
                                                                 | label_55:
    0x00012828 mov r1, sl                                        |     r1 = sl;
    0x0001282a mov r0, fp                                        |     r0 = fp;
    0x0001282c bl 0x12330                                        |     r0 = fcn_00012330 (r0, r1);
    0x00012830 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00012832 beq.w 0x126fa                                     |         goto label_7;
                                                                 |     }
    0x00012836 mov r1, sb                                        |     r1 = sb;
    0x00012838 mov r3, r5                                        |     r3 = r5;
    0x0001283a mov r2, r4                                        |     r2 = r4;
    0x0001283c mov r0, r6                                        |     r0 = r6;
    0x0001283e bl 0x11ce0                                        |     r0 = fcn_00011ce0 (r0, r1, r2, r3);
    0x00012842 mov r1, r0                                        |     r1 = r0;
    0x00012844 b 0x127f6                                         |     goto label_8;
                                                                 | label_56:
    0x00012846 movw r1, 0x187                                    |     r1 = 0x187;
    0x0001284a mov r0, sb                                        |     r0 = sb;
    0x0001284c bl 0x19ca4                                        |     r0 = fcn_00019ca4 (r0);
    0x00012850 cmp r0, 0                                         |     
                                                                 |     if (r0 <= 0) {
    0x00012852 ble.w 0x1270a                                     |         goto label_9;
                                                                 |     }
    0x00012856 lsls r2, r5, 0x18                                 |     r2 = r5 << 0x18;
    0x00012858 mov.w r3, 0                                       |     r3 = 0;
    0x0001285c str r3, [r7, 0x4c]                                |     var_4ch = r3;
                                                                 |     if (r2 >= r5) {
    0x0001285e bpl.w 0x12b00                                     |         goto label_65;
                                                                 |     }
    0x00012862 add.w r1, r7, 0x4c                                |     r1 += var_4ch;
    0x00012866 mov r0, sb                                        |     r0 = sb;
    0x00012868 bl 0x10654                                        |     r0 = fcn_00010654 (r0, r1);
    0x0001286c bl 0x15ca8                                        |     r0 = fcn_00015ca8 ();
    0x00012870 cmp r0, 3                                         |     
                                                                 |     if (r0 <= 3) {
    0x00012872 ble.w 0x12b00                                     |         goto label_65;
                                                                 |     }
    0x00012876 ldr r1, [r7, 0x4c]                                |     r1 = var_4ch;
    0x00012878 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x0001287a beq.w 0x12ae4                                     |         goto label_66;
                                                                 |     }
                                                                 | label_24:
    0x0001287e ldr r2, [pc, 0x2b8]                               |     
    0x00012880 ldr r3, [pc, 0x2b8]                               |     
    0x00012882 ldr r0, [pc, 0x2bc]                               |     
    0x00012884 str r1, [sp, 8]                                   |     src = r1;
    0x00012886 add r2, pc                                        |     r2 = 0x253c4;
    0x00012888 add r3, pc                                        |     r3 = 0x253c8;
    0x0001288a movs r1, 0x42                                     |     r1 = 0x42;
    0x0001288c add r0, pc                                        |     r0 = 0x253d2;
    0x0001288e movt r1, 0x4000                                   |     r1 = (r1 & 0xFFFF) | 0x40000000;
    0x00012892 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00012894 adds r2, 7                                        |     r2 += 7;
    0x00012896 str r0, [sp]                                      |     *(sp) = r0;
    0x00012898 mov.w r3, 0x304                                   |     r3 = 0x304;
    0x0001289c movs r0, 4                                        |     r0 = 4;
    0x0001289e str r4, [sp, 0xc]                                 |     var_ch = r4;
    0x000128a0 bl 0x164ec                                        |     r0 = fcn_000164ec (r0, r1, r2);
    0x000128a4 subs r1, r0, 0                                    |     r1 = r0 - 0;
    0x000128a6 it ge                                             |     
                                                                 |     if (r1 < r0) {
    0x000128a8 mvnge r1, 0x55                                    |         r1 = ~0x55;
                                                                 |     }
                                                                 | label_25:
    0x000128ac ldr r0, [r7, 0x4c]                                |     r0 = var_4ch;
    0x000128ae str r1, [r7, 0x34]                                |     var_34h = r1;
    0x000128b0 blx 0x3530                                        |     ferror (r0);
    0x000128b4 ldr r1, [r7, 0x34]                                |     r1 = var_34h;
    0x000128b6 b 0x127f6                                         |     goto label_8;
                                                                 | label_33:
    0x000128b8 ldr r0, [pc, 0x288]                               |     
    0x000128ba add r0, pc                                        |     r0 = 0x25402;
    0x000128bc b 0x12430                                         |     goto label_10;
                                                                 | label_26:
    0x000128be ldr r1, [pc, 0x288]                               |     
    0x000128c0 movw r2, 0x312                                    |     r2 = 0x312;
    0x000128c4 ldr r3, [pc, 0x284]                               |     
    0x000128c6 ldr r0, [pc, 0x288]                               |     
    0x000128c8 add r1, pc                                        |     r1 = 0x25416;
    0x000128ca add r3, pc                                        |     r3 = 0x2541a;
    0x000128cc adds r1, 7                                        |     r1 += 7;
    0x000128ce add r0, pc                                        |     r0 = 0x25424;
    0x000128d0 bl 0x16594                                        |     r0 = fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_64:
    0x000128d4 blx 0x3828                                        |     r0 = fcn_00003828 ();
    0x000128d8 ldr r1, [r0]                                      |     r1 = *(r0);
    0x000128da mov.w r6, -1                                      |     r6 = -1;
    0x000128de rsbs r1, r1, 0                                    |     r1 -= ;
    0x000128e0 b 0x1239a                                         |     goto label_3;
                                                                 | label_37:
    0x000128e2 ldr r0, [pc, 0x270]                               |     
    0x000128e4 str.w sb, [r7, 0x44]                              |     __asm ("str.w sb, [var_44h]");
    0x000128e8 add r0, pc                                        |     r0 = 0x25442;
    0x000128ea blx 0x35c4                                        |     fcn_000035c4 ();
    0x000128ee b 0x12490                                         |     goto label_11;
                                                                 | label_60:
    0x000128f0 mov r0, r6                                        |     r0 = r6;
    0x000128f2 str r3, [r7, 0x10]                                |     var_10h_2 = r3;
    0x000128f4 bl 0x10570                                        |     fcn_00010570 (r0);
    0x000128f6 mrc2 p12, 1, r6, c12, c8, 1                       |     __asm ("mrc2 p12, 1, r6, c12, c8, 1");
    0x000128fa ldr r3, [r7, 0x10]                                |     r3 = var_10h_2;
    0x000128fc cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000128fe beq 0x129f2                                       |         goto label_67;
                                                                 |     }
                                                                 | label_17:
    0x00012900 mov.w r1, 0x284000                                |     r1 = 0x284000;
    0x00012904 str r3, [r7, 0x10]                                |     var_10h_2 = r3;
    0x00012906 blx 0x36ec                                        |     r0 = asprintf_chk ();
    0x0001290a subs r6, r0, 0                                    |     r6 = r0 - 0;
    0x0001290c ldr r3, [r7, 0x10]                                |     r3 = var_10h_2;
                                                                 |     if (r6 < r0) {
    0x0001290e blt.w 0x12ad8                                     |         goto label_68;
                                                                 |     }
    0x00012912 ldr r2, [r7, 0x18]                                |     r2 = var_18h;
    0x00012914 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00012916 bne 0x129c0                                       |         goto label_69;
                                                                 |     }
                                                                 | label_16:
    0x00012918 ldr r1, [r7, 0x40]                                |     r1 = stream;
    0x0001291a cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x0001291c beq 0x129f8                                       |         goto label_70;
                                                                 |     }
    0x0001291e ldrb r2, [r1]                                     |     r2 = *(r1);
    0x00012920 cmp r2, 0                                         |     
    0x00012922 ldr r2, [r7, 8]                                   |     r2 = var_8h_2;
    0x00012924 it eq                                             |     
                                                                 |     if (r2 != 0) {
    0x00012926 moveq r1, r2                                      |         r1 = r2;
                                                                 |     }
                                                                 | label_18:
    0x00012928 add.w r0, r7, 0x3c                                |     r0 += var_38h_2;
    0x0001292c str r3, [r7, 0x10]                                |     var_10h_2 = r3;
    0x0001292e bl 0x1a050                                        |     fcn_0001a050 (r0, r1);
    0x00012932 subs r1, r0, 0                                    |     r1 -= var_38h_2;
    0x00012934 ldr r3, [r7, 0x10]                                |     r3 = var_10h_2;
                                                                 |     if (r1 >= var_38h_2) {
    0x00012936 bge.w 0x1275e                                     |         goto label_12;
                                                                 |     }
    0x0001293a ldr r0, [r7, 0x4c]                                |     r0 = var_4ch;
    0x0001293c b 0x127ee                                         |     goto label_13;
                                                                 | label_36:
    0x0001293e ldr r1, [pc, 0x218]                               |     
    0x00012940 mov r0, sb                                        |     r0 = sb;
    0x00012942 add r1, pc                                        |     r1 = 0x254a0;
    0x00012944 bl 0x1af54                                        |     r0 = fcn_0001af54 (r0, r1);
    0x00012948 subs r3, r0, 0                                    |     r3 = r0 - 0;
    0x0001294a it ne                                             |     
                                                                 |     if (r3 == r0) {
    0x0001294c movne r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x0001294e str r3, [r7, 0xc]                                 |     var_ch_2 = r3;
    0x00012950 b 0x1246c                                         |     goto label_14;
                                                                 | label_48:
    0x00012952 mov r1, sb                                        |     r1 = sb;
    0x00012954 mov r3, r5                                        |     r3 = r5;
    0x00012956 mov r2, r4                                        |     r2 = r4;
    0x00012958 mov r0, r6                                        |     r0 = r6;
    0x0001295a bl 0x11ce0                                        |     r0 = fcn_00011ce0 (r0, r1, r2, r3);
    0x0001295e mov r1, r0                                        |     r1 = r0;
                                                                 | label_20:
    0x00012960 mov r0, sb                                        |     r0 = sb;
    0x00012962 str r1, [r7, 0x34]                                |     var_34h = r1;
    0x00012964 mov.w sb, -1                                      |     sb = -1;
    0x00012968 bl 0x10570                                        |     fcn_00010570 (r0);
    0x0001296c ldr r1, [r7, 0x34]                                |     r1 = var_34h;
    0x0001296e b 0x127f6                                         |     goto label_8;
                                                                 | label_51:
    0x00012970 mov r0, r6                                        |     r0 = r6;
    0x00012972 b 0x1264e                                         |     goto label_15;
                                                                 | label_39:
    0x00012974 mov.w sb, -1                                      |     sb = -1;
    0x00012978 mov.w r8, 0                                       |     r8 = 0;
    0x0001297c b 0x127f6                                         |     goto label_8;
                                                                 | label_40:
    0x0001297e ldr r3, [r7, 0xc]                                 |     r3 = var_ch_2;
    0x00012980 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00012982 bne 0x12a62                                       |         goto label_71;
                                                                 |     }
                                                                 | label_21:
    0x00012984 mov.w sb, -1                                      |     sb = -1;
    0x00012988 mov.w r8, 0                                       |     r8 = 0;
    0x0001298c movs r4, 1                                        |     r4 = 1;
                                                                 | label_23:
    0x0001298e mov r0, sb                                        |     r0 = sb;
    0x00012990 bl 0x10570                                        |     fcn_00010570 (r0);
    0x00012994 mov r0, r8                                        |     r0 = r8;
    0x00012996 blx 0x3530                                        |     ferror (r0);
    0x0001299a ldr r3, [r7, 0x30]                                |     r3 = var_30h;
                                                                 |     if (r3 != 0) {
    0x0001299c cbz r3, 0x129a8                                   |         
    0x0001299e ldr r3, [r7, 0x3c]                                |         r3 = var_38h_2;
    0x000129a0 ldr r2, [r7, 0x30]                                |         r2 = var_30h;
    0x000129a2 str r3, [r2]                                      |         *(r2) = r3;
    0x000129a4 movs r3, 0                                        |         r3 = 0;
    0x000129a6 str r3, [r7, 0x3c]                                |         var_38h_2 = r3;
                                                                 |     }
    0x000129a8 ldr r3, [r7, 0x34]                                |     r3 = var_34h;
                                                                 |     if (r3 != 0) {
    0x000129aa cbz r3, 0x129b4                                   |         
    0x000129ac ldr r3, [r7, 0x34]                                |         r3 = var_34h;
    0x000129ae str r6, [r3]                                      |         *(r3) = r6;
    0x000129b0 mov.w r6, -1                                      |         r6 = -1;
                                                                 |     }
    0x000129b4 ldr r3, [r7, 0x2c]                                |     r3 = var_2ch;
    0x000129b6 cmp r3, 0                                         |     
    0x000129b8 ite eq                                            |     
                                                                 |     if (r3 != 0) {
    0x000129ba moveq r1, r4                                      |         r1 = r4;
                                                                 |     }
                                                                 |     if (r3 == 0) {
    0x000129bc movne r1, 1                                       |         r1 = 1;
                                                                 |     }
    0x000129be b 0x1239a                                         |     goto label_3;
                                                                 | label_69:
    0x000129c0 mov r1, sl                                        |     r1 = sl;
    0x000129c2 str r3, [r7, 0x10]                                |     var_10h_2 = r3;
    0x000129c4 blx 0x3a30                                        |     r0 = fcn_00003a30 ();
    0x000129c8 cmp r0, 0                                         |     
    0x000129ca ldr r3, [r7, 0x10]                                |     r3 = var_10h_2;
                                                                 |     if (r0 < 0) {
    0x000129cc blt.w 0x12ad8                                     |         goto label_68;
                                                                 |     }
    0x000129d0 mov r1, sl                                        |     r1 = sl;
    0x000129d2 mov r0, fp                                        |     r0 = fp;
    0x000129d4 str r3, [r7, 0x10]                                |     var_10h_2 = r3;
    0x000129d6 bl 0x12330                                        |     fcn_00012330 (r0, r1);
    0x000129da ldr r3, [r7, 0x10]                                |     r3 = var_10h_2;
    0x000129dc cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000129de bne.w 0x12aee                                     |         goto label_72;
                                                                 |     }
    0x000129e2 mov r1, sl                                        |     r1 = sl;
    0x000129e4 mov r0, fp                                        |     r0 = fp;
    0x000129e6 movs r2, 0x68                                     |     r2 = 0x68;
    0x000129e8 str r3, [r7, 0x10]                                |     var_10h_2 = r3;
    0x000129ea blx 0x3578                                        |     mmap64 ()
    0x000129ee ldr r3, [r7, 0x10]                                |     r3 = var_10h_2;
    0x000129f0 b 0x12918                                         |     goto label_16;
                                                                 | label_67:
    0x000129f2 ldr r0, [pc, 0x168]                               |     
    0x000129f4 add r0, pc                                        |     r0 = 0x25556;
    0x000129f6 b 0x12900                                         |     goto label_17;
                                                                 | label_70:
    0x000129f8 ldr r1, [r7, 4]                                   |     r1 = var_4h_2;
    0x000129fa b 0x12928                                         |     goto label_18;
                                                                 | label_62:
    0x000129fc mov r1, r0                                        |     r1 = r0;
    0x000129fe ldr.w r2, [r7, 0xb8]                              |     r2 = var_b8h;
    0x00012a02 mov.w r3, -1                                      |     r3 = -1;
    0x00012a06 movs r0, 0                                        |     r0 = 0;
    0x00012a08 bl 0x1812c                                        |     fcn_0001812c (r0, r1);
    0x00012a0c mvn r1, 0xb                                       |     r1 = ~0xb;
    0x00012a10 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00012a12 bne.w 0x127b6                                     |         goto label_19;
                                                                 |     }
    0x00012a16 b 0x1239a                                         |     goto label_3;
                                                                 | label_53:
    0x00012a18 blx 0x3828                                        |     r0 = fcn_00003828 ();
    0x00012a1c ldr r4, [r0]                                      |     r4 = *(r0);
    0x00012a1e ldr r2, [r7, 0x1c]                                |     r2 = var_1ch;
    0x00012a20 sub.w r3, r4, 2                                   |     r3 = r4 - 2;
    0x00012a24 clz r3, r3                                        |     r3 &= r3;
    0x00012a28 cmp r2, 0                                         |     
    0x00012a2a lsr.w r3, r3, 5                                   |     r3 >>= 5;
    0x00012a2e it eq                                             |     
                                                                 |     if (r2 != 0) {
    0x00012a30 moveq r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 != 0) {
    0x00012a32 cbnz r3, 0x12a80                                  |         goto label_73;
                                                                 |     }
                                                                 | label_22:
    0x00012a34 rsbs r1, r4, 0                                    |     r1 = r4 - ;
    0x00012a36 b 0x127f6                                         |     goto label_8;
                                                                 | label_54:
    0x00012a38 blx 0x3828                                        |     r0 = fcn_00003828 ();
    0x00012a3c ldr r1, [r0]                                      |     r1 = *(r0);
    0x00012a3e rsbs r1, r1, 0                                    |     r1 -= ;
    0x00012a40 b 0x127f6                                         |     goto label_8;
                                                                 | label_49:
    0x00012a42 ldr r1, [pc, 0x11c]                               |     
    0x00012a44 movw r2, 0x36f                                    |     r2 = 0x36f;
    0x00012a48 ldr r3, [pc, 0x118]                               |     
    0x00012a4a ldr r0, [pc, 0x11c]                               |     
    0x00012a4c add r1, pc                                        |     r1 = 0x255b2;
    0x00012a4e add r3, pc                                        |     r3 = 0x255b6;
    0x00012a50 adds r1, 7                                        |     r1 += 7;
    0x00012a52 add r0, pc                                        |     r0 = 0x255c0;
    0x00012a54 bl 0x16594                                        |     r0 = fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_47:
    0x00012a58 blx 0x3828                                        |     r0 = fcn_00003828 ();
    0x00012a5c ldr r1, [r0]                                      |     r1 = *(r0);
    0x00012a5e rsbs r1, r1, 0                                    |     r1 -= ;
    0x00012a60 b 0x12960                                         |     goto label_20;
                                                                 | label_71:
    0x00012a62 ldr r2, [pc, 0x108]                               |     
    0x00012a64 mov r3, r1                                        |     r3 = r1;
    0x00012a66 add.w r0, r7, 0x3c                                |     r0 += var_38h_2;
    0x00012a6a add r2, pc                                        |     r2 = 0x255dc;
    0x00012a6c bl 0x19ed8                                        |     r0 = fcn_00019ed8 (r0);
    0x00012a70 mov r8, r0                                        |     r8 = r0;
    0x00012a72 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00012a74 bne 0x12984                                       |         goto label_21;
                                                                 |     }
                                                                 | label_41:
    0x00012a76 mov.w sb, -1                                      |     sb = -1;
    0x00012a7a mvn r1, 0xb                                       |     r1 = ~0xb;
    0x00012a7e b 0x127f6                                         |     goto label_8;
                                                                 | label_73:
    0x00012a80 ldr r5, [r7, 0x44]                                |     r5 = var_44h;
                                                                 |     if (r5 == 0) {
    0x00012a82 cbz r5, 0x12a94                                   |         goto label_74;
                                                                 |     }
    0x00012a84 ldrb r3, [r5]                                     |     r3 = *(r5);
                                                                 |     if (r3 == 0) {
    0x00012a86 cbz r3, 0x12a94                                   |         goto label_74;
                                                                 |     }
    0x00012a88 movs r1, 0                                        |     r1 = 0;
    0x00012a8a mov r0, r5                                        |     r0 = r5;
    0x00012a8c bl 0x188b4                                        |     fcn_000188b4 (r0, r1, r2, r3);
    0x00012a8e vsub.i16 d2, d2, d0                               |     __asm ("vsub.i16 d2, d2, d0");
                                                                 |     if (r1 == 0) {
    0x00012a92 beq 0x12a34                                       |         goto label_22;
                                                                 |     }
                                                                 | label_74:
    0x00012a94 mov r2, r5                                        |     r2 = r5;
    0x00012a96 mov.w r3, -1                                      |     r3 = -1;
    0x00012a9a mov r1, r8                                        |     r1 = r8;
    0x00012a9c add.w r0, r7, 0x3c                                |     r0 += var_38h_2;
    0x00012aa0 movs r4, 0                                        |     r4 = 0;
    0x00012aa2 bl 0x1812c                                        |     r0 = fcn_0001812c (r0, r1);
    0x00012aa6 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00012aa8 bne.w 0x1298e                                     |         goto label_23;
                                                                 |     }
                                                                 | label_63:
    0x00012aac mvn r1, 0xb                                       |     r1 = ~0xb;
    0x00012ab0 b 0x127f6                                         |     goto label_8;
                                                                 | label_43:
    0x00012ab2 mov.w sb, -1                                      |     sb = -1;
    0x00012ab6 mvn r1, 0xb                                       |     r1 = ~0xb;
    0x00012ab8 lsls r3, r1, 4                                    |     r3 = r1 << 4;
    0x00012aba b 0x12960                                         |     goto label_20;
                                                                 | label_46:
    0x00012abc mov.w r0, -1                                      |     r0 = -1;
    0x00012ac0 mov sb, r0                                        |     sb = r0;
    0x00012ac2 bl 0x10570                                        |     fcn_00010570 (r0);
    0x00012ac4 ldc2l p6, c14, [r5, -0x174]                       |     __asm ("ldc2l p6, c14, [r5, -0x174]");
                                                                 | label_58:
    0x00012ac8 ldr r0, [r7, 0x14]                                |     r0 = var_14h;
    0x00012aca mvn r1, 0x27                                      |     r1 = ~0x27;
    0x00012ace b 0x127ee                                         |     goto label_13;
                                                                 | label_61:
    0x00012ad0 ldr r0, [r7, 0x4c]                                |     r0 = var_4ch;
    0x00012ad2 mvn r1, 0xb                                       |     r1 = ~0xb;
    0x00012ad6 b 0x127ee                                         |     goto label_13;
                                                                 | label_68:
    0x00012ad8 blx 0x3828                                        |     r0 = fcn_00003828 ();
    0x00012adc ldr r1, [r0]                                      |     r1 = *(r0);
    0x00012ade ldr r0, [r7, 0x4c]                                |     r0 = var_4ch;
    0x00012ae0 rsbs r1, r1, 0                                    |     r1 -= ;
    0x00012ae2 b 0x127ee                                         |     goto label_13;
                                                                 | label_66:
    0x00012ae4 ldr r1, [pc, 0x88]                                |     
    0x00012ae6 add r1, pc                                        |     r1 = 0x2565a;
    0x00012ae8 b 0x1287e                                         |     goto label_24;
                                                                 | label_29:
    0x00012aea blx 0x35d0                                        |     fcn_000035d0 ();
                                                                 | label_72:
    0x00012aee mov r1, r6                                        |     r1 = r6;
    0x00012af0 mov r3, r5                                        |     r3 = r5;
    0x00012af2 mov r2, r4                                        |     r2 = r4;
    0x00012af4 mov r0, sb                                        |     r0 = sb;
    0x00012af6 bl 0x11ce0                                        |     r0 = fcn_00011ce0 (r0, r1, r2, r3);
    0x00012afa mov r1, r0                                        |     r1 = r0;
    0x00012afc ldr r0, [r7, 0x4c]                                |     r0 = var_4ch;
    0x00012afe b 0x127ee                                         |     goto label_13;
                                                                 | label_65:
    0x00012b00 mvn r1, 0x41                                      |     r1 = ~0x41;
    0x00012b04 b 0x128ac                                         |     goto label_25;
                                                                 | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0x132a0 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.000132a0 ()                          | void fcn_000132a0 (int16_t arg1, int16_t arg2, uint32_t arg3, int16_t arg4) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
                                                     |     r3 = arg4;
    0x000132a0 cmp r2, r3                            |     
    0x000132a2 push.w {r4, r5, r6, r7, r8, lr}       |     
                                                     |     if (r2 == r3) {
    0x000132a6 beq 0x1338e                           |         goto label_5;
                                                     |     }
    0x000132a8 mov r7, r1                            |     r7 = r1;
    0x000132aa adds r1, r2, 5                        |     r1 = r2 + 5;
    0x000132ac mov r4, r2                            |     r4 = r2;
    0x000132ae mov r5, r3                            |     r5 = r3;
    0x000132b0 mov r6, r0                            |     r6 = r0;
                                                     |     if (r1 < r2) {
    0x000132b2 bls 0x132fc                           |         goto label_6;
                                                     |     }
    0x000132b4 adds r3, r2, 3                        |     r3 = r2 + 3;
                                                     |     if (r3 > r2) {
    0x000132b6 bhi.w 0x133e0                         |         goto label_7;
                                                     |     }
    0x000132ba adds r0, r5, 5                        |     r0 = r5 + 5;
    0x000132bc add.w r1, r2, 4                       |     r1 = r2 + 4;
    0x000132c0 add.w r1, r7, r1, lsl 4               |     r1 = r7 + (r1 << 4);
                                                     |     if (r0 < r5) {
    0x000132c4 bls 0x1331e                           |         goto label_8;
                                                     |     }
                                                     |     do {
    0x000132c6 adds r3, r5, 3                        |         r3 = r5 + 3;
                                                     |         if (r3 > r5) {
    0x000132c8 bhi.w 0x133e0                         |             goto label_7;
                                                     |         }
    0x000132cc ldr r3, [pc, 0x128]                   |         
    0x000132ce add.w r8, r5, 4                       |         r8 = r5 + 4;
    0x000132d2 ldrb.w r2, [r6, 0x27]                 |         r2 = *((r6 + 0x27));
    0x000132d6 add.w r8, r7, r8, lsl 4               |         r8 = r7 + (r8 << 4);
    0x000132da add r3, pc                            |         r3 = 0x266d6;
    0x000132dc and r2, r2, 3                         |         r2 &= 3;
    0x000132e0 add.w r3, r3, r2, lsl 4               |         r3 += (r2 << 4);
    0x000132e4 ldr r2, [r3, 4]                       |         r2 = *((r3 + 4));
                                                     | label_0:
    0x000132e6 mov r0, r8                            |         r0 = r8;
    0x000132e8 blx 0x3578                            |         mmap64 ()
    0x000132ec ldrb.w r3, [r6, 0x27]                 |         r3 = *((r6 + 0x27));
    0x000132f0 and r2, r3, 3                         |         r2 = r3 & 3;
    0x000132f4 cmp r2, 1                             |         
                                                     |         if (r2 == 1) {
    0x000132f6 beq 0x1333e                           |             goto label_9;
                                                     |         }
    0x000132f8 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_6:
    0x000132fc ldrb.w r3, [r0, 0x27]                 |         r3 = *((r0 + 0x27));
    0x00013300 lsls r2, r3, 0x1d                     |         r2 = r3 << 0x1d;
    0x00013302 ldr r2, [pc, 0xf8]                    |         
    0x00013304 and r3, r3, 3                         |         r3 &= 3;
    0x00013308 ite mi                                |         
                                                     |         if (r2 >= r3) {
    0x0001330a ldrmi r1, [r0, 4]                     |             r1 = *((r0 + 4));
                                                     |         }
                                                     |         if (r2 < r3) {
    0x0001330c addpl r1, r0, 4                       |             r1 = r0 + 4;
                                                     |         }
    0x0001330e adds r0, r5, 5                        |         r0 = r5 + 5;
    0x00013310 add r2, pc                            |         r2 = 0x26712;
    0x00013312 add.w r3, r2, r3, lsl 4               |         r3 = r2 + (r3 << 4);
    0x00013314 asrs r3, r0, 0xc                      |         r3 = r0 >> 0xc;
    0x00013316 ldr r3, [r3, 4]                       |         r3 = *((r3 + 4));
    0x00013318 mla r1, r3, r4, r1                    |         __asm ("mla r1, r3, r4, r1");
    0x0001331c bhi 0x132c6                           |         
                                                     |     } while (r0 > r5);
                                                     | label_8:
    0x0001331e ldrb.w r3, [r6, 0x27]                 |     r3 = *((r6 + 0x27));
    0x00013322 lsls r2, r3, 0x1d                     |     r2 = r3 << 0x1d;
    0x00013324 ldr r2, [pc, 0xd8]                    |     
    0x00013326 and r3, r3, 3                         |     r3 &= 3;
    0x0001332a ite mi                                |     
                                                     |     if (r2 >= r3) {
    0x0001332c ldrmi r0, [r6, 4]                     |         r0 = *((r6 + 4));
                                                     |     }
                                                     |     if (r2 < r3) {
    0x0001332e addpl r0, r6, 4                       |         r0 = r6 + 4;
                                                     |     }
    0x00013330 add r2, pc                            |     r2 = 0x26734;
    0x00013332 add.w r3, r2, r3, lsl 4               |     r3 = r2 + (r3 << 4);
    0x00013336 ldr r2, [r3, 4]                       |     r2 = *((r3 + 4));
    0x00013338 mla r8, r2, r5, r0                    |     __asm ("mla r8, r2, r5, r0");
    0x0001333c b 0x132e6                             |     goto label_0;
                                                     | label_9:
    0x0001333e ldr.w r2, [r8, 8]                     |     r2 = *((r8 + 8));
    0x00013342 adds r0, r2, 1                        |     r0 = r2 + 1;
                                                     |     if (r0 != r2) {
    0x00013344 bne 0x13374                           |         goto label_10;
                                                     |     }
    0x00013346 ldr.w r2, [r8, 0xc]                   |     r2 = *((r8 + 0xc));
    0x0001334a adds r3, r2, 1                        |     r3 = r2 + 1;
    0x0001334c bne 0x13362                           |     
                                                     |     while (1) {
                                                     | label_1:
    0x0001334e ldr r3, [r6, 0x2c]                    |         r3 = *((r6 + 0x2c));
    0x00013350 cmp r3, r4                            |         
    0x00013352 ldr r3, [r6, 0x30]                    |         r3 = *((r6 + 0x30));
    0x00013354 it eq                                 |         
                                                     |         if (r3 != r4) {
    0x00013356 streq r5, [r6, 0x2c]                  |             *((r6 + 0x2c)) = r5;
                                                     |         }
    0x00013358 cmp r3, r4                            |         
    0x0001335a it eq                                 |         
                                                     |         if (r3 != r4) {
    0x0001335c streq r5, [r6, 0x30]                  |             *((r6 + 0x30)) = r5;
                                                     |         }
    0x0001335e pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_2:
    0x00013362 adds r0, r2, 5                        |         r0 = r2 + 5;
                                                     |         if (r0 < r2) {
    0x00013364 bls 0x133a4                           |             goto label_11;
                                                     |         }
    0x00013366 adds r3, r2, 2                        |         r3 = r2 + 2;
                                                     |         if (r3 == r2) {
    0x00013368 beq 0x133e0                           |             goto label_7;
                                                     |         }
    0x0001336a adds r2, 4                            |         r2 += 4;
    0x0001336c add.w r7, r7, r2, lsl 4               |         r7 += (r2 << 4);
                                                     | label_3:
    0x00013370 str r5, [r7, 8]                       |         *((r7 + 8)) = r5;
    0x00013372 b 0x1334e                             |         
                                                     |     }
                                                     | label_10:
    0x00013374 adds r1, r2, 5                        |     r1 = r2 + 5;
                                                     |     if (r1 < r2) {
    0x00013376 bls 0x133c4                           |         goto label_12;
                                                     |     }
    0x00013378 adds r1, r2, 2                        |     r1 = r2 + 2;
                                                     |     if (r1 == r2) {
    0x0001337a beq 0x133e0                           |         goto label_7;
                                                     |     }
    0x0001337c adds r2, 4                            |     r2 += 4;
    0x0001337e add.w r2, r7, r2, lsl 4               |     r2 = r7 + (r2 << 4);
                                                     | label_4:
    0x00013382 str r5, [r2, 0xc]                     |     *((r2 + 0xc)) = r5;
    0x00013384 ldr.w r2, [r8, 0xc]                   |     r2 = *((r8 + 0xc));
    0x00013388 adds r3, r2, 1                        |     r3 = r2 + 1;
                                                     |     if (r3 == r2) {
    0x0001338a beq 0x1334e                           |         goto label_1;
                                                     |     }
    0x0001338c b 0x13362                             |     goto label_2;
                                                     | label_5:
    0x0001338e ldr r1, [pc, 0x74]                    |     
    0x00013390 movw r2, 0x1d1                        |     r2 = 0x1d1;
    0x00013394 ldr r3, [pc, 0x70]                    |     
    0x00013396 ldr r0, [pc, 0x74]                    |     
    0x00013398 add r1, pc                            |     r1 = 0x267a2;
    0x0001339a add r3, pc                            |     r3 = 0x267a6;
    0x0001339c adds r1, 7                            |     r1 += 7;
    0x0001339e add r0, pc                            |     r0 = 0x267b0;
    0x000133a0 bl 0x16594                            |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                     | label_11:
    0x000133a4 ldrb.w r3, [r6, 0x27]                 |     r3 = *((r6 + 0x27));
    0x000133a8 lsls r1, r3, 0x1d                     |     r1 = r3 << 0x1d;
    0x000133aa ldr r1, [pc, 0x64]                    |     
    0x000133ac and r3, r3, 3                         |     r3 &= 3;
    0x000133b0 ite mi                                |     
                                                     |     if (r1 >= r3) {
    0x000133b2 ldrmi r7, [r6, 4]                     |         r7 = *((r6 + 4));
                                                     |     }
                                                     |     if (r1 < r3) {
    0x000133b4 addpl r7, r6, 4                       |         r7 = r6 + 4;
                                                     |     }
    0x000133b6 add r1, pc                            |     r1 = 0x267cc;
    0x000133b8 add.w r3, r1, r3, lsl 4               |     r3 = r1 + (r3 << 4);
    0x000133bc ldr r3, [r3, 4]                       |     r3 = *((r3 + 4));
    0x000133be mla r7, r3, r2, r7                    |     __asm ("mla r7, r3, r2, r7");
    0x000133c2 b 0x13370                             |     goto label_3;
                                                     | label_12:
    0x000133c4 ldr r1, [pc, 0x4c]                    |     
    0x000133c6 lsls r0, r3, 0x1d                     |     r0 = r3 << 0x1d;
    0x000133c8 and r3, r3, 3                         |     r3 &= 3;
    0x000133cc ite mi                                |     
                                                     |     if (r0 >= r3) {
    0x000133ce ldrmi r0, [r6, 4]                     |         r0 = *((r6 + 4));
                                                     |     }
                                                     |     if (r0 < r3) {
    0x000133d0 addpl r0, r6, 4                       |         r0 = r6 + 4;
                                                     |     }
    0x000133d2 add r1, pc                            |     r1 = 0x267ea;
    0x000133d4 add.w r3, r1, r3, lsl 4               |     r3 = r1 + (r3 << 4);
    0x000133d6 asrs r3, r0, 0xc                      |     r3 = r0 >> 0xc;
                                                     |     do {
    0x000133d8 ldr r3, [r3, 4]                       |         r3 = *((r3 + 4));
    0x000133da mla r2, r3, r2, r0                    |         __asm ("mla r2, r3, r2, r0");
    0x000133de b 0x13382                             |         goto label_4;
                                                     | label_7:
    0x000133e0 ldr r1, [pc, 0x34]                    |         
    0x000133e2 mov.w r2, 0x194                       |         r2 = 0x194;
    0x000133e6 ldr r3, [pc, 0x34]                    |         
    0x000133e8 ldr r0, [pc, 0x34]                    |         
    0x000133ea add r1, pc                            |         r1 = 0x26806;
    0x000133ec add r3, pc                            |         r3 = 0x2680e;
    0x000133ee adds r1, 7                            |         r1 += 7;
    0x000133f0 add r0, pc                            |         r0 = 0x26814;
    0x000133f2 bl 0x16608                            |         fcn_00016608 (r0, r1, r2, r3);
    0x000133f6 nop                                   |         
    0x000133f8 b 0x133d8                             |         
                                                     |     } while (1);
                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0x135e0 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.000135e0 ()                                      | void fcn_000135e0 (uint32_t arg1, uint32_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_2ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x000135e0 ldr r2, [pc, 0x350]                               |     
    0x000135e2 ldr r3, [pc, 0x354]                               |     r3 = *(0x1393a);
    0x000135e4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000135e6 ldr r7, [pc, 0x3c0]                               |     r7 = *(0x139aa);
    0x000135e8 sub sp, 0x34                                      |     
    0x000135ea add r2, pc                                        |     r2 = 0x26f22;
    0x000135ec ldr r3, [r2, r3]                                  |     
    0x000135ee ldr r3, [r3]                                      |     r3 = *(0x26f22);
    0x000135f0 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x000135f2 mov.w r3, 0                                       |     r3 = 0;
    0x000135f6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000135f8 beq.w 0x1375a                                     |         goto label_10;
                                                                 |     }
    0x000135fc ldrb.w r3, [r0, 0x27]                             |     r3 = *((r0 + 0x27));
    0x00013600 mov r4, r0                                        |     r4 = r0;
    0x00013602 ands r0, r3, 4                                    |     r0 = r3 & 4;
    0x00013606 and r5, r3, 3                                     |     r5 = r3 & 3;
    0x0001360a ite ne                                            |     
                                                                 |     if (r0 == r3) {
    0x0001360c ldrne r2, [r4, 0x18]                              |         r2 = *((r4 + 0x18));
                                                                 |     }
                                                                 |     if (r0 == r3) {
    0x0001360e ubfxeq r2, r3, 3, 3                               |         __asm ("ubfxeq r2, r3, 3, 3");
                                                                 |     }
    0x00013612 adds r1, r1, r2                                   |     r1 += r2;
                                                                 |     if (r1 >= r1) {
    0x00013614 bhs.w 0x13754                                     |         goto label_11;
                                                                 |     }
    0x00013618 ubfx r3, r3, 2, 1                                 |     r3 = (r3 >> 2) & ((1 << 1) - 1);
    0x0001361c cbz r3, 0x1366a                                   |     
                                                                 |     while (r2 <= r1) {
    0x0001361e lsrs r3, r1, 2                                    |         r3 = r1 >> 2;
    0x00013620 adds r3, r3, r1                                   |         r3 += r1;
                                                                 |         if (r3 >= r3) {
    0x00013622 bhs.w 0x13754                                     |             goto label_11;
                                                                 |         }
    0x00013624 strh r7, [r2, 4]                                  |         *((r2 + 4)) = r7;
    0x00013626 ldr r2, [pc, 0x314]                               |         
    0x00013628 add r2, pc                                        |         r2 = 0x26f6a;
    0x0001362a add.w r2, r2, r5, lsl 4                           |         r2 += (r5 << 4);
    0x0001362e ldr r6, [r2, 4]                                   |         r6 = *((r2 + 4));
    0x00013630 add.w sb, r6, 1                                   |         sb = r6 + 1;
    0x00013634 umull r5, r1, sb, r3                              |         r5:r1 = sb * r3;
    0x00013638 subs r5, r1, 0                                    |         r5 = r1 - 0;
    0x0001363a it ne                                             |         
                                                                 |         if (r5 == r1) {
    0x0001363c movne r5, 1                                       |             r5 = 1;
                                                                 |         }
    0x0001363e cmp r1, 0                                         |         
                                                                 |         if (r1 != 0) {
    0x00013640 bne.w 0x13754                                     |             goto label_11;
                                                                 |         }
                                                                 |         if (r0 != 0) {
    0x00013644 cbnz r0, 0x1367c                                  |             goto label_12;
                                                                 |         }
    0x00013646 ldr r7, [r2, 0xc]                                 |         r7 = *((r2 + 0xc));
    0x00013648 cmp r3, r7                                        |         
                                                                 |         if (r3 > r7) {
    0x0001364a bhi.w 0x13770                                     |             goto label_13;
                                                                 |         }
                                                                 | label_0:
    0x0001364e ldr r2, [pc, 0x2f0]                               |         
    0x00013650 ldr r3, [pc, 0x2e4]                               |         r3 = *(0x13938);
    0x00013652 add r2, pc                                        |         r2 = 0x26f98;
    0x00013654 ldr r3, [r2, r3]                                  |         r3 = *(0x26f98);
    0x00013656 ldr r2, [r3]                                      |         r2 = *(0x26f98);
    0x00013658 ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x0001365a eors r2, r3                                       |         r2 ^= r3;
    0x0001365c mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00013660 bne.w 0x13930                                     |             goto label_14;
                                                                 |         }
    0x00013664 add sp, 0x34                                      |         
    0x00013666 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x0001366a ldr r2, [pc, 0x2d8]                               |         
    0x0001366c add r2, pc                                        |         r2 = 0x26fb6;
    0x0001366e add.w r2, r2, r5, lsl 4                           |         r2 += (r5 << 4);
    0x00013672 ldr r2, [r2, 0xc]                                 |         r2 = *((r2 + 0xc));
    0x00013674 cmp r2, r1                                        |         
    0x00013676 blo 0x1361e                                       |         
                                                                 |     }
    0x00013678 mov r0, r3                                        |     r0 = r3;
    0x0001367a b 0x1364e                                         |     goto label_0;
                                                                 | label_12:
    0x0001367c ldr r7, [r4, 0x1c]                                |     r7 = *((r4 + 0x1c));
    0x0001367e cmp r3, r7                                        |     
    0x00013680 it ls                                             |     
                                                                 |     if (r3 <= r7) {
    0x00013682 movls r0, r5                                      |         r0 = r5;
                                                                 |         goto label_15;
                                                                 |     }
                                                                 |     if (r3 < r7) {
                                                                 | label_15:
    0x00013684 bls 0x1364e                                       |         goto label_0;
                                                                 |     }
    0x00013686 mul r3, r3, sb                                    |     r3 *= sb;
    0x0001368a ldr r0, [r4, 4]                                   |     r0 = *((r4 + 4));
    0x0001368c cmp r3, 0x46                                      |     
    0x0001368e it lo                                             |     
                                                                 |     if (r3 >= 0x46) {
    0x00013690 movlo r3, 0x46                                    |         r3 = 0x46;
                                                                 |     }
    0x00013692 subs r3, 1                                        |     r3--;
    0x00013694 clz r8, r3                                        |     r8 &= r3;
    0x00013698 rsb.w r8, r8, 0x20                                |     r8 = 0x20 - r8;
                                                                 | label_1:
    0x0001369c movs r3, 1                                        |     r3 = 1;
    0x0001369e lsl.w r8, r3, r8                                  |     r8 = r3 << r8;
    0x000136a2 mov r1, r8                                        |     r1 = r8;
    0x000136a4 blx 0x361c                                        |     fcn_0000361c ();
    0x000136a6 vext.16 d4, d26, d2, 3                            |     __asm ("vext.16 d4, d26, d2, 3");
    0x000136aa cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000136ac beq 0x13754                                       |         goto label_11;
                                                                 |     }
    0x000136ae ldrb.w fp, [r4, 0x27]                             |     fp = *((r4 + 0x27));
    0x000136b2 ubfx fp, fp, 2, 1                                 |     fp = (fp >> 2) & ((1 << 1) - 1);
    0x000136b6 cmp.w fp, 0                                       |     
                                                                 |     if (fp == 0) {
    0x000136ba beq.w 0x138d6                                     |         goto label_16;
                                                                 |     }
    0x000136bc strh r4, [r1, 8]                                  |     *((r1 + 8)) = r4;
                                                                 | label_6:
    0x000136be ldr r0, [pc, 0x288]                               |     
    0x000136c0 movs r1, 0x10                                     |     r1 = 0x10;
    0x000136c2 add r0, pc                                        |     r0 = 0x27010;
    0x000136c4 bl 0x192b0                                        |     fcn_000192b0 (r0, r1);
    0x000136c6 ldc2l p11, c4, [r4, 0x280]!                       |     __asm ("ldc2l p11, c4, [r4, 0x280]!");
    0x000136ca movs r2, 1                                        |     r2 = 1;
    0x000136cc add r3, pc                                        |     r3 += pc;
    0x000136ce strb r2, [r3]                                     |     *(r3) = r2;
                                                                 | label_5:
    0x000136d0 ldrb.w r3, [r4, 0x27]                             |     r3 = *((r4 + 0x27));
    0x000136d4 ldr.w ip, [pc, 0x278]                             |     
    0x000136d8 orr r3, r3, 4                                     |     r3 |= 4;
    0x000136dc add ip, pc                                        |     ip = 0x27030;
    0x000136de strb.w r3, [r4, 0x27]                             |     *((r4 + 0x27)) = r3;
    0x000136e2 ldm.w ip!, {r0, r1, r2, r3}                       |     r0 = *(ip!);
                                                                 |     r1 = *((ip! + 4));
                                                                 |     r2 = *((ip! + 8));
                                                                 |     r3 = *((ip! + 12));
    0x000136e6 str.w sl, [r4, 4]                                 |     __asm ("str.w sl, [r4, 4]");
    0x000136ea str r0, [r4, 8]                                   |     *((r4 + 8)) = r0;
    0x000136ec mov r0, r8                                        |     r0 = r8;
    0x000136ee str r1, [r4, 0xc]                                 |     *((r4 + 0xc)) = r1;
    0x000136f0 mov r1, sb                                        |     r1 = sb;
    0x000136f2 str r2, [r4, 0x10]                                |     *((r4 + 0x10)) = r2;
    0x000136f4 str r3, [r4, 0x14]                                |     *((r4 + 0x14)) = r3;
    0x000136f6 bl 0x1b450                                        |     fcn_0001b450 (r0, r1, r2);
    0x000136fa ldr r2, [pc, 0x258]                               |     
    0x000136fc mul r1, r7, r6                                    |     r1 = r7 * r6;
    0x00013700 ldrb.w r3, [r4, 0x27]                             |     r3 = *((r4 + 0x27));
    0x00013704 str r0, [r4, 0x1c]                                |     *((r4 + 0x1c)) = r0;
    0x00013706 add r2, pc                                        |     
    0x00013708 and ip, r3, 3                                     |     
    0x0001370c add.w r2, r2, ip, lsl 4                           |     
    0x00013710 ldr r2, [r2, 4]                                   |     r2 = *(0x27064);
    0x00013712 mla sb, r2, r0, sl                                |     __asm ("mla sb, r2, r0, sl");
    0x00013716 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x00013718 beq 0x1378c                                       |         goto label_17;
                                                                 |     }
    0x0001371a subs r1, 1                                        |     r1--;
    0x0001371c add sl, r1                                        |     sl += r1;
    0x0001371e subs r1, r7, 1                                    |     r1 = r7 - 1;
    0x00013720 add r1, sb                                        |     r1 += sb;
    0x00013722 add.w r2, sb, -1                                  |     r2 = sb + -1;
    0x00013726 b 0x13736                                         |     
                                                                 |     while (r3 != 0xfe) {
    0x00013728 cmp r3, 0xff                                      |         
    0x0001372a it ne                                             |         
                                                                 |         if (r3 == 0xff) {
    0x0001372c movne r3, 0xfe                                    |             r3 = 0xfe;
                                                                 |         }
    0x0001372e strb r3, [r2, 1]!                                 |         *((r2 += 1)) = r3;
    0x00013732 cmp r1, r2                                        |         
                                                                 |         if (r1 == r2) {
    0x00013734 beq 0x13788                                       |             goto label_18;
                                                                 |         }
    0x00013736 ldrb r3, [sl, 1]!                                 |         r3 = *((sl += 1));
    0x0001373a cmp r3, 0xfe                                      |         
    0x0001373c bne 0x13728                                       |         
                                                                 |     }
    0x0001373e ldr r1, [pc, 0x218]                               |     
    0x00013740 movw r2, 0x477                                    |     r2 = 0x477;
    0x00013744 ldr r3, [pc, 0x214]                               |     
    0x00013746 ldr r0, [pc, 0x218]                               |     
    0x00013748 add r1, pc                                        |     r1 = 0x270a6;
    0x0001374a add r3, pc                                        |     r3 = 0x270aa;
    0x0001374c adds r1, 7                                        |     r1 += 7;
    0x0001374e add r0, pc                                        |     r0 = 0x270b4;
    0x00013750 bl 0x16594                                        |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_11:
    0x00013754 mvn r0, 0xb                                       |     r0 = ~0xb;
    0x00013758 b 0x1364e                                         |     goto label_0;
                                                                 | label_10:
    0x0001375a ldr r1, [pc, 0x208]                               |     
    0x0001375c movw r2, 0x432                                    |     r2 = 0x432;
    0x00013760 ldr r3, [pc, 0x204]                               |     
    0x00013762 ldr r0, [pc, 0x208]                               |     
    0x00013764 add r1, pc                                        |     r1 = 0x270ce;
    0x00013766 add r3, pc                                        |     r3 = 0x270d2;
    0x00013768 adds r1, 7                                        |     r1 += 7;
    0x0001376a add r0, pc                                        |     r0 = 0x270dc;
    0x0001376c bl 0x16594                                        |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_13:
    0x00013770 mul r3, r3, sb                                    |     r3 *= sb;
    0x00013774 mov r0, r5                                        |     r0 = r5;
    0x00013776 cmp r3, 0x46                                      |     
    0x00013778 it lo                                             |     
                                                                 |     if (r3 >= 0x46) {
    0x0001377a movlo r3, 0x46                                    |         r3 = 0x46;
                                                                 |     }
    0x0001377c subs r3, 1                                        |     r3--;
    0x0001377e clz r8, r3                                        |     r8 &= r3;
    0x00013782 rsb.w r8, r8, 0x20                                |     r8 = 0x20 - r8;
    0x00013786 b 0x1369c                                         |     goto label_1;
                                                                 | label_18:
    0x00013788 ldrb.w r3, [r4, 0x27]                             |     r3 = *((r4 + 0x27));
                                                                 | label_17:
    0x0001378c lsls r1, r3, 0x1d                                 |     r1 = r3 << 0x1d;
    0x0001378e add.w r8, sb, r7                                  |     r8 = sb + r7;
                                                                 |     if (r1 >= r3) {
    0x00013792 bpl.w 0x13912                                     |         goto label_19;
                                                                 |     }
    0x00013796 ldr r2, [r4, 0x1c]                                |     r2 = *((r4 + 0x1c));
    0x00013798 subs r2, r2, r7                                   |     r2 -= r7;
    0x0001379a mul r1, r2, r6                                    |     r1 = r2 * r6;
                                                                 |     if (r1 != 0) {
    0x0001379e cbz r1, 0x137d6                                   |         
    0x000137a0 and r3, r3, 3                                     |         r3 &= 3;
    0x000137a4 ldr r0, [r4, 4]                                   |         r0 = *((r4 + 4));
    0x000137a6 lsls r3, r3, 4                                    |         r3 <<= 4;
                                                                 | label_7:
    0x000137a8 ldr.w sl, [pc, 0x1c4]                             |         
    0x000137ac mov r2, r1                                        |         r2 = r1;
    0x000137ae movs r1, 0                                        |         r1 = 0;
    0x000137b0 add sl, pc                                        |         sl = 0x27124;
    0x000137b2 add r3, sl                                        |         r3 += sl;
    0x000137b4 ldr r3, [r3, 4]                                   |         r3 = *((r3 + 4));
    0x000137b6 mla r0, r3, r7, r0                                |         __asm ("mla r0, r3, r7, r0");
    0x000137ba blx 0x3898                                        |         fcn_00003898 ();
    0x000137be ldrb.w r3, [r4, 0x27]                             |         r3 = *((r4 + 0x27));
    0x000137c2 lsls r2, r3, 0x1d                                 |         r2 = r3 << 0x1d;
    0x000137c4 itett pl                                          |         
                                                                 |         if (r2 < r3) {
    0x000137c6 andpl r3, r3, 3                                   |             r3 &= 3;
                                                                 |         }
                                                                 |         if (r2 < r3) {
    0x000137ca ldrpl r2, [r4, 0x1c]                              |             r2 = *((r4 + 0x1c));
                                                                 |         }
                                                                 |         if (r2 < r3) {
    0x000137cc addpl sl, sl, r3, lsl 4                           |             sl += (r3 << 4);
                                                                 |         }
                                                                 |         if (r2 >= r3) {
    0x000137d0 ldr.w r2, [sl, 0xc]                               |             r2 = *(0x27130);
                                                                 |         }
    0x000137d4 subs r2, r2, r7                                   |         r2 -= r7;
                                                                 |     }
                                                                 | label_8:
    0x000137d6 mov r0, r8                                        |     r0 = r8;
    0x000137d8 movs r1, 0xff                                     |     r1 = 0xff;
    0x000137da blx 0x3898                                        |     fcn_00003898 ();
    0x000137de cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x000137e0 beq 0x138a6                                       |         goto label_20;
                                                                 |     }
    0x000137e2 ldr r3, [pc, 0x190]                               |     
    0x000137e4 add.w sb, sb, -1                                  |     sb += -1;
    0x000137e8 mov.w sl, 0                                       |     sl = 0;
    0x000137ec add r3, pc                                        |     r3 = 0x27166;
    0x000137ee str r3, [sp]                                      |     *(sp) = r3;
    0x000137f0 ldr r3, [pc, 0x184]                               |     
    0x000137f2 add r3, pc                                        |     r3 = 0x2716e;
    0x000137f4 str r3, [sp, 4]                                   |     var_4h = r3;
    0x000137f6 b 0x13808                                         |     goto label_21;
                                                                 | label_2:
    0x000137f8 adds r5, 1                                        |     r5++;
    0x000137fa movs r3, 0                                        |     r3 = 0;
    0x000137fc strb.w r3, [sb]                                   |     *(sb) = r3;
    0x000137fe adds r0, 0                                        |     r0 += 0;
                                                                 |     do {
                                                                 | label_3:
    0x00013800 add.w sl, sl, 1                                   |         sl++;
    0x00013804 cmp sl, r7                                        |         
                                                                 |         if (sl == r7) {
    0x00013806 beq 0x138a8                                       |             goto label_22;
                                                                 |         }
                                                                 | label_21:
    0x00013808 ldrb r3, [sb, 1]!                                 |         r3 = *((sb += 1));
                                                                 | label_9:
    0x0001380c cmp r3, 0xfe                                      |         
    0x0001380e bne 0x13800                                       |         
                                                                 |     } while (r3 != 0xfe);
    0x00013810 ldrb.w r3, [r4, 0x27]                             |     r3 = *((r4 + 0x27));
    0x00013814 ldr r1, [sp]                                      |     r1 = *(sp);
    0x00013816 lsls r0, r3, 0x1d                                 |     r0 = r3 << 0x1d;
    0x00013818 and r3, r3, 3                                     |     r3 &= 3;
    0x0001381c ite mi                                            |     
                                                                 |     if (r0 >= r3) {
    0x0001381e ldrmi r2, [r4, 4]                                 |         r2 = *((r4 + 4));
                                                                 |     }
                                                                 |     if (r0 < r3) {
    0x00013820 addpl r2, r4, 4                                   |         r2 = r4 + 4;
                                                                 |     }
    0x00013822 add.w r3, r1, r3, lsl 4                           |     r3 = r1 + (r3 << 4);
    0x00013824 asrs r3, r0, 0xc                                  |     r3 = r0 >> 0xc;
    0x00013826 mov r0, r4                                        |     r0 = r4;
    0x00013828 ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x0001382a mul r3, r3, sl                                    |     r3 *= sl;
    0x0001382e ldr r1, [r2, r3]                                  |     r1 = *((r2 + r3));
    0x00013830 bl 0x12f20                                        |     r0 = fcn_00012f20 (r0, r1);
    0x00013834 cmp sl, r0                                        |     
    0x00013836 mov r8, r0                                        |     r8 = r0;
                                                                 |     if (sl == r0) {
    0x00013838 beq 0x137f8                                       |         goto label_2;
                                                                 |     }
    0x0001383a mov.w r3, -1                                      |     r3 = -1;
    0x0001383e add.w fp, sp, 0xc                                 |     
    0x00013842 mov r1, fp                                        |     r1 = fp;
    0x00013844 strb.w r3, [sb]                                   |     *(sb) = r3;
    0x00013848 mov r2, sl                                        |     r2 = sl;
    0x0001384a mvn r3, 3                                         |     r3 = ~3;
    0x0001384e mov r0, r4                                        |     r0 = r4;
    0x00013850 bl 0x132a0                                        |     fcn_000132a0 (r0, r1, r2, r3);
    0x00013854 mov r1, r8                                        |     r1 = r8;
                                                                 |     if (r6 != 0) {
    0x00013856 cbz r6, 0x1387e                                   |         
    0x00013858 ldrb.w r3, [r4, 0x27]                             |         r3 = *((r4 + 0x27));
    0x0001385c lsls r1, r3, 0x1d                                 |         r1 = r3 << 0x1d;
    0x0001385e ldr r1, [sp, 4]                                   |         r1 = var_4h;
    0x00013860 and r3, r3, 3                                     |         r3 &= 3;
    0x00013864 ite mi                                            |         
                                                                 |         if (r1 >= r3) {
    0x00013866 ldrmi r2, [r4, 4]                                 |             r2 = *((r4 + 4));
                                                                 |         }
                                                                 |         if (r1 < r3) {
    0x00013868 addpl r2, r4, 4                                   |             r2 = r4 + 4;
                                                                 |         }
    0x0001386a add.w r3, r1, r3, lsl 4                           |         r3 = r1 + (r3 << 4);
    0x0001386e movs r1, 0                                        |         r1 = 0;
    0x00013870 ldr r0, [r3, 4]                                   |         r0 = *((r3 + 4));
    0x00013872 mla r0, r0, sl, r2                                |         __asm ("mla r0, r0, sl, r2");
    0x00013876 mov r2, r6                                        |         r2 = r6;
    0x00013878 blx 0x3898                                        |         fcn_00003898 ();
    0x0001387c mov r1, r8                                        |         r1 = r8;
                                                                 |     }
    0x0001387e mov r2, fp                                        |     r2 = fp;
    0x00013880 mov r0, r4                                        |     r0 = r4;
    0x00013882 adds r5, 1                                        |     r5++;
    0x00013884 bl 0x13424                                        |     r0 = fcn_00013424 (r0, r1, r2, r3);
    0x00013888 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001388a beq 0x13800                                       |         goto label_3;
                                                                 |     }
                                                                 | label_4:
    0x0001388c ldr r1, [sp, 0xc]                                 |     r1 = var_ch;
    0x0001388e mov r0, r4                                        |     r0 = r4;
    0x00013890 bl 0x12f20                                        |     fcn_00012f20 (r0, r1);
    0x00013894 mov r2, fp                                        |     r2 = fp;
    0x00013896 mov r1, r0                                        |     r1 = r0;
    0x00013898 mov r0, r4                                        |     r0 = r4;
    0x0001389a adds r5, 1                                        |     r5++;
    0x0001389c bl 0x13424                                        |     r0 = fcn_00013424 (r0, r1, r2, r3);
    0x000138a0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000138a2 beq 0x13800                                       |         goto label_3;
                                                                 |     }
    0x000138a4 b 0x1388c                                         |     goto label_4;
                                                                 | label_20:
    0x000138a6 mov r5, r7                                        |     r5 = r7;
                                                                 | label_22:
    0x000138a8 ldrb.w r3, [r4, 0x27]                             |     r3 = *((r4 + 0x27));
    0x000138ac lsls r2, r3, 0x1d                                 |     r2 = r3 << 0x1d;
    0x000138ae ite mi                                            |     
                                                                 |     if (r2 >= r3) {
    0x000138b0 ldrmi r3, [r4, 0x18]                              |         r3 = *((r4 + 0x18));
                                                                 |     }
                                                                 |     if (r2 >= r3) {
    0x000138b2 ubfxpl r3, r3, 3, 3                               |         __asm ("ubfxpl r3, r3, 3, 3");
                                                                 |     }
    0x000138b6 cmp r3, r5                                        |     
    0x000138b8 it eq                                             |     
                                                                 |     if (r3 == r5) {
    0x000138ba moveq r0, 1                                       |         r0 = 1;
                                                                 |         goto label_23;
                                                                 |     }
                                                                 |     if (r3 == r5) {
                                                                 | label_23:
    0x000138bc beq.w 0x1364e                                     |         goto label_0;
                                                                 |     }
    0x000138c0 ldr r1, [pc, 0xb8]                                |     
    0x000138c2 movw r2, 0x4a9                                    |     r2 = 0x4a9;
    0x000138c6 ldr r3, [pc, 0xb8]                                |     
    0x000138c8 ldr r0, [pc, 0xb8]                                |     
    0x000138ca add r1, pc                                        |     r1 = 0x2724a;
    0x000138cc add r3, pc                                        |     r3 = 0x27252;
    0x000138ce adds r1, 7                                        |     r1 += 7;
    0x000138d0 add r0, pc                                        |     r0 = 0x27258;
    0x000138d2 bl 0x16594                                        |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_16:
    0x000138d6 mul r2, r7, sb                                    |     r2 = r7 * sb;
    0x000138da adds r1, r4, 4                                    |     r1 = r4 + 4;
    0x000138dc blx 0x3578                                        |     mmap64 ()
    0x000138e0 ldr r3, [pc, 0xa4]                                |     
    0x000138e2 ldrb.w r1, [r4, 0x27]                             |     r1 = *((r4 + 0x27));
    0x000138e6 str.w fp, [r4, 0x20]                              |     __asm ("str.w fp, [r4, 0x20]");
    0x000138ea add r3, pc                                        |     r3 = 0x27276;
    0x000138ec ldrb r3, [r3]                                     |     r3 = *(r3);
    0x000138ee mov r2, r1                                        |     r2 = r1;
    0x000138f0 bfi r2, fp, 3, 3                                  |     value_0 = BIT_MASK (3, 3);
                                                                 |     value_1 = fp & value_0;
                                                                 |     value_0 = ~value_0;
                                                                 |     r2 &= value_0;
                                                                 |     r2 |= value_1;
    0x000138f4 ubfx r1, r1, 3, 3                                 |     r1 = (r1 >> 3) & ((1 << 3) - 1);
    0x000138f8 strb.w r2, [r4, 0x27]                             |     *((r4 + 0x27)) = r2;
    0x000138fc ubfx r2, r2, 2, 1                                 |     r2 = (r2 >> 2) & ((1 << 1) - 1);
    0x00013900 eor r3, r3, 1                                     |     r3 ^= 1;
    0x00013904 str r1, [r4, 0x18]                                |     *((r4 + 0x18)) = r1;
    0x00013906 orrs r3, r2                                       |     r3 |= r2;
    0x00013908 uxtb r3, r3                                       |     r3 = (int8_t) r3;
    0x0001390a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001390c beq.w 0x136d0                                     |         goto label_5;
                                                                 |     }
    0x00013910 b 0x136be                                         |     goto label_6;
                                                                 | label_19:
    0x00013912 ldr r2, [pc, 0x78]                                |     
    0x00013914 and r3, r3, 3                                     |     r3 &= 3;
    0x00013918 lsls r3, r3, 4                                    |     r3 <<= 4;
    0x0001391a adds r0, r4, 4                                    |     r0 = r4 + 4;
    0x0001391c add r2, pc                                        |     
    0x0001391e add r2, r3                                        |     r2 += r3;
    0x00013920 ldr r2, [r2, 0xc]                                 |     r2 = *(0x272ba);
    0x00013922 subs r2, r2, r7                                   |     r2 -= r7;
    0x00013924 mul r1, r2, r6                                    |     r1 = r2 * r6;
    0x00013928 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x0001392a bne.w 0x137a8                                     |         goto label_7;
                                                                 |     }
    0x0001392e b 0x137d6                                         |     goto label_8;
                                                                 | label_14:
    0x00013930 blx 0x35d0                                        |     fcn_000035d0 ();
    0x00013934 b 0x1380c                                         |     goto label_9;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0x14974 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00014974 ()                                      | void fcn_00014974 (int16_t arg_2a0h, int16_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     uint32_t var_ch;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int32_t var_1ch_2;
                                                                 |     int16_t var_24h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00014974 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00014978 sub sp, 0x2c                                      |     
    0x0001497a strd r1, r2, [sp, 4]                              |     __asm ("strd r1, r2, [var_8h]");
    0x0001497c asrs r1, r0, 8                                    |     r1 = r0 >> 8;
    0x0001497e ldr r1, [pc, 0x150]                               |     
    0x00014980 ldr r2, [pc, 0x150]                               |     r2 = *(0x14ad4);
    0x00014982 add r1, pc                                        |     r1 = 0x29458;
    0x00014984 ldr r2, [r1, r2]                                  |     
    0x00014986 ldr r2, [r2]                                      |     r2 = *(0x29458);
    0x00014988 str r2, [sp, 0x24]                                |     var_24h = r2;
    0x0001498a mov.w r2, 0                                       |     r2 = 0;
    0x0001498e movs r2, 0                                        |     r2 = 0;
    0x00014990 str r2, [sp, 0x14]                                |     var_14h = r2;
    0x00014992 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00014994 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00014996 beq.w 0x14ab6                                     |         goto label_8;
                                                                 |     }
    0x0001499a mov r5, r0                                        |     r5 = r0;
    0x0001499c bl 0x145f0                                        |     r0 = fcn_000145f0 (r0);
    0x000149a0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000149a2 beq 0x14a8e                                       |         goto label_9;
                                                                 |     }
    0x000149a4 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x000149a6 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000149a8 beq 0x14a9c                                       |         goto label_10;
                                                                 |     }
    0x000149aa mov r0, r3                                        |     r0 = r3;
    0x000149ac blx 0x37c8                                        |     r0 = fcn_000037c8 ();
    0x000149b0 mov r6, r0                                        |     r6 = r0;
    0x000149b2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000149b4 beq 0x14a96                                       |         goto label_11;
                                                                 |     }
    0x000149b6 ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x000149b8 eor r7, r3, 1                                     |     r7 = r3 ^ 1;
    0x000149ba lsls r1, r0, 0x1c                                 |     r1 = r0 << 0x1c;
                                                                 | label_4:
    0x000149bc ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x000149be movs r4, 0                                        |     r4 = 0;
    0x000149c0 add.w sb, sp, 0x18                                |     sb += var_18h;
    0x000149c4 add.w r8, sp, 0x1c                                |     r8 += var_1ch;
    0x000149c8 add.w fp, sp, 0x14                                |     
    0x000149cc cmp r3, 0                                         |     
    0x000149ce mvn r3, 1                                         |     r3 = ~1;
    0x000149d2 strd r3, r4, [sp, 0x1c]                           |     __asm ("strd r3, r4, [var_1ch]");
    0x000149d6 ite ne                                            |     
                                                                 |     if (r3 == 0) {
    0x000149d8 movne r3, r6                                      |         r3 = r6;
                                                                 |     }
                                                                 |     if (r3 != 0) {
    0x000149da moveq r3, r4                                      |         r3 = r4;
                                                                 |     }
    0x000149dc adds r3, 1                                        |     r3++;
    0x000149de str r3, [sp]                                      |     *(sp) = r3;
                                                                 |     do {
                                                                 | label_0:
    0x000149e0 movs r3, 0                                        |         r3 = 0;
    0x000149e2 mov r2, sb                                        |         r2 = sb;
    0x000149e4 mov r1, r8                                        |         r1 = r8;
    0x000149e6 mov r0, r5                                        |         r0 = r5;
    0x000149e8 bl 0x13fe8                                        |         r0 = fcn_00013fe8 (r0, r1, r2, r3);
                                                                 |         if (r0 == 0) {
    0x000149ec cbz r0, 0x14a46                                   |             goto label_12;
                                                                 |         }
                                                                 | label_1:
    0x000149ee ldr r0, [sp, 0x18]                                |         r0 = var_18h;
    0x000149f0 cmp r0, 0                                         |         
    0x000149f2 beq 0x149e0                                       |         
                                                                 |     } while (r0 == 0);
    0x000149f4 blx 0x37c8                                        |     r0 = fcn_000037c8 ();
    0x000149f8 mov sl, r0                                        |     sl = r0;
    0x000149fa cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000149fc beq 0x149e0                                       |         goto label_0;
                                                                 |     }
    0x000149fe ldr r3, [sp]                                      |     r3 = *(sp);
    0x00014a00 adds r1, r4, r3                                   |     r1 = r4 + r3;
    0x00014a02 add r1, r0                                        |     r1 += r0;
    0x00014a04 cmp r7, 0                                         |     
                                                                 |     if (r7 != 0) {
    0x00014a06 bne 0x14a7a                                       |         goto label_13;
                                                                 |     }
    0x00014a08 add r1, r6                                        |     r1 += r6;
    0x00014a0a movs r2, 1                                        |     r2 = 1;
    0x00014a0c mov r0, fp                                        |     r0 = fp;
    0x00014a0e bl 0xffa4                                         |     r0 = fcn_0000ffa4 (r0, r1, r2);
    0x00014a12 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00014a14 beq 0x14a86                                       |         goto label_14;
                                                                 |     }
                                                                 |     if (r6 != 0) {
    0x00014a16 cbz r6, 0x14a26                                   |         
    0x00014a18 ldr r0, [sp, 0x14]                                |         r0 = var_14h;
    0x00014a1a mov r2, r6                                        |         r2 = r6;
    0x00014a1c ldr r1, [sp, 4]                                   |         r1 = var_4h;
    0x00014a1e add r0, r4                                        |         r0 += r4;
    0x00014a20 add r4, r6                                        |         r4 += r6;
    0x00014a22 blx 0x3578                                        |         mmap64 ()
                                                                 |     }
                                                                 | label_2:
    0x00014a26 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00014a28 mov r2, sl                                        |     r2 = sl;
    0x00014a2a ldr r1, [sp, 0x18]                                |     r1 = var_18h;
    0x00014a2c movs r7, 0                                        |     r7 = 0;
    0x00014a2e add r0, r4                                        |     r0 += r4;
    0x00014a30 add r4, sl                                        |     r4 += sl;
    0x00014a32 blx 0x3578                                        |     mmap64 ()
    0x00014a34 stc p3, c2, [r2, 0]!                              |     __asm ("stc p3, c2, [r2, 0]!");
    0x00014a38 mov r2, sb                                        |     r2 = sb;
    0x00014a3a mov r1, r8                                        |     r1 = r8;
    0x00014a3c mov r0, r5                                        |     r0 = r5;
    0x00014a3e bl 0x13fe8                                        |     r0 = fcn_00013fe8 (r0, r1, r2, r3);
    0x00014a42 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00014a44 bne 0x149ee                                       |         goto label_1;
                                                                 |     }
                                                                 | label_12:
    0x00014a46 ldr r3, [sp, 8]                                   |     r3 = var_8h;
                                                                 |     if (r3 != 0) {
    0x00014a48 cbnz r3, 0x14aa6                                  |         goto label_15;
                                                                 |     }
                                                                 | label_5:
    0x00014a4a ldr r2, [sp, 0x14]                                |     r2 = var_14h;
    0x00014a4c movs r3, 0                                        |     r3 = 0;
    0x00014a4e mov r0, r3                                        |     r0 = r3;
    0x00014a50 strb r3, [r2, r4]                                 |     *((r2 + r4)) = r3;
    0x00014a52 mov r4, r3                                        |     r4 = r3;
    0x00014a54 ldr r2, [sp, 0xc]                                 |     r2 = var_ch;
    0x00014a56 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x00014a58 str r3, [r2]                                      |     *(r2) = r3;
                                                                 | label_3:
    0x00014a5a blx 0x3530                                        |     ferror (r0);
    0x00014a5e ldr r2, [pc, 0x78]                                |     
    0x00014a60 ldr r3, [pc, 0x70]                                |     r3 = *(0x14ad4);
    0x00014a62 add r2, pc                                        |     r2 = 0x29540;
    0x00014a64 ldr r3, [r2, r3]                                  |     r3 = *(0x29540);
    0x00014a66 ldr r2, [r3]                                      |     r2 = *(0x29540);
    0x00014a68 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00014a6a eors r2, r3                                       |     r2 ^= r3;
    0x00014a6c mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00014a70 bne 0x14acc                                       |         goto label_16;
                                                                 |     }
    0x00014a72 mov r0, r4                                        |     r0 = r4;
    0x00014a74 add sp, 0x2c                                      |     
    0x00014a76 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_6:
    0x00014a78 ldrh r0, [r6, 0x3e]                               |     r0 = *((r6 + 0x3e));
                                                                 | label_13:
    0x00014a7a movs r2, 1                                        |     r2 = 1;
    0x00014a7c mov r0, fp                                        |     r0 = fp;
    0x00014a7e bl 0xffa4                                         |     fcn_0000ffa4 (r0, r1, r2);
    0x00014a80 invalid                                           |     
                                                                 |     if (r2 != 1) {
    0x00014a84 bne 0x14a26                                       |         goto label_2;
                                                                 |     }
                                                                 | label_14:
    0x00014a86 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00014a88 mvn r4, 0xb                                       |     r4 = ~0xb;
    0x00014a8c b 0x14a5a                                         |     goto label_3;
                                                                 | label_9:
    0x00014a8e ldr r2, [sp, 0xc]                                 |     r2 = var_ch;
    0x00014a90 mov r4, r0                                        |     r4 = r0;
    0x00014a92 str r0, [r2]                                      |     *(r2) = r0;
    0x00014a94 b 0x14a5a                                         |     goto label_3;
                                                                 | label_11:
    0x00014a96 movs r7, 1                                        |     r7 = 1;
    0x00014a98 str r0, [sp, 8]                                   |     var_8h = r0;
    0x00014a9a b 0x149bc                                         |     goto label_4;
                                                                 | label_10:
    0x00014a9c ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x00014a9e movs r7, 1                                        |     r7 = 1;
    0x00014aa0 mov r6, r3                                        |     r6 = r3;
    0x00014aa2 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00014aa4 b 0x149bc                                         |     goto label_4;
                                                                 | label_15:
    0x00014aa6 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00014aa8 mov r2, r6                                        |     r2 = r6;
    0x00014aaa ldr r1, [sp, 4]                                   |     r1 = var_4h;
    0x00014aac add r0, r4                                        |     r0 += r4;
    0x00014aae add r4, r6                                        |     r4 += r6;
    0x00014ab0 blx 0x3578                                        |     mmap64 ()
    0x00014ab4 b 0x14a4a                                         |     goto label_5;
                                                                 | label_8:
    0x00014ab6 ldr r1, [pc, 0x24]                                |     r1 = *(0x14ade);
    0x00014ab8 movw r2, 0x7cf                                    |     r2 = 0x7cf;
    0x00014abc ldr r3, [pc, 0x20]                                |     r3 = *(0x14ae0);
    0x00014abe ldr r0, [pc, 0x24]                                |     r0 = *(0x14ae6);
                                                                 | label_7:
    0x00014ac0 add r1, pc                                        |     r1 += pc;
    0x00014ac2 add r3, pc                                        |     r3 += pc;
    0x00014ac4 adds r1, 7                                        |     r1 += 7;
    0x00014ac6 add r0, pc                                        |     r0 += pc;
    0x00014ac8 bl 0x16594                                        |     r0 = fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_16:
    0x00014acc blx 0x35d0                                        |     fcn_000035d0 ();
                                                                 |     if (r1 <= 7) {
    0x00014ad0 blo 0x14a78                                       |         goto label_6;
                                                                 |     }
    0x00014ad2 movs r1, r0                                       |     r1 = r0;
    0x00014ad4 lsls r4, r5, 9                                    |     r4 = r5 << 9;
    0x00014ad6 movs r0, r0                                       |     
                                                                 |     if (r0 >= r0) {
    0x00014ad8 bhs 0x14ac0                                       |         goto label_7;
                                                                 |     }
    0x00014ada movs r1, r0                                       |     r1 = r0;
    0x00014adc add r6, sp, 0x2a0                                 |     r6 += arg_2a0h;
    0x00014ade movs r0, r0                                       |     
    0x00014ae0 sub sp, 0x118                                     |     
    0x00014ae2 movs r0, r0                                       |     
    0x00014ae4 strb r2, [r7, 0x1f]                               |     *((r7 + 0x1f)) = r2;
    0x00014ae6 movs r0, r0                                       |     
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0x173a8 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.000173a8 ()                                      | void fcn_000173a8 (int16_t arg_70h, int16_t arg_d8h, int16_t arg_128h, int16_t arg_178h, int16_t arg_228h, int16_t arg_270h, int16_t arg_278h, int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h_2;
                                                                 |     int16_t var_0h_2;
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_8h;
                                                                 |     int32_t var_4h_3;
                                                                 |     int16_t var_fh;
                                                                 |     int32_t var_8h_3;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_14h;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_0h_3;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x000173a8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000173ac sub sp, 0x24                                      |     
    0x000173ae add r7, sp, 8                                     |     r7 += var_8h;
    0x000173b0 mov fp, r3                                        |     
    0x000173b2 str r2, [r7]                                      |     *(r7) = r2;
    0x000173b4 ldr r2, [pc, 0x1b0]                               |     
    0x000173b6 ldr r3, [pc, 0x1b4]                               |     r3 = *(0x1756e);
    0x000173b8 add r2, pc                                        |     r2 = 0x2e924;
    0x000173ba ldr r3, [r2, r3]                                  |     
    0x000173bc ldr r2, [r7, 0x48]                                |     r2 = *((r7 + 0x48));
    0x000173be ldr r3, [r3]                                      |     r3 = *(0x2e924);
    0x000173c0 str r3, [r7, 0x14]                                |     var_14h = r3;
    0x000173c2 mov.w r3, 0                                       |     r3 = 0;
    0x000173c6 ldr r3, [pc, 0x1a8]                               |     
    0x000173c8 str r2, [r7, 4]                                   |     var_4h_3 = r2;
    0x000173ca add r3, pc                                        |     r3 = 0x2e940;
    0x000173cc cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000173ce beq.w 0x17534                                     |         goto label_3;
                                                                 |     }
    0x000173d2 ldr r2, [pc, 0x1a0]                               |     r2 = *(0x17576);
    0x000173d4 ldr r3, [r3, r2]                                  |     r3 = *((r3 + r2));
    0x000173d6 ldr r2, [r7, 4]                                   |     r2 = var_4h_3;
    0x000173d8 cmp r2, r3                                        |     
                                                                 |     if (r2 == r3) {
    0x000173da beq.w 0x17548                                     |         goto label_4;
                                                                 |     }
    0x000173de mov r8, r0                                        |     r8 = r0;
    0x000173e0 mov r5, r1                                        |     r5 = r1;
                                                                 |     if (r0 != 0) {
    0x000173e2 cbz r0, 0x173f4                                   |         
    0x000173e4 mov r1, r0                                        |         r1 = r0;
    0x000173e6 movs r2, 1                                        |         r2 = 1;
    0x000173e8 mov r0, r5                                        |         r0 = r5;
    0x000173ea bl 0x18554                                        |         r0 = fcn_00018554 (r0, r1, r2, r3, r4);
    0x000173ee cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000173f0 beq.w 0x1755c                                     |             goto label_5;
                                                                 |         }
                                                                 |     }
    0x000173f4 movs r1, 0x2f                                     |     r1 = 0x2f;
    0x000173f6 mov r0, r5                                        |     r0 = r5;
    0x000173f8 blx 0x397c                                        |     r0 = fcn_0000397c ();
    0x000173fc cmp r5, r0                                        |     
    0x000173fe it ne                                             |     
                                                                 |     if (r5 != r0) {
    0x00017400 cmpne r0, 0                                       |         __asm ("cmpne r0, 0");
                                                                 |     }
    0x00017402 ite eq                                            |     
                                                                 |     if (r5 != r0) {
    0x00017404 moveq r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r5 == r0) {
    0x00017406 movne r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x00017408 str r3, [r7, 8]                                   |     var_8h_3 = r3;
                                                                 |     if (r5 == r0) {
    0x0001740a beq 0x174b0                                       |         goto label_6;
                                                                 |     }
    0x0001740c subs r1, r0, r5                                   |     r1 = r0 - r5;
    0x0001740e mov r0, r5                                        |     r0 = r5;
    0x00017410 blx 0x3928                                        |     r0 = fcn_00003928 ();
    0x00017414 add.w r3, r0, 8                                   |     r3 = r0 + 8;
    0x00017418 mov r2, r0                                        |     r2 = r0;
    0x0001741a bic r3, r3, 7                                     |     r3 = BIT_MASK (r3, 7);
    0x0001741e ldr r4, [r7, 8]                                   |     r4 = var_8h_3;
    0x00017420 sub.w sp, sp, r3                                  |     
    0x00017424 mov r1, r5                                        |     r1 = r5;
    0x00017426 add.w r0, sp, 0xf                                 |     r0 += var_fh;
    0x0001742a lsrs r3, r0, 3                                    |     r3 = r0 >> 3;
    0x0001742c bic r0, r0, 7                                     |     r0 = BIT_MASK (r0, 7);
    0x00017430 strb.w r4, [r2, r3, lsl 3]                        |     offset_0 = r3 << 3;
                                                                 |     *((r2 + offset_0)) = r4;
    0x00017434 blx 0x3578                                        |     mmap64 ()
    0x00017438 movs r1, 1                                        |     r1 = 1;
    0x0001743a bl 0x19be4                                        |     r0 = fcn_00019be4 ();
    0x0001743e cmp r0, 0                                         |     
                                                                 |     if (r0 > 0) {
    0x00017440 bgt 0x174b0                                       |         goto label_6;
                                                                 |     }
                                                                 |     if (r0 == 0) {
    0x00017442 beq.w 0x1755c                                     |         goto label_5;
                                                                 |     }
    0x00017446 ldr.w sb, [pc, 0x130]                             |     
    0x0001744a mov r0, r5                                        |     r0 = r5;
    0x0001744c add sb, pc                                        |     sb = 0x2e9ca;
    0x0001744e mov r1, sb                                        |     r1 = sb;
    0x00017450 blx 0x3afc                                        |     r0 = fcn_00003afc ();
    0x00017454 adds r4, r5, r0                                   |     r4 = r5 + r0;
                                                                 |     do {
                                                                 | label_2:
    0x00017456 mov r0, r5                                        |         r0 = r5;
    0x00017458 mov sl, sp                                        |         sl = sp;
    0x0001745a blx 0x37c8                                        |         fcn_000037c8 ();
    0x0001745e adds r0, 8                                        |         r0 += 8;
    0x00017460 mov r1, sb                                        |         r1 = sb;
    0x00017462 bic r0, r0, 7                                     |         r0 = BIT_MASK (r0, 7);
    0x00017466 sub.w sp, sp, r0                                  |         
    0x0001746a mov r0, r4                                        |         r0 = r4;
    0x0001746c blx 0x34cc                                        |         r0 = fcn_000034cc ();
    0x00017470 adds r2, r4, r0                                   |         r2 = r4 + r0;
    0x00017472 mov r1, sb                                        |         r1 = sb;
    0x00017474 mov r0, r2                                        |         r0 = r2;
    0x00017476 str r2, [r7, 0xc]                                 |         var_ch = r2;
    0x00017478 blx 0x3afc                                        |         r0 = fcn_00003afc ();
    0x0001747a adc.w r8, r0, sl, ror 27                          |         __asm ("adc.w r8, r0, sl, ror 27");
    0x0001747e add r6, sp, 8                                     |         r6 += var_8h;
    0x00017480 ldrb r3, [r2, r0]                                 |         r3 = *((r2 + r0));
    0x00017482 adds r4, r2, r0                                   |         r4 = r2 + r0;
    0x00017484 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00017486 beq 0x1752e                                       |             goto label_7;
                                                                 |         }
    0x00017488 subs r2, r2, r5                                   |         r2 -= r5;
    0x0001748a mov r1, r5                                        |         r1 = r5;
    0x0001748c mov r0, r6                                        |         r0 = r6;
    0x0001748e str r2, [r7, 0xc]                                 |         var_ch = r2;
    0x00017490 blx 0x3578                                        |         mmap64 ()
    0x00017492 ldrd lr, sb, [r2], -0x35c                         |         __asm ("ldrd lr, sb, [r2], -0x35c");
    0x00017496 adds r2, 2                                        |         r2 += 2;
    0x00017498 strb r3, [r6, r2]                                 |         *((r6 + r2)) = r3;
    0x0001749a cmp.w r8, 0                                       |         
                                                                 |         if (r8 == 0) {
    0x0001749e beq 0x174ce                                       |             goto label_8;
                                                                 |         }
    0x000174a0 movs r2, 1                                        |         r2 = 1;
    0x000174a2 mov r1, r6                                        |         r1 = r6;
    0x000174a4 mov r0, r8                                        |         r0 = r8;
    0x000174a6 bl 0x18554                                        |         r0 = fcn_00018554 (r0, r1, r2, r3, r4);
                                                                 |         if (r0 == 0) {
    0x000174aa cbz r0, 0x174ce                                   |             goto label_8;
                                                                 |         }
                                                                 | label_0:
    0x000174ac mov sp, sl                                        |         
    0x000174ae b 0x17456                                         |         
                                                                 |     } while (1);
                                                                 | label_6:
    0x000174b0 movs r0, 0                                        |     r0 = 0;
                                                                 | label_1:
    0x000174b2 ldr r2, [pc, 0xc8]                                |     
    0x000174b4 ldr r3, [pc, 0xb4]                                |     r3 = *(0x1756c);
    0x000174b6 add r2, pc                                        |     r2 = 0x2ea38;
    0x000174b8 ldr r3, [r2, r3]                                  |     r3 = *(0x2ea38);
    0x000174ba ldr r2, [r3]                                      |     r2 = *(0x2ea38);
    0x000174bc ldr r3, [r7, 0x14]                                |     r3 = var_14h;
    0x000174be eors r2, r3                                       |     r2 ^= r3;
    0x000174c0 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x000174c4 bne 0x17562                                       |         goto label_9;
                                                                 |     }
    0x000174c6 adds r7, 0x1c                                     |     r7 += 0x1c;
    0x000174c8 mov sp, r7                                        |     
    0x000174ca pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_8:
    0x000174ce mov r0, fp                                        |     r0 = fp;
    0x000174d0 bl 0x1aabc                                        |     r0 = fcn_0001aabc (r0);
                                                                 |     if (r0 == 0) {
    0x000174d4 cbnz r0, 0x174ee                                  |         
    0x000174d6 ldr r0, [r7, 0x40]                                |         r0 = *((r7 + 0x40));
    0x000174d8 bl 0x1aabc                                        |         fcn_0001aabc (r0);
    0x000174dc ldr r3, [r7, 0x44]                                |         r3 = *((r7 + 0x44));
    0x000174de eor r0, r0, 1                                     |         r0 ^= 1;
    0x000174e2 cmp r3, 0                                         |         
    0x000174e4 ite ne                                            |         
                                                                 |         if (r3 == 0) {
    0x000174e6 movne r0, 0                                       |             r0 = 0;
                                                                 |         }
                                                                 |         if (r3 != 0) {
    0x000174e8 andeq r0, r0, 1                                   |             r0 &= 1;
                                                                 |         }
                                                                 |         if (r0 != 0) {
    0x000174ec cbnz r0, 0x17514                                  |             goto label_10;
                                                                 |         }
                                                                 |     }
    0x000174ee ldr r3, [r7, 4]                                   |     r3 = var_4h_3;
    0x000174f0 mov r0, r6                                        |     r0 = r6;
    0x000174f2 mov r2, fp                                        |     r2 = fp;
    0x000174f4 str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x000174f6 ldr r3, [r7, 0x44]                                |     r3 = *((r7 + 0x44));
    0x000174f8 str r3, [sp]                                      |     *(sp) = r3;
    0x000174fa ldr r3, [r7, 0x40]                                |     r3 = *((r7 + 0x40));
    0x000174fc ldr r1, [r7]                                      |     r1 = *(r7);
    0x000174fe bl 0x17090                                        |     r0 = fcn_00017090 (r0, r1, r2, r3, r4, r5);
    0x00017502 adds.w r3, r0, 0x11                               |     r3 = r0 + 0x11;
    0x00017506 it ne                                             |     
                                                                 |     if (r3 == r0) {
    0x00017508 movne r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x0001750a ands.w r3, r3, r0, lsr 31                         |     r3 &= (r0 >> 31);
                                                                 |     if (r3 == r3) {
    0x0001750e beq 0x174ac                                       |         goto label_0;
                                                                 |     }
                                                                 |     do {
    0x00017510 mov sp, sl                                        |         
    0x00017512 b 0x174b2                                         |         goto label_1;
                                                                 | label_10:
    0x00017514 ldrd r1, r3, [r7]                                 |         __asm ("ldrd r1, r3, [r7]");
    0x00017518 mov r0, r6                                        |         r0 = r6;
    0x0001751a blx r3                                            |         r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
    0x0001751c adds.w r3, r0, 0x11                               |         r3 = r0 + 0x11;
    0x00017520 it ne                                             |         
                                                                 |         if (r3 == r0) {
    0x00017522 movne r3, 1                                       |             r3 = 1;
                                                                 |         }
    0x00017524 ands.w r3, r3, r0, lsr 31                         |         r3 &= (r0 >> 31);
    0x00017528 bne 0x17510                                       |         
                                                                 |     } while (r3 != r3);
    0x0001752a mov sp, sl                                        |     
    0x0001752c b 0x17456                                         |     goto label_2;
                                                                 | label_7:
    0x0001752e mov r0, r3                                        |     r0 = r3;
    0x00017530 mov sp, sl                                        |     
    0x00017532 b 0x174b2                                         |     goto label_1;
                                                                 | label_3:
    0x00017534 ldr r1, [pc, 0x48]                                |     
    0x00017536 movs r2, 0x65                                     |     r2 = 0x65;
    0x00017538 ldr r3, [pc, 0x48]                                |     
    0x0001753a ldr r0, [pc, 0x4c]                                |     
    0x0001753c add r1, pc                                        |     r1 = 0x2eac0;
    0x0001753e add r3, pc                                        |     r3 = 0x2eac6;
    0x00017540 adds r1, 7                                        |     r1 += 7;
    0x00017542 add r0, pc                                        |     r0 = 0x2ead0;
    0x00017544 bl 0x16594                                        |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_4:
    0x00017548 ldr r1, [pc, 0x40]                                |     
    0x0001754a movs r2, 0x66                                     |     r2 = 0x66;
    0x0001754c ldr r3, [pc, 0x40]                                |     
    0x0001754e ldr r0, [pc, 0x44]                                |     
    0x00017550 add r1, pc                                        |     r1 = 0x2eae0;
    0x00017552 add r3, pc                                        |     r3 = 0x2eae6;
    0x00017554 adds r1, 7                                        |     r1 += 7;
    0x00017556 add r0, pc                                        |     r0 = 0x2eaf0;
    0x00017558 bl 0x16594                                        |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_5:
    0x0001755c mvn r0, 0x13                                      |     r0 = ~0x13;
    0x00017560 b 0x174b2                                         |     goto label_1;
                                                                 | label_9:
    0x00017562 blx 0x35d0                                        |     fcn_000035d0 ();
    0x00017566 nop                                               |     
    0x00017568 add r1, sp, 0x270                                 |     r1 += arg_270h;
    0x0001756a movs r1, r0                                       |     r1 = r0;
    0x0001756c lsls r4, r5, 9                                    |     r4 = r5 << 9;
    0x0001756e movs r0, r0                                       |     
    0x00017570 add r1, sp, 0x228                                 |     r1 += arg_228h;
    0x00017572 movs r1, r0                                       |     r1 = r0;
    0x00017574 lsls r0, r1, 0xa                                  |     r0 = r1 << 0xa;
    0x00017576 movs r0, r0                                       |     
    0x00017578 str r0, [r1, 0x64]                                |     *((r1 + 0x64)) = r0;
    0x0001757a movs r0, r0                                       |     
    0x0001757c add r0, sp, 0x278                                 |     r0 += arg_278h;
    0x0001757e movs r1, r0                                       |     r1 = r0;
    0x00017580 str r1, [sp, 0x70]                                |     *(arg_70h) = r1;
    0x00017582 movs r0, r0                                       |     
    0x00017584 str r2, [sp, 0x178]                               |     *(arg_178h) = r2;
    0x00017586 movs r0, r0                                       |     
    0x00017588 str r6, [r2, 0x44]                                |     *((r2 + 0x44)) = r6;
    0x0001758a movs r0, r0                                       |     
    0x0001758c str r1, [sp, 0x20]                                |     var_20h = r1;
    0x0001758e movs r0, r0                                       |     
    0x00017590 str r2, [sp, 0x128]                               |     *(arg_128h) = r2;
    0x00017592 movs r0, r0                                       |     
    0x00017594 str r2, [sp, 0xd8]                                |     *(arg_d8h) = r2;
    0x00017596 movs r0, r0                                       |     
                                                                 | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0x17f74 */
                                                     | #include <stdint.h>
                                                     |  
                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                     |  
    ; (fcn) fcn.00017f74 ()                          | void fcn_00017f74 (int16_t arg_358h, int16_t arg1, int16_t arg2) {
                                                     |     int16_t var_0h;
                                                     |     int16_t var_d8h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x00017f74 blmi 0xd6a84c                         |     __asm ("blmi aav.0x00019dd6");
    0x00017f78 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x00017f7c mov r6, r1                            |     r6 = r1;
    0x00017f7e add r2, pc                            |     r2 += pc;
    0x00017f80 ldr r1, [pc, 0xcc]                    |     
    0x00017f82 sub sp, 0x10                          |     
    0x00017f84 ldr r3, [r2, r3]                      |     r3 = *((r2 + r3));
    0x00017f86 add r7, sp, 0                         |     r7 += var_0h;
    0x00017f88 add r1, pc                            |     r1 = 0x2ffdc;
    0x00017f8a mov r5, r0                            |     r5 = r0;
    0x00017f8c ldr r3, [r3]                          |     r3 = *(r3);
    0x00017f8e str r3, [r7, 0xc]                     |     *((r7 + 0xc)) = r3;
    0x00017f90 mov.w r3, 0                           |     r3 = 0;
    0x00017f94 blx 0x3afc                            |     r0 = fcn_00003afc ();
    0x00017f98 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00017f9a beq 0x18036                           |         goto label_1;
                                                     |     }
    0x00017f9c ldrb r3, [r5, r0]                     |     r3 = *((r5 + r0));
    0x00017f9e mov r4, r0                            |     r4 = r0;
    0x00017fa0 cmp r3, 0x3a                          |     
                                                     |     if (r3 != 0x3a) {
    0x00017fa2 bne 0x18036                           |         goto label_1;
                                                     |     }
    0x00017fa4 mov r1, r0                            |     r1 = r0;
    0x00017fa6 mov r0, r5                            |     r0 = r5;
    0x00017fa8 blx 0x3928                            |     r0 = fcn_00003928 ();
    0x00017fac add.w r3, r0, 8                       |     r3 = r0 + 8;
    0x00017fb0 mov.w r8, 0                           |     r8 = 0;
    0x00017fb4 bic r3, r3, 7                         |     r3 = BIT_MASK (r3, 7);
    0x00017fb8 mov r2, r0                            |     r2 = r0;
    0x00017fba sub.w sp, sp, r3                      |     
    0x00017fbe mov r1, r5                            |     r1 = r5;
    0x00017fc0 mov r3, sp                            |     r3 = sp;
    0x00017fc2 lsrs r3, r3, 3                        |     r3 >>= 3;
    0x00017fc4 strb.w r8, [r0, r3, lsl 3]            |     offset_0 = r3 << 3;
                                                     |     *((r0 + offset_0)) = r8;
    0x00017fc8 mov r0, sp                            |     r0 = sp;
    0x00017fca blx 0x3578                            |     mmap64 ()
    0x00017fce adds r2, r7, 4                        |     r2 = r7 + 4;
    0x00017fd0 mov r1, r8                            |     r1 = r8;
    0x00017fd2 bl 0x17bd0                            |     r0 = fcn_00017bd0 (r0, r1, r2);
    0x00017fd6 cmp r0, 0                             |     
                                                     |     if (r0 < 0) {
    0x00017fd8 blt 0x1801a                           |         goto label_0;
                                                     |     }
    0x00017fda adds r4, 1                            |     r4++;
    0x00017fdc add.w r2, r7, 8                       |     r2 = r7 + 8;
    0x00017fe0 mov r1, r8                            |     r1 = r8;
    0x00017fe2 adds r0, r5, r4                       |     r0 = r5 + r4;
    0x00017fe4 bl 0x17bd0                            |     r0 = fcn_00017bd0 (r0, r1, r2);
    0x00017fe8 cmp r0, 0                             |     
                                                     |     if (r0 < 0) {
    0x00017fea blt 0x1801a                           |         goto label_0;
                                                     |     }
    0x00017fec ldr r1, [r7, 4]                       |     r1 = *((r7 + 4));
    0x00017fee cmp.w r1, 0x1000                      |     
                                                     |     if (r1 >= 0x1000) {
    0x00017ff2 bhs 0x1803c                           |         goto label_2;
                                                     |     }
    0x00017ff4 ldr r3, [r7, 8]                       |     r3 = *((r7 + 8));
    0x00017ff6 cmp.w r3, 0x100000                    |     
                                                     |     if (r3 >= 0x100000) {
    0x00017ffa bhs 0x1803c                           |         goto label_2;
                                                     |     }
    0x00017ffc mov r2, r8                            |     r2 = r8;
    0x00017ffe uxtb r4, r3                           |     r4 = (int8_t) r3;
    0x00018000 movt r2, 0xfff0                       |     r2 = (r2 & 0xFFFF) | 0xfff00000;
    0x00018004 and.w r2, r2, r3, lsl 12              |     r2 &= (r3 << 12);
    0x00018008 lsrs r3, r3, 0x14                     |     r3 >>= 0x14;
    0x0001800a orr.w r4, r4, r1, lsl 8               |     r4 |= (r1 << 8);
    0x0001800e orr.w r3, r3, r1, lsr 24              |     r3 |= (r1 >> 24);
    0x00018012 mov r0, r8                            |     r0 = r8;
    0x00018014 orrs r2, r4                           |     r2 |= r4;
    0x00018016 str r2, [r6]                          |     *(r6) = r2;
    0x00018018 str r3, [r6, 4]                       |     *((r6 + 4)) = r3;
                                                     |     do {
                                                     | label_0:
    0x0001801a ldr r2, [pc, 0x38]                    |         
    0x0001801c ldr r3, [pc, 0x2c]                    |         r3 = *(0x1804c);
    0x0001801e add r2, pc                            |         r2 = 0x30078;
    0x00018020 ldr r3, [r2, r3]                      |         r3 = *(0x30078);
    0x00018022 ldr r2, [r3]                          |         r2 = *(0x30078);
    0x00018024 ldr r3, [r7, 0xc]                     |         r3 = *((r7 + 0xc));
    0x00018026 eors r2, r3                           |         r2 ^= r3;
    0x00018028 mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x0001802c bne 0x18042                           |             goto label_3;
                                                     |         }
    0x0001802e adds r7, 0x10                         |         r7 += 0x10;
    0x00018030 mov sp, r7                            |         
    0x00018032 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_1:
    0x00018036 mvn r0, 0x15                          |         r0 = ~0x15;
    0x0001803a b 0x1801a                             |         
                                                     |     } while (1);
                                                     | label_2:
    0x0001803c mvn r0, 0x21                          |     r0 = ~0x21;
    0x00018040 b 0x1801a                             |     goto label_0;
                                                     | label_3:
    0x00018042 blx 0x35d0                            |     fcn_000035d0 ();
    0x00018046 nop                                   |     
    0x00018048 ldr r5, [sp, 0x358]                   |     r5 = *(arg_358h);
    0x0001804a movs r1, r0                           |     r1 = r0;
    0x0001804c lsls r4, r5, 9                        |     r4 = r5 << 9;
    0x0001804e movs r0, r0                           |     
    0x00018050 ldrh r4, [r3, 0xe]                    |     r4 = *((r3 + 0xe));
    0x00018052 movs r0, r0                           |     
    0x00018054 ldr r5, [sp, 0xd8]                    |     r5 = var_d8h;
    0x00018056 movs r1, r0                           |     r1 = r0;
                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0x190b8 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.000190b8 ()                                      | void fcn_000190b8 (int16_t arg_50h, int16_t arg1, uint32_t arg2, int16_t arg3) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x000190b8 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x000190bc mov r8, r2                                        |     r8 = r2;
    0x000190be ldr r2, [pc, 0x1c0]                               |     
    0x000190c0 sub sp, 0xc                                       |     
    0x000190c2 ldr r3, [pc, 0x1c0]                               |     r3 = *(0x19286);
    0x000190c4 add r2, pc                                        |     r2 = 0x3234a;
    0x000190c6 ldr r3, [r2, r3]                                  |     
    0x000190c8 ldr r3, [r3]                                      |     r3 = LIBUDEV_247;
    0x000190ca str r3, [sp, 4]                                   |     var_4h = r3;
    0x000190cc mov.w r3, 0                                       |     r3 = 0;
    0x000190d0 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000190d2 beq 0x1918c                                       |         goto label_4;
                                                                 |     }
    0x000190d4 ands r5, r8, 8                                    |     r5 = r8 & 8;
    0x000190d8 mov r6, r0                                        |     r6 = r0;
    0x000190da mov r4, r1                                        |     r4 = r1;
                                                                 |     if (r5 == r8) {
    0x000190dc bne 0x19150                                       |         
                                                                 | label_0:
    0x000190de ldr r3, [pc, 0x1a8]                               |         
    0x000190e0 add r3, pc                                        |         
    0x000190e2 ldr r3, [r3]                                      |         r3 = LIBUDEV_247;
                                                                 |         if (r3 != 0) {
    0x000190e4 cbz r3, 0x1912e                                   |             
    0x000190e6 ldr.w sb, [pc, 0x1a4]                             |             
    0x000190ea lsr.w sl, r8, 2                                   |             sl = r8 >> 2;
    0x000190ee and fp, r8, 2                                     |             
    0x000190f2 movs r7, 1                                        |             r7 = 1;
    0x000190f4 add sb, pc                                        |             sb = 0x32386;
                                                                 | label_1:
    0x000190f6 and r2, sl, 4                                     |             r2 = sl & 4;
    0x000190fa mov r1, r4                                        |             r1 = r4;
    0x000190fc cmp.w fp, 0                                       |             
    0x00019100 it eq                                             |             
                                                                 |             if (fp != 0) {
    0x00019102 orreq r2, r2, 1                                   |                 r2 |= 1;
                                                                 |             }
    0x00019106 mov r0, r6                                        |             r0 = r6;
    0x00019108 blx 0x3a48                                        |             r0 = fcn_00003a48 ();
    0x0001910c cmp r0, 0                                         |             
                                                                 |             if (r0 <= 0) {
    0x0001910e ble 0x191b4                                       |                 goto label_5;
                                                                 |             }
    0x00019110 cmp r4, r0                                        |             
    0x00019112 str.w r7, [sb]                                    |             __asm ("str.w r7, [sb]");
                                                                 |             if (r4 == r0) {
    0x00019116 beq 0x1918c                                       |                 goto label_4;
                                                                 |             }
    0x00019118 cmp r0, r4                                        |             
                                                                 |             if (r0 >= r4) {
    0x0001911a bhs 0x19212                                       |                 goto label_6;
                                                                 |             }
    0x0001911c tst.w r8, 1                                       |             
    0x00019120 add r6, r0                                        |             r6 += r0;
    0x00019122 sub.w r4, r4, r0                                  |             r4 -= r0;
                                                                 |             if ((r8 & 1) != 0) {
    0x00019126 bne 0x19226                                       |                 goto label_7;
                                                                 |             }
    0x00019128 cmp.w fp, 0                                       |             
                                                                 |             if (fp != 0) {
    0x0001912c bne 0x191fa                                       |                 goto label_8;
                                                                 |             }
                                                                 |         }
                                                                 | label_2:
    0x0001912e ldr r0, [pc, 0x160]                               |         
    0x00019130 mov.w r1, 0x100                                   |         
    0x00019134 movt r1, 8                                        |         r1 = 0x80100;
    0x00019138 add r0, pc                                        |         r0 = 0x323ce;
    0x0001913a blx 0x36ec                                        |         r0 = asprintf_chk ();
    0x0001913e subs r5, r0, 0                                    |         r5 = r0 - 0;
                                                                 |         if (r5 < r0) {
    0x00019140 blt 0x191fe                                       |             goto label_9;
                                                                 |         }
    0x00019142 mov r2, r4                                        |         r2 = r4;
    0x00019144 movs r3, 1                                        |         r3 = 1;
    0x00019146 mov r1, r6                                        |         r1 = r6;
    0x00019148 bl 0x15228                                        |         r0 = fcn_00015228 (r0, r1, r2, r3);
    0x0001914c mov r4, r0                                        |         r4 = r0;
    0x0001914e b 0x19192                                         |         goto label_3;
                                                                 |     }
    0x00019150 movs r5, 0                                        |     r5 = 0;
    0x00019152 mov r7, sp                                        |     r7 = sp;
    0x00019154 b 0x19170                                         |     
                                                                 |     while (r0 >= 0) {
    0x00019156 cmp r4, 4                                         |         
    0x00019158 mov r5, r4                                        |         r5 = r4;
    0x0001915a it hs                                             |         
                                                                 |         if (r4 < 4) {
    0x0001915c movhs r5, 4                                       |             r5 = 4;
                                                                 |         }
    0x0001915e mov r0, r6                                        |         r0 = r6;
    0x00019160 mov r2, r5                                        |         r2 = r5;
    0x00019162 mov r1, r7                                        |         r1 = r7;
    0x00019164 blx 0x3578                                        |         mmap64 ()
    0x00019168 subs r4, r4, r5                                   |         r4 -= r5;
    0x0001916a add r6, r5                                        |         r6 += r5;
                                                                 |         if (r4 == r4) {
    0x0001916c beq 0x1918c                                       |             goto label_4;
                                                                 |         }
    0x0001916e movs r5, 1                                        |         r5 = 1;
    0x00019170 mov r0, r7                                        |         r0 = r7;
    0x00019172 bl 0x18fb8                                        |         r0 = fcn_00018fb8 ();
    0x00019176 cmp r0, 0                                         |         
    0x00019178 bge 0x19156                                       |         
                                                                 |     }
    0x0001917a cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x0001917c beq 0x190de                                       |         goto label_0;
                                                                 |     }
    0x0001917e tst.w r8, 1                                       |     
                                                                 |     if ((r8 & 1) == 0) {
    0x00019182 beq 0x190de                                       |         goto label_0;
                                                                 |     }
    0x00019184 mov r1, r4                                        |     r1 = r4;
    0x00019186 mov r0, r6                                        |     r0 = r6;
    0x00019188 bl 0x1907c                                        |     fcn_0001907c (r0, r1);
                                                                 | label_4:
    0x0001918c mov.w r5, -1                                      |     r5 = -1;
    0x00019190 movs r4, 0                                        |     r4 = 0;
                                                                 | label_3:
    0x00019192 mov r0, r5                                        |     r0 = r5;
    0x00019194 bl 0x10570                                        |     fcn_00010570 (r0);
    0x00019198 ldr r2, [pc, 0xf8]                                |     
    0x0001919a ldr r3, [pc, 0xe8]                                |     r3 = *(0x19286);
    0x0001919c add r2, pc                                        |     r2 = 0x32434;
    0x0001919e ldr r3, [r2, r3]                                  |     r3 = LIBUDEV_247;
    0x000191a0 ldr r2, [r3]                                      |     r2 = LIBUDEV_247;
    0x000191a2 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x000191a4 eors r2, r3                                       |     r2 ^= r3;
    0x000191a6 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x000191aa bne 0x1927c                                       |         goto label_10;
                                                                 |     }
    0x000191ac mov r0, r4                                        |     r0 = r4;
    0x000191ae add sp, 0xc                                       |     
    0x000191b0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 |     if (r2 == r3) {
                                                                 | label_5:
    0x000191b4 beq 0x19236                                       |         goto label_11;
                                                                 |     }
    0x000191b6 blx 0x3828                                        |     r0 = fcn_00003828 ();
    0x000191ba ldr r3, [r0]                                      |     r3 = *(r0);
    0x000191bc eor.w r2, r3, r3, asr 31                          |     r2 = r3 ^ (r3 >> 31);
    0x000191c0 sub.w r2, r2, r3, asr 31                          |     r2 -= (r3 >> 31);
    0x000191c4 cmp r2, 0x26                                      |     
                                                                 |     if (r2 == 0x26) {
    0x000191c6 beq 0x191f0                                       |         goto label_12;
                                                                 |     }
                                                                 |     if (r2 > 0x26) {
    0x000191c8 bgt 0x191ea                                       |         goto label_13;
                                                                 |     }
    0x000191ca cmp r2, 0x19                                      |     
                                                                 |     if (r2 == 0x19) {
    0x000191cc beq 0x191f0                                       |         goto label_12;
                                                                 |     }
                                                                 |     do {
    0x000191ce cmp r3, 0xb                                       |         
                                                                 |         if (r3 == 0xb) {
    0x000191d0 beq 0x19252                                       |             goto label_14;
                                                                 |         }
    0x000191d2 cmp r3, 0x16                                      |         
                                                                 |         if (r3 != 0x16) {
    0x000191d4 bne 0x19274                                       |             goto label_15;
                                                                 |         }
    0x000191d6 tst.w r8, 0x10                                    |         
                                                                 |         if ((r8 & 0x10) == 0) {
    0x000191da beq 0x19248                                       |             goto label_16;
                                                                 |         }
    0x000191dc bic r8, r8, 0x10                                  |         r8 = BIT_MASK (r8, 0x10);
    0x000191e0 lsr.w sl, r8, 2                                   |         sl = r8 >> 2;
    0x000191e4 and fp, r8, 2                                     |         
    0x000191e8 b 0x190f6                                         |         goto label_1;
                                                                 | label_13:
    0x000191ea subs r2, 0x5d                                     |         r2 -= 0x5d;
    0x000191ec cmp r2, 4                                         |         
    0x000191ee bhi 0x191ce                                       |         
                                                                 |     } while (r2 > 4);
                                                                 | label_12:
    0x000191f0 ldr r3, [pc, 0xa4]                                |     
    0x000191f2 movs r2, 0                                        |     r2 = 0;
    0x000191f4 add r3, pc                                        |     r3 = 0x32490;
    0x000191f6 str r2, [r3]                                      |     *(r3) = r2;
    0x000191f8 b 0x1912e                                         |     goto label_2;
                                                                 | label_8:
    0x000191fa movs r5, 1                                        |     r5 = 1;
    0x000191fc b 0x190f6                                         |     goto label_1;
                                                                 | label_9:
    0x000191fe blx 0x3828                                        |     r0 = fcn_00003828 ();
    0x00019202 ldr r4, [r0]                                      |     r4 = *(r0);
    0x00019204 cmp r4, 2                                         |     
    0x00019206 it ne                                             |     
                                                                 |     if (r4 == 2) {
    0x00019208 rsbne r4, r4, 0                                   |         __asm ("rsbne r4, r4, 0");
                                                                 |         goto label_17;
                                                                 |     }
                                                                 |     if (r4 != 2) {
                                                                 | label_17:
    0x0001920a bne 0x19192                                       |         goto label_3;
                                                                 |     }
    0x0001920c mvn r4, 0x25                                      |     r4 = ~0x25;
    0x00019210 b 0x19192                                         |     goto label_3;
                                                                 | label_6:
    0x00019212 ldr r1, [pc, 0x88]                                |     
    0x00019214 movs r2, 0xe8                                     |     r2 = 0xe8;
    0x00019216 ldr r3, [pc, 0x88]                                |     
    0x00019218 ldr r0, [pc, 0x88]                                |     
    0x0001921a add r1, pc                                        |     r1 = 0x324bc;
    0x0001921c add r3, pc                                        |     r3 = 0x324c2;
    0x0001921e adds r1, 7                                        |     r1 += 7;
    0x00019220 add r0, pc                                        |     r0 = 0x324c8;
    0x00019222 bl 0x16594                                        |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 |     do {
                                                                 | label_7:
    0x00019226 mov r1, r4                                        |         r1 = r4;
    0x00019228 mov r0, r6                                        |         r0 = r6;
    0x0001922a mov.w r5, -1                                      |         r5 = -1;
    0x0001922e movs r4, 0                                        |         r4 = 0;
    0x00019230 bl 0x1907c                                        |         fcn_0001907c (r0, r1);
    0x00019234 b 0x19192                                         |         goto label_3;
                                                                 | label_11:
    0x00019236 ldr r3, [pc, 0x70]                                |         
    0x00019238 movs r2, 1                                        |         r2 = 1;
    0x0001923a mov.w r5, -1                                      |         r5 = -1;
    0x0001923e mvn r4, 4                                         |         r4 = ~4;
    0x00019242 add r3, pc                                        |         r3 = 0x324f0;
    0x00019244 str r2, [r3]                                      |         *(r3) = r2;
    0x00019246 b 0x19192                                         |         goto label_3;
                                                                 | label_16:
    0x00019248 mov.w r5, -1                                      |         r5 = -1;
    0x0001924c mvn r4, 0x15                                      |         r4 = ~0x15;
    0x00019250 b 0x19192                                         |         goto label_3;
                                                                 | label_14:
    0x00019252 ldr r3, [pc, 0x58]                                |         
    0x00019254 movs r2, 1                                        |         r2 = 1;
    0x00019256 add r3, pc                                        |         r3 = 0x32508;
    0x00019258 str r2, [r3]                                      |         *(r3) = r2;
                                                                 |         if (r5 == 0) {
    0x0001925a cbz r5, 0x19262                                   |             goto label_18;
                                                                 |         }
    0x0001925c tst.w r8, 1                                       |         
    0x00019260 bne 0x19226                                       |         
                                                                 |     } while ((r8 & 1) != 0);
                                                                 | label_18:
    0x00019262 tst.w r8, 4                                       |     
                                                                 |     if ((r8 & 4) == 0) {
    0x00019266 beq.w 0x1912e                                     |         goto label_2;
                                                                 |     }
    0x0001926a mov.w r5, -1                                      |     r5 = -1;
    0x0001926e mvn r4, 0x3c                                      |     r4 = ~0x3c;
    0x00019272 b 0x19192                                         |     goto label_3;
                                                                 | label_15:
    0x00019274 rsbs r4, r3, 0                                    |     r4 = r3 - ;
    0x00019276 mov.w r5, -1                                      |     r5 = -1;
    0x0001927a b 0x19192                                         |     goto label_3;
                                                                 | label_10:
    0x0001927c blx 0x35d0                                        |     fcn_000035d0 ();
    0x00019280 ldrh r0, [r2, 0x24]                               |     r0 = *((r2 + 0x24));
    0x00019282 movs r1, r0                                       |     r1 = r0;
    0x00019284 lsls r4, r5, 9                                    |     r4 = r5 << 9;
    0x00019286 movs r0, r0                                       |     
    0x00019288 str r0, [sp, 0x50]                                |     *(arg_50h) = r0;
    0x0001928a movs r1, r0                                       |     r1 = r0;
    0x0001928c str r0, [sp]                                      |     *(sp) = r0;
    0x0001928e movs r1, r0                                       |     r1 = r0;
    0x00019290 ldrb r0, [r0, 0xb]                                |     r0 = *((r0 + 0xb));
    0x00019292 movs r0, r0                                       |     
    0x00019294 ldrh r0, [r7, 0x1c]                               |     r0 = *((r7 + 0x1c));
    0x00019296 movs r1, r0                                       |     r1 = r0;
    0x00019298 ldrh r0, [r0, 0x38]                               |     r0 = *((r0 + 0x38));
    0x0001929a movs r1, r0                                       |     r1 = r0;
    0x0001929c ldrb r6, [r5, 6]                                  |     r6 = *((r5 + 6));
    0x0001929e movs r0, r0                                       |     
    0x000192a0 ldrb r4, [r5, 7]                                  |     r4 = *((r5 + 7));
    0x000192a2 movs r0, r0                                       |     
    0x000192a4 ldrb r0, [r1, 7]                                  |     r0 = *((r1 + 7));
    0x000192a6 movs r0, r0                                       |     
    0x000192a8 ldrh r2, [r6, 0x34]                               |     r2 = *((r6 + 0x34));
    0x000192aa movs r1, r0                                       |     r1 = r0;
    0x000192ac ldrh r6, [r3, 0x34]                               |     r6 = *((r3 + 0x34));
    0x000192ae movs r1, r0                                       |     r1 = r0;
                                                                 | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0x19b1c */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00019b1c ()                          | void fcn_00019b1c (int16_t arg1, int16_t arg2) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x00019b1c tstlt r8, 248, 10                     |     __asm ("tstlt r8, 248, 10");
    0x00019b20 mov r4, r1                            |     r4 = r1;
                                                     |     if (r1 != 0) {
    0x00019b22 cbz r1, 0x19b8c                       |         
    0x00019b24 mov r6, r0                            |         r6 = r0;
    0x00019b26 mov r0, r1                            |         r0 = r1;
    0x00019b28 blx 0x37c8                            |         r0 = fcn_000037c8 ();
    0x00019b2c cmp r0, 1                             |         
    0x00019b2e mov r5, r0                            |         r5 = r0;
                                                     |         if (r0 < 1) {
    0x00019b30 bls 0x19bb8                           |             goto label_0;
                                                     |         }
    0x00019b32 ldrb r3, [r4]                         |         r3 = *(r4);
    0x00019b34 cmp r3, 0x2f                          |         
                                                     |         if (r3 != 0x2f) {
    0x00019b36 beq 0x19b3c                           |             
    0x00019b38 cmp r3, 0x40                          |             
                                                     |             if (r3 != 0x40) {
    0x00019b3a bne 0x19bb8                           |                 goto label_0;
                                                     |             }
                                                     |         }
    0x00019b3c adds r7, r5, 1                        |         r7 = r5 + 1;
    0x00019b3e cmp r7, 0x6c                          |         
                                                     |         if (r7 > 0x6c) {
    0x00019b40 bhi 0x19bb8                           |             goto label_0;
                                                     |         }
    0x00019b42 movs r2, 0x6e                         |         r2 = 0x6e;
    0x00019b44 movs r1, 0                            |         r1 = 0;
    0x00019b46 mov r0, r6                            |         r0 = r6;
    0x00019b48 blx 0x3898                            |         fcn_00003898 ();
    0x00019b4c movs r3, 1                            |         r3 = 1;
    0x00019b4e strh r3, [r6]                         |         *(r6) = r3;
    0x00019b50 ldrb r3, [r4]                         |         r3 = *(r4);
    0x00019b52 cmp r3, 0x40                          |         
                                                     |         if (r3 != 0x40) {
    0x00019b54 beq 0x19b7e                           |             
    0x00019b56 cmp r3, 0x2f                          |             
                                                     |             if (r3 != 0x2f) {
    0x00019b58 bne 0x19ba2                           |                 goto label_1;
                                                     |             }
    0x00019b5a mov r2, r7                            |             r2 = r7;
    0x00019b5c mov r1, r4                            |             r1 = r4;
    0x00019b5e adds r0, r6, 2                        |             r0 = r6 + 2;
    0x00019b60 blx 0x3578                            |             mmap64 ()
    0x00019b64 adds r0, r5, 3                        |             r0 = r5 + 3;
    0x00019b66 pop {r3, r4, r5, r6, r7, pc}          |             
    0x00019b68 ldr r1, [pc, 0x54]                    |             
    0x00019b6a movw r2, 0x4a1                        |             r2 = 0x4a1;
    0x00019b6e ldr r3, [pc, 0x54]                    |             
    0x00019b70 ldr r0, [pc, 0x54]                    |             
    0x00019b72 add r1, pc                            |             r1 = 0x33736;
    0x00019b74 add r3, pc                            |             r3 = 0x3373e;
    0x00019b76 adds r1, 7                            |             r1 += 7;
    0x00019b78 add r0, pc                            |             r0 = 0x33744;
    0x00019b7a bl 0x16594                            |             fcn_00016594 (r0, r1, r2, r3, r4);
                                                     |         }
    0x00019b7e mov r2, r5                            |         r2 = r5;
    0x00019b80 adds r1, r4, 1                        |         r1 = r4 + 1;
    0x00019b82 adds r0, r6, 3                        |         r0 = r6 + 3;
    0x00019b84 blx 0x3578                            |         mmap64 ()
    0x00019b88 adds r0, r5, 2                        |         r0 = r5 + 2;
    0x00019b8a pop {r3, r4, r5, r6, r7, pc}          |         
                                                     |     }
    0x00019b8c ldr r1, [pc, 0x3c]                    |     
    0x00019b8e movw r2, 0x4a2                        |     r2 = 0x4a2;
    0x00019b92 ldr r3, [pc, 0x3c]                    |     
    0x00019b94 ldr r0, [pc, 0x3c]                    |     
    0x00019b96 add r1, pc                            |     r1 = 0x33766;
    0x00019b98 add r3, pc                            |     r3 = 0x3376e;
    0x00019b9a adds r1, 7                            |     r1 += 7;
    0x00019b9c add r0, pc                            |     r0 = 0x33774;
    0x00019b9e bl 0x16594                            |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                     | label_1:
    0x00019ba2 ldr r1, [pc, 0x34]                    |     
    0x00019ba4 mov.w r2, 0x4c0                       |     r2 = 0x4c0;
    0x00019ba8 ldr r3, [pc, 0x30]                    |     
    0x00019baa ldr r0, [pc, 0x34]                    |     
    0x00019bac add r1, pc                            |     r1 = 0x3378a;
    0x00019bae add r3, pc                            |     r3 = 0x3378e;
    0x00019bb0 adds r1, 7                            |     r1 += 7;
    0x00019bb2 add r0, pc                            |     r0 = 0x33798;
    0x00019bb4 bl 0x16594                            |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                     | label_0:
    0x00019bb8 mvn r0, 0x15                          |     r0 = ~0x15;
    0x00019bbc pop {r3, r4, r5, r6, r7, pc}          |     
                                                     | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0x5edc */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.udev_util_encode_string ()                           | void udev_util_encode_string (uint32_t arg1, uint32_t arg2, int16_t arg3) {
                                                                     |     int16_t var_0h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
    0x00005edc b.w 0x1b308                                           |     
    0x0001b308 cmp r1, 0                                             |     
    0x0001b30a it ne                                                 |     
                                                                     |     if (r1 != 0) {
    0x0001b30c cmpne r0, 0                                           |         __asm ("cmpne r0, 0");
                                                                     |     }
    0x0001b30e push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0001b312 it eq                                                 |     
                                                                     |     if (r1 != 0) {
    0x0001b314 moveq r6, 1                                           |         r6 = 1;
                                                                     |     }
    0x0001b316 sub sp, 0xc                                           |     
    0x0001b318 it ne                                                 |     
                                                                     |     if (r1 == 0) {
    0x0001b31a movne r6, 0                                           |         r6 = 0;
                                                                     |     }
                                                                     |     if (r1 == 0) {
    0x0001b31c beq 0x1b3c8                                           |         goto label_2;
                                                                     |     }
    0x0001b31e ldrb r3, [r0]                                         |     r3 = *(r0);
    0x0001b320 mov r7, r0                                            |     r7 = r0;
    0x0001b322 mov sb, r2                                            |     sb = r2;
    0x0001b324 mov r8, r1                                            |     r8 = r1;
    0x0001b326 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0001b328 beq 0x1b3d2                                           |         goto label_3;
                                                                     |     }
    0x0001b32a ldr.w sl, [pc, 0xac]                                  |     
    0x0001b32e mov fp, r0                                            |     
    0x0001b330 mov r5, r6                                            |     r5 = r6;
    0x0001b332 add sl, pc                                            |     sl = 0x36710;
    0x0001b334 b 0x1b35a                                             |     
                                                                     |     while (r0 > 1) {
    0x0001b336 sub.w r3, sb, r6                                      |         r3 = sb - r6;
    0x0001b33a cmp r3, r0                                            |         
                                                                     |         if (r3 <= r0) {
    0x0001b33c blo 0x1b3c8                                           |             goto label_2;
                                                                     |         }
    0x0001b33e subs r5, 1                                            |         r5--;
    0x0001b340 add.w r0, r8, r6                                      |         r0 = r8 + r6;
    0x0001b344 add r5, r4                                            |         r5 += r4;
    0x0001b346 add r6, r4                                            |         r6 += r4;
    0x0001b348 mov r2, r4                                            |         r2 = r4;
    0x0001b34a mov r1, fp                                            |         r1 = fp;
    0x0001b34c blx 0x3578                                            |         mmap64 ()
                                                                     | label_1:
    0x0001b350 adds r5, 1                                            |         r5++;
    0x0001b352 ldrb r3, [r7, r5]                                     |         r3 = *((r7 + r5));
    0x0001b354 add.w fp, r7, r5                                      |         
                                                                     |         if (r3 == 0) {
    0x0001b358 cbz r3, 0x1b394                                       |             goto label_4;
                                                                     |         }
                                                                     | label_0:
    0x0001b35a mov.w r1, -1                                          |         r1 = -1;
    0x0001b35e mov r0, fp                                            |         r0 = fp;
    0x0001b360 bl 0x1adb4                                            |         r0 = fcn_0001adb4 (r0, r1);
    0x0001b364 cmp r0, 1                                             |         
    0x0001b366 mov r4, r0                                            |         r4 = r0;
    0x0001b368 bgt 0x1b336                                           |         
                                                                     |     }
    0x0001b36a ldrb.w r0, [fp]                                       |     r0 = *(fp);
    0x0001b36e cmp r0, 0x5c                                          |     
                                                                     |     if (r0 == 0x5c) {
    0x0001b370 beq 0x1b3a6                                           |         goto label_5;
                                                                     |     }
    0x0001b372 movs r1, 0                                            |     r1 = 0;
    0x0001b374 bl 0x1b2c8                                            |     r0 = fcn_0001b2c8 (r0, r1);
                                                                     |     if (r0 == 0) {
    0x0001b378 cbz r0, 0x1b3a6                                       |         goto label_5;
                                                                     |     }
    0x0001b37a cmp sb, r6                                            |     
                                                                     |     if (sb == r6) {
    0x0001b37c beq 0x1b3c8                                           |         goto label_2;
                                                                     |     }
    0x0001b37e ldrb.w r3, [fp]                                       |     r3 = *(fp);
    0x0001b382 adds r5, 1                                            |     r5++;
    0x0001b384 add.w fp, r7, r5                                      |     
    0x0001b388 strb.w r3, [r8, r6]                                   |     *((r8 + r6)) = r3;
    0x0001b38c adds r6, 1                                            |     r6++;
    0x0001b38e ldrb r3, [r7, r5]                                     |     r3 = *((r7 + r5));
    0x0001b390 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0001b392 bne 0x1b35a                                           |         goto label_0;
                                                                     |     }
                                                                     |     do {
                                                                     | label_4:
    0x0001b394 cmp sb, r6                                            |         
                                                                     |         if (sb != r6) {
    0x0001b396 beq 0x1b3c8                                           |             
    0x0001b398 movs r3, 0                                            |             r3 = 0;
    0x0001b39a mov r0, r3                                            |             r0 = r3;
    0x0001b39c strb.w r3, [r8, r6]                                   |             *((r8 + r6)) = r3;
    0x0001b3a0 add sp, 0xc                                           |             
    0x0001b3a2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |             
                                                                     | label_5:
    0x0001b3a6 sub.w r3, sb, r6                                      |             r3 = sb - r6;
    0x0001b3aa cmp r3, 3                                             |             
                                                                     |             if (r3 < 3) {
    0x0001b3ac bls 0x1b3c8                                           |                 goto label_2;
                                                                     |             }
    0x0001b3ae ldrb.w r4, [fp]                                       |             r4 = *(fp);
    0x0001b3b2 add.w r0, r8, r6                                      |             r0 = r8 + r6;
    0x0001b3b6 mov r3, sl                                            |             r3 = sl;
    0x0001b3b8 mov.w r2, -1                                          |             r2 = -1;
    0x0001b3bc movs r1, 1                                            |             r1 = 1;
    0x0001b3be adds r6, 4                                            |             r6 += 4;
    0x0001b3c0 str r4, [sp]                                          |             *(sp) = r4;
    0x0001b3c2 blx 0x384c                                            |             fcn_0000384c ();
    0x0001b3c6 b 0x1b350                                             |             goto label_1;
                                                                     |         }
                                                                     | label_2:
    0x0001b3c8 mvn r0, 0x15                                          |         r0 = ~0x15;
    0x0001b3cc add sp, 0xc                                           |         
    0x0001b3ce pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_3:
    0x0001b3d2 mov r6, r3                                            |         r6 = r3;
    0x0001b3d4 b 0x1b394                                             |         
                                                                     |     } while (1);
                                                                     | }

[*] Function mmap used 24 times libudev.so.1.7.2