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

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


[*] Function strcat 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 @ 0x13990 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.00013990 ()                                      | void fcn_00013990 (int16_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00013990 invalid                                           |     
    0x00013994 ldrb.w ip, [r0, 0x27]                             |     ip = *((r0 + 0x27));
    0x00013998 mov r4, r0                                        |     r4 = r0;
    0x0001399a mov r6, r2                                        |     r6 = r2;
    0x0001399c ands r1, ip, 4                                    |     r1 = ip & 4;
                                                                 |     if (r1 == ip) {
    0x000139a0 beq 0x13a58                                       |         goto label_12;
                                                                 |     }
    0x000139a2 ldr r2, [r0, 0x1c]                                |     r2 = *((r0 + 0x1c));
    0x000139a4 cmp r5, r2                                        |     
                                                                 |     if (r5 >= r2) {
    0x000139a6 bhs 0x13a6a                                       |         goto label_13;
                                                                 |     }
                                                                 |     do {
    0x000139a8 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x000139aa bne 0x13a86                                       |             goto label_14;
                                                                 |         }
    0x000139ac cmp r1, 0                                         |         
                                                                 |         if (r1 != 0) {
    0x000139ae bne 0x13a80                                       |             goto label_3;
                                                                 |         }
                                                                 | label_2:
    0x000139b0 ldr r3, [pc, 0x14c]                               |         
    0x000139b2 and r1, ip, 3                                     |         r1 = ip & 3;
    0x000139b6 ubfx r2, ip, 3, 3                                 |         r2 = (ip >> 3) & ((1 << 3) - 1);
    0x000139ba add r3, pc                                        |         r3 = 0x274be;
    0x000139bc add.w r3, r3, r1, lsl 4                           |         r3 += (r1 << 4);
    0x000139c0 ldr r3, [r3, 0xc]                                 |         r3 = *((r3 + 0xc));
                                                                 | label_0:
    0x000139c2 cmp r3, r2                                        |         
                                                                 |         if (r3 < r2) {
    0x000139c4 bls 0x13abc                                       |             goto label_15;
                                                                 |         }
    0x000139c6 and ip, ip, 3                                     |         
    0x000139ca cmp.w ip, 1                                       |         
                                                                 |         if (ip == 1) {
    0x000139ce bne 0x13a1c                                       |             
    0x000139d0 mov.w r3, -1                                      |             r3 = -1;
    0x000139d4 str r3, [r6, 8]                                   |             *((r6 + 8)) = r3;
    0x000139d6 ldr r3, [r4, 0x30]                                |             r3 = *((r4 + 0x30));
    0x000139d8 adds r1, r3, 1                                    |             r1 = r3 + 1;
    0x000139da str r3, [r6, 0xc]                                 |             *((r6 + 0xc)) = r3;
                                                                 |             if (r1 != r3) {
    0x000139dc beq 0x13a0e                                       |                 
    0x000139de ldrb.w ip, [r4, 0x27]                             |                 ip = *((r4 + 0x27));
    0x000139e2 ldr r1, [pc, 0x120]                               |                 
    0x000139e4 tst.w ip, 4                                       |                 
    0x000139e8 and ip, ip, 3                                     |                 
    0x000139ea lsrs r3, r0, 0x10                                 |                 r3 = r0 >> 0x10;
    0x000139ec add r1, pc                                        |                 r1 = 0x274f6;
    0x000139ee it ne                                             |                 
                                                                 |                 if (r3 == r0) {
    0x000139f0 ldrne r2, [r4, 4]                                 |                     r2 = *((r4 + 4));
                                                                 |                 }
    0x000139f2 add.w r1, r1, ip, lsl 4                           |                 r1 += (ip << 4);
    0x000139f6 it eq                                             |                 
                                                                 |                 if (r3 != r0) {
    0x000139f8 addeq r2, r4, 4                                   |                     r2 = r4 + 4;
                                                                 |                 }
    0x000139fa ldr r1, [r1, 4]                                   |                 r1 = *((r1 + 4));
    0x000139fc mla r3, r1, r3, r2                                |                 __asm ("mla r3, r1, r3, r2");
    0x00013a00 ldr r2, [r3, 8]                                   |                 r2 = *((r3 + 8));
    0x00013a02 adds r2, 1                                        |                 r2++;
    0x00013a04 itt eq                                            |                 
                                                                 |                 if (r2 != 1) {
    0x00013a06 mvneq r2, 3                                       |                     r2 = ~3;
                                                                 |                 }
                                                                 |                 if (r2 == 1) {
    0x00013a0a str r2, [r3, 8]                                   |                     *((r3 + 8)) = r2;
                                                                 |                 }
                                                                 |                 if (r2 != 1) {
    0x00013a0c bne 0x13ae8                                       |                     goto label_16;
                                                                 |                 }
                                                                 |             }
    0x00013a0e ldr r2, [r4, 0x2c]                                |             r2 = *((r4 + 0x2c));
    0x00013a10 mvn r3, 3                                         |             r3 = ~3;
    0x00013a14 str r3, [r4, 0x30]                                |             *((r4 + 0x30)) = r3;
    0x00013a16 adds r2, 1                                        |             r2++;
    0x00013a18 it eq                                             |             
                                                                 |             if (r2 == 1) {
    0x00013a1a streq r3, [r4, 0x2c]                              |                 *((r4 + 0x2c)) = r3;
                                                                 |                 goto label_17;
                                                                 |             }
                                                                 |         }
                                                                 | label_17:
    0x00013a1c mov r2, r6                                        |         r2 = r6;
    0x00013a1e mov r1, r5                                        |         r1 = r5;
    0x00013a20 mov r0, r4                                        |         r0 = r4;
    0x00013a22 bl 0x13424                                        |         r0 = fcn_00013424 (r0, r1, r2, r3);
    0x00013a26 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00013a28 bne 0x13ad2                                       |             goto label_18;
                                                                 |         }
    0x00013a2a ldrb.w r3, [r4, 0x27]                             |         r3 = *((r4 + 0x27));
    0x00013a2e movs r0, 1                                        |         r0 = 1;
    0x00013a30 lsls r2, r3, 0x1d                                 |         r2 = r3 << 0x1d;
    0x00013a32 iteee mi                                          |         
                                                                 |         if (r2 >= r3) {
    0x00013a34 ldrmi r3, [r4, 0x18]                              |             r3 = *((r4 + 0x18));
                                                                 |         }
                                                                 |         if (r2 >= r3) {
    0x00013a36 ubfxpl r2, r3, 3, 3                               |             __asm ("ubfxpl r2, r3, 3, 3");
                                                                 |         }
                                                                 |         if (r2 < r3) {
    0x00013a3a addpl r2, 1                                       |             r2++;
                                                                 |         }
                                                                 |         if (r2 >= r3) {
    0x00013a3c bfi r3, r2, 3, 3                                  |             value_0 = BIT_MASK (3, 3);
                                                                 |             value_1 = r2 & value_0;
                                                                 |             value_0 = ~value_0;
                                                                 |             r3 &= value_0;
                                                                 |             r3 |= value_1;
                                                                 |         }
    0x00013a40 itet mi                                           |         
                                                                 |         if (r2 >= r3) {
    0x00013a42 addmi r3, 1                                       |             r3++;
                                                                 |         }
                                                                 |         if (r2 < r3) {
    0x00013a44 strbpl r3, [r4, 0x27]                             |             *((r4 + 0x27)) = r3;
                                                                 |         }
                                                                 |         if (r2 >= r3) {
    0x00013a46 addmi r0, 0x27                                    |             r0 += 0x27;
                                                                 |         }
    0x00013a48 str r3, [r4, 0x18]                                |         *((r4 + 0x18)) = r3;
    0x00013a4a ldrb.w r3, [r4, 0x27]                             |         r3 = *((r4 + 0x27));
    0x00013a4e orr r3, r3, 0x80                                  |         r3 |= 0x80;
    0x00013a52 strb.w r3, [r4, 0x27]                             |         *((r4 + 0x27)) = r3;
                                                                 | label_1:
    0x00013a56 pop {r4, r5, r6, pc}                              |         
                                                                 | label_12:
    0x00013a58 ldr r2, [pc, 0xac]                                |         
    0x00013a5a and r0, ip, 3                                     |         r0 = ip & 3;
    0x00013a5e add r2, pc                                        |         r2 = 0x2756a;
    0x00013a60 add.w r2, r2, r0, lsl 4                           |         r2 += (r0 << 4);
    0x00013a64 ldr r2, [r2, 0xc]                                 |         r2 = *((r2 + 0xc));
    0x00013a66 cmp r5, r2                                        |         
    0x00013a68 blo 0x139a8                                       |         
                                                                 |     } while (r5 <= r2);
                                                                 | label_13:
    0x00013a6a ldr r1, [pc, 0xa0]                                |     
    0x00013a6c movw r2, 0x3f5                                    |     r2 = 0x3f5;
    0x00013a70 ldr r3, [pc, 0x9c]                                |     
    0x00013a72 ldr r0, [pc, 0xa0]                                |     
    0x00013a74 add r1, pc                                        |     r1 = 0x27586;
    0x00013a76 add r3, pc                                        |     r3 = 0x2758a;
    0x00013a78 adds r1, 7                                        |     r1 += 7;
    0x00013a7a add r0, pc                                        |     r0 = 0x27594;
    0x00013a7c bl 0x16594                                        |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_3:
    0x00013a80 ldrd r2, r3, [r4, 0x18]                           |     __asm ("ldrd r2, r3, [r4, 0x18]");
    0x00013a84 b 0x139c2                                         |     goto label_0;
                                                                 | label_14:
    0x00013a86 movs r1, 1                                        |     r1 = 1;
    0x00013a88 mov r0, r4                                        |     r0 = r4;
    0x00013a8a bl 0x135e0                                        |     r0 = fcn_000135e0 (r0, r1);
    0x00013a8e cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00013a90 blt 0x13a56                                       |         goto label_1;
                                                                 |     }
                                                                 |     if (r0 != 0) {
    0x00013a92 bne 0x13aa2                                       |         goto label_19;
                                                                 |     }
    0x00013a94 ldrb.w ip, [r4, 0x27]                             |     ip = *((r4 + 0x27));
    0x00013a98 and r1, ip, 4                                     |     r1 = ip & 4;
    0x00013a9a lsls r4, r0, 4                                    |     r4 = r0 << 4;
    0x00013a9c cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00013a9e beq 0x139b0                                       |         goto label_2;
                                                                 |     }
    0x00013aa0 b 0x13a80                                         |     goto label_3;
                                                                 | label_19:
    0x00013aa2 ldr r1, [r6]                                      |     r1 = *(r6);
    0x00013aa4 mov r0, r4                                        |     r0 = r4;
    0x00013aa6 bl 0x12f20                                        |     fcn_00012f20 (r0, r1);
    0x00013aaa ldrb.w ip, [r4, 0x27]                             |     ip = *((r4 + 0x27));
    0x00013aae mov r5, r0                                        |     r5 = r0;
    0x00013ab0 and r1, ip, 4                                     |     r1 = ip & 4;
    0x00013ab4 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00013ab6 beq.w 0x139b0                                     |         goto label_2;
                                                                 |     }
    0x00013aba b 0x13a80                                         |     goto label_3;
                                                                 | label_15:
    0x00013abc ldr r1, [pc, 0x58]                                |     
    0x00013abe mov.w r2, 0x400                                   |     r2 = 0x400;
    0x00013ac2 ldr r3, [pc, 0x58]                                |     
    0x00013ac4 ldr r0, [pc, 0x58]                                |     
    0x00013ac6 add r1, pc                                        |     r1 = 0x275e2;
    0x00013ac8 add r3, pc                                        |     r3 = 0x275ea;
    0x00013aca adds r1, 7                                        |     r1 += 7;
    0x00013acc add r0, pc                                        |     r0 = 0x275f0;
    0x00013ace bl 0x16594                                        |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_18:
    0x00013ad2 ldr r1, [pc, 0x50]                                |     
    0x00013ad4 movw r2, 0x415                                    |     r2 = 0x415;
    0x00013ad6 tst r5, r2                                        |     
    0x00013ad8 ldr r3, [pc, 0x4c]                                |     
    0x00013ada ldr r0, [pc, 0x50]                                |     
    0x00013adc add r1, pc                                        |     r1 = 0x27606;
    0x00013ade add r3, pc                                        |     r3 = 0x2760a;
    0x00013ae0 adds r1, 7                                        |     r1 += 7;
    0x00013ae2 add r0, pc                                        |     r0 = 0x27614;
    0x00013ae4 bl 0x16594                                        |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_16:
    0x00013ae8 ldr r1, [pc, 0x44]                                |     
    0x00013aea movw r2, 0x40c                                    |     r2 = 0x40c;
    0x00013aec tst r4, r1                                        |     
    0x00013aee ldr r3, [pc, 0x44]                                |     
    0x00013af0 ldr r0, [pc, 0x44]                                |     
    0x00013af2 add r1, pc                                        |     r1 = 0x27626;
    0x00013af4 add r3, pc                                        |     r3 = 0x2762e;
    0x00013af6 adds r1, 7                                        |     r1 += 7;
    0x00013af8 add r0, pc                                        |     r0 = 0x27634;
    0x00013afa bl 0x16594                                        |     fcn_00016594 (r0, r1, r2, r3, r4);
    0x00013afe nop                                               |     
    0x00013b00 b 0x13d20                                         |     
    0x00013d20 mov r6, r1                                        |     r6 = r1;
    0x00013d22 ldr r3, [pc, 0x27c]                               |     
    0x00013d24 and r2, r7, 3                                     |     r2 = r7 & 3;
    0x00013d28 ands sb, r7, 4                                    |     sb = r7 & 4;
    0x00013d2c add r3, pc                                        |     r3 = 0x27cd2;
    0x00013d2e add.w r3, r3, r2, lsl 4                           |     r3 += (r2 << 4);
    0x00013d32 ldr r2, [r3, 4]                                   |     r2 = *((r3 + 4));
    0x00013d34 str r2, [sp]                                      |     *(sp) = r2;
                                                                 |     if (sb == r7) {
    0x00013d36 beq 0x13d88                                       |         goto label_20;
                                                                 |     }
    0x00013d38 ldr r3, [r0, 4]                                   |     r3 = *((r0 + 4));
    0x00013d3a ldr.w sl, [r0, 0x1c]                              |     sl = *((r0 + 0x1c));
    0x00013d3e str r3, [sp, 4]                                   |     var_4h = r3;
    0x00013d40 mla r8, r2, sl, r3                                |     __asm ("mla r8, r2, sl, r3");
    0x00013d44 ldrb.w r3, [r8, r1]                               |     r3 = *((r8 + r1));
    0x00013d48 cmp r3, 0xff                                      |     
                                                                 |     if (r3 == 0xff) {
    0x00013d4a beq 0x13d9e                                       |         goto label_21;
                                                                 |     }
                                                                 | label_4:
    0x00013d4c add.w fp, r6, 1                                   |     
    0x00013d50 mov r1, sl                                        |     r1 = sl;
    0x00013d52 mov r0, fp                                        |     r0 = fp;
    0x00013d54 bl 0x1b6ac                                        |     fcn_0001b6ac (r0, r1, r2);
    0x00013d58 b 0x13d62                                         |     
                                                                 |     while (r1 != r6) {
    0x00013d5a adds r0, r1, 1                                    |         r0 = r1 + 1;
    0x00013d5c mov r1, sl                                        |         r1 = sl;
    0x00013d5e bl 0x1b6ac                                        |         fcn_0001b6ac (r0, r1, r2);
    0x00013d62 ldrb.w r3, [r8, r1]                               |         r3 = *((r8 + r1));
    0x00013d66 subs r3, 1                                        |         r3--;
    0x00013d68 uxtb r3, r3                                       |         r3 = (int8_t) r3;
    0x00013d6a cmp r3, 0xfd                                      |         
                                                                 |         if (r3 > 0xfd) {
    0x00013d6c bhi 0x13db4                                       |             goto label_22;
                                                                 |         }
    0x00013d6e cmp r1, r6                                        |         
    0x00013d70 bne 0x13d5a                                       |         
                                                                 |     }
    0x00013d72 ldr r1, [pc, 0x230]                               |     
    0x00013d74 movw r2, 0x21e                                    |     r2 = 0x21e;
    0x00013d78 ldr r3, [pc, 0x22c]                               |     
    0x00013d7a ldr r0, [pc, 0x230]                               |     
    0x00013d7c add r1, pc                                        |     r1 = 0x27d26;
    0x00013d7e add r3, pc                                        |     r3 = 0x27d2a;
    0x00013d80 adds r1, 7                                        |     r1 += 7;
    0x00013d82 add r0, pc                                        |     r0 = 0x27d34;
    0x00013d84 bl 0x16594                                        |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_20:
    0x00013d88 ldr.w sl, [r3, 0xc]                               |     sl = *((r3 + 0xc));
    0x00013d8c adds r3, r0, 4                                    |     r3 = r0 + 4;
    0x00013d8e ldr r2, [sp]                                      |     r2 = *(sp);
    0x00013d90 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00013d92 mla r8, r2, sl, r3                                |     __asm ("mla r8, r2, sl, r3");
    0x00013d96 ldrb.w r3, [r8, r1]                               |     r3 = *((r8 + r1));
    0x00013d9a cmp r3, 0xff                                      |     
                                                                 |     if (r3 != 0xff) {
    0x00013d9c bne 0x13d4c                                       |         goto label_4;
                                                                 |     }
                                                                 | label_21:
    0x00013d9e ldr r1, [pc, 0x210]                               |     
    0x00013da0 movw r2, 0x20d                                    |     r2 = 0x20d;
    0x00013da4 ldr r3, [pc, 0x20c]                               |     
    0x00013da6 ldr r0, [pc, 0x210]                               |     
    0x00013da8 add r1, pc                                        |     r1 = 0x27d5e;
    0x00013daa add r3, pc                                        |     r3 = 0x27d62;
    0x00013dac adds r1, 7                                        |     r1 += 7;
    0x00013dae add r0, pc                                        |     r0 = 0x27d6c;
    0x00013db0 bl 0x16594                                        |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_22:
    0x00013db4 and r3, r7, 3                                     |     r3 = r7 & 3;
    0x00013db8 mov r4, r1                                        |     r4 = r1;
    0x00013dba cmp r3, 1                                         |     
                                                                 |     if (r3 == 1) {
    0x00013dbc beq 0x13e92                                       |         goto label_23;
                                                                 |     }
                                                                 | label_8:
    0x00013dbe cmp.w sb, 0                                       |     
                                                                 |     if (sb != 0) {
    0x00013dc2 bne 0x13e8e                                       |         goto label_9;
                                                                 |     }
    0x00013dc4 ldr r3, [pc, 0x1f4]                               |     
    0x00013dc6 and r2, r7, 3                                     |     r2 = r7 & 3;
    0x00013dca add r3, pc                                        |     r3 = 0x27d8a;
    0x00013dcc add.w r3, r3, r2, lsl 4                           |     r3 += (r2 << 4);
    0x00013dce asrs r2, r0, 0xc                                  |     r2 = r0 >> 0xc;
    0x00013dd0 ldr r1, [r3, 0xc]                                 |     r1 = *((r3 + 0xc));
                                                                 | label_7:
    0x00013dd2 mov r0, fp                                        |     r0 = fp;
    0x00013dd4 bl 0x1b6ac                                        |     fcn_0001b6ac (r0, r1, r2);
    0x00013dd8 cmp r4, r1                                        |     
    0x00013dda mov sl, r1                                        |     sl = r1;
                                                                 |     if (r4 == r1) {
    0x00013ddc beq.w 0x13f9a                                     |         goto label_24;
                                                                 |     }
    0x00013de0 ldr r3, [pc, 0x1dc]                               |     
    0x00013de2 ldrb.w r0, [r8, sl]                               |     r0 = *((r8 + sl));
    0x00013de6 ldr.w fp, [pc, 0x1dc]                             |     
    0x00013dea add r3, pc                                        |     r3 = 0x27dae;
    0x00013dec str r3, [sp]                                      |     *(sp) = r3;
    0x00013dee cmp r0, 0xff                                      |     
    0x00013df0 ldr r3, [pc, 0x1d4]                               |     
    0x00013df2 add fp, pc                                        |     fp = 0x27dbc;
    0x00013df4 add r3, pc                                        |     r3 = 0x27dc0;
    0x00013df6 str r3, [sp, 4]                                   |     var_4h = r3;
                                                                 |     if (r0 == 0xff) {
    0x00013df8 beq 0x13e68                                       |         goto label_25;
                                                                 |     }
                                                                 |     do {
    0x00013dfa cmp r0, 0xfc                                      |         
                                                                 |         if (r0 > 0xfc) {
    0x00013dfc bhi 0x13e6c                                       |             goto label_26;
                                                                 |         }
    0x00013dfe cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00013e00 beq 0x13e78                                       |             goto label_27;
                                                                 |         }
                                                                 | label_6:
    0x00013e02 subs r7, r0, 1                                    |         r7 = r0 - 1;
    0x00013e04 cmp r7, 0xfd                                      |         
    0x00013e06 it hs                                             |         
                                                                 |         if (r7 < 0xfd) {
    0x00013e08 movhs r7, 0xfd                                    |             r7 = 0xfd;
                                                                 |         }
    0x00013e0a uxtb r7, r7                                       |         r7 = (int8_t) r7;
                                                                 | label_5:
    0x00013e0c mov r3, r6                                        |         r3 = r6;
    0x00013e0e mov r2, sl                                        |         r2 = sl;
    0x00013e10 movs r1, 0                                        |         r1 = 0;
    0x00013e12 mov r0, r5                                        |         r0 = r5;
    0x00013e14 bl 0x132a0                                        |         fcn_000132a0 (r0, r1, r2, r3);
    0x00013e18 ldrb.w r2, [r5, 0x27]                             |         r2 = *((r5 + 0x27));
    0x00013e1a movs r0, 0x27                                     |         r0 = 0x27;
    0x00013e1c lsls r3, r2, 0x1d                                 |         r3 = r2 << 0x1d;
                                                                 |         if (r3 >= r2) {
    0x00013e1e bpl 0x13ef8                                       |             goto label_28;
                                                                 |         }
    0x00013e20 ldr r3, [sp]                                      |         r3 = *(sp);
    0x00013e22 and r2, r2, 3                                     |         r2 &= 3;
    0x00013e26 ldr r1, [r5, 4]                                   |         r1 = *((r5 + 4));
    0x00013e28 add.w r2, r3, r2, lsl 4                           |         r2 = r3 + (r2 << 4);
    0x00013e2c ldr r0, [r2, 4]                                   |         r0 = *((r2 + 4));
    0x00013e2e ldr r2, [r5, 0x1c]                                |         r2 = *((r5 + 0x1c));
                                                                 | label_10:
    0x00013e30 mla r2, r0, r2, r1                                |         __asm ("mla r2, r0, r2, r1");
    0x00013e34 add.w r0, sl, 1                                   |         r0 = sl + 1;
    0x00013e38 strb r7, [r2, r6]                                 |         *((r2 + r6)) = r7;
    0x00013e3a mov r6, sl                                        |         r6 = sl;
    0x00013e3c ldrb.w sb, [r5, 0x27]                             |         sb = *((r5 + 0x27));
    0x00013e40 ands r7, sb, 4                                    |         r7 = sb & 4;
    0x00013e44 ittet eq                                          |         
                                                                 |         if (r7 != sb) {
    0x00013e46 ldreq r2, [sp, 4]                                 |             r2 = var_4h;
                                                                 |         }
                                                                 |         if (r7 != sb) {
    0x00013e48 andeq r3, sb, 3                                   |             r3 = sb & 3;
                                                                 |         }
                                                                 |         if (r7 != sb) {
    0x00013e4c ldreq r1, [r5, 0x1c]                              |             r1 = *((r5 + 0x1c));
                                                                 |         }
                                                                 |         if (r7 == sb) {
    0x00013e4e add.w r3, r2, r3, lsl 4                           |             r3 = r2 + (r3 << 4);
                                                                 |         }
    0x00013e52 it eq                                             |         
                                                                 |         if (r7 != sb) {
    0x00013e54 ldreq r1, [r3, 0xc]                               |             r1 = *((r3 + 0xc));
                                                                 |         }
    0x00013e56 bl 0x1b6ac                                        |         fcn_0001b6ac (r0, r1, r2);
    0x00013e58 stc2 p2, c4, [sb], -0x230                         |         __asm ("stc2 p2, c4, [sb], -0x230");
                                                                 |         if (r7 == sb) {
    0x00013e5c beq 0x13f08                                       |             goto label_29;
                                                                 |         }
    0x00013e5e mov sl, r1                                        |         sl = r1;
    0x00013e60 ldrb.w r0, [r8, sl]                               |         r0 = *((r8 + sl));
    0x00013e62 movs r2, r1                                       |         r2 = r1;
    0x00013e64 cmp r0, 0xff                                      |         
    0x00013e66 bne 0x13dfa                                       |         
                                                                 |     } while (r0 != 0xff);
                                                                 | label_25:
    0x00013e68 movs r7, 0xfd                                     |     r7 = 0xfd;
    0x00013e6a b 0x13e0c                                         |     goto label_5;
                                                                 | label_26:
    0x00013e6c mov r1, sl                                        |     r1 = sl;
    0x00013e6e mov r0, r5                                        |     r0 = r5;
    0x00013e70 bl 0x130f4                                        |     r0 = fcn_000130f4 (r0, r1);
    0x00013e74 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013e76 bne 0x13e02                                       |         goto label_6;
                                                                 |     }
                                                                 | label_27:
    0x00013e78 ldr r1, [pc, 0x150]                               |     
    0x00013e7a mov.w r2, 0x234                                   |     r2 = 0x234;
    0x00013e7e ldr r3, [pc, 0x150]                               |     
    0x00013e80 ldr r0, [pc, 0x150]                               |     
    0x00013e82 add r1, pc                                        |     r1 = 0x27e52;
    0x00013e84 add r3, pc                                        |     r3 = 0x27e5a;
    0x00013e86 adds r1, 7                                        |     r1 += 7;
    0x00013e88 add r0, pc                                        |     r0 = 0x27e60;
    0x00013e8a bl 0x16594                                        |     fcn_00016594 (r0, r1, r2, r3, r4);
                                                                 | label_9:
    0x00013e8e ldr r1, [r5, 0x1c]                                |     r1 = *((r5 + 0x1c));
    0x00013e90 b 0x13dd2                                         |     goto label_7;
                                                                 | label_23:
    0x00013e92 ldrd r3, r0, [sp]                                 |     __asm ("ldrd r3, r0, [sp]");
    0x00013e96 mla r3, r3, r6, r0                                |     __asm ("mla r3, r3, r6, r0");
    0x00013e9a ldrd r2, r1, [r3, 8]                              |     __asm ("ldrd r2, r1, [r3, 8]");
    0x00013e9e cmp.w r2, -1                                      |     
    0x00013ea2 itett ne                                          |     
                                                                 |     if (r2 == -1) {
    0x00013ea4 ldrne r7, [sp]                                    |         r7 = *(sp);
                                                                 |     }
                                                                 |     if (r2 != -1) {
    0x00013ea6 streq r1, [r5, 0x30]                              |         *((r5 + 0x30)) = r1;
                                                                 |     }
                                                                 |     if (r2 != -1) {
    0x00013ea8 mlane r2, r7, r2, r0                              |         __asm ("mlane r2, r7, r2, r0");
                                                                 |     }
                                                                 |     if (r2 != -1) {
    0x00013eac str r1, [r2, 0xc]                                 |         *((r2 + 0xc)) = r1;
                                                                 |     }
    0x00013eae it ne                                             |     
                                                                 |     if (r2 == -1) {
    0x00013eb0 ldrbne r7, [r5, 0x27]                             |         r7 = *((r5 + 0x27));
                                                                 |     }
    0x00013eb2 strb r7, [r4]                                     |     *(r4) = r7;
    0x00013eb4 ldrd r0, r2, [r3, 8]                              |     __asm ("ldrd r0, r2, [r3, 8]");
    0x00013eb8 it ne                                             |     
                                                                 |     if (r2 == -1) {
    0x00013eba andne sb, r7, 4                                   |         sb = r7 & 4;
                                                                 |     }
    0x00013ebc lsrs r4, r0, 4                                    |     r4 = r0 >> 4;
    0x00013ebe adds r1, r2, 1                                    |     r1 = r2 + 1;
    0x00013ec0 it eq                                             |     
                                                                 |     if (r1 == r2) {
    0x00013ec2 streq r0, [r5, 0x2c]                              |         *((r5 + 0x2c)) = r0;
                                                                 |         goto label_30;
                                                                 |     }
                                                                 |     if (r1 == r2) {
                                                                 | label_30:
    0x00013ec4 beq.w 0x13dbe                                     |         goto label_8;
                                                                 |     }
    0x00013ec8 adds r3, r5, 4                                    |     r3 = r5 + 4;
    0x00013eca cmp.w sb, 0                                       |     
                                                                 |     if (sb != 0) {
    0x00013ece beq 0x13ed2                                       |         
    0x00013ed0 ldr r3, [r5, 4]                                   |         r3 = *((r5 + 4));
                                                                 |     }
    0x00013ed2 ldr r1, [pc, 0x104]                               |     
    0x00013ed4 and r7, r7, 3                                     |     r7 &= 3;
    0x00013ed8 add r1, pc                                        |     r1 = 0x27eb6;
    0x00013eda add.w r1, r1, r7, lsl 4                           |     r1 += (r7 << 4);
    0x00013ede ldr r1, [r1, 4]                                   |     r1 = *((r1 + 4));
    0x00013ee0 mla r3, r1, r2, r3                                |     __asm ("mla r3, r1, r2, r3");
    0x00013ee4 str r0, [r3, 8]                                   |     *((r3 + 8)) = r0;
    0x00013ee6 ldrb.w r7, [r5, 0x27]                             |     r7 = *((r5 + 0x27));
    0x00013eea and sb, r7, 4                                     |     sb = r7 & 4;
    0x00013eee cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00013ef2 beq.w 0xfffd5dc4                                  |         void (*0xfffd5dc4)() ();
                                                                 |     }
    0x00013ef6 b 0x13e8e                                         |     goto label_9;
                                                                 | label_28:
    0x00013ef8 and r2, r2, 3                                     |     r2 &= 3;
    0x00013efc adds r1, r5, 4                                    |     r1 = r5 + 4;
    0x00013efe add.w r2, fp, r2, lsl 4                           |     r2 = fp + (r2 << 4);
    0x00013f02 ldr r0, [r2, 4]                                   |     r0 = *((r2 + 4));
    0x00013f04 ldr r2, [r2, 0xc]                                 |     r2 = *((r2 + 0xc));
    0x00013f06 b 0x13e30                                         |     goto label_10;
                                                                 | label_29:
    0x00013f08 mov r3, sb                                        |     r3 = sb;
    0x00013f0a mov sb, r7                                        |     sb = r7;
    0x00013f0c mov r7, r3                                        |     r7 = r3;
                                                                 | label_11:
    0x00013f0e ldr r3, [pc, 0xcc]                                |     
    0x00013f10 and r7, r7, 3                                     |     r7 &= 3;
    0x00013f12 lsls r3, r0, 0x1c                                 |     r3 = r0 << 0x1c;
    0x00013f14 lsls r7, r7, 4                                    |     r7 <<= 4;
    0x00013f16 add r3, pc                                        |     r3 = 0x27ef8;
    0x00013f18 add r3, r7                                        |     r3 += r7;
    0x00013f1a ldr r2, [r3, 4]                                   |     r2 = *(0x27efc);
                                                                 |     if (r2 != 0) {
    0x00013f1c cbz r2, 0x13f48                                   |         
    0x00013f1e adds r0, r5, 4                                    |         r0 = r5 + 4;
    0x00013f20 cmp.w sb, 0                                       |         
                                                                 |         if (sb != 0) {
    0x00013f24 beq 0x13f28                                       |             
    0x00013f26 ldr r0, [r5, 4]                                   |             r0 = *((r5 + 4));
                                                                 |         }
    0x00013f28 mla r0, sl, r2, r0                                |         __asm ("mla r0, sl, r2, r0");
    0x00013f2c movs r1, 0                                        |         r1 = 0;
    0x00013f2e blx 0x3898                                        |         fcn_00003898 ();
    0x00013f32 ldrb.w sb, [r5, 0x27]                             |         sb = *((r5 + 0x27));
    0x00013f36 ldr r3, [pc, 0xa8]                                |         
    0x00013f38 and r7, sb, 3                                     |         r7 = sb & 3;
    0x00013f3c and sb, sb, 4                                     |         sb &= 4;
    0x00013f40 lsls r7, r7, 4                                    |         r7 <<= 4;
    0x00013f42 add r3, pc                                        |         r3 = 0x27f28;
    0x00013f44 add r3, r7                                        |         r3 += r7;
    0x00013f46 ldr r2, [r3, 4]                                   |         r2 = *(0x27f2c);
                                                                 |     }
    0x00013f48 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00013f4c beq 0x13f8e                                       |         goto label_31;
                                                                 |     }
    0x00013f4e ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x00013f50 ldr r1, [r5, 0x1c]                                |     r1 = *((r5 + 0x1c));
                                                                 |     do {
    0x00013f52 mla r3, r2, r1, r3                                |         __asm ("mla r3, r2, r1, r3");
    0x00013f56 movs r2, 0xff                                     |         r2 = 0xff;
    0x00013f58 strb.w r2, [r3, sl]                               |         *((r3 + sl)) = r2;
    0x00013f5c ldrb.w r3, [r5, 0x27]                             |         r3 = *((r5 + 0x27));
    0x00013f60 lsls r2, r3, 0x1d                                 |         r2 = r3 << 0x1d;
    0x00013f62 iteee mi                                          |         
                                                                 |         if (r2 >= r3) {
    0x00013f64 ldrmi r3, [r5, 0x18]                              |             r3 = *((r5 + 0x18));
                                                                 |         }
                                                                 |         if (r2 >= r3) {
    0x00013f66 ubfxpl r2, r3, 3, 3                               |             __asm ("ubfxpl r2, r3, 3, 3");
                                                                 |         }
                                                                 |         if (r2 < r3) {
    0x00013f6a addpl r2, 7                                       |             r2 += 7;
                                                                 |         }
                                                                 |         if (r2 >= r3) {
    0x00013f6c bfi r3, r2, 3, 3                                  |             value_2 = BIT_MASK (3, 3);
                                                                 |             value_3 = r2 & value_2;
                                                                 |             value_2 = ~value_2;
                                                                 |             r3 &= value_2;
                                                                 |             r3 |= value_3;
                                                                 |         }
    0x00013f70 itet mi                                           |         
                                                                 |         if (r2 >= r3) {
    0x00013f72 addmi r3, r3, -1                                  |             r3 += -1;
                                                                 |         }
                                                                 |         if (r2 >= r3) {
    0x00013f76 strbmi r3, [r5, 0x27]                             |             *((r5 + 0x27)) = r3;
                                                                 |         }
                                                                 |         if (r2 < r3) {
    0x00013f7a str r3, [r5, 0x18]                                |             *((r5 + 0x18)) = r3;
                                                                 |         }
    0x00013f7c ldrb.w r3, [r5, 0x27]                             |         r3 = *((r5 + 0x27));
    0x00013f80 orr r3, r3, 0x80                                  |         r3 |= 0x80;
    0x00013f84 strb.w r3, [r5, 0x27]                             |         *((r5 + 0x27)) = r3;
    0x00013f88 add sp, 0xc                                       |         
    0x00013f8a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_31:
    0x00013f8e ldr r1, [pc, 0x54]                                |         
    0x00013f90 adds r3, r5, 4                                    |         r3 = r5 + 4;
    0x00013f92 add r1, pc                                        |         
    0x00013f94 add r1, r7                                        |         r1 += r7;
    0x00013f96 ldr r1, [r1, 0xc]                                 |         r1 = *(0x27f88);
    0x00013f98 b 0x13f52                                         |         
                                                                 |     } while (1);
                                                                 | label_24:
    0x00013f9a mov sl, r6                                        |     sl = r6;
    0x00013f9c b 0x13f0e                                         |     goto label_11;
                                                                 | }

[*] Function strcat used 1 times libudev.so.1.7.2