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

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


[*] Function printf tear down of liburcu-bp.so.8.0.0

    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/liburcu-bp.so.8.0.0 @ 0x2f58 */
                                                         | #include <stdint.h>
                                                         |  
                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                         |  
    ; (fcn) sym.urcu_bp_after_fork_child ()              | void urcu_bp_after_fork_child () {
                                                         |     int16_t var_4h_2;
                                                         |     int16_t var_4h;
                                                         |     int16_t var_84h;
    0x00002f58 ldr r2, [pc, 0xec]                        |     
    0x00002f5a ldr r3, [pc, 0xf0]                        |     r3 = *(0x304e);
    0x00002f5c push.w {r4, r5, r6, r7, r8, sb, lr}       |     
    0x00002f60 sub sp, 0x8c                              |     
    0x00002f62 add r2, pc                                |     r2 = 0x5fae;
    0x00002f64 ldr.w sb, [pc, 0xe8]                      |     sb = *(0x00003050);
    0x00002f68 ldr r3, [r2, r3]                          |     
    0x00002f6a add sb, pc                                |     sb += pc;
    0x00002f6c ldr r3, [r3]                              |     r3 = *(0x5fae);
    0x00002f6e str r3, [sp, 0x84]                        |     var_84h = r3;
    0x00002f70 mov.w r3, 0                               |     r3 = 0;
    0x00002f74 ldr r3, [sb, 0x10]!                       |     r3 = *((sb += 0x10));
    0x00002f78 cmp r3, sb                                |     
                                                         |     if (r3 == sb) {
    0x00002f7a beq 0x2fe4                                |         goto label_1;
                                                         |     }
    0x00002f7c sub.w r6, r3, 8                           |     r6 = r3 - 8;
    0x00002f80 mvn r8, 0x10                              |     r8 = ~0x10;
    0x00002f84 movs r7, 0                                |     r7 = 0;
                                                         | label_0:
    0x00002f86 ldr r5, [r6]                              |     r5 = *(r6);
    0x00002f88 add.w r3, r6, 0x10                        |     r3 = r6 + 0x10;
    0x00002f8c adds r5, 0x10                             |     r5 += 0x10;
    0x00002f8e add r5, r6                                |     r5 += r6;
    0x00002f90 cmp r5, r3                                |     
                                                         |     if (r5 < r3) {
    0x00002f92 bls 0x2fda                                |         goto label_2;
                                                         |     }
    0x00002f94 sub.w r2, r8, r6                          |     r2 = r8 - r6;
    0x00002f98 add.w r3, r6, 0x110                       |     r3 = r6 + 0x110;
    0x00002f9c add r5, r2                                |     r5 += r2;
    0x00002f9e add.w r4, r6, 0x90                        |     r4 = r6 + 0x90;
    0x00002fa2 bic r5, r5, 0x7f                          |     r5 = BIT_MASK (r5, 0x7f);
    0x00002fa6 add r5, r3                                |     r5 += r3;
                                                         |     do {
    0x00002fa8 ldr r3, [r4, -0x34]                       |         r3 = *((r4 - 0x34));
                                                         |         if (r3 != 0) {
    0x00002fac cbz r3, 0x2fd4                            |             
    0x00002fae blx 0x1588                                |             fcn_00001588 ();
    0x00002fb2 ldr r3, [r4, -0x38]                       |             r3 = *((r4 - 0x38));
    0x00002fb6 cmp r3, r0                                |             
                                                         |             if (r3 == r0) {
    0x00002fb8 beq 0x2fd4                                |                 goto label_3;
                                                         |             }
    0x00002fba ldrd r2, r3, [r4, -0x40]                  |             __asm ("ldrd r2, r3, [r4, -0x40]");
    0x00002fbe str r7, [r4, -0x80]                       |             *((r4 - 0x80)) = r7;
    0x00002fc2 str r3, [r2, 4]                           |             *((r2 + 4)) = r3;
    0x00002fc4 str r2, [r3]                              |             *(r3) = r2;
    0x00002fc6 str r7, [r4, -0x34]                       |             *((r4 - 0x34)) = r7;
    0x00002fca ldr r3, [r6, 4]                           |             r3 = *((r6 + 4));
    0x00002fcc str r7, [r4, -0x38]                       |             *((r4 - 0x38)) = r7;
    0x00002fd0 subs r3, 0x80                             |             r3 -= 0x80;
    0x00002fd2 str r3, [r6, 4]                           |             *((r6 + 4)) = r3;
                                                         |         }
                                                         | label_3:
    0x00002fd4 adds r4, 0x80                             |         r4 += 0x80;
    0x00002fd6 cmp r4, r5                                |         
    0x00002fd8 bne 0x2fa8                                |         
                                                         |     } while (r4 != r5);
                                                         | label_2:
    0x00002fda ldr r3, [r6, 8]                           |     r3 = *((r6 + 8));
    0x00002fdc cmp r3, sb                                |     
    0x00002fde sub.w r6, r3, 8                           |     r6 = r3 - 8;
                                                         |     if (r3 != sb) {
    0x00002fe2 bne 0x2f86                                |         goto label_0;
                                                         |     }
                                                         | label_1:
    0x00002fe4 ldr r4, [pc, 0x6c]                        |     
    0x00002fe6 add r5, sp, 4                             |     r5 += var_4h;
    0x00002fe8 movs r2, 0x80                             |     r2 = 0x80;
    0x00002fea mov r0, r5                                |     r0 = r5;
    0x00002fec add r4, pc                                |     r4 = 0x6044;
    0x00002fee add.w r1, r4, 0x84                        |     r1 = r4 + 0x84;
    0x00002ff2 blx 0x1594                                |     fcn_00001594 ();
    0x00002ff6 mov r0, r4                                |     r0 = r4;
    0x00002ff8 bl 0x1a9c                                 |     fcn_00001a9c ();
    0x00002ffc add.w r0, r4, 0x44                        |     r0 = r4 + 0x44;
    0x00003000 bl 0x1a9c                                 |     fcn_00001a9c ();
    0x00003004 movs r2, 0                                |     r2 = 0;
    0x00003006 mov r1, r5                                |     r1 = r5;
    0x00003008 movs r0, 2                                |     r0 = 2;
    0x0000300a blx 0x16a0                                |     r0 = fprintf_chk ()
                                                         |     if (r0 == 0) {
    0x0000300e cbnz r0, 0x302a                           |         
    0x00003010 ldr r2, [pc, 0x44]                        |         
    0x00003012 ldr r3, [pc, 0x38]                        |         r3 = *(0x304e);
    0x00003014 add r2, pc                                |         r2 = 0x6070;
    0x00003016 ldr r3, [r2, r3]                          |         r3 = *(0x6070);
    0x00003018 ldr r2, [r3]                              |         r2 = *(0x6070);
    0x0000301a ldr r3, [sp, 0x84]                        |         r3 = var_84h;
    0x0000301c eors r2, r3                               |         r2 ^= r3;
    0x0000301e mov.w r3, 0                               |         r3 = 0;
    0x00003020 lsls r0, r0, 0xc                          |         r0 <<= 0xc;
                                                         |         if (r0 != r0) {
    0x00003022 bne 0x3042                                |             goto label_4;
                                                         |         }
    0x00003024 add sp, 0x8c                              |         
    0x00003026 pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
                                                         |     }
    0x0000302a ldr r3, [pc, 0x30]                        |     
    0x0000302c movw r2, 0x2e5                            |     r2 = 0x2e5;
    0x00003030 ldr r1, [pc, 0x2c]                        |     
    0x00003032 ldr r0, [pc, 0x30]                        |     
    0x00003034 add r3, pc                                |     
    0x00003036 add r1, pc                                |     r1 = 0x609a;
    0x00003038 add.w r3, r3, 0x1b0                       |     r3 = 0x6246;
    0x0000303c add r0, pc                                |     r0 = 0x60a6;
    0x0000303e blx 0x1754                                |     fcn_00001754 ();
                                                         | label_4:
    0x00003042 blx 0x15b8                                |     fcn_000015b8 ();
    0x00003046 nop                                       |     
    0x00003048 subs r6, r2, 6                            |     r6 = r2 - 6;
    0x0000304a movs r1, r0                               |     r1 = r0;
    0x0000304c lsls r4, r3, 3                            |     r4 = r3 << 3;
    0x0000304e movs r0, r0                               |     
    0x00003050 movs r1, 0x12                             |     r1 = 0x12;
    0x00003052 movs r1, r0                               |     r1 = r0;
    0x00003054 movs r0, 0xb4                             |     r0 = 0xb4;
    0x00003056 movs r1, r0                               |     r1 = r0;
    0x00003058 subs r4, r4, 3                            |     r4 -= 3;
    0x0000305a movs r1, r0                               |     r1 = r0;
    0x0000305c asrs r4, r7, 0x12                         |     r4 = r7 >> 0x12;
    0x0000305e movs r0, r0                               |     
    0x00003060 asrs r2, r6, 8                            |     r2 = r6 >> 8;
    0x00003062 movs r0, r0                               |     
    0x00003064 asrs r0, r5, 7                            |     r0 = r5 >> 7;
    0x00003066 movs r0, r0                               |     
                                                         | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/liburcu-bp.so.8.0.0 @ 0x2ec8 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.urcu_bp_after_fork_parent ()         | void urcu_bp_after_fork_parent () {
                                                     |     int16_t var_4h_2;
                                                     |     int16_t var_84h;
                                                     |     if (? < ?) {
    0x00002ec8 addhs r4, r0, 28, 18                  |         r4 = r0 + (28 18);
                                                     |     }
    0x00002ecc ldr r3, [pc, 0x70]                    |     
    0x00002ece push {r4, r5, lr}                     |     
    0x00002ed0 sub sp, 0x8c                          |     
    0x00002ed2 ldr r4, [pc, 0x70]                    |     
    0x00002ed4 add r1, pc                            |     r1 += pc;
    0x00002ed6 add r5, sp, 4                         |     r5 += var_4h_2;
    0x00002ed8 ldr r3, [r1, r3]                      |     r3 = *((r1 + r3));
    0x00002eda mov r0, r5                            |     r0 = r5;
    0x00002edc add r4, pc                            |     r4 = 0x5e26;
    0x00002ede add.w r1, r4, 0x84                    |     r1 = r4 + 0x84;
    0x00002ee2 ldr r3, [r3]                          |     r3 = *(0x2f40);
    0x00002ee4 str r3, [sp, 0x84]                    |     var_84h = r3;
    0x00002ee6 mov.w r3, 0                           |     r3 = 0;
    0x00002eea blx 0x1594                            |     fcn_00001594 ();
    0x00002eee mov r0, r4                            |     r0 = r4;
    0x00002ef0 bl 0x1a9c                             |     fcn_00001a9c ();
    0x00002ef4 add.w r0, r4, 0x44                    |     r0 = r4 + 0x44;
    0x00002ef8 bl 0x1a9c                             |     fcn_00001a9c ();
    0x00002efc movs r2, 0                            |     r2 = 0;
    0x00002efe mov r1, r5                            |     r1 = r5;
    0x00002f00 movs r0, 2                            |     r0 = 2;
    0x00002f02 blx 0x16a0                            |     r0 = fprintf_chk ()
                                                     |     if (r0 == 0) {
    0x00002f06 cbnz r0, 0x2f20                       |         
    0x00002f08 ldr r2, [pc, 0x3c]                    |         
    0x00002f0a ldr r3, [pc, 0x34]                    |         r3 = *(0x2f42);
    0x00002f0c add r2, pc                            |         r2 = 0x5e58;
    0x00002f0e ldr r3, [r2, r3]                      |         r3 = *(0x5e58);
    0x00002f10 ldr r2, [r3]                          |         r2 = *(0x5e58);
    0x00002f12 ldr r3, [sp, 0x84]                    |         r3 = var_84h;
    0x00002f14 eors r2, r3                           |         r2 ^= r3;
    0x00002f16 mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x00002f1a bne 0x2f38                            |             goto label_0;
                                                     |         }
    0x00002f1c add sp, 0x8c                          |         
    0x00002f1e pop {r4, r5, pc}                      |         
                                                     |     }
    0x00002f20 ldr r3, [pc, 0x28]                    |     
    0x00002f22 movw r2, 0x2c1                        |     r2 = 0x2c1;
    0x00002f26 ldr r1, [pc, 0x28]                    |     
    0x00002f28 ldr r0, [pc, 0x28]                    |     
    0x00002f2a add r3, pc                            |     
    0x00002f2c add r1, pc                            |     r1 = 0x5e82;
    0x00002f2e add.w r3, r3, 0x194                   |     r3 = 0x600e;
    0x00002f32 add r0, pc                            |     r0 = 0x5e8a;
    0x00002f34 blx 0x1754                            |     fcn_00001754 ();
                                                     | label_0:
    0x00002f38 blx 0x15b8                            |     fcn_000015b8 ();
    0x00002f3c movs r0, 0x24                         |     r0 = 0x24;
    0x00002f3e movs r1, r0                           |     r1 = r0;
    0x00002f40 lsls r4, r3, 3                        |     r4 = r3 << 3;
    0x00002f42 movs r0, r0                           |     
    0x00002f44 movs r1, 0xc4                         |     r1 = 0xc4;
    0x00002f46 movs r1, r0                           |     r1 = r0;
    0x00002f48 subs r4, r5, 7                        |     r4 = r5 - 7;
    0x00002f4a movs r1, r0                           |     r1 = r0;
    0x00002f4c asrs r6, r0, 0x17                     |     r6 = r0 >> 0x17;
    0x00002f4e movs r0, r0                           |     
    0x00002f50 asrs r4, r7, 0xc                      |     r4 = r7 >> 0xc;
    0x00002f52 movs r0, r0                           |     
    0x00002f54 asrs r2, r6, 0xb                      |     r2 = r6 >> 0xb;
    0x00002f56 movs r0, r0                           |     
                                                     | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/liburcu-bp.so.8.0.0 @ 0x2e0c */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.urcu_bp_before_fork ()       | void urcu_bp_before_fork () {
                                             |     int16_t var_84h_2;
                                             |     int16_t var_4h;
                                             |     int16_t var_84h_3;
                                             |     int16_t var_104h;
    0x00002e0c blmi 0x9556a4                 |     __asm ("blmi 0x9556a4");
    0x00002e10 push {r4, r5, lr}             |     
    0x00002e12 sub sp, 0x10c                 |     
    0x00002e14 add r2, pc                    |     r2 += pc;
    0x00002e16 add r4, sp, 4                 |     r4 += var_4h;
    0x00002e18 mov r0, r4                    |     r0 = r4;
    0x00002e1a ldr r3, [r2, r3]              |     r3 = *((r2 + r3));
    0x00002e1c ldr r3, [r3]                  |     r3 = *(r3);
    0x00002e1e str r3, [sp, 0x104]           |     var_104h = r3;
    0x00002e20 mov.w r3, 0                   |     r3 = 0;
    0x00002e24 blx 0x1660                    |     r0 = fcn_00001660 ();
                                             |     if (r0 == 0) {
    0x00002e28 cbnz r0, 0x2e6c               |         
    0x00002e2a add r5, sp, 0x84              |         r5 += var_84h_3;
    0x00002e2c mov r1, r4                    |         r1 = r4;
    0x00002e2e mov r2, r5                    |         r2 = r5;
    0x00002e30 blx 0x16a0                    |         r0 = fprintf_chk ()
                                             |         if (r0 != 0) {
    0x00002e34 cbnz r0, 0x2e88               |             goto label_0;
                                             |         }
    0x00002e36 ldr r4, [pc, 0x70]            |         
    0x00002e38 add r4, pc                    |         r4 = 0x5ce6;
    0x00002e3a add.w r0, r4, 0x44            |         r0 = r4 + 0x44;
    0x00002e3e bl 0x19a0                     |         fcn_000019a0 ();
    0x00002e42 mov r0, r4                    |         r0 = r4;
    0x00002e44 bl 0x19a0                     |         fcn_000019a0 ();
    0x00002e48 movs r2, 0x80                 |         r2 = 0x80;
    0x00002e4a mov r1, r5                    |         r1 = r5;
    0x00002e4c add.w r0, r4, 0x84            |         r0 = r4 + 0x84;
    0x00002e50 blx 0x1594                    |         fcn_00001594 ();
    0x00002e54 ldr r2, [pc, 0x54]            |         
    0x00002e56 ldr r3, [pc, 0x4c]            |         r3 = *(0x2ea6);
    0x00002e58 add r2, pc                    |         r2 = 0x5d08;
    0x00002e5a ldr r3, [r2, r3]              |         r3 = *(0x5d08);
    0x00002e5c ldr r2, [r3]                  |         r2 = *(0x5d08);
    0x00002e5e ldr r3, [sp, 0x104]           |         r3 = var_104h;
    0x00002e60 eors r2, r3                   |         r2 ^= r3;
    0x00002e62 mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x00002e66 bne 0x2e84                    |             goto label_1;
                                             |         }
    0x00002e68 add sp, 0x10c                 |         
    0x00002e6a pop {r4, r5, pc}              |         
                                             |     }
    0x00002e6c ldr r3, [pc, 0x40]            |     
    0x00002e6e mov.w r2, 0x2b0               |     r2 = 0x2b0;
    0x00002e72 ldr r1, [pc, 0x40]            |     
    0x00002e74 ldr r0, [pc, 0x40]            |     
    0x00002e76 add r3, pc                    |     
    0x00002e78 add r1, pc                    |     r1 = 0x5d32;
    0x00002e7a add.w r3, r3, 0x180           |     r3 = 0x5eaa;
    0x00002e7e add r0, pc                    |     r0 = 0x5d3a;
    0x00002e80 blx 0x1754                    |     fcn_00001754 ();
                                             | label_1:
    0x00002e84 blx 0x15b8                    |     fcn_000015b8 ();
                                             | label_0:
    0x00002e88 ldr r3, [pc, 0x30]            |     
    0x00002e8a movw r2, 0x2b2                |     r2 = 0x2b2;
    0x00002e8e ldr r1, [pc, 0x30]            |     
    0x00002e90 ldr r0, [pc, 0x30]            |     
    0x00002e92 add r3, pc                    |     
    0x00002e94 add r1, pc                    |     r1 = 0x5d5a;
    0x00002e96 add.w r3, r3, 0x180           |     r3 = 0x5ed2;
    0x00002e9a add r0, pc                    |     r0 = 0x5d62;
    0x00002e9c blx 0x1754                    |     fcn_00001754 ();
    0x00002ea0 movs r0, 0xe4                 |     r0 = 0xe4;
    0x00002ea2 movs r1, r0                   |     r1 = r0;
    0x00002ea4 lsls r4, r3, 3                |     r4 = r3 << 3;
    0x00002ea6 movs r0, r0                   |     
    0x00002ea8 movs r2, 0x68                 |     r2 = 0x68;
    0x00002eaa movs r1, r0                   |     r1 = r0;
    0x00002eac movs r0, 0xa0                 |     r0 = 0xa0;
    0x00002eae movs r1, r0                   |     r1 = r0;
    0x00002eb0 asrs r2, r7, 0x19             |     r2 = r7 >> 0x19;
    0x00002eb2 movs r0, r0                   |     
    0x00002eb4 asrs r0, r6, 0xf              |     r0 = r6 >> 0xf;
    0x00002eb6 movs r0, r0                   |     
    0x00002eb8 asrs r6, r4, 0xe              |     r6 = r4 >> 0xe;
    0x00002eba movs r0, r0                   |     
    0x00002ebc asrs r6, r3, 0x19             |     r6 = r3 >> 0x19;
    0x00002ebe movs r0, r0                   |     
    0x00002ec0 asrs r4, r2, 0xf              |     r4 = r2 >> 0xf;
    0x00002ec2 movs r0, r0                   |     
    0x00002ec4 asrs r2, r1, 0xe              |     r2 = r1 >> 0xe;
    0x00002ec6 movs r0, r0                   |     
                                             | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/liburcu-bp.so.8.0.0 @ 0x1ef8 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.urcu_bp_register_rculfhash_atfork ()         | void urcu_bp_register_rculfhash_atfork (int16_t arg1) {
                                                             |     r0 = arg1;
    0x00001ef8 invalid                                       |     
    0x00001efc bl 0x1e84                                     |     fcn_00001e84 ();
    0x00001f00 ldr r3, [pc, 0x10]                            |     
    0x00001f02 add r3, pc                                    |     r3 = 0x3e1a;
    0x00001f04 ldr r2, [r3, 0x3c]                            |     r2 = *(0x3e56);
    0x00001f06 adds r1, r2, 1                                |     r1 = r2 + 1;
    0x00001f08 str r1, [r3, 0x3c]                            |     *((r3 + 0x3c)) = r1;
                                                             |     if (r2 == 0) {
    0x00001f0a cbnz r2, 0x1f0e                               |         
    0x00001f0c str r4, [r3, 0x40]                            |         *((r3 + 0x40)) = r4;
                                                             |     }
    0x00001f0e pop.w {r4, lr}                                |     
    0x00001f12 b 0x1e30                                      |     return void (*0x1e30)() ();
                                                             | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/liburcu-bp.so.8.0.0 @ 0x2330 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.urcu_bp_register ()                          | void urcu_bp_register () {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_94h;
                                                             |     int16_t var_114h;
    0x00002330 ldr r2, [pc, 0x228]                           |     
    0x00002332 ldr r3, [pc, 0x22c]                           |     r3 = *(0x2562);
    0x00002334 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00002338 sub sp, 0x118                                 |     
    0x0000233a add r2, pc                                    |     r2 = 0x489a;
    0x0000233c add r4, sp, 0x14                              |     r4 += var_14h;
    0x0000233e mov r0, r4                                    |     r0 = r4;
    0x00002340 ldr r3, [r2, r3]                              |     
    0x00002342 ldr r3, [r3]                                  |     r3 = *(0x489a);
    0x00002344 str r3, [sp, 0x114]                           |     var_114h = r3;
    0x00002346 mov.w r3, 0                                   |     r3 = 0;
    0x0000234a blx 0x1660                                    |     r0 = fcn_00001660 ();
    0x0000234e cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002350 bne 0x2426                                    |         goto label_3;
                                                             |     }
    0x00002352 add r6, sp, 0x94                              |     r6 += var_94h;
    0x00002354 mov r1, r4                                    |     r1 = r4;
    0x00002356 mov r2, r6                                    |     r2 = r6;
    0x00002358 blx 0x16a0                                    |     r0 = fprintf_chk ()
    0x0000235c mov r5, r0                                    |     r5 = r0;
    0x0000235e cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002360 bne 0x2426                                    |         goto label_3;
                                                             |     }
    0x00002362 ldr r0, [pc, 0x1f0]                           |     
    0x00002364 add r0, pc                                    |     r0 = 0x48be;
    0x00002366 blx 0x1724                                    |     r0 = pthread_join (r0, r1);
    0x0000236a ldr r3, [r0]                                  |     r3 = *(0x48be);
                                                             |     if (r3 != 0) {
    0x0000236c cbz r3, 0x2398                                |         
                                                             | label_4:
    0x0000236e movs r2, 0                                    |         r2 = 0;
    0x00002370 mov r1, r6                                    |         r1 = r6;
    0x00002372 movs r0, 2                                    |         r0 = 2;
    0x00002374 blx 0x16a0                                    |         fprintf_chk ()
    0x00002376 invalid                                       |         
                                                             |         if (r0 != 2) {
    0x0000237a bne 0x2426                                    |             goto label_3;
                                                             |         }
    0x0000237c ldr r2, [pc, 0x1e4]                           |         
    0x0000237e ldr r3, [pc, 0x1e0]                           |         r3 = *(0x2562);
    0x00002380 add r2, pc                                    |         r2 = 0x48e8;
    0x00002382 ldr r3, [r2, r3]                              |         r3 = *(0x48e8);
    0x00002384 ldr r2, [r3]                                  |         r2 = *(0x48e8);
    0x00002386 ldr r3, [sp, 0x114]                           |         r3 = var_114h;
    0x00002388 eors r2, r3                                   |         r2 ^= r3;
    0x0000238a mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0000238e bne.w 0x2520                                  |             goto label_6;
                                                             |         }
    0x00002392 add sp, 0x118                                 |         
    0x00002394 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             |     }
    0x00002398 bl 0x181c                                     |     entry_init1 ();
    0x0000239c ldr r0, [pc, 0x1c8]                           |     
    0x0000239e add r0, pc                                    |     r0 = 0x490a;
    0x000023a0 bl 0x19a0                                     |     fcn_000019a0 ();
    0x000023a4 ldr r3, [pc, 0x1c4]                           |     
    0x000023a6 add r3, pc                                    |     r3 = 0x4916;
    0x000023a8 ldr r7, [r3, 0x10]!                           |     r7 = *(0x4926);
    0x000023ac cmp r7, r3                                    |     
    0x000023ae sub.w r1, r7, 8                               |     r1 = r7 - 8;
                                                             |     if (r7 == r3) {
    0x000023b2 beq 0x23d4                                    |         goto label_7;
                                                             |     }
                                                             | label_0:
    0x000023b4 ldr.w ip, [pc, 0x1b8]                         |     ip = *(0x00002570);
    0x000023b8 add ip, pc                                    |     
    0x000023ba add.w ip, ip, 0x10                            |     
                                                             |     do {
    0x000023be ldrd r3, r0, [r1]                             |         __asm ("ldrd r3, r0, [r1]");
    0x000023c2 subs r2, r3, r0                               |         r2 = r3 - r0;
    0x000023c4 cmp r2, 0x7f                                  |         
                                                             |         if (r2 > 0x7f) {
    0x000023c6 bhi 0x242a                                    |             goto label_8;
                                                             |         }
                                                             | label_1:
    0x000023c8 ldr r3, [r1, 8]                               |         r3 = *((r1 + 8));
    0x000023ca cmp r3, ip                                    |         
    0x000023cc sub.w r1, r3, 8                               |         r1 = r3 - 8;
    0x000023d0 bne 0x23be                                    |         
                                                             |     } while (r3 != ip);
                                                             |     if (r5 != 0) {
    0x000023d2 cbnz r5, 0x2426                               |         goto label_3;
                                                             |     }
                                                             | label_7:
    0x000023d4 ldr.w sb, [pc, 0x19c]                         |     sb = *(0x00002574);
    0x000023d8 add sb, pc                                    |     sb += pc;
    0x000023da add.w r8, sb, 0x10                            |     r8 = sb + 0x10;
    0x000023de cmp r7, r8                                    |     
                                                             |     if (r7 == r8) {
    0x000023e0 beq 0x2492                                    |         goto label_9;
                                                             |     }
    0x000023e2 ldr.w sl, [sb, 0x14]                          |     sl = *((sb + 0x14));
    0x000023e6 movs r3, 0                                    |     r3 = 0;
    0x000023e8 ldr r4, [sl, -0x8]                            |     r4 = *((sl - 0x8));
    0x000023ec sub.w r7, sl, 8                               |     r7 = sl - 8;
    0x000023f0 mov r0, r7                                    |     r0 = r7;
    0x000023f2 adds r4, 0x10                                 |     r4 += 0x10;
    0x000023f4 lsls r5, r4, 1                                |     r5 = r4 << 1;
    0x000023f6 mov r1, r4                                    |     r1 = r4;
    0x000023f8 mov r2, r5                                    |     r2 = r5;
    0x000023fa blx 0x1718                                    |     r0 = tls_get_addr ();
    0x000023fe adds r2, r0, 1                                |     r2 = r0 + 1;
                                                             |     if (r2 == r0) {
    0x00002400 beq 0x24e8                                    |         goto label_10;
                                                             |     }
    0x00002402 cmp r7, r0                                    |     
                                                             |     if (r7 != r0) {
    0x00002404 bne.w 0x2524                                  |         goto label_11;
                                                             |     }
    0x00002408 adds r0, r7, r4                               |     r0 = r7 + r4;
    0x0000240a subs r2, r5, r4                               |     r2 = r5 - r4;
    0x0000240c movs r1, 0                                    |     r1 = 0;
    0x0000240e subs r5, 0x10                                 |     r5 -= 0x10;
    0x00002410 blx 0x1684                                    |     fcn_00001684 ();
    0x00002414 ldr.w r7, [sb, 0x10]                          |     r7 = *((sb + 0x10));
    0x00002416 strb r0, [r2]                                 |     *(r2) = r0;
    0x00002418 str r5, [sl, -0x8]                            |     *((sl - 0x8)) = r5;
    0x0000241c movs r5, 1                                    |     r5 = 1;
    0x0000241e cmp r7, r8                                    |     
    0x00002420 sub.w r1, r7, 8                               |     r1 = r7 - 8;
                                                             |     if (r7 != r8) {
    0x00002424 bne 0x23b4                                    |         goto label_0;
                                                             |     }
                                                             | label_3:
    0x00002426 blx 0x173c                                    |     pthread_setspecific ();
                                                             | label_8:
    0x0000242a adds r3, 0x10                                 |     r3 += 0x10;
    0x0000242c add.w r4, r1, 0x10                            |     r4 = r1 + 0x10;
    0x00002430 add r3, r1                                    |     r3 += r1;
    0x00002432 cmp r4, r3                                    |     
                                                             |     if (r4 <= r3) {
    0x00002434 blo 0x243e                                    |         goto label_12;
                                                             |     }
    0x00002436 b 0x23c8                                      |     goto label_1;
                                                             | label_2:
    0x00002438 adds r4, 0x80                                 |     r4 += 0x80;
    0x0000243a cmp r4, r3                                    |     
                                                             |     if (r4 >= r3) {
    0x0000243c bhs 0x23c8                                    |         goto label_1;
                                                             |     }
                                                             | label_12:
    0x0000243e ldr r2, [r4, 0x4c]                            |     r2 = *((r4 + 0x4c));
    0x00002440 cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x00002442 bne 0x2438                                    |         goto label_2;
                                                             |     }
    0x00002444 ldr r5, [pc, 0x130]                           |     
    0x00002446 adds r0, 0x80                                 |     r0 += 0x80;
    0x00002448 movs r3, 1                                    |     r3 = 1;
    0x0000244a str r3, [r4, 0x4c]                            |     *((r4 + 0x4c)) = r3;
    0x0000244c add r5, pc                                    |     r5 = 0x49c8;
    0x0000244e str r0, [r1, 4]                               |     *((r1 + 4)) = r0;
    0x00002450 ldr r0, [r5, 0x7c]                            |     r0 = *(0x4a44);
    0x00002452 mov r1, r4                                    |     r1 = r4;
    0x00002454 blx 0x1748                                    |     r0 = assert_fail ();
    0x00002458 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0000245a bne 0x2426                                    |         goto label_3;
                                                             |     }
    0x0000245c blx 0x1588                                    |     fcn_00001588 ();
    0x00002460 ldr r3, [r4]                                  |     r3 = *(r4);
    0x00002462 str r0, [r4, 0x48]                            |     *((r4 + 0x48)) = r0;
    0x00002464 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00002466 bne 0x253c                                    |         goto label_13;
                                                             |     }
    0x00002468 ldr r3, [pc, 0x110]                           |     
    0x0000246a add.w r7, r4, 0x40                            |     r7 = r4 + 0x40;
    0x0000246e ldr r0, [pc, 0xe8]                            |     
    0x00002470 add r3, pc                                    |     r3 = 0x49f0;
    0x00002472 mov r2, r3                                    |     r2 = r3;
    0x00002474 add r0, pc                                    |     r0 = 0x49d2;
    0x00002476 ldr r1, [r2, 8]!                              |     r1 = *((r2 += 8));
    0x0000247a str r7, [r3, 8]                               |     *((r3 + 8)) = r7;
    0x0000247c str r7, [r1, 4]                               |     *((r1 + 4)) = r7;
    0x0000247e strd r1, r2, [r4, 0x40]                       |     __asm ("strd r1, r2, [r4, 0x40]");
    0x00002482 blx 0x1724                                    |     r0 = pthread_join (r0, r1);
    0x00002486 mov r3, r0                                    |     r3 = r0;
    0x00002488 mov r0, r5                                    |     r0 = r5;
    0x0000248a str r4, [r3]                                  |     *(r3) = r4;
    0x0000248c bl 0x1a9c                                     |     fcn_00001a9c ();
    0x00002490 b 0x236e                                      |     goto label_4;
                                                             | label_9:
    0x00002492 vmov.i32 d16, 0                               |     __asm ("vmov.i32 d16, 0");
    0x00002496 mov.w r3, -1                                  |     r3 = -1;
    0x0000249a mov.w r1, 0x410                               |     r1 = 0x410;
    0x0000249e str r3, [sp]                                  |     *(sp) = r3;
    0x000024a0 movs r2, 3                                    |     r2 = 3;
    0x000024a2 movs r3, 0x22                                 |     r3 = 0x22;
    0x000024a4 movs r0, 0                                    |     r0 = 0;
    0x000024a6 vstr d16, [sp, 8]                             |     __asm ("vstr d16, [sp, 8]");
    0x000024aa blx 0x15a0                                    |     r0 = fcn_000015a0 ();
    0x000024ae adds r1, r0, 1                                |     r1 = r0 + 1;
    0x000024b0 mov r4, r0                                    |     r4 = r0;
                                                             |     if (r1 == r0) {
    0x000024b2 beq 0x2426                                    |         goto label_3;
                                                             |     }
    0x000024b4 mov.w r2, 0x410                               |     r2 = 0x410;
    0x000024b8 movs r1, 0                                    |     r1 = 0;
    0x000024ba blx 0x1684                                    |     fcn_00001684 ();
    0x000024be ldr.w r2, [sb, 0x14]                          |     r2 = *((sb + 0x14));
    0x000024c2 mov r3, r4                                    |     r3 = r4;
    0x000024c4 mov.w r1, 0x400                               |     r1 = 0x400;
    0x000024c8 str r1, [r3], 8                               |     *(r3) = r1;
                                                             |     r3 += 8;
    0x000024cc str r3, [r2]                                  |     *(r2) = r3;
    0x000024ce strd r7, r2, [r4, 8]                          |     __asm ("strd r7, r2, [r4, 8]");
                                                             | label_5:
    0x000024d2 ldr.w r7, [sb, 0x10]                          |     r7 = *((sb + 0x10));
    0x000024d6 movs r5, 1                                    |     r5 = 1;
    0x000024d8 str.w r3, [sb, 0x14]                          |     __asm ("str.w r3, [sb, 0x14]");
    0x000024dc cmp r7, r8                                    |     
    0x000024de sub.w r1, r7, 8                               |     r1 = r7 - 8;
                                                             |     if (r7 != r8) {
    0x000024e2 bne.w 0x23b4                                  |         goto label_0;
                                                             |     }
    0x000024e6 b 0x2426                                      |     goto label_3;
                                                             | label_10:
    0x000024e8 vmov.i32 d16, 0                               |     __asm ("vmov.i32 d16, 0");
    0x000024ec movs r3, 0x22                                 |     r3 = 0x22;
    0x000024ee str r0, [sp]                                  |     *(sp) = r0;
    0x000024f0 movs r2, 3                                    |     r2 = 3;
    0x000024f2 mov r1, r5                                    |     r1 = r5;
    0x000024f4 movs r0, 0                                    |     r0 = 0;
    0x000024f6 vstr d16, [sp, 8]                             |     __asm ("vstr d16, [sp, 8]");
    0x000024fa blx 0x15a0                                    |     r0 = fcn_000015a0 ();
    0x000024fe adds r3, r0, 1                                |     r3 = r0 + 1;
    0x00002500 mov r4, r0                                    |     r4 = r0;
                                                             |     if (r3 == r0) {
    0x00002502 beq 0x2426                                    |         goto label_3;
                                                             |     }
    0x00002504 mov r2, r5                                    |     r2 = r5;
    0x00002506 movs r1, 0                                    |     r1 = 0;
    0x00002508 blx 0x1684                                    |     fcn_00001684 ();
    0x0000250c ldr.w r2, [sb, 0x14]                          |     r2 = *((sb + 0x14));
    0x00002510 mov r3, r4                                    |     r3 = r4;
    0x00002512 subs r5, 0x10                                 |     r5 -= 0x10;
    0x00002514 str r5, [r3], 8                               |     *(r3) = r5;
                                                             |     r3 += 8;
    0x00002516 ldrh r0, [r1, r4]                             |     r0 = *((r1 + r4));
    0x00002518 str r3, [r2]                                  |     *(r2) = r3;
    0x0000251a strd r8, r2, [r4, 8]                          |     __asm ("strd r8, r2, [r4, 8]");
    0x0000251e b 0x24d2                                      |     goto label_5;
                                                             | label_6:
    0x00002520 blx 0x15b8                                    |     fcn_000015b8 ();
                                                             | label_11:
    0x00002524 ldr r3, [pc, 0x58]                            |     
    0x00002526 mov.w r2, 0x1a0                               |     r2 = 0x1a0;
    0x0000252a ldr r1, [pc, 0x58]                            |     
    0x0000252c ldr r0, [pc, 0x58]                            |     
    0x0000252e add r3, pc                                    |     
    0x00002530 add r1, pc                                    |     r1 = 0x4aba;
    0x00002532 add.w r3, r3, 0x108                           |     r3 = 0x4bba;
    0x00002536 add r0, pc                                    |     r0 = 0x4ac2;
    0x00002538 blx 0x1754                                    |     fcn_00001754 ();
                                                             | label_13:
    0x0000253c ldr r3, [pc, 0x4c]                            |     
    0x0000253e movw r2, 0x1e7                                |     r2 = 0x1e7;
    0x00002542 ldr r1, [pc, 0x4c]                            |     
    0x00002544 ldr r0, [pc, 0x4c]                            |     
    0x00002546 add r3, pc                                    |     
    0x00002548 add r1, pc                                    |     r1 = 0x4ade;
    0x0000254a add.w r3, r3, 0x118                           |     r3 = 0x4bee;
    0x0000254e add r0, pc                                    |     r0 = 0x4ae6;
    0x00002550 blx 0x1754                                    |     fcn_00001754 ();
    0x00002554 cmp r4, 0x90                                  |     
    0x00002556 movs r1, r0                                   |     r1 = r0;
    0x00002558 cmp r3, 0x80                                  |     
    0x0000255a movs r1, r0                                   |     r1 = r0;
    0x0000255c cmp r3, 0xbe                                  |     
    0x0000255e movs r1, r0                                   |     r1 = r0;
    0x00002560 lsls r4, r3, 3                                |     r4 = r3 << 3;
    0x00002562 movs r0, r0                                   |     
    0x00002564 cmp r3, 0x78                                  |     
    0x00002566 movs r1, r0                                   |     r1 = r0;
    0x00002568 cmp r5, 2                                     |     
    0x0000256a movs r1, r0                                   |     r1 = r0;
    0x0000256c cmp r4, 0xd6                                  |     
    0x0000256e movs r1, r0                                   |     r1 = r0;
    0x00002570 cmp r4, 0xc4                                  |     
    0x00002572 movs r1, r0                                   |     r1 = r0;
    0x00002574 cmp r4, 0xa4                                  |     
    0x00002576 movs r1, r0                                   |     r1 = r0;
    0x00002578 cmp r4, 0x54                                  |     
    0x0000257a movs r1, r0                                   |     r1 = r0;
    0x0000257c cmp r4, 0xc                                   |     
    0x0000257e movs r1, r0                                   |     r1 = r0;
    0x00002580 subs r2, r0, 7                                |     r2 = r0 - 7;
    0x00002582 movs r0, r0                                   |     
    0x00002584 adds r0, r7, 4                                |     r0 = r7 + 4;
    0x00002586 movs r0, r0                                   |     
    0x00002588 adds r6, r3, 5                                |     r6 = r3 + 5;
    0x0000258a movs r0, r0                                   |     
    0x0000258c subs r2, r5, 6                                |     r2 = r5 - 6;
    0x0000258e movs r0, r0                                   |     
    0x00002590 adds r0, r4, 4                                |     r0 = r4 + 4;
    0x00002592 movs r0, r0                                   |     
    0x00002594 adds r6, r3, 5                                |     r6 = r3 + 5;
    0x00002596 movs r0, r0                                   |     
                                                             | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/liburcu-bp.so.8.0.0 @ 0x2598 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.urcu_bp_register_thread ()       | void urcu_bp_register_thread () {
                                                 |     do {
    0x00001550 invalid                           |         void (*0x1554)() ();
    0x00002598 ldr r0, [pc, 0x14]                |         
    0x0000259a push {r3, lr}                     |         
    0x0000259c add r0, pc                        |         r0 = 0x4b50;
    0x0000259e blx 0x1724                        |         r0 = pthread_join (r0, r1);
    0x000025a2 ldr r3, [r0]                      |         r3 = *(0x4b50);
                                                 |         if (r3 != 0) {
    0x000025a4 cbz r3, 0x25a8                    |             
    0x000025a6 pop {r3, pc}                      |             
                                                 |         }
    0x000025a8 pop.w {r3, lr}                    |         
    0x000025ac b.w 0x1550                        |         
                                                 |     } while (1);
                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/liburcu-bp.so.8.0.0 @ 0x2048 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.urcu_bp_synchronize_rcu ()                   | void urcu_bp_synchronize_rcu () {
                                                             |     int16_t var_4h;
                                                             |     int32_t var_0h;
                                                             |     int16_t var_ch;
                                                             |     int32_t var_0h_2;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_94h;
                                                             |     int16_t var_114h;
    0x00002048 ldr r2, [pc, 0x16c]                           |     
    0x0000204a ldr r3, [pc, 0x170]                           |     r3 = *(0x21be);
    0x0000204c push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00002050 sub sp, 0x118                                 |     
    0x00002052 add r2, pc                                    |     r2 = 0x420e;
    0x00002054 ldr r7, [pc, 0x168]                           |     
    0x00002056 add r6, sp, 0x14                              |     r6 += var_14h;
    0x00002058 add r5, sp, 4                                 |     r5 += var_4h;
    0x0000205a ldr r3, [r2, r3]                              |     
    0x0000205c add r4, sp, 0xc                               |     r4 += var_ch;
    0x0000205e mov r0, r6                                    |     r0 = r6;
    0x00002060 add r7, pc                                    |     r7 = 0x4224;
    0x00002062 ldr r3, [r3]                                  |     r3 = *(0x420e);
    0x00002064 str r3, [sp, 0x114]                           |     var_114h = r3;
    0x00002066 mov.w r3, 0                                   |     r3 = 0;
    0x0000206a strd r5, r5, [r5]                             |     __asm ("strd r5, r5, [r5]");
    0x0000206e strd r4, r4, [r4]                             |     __asm ("strd r4, r4, [r4]");
    0x00002072 blx 0x1660                                    |     r0 = fcn_00001660 ();
    0x00002076 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002078 bne.w 0x219c                                  |         goto label_1;
                                                             |     }
    0x0000207c add.w sb, sp, 0x94                            |     sb += var_94h;
    0x00002080 mov r1, r6                                    |     r1 = r6;
    0x00002082 mov r2, sb                                    |     r2 = sb;
    0x00002084 blx 0x16a0                                    |     r0 = fprintf_chk ()
    0x00002088 mov r6, r0                                    |     r6 = r0;
    0x0000208a cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0000208c bne 0x2186                                    |         goto label_2;
                                                             |     }
    0x0000208e ldr.w r8, [pc, 0x134]                         |     r8 = *(0x000021c4);
    0x00002092 add r8, pc                                    |     r8 += pc;
    0x00002094 add.w r0, r8, 0x44                            |     r0 = r8 + 0x44;
    0x00002098 bl 0x19a0                                     |     fcn_000019a0 ();
    0x0000209c mov r0, r8                                    |     r0 = r8;
    0x0000209e bl 0x19a0                                     |     fcn_000019a0 ();
    0x000020a2 ldr r3, [pc, 0x124]                           |     
    0x000020a4 add r3, pc                                    |     r3 = 0x4272;
    0x000020a6 ldr r2, [r3, 8]                               |     r2 = *(0x427a);
    0x000020a8 adds r3, 8                                    |     r3 += 8;
    0x000020aa cmp r2, r3                                    |     
                                                             |     if (r2 == r3) {
    0x000020ac beq 0x2128                                    |         goto label_0;
                                                             |     }
    0x000020ae ldr r3, [pc, 0x11c]                           |     r3 = *(0x21ce);
    0x000020b0 ldr.w r8, [r7, r3]                            |     r8 = *((r7 + r3));
    0x000020b4 ldr.w r3, [r8]                                |     r3 = *(r8);
    0x000020b8 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000020ba beq 0x2160                                    |         goto label_3;
                                                             |     }
    0x000020bc mov r2, r6                                    |     r2 = r6;
    0x000020be movs r1, 8                                    |     r1 = 8;
    0x000020c0 movw r0, 0x185                                |     r0 = 0x185;
    0x000020c4 blx 0x1648                                    |     r0 = fcn_00001648 ();
    0x000020c8 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000020ca bne 0x216c                                    |         goto label_4;
                                                             |     }
                                                             |     do {
    0x000020cc ldr r6, [pc, 0x100]                           |         
    0x000020ce mov r2, r4                                    |         r2 = r4;
    0x000020d0 mov r1, r5                                    |         r1 = r5;
    0x000020d2 add r6, pc                                    |         r6 = 0x42a6;
    0x000020d4 add.w sl, r6, 8                               |         sl = r6 + 8;
    0x000020d6 lsrs r0, r1, 8                                |         r0 = r1 >> 8;
    0x000020d8 mov r0, sl                                    |         r0 = sl;
    0x000020da bl 0x1ae8                                     |         fcn_00001ae8 (r0, r1, r2);
    0x000020de dmb ish                                       |         __asm ("dmb ish");
    0x000020e2 ldr r3, [pc, 0xf0]                            |         r3 = *(0x21d6);
    0x000020e4 ldr r2, [r7, r3]                              |         r2 = *((r7 + r3));
    0x000020e6 ldr r3, [r2]                                  |         r3 = *(r2);
    0x000020e8 eor r3, r3, 0x10000                           |         r3 ^= 0x10000;
    0x000020ec str r3, [r2]                                  |         *(r2) = r3;
    0x000020ee dmb ish                                       |         __asm ("dmb ish");
    0x000020f2 movs r1, 0                                    |         r1 = 0;
    0x000020f4 mov r0, r5                                    |         r0 = r5;
    0x000020f6 mov r2, r4                                    |         r2 = r4;
    0x000020f8 bl 0x1ae8                                     |         fcn_00001ae8 (r0, r1, r2);
    0x000020fc ldr r3, [r4]                                  |         r3 = *(r4);
    0x000020fe cmp r3, r4                                    |         
                                                             |         if (r3 != r4) {
    0x00002100 beq 0x2114                                    |             
    0x00002102 ldr r2, [r6, 8]                               |             r2 = *((r6 + 8));
    0x00002104 str.w sl, [r3, 4]                             |             __asm ("str.w sl, [r3, 4]");
    0x00002108 ldr r3, [r4, 4]                               |             r3 = var_0h_2;
    0x0000210a str r2, [r3]                                  |             *(r3) = r2;
    0x0000210c ldr r2, [r6, 8]                               |             r2 = *((r6 + 8));
    0x0000210e ldr r1, [r4]                                  |             r1 = *(r4);
    0x00002110 str r3, [r2, 4]                               |             *((r2 + 4)) = r3;
    0x00002112 str r1, [r6, 8]                               |             *((r6 + 8)) = r1;
                                                             |         }
    0x00002114 ldr.w r3, [r8]                                |         r3 = *(r8);
                                                             |         if (r3 == 0) {
    0x00002118 cbz r3, 0x2166                                |             goto label_5;
                                                             |         }
    0x0000211a movs r2, 0                                    |         r2 = 0;
    0x0000211c movs r1, 8                                    |         r1 = 8;
    0x0000211e movw r0, 0x185                                |         r0 = 0x185;
    0x00002122 blx 0x1648                                    |         r0 = fcn_00001648 ();
                                                             |         if (r0 != 0) {
    0x00002126 cbnz r0, 0x216c                               |             goto label_4;
                                                             |         }
                                                             | label_0:
    0x00002128 ldr r4, [pc, 0xac]                            |         
    0x0000212a add r4, pc                                    |         r4 = 0x4306;
    0x0000212c mov r0, r4                                    |         r0 = r4;
    0x0000212e bl 0x1a9c                                     |         fcn_00001a9c ();
    0x00002132 add.w r0, r4, 0x44                            |         r0 = r4 + 0x44;
    0x00002136 bl 0x1a9c                                     |         fcn_00001a9c ();
    0x0000213a movs r2, 0                                    |         r2 = 0;
    0x0000213c mov r1, sb                                    |         r1 = sb;
    0x0000213e movs r0, 2                                    |         r0 = 2;
    0x00002140 blx 0x16a0                                    |         r0 = fprintf_chk ()
                                                             |         if (r0 != 0) {
    0x00002144 cbnz r0, 0x2170                               |             goto label_6;
                                                             |         }
    0x00002146 ldr r2, [pc, 0x94]                            |         
    0x00002148 ldr r3, [pc, 0x70]                            |         r3 = *(0x21bc);
    0x0000214a add r2, pc                                    |         r2 = "[error] liburcu: rcu_barrier() called from within RCU read-side critical section.\n";
    0x0000214c ldr r3, [r2, r3]                              |         r3 = "[error] liburcu: rcu_barrier() called from within RCU read-side critical section.\n";
    0x0000214e ldr r2, [r3]                                  |         r2 = "[error] liburcu: rcu_barrier() called from within RCU read-side critical section.\n";
    0x00002150 ldr r3, [sp, 0x114]                           |         r3 = var_114h;
    0x00002152 eors r2, r3                                   |         r2 ^= r3;
    0x00002154 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00002158 bne 0x21b2                                    |             goto label_7;
                                                             |         }
    0x0000215a add sp, 0x118                                 |         
    0x0000215c pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_3:
    0x00002160 dmb ish                                       |         __asm ("dmb ish");
    0x00002164 b 0x20cc                                      |         
                                                             |     } while (1);
                                                             | label_5:
    0x00002166 dmb ish                                       |     __asm ("dmb ish");
    0x0000216a b 0x2128                                      |     goto label_0;
                                                             | label_4:
    0x0000216c bl 0x1be8                                     |     fcn_00001be8 ();
                                                             | label_6:
    0x00002170 ldr r3, [pc, 0x6c]                            |     
    0x00002172 mov.w r2, 0x15c                               |     r2 = 0x15c;
    0x00002176 ldr r1, [pc, 0x6c]                            |     
    0x00002178 ldr r0, [pc, 0x6c]                            |     
    0x0000217a add r3, pc                                    |     r3 = 0x435e;
    0x0000217c add r1, pc                                    |     r1 = 0x4366;
    0x0000217e adds r3, 0xb0                                 |     r3 += 0xb0;
    0x00002180 add r0, pc                                    |     r0 = 0x436c;
    0x00002182 blx 0x1754                                    |     fcn_00001754 ();
                                                             | label_2:
    0x00002186 ldr r3, [pc, 0x64]                            |     
    0x00002188 mov.w r2, 0x11a                               |     r2 = 0x11a;
    0x0000218c ldr r1, [pc, 0x60]                            |     
    0x0000218e ldr r0, [pc, 0x64]                            |     
    0x00002190 add r3, pc                                    |     r3 = 0x4382;
    0x00002192 add r1, pc                                    |     r1 = 0x4386;
    0x00002194 adds r3, 0xb0                                 |     r3 += 0xb0;
    0x00002196 add r0, pc                                    |     r0 = 0x4390;
    0x00002198 blx 0x1754                                    |     fcn_00001754 ();
                                                             | label_1:
    0x0000219c ldr r3, [pc, 0x58]                            |     
    0x0000219e mov.w r2, 0x118                               |     r2 = 0x118;
    0x000021a2 ldr r1, [pc, 0x58]                            |     
    0x000021a4 ldr r0, [pc, 0x58]                            |     
    0x000021a6 add r3, pc                                    |     r3 = 0x43a2;
    0x000021a8 add r1, pc                                    |     r1 = 0x43aa;
    0x000021aa adds r3, 0xb0                                 |     r3 += 0xb0;
    0x000021ac add r0, pc                                    |     r0 = 0x43b0;
    0x000021ae blx 0x1754                                    |     fcn_00001754 ();
                                                             | label_7:
    0x000021b2 blx 0x15b8                                    |     fcn_000015b8 ();
    0x000021b6 nop                                           |     
    0x000021b8 cmp r6, 0xa6                                  |     
    0x000021ba movs r1, r0                                   |     r1 = r0;
    0x000021bc lsls r4, r3, 3                                |     r4 = r3 << 3;
    0x000021be movs r0, r0                                   |     
    0x000021c0 cmp r6, 0x98                                  |     
    0x000021c2 movs r1, r0                                   |     r1 = r0;
    0x000021c4 adds r0, 0xe                                  |     r0 += 0xe;
    0x000021c6 movs r1, r0                                   |     r1 = r0;
    0x000021c8 cmp r7, 0xd8                                  |     
    0x000021ca movs r1, r0                                   |     r1 = r0;
    0x000021cc lsls r4, r5, 3                                |     r4 = r5 << 3;
    0x000021ce movs r0, r0                                   |     
    0x000021d0 cmp r7, 0xaa                                  |     
    0x000021d2 movs r1, r0                                   |     r1 = r0;
    0x000021d4 lsls r4, r6, 3                                |     r4 = r6 << 3;
    0x000021d6 movs r0, r0                                   |     
    0x000021d8 cmp r7, 0x76                                  |     
    0x000021da movs r1, r0                                   |     r1 = r0;
    0x000021dc cmp r5, 0xae                                  |     
    0x000021de movs r1, r0                                   |     r1 = r0;
    0x000021e0 movs r3, 0x76                                 |     r3 = 0x76;
    0x000021e2 movs r0, r0                                   |     
    0x000021e4 movs r0, 0xec                                 |     r0 = 0xec;
    0x000021e6 movs r0, r0                                   |     
    0x000021e8 movs r0, 0xa4                                 |     r0 = 0xa4;
    0x000021ea movs r0, r0                                   |     
    0x000021ec movs r3, 0x60                                 |     r3 = 0x60;
    0x000021ee movs r0, r0                                   |     
    0x000021f0 movs r0, 0xd6                                 |     r0 = 0xd6;
    0x000021f2 movs r0, r0                                   |     
    0x000021f4 movs r0, 0x8e                                 |     r0 = 0x8e;
    0x000021f6 movs r0, r0                                   |     
    0x000021f8 movs r3, 0x4a                                 |     r3 = 0x4a;
    0x000021fa movs r0, r0                                   |     
    0x000021fc movs r0, 0xc0                                 |     r0 = 0xc0;
    0x000021fe movs r0, r0                                   |     
    0x00002200 movs r0, 0x78                                 |     r0 = 0x78;
    0x00002202 movs r0, r0                                   |     
                                                             | }

[*] Function printf used 8 times liburcu-bp.so.8.0.0