[*] Binary protection state of liburcu.so.8.0.0

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


[*] Function fprintf tear down of liburcu.so.8.0.0

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/liburcu.so.8.0.0 @ 0x2ab4 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.urcu_memb_register_thread ()                     | void urcu_memb_register_thread () {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int32_t var_4h_2;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_3ch;
    0x00002ab4 invalid                                           |     
    0x00002ab8 ldcl p6, c4, [ip], 0x14                           |     __asm ("ldcl p6, c4, [ip], 0x14");
    0x00002abc ldr r3, [pc, 0x9c]                                |     
    0x00002abe add r3, pc                                        |     r3 = 0x561e;
    0x00002ac0 mov r0, r3                                        |     r0 = r3;
    0x00002ac2 blx 0x1624                                        |     fcn_00001624 ();
    0x00002ac6 ldrb r3, [r0, 4]                                  |     r3 = *((r0 + 4));
    0x00002ac8 str r5, [r0, 0x48]                                |     *((r0 + 0x48)) = r5;
                                                                 |     if (r3 == 0) {
    0x00002aca cbnz r3, 0x2b14                                   |         
    0x00002acc ldrh r3, [r0]                                     |         r3 = *(r0);
    0x00002ace mov r4, r0                                        |         r4 = r0;
    0x00002ad0 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00002ad2 bne 0x2b44                                        |             goto label_22;
                                                                 |         }
    0x00002ad4 ldr r5, [pc, 0x88]                                |         
    0x00002ad6 add r5, pc                                        |         r5 = 0x563a;
    0x00002ad8 adds r5, 4                                        |         r5 += 4;
    0x00002ada mov r0, r5                                        |         r0 = r5;
    0x00002adc bl 0x1894                                         |         fcn_00001894 ();
    0x00002ae0 ldrb.w r3, [r4, 0x4c]                             |         r3 = *((r4 + 0x4c));
    0x00002ae4 lsls r2, r3, 0x1f                                 |         r2 = r3 << 0x1f;
                                                                 |         if (r2 < r3) {
    0x00002ae6 bmi 0x2b2c                                        |             goto label_23;
                                                                 |         }
    0x00002ae8 orr r3, r3, 1                                     |         r3 |= 1;
    0x00002aec strb.w r3, [r4, 0x4c]                             |         *((r4 + 0x4c)) = r3;
    0x00002af0 blx 0x1570                                        |         fcn_00001570 ();
    0x00002af4 ldr r3, [pc, 0x6c]                                |         
    0x00002af6 mov r0, r5                                        |         r0 = r5;
    0x00002af8 add.w r5, r4, 0x40                                |         r5 = r4 + 0x40;
    0x00002afa lsls r0, r0, 0x15                                 |         r0 <<= 0x15;
    0x00002afc add r3, pc                                        |         r3 = 0x5664;
    0x00002afe mov r2, r3                                        |         r2 = r3;
    0x00002b00 ldr r1, [r2, 8]!                                  |         r1 = *((r2 += 8));
    0x00002b04 str r5, [r3, 8]                                   |         *((r3 + 8)) = r5;
    0x00002b06 str r5, [r1, 4]                                   |         *((r1 + 4)) = r5;
    0x00002b08 strd r1, r2, [r4, 0x40]                           |         __asm ("strd r1, r2, [r4, 0x40]");
    0x00002b0c pop.w {r3, r4, r5, lr}                            |         
    0x00002b10 b.w 0x1928                                        |         void (*0x1928)() ();
                                                                 |     }
    0x00002b14 ldr r3, [pc, 0x50]                                |     
    0x00002b16 movw r2, 0x21f                                    |     r2 = 0x21f;
    0x00002b1a ldr r1, [pc, 0x50]                                |     
    0x00002b1c ldr r0, [pc, 0x50]                                |     
    0x00002b1e add r3, pc                                        |     
    0x00002b20 add r1, pc                                        |     r1 = 0x5692;
    0x00002b22 add.w r3, r3, 0x1c0                               |     r3 = 0x584a;
    0x00002b26 add r0, pc                                        |     r0 = 0x569a;
    0x00002b28 blx 0x1660                                        |     fcn_00001660 ();
                                                                 | label_23:
    0x00002b2c ldr r3, [pc, 0x44]                                |     
    0x00002b2e movw r2, 0x223                                    |     r2 = 0x223;
    0x00002b32 ldr r1, [pc, 0x44]                                |     
    0x00002b34 ldr r0, [pc, 0x44]                                |     
    0x00002b36 add r3, pc                                        |     
    0x00002b38 add r1, pc                                        |     r1 = 0x56b6;
    0x00002b3a add.w r3, r3, 0x1c0                               |     r3 = 0x586e;
    0x00002b3e add r0, pc                                        |     r0 = 0x56be;
    0x00002b40 blx 0x1660                                        |     fcn_00001660 ();
                                                                 | label_22:
    0x00002b44 ldr r3, [pc, 0x38]                                |     
    0x00002b46 mov.w r2, 0x220                                   |     r2 = 0x220;
    0x00002b4a ldr r1, [pc, 0x38]                                |     
    0x00002b4c ldr r0, [pc, 0x38]                                |     
    0x00002b4e add r3, pc                                        |     
    0x00002b50 add r1, pc                                        |     r1 = 0x56da;
    0x00002b52 add.w r3, r3, 0x1c0                               |     r3 = 0x5892;
    0x00002b56 add r0, pc                                        |     r0 = 0x56e2;
    0x00002b58 blx 0x1660                                        |     fcn_00001660 ();
    0x00002b5c adds r5, 2                                        |     r5 += 2;
    0x00002b5e movs r0, r0                                       |     
    0x00002b60 adds r6, 2                                        |     r6 += 2;
    0x00002b62 movs r0, r0                                       |     
    0x00002b64 adds r5, 0xc0                                     |     r5 += 0xc0;
    0x00002b66 movs r0, r0                                       |     
    0x00002b68 subs r6, r1, r5                                   |     r6 = r1 - r5;
    0x00002b6a movs r0, r0                                       |     
    0x00002b6c asrs r4, r4, 0x17                                 |     r4 >>= 0x17;
    0x00002b6e movs r0, r0                                       |     
    0x00002b70 adds r2, r5, r3                                   |     r2 = r5 + r3;
    0x00002b72 movs r0, r0                                       |     
    0x00002b74 subs r6, r6, r4                                   |     r6 -= r4;
    0x00002b76 movs r0, r0                                       |     
    0x00002b78 asrs r4, r1, 0x17                                 |     r4 = r1 >> 0x17;
    0x00002b7a movs r0, r0                                       |     
    0x00002b7c adds r2, r5, r4                                   |     r2 = r5 + r4;
    0x00002b7e movs r0, r0                                       |     
    0x00002b80 subs r6, r3, r4                                   |     r6 = r3 - r4;
    0x00002b82 movs r0, r0                                       |     
    0x00002b84 asrs r4, r6, 0x16                                 |     r4 = r6 >> 0x16;
    0x00002b86 movs r0, r0                                       |     
    0x00002b88 adds r6, r3, r3                                   |     r6 = r3 + r3;
    0x00002b8a movs r0, r0                                       |     
    0x00002b8c ldr r3, [pc, 0x320]                               |     
    0x00002b8e push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00002b92 sub sp, 0x44                                      |     
    0x00002b94 ldr r2, [pc, 0x31c]                               |     
    0x00002b96 mov r5, r0                                        |     r5 = r0;
    0x00002b98 add r3, pc                                        |     r3 = 0x5a4c;
    0x00002b9a str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00002b9c ldr r3, [pc, 0x318]                               |     r3 = *(0x2eb8);
    0x00002b9e add r2, pc                                        |     r2 = 0x5a56;
    0x00002ba0 ldr r3, [r2, r3]                                  |     
    0x00002ba2 ldr r3, [r3]                                      |     r3 = *(0x5a56);
    0x00002ba4 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00002ba6 mov.w r3, 0                                       |     r3 = 0;
    0x00002baa ldr r3, [r0, 0x20]                                |     r3 = *(0x5702);
    0x00002bac and r8, r3, 1                                     |     r8 = r3 & 1;
    0x00002bb0 bl 0x1974                                         |     r0 = fcn_00001974 (r0);
    0x00002bb4 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00002bb6 bne.w 0x2fb4                                      |         goto label_24;
                                                                 |     }
    0x00002bba blx 0x1434                                        |     fcn_00001434 ();
    0x00002bbe ldr r0, [pc, 0x2e8]                               |     
    0x00002bc0 add r0, pc                                        |     r0 = 0x5a6e;
    0x00002bc2 blx 0x1624                                        |     fcn_00001624 ();
    0x00002bc6 ldr r3, [pc, 0x2e4]                               |     r3 = *(0x2eae);
    0x00002bc8 str r5, [r3, r0]                                  |     *((r3 + r0)) = r5;
    0x00002bca cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x00002bce beq.w 0x2f0e                                      |         goto label_25;
                                                                 |     }
                                                                 | label_20:
    0x00002bd2 add.w sb, r5, 0x20                                |     sb = r5 + 0x20;
    0x00002bd6 movs r6, 0                                        |     r6 = 0;
                                                                 | label_2:
    0x00002bd8 mov r0, r5                                        |     r0 = r5;
    0x00002bda bl 0x1974                                         |     r0 = fcn_00001974 (r0);
    0x00002bde cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00002be0 bne.w 0x2f3e                                      |         goto label_26;
                                                                 |     }
    0x00002be4 ldr r3, [r5, 0x20]                                |     r3 = *((r5 + 0x20));
    0x00002be6 lsls r0, r3, 0x1b                                 |     r0 = r3 << 0x1b;
                                                                 |     if (r0 < r3) {
    0x00002be8 bmi.w 0x2e4c                                      |         goto label_27;
                                                                 |     }
                                                                 | label_14:
    0x00002bec add r7, sp, 0x20                                  |     r7 += var_20h;
    0x00002bee movs r1, 0                                        |     r1 = 0;
    0x00002bf0 add r0, sp, 0x24                                  |     r0 += var_24h;
    0x00002bf2 strd r7, r6, [sp, 0x1c]                           |     __asm ("strd r7, r6, [var_20h]");
    0x00002bf6 blx 0x14bc                                        |     r0 = fcn_000014bc ();
    0x00002bfa cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00002bfc bne.w 0x2fa0                                      |         goto label_28;
                                                                 |     }
    0x00002c00 adds r4, r5, 4                                    |     r4 = r5 + 4;
    0x00002c02 ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x00002c04 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00002c06 beq 0x2d08                                        |         goto label_29;
                                                                 |     }
                                                                 | label_3:
    0x00002c08 movs r2, 0                                        |     r2 = 0;
                                                                 | label_1:
    0x00002c0a dmb ish                                           |     __asm ("dmb ish");
                                                                 |     do {
                                                                 | label_0:
    0x00002c0e ldrex fp, [r4]                                    |         __asm ("ldrex fp, [r4]");
    0x00002c12 strex r3, r6, [r4]                                |         __asm ("strex r3, r6, [r4]");
    0x00002c16 cmp r3, 0                                         |         
    0x00002c18 bne 0x2c0e                                        |         
                                                                 |     } while (r3 != 0);
    0x00002c1a dmb ish                                           |     __asm ("dmb ish");
    0x00002c1e cmp.w fp, 0                                       |     
                                                                 |     if (fp != 0) {
    0x00002c22 bne 0x2cbe                                        |         goto label_30;
                                                                 |     }
    0x00002c24 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00002c26 cmp r4, r3                                        |     
                                                                 |     if (r4 == r3) {
    0x00002c28 beq 0x2c9e                                        |         goto label_31;
                                                                 |     }
    0x00002c2a adds r2, 1                                        |     r2++;
    0x00002c2c cmp r2, 0xa                                       |     
                                                                 |     if (r2 != 0xa) {
    0x00002c2e beq 0x2c36                                        |         
    0x00002c30 dmb ish                                           |         __asm ("dmb ish");
    0x00002c34 b 0x2c0e                                          |         goto label_0;
                                                                 |     }
    0x00002c36 mov r1, fp                                        |     r1 = fp;
    0x00002c38 mov r0, fp                                        |     r0 = fp;
    0x00002c3a blx 0x1510                                        |     fcn_00001510 ();
    0x00002c3e mov r2, fp                                        |     r2 = fp;
    0x00002c40 b 0x2c0a                                          |     goto label_1;
                                                                 | label_5:
    0x00002c42 ldr.w sl, [r7]                                    |     sl = *(r7);
    0x00002c46 cmp.w sl, 0                                       |     
                                                                 |     if (sl == 0) {
    0x00002c4a beq.w 0x2ecc                                      |         goto label_32;
                                                                 |     }
                                                                 | label_17:
    0x00002c4e mov.w fp, 0                                       |     
    0x00002c52 ldr r2, [r7, 4]                                   |     r2 = *((r7 + 4));
    0x00002c54 mov r0, r7                                        |     r0 = r7;
    0x00002c56 add.w fp, fp, 1                                   |     
    0x00002c5a blx r2                                            |     uint32_t (*r2)(uint32_t, uint32_t) (r0, r2);
    0x00002c5c cmp.w sl, 0                                       |     
    0x00002c5e lsrs r0, r0, 0x1c                                 |     r0 >>= 0x1c;
                                                                 |     if (r0 == r0) {
    0x00002c60 beq 0x2c80                                        |         goto label_21;
                                                                 |     }
                                                                 |     do {
    0x00002c62 ldr.w r1, [sl]                                    |         r1 = *(sl);
    0x00002c66 cmp r1, 0                                         |         
                                                                 |         if (r1 == 0) {
    0x00002c68 beq.w 0x2d88                                      |             goto label_33;
                                                                 |         }
                                                                 | label_7:
    0x00002c6c mov r7, sl                                        |         r7 = sl;
    0x00002c6e mov sl, r1                                        |         sl = r1;
    0x00002c70 ldr r2, [r7, 4]                                   |         r2 = *((r7 + 4));
    0x00002c72 mov r0, r7                                        |         r0 = r7;
    0x00002c74 add.w fp, fp, 1                                   |         
    0x00002c78 blx r2                                            |         uint32_t (*r2)(uint32_t, uint32_t) (r0, r2);
    0x00002c7a cmp.w sl, 0                                       |         
    0x00002c7e bne 0x2c62                                        |         
                                                                 |     } while (sl != 0);
                                                                 | label_21:
    0x00002c80 rsb.w fp, fp, 0                                   |     
                                                                 | label_16:
    0x00002c84 add.w r3, r5, 0x28                                |     r3 = r5 + 0x28;
    0x00002c88 dmb ish                                           |     __asm ("dmb ish");
                                                                 |     do {
    0x00002c8c ldrex r1, [r3]                                    |         __asm ("ldrex r1, [r3]");
    0x00002c90 add r1, fp                                        |         r1 += fp;
    0x00002c92 strex r2, r1, [r3]                                |         __asm ("strex r2, r1, [r3]");
    0x00002c96 cmp r2, 0                                         |         
    0x00002c98 bne 0x2c8c                                        |         
                                                                 |     } while (r2 != 0);
    0x00002c9a dmb ish                                           |     __asm ("dmb ish");
                                                                 | label_31:
    0x00002c9e ldr r3, [r5, 0x20]                                |     r3 = *((r5 + 0x20));
    0x00002ca0 lsls r3, r3, 0x1d                                 |     r3 <<= 0x1d;
                                                                 |     if (r3 < r3) {
    0x00002ca2 bmi 0x2d16                                        |         goto label_34;
                                                                 |     }
                                                                 | label_4:
    0x00002ca4 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x00002ca8 bne 0x2cb2                                        |         
    0x00002caa ldr r3, [r5, 4]                                   |         r3 = *((r5 + 4));
    0x00002cac cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00002cae beq.w 0x2dbe                                      |             goto label_35;
                                                                 |         }
                                                                 |     }
                                                                 | label_9:
    0x00002cb2 movs r1, 0                                        |     r1 = 0;
    0x00002cb4 movs r2, 0xa                                      |     r2 = 0xa;
    0x00002cb6 mov r0, r1                                        |     r0 = r1;
    0x00002cb8 blx 0x1510                                        |     fcn_00001510 ();
    0x00002cbc b 0x2bd8                                          |     goto label_2;
                                                                 | label_30:
    0x00002cbe dmb ish                                           |     __asm ("dmb ish");
                                                                 |     do {
    0x00002cc2 ldrex r1, [r5]                                    |         __asm ("ldrex r1, [r5]");
    0x00002cc6 strex r3, r4, [r5]                                |         __asm ("strex r3, r4, [r5]");
    0x00002cca cmp r3, 0                                         |         
    0x00002ccc bne 0x2cc2                                        |         
                                                                 |     } while (r3 != 0);
    0x00002cce dmb ish                                           |     __asm ("dmb ish");
    0x00002cd2 dmb ish                                           |     __asm ("dmb ish");
    0x00002cd6 add r2, sp, 0x1c                                  |     r2 += var_1ch;
                                                                 |     do {
    0x00002cd8 ldrex r3, [r2]                                    |         __asm ("ldrex r3, [r2]");
    0x00002cdc strex r0, r1, [r2]                                |         __asm ("strex r0, r1, [r2]");
    0x00002ce0 cmp r0, 0                                         |         
    0x00002ce2 bne 0x2cd8                                        |         
                                                                 |     } while (r0 != 0);
    0x00002ce4 dmb ish                                           |     __asm ("dmb ish");
    0x00002ce8 str.w fp, [r3]                                    |     __asm ("str.w fp, [r3]");
    0x00002cec cmp r3, r7                                        |     
                                                                 |     if (r3 == r7) {
    0x00002cee beq 0x2d5a                                        |         goto label_36;
                                                                 |     }
    0x00002cf0 ldr r3, [pc, 0x1c8]                               |     
    0x00002cf2 mov.w r2, 0x178                                   |     r2 = 0x178;
    0x00002cf6 ldr r1, [pc, 0x1c8]                               |     
    0x00002cf8 ldr r0, [pc, 0x1c8]                               |     
    0x00002cfa add r3, pc                                        |     
    0x00002cfc add r1, pc                                        |     r1 = 0x5bc2;
    0x00002cfe add.w r3, r3, 0x1ec                               |     r3 = 0x5da6;
    0x00002d02 add r0, pc                                        |     r0 = 0x5bca;
    0x00002d04 blx 0x1660                                        |     fcn_00001660 ();
                                                                 | label_29:
    0x00002d08 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00002d0a cmp r4, r3                                        |     
                                                                 |     if (r4 != r3) {
    0x00002d0c bne.w 0x2c08                                      |         goto label_3;
                                                                 |     }
    0x00002d10 ldr r3, [r5, 0x20]                                |     r3 = *((r5 + 0x20));
    0x00002d12 lsls r3, r3, 0x1d                                 |     r3 <<= 0x1d;
                                                                 |     if (r3 >= r3) {
    0x00002d14 bpl 0x2ca4                                        |         goto label_4;
                                                                 |     }
                                                                 | label_34:
    0x00002d16 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x00002d1a beq.w 0x2f04                                      |         goto label_37;
                                                                 |     }
    0x00002d1c strh r3, [r6, 6]                                  |     *((r6 + 6)) = r3;
                                                                 | label_19:
    0x00002d1e adds r5, 0x20                                     |     r5 += 0x20;
    0x00002d20 dmb ish                                           |     __asm ("dmb ish");
                                                                 |     do {
    0x00002d24 ldrex r3, [r5]                                    |         __asm ("ldrex r3, [r5]");
    0x00002d28 orr r3, r3, 8                                     |         r3 |= 8;
    0x00002d2c strex r2, r3, [r5]                                |         __asm ("strex r2, r3, [r5]");
    0x00002d30 cmp r2, 0                                         |         
    0x00002d32 bne 0x2d24                                        |         
                                                                 |     } while (r2 != 0);
    0x00002d34 dmb ish                                           |     __asm ("dmb ish");
    0x00002d38 blx 0x15e8                                        |     fcn_000015e8 ();
    0x00002d3c ldr r2, [pc, 0x188]                               |     
    0x00002d3e ldr r3, [pc, 0x178]                               |     r3 = *(0x2eba);
    0x00002d40 add r2, pc                                        |     r2 = 0x5c0c;
    0x00002d42 ldr r3, [r2, r3]                                  |     r3 = *(0x5c0c);
    0x00002d44 ldr r2, [r3]                                      |     r2 = *(0x5c0c);
    0x00002d46 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x00002d48 eors r2, r3                                       |     r2 ^= r3;
    0x00002d4a mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00002d4e bne.w 0x2f3a                                      |         goto label_38;
                                                                 |     }
    0x00002d52 movs r0, 0                                        |     r0 = 0;
    0x00002d54 add sp, 0x44                                      |     
    0x00002d56 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_36:
    0x00002d5a blx 0x1458                                        |     fcn_00001458 ();
    0x00002d5e ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x00002d60 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00002d62 beq.w 0x2e9c                                      |         goto label_39;
                                                                 |     }
                                                                 | label_15:
    0x00002d66 ldr r7, [sp, 0x20]                                |     r7 = var_20h;
    0x00002d68 mov r2, r7                                        |     r2 = r7;
                                                                 |     if (r7 == 0) {
    0x00002d6a cbz r7, 0x2d76                                    |         goto label_40;
                                                                 |     }
    0x00002d6c b 0x2c42                                          |     goto label_5;
                                                                 | label_6:
    0x00002d6e ldr r7, [sp, 0x20]                                |     r7 = var_20h;
    0x00002d70 cmp r7, 0                                         |     
                                                                 |     if (r7 != 0) {
    0x00002d72 bne.w 0x2c42                                      |         goto label_5;
                                                                 |     }
                                                                 | label_40:
    0x00002d76 adds r2, 1                                        |     r2++;
    0x00002d78 cmp r2, 0xa                                       |     
                                                                 |     if (r2 != 0xa) {
    0x00002d7a bne 0x2d6e                                        |         goto label_6;
                                                                 |     }
    0x00002d7c movs r1, 0                                        |     r1 = 0;
    0x00002d7e mov r0, r1                                        |     r0 = r1;
    0x00002d80 blx 0x1510                                        |     fcn_00001510 ();
    0x00002d84 movs r2, 0                                        |     r2 = 0;
    0x00002d86 b 0x2d6e                                          |     goto label_6;
                                                                 | label_33:
    0x00002d88 dmb ish                                           |     __asm ("dmb ish");
    0x00002d8c ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00002d8e cmp sl, r2                                        |     
                                                                 |     if (sl == r2) {
    0x00002d90 beq.w 0x2c6c                                      |         goto label_7;
                                                                 |     }
    0x00002d94 ldr.w r1, [sl]                                    |     r1 = *(sl);
    0x00002d98 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00002d9a bne.w 0x2c6c                                      |         goto label_7;
                                                                 |     }
    0x00002d9e mov r2, r1                                        |     r2 = r1;
    0x00002da0 b 0x2dac                                          |     goto label_41;
                                                                 | label_8:
    0x00002da2 ldr.w r1, [sl]                                    |     r1 = *(sl);
    0x00002da6 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00002da8 bne.w 0x2c6c                                      |         goto label_7;
                                                                 |     }
                                                                 | label_41:
    0x00002dac adds r2, 1                                        |     r2++;
    0x00002dae cmp r2, 0xa                                       |     
                                                                 |     if (r2 != 0xa) {
    0x00002db0 bne 0x2da2                                        |         goto label_8;
                                                                 |     }
    0x00002db2 movs r1, 0                                        |     r1 = 0;
    0x00002db4 mov r0, r1                                        |     r0 = r1;
    0x00002db6 blx 0x1510                                        |     fcn_00001510 ();
    0x00002dba movs r2, 0                                        |     r2 = 0;
    0x00002dbc b 0x2da2                                          |     goto label_8;
                                                                 | label_35:
    0x00002dbe ldr r3, [r5]                                      |     r3 = *(r5);
    0x00002dc0 cmp r4, r3                                        |     
                                                                 |     if (r4 != r3) {
    0x00002dc2 bne.w 0x2cb2                                      |         goto label_9;
                                                                 |     }
    0x00002dc6 dmb ish                                           |     __asm ("dmb ish");
    0x00002dca mov r4, r5                                        |     r4 = r5;
    0x00002dcc ldr r3, [r4, 0x24]!                               |     r3 = *((r4 += 0x24));
    0x00002dd0 adds r3, 1                                        |     r3++;
                                                                 |     if (r3 == 1) {
    0x00002dd2 bne 0x2dfe                                        |         
                                                                 | label_12:
    0x00002dd4 mov.w r3, -1                                      |         r3 = -1;
    0x00002dd8 movs r2, 0                                        |         r2 = 0;
    0x00002dda mov r1, r4                                        |         r1 = r4;
    0x00002ddc movs r0, 0xf0                                     |         r0 = 0xf0;
    0x00002dde strd r6, r6, [sp, 4]                              |         __asm ("strd r6, r6, [var_4h]");
    0x00002de2 str r6, [sp]                                      |         *(sp) = r6;
    0x00002de4 blx 0x157c                                        |         r0 = fcn_0000157c ();
    0x00002de8 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00002dea blt 0x2e24                                        |             goto label_42;
                                                                 |         }
                                                                 |         if (r0 == 0) {
    0x00002dec cbz r0, 0x2e44                                    |             goto label_43;
                                                                 |         }
                                                                 | label_11:
    0x00002dee blx 0x15a0                                        |         r0 = fcn_000015a0 ();
    0x00002df2 ldr r0, [r0]                                      |         r0 = *(r0);
                                                                 | label_10:
    0x00002df4 cmp r0, 4                                         |         
                                                                 |         if (r0 == 4) {
    0x00002df6 beq 0x2e44                                        |             goto label_43;
                                                                 |         }
    0x00002df8 cmp r0, 0xb                                       |         
                                                                 |         if (r0 != 0xb) {
    0x00002dfa bne.w 0x2f72                                      |             goto label_44;
                                                                 |         }
                                                                 |     }
                                                                 | label_13:
    0x00002dfe movs r1, 0                                        |     r1 = 0;
    0x00002e00 movs r2, 0xa                                      |     r2 = 0xa;
    0x00002e02 mov r0, r1                                        |     r0 = r1;
    0x00002e04 blx 0x1510                                        |     fcn_00001510 ();
    0x00002e08 dmb ish                                           |     __asm ("dmb ish");
                                                                 |     do {
    0x00002e0c ldrex r3, [r4]                                    |         __asm ("ldrex r3, [r4]");
    0x00002e10 subs r3, 1                                        |         r3--;
    0x00002e12 strex r2, r3, [r4]                                |         __asm ("strex r2, r3, [r4]");
    0x00002e14 adds r2, 0                                        |         r2 += 0;
    0x00002e16 cmp r2, 0                                         |         
    0x00002e18 bne 0x2e0c                                        |         
                                                                 |     } while (r2 != 0);
    0x00002e1a dmb ish                                           |     __asm ("dmb ish");
    0x00002e1e dmb ish                                           |     __asm ("dmb ish");
    0x00002e22 b 0x2bd8                                          |     goto label_2;
                                                                 | label_42:
    0x00002e24 blx 0x15a0                                        |     r0 = fcn_000015a0 ();
    0x00002e28 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00002e2a cmp r0, 0x26                                      |     
                                                                 |     if (r0 != 0x26) {
    0x00002e2c bne 0x2df4                                        |         goto label_10;
                                                                 |     }
    0x00002e2e movs r3, 0                                        |     r3 = 0;
    0x00002e30 mov.w r2, -1                                      |     r2 = -1;
    0x00002e34 mov r1, r3                                        |     r1 = r3;
    0x00002e36 mov r0, r4                                        |     r0 = r4;
    0x00002e38 strd r6, r6, [sp]                                 |     __asm ("strd r6, r6, [sp]");
    0x00002e3c blx 0x1488                                        |     r0 = fcn_00001488 ();
    0x00002e40 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00002e42 bne 0x2dee                                        |         goto label_11;
                                                                 |     }
                                                                 | label_43:
    0x00002e44 ldr r3, [r5, 0x24]                                |     r3 = *((r5 + 0x24));
    0x00002e46 adds r3, 1                                        |     r3++;
                                                                 |     if (r3 == 1) {
    0x00002e48 beq 0x2dd4                                        |         goto label_12;
                                                                 |     }
    0x00002e4a b 0x2dfe                                          |     goto label_13;
                                                                 | label_27:
    0x00002e4c blx 0x15e8                                        |     fcn_000015e8 ();
    0x00002e50 dmb ish                                           |     __asm ("dmb ish");
                                                                 |     do {
    0x00002e54 ldrex r3, [sb]                                    |         __asm ("ldrex r3, [sb]");
    0x00002e58 orr r3, r3, 0x20                                  |         r3 |= 0x20;
    0x00002e5c strex r2, r3, [sb]                                |         __asm ("strex r2, r3, [sb]");
    0x00002e60 cmp r2, 0                                         |         
    0x00002e62 bne 0x2e54                                        |         
                                                                 |     } while (r2 != 0);
    0x00002e64 dmb ish                                           |     __asm ("dmb ish");
    0x00002e68 ldr r3, [r5, 0x20]                                |     r3 = *((r5 + 0x20));
    0x00002e6a lsls r1, r3, 0x1b                                 |     r1 = r3 << 0x1b;
                                                                 |     if (r1 >= r3) {
    0x00002e6c bpl 0x2e7e                                        |         goto label_45;
                                                                 |     }
                                                                 |     do {
    0x00002e6e movs r1, 0                                        |         r1 = 0;
    0x00002e70 movs r2, 1                                        |         r2 = 1;
    0x00002e72 mov r0, r1                                        |         r0 = r1;
    0x00002e74 blx 0x1510                                        |         fcn_00001510 ();
    0x00002e78 ldr r3, [r5, 0x20]                                |         r3 = *((r5 + 0x20));
    0x00002e7a lsls r2, r3, 0x1b                                 |         r2 = r3 << 0x1b;
    0x00002e7c bmi 0x2e6e                                        |         
                                                                 |     } while (r2 < r3);
                                                                 | label_45:
    0x00002e7e dmb ish                                           |     __asm ("dmb ish");
                                                                 |     do {
    0x00002e82 ldrex r3, [sb]                                    |         __asm ("ldrex r3, [sb]");
    0x00002e86 bic r3, r3, 0x20                                  |         r3 = BIT_MASK (r3, 0x20);
    0x00002e8a strex r2, r3, [sb]                                |         __asm ("strex r2, r3, [sb]");
    0x00002e8e cmp r2, 0                                         |         
    0x00002e90 bne 0x2e82                                        |         
                                                                 |     } while (r2 != 0);
    0x00002e92 dmb ish                                           |     __asm ("dmb ish");
    0x00002e96 blx 0x1434                                        |     fcn_00001434 ();
    0x00002e9a b 0x2bec                                          |     goto label_14;
                                                                 | label_39:
    0x00002e9c ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00002e9e cmp r2, r7                                        |     
                                                                 |     if (r2 != r7) {
    0x00002ea0 bne.w 0x2d66                                      |         goto label_15;
                                                                 |     }
    0x00002ea4 mov fp, r3                                        |     
    0x00002ea6 b 0x2c84                                          |     goto label_16;
                                                                 | label_32:
    0x00002ecc dmb ish                                           |     __asm ("dmb ish");
    0x00002ed0 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00002ed2 cmp r7, r3                                        |     
                                                                 |     if (r7 == r3) {
    0x00002ed4 beq 0x2f2e                                        |         goto label_46;
                                                                 |     }
    0x00002ed6 ldr.w sl, [r7]                                    |     sl = *(r7);
    0x00002eda cmp.w sl, 0                                       |     
                                                                 |     if (sl != 0) {
    0x00002ede bne.w 0x2c4e                                      |         goto label_17;
                                                                 |     }
    0x00002ee2 mov r2, sl                                        |     r2 = sl;
    0x00002ee4 b 0x2ef2                                          |     goto label_47;
                                                                 | label_18:
    0x00002ee6 ldr.w sl, [r7]                                    |     sl = *(r7);
    0x00002eea cmp.w sl, 0                                       |     
    0x00002eec lsrs r0, r0, 0x1c                                 |     r0 >>= 0x1c;
                                                                 |     if (r0 != r0) {
    0x00002eee bne.w 0x2c4e                                      |         goto label_17;
                                                                 |     }
                                                                 | label_47:
    0x00002ef2 adds r2, 1                                        |     r2++;
    0x00002ef4 cmp r2, 0xa                                       |     
                                                                 |     if (r2 != 0xa) {
    0x00002ef6 bne 0x2ee6                                        |         goto label_18;
                                                                 |     }
    0x00002ef8 movs r1, 0                                        |     r1 = 0;
    0x00002efa mov r0, r1                                        |     r0 = r1;
    0x00002efc blx 0x1510                                        |     fcn_00001510 ();
    0x00002f00 movs r2, 0                                        |     r2 = 0;
    0x00002f02 b 0x2ee6                                          |     goto label_18;
                                                                 | label_37:
    0x00002f04 dmb ish                                           |     __asm ("dmb ish");
    0x00002f08 str.w r8, [r5, 0x24]                              |     __asm ("str.w r8, [r5, 0x24]");
    0x00002f0c b 0x2d1e                                          |     goto label_19;
                                                                 | label_25:
    0x00002f0e add.w r3, r5, 0x24                                |     r3 = r5 + 0x24;
    0x00002f12 dmb ish                                           |     __asm ("dmb ish");
                                                                 |     do {
    0x00002f16 ldrex r1, [r3]                                    |         __asm ("ldrex r1, [r3]");
    0x00002f1a subs r1, 1                                        |         r1--;
    0x00002f1c strex r2, r1, [r3]                                |         __asm ("strex r2, r1, [r3]");
    0x00002f20 cmp r2, 0                                         |         
    0x00002f22 bne 0x2f16                                        |         
                                                                 |     } while (r2 != 0);
    0x00002f24 dmb ish                                           |     __asm ("dmb ish");
    0x00002f28 dmb ish                                           |     __asm ("dmb ish");
    0x00002f2c b 0x2bd2                                          |     goto label_20;
                                                                 | label_46:
    0x00002f2e ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x00002f30 mov r0, r7                                        |     r0 = r7;
    0x00002f32 mov.w fp, 1                                       |     
    0x00002f36 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00002f38 b 0x2c80                                          |     goto label_21;
                                                                 | label_38:
    0x00002f3a blx 0x14e0                                        |     fcn_000014e0 ();
                                                                 | label_26:
    0x00002f3e ldr r2, [sp, 0x14]                                |     r2 = var_14h;
    0x00002f40 ldr r3, [pc, 0x94]                                |     r3 = *(0x2fd8);
    0x00002f42 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00002f44 ldr r5, [r3]                                      |     r5 = *(0x2fd8);
    0x00002f46 blx 0x15a0                                        |     r0 = fcn_000015a0 ();
    0x00002f4a ldr r0, [r0]                                      |     r0 = *(r0);
    0x00002f4c blx 0x1558                                        |     fcn_00001558 ();
    0x00002f50 ldr r3, [pc, 0x88]                                |     
    0x00002f52 mov r4, r0                                        |     r4 = r0;
    0x00002f54 ldr r2, [pc, 0x88]                                |     
    0x00002f56 movw r1, 0x161                                    |     r1 = 0x161;
    0x00002f5a add r3, pc                                        |     r3 = 0x5f3a;
    0x00002f5c add r2, pc                                        |     r2 = 0x5f40;
                                                                 |     do {
    0x00002f5e add.w r3, r3, 0x1dc                               |         r3 += 0x1dc;
    0x00002f62 strd r1, r4, [sp]                                 |         __asm ("strd r1, r4, [sp]");
    0x00002f66 mov r0, r5                                        |         r0 = r5;
    0x00002f68 movs r1, 1                                        |         r1 = 1;
    0x00002f6a blx 0x15b8                                        |         fcn_000015b8 ();
    0x00002f6e blx 0x163c                                        |         fcn_0000163c ();
                                                                 | label_44:
    0x00002f72 ldr r2, [sp, 0x14]                                |         r2 = var_14h;
    0x00002f74 ldr r3, [pc, 0x60]                                |         r3 = *(0x2fd8);
    0x00002f76 ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x00002f78 ldr r5, [r3]                                      |         r5 = *(0x2fd8);
    0x00002f7a blx 0x1558                                        |         fcn_00001558 ();
    0x00002f7e ldr r3, [pc, 0x64]                                |         
    0x00002f80 mov r4, r0                                        |         r4 = r0;
    0x00002f82 ldr r2, [pc, 0x64]                                |         
    0x00002f84 movw r1, 0x109                                    |         r1 = 0x109;
    0x00002f88 str r1, [sp]                                      |         *(sp) = r1;
    0x00002f8a mov r0, r5                                        |         r0 = r5;
    0x00002f8c add r3, pc                                        |         
    0x00002f8e movs r1, 1                                        |         r1 = 1;
    0x00002f90 add r2, pc                                        |         r2 = 0x5f7e;
    0x00002f92 add.w r3, r3, 0x1fc                               |         r3 = 0x6172;
    0x00002f96 str r4, [sp, 4]                                   |         var_4h = r4;
    0x00002f98 blx 0x15b8                                        |         fcn_000015b8 ();
    0x00002f9c blx 0x163c                                        |         fcn_0000163c ();
                                                                 | label_28:
    0x00002fa0 ldr r3, [pc, 0x48]                                |         
    0x00002fa2 movs r2, 0x6b                                     |         r2 = 0x6b;
    0x00002fa4 ldr r1, [pc, 0x48]                                |         
    0x00002fa6 ldr r0, [pc, 0x4c]                                |         
    0x00002fa8 add r3, pc                                        |         r3 = 0x5f98;
    0x00002faa add r1, pc                                        |         r1 = 0x5f9e;
    0x00002fac adds r3, 0x80                                     |         r3 += 0x80;
    0x00002fae add r0, pc                                        |         r0 = 0x5fa8;
    0x00002fb0 blx 0x1660                                        |         fcn_00001660 ();
                                                                 | label_24:
    0x00002fb4 ldr r2, [sp, 0x14]                                |         r2 = var_14h;
    0x00002fb6 ldr r3, [pc, 0x20]                                |         r3 = *(0x2fda);
    0x00002fb8 ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x00002fba ldr r5, [r3]                                      |         r5 = *(0x2fda);
    0x00002fbc blx 0x15a0                                        |         r0 = fcn_000015a0 ();
    0x00002fc0 ldr r0, [r0]                                      |         r0 = *(r0);
    0x00002fc2 blx 0x1558                                        |         fcn_00001558 ();
    0x00002fc6 ldr r3, [pc, 0x30]                                |         
    0x00002fc8 mov r4, r0                                        |         r4 = r0;
    0x00002fca ldr r2, [pc, 0x30]                                |         
    0x00002fcc movw r1, 0x14d                                    |         r1 = 0x14d;
    0x00002fd0 add r3, pc                                        |         r3 = 0x5fce;
    0x00002fd2 add r2, pc                                        |         r2 = 0x5fd4;
    0x00002fd4 b 0x2f5e                                          |         
                                                                 |     } while (1);
                                                                 | }

[*] Function fprintf used 1 times liburcu.so.8.0.0