[*] Binary protection state of liblttng-ust.so.1.0.0

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


[*] Function popen tear down of liblttng-ust.so.1.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/liblttng-ust.so.1.0.0 @ 0xf6c4 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000f6c4 ()                                          | uint32_t fcn_0000f6c4 (int16_t arg_248h, int16_t arg_348h, int16_t arg_3f8h, int16_t arg1, int16_t arg2, uint32_t arg3, int16_t arg4) {
                                                                     |     int32_t var_0h;
                                                                     |     int32_t var_0h_2;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_14h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_21bh;
                                                                     |     int16_t var_21ch;
                                                                     |     int16_t var_224h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
                                                                     |     r3 = arg4;
    0x0000f6c4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000f6c8 subs r2, r2, r3                                       |     r2 -= r3;
    0x0000f6ca ldr r5, [pc, 0x204]                                   |     
    0x0000f6cc cmp r2, 1                                             |     
    0x0000f6ce sub.w sp, sp, 0x224                                   |     
    0x0000f6d2 ldr r4, [pc, 0x200]                                   |     r4 = *(0xf8d6);
    0x0000f6d4 add r5, pc                                            |     r5 = 0x1efaa;
    0x0000f6d6 ldr r7, [pc, 0x200]                                   |     
    0x0000f6d8 ldr.w r8, [sp, 0x248]                                 |     r8 = *(arg_248h);
    0x0000f6dc ldr r4, [r5, r4]                                      |     
    0x0000f6de add r7, pc                                            |     r7 = 0x1efbc;
    0x0000f6e0 ldr r4, [r4]                                          |     r4 = *(0x1efaa);
    0x0000f6e2 str r4, [sp, 0x21c]                                   |     var_21ch = r4;
    0x0000f6e4 mov.w r4, 0                                           |     r4 = 0;
                                                                     |     if (r2 < 1) {
    0x0000f6e8 bls 0xf782                                            |         goto label_1;
                                                                     |     }
    0x0000f6ea add.w r4, r3, 0x2a                                    |     r4 = r3 + 0x2a;
    0x0000f6ee mov r6, r1                                            |     r6 = r1;
    0x0000f6f0 ldrb r5, [r1, r4]                                     |     r5 = *((r1 + r4));
    0x0000f6f2 adds r3, r1, r4                                       |     r3 = r1 + r4;
    0x0000f6f4 str r3, [sp, 0x14]                                    |     var_14h = r3;
    0x0000f6f6 cmp r5, 0x46                                          |     
                                                                     |     if (r5 == 0x46) {
    0x0000f6f8 beq 0xf796                                            |         goto label_7;
                                                                     |     }
                                                                     |     if (r5 < 0x46) {
    0x0000f6fa bls 0xf724                                            |         goto label_8;
                                                                     |     }
    0x0000f6fc subs r5, 0x52                                         |     r5 -= 0x52;
    0x0000f6fe cmp r5, 1                                             |     
    0x0000f700 it ls                                                 |     
                                                                     |     if (r5 > 1) {
    0x0000f702 movls r0, 0                                           |         r0 = 0;
                                                                     |     }
    0x0000f704 bhi 0xf76e                                            |     
                                                                     |     while (1) {
                                                                     | label_3:
    0x0000f706 ldr r2, [pc, 0x1d4]                                   |         
    0x0000f708 ldr r3, [pc, 0x1c8]                                   |         r3 = *(0xf8d4);
    0x0000f70a add r2, pc                                            |         r2 = 0x1efec;
    0x0000f70c ldr r3, [r2, r3]                                      |         r3 = *(0x1efec);
    0x0000f70e ldr r2, [r3]                                          |         r2 = *(0x1efec);
    0x0000f710 ldr r3, [sp, 0x21c]                                   |         r3 = var_21ch;
    0x0000f712 eors r2, r3                                           |         r2 ^= r3;
    0x0000f714 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000f718 bne.w 0xf8ca                                          |             goto label_9;
                                                                     |         }
    0x0000f71c add.w sp, sp, 0x224                                   |         
    0x0000f720 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_8:
    0x0000f724 cmp r5, 0x3b                                          |         
                                                                     |         if (r5 == 0x3b) {
    0x0000f726 bne 0xf76e                                            |             
                                                                     |             if (r0 == 0) {
    0x0000f728 cbz r0, 0xf782                                        |                 goto label_1;
                                                                     |             }
    0x0000f72a ldr r3, [r0, 0xc]                                     |             r3 = *(arg_248hxc);
    0x0000f72c ldr r7, [r3, 4]                                       |             r7 = *((r3 + 4));
                                                                     |             if (r7 == 0) {
    0x0000f72e cbz r7, 0xf782                                        |                 goto label_1;
                                                                     |             }
    0x0000f730 ldr.w sl, [r3, 8]                                     |             sl = *((r3 + 8));
    0x0000f734 cmp.w sl, 0                                           |             
                                                                     |             if (sl == 0) {
    0x0000f738 beq 0xf782                                            |                 goto label_1;
                                                                     |             }
    0x0000f73a mov.w sb, 0                                           |             sb = 0;
    0x0000f73e subs r7, 4                                            |             r7 -= 4;
    0x0000f740 mov fp, sb                                            |             
                                                                     | label_0:
    0x0000f742 ldr r5, [r7, 4]!                                      |             r5 = *((r7 += 4));
    0x0000f746 ldrb r2, [r5, 0xc]                                    |             r2 = *((r5 + 0xc));
    0x0000f748 lsls r3, r2, 0x1e                                     |             r3 = r2 << 0x1e;
                                                                     |             if (r3 < r2) {
    0x0000f74a bmi 0xf78c                                            |                 goto label_2;
                                                                     |             }
    0x0000f74c ldr r0, [r5, 4]                                       |             r0 = *((r5 + 4));
    0x0000f74e mov r1, r8                                            |             r1 = r8;
    0x0000f750 blx 0x64d0                                            |             r0 = fcn_000064d0 ();
    0x0000f754 cmp r0, 0                                             |             
                                                                     |             if (r0 == 0) {
    0x0000f756 beq.w 0xf868                                          |                 goto label_10;
                                                                     |             }
    0x0000f75a ldr r2, [r5, 8]                                       |             r2 = *((r5 + 8));
    0x0000f75c ldr r2, [r2]                                          |             r2 = *(r2);
    0x0000f75e cmp r2, 6                                             |             
                                                                     |             if (r2 > 6) {
    0x0000f760 bhi 0xf782                                            |                 goto label_1;
                                                                     |             }
                                                                     |             /* switch table (7 cases) at 0xf766 */
    0x0000f762 tbb [pc, r2]                                          |             __asm ("tbb aav.0x000000ff");
                                                                     |         }
    0x0000f76e ldr.w r8, [pc, 0x170]                                 |         r8 = *(0x0000f8e0);
    0x0000f772 add r8, pc                                            |         r8 += pc;
    0x0000f774 ldr.w r5, [r8]                                        |         r5 = *(r8);
    0x0000f778 cmp r5, 0                                             |         
                                                                     |         if (r5 == 0) {
    0x0000f77a beq.w 0xf8c0                                          |             goto label_11;
                                                                     |         }
                                                                     | label_6:
    0x0000f77e cmp r5, 2                                             |         
                                                                     |         if (r5 == 2) {
    0x0000f780 beq 0xf7d0                                            |             goto label_12;
                                                                     |         }
                                                                     | label_1:
    0x0000f782 invalid                                               |         
    0x0000f784 movs r5, r2                                           |         r5 = r2;
    0x0000f786 b 0xf706                                              |         
                                                                     |     }
    0x0000f788 add.w sb, sb, 8                                       |     sb += 8;
                                                                     | label_2:
    0x0000f78c add.w fp, fp, 1                                       |     
    0x0000f790 cmp sl, fp                                            |     
                                                                     |     if (sl != fp) {
    0x0000f792 bne 0xf742                                            |         goto label_0;
                                                                     |     }
    0x0000f794 b 0xf782                                              |     goto label_1;
                                                                     | label_7:
    0x0000f796 ldr r7, [r1, 0x18]                                    |     r7 = *((r1 + 0x18));
    0x0000f798 mov r1, r8                                            |     r1 = r8;
    0x0000f79a ldr r0, [r7]                                          |     r0 = *(r7);
    0x0000f79c bl 0x1b00c                                            |     r0 = fcn_0001b00c (r0, r1);
    0x0000f7a0 subs r3, r0, 0                                        |     r3 = r0 - 0;
                                                                     |     if (r3 < r0) {
    0x0000f7a2 blt 0xf828                                            |         goto label_13;
                                                                     |     }
                                                                     | label_4:
    0x0000f7a4 cmp.w r3, 0x10000                                     |     
                                                                     |     if (r3 >= 0x10000) {
    0x0000f7a8 bge 0xf782                                            |         goto label_1;
                                                                     |     }
    0x0000f7aa ldr r2, [r7]                                          |     r2 = *(r7);
    0x0000f7ac add.w r1, r3, r3, lsl 1                               |     r1 = r3 + (r3 << 1);
    0x0000f7b0 ldr r2, [r2]                                          |     r2 = *(r2);
    0x0000f7b2 ldr.w r2, [r2, r1, lsl 3]                             |     offset_0 = r1 << 3;
                                                                     |     r2 = *((r2 + offset_0));
    0x0000f7b6 ldr r1, [r2, 8]                                       |     r1 = *((r2 + 8));
    0x0000f7b8 ldr r2, [r1]                                          |     r2 = *(r1);
    0x0000f7ba cmp r2, 6                                             |     
                                                                     |     if (r2 > 6) {
    0x0000f7bc bhi 0xf782                                            |         goto label_1;
                                                                     |     }
                                                                     |     /* switch table (7 cases) at 0xf7c2 */
    0x0000f7be tbb [pc, r2]                                          |     __asm ("tbb aav.0x000000ff");
    0x0000f7ca add.w sb, sb, 4                                       |     sb += 4;
    0x0000f7ce b 0xf78c                                              |     goto label_2;
                                                                     | label_12:
    0x0000f7d0 blx 0x6908                                            |     r0 = fcn_00006908 ();
    0x0000f7d4 ldr.w sb, [r0]                                        |     sb = *(r0);
    0x0000f7d8 mov r8, r0                                            |     r8 = r0;
    0x0000f7da blx 0x6890                                            |     r0 = fcn_00006890 ();
    0x0000f7de mov sl, r0                                            |     sl = r0;
    0x0000f7e0 blx 0x6554                                            |     fcn_00006554 ();
    0x0000f7e4 ldr r2, [pc, 0xfc]                                    |     
    0x0000f7e6 mov.w r1, 0x200                                       |     r1 = 0x200;
    0x0000f7ea ldrb r3, [r6, r4]                                     |     r3 = *((r6 + r4));
    0x0000f7ec add r4, sp, 0x1c                                      |     r4 += var_1ch;
    0x0000f7ee add r2, pc                                            |     r2 = 0x1f0d6;
    0x0000f7f0 str r2, [sp, 8]                                       |     var_8h = r2;
    0x0000f7f2 ldr r2, [pc, 0xf4]                                    |     
    0x0000f7f4 strd r0, r3, [sp]                                     |     __asm ("strd r0, r3, [sp]");
    0x0000f7f8 mov r3, sl                                            |     r3 = sl;
    0x0000f7fa mov r0, r4                                            |     r0 = r4;
    0x0000f7fc add r2, pc                                            |     r2 = 0x1f0ea;
    0x0000f7fe bl 0x3e064                                            |     fcn_0003e064 (r0, r1, r2, r3);
    0x0000f802 movs r3, 0                                            |     r3 = 0;
    0x0000f804 mov r0, r4                                            |     r0 = r4;
    0x0000f806 strb.w r3, [sp, 0x21b]                                |     var_21bh = r3;
    0x0000f80a blx 0x68b4                                            |     fcn_000068b4 ();
    0x0000f80e mov r1, r4                                            |     r1 = r4;
    0x0000f810 mov r2, r0                                            |     r2 = r0;
    0x0000f812 mov r0, r5                                            |     r0 = r5;
    0x0000f814 bl 0x3d5e4                                            |     fcn_0003d5e4 (r0, r1, r2);
    0x0000f818 ldr r3, [pc, 0xd0]                                    |     r3 = *(0xf8ec);
    0x0000f81a str.w sb, [r8]                                        |     __asm ("str.w sb, [r8]");
    0x0000f81e ldr r3, [r7, r3]                                      |     r3 = *((r7 + r3));
    0x0000f820 ldr r0, [r3]                                          |     r0 = *(0xf8ec);
    0x0000f822 blx 0x6560                                            |     fcn_00006560 ();
    0x0000f826 b 0xf782                                              |     goto label_1;
                                                                     | label_13:
    0x0000f828 mov r0, r8                                            |     r0 = r8;
    0x0000f82a bl 0x3c168                                            |     r0 = fcn_0003c168 ();
                                                                     |     if (r0 == 0) {
    0x0000f82e cbz r0, 0xf84a                                        |         goto label_14;
                                                                     |     }
    0x0000f830 mov r1, r7                                            |     r1 = r7;
    0x0000f832 mov r0, r8                                            |     r0 = r8;
    0x0000f834 bl 0x19468                                            |     r0 = fcn_00019468 (r0, r1);
    0x0000f838 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000f83a bne.w 0xf706                                          |         goto label_3;
                                                                     |     }
    0x0000f83e ldr r0, [r7]                                          |     r0 = *(r7);
    0x0000f840 mov r1, r8                                            |     r1 = r8;
    0x0000f842 bl 0x1b00c                                            |     r0 = fcn_0001b00c (r0, r1);
    0x0000f846 subs r3, r0, 0                                        |     r3 = r0 - 0;
                                                                     |     if (r3 >= r0) {
    0x0000f848 bge 0xf7a4                                            |         goto label_4;
                                                                     |     }
                                                                     | label_14:
    0x0000f84a mvn r0, 1                                             |     r0 = ~1;
    0x0000f84e b 0xf706                                              |     goto label_3;
    0x0000f850 movs r5, 0x48                                         |     r5 = 0x48;
                                                                     | label_5:
    0x0000f852 ldr r2, [sp, 0x14]                                    |     r2 = var_14h;
    0x0000f854 movs r0, 0                                            |     r0 = 0;
    0x0000f856 strb r5, [r6, r4]                                     |     *((r6 + r4)) = r5;
    0x0000f858 strh.w r3, [r2, 1]                                    |     *((r2 + 1)) = r3;
    0x0000f85c b 0xf706                                              |     goto label_3;
    0x0000f85e ldr r2, [r1, 0x14]                                    |     r2 = *((r1 + 0x14));
    0x0000f860 cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000f862 beq 0xf782                                            |         goto label_1;
                                                                     |     }
    0x0000f864 movs r5, 0x47                                         |     r5 = 0x47;
    0x0000f866 b 0xf852                                              |     goto label_5;
                                                                     | label_10:
    0x0000f868 cmp.w sb, 0x10000                                     |     
                                                                     |     if (sb >= 0x10000) {
    0x0000f86c bhs 0xf782                                            |         goto label_1;
                                                                     |     }
    0x0000f86e ldr r1, [r5, 8]                                       |     r1 = *((r5 + 8));
    0x0000f870 ldr r2, [r1]                                          |     r2 = *(r1);
    0x0000f872 cmp r2, 6                                             |     
                                                                     |     if (r2 > 6) {
    0x0000f874 bhi 0xf782                                            |         goto label_1;
                                                                     |     }
    0x0000f876 adr r5, 8                                             |     r5 = 8;
    0x0000f878 ldr.w r2, [r5, r2, lsl 2]                             |     offset_1 = r2 << 2;
                                                                     |     r2 = *((r5 + offset_1));
    0x0000f87c add r5, r2                                            |     r5 += r2;
                                                                     |     /* switch table (7 cases) at 0xf880 */
    0x0000f87e bx r5                                                 |     return uint32_t (*r5)() ();
    0x0000f89c movs r5, 0x49                                         |     r5 = 0x49;
    0x0000f89e b 0xf852                                              |     goto label_5;
                                                                     | label_11:
    0x0000f8c0 bl 0x3d3f0                                            |     fcn_0003d3f0 ();
    0x0000f8c4 ldr.w r5, [r8]                                        |     r5 = *(r8);
    0x0000f8c8 b 0xf77e                                              |     goto label_6;
                                                                     | label_9:
    0x0000f8ca blx 0x66b4                                            |     fcn_000066b4 ();
    0x0000f8ce nop                                                   |     
    0x0000f8d0 str r6, [sp, 0x20]                                    |     var_20h = r6;
    0x0000f8d2 movs r5, r0                                           |     r5 = r0;
    0x0000f8d4 lsls r0, r3, 0xa                                      |     r0 = r3 << 0xa;
    0x0000f8d6 movs r0, r0                                           |     
    0x0000f8d8 str r5, [sp, 0x3f8]                                   |     *(arg_3f8h) = r5;
    0x0000f8da movs r5, r0                                           |     r5 = r0;
    0x0000f8dc str r5, [sp, 0x348]                                   |     *(arg_348h) = r5;
    0x0000f8de movs r5, r0                                           |     r5 = r0;
    0x0000f8e0 cmp r4, 0xe2                                          |     
    0x0000f8e2 movs r6, r0                                           |     r6 = r0;
    0x0000f8e4 ldr r6, [r2, 0x64]                                    |     r6 = *((r2 + 0x64));
    0x0000f8e6 movs r3, r0                                           |     r3 = r0;
    0x0000f8e8 ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000f8ea movs r3, r0                                           |     r3 = r0;
    0x0000f8ec lsls r0, r6, 0xa                                      |     r0 = r6 << 0xa;
    0x0000f8ee movs r0, r0                                           |     
    0x0000f8f0 cmp r0, 0x63                                          |     
                                                                     |     if (r0 <= 0x63) {
    0x0000f8f2 bhi 0xf8fe                                            |         
    0x0000f8f4 ldr r3, [pc, 0xc]                                     |         
    0x0000f8f6 add r3, pc                                            |         r3 = 0x1f1fe;
    0x0000f8f8 ldr.w r0, [r3, r0, lsl 2]                             |         r0 = *(0x1f1fe);
    0x0000f8fc bx lr                                                 |         return r0;
                                                                     |     }
    0x0000f8fe ldr r0, [pc, 8]                                       |     
    0x0000f900 add r0, pc                                            |     r0 = 0x1f20e;
    0x0000f902 bx lr                                                 |     return 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/liblttng-ust.so.1.0.0 @ 0x254c8 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000254c8 ()                                      | void fcn_000254c8 (int16_t arg_1h) {
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_54h;
    0x000254c8 ldr r1, [pc, 0x10]                                |     
    0x000254ca movs r2, 0x25                                     |     r2 = 0x25;
    0x000254cc ldr r0, [pc, 0x10]                                |     
    0x000254ce push {r3, lr}                                     |     
    0x000254d0 ldr r3, [pc, 0x10]                                |     
    0x000254d2 add r1, pc                                        |     r1 = 0x4a9b2;
    0x000254d4 add r0, pc                                        |     r0 = 0x4a9b8;
    0x000254d6 add r3, pc                                        |     r3 = 0x4a9be;
    0x000254d8 blx 0x6b98                                        |     fcn_00006b98 ();
                                                                 |     if (r6 != 0) {
    0x000254dc cbz r6, 0x2553c                                   |         
    0x000254de movs r2, r0                                       |         r2 = r0;
                                                                 |         if (r0 == 0) {
    0x000254e0 cbz r0, 0x25550                                   |             goto label_6;
                                                                 |         }
    0x000254e2 movs r2, r0                                       |         r2 = r0;
    0x000254e4 invalid                                           |         
                                                                 |     }
    0x0002553c lsls r3, r0, 0xd                                  |     r3 = r0 << 0xd;
    0x0002553e ldr r1, [r4, 0x28]                                |     r1 = *((r4 + 0x28));
    0x00025540 add.w r2, r2, r3, lsl 4                           |     r2 += (r3 << 4);
    0x00025544 add.w r0, r1, 0x240                               |     r0 = r1 + 0x240;
    0x00025548 ldr r3, [r2, 0x20]                                |     r3 = *((r2 + 0x20));
    0x0002554a cmp r0, r3                                        |     
                                                                 |     if (r0 > r3) {
    0x0002554c bhi.w 0x258ae                                     |         goto label_7;
                                                                 |     }
                                                                 | label_6:
    0x00025550 ldr r3, [r2, 0x1c]                                |     r3 = *((r2 + 0x1c));
    0x00025552 add r3, r1                                        |     r3 += r1;
    0x00025554 ldr r3, [r3, 0x54]                                |     r3 = *((r3 + 0x54));
    0x00025556 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00025558 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x0002555a beq.w 0x25778                                     |         goto label_8;
                                                                 |     }
    0x0002555e ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x00025560 add.w fp, r0, 1                                   |     
                                                                 | label_1:
    0x00025564 movs r0, 0x1e                                     |     r0 = 0x1e;
    0x00025566 blx 0x66d8                                        |     r0 = fcn_000066d8 ();
    0x0002556a subs r7, r0, 0                                    |     r7 = r0 - 0;
                                                                 |     if (r7 <= r0) {
    0x0002556c ble.w 0x25758                                     |         goto label_2;
                                                                 |     }
    0x00025570 movs r1, 4                                        |     r1 = 4;
    0x00025572 mov r0, sb                                        |     r0 = sb;
    0x00025574 add.w r8, sp, 0x2c                                |     r8 += var_2ch;
    0x00025578 bl 0x2c474                                        |     fcn_0002c474 (r0, r1, r2);
    0x0002557c lsl.w r2, fp, 3                                   |     r2 = fp << 3;
    0x00025580 mov r1, sb                                        |     r1 = sb;
    0x00025582 mov r0, r8                                        |     r0 = r8;
    0x00025584 bl 0x2c410                                        |     r0 = fcn_0002c410 (r0, r1, r2);
    0x00025588 ldm.w r8, {r0, r1}                                |     r0 = *(r8);
                                                                 |     r1 = *((r8 + 4));
    0x0002558c add.w r3, r4, 0x14                                |     r3 = r4 + 0x14;
    0x0002558e lsls r4, r2, 0xc                                  |     r4 = r2 << 0xc;
    0x00025590 stm.w r3, {r0, r1}                                |     *(r3) = r0;
                                                                 |     *((r3 + 4)) = r1;
    0x00025594 ldr r2, [r6]                                      |     r2 = *(r6);
    0x00025596 ldr r3, [r4, 0x14]                                |     r3 = *((r4 + 0x14));
    0x00025598 stm.w r5, {r0, r1}                                |     *(r5) = r0;
                                                                 |     *((r5 + 4)) = r1;
    0x0002559c ldr r1, [r2, 4]                                   |     r1 = *((r2 + 4));
    0x0002559e cmp r3, r1                                        |     
                                                                 |     if (r3 >= r1) {
    0x000255a0 bhs.w 0x25758                                     |         goto label_2;
                                                                 |     }
    0x000255a4 add.w r3, r3, r3, lsl 1                           |     r3 += (r3 << 1);
    0x000255a8 add.w r2, r2, r3, lsl 4                           |     r2 += (r3 << 4);
    0x000255ac ldr r3, [r4, 0x18]                                |     r3 = *((r4 + 0x18));
    0x000255ae ldr r1, [r2, 0x20]                                |     r1 = *((r2 + 0x20));
    0x000255b0 add.w r0, r3, 8                                   |     r0 = r3 + 8;
    0x000255b4 cmp r0, r1                                        |     
                                                                 |     if (r0 > r1) {
    0x000255b6 bhi.w 0x25758                                     |         goto label_2;
                                                                 |     }
    0x000255ba ldr r2, [r2, 0x1c]                                |     r2 = *((r2 + 0x1c));
    0x000255bc cmn r2, r3                                        |     
                                                                 |     if (r2 == r3) {
    0x000255be beq.w 0x25758                                     |         goto label_2;
                                                                 |     }
    0x000255c2 mov r1, r7                                        |     r1 = r7;
    0x000255c4 mov r0, sb                                        |     r0 = sb;
    0x000255c6 bl 0x2c474                                        |     fcn_0002c474 (r0, r1, r2);
    0x000255ca ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000255cc add r7, sp, 0x34                                  |     r7 += var_34h;
    0x000255ce mov r1, sb                                        |     r1 = sb;
    0x000255d0 mov r0, r7                                        |     r0 = r7;
    0x000255d2 mul r2, fp, r3                                    |     r2 = fp * r3;
    0x000255d6 bl 0x2c410                                        |     r0 = fcn_0002c410 (r0, r1, r2);
    0x000255da ldm.w r7, {r0, r1}                                |     r0 = *(r7);
                                                                 |     r1 = *((r7 + 4));
    0x000255de add.w r3, r4, 0x1c                                |     r3 = r4 + 0x1c;
    0x000255e2 stm.w r3, {r0, r1}                                |     *(r3) = r0;
                                                                 |     *((r3 + 4)) = r1;
    0x000255e6 ldr r2, [r6]                                      |     r2 = *(r6);
    0x000255e8 ldr r3, [r4, 0x1c]                                |     r3 = *((r4 + 0x1c));
    0x000255ea stm.w r5, {r0, r1}                                |     *(r5) = r0;
                                                                 |     *((r5 + 4)) = r1;
    0x000255ee ldr r1, [r2, 4]                                   |     r1 = *((r2 + 4));
    0x000255f0 cmp r3, r1                                        |     
                                                                 |     if (r3 >= r1) {
    0x000255f2 bhs.w 0x25758                                     |         goto label_2;
                                                                 |     }
    0x000255f4 strh r1, [r6, 4]                                  |     *((r6 + 4)) = r1;
    0x000255f6 add.w r3, r3, r3, lsl 1                           |     r3 += (r3 << 1);
    0x000255fa add.w r2, r2, r3, lsl 4                           |     r2 += (r3 << 4);
    0x000255fe ldr r3, [r4, 0x20]                                |     r3 = *((r4 + 0x20));
    0x00025600 ldr r1, [r2, 0x20]                                |     r1 = *((r2 + 0x20));
    0x00025602 adds r0, r3, 1                                    |     r0 = r3 + 1;
    0x00025604 cmp r0, r1                                        |     
                                                                 |     if (r0 > r1) {
    0x00025606 bhi.w 0x25758                                     |         goto label_2;
                                                                 |     }
    0x0002560a ldr r2, [r2, 0x1c]                                |     r2 = *((r2 + 0x1c));
    0x0002560c cmn r2, r3                                        |     
                                                                 |     if (r2 == r3) {
    0x0002560e beq.w 0x25758                                     |         goto label_2;
                                                                 |     }
    0x00025612 cmp.w fp, 0                                       |     
                                                                 |     if (fp == 0) {
    0x00025616 beq 0x256c4                                       |         goto label_9;
                                                                 |     }
    0x00025618 mov.w r8, 0                                       |     r8 = 0;
    0x0002561c add.w sl, sp, 0x3c                                |     sl += var_3ch;
    0x00025620 str.w fp, [sp, 4]                                 |     __asm ("str.w fp, [var_4h]");
                                                                 |     do {
    0x00025624 movs r1, 4                                        |         r1 = 4;
    0x00025626 mov r0, sb                                        |         r0 = sb;
    0x00025628 bl 0x2c474                                        |         fcn_0002c474 (r0, r1, r2);
    0x0002562c ldr r2, [r6]                                      |         r2 = *(r6);
    0x0002562e ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x00025630 ldr r1, [r2, 4]                                   |         r1 = *((r2 + 4));
    0x00025632 cmp r3, r1                                        |         
                                                                 |         if (r3 >= r1) {
    0x00025634 bhs.w 0x25894                                     |             goto label_10;
                                                                 |         }
    0x00025638 add.w r3, r3, r3, lsl 1                           |         r3 += (r3 << 1);
    0x0002563c lsl.w r7, r8, 3                                   |         r7 = r8 << 3;
    0x00025640 add.w r2, r2, r3, lsl 4                           |         r2 += (r3 << 4);
    0x00025644 ldr r3, [r4, 0x18]                                |         r3 = *((r4 + 0x18));
    0x00025646 ldr r1, [r2, 0x20]                                |         r1 = *((r2 + 0x20));
    0x00025648 add r3, r7                                        |         r3 += r7;
    0x0002564a add.w r0, r3, 8                                   |         r0 = r3 + 8;
    0x0002564e cmp r0, r1                                        |         
                                                                 |         if (r0 > r1) {
    0x00025650 bhi.w 0x25894                                     |             goto label_10;
                                                                 |         }
    0x00025652 strh r0, [r4, 8]                                  |         *((r4 + 8)) = r0;
    0x00025654 ldr r2, [r2, 0x1c]                                |         r2 = *((r2 + 0x1c));
    0x00025656 mov r1, sb                                        |         r1 = sb;
    0x00025658 mov r0, sl                                        |         r0 = sl;
    0x0002565a add.w fp, r2, r3                                  |         
    0x0002565e movs r2, 0x28                                     |         r2 = 0x28;
    0x00025660 bl 0x2c410                                        |         r0 = fcn_0002c410 (r0, r1, r2);
    0x00025664 ldm.w sl, {r0, r1}                                |         r0 = *(sl);
                                                                 |         r1 = *((sl + 4));
    0x00025668 stm.w fp, {r0, r1}                                |         *(fp) = r0;
                                                                 |         *((fp + 4)) = r1;
    0x0002566c ldr r3, [r6]                                      |         r3 = *(r6);
    0x0002566e ldr r2, [r4, 0x14]                                |         r2 = *((r4 + 0x14));
    0x00025670 stm.w r5, {r0, r1}                                |         *(r5) = r0;
                                                                 |         *((r5 + 4)) = r1;
    0x00025674 ldr r0, [r3, 4]                                   |         r0 = *((r3 + 4));
    0x00025676 cmp r2, r0                                        |         
                                                                 |         if (r2 >= r0) {
    0x00025678 bhs.w 0x258b4                                     |             goto label_11;
                                                                 |         }
    0x0002567c add.w r2, r2, r2, lsl 1                           |         r2 += (r2 << 1);
    0x00025680 ldr r1, [r4, 0x18]                                |         r1 = *((r4 + 0x18));
    0x00025682 add.w r2, r3, r2, lsl 4                           |         r2 = r3 + (r2 << 4);
    0x00025686 add r7, r1                                        |         r7 += r1;
    0x00025688 ldr r1, [r2, 0x20]                                |         r1 = *((r2 + 0x20));
    0x0002568a add.w ip, r7, 8                                   |         
    0x0002568e cmp ip, r1                                        |         
                                                                 |         if (ip > r1) {
    0x00025690 bhi.w 0x258b4                                     |             goto label_11;
                                                                 |         }
    0x00025694 ldr r1, [r2, 0x1c]                                |         r1 = *((r2 + 0x1c));
    0x00025696 ldr r2, [r1, r7]                                  |         r2 = *((r1 + r7));
    0x00025698 add r1, r7                                        |         r1 += r7;
    0x0002569a cmp r2, r0                                        |         
                                                                 |         if (r2 >= r0) {
    0x0002569c bhs 0x25758                                       |             goto label_2;
                                                                 |         }
    0x0002569e add.w r2, r2, r2, lsl 1                           |         r2 += (r2 << 1);
    0x000256a2 add.w r3, r3, r2, lsl 4                           |         r3 += (r2 << 4);
    0x000256a6 ldr r2, [r1, 4]                                   |         r2 = *((r1 + 4));
    0x000256a8 ldr r1, [r3, 0x20]                                |         r1 = *((r3 + 0x20));
    0x000256aa add.w r0, r2, 0x28                                |         r0 = r2 + 0x28;
    0x000256ae cmp r0, r1                                        |         
                                                                 |         if (r0 > r1) {
    0x000256b0 bhi 0x25758                                       |             goto label_2;
                                                                 |         }
    0x000256b2 ldr r3, [r3, 0x1c]                                |         r3 = *((r3 + 0x1c));
    0x000256b4 cmn r3, r2                                        |         
                                                                 |         if (r3 == r2) {
    0x000256b6 beq 0x25758                                       |             goto label_2;
                                                                 |         }
    0x000256b8 ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x000256ba add.w r8, r8, 1                                   |         r8++;
    0x000256be cmp r3, r8                                        |         
    0x000256c0 bne 0x25624                                       |         
                                                                 |     } while (r3 != r8);
    0x000256c2 mov fp, r3                                        |     
                                                                 | label_9:
    0x000256c4 movs r1, 4                                        |     r1 = 4;
    0x000256c6 mov r0, sb                                        |     r0 = sb;
    0x000256c8 bl 0x2c474                                        |     fcn_0002c474 (r0, r1, r2);
    0x000256cc ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x000256ce add r7, sp, 0x44                                  |     r7 += var_44h;
    0x000256d0 mov r1, sb                                        |     r1 = sb;
    0x000256d2 mov r0, r7                                        |     r0 = r7;
    0x000256d4 lsls r2, r3, 2                                    |     r2 = r3 << 2;
    0x000256d6 bl 0x2c410                                        |     r0 = fcn_0002c410 (r0, r1, r2);
    0x000256da ldm.w r7, {r0, r1}                                |     r0 = *(r7);
                                                                 |     r1 = *((r7 + 4));
    0x000256de stm.w r4, {r0, r1}                                |     *(r4) = r0;
                                                                 |     *((r4 + 4)) = r1;
    0x000256e2 ldr r3, [r6]                                      |     r3 = *(r6);
    0x000256e4 stm.w r5, {r0, r1}                                |     *(r5) = r0;
                                                                 |     *((r5 + 4)) = r1;
    0x000256e8 ldr r0, [r4]                                      |     r0 = *(r4);
    0x000256ea ldr r2, [r3, 4]                                   |     r2 = *((r3 + 4));
    0x000256ec cmp r0, r2                                        |     
                                                                 |     if (r0 >= r2) {
    0x000256ee bhs 0x25758                                       |         goto label_2;
                                                                 |     }
    0x000256f0 add.w r0, r0, r0, lsl 1                           |     r0 += (r0 << 1);
    0x000256f4 ldr r7, [r4, 4]                                   |     r7 = *((r4 + 4));
    0x000256f6 add.w r0, r3, r0, lsl 4                           |     r0 = r3 + (r0 << 4);
    0x000256fa add.w ip, r7, 4                                   |     
    0x000256fe ldr r1, [r0, 0x20]                                |     r1 = *((r0 + 0x20));
    0x00025700 cmp ip, r1                                        |     
                                                                 |     if (ip > r1) {
    0x00025702 bhi 0x25758                                       |         goto label_2;
                                                                 |     }
    0x00025704 ldr r1, [r0, 0x1c]                                |     r1 = *((r0 + 0x1c));
    0x00025706 cmn r1, r7                                        |     
                                                                 |     if (r1 == r7) {
    0x00025708 beq 0x25758                                       |         goto label_2;
                                                                 |     }
    0x0002570a ldr r7, [sp, 8]                                   |     r7 = var_8h;
    0x0002570c cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x0002570e beq 0x2577e                                       |         goto label_12;
                                                                 |     }
    0x00025710 ldr.w ip, [sp, 0x10]                              |     ip = var_10h;
    0x00025714 movs r0, 0                                        |     r0 = 0;
    0x00025716 b 0x25728                                         |     
                                                                 |     while (r2 == 0) {
    0x00025718 orr r2, r0, 0x10000                               |         r2 = r0 | 0x10000;
                                                                 | label_0:
    0x0002571c adds r0, 1                                        |         r0++;
    0x0002571e str r2, [r1, r3]                                  |         *((r1 + r3)) = r2;
    0x00025720 cmp r7, r0                                        |         
                                                                 |         if (r7 == r0) {
    0x00025722 beq 0x2577e                                       |             goto label_12;
                                                                 |         }
    0x00025724 ldr r3, [r6]                                      |         r3 = *(r6);
    0x00025726 ldr r2, [r3, 4]                                   |         r2 = *((r3 + 4));
    0x00025728 ldr r1, [r4]                                      |         r1 = *(r4);
    0x0002572a cmp r2, r1                                        |         
                                                                 |         if (r2 < r1) {
    0x0002572c bls 0x25758                                       |             goto label_2;
                                                                 |         }
    0x0002572e add.w r1, r1, r1, lsl 1                           |         r1 += (r1 << 1);
    0x00025732 add.w r1, r3, r1, lsl 4                           |         r1 = r3 + (r1 << 4);
    0x00025736 ldr r3, [r4, 4]                                   |         r3 = *((r4 + 4));
    0x00025738 ldr r2, [r1, 0x20]                                |         r2 = *((r1 + 0x20));
    0x0002573a add.w r3, r3, r0, lsl 2                           |         r3 += (r0 << 2);
    0x0002573e add.w lr, r3, 4                                   |         lr = r3 + 4;
    0x00025742 cmp lr, r2                                        |         
                                                                 |         if (lr > r2) {
    0x00025744 bhi 0x25758                                       |             goto label_2;
                                                                 |         }
    0x00025746 ldr r1, [r1, 0x1c]                                |         r1 = *((r1 + 0x1c));
    0x00025748 cmn r1, r3                                        |         
                                                                 |         if (r1 == r3) {
    0x0002574a beq 0x25758                                       |             goto label_2;
                                                                 |         }
    0x0002574c ldr.w r2, [ip, 0x38]                              |         r2 = *((ip + 0x38));
    0x00025750 cmp r2, 0                                         |         
    0x00025752 beq 0x25718                                       |         
                                                                 |     }
    0x00025754 mov r2, r0                                        |     r2 = r0;
    0x00025756 b 0x2571c                                         |     goto label_0;
                                                                 |     do {
                                                                 | label_2:
    0x00025758 mvn r0, 0xb                                       |         r0 = ~0xb;
                                                                 | label_5:
    0x0002575c ldr r2, [pc, 0x164]                               |         
    0x0002575e ldr r3, [pc, 0x160]                               |         r3 = *(0x258c2);
    0x00025760 add r2, pc                                        |         r2 = 0x4b028;
    0x00025762 ldr r3, [r2, r3]                                  |         r3 = *(0x4b028);
    0x00025764 ldr r2, [r3]                                      |         r2 = *(0x4b028);
    0x00025766 ldr r3, [sp, 0x54]                                |         r3 = var_54h;
    0x00025768 eors r2, r3                                       |         r2 ^= r3;
    0x0002576a mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0002576e bne.w 0x25890                                     |             goto label_13;
                                                                 |         }
    0x00025772 add sp, 0x5c                                      |         
    0x00025774 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_8:
    0x00025778 ldr.w fp, [sp, 8]                                 |         fp = var_8h;
    0x0002577c b 0x25564                                         |         goto label_1;
                                                                 | label_12:
    0x0002577e ldr r2, [sp, 0x14]                                |         r2 = var_14h;
    0x00025780 ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x00025782 ldr r3, [r3, 0x38]                                |         r3 = *((r3 + 0x38));
    0x00025784 cmp r2, 0                                         |         
                                                                 |         if (r2 == 0) {
    0x00025786 beq 0x25882                                       |             goto label_14;
                                                                 |         }
    0x00025788 add.w r2, fp, -1                                  |         r2 = fp + -1;
                                                                 |         if (r3 == 0) {
    0x0002578c cbnz r3, 0x25792                                  |             
    0x0002578e orr r2, r2, 0x10000                               |             r2 |= 0x10000;
                                                                 |         }
                                                                 | label_4:
    0x00025792 movs r1, 8                                        |         r1 = 8;
    0x00025794 mov r0, sb                                        |         r0 = sb;
    0x00025796 str r2, [r4, 8]                                   |         *((r4 + 8)) = r2;
    0x00025798 bl 0x2c474                                        |         fcn_0002c474 (r0, r1, r2);
    0x0002579c ldr r3, [sp, 8]                                   |         r3 = var_8h;
    0x0002579e mov r0, r5                                        |         r0 = r5;
    0x000257a0 mov r1, sb                                        |         r1 = sb;
    0x000257a2 lsls r2, r3, 3                                    |         r2 = r3 << 3;
    0x000257a4 bl 0x2c410                                        |         r0 = fcn_0002c410 (r0, r1, r2);
    0x000257a8 ldm.w r5, {r0, r1}                                |         r0 = *(r5);
                                                                 |         r1 = *((r5 + 4));
    0x000257ac add.w r3, r4, 0xc                                 |         r3 = r4 + 0xc;
    0x000257b0 add r5, sp, 0x24                                  |         r5 += var_24h;
    0x000257b2 stm.w r3, {r0, r1}                                |         *(r3) = r0;
                                                                 |         *((r3 + 4)) = r1;
    0x000257b6 ldr r3, [r6]                                      |         r3 = *(r6);
    0x000257b8 ldr r2, [r4, 0xc]                                 |         r2 = *((r4 + 0xc));
    0x000257ba stm.w r5, {r0, r1}                                |         *(r5) = r0;
                                                                 |         *((r5 + 4)) = r1;
    0x000257be ldr.w lr, [r3, 4]                                 |         
    0x000257c2 cmp r2, lr                                        |         
    0x000257c4 bhs 0x25758                                       |         
                                                                 |     } while (r2 >= lr);
    0x000257c6 add.w r2, r2, r2, lsl 1                           |     r2 += (r2 << 1);
    0x000257ca ldr r0, [r4, 0x10]                                |     r0 = *((r4 + 0x10));
    0x000257cc add.w r1, r3, r2, lsl 4                           |     r1 = r3 + (r2 << 4);
    0x000257d0 add.w r7, r0, 8                                   |     r7 = r0 + 8;
    0x000257d4 ldr r2, [r1, 0x20]                                |     r2 = *((r1 + 0x20));
    0x000257d6 cmp r7, r2                                        |     
                                                                 |     if (r7 > r2) {
    0x000257d8 bhi 0x25758                                       |         goto label_2;
                                                                 |     }
    0x000257da ldr r2, [r1, 0x1c]                                |     r2 = *((r1 + 0x1c));
    0x000257dc cmn r2, r0                                        |     
                                                                 |     if (r2 == r0) {
    0x000257de beq 0x25758                                       |         goto label_2;
                                                                 |     }
    0x000257e0 cmp.w fp, 0                                       |     
                                                                 |     if (fp == 0) {
    0x000257e4 beq 0x2588c                                       |         goto label_15;
                                                                 |     }
    0x000257e6 ldr.w sb, [sp, 0x10]                              |     sb = var_10h;
    0x000257ea mov.w ip, 0                                       |     
    0x000257ee add.w sl, sp, 0x1c                                |     sl += var_1ch;
    0x000257f2 mov r7, ip                                        |     r7 = ip;
    0x000257f4 str.w ip, [sp, 4]                                 |     __asm ("str.w ip, [var_4h]");
                                                                 | label_3:
    0x000257f8 ldr r2, [r4, 0x1c]                                |     r2 = *((r4 + 0x1c));
    0x000257fa str r2, [sp, 0x1c]                                |     var_1ch = r2;
    0x000257fc ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x000257fe str r2, [sp, 0x20]                                |     var_20h = r2;
    0x00025800 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x00025802 add r2, ip                                        |     r2 += ip;
    0x00025804 str r2, [sp, 0x20]                                |     var_20h = r2;
    0x00025806 ldr r2, [r4, 0x14]                                |     r2 = *((r4 + 0x14));
    0x00025808 cmp lr, r2                                        |     
                                                                 |     if (lr < r2) {
    0x0002580a bls 0x25758                                       |         goto label_2;
                                                                 |     }
    0x0002580c ldr r1, [r4, 0x18]                                |     r1 = *((r4 + 0x18));
    0x0002580e add.w r2, r2, r2, lsl 1                           |     r2 += (r2 << 1);
    0x00025812 add.w r2, r3, r2, lsl 4                           |     r2 = r3 + (r2 << 4);
    0x00025816 add.w r1, r1, r7, lsl 3                           |     r1 += (r7 << 3);
    0x0002581a ldr r0, [r2, 0x20]                                |     r0 = *((r2 + 0x20));
    0x0002581c add.w r8, r1, 8                                   |     r8 = r1 + 8;
    0x00025820 cmp r8, r0                                        |     
                                                                 |     if (r8 > r0) {
    0x00025822 bhi 0x25758                                       |         goto label_2;
                                                                 |     }
    0x00025824 ldr r2, [r2, 0x1c]                                |     r2 = *((r2 + 0x1c));
    0x00025826 adds r0, r2, r1                                   |     r0 = r2 + r1;
                                                                 |     if (r0 == r2) {
    0x00025828 beq 0x25758                                       |         goto label_2;
                                                                 |     }
    0x0002582a ldr r2, [r2, r1]                                  |     r2 = *((r2 + r1));
    0x0002582c cmp lr, r2                                        |     
                                                                 |     if (lr < r2) {
    0x0002582e bls 0x25758                                       |         goto label_2;
                                                                 |     }
    0x00025830 add.w r2, r2, r2, lsl 1                           |     r2 += (r2 << 1);
    0x00025834 add.w r3, r3, r2, lsl 4                           |     r3 += (r2 << 4);
    0x00025838 ldr r2, [r0, 4]                                   |     r2 = *((r0 + 4));
    0x0002583a ldr r1, [r3, 0x20]                                |     r1 = *((r3 + 0x20));
    0x0002583c add.w r0, r2, 0x28                                |     r0 = r2 + 0x28;
    0x00025840 cmp r0, r1                                        |     
                                                                 |     if (r0 > r1) {
    0x00025842 bhi 0x25758                                       |         goto label_2;
                                                                 |     }
    0x00025844 ldr.w lr, [r3, 0x1c]                              |     
    0x00025848 adds.w r3, lr, r2                                 |     r3 = lr + r2;
                                                                 |     if (r3 == lr) {
    0x0002584c beq 0x25758                                       |         goto label_2;
                                                                 |     }
    0x0002584e ldm.w sl, {r0, r1}                                |     r0 = *(sl);
                                                                 |     r1 = *((sl + 4));
    0x00025852 adds r3, 0x10                                     |     r3 += 0x10;
    0x00025854 stm.w r3, {r0, r1}                                |     *(r3) = r0;
                                                                 |     *((r3 + 4)) = r1;
    0x00025858 ldr.w r3, [sb, 0x3c]                              |     r3 = *((sb + 0x3c));
    0x0002585c stm.w r5, {r0, r1}                                |     *(r5) = r0;
                                                                 |     *((r5 + 4)) = r1;
    0x00025860 cmp r3, 1                                         |     
                                                                 |     if (r3 == 1) {
    0x00025862 bne 0x25870                                       |         
    0x00025864 ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x00025866 str.w r3, [lr, r2]                                |         __asm ("str.w r3, [lr, r2]");
    0x0002586a ldr r2, [sp, 0xc]                                 |         r2 = var_ch;
    0x0002586c add r3, r2                                        |         r3 += r2;
    0x0002586e str r3, [sp, 4]                                   |         var_4h = r3;
                                                                 |     }
    0x00025870 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00025872 adds r7, 1                                        |     r7++;
    0x00025874 cmp fp, r7                                        |     
    0x00025876 add ip, r3                                        |     
                                                                 |     if (fp != r7) {
    0x00025878 beq 0x2588c                                       |         
    0x0002587a ldr r3, [r6]                                      |         r3 = *(r6);
    0x0002587c ldr.w lr, [r3, 4]                                 |         
    0x00025880 b 0x257f8                                         |         goto label_3;
                                                                 | label_14:
    0x00025882 clz r3, r3                                        |         r3 &= r3;
    0x00025886 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00025888 lsls r2, r3, 0x10                                 |         r2 = r3 << 0x10;
    0x0002588a b 0x25792                                         |         goto label_4;
                                                                 |     }
                                                                 | label_15:
    0x0002588c movs r0, 0                                        |     r0 = 0;
    0x0002588e b 0x2575c                                         |     goto label_5;
                                                                 | label_13:
    0x00025890 blx 0x66b4                                        |     fcn_000066b4 ();
                                                                 | label_10:
    0x00025894 mov r1, sb                                        |     r1 = sb;
    0x00025896 mov r0, sl                                        |     r0 = sl;
    0x00025898 movs r2, 0x28                                     |     r2 = 0x28;
    0x0002589a bl 0x2c410                                        |     r0 = fcn_0002c410 (r0, r1, r2);
    0x0002589e ldm.w sl, {r0, r1}                                |     r0 = *(sl);
                                                                 |     r1 = *((sl + 4));
    0x000258a2 movs r3, 0                                        |     r3 = 0;
    0x000258a4 stm.w r5, {r0, r1}                                |     *(r5) = r0;
                                                                 |     *((r5 + 4)) = r1;
    0x000258a8 stm.w r3, {r0, r1}                                |     *(r3) = r0;
                                                                 |     *((r3 + 4)) = r1;
    0x000258ac udf 0xff                                          |     __asm ("udf 0xff");
                                                                 | label_7:
    0x000258ae movs r3, 0                                        |     r3 = 0;
    0x000258b0 ldr r3, [r3, 0x54]                                |     r3 = *((r3 + 0x54));
    0x000258b2 udf 0xff                                          |     __asm ("udf 0xff");
                                                                 | label_11:
    0x000258b4 movs r3, 0                                        |     r3 = 0;
    0x000258b6 ldr r3, [r3]                                      |     r3 = *(r3);
    0x000258b8 udf 0xff                                          |     __asm ("udf 0xff");
                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/liblttng-ust.so.1.0.0 @ 0x258c8 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.000258c8 ()                                  | void fcn_000258c8 (int16_t arg1, int16_t arg2) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x000258c8 push.w {r3, r4, r5, r6, r7, r8, sb, lr}       |     
    0x000258cc ldr r4, [r1]                                  |     r4 = *(r1);
    0x000258ce ldr r3, [r0, 0x24]                            |     r3 = *((r0 + 0x24));
    0x000258d0 ldr r2, [r4, 4]                               |     r2 = *((r4 + 4));
    0x000258d2 cmp r3, r2                                    |     
                                                             |     if (r3 >= r2) {
    0x000258d4 bhs.w 0x25a20                                 |         goto label_4;
                                                             |     }
    0x000258d8 add.w r3, r3, r3, lsl 1                       |     r3 += (r3 << 1);
    0x000258dc ldr r5, [r0, 0x28]                            |     r5 = *((r0 + 0x28));
    0x000258de add.w r3, r4, r3, lsl 4                       |     r3 = r4 + (r3 << 4);
    0x000258e2 add.w r7, r5, 0x240                           |     r7 = r5 + 0x240;
    0x000258e6 ldr r6, [r3, 0x20]                            |     r6 = *((r3 + 0x20));
    0x000258e8 cmp r7, r6                                    |     
                                                             |     if (r7 > r6) {
    0x000258ea bhi.w 0x25a20                                 |         goto label_4;
                                                             |     }
    0x000258ee ldr r3, [r3, 0x1c]                            |     r3 = *((r3 + 0x1c));
    0x000258f0 add.w lr, r3, r5                              |     lr = r3 + r5;
    0x000258f4 ldrb.w r3, [lr, 0x64]                         |     r3 = *((lr + 0x64));
    0x000258f8 ldr.w r5, [lr, 0x68]                          |     r5 = *((lr + 0x68));
    0x000258fc lsls r6, r3, 0x1f                             |     r6 = r3 << 0x1f;
                                                             |     if (r6 >= r3) {
    0x000258fe bpl 0x259f6                                   |         goto label_5;
                                                             |     }
    0x00025900 adds r3, r5, 1                                |     r3 = r5 + 1;
    0x00025902 cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x00025904 beq.w 0x25a0a                                 |         goto label_6;
                                                             |     }
    0x00025908 mov r5, r3                                    |     r5 = r3;
                                                             | label_1:
    0x0002590a mov.w ip, 0                                   |     
    0x0002590e b 0x25926                                     |     
                                                             |     while (r4 == 0) {
    0x00025910 orr r4, ip, 0x10000                           |         r4 = ip | 0x10000;
    0x00025914 add.w ip, ip, 1                               |         
    0x00025918 str r4, [r3, r2]                              |         *((r3 + r2)) = r4;
    0x0002591a ldr.w r3, [lr, 0x68]                          |         r3 = *((lr + 0x68));
    0x0002591e cmp r3, ip                                    |         
                                                             |         if (r3 < ip) {
    0x00025920 bls 0x25960                                   |             goto label_7;
                                                             |         }
                                                             | label_0:
    0x00025922 ldr r4, [r1]                                  |         r4 = *(r1);
    0x00025924 ldr r2, [r4, 4]                               |         r2 = *((r4 + 4));
    0x00025926 ldr r3, [r0]                                  |         r3 = *(r0);
    0x00025928 cmp r2, r3                                    |         
                                                             |         if (r2 < r3) {
    0x0002592a bls 0x259f2                                   |             goto label_8;
                                                             |         }
    0x0002592c ldr r2, [r0, 4]                               |         r2 = *((r0 + 4));
    0x0002592e add.w r3, r3, r3, lsl 1                       |         r3 += (r3 << 1);
    0x00025932 add.w r3, r4, r3, lsl 4                       |         r3 = r4 + (r3 << 4);
    0x00025936 add.w r2, r2, ip, lsl 2                       |         r2 += (ip << 2);
    0x0002593a ldr r4, [r3, 0x20]                            |         r4 = *((r3 + 0x20));
    0x0002593c adds r6, r2, 4                                |         r6 = r2 + 4;
    0x0002593e cmp r6, r4                                    |         
                                                             |         if (r6 > r4) {
    0x00025940 bhi 0x259f2                                   |             goto label_8;
                                                             |         }
    0x00025942 ldr r3, [r3, 0x1c]                            |         r3 = *((r3 + 0x1c));
    0x00025944 cmn r3, r2                                    |         
                                                             |         if (r3 == r2) {
    0x00025946 beq 0x259f2                                   |             goto label_8;
                                                             |         }
    0x00025948 ldr.w r4, [lr, 0x88]                          |         r4 = *((lr + 0x88));
    0x0002594c cmp r4, 0                                     |         
    0x0002594e beq 0x25910                                   |         
                                                             |     }
    0x00025950 mov r4, ip                                    |     r4 = ip;
    0x00025952 add.w ip, ip, 1                               |     
    0x00025956 str r4, [r3, r2]                              |     *((r3 + r2)) = r4;
    0x00025958 ldr.w r3, [lr, 0x68]                          |     r3 = *((lr + 0x68));
    0x0002595c cmp r3, ip                                    |     
                                                             |     if (r3 > ip) {
    0x0002595e bhi 0x25922                                   |         goto label_0;
                                                             |     }
                                                             | label_7:
    0x00025960 ldrb.w r3, [lr, 0x64]                         |     r3 = *((lr + 0x64));
    0x00025964 lsls r3, r3, 0x1f                             |     r3 <<= 0x1f;
    0x00025966 it mi                                         |     
                                                             |     if (r3 >= r3) {
    0x00025968 addmi r3, r5, -1                              |         r3 = r5 + -1;
                                                             |     }
                                                             |     if (r3 < r3) {
    0x0002596c bmi 0x25a0e                                   |         goto label_9;
                                                             |     }
    0x0002596e ldr.w r3, [lr, 0x88]                          |     r3 = *((lr + 0x88));
    0x00025972 clz r3, r3                                    |     r3 &= r3;
    0x00025976 lsrs r3, r3, 5                                |     r3 >>= 5;
    0x00025978 lsls r3, r3, 0x10                             |     r3 <<= 0x10;
                                                             | label_3:
    0x0002597a mov.w ip, 0                                   |     
    0x0002597e str r3, [r0, 8]                               |     *((r0 + 8)) = r3;
    0x00025980 mov r7, ip                                    |     r7 = ip;
                                                             |     if (r5 == 0) {
    0x00025982 cbz r5, 0x259e8                               |         goto label_2;
                                                             |     }
                                                             |     do {
    0x00025984 ldr r2, [r1]                                  |         r2 = *(r1);
    0x00025986 ldr r3, [r0, 0x14]                            |         r3 = *((r0 + 0x14));
    0x00025988 ldr.w r8, [r2, 4]                             |         r8 = *((r2 + 4));
    0x0002598c cmp r3, r8                                    |         
                                                             |         if (r3 >= r8) {
    0x0002598e bhs 0x259f2                                   |             goto label_8;
                                                             |         }
    0x00025990 ldr r4, [r0, 0x18]                            |         r4 = *((r0 + 0x18));
    0x00025992 add.w r3, r3, r3, lsl 1                       |         r3 += (r3 << 1);
    0x00025996 add.w r3, r2, r3, lsl 4                       |         r3 = r2 + (r3 << 4);
    0x0002599a add.w r4, r4, ip, lsl 3                       |         r4 += (ip << 3);
    0x0002599e ldr r6, [r3, 0x20]                            |         r6 = *((r3 + 0x20));
    0x000259a0 add.w sb, r4, 8                               |         sb = r4 + 8;
    0x000259a4 cmp sb, r6                                    |         
                                                             |         if (sb > r6) {
    0x000259a6 bhi 0x259f2                                   |             goto label_8;
                                                             |         }
    0x000259a8 ldr r3, [r3, 0x1c]                            |         r3 = *((r3 + 0x1c));
    0x000259aa adds r6, r3, r4                               |         r6 = r3 + r4;
                                                             |         if (r6 == r3) {
    0x000259ac beq 0x259f2                                   |             goto label_8;
                                                             |         }
    0x000259ae ldr r3, [r3, r4]                              |         r3 = *((r3 + r4));
    0x000259b0 cmp r3, r8                                    |         
                                                             |         if (r3 >= r8) {
    0x000259b2 bhs 0x259f2                                   |             goto label_8;
                                                             |         }
    0x000259b4 add.w r3, r3, r3, lsl 1                       |         r3 += (r3 << 1);
    0x000259b8 ldr r4, [r6, 4]                               |         r4 = *((r6 + 4));
    0x000259ba add.w r2, r2, r3, lsl 4                       |         r2 += (r3 << 4);
    0x000259be add.w r6, r4, 0x28                            |         r6 = r4 + 0x28;
    0x000259c2 ldr r3, [r2, 0x20]                            |         r3 = *((r2 + 0x20));
    0x000259c4 cmp r6, r3                                    |         
                                                             |         if (r6 > r3) {
    0x000259c6 bhi 0x259f2                                   |             goto label_8;
                                                             |         }
    0x000259c8 ldr r3, [r2, 0x1c]                            |         r3 = *((r2 + 0x1c));
    0x000259ca adds r3, r3, r4                               |         r3 += r4;
                                                             |         if (r3 == r3) {
    0x000259cc beq 0x259f2                                   |             goto label_8;
                                                             |         }
    0x000259ce ldr.w r2, [lr, 0x84]                          |         r2 = *((lr + 0x84));
                                                             |         if (r2 == 0) {
    0x000259d2 cbz r2, 0x25a1c                               |             goto label_10;
                                                             |         }
    0x000259d4 str r7, [r3, 4]                               |         *((r3 + 4)) = r7;
    0x000259d6 ldr.w r2, [lr, 0x84]                          |         r2 = *((lr + 0x84));
                                                             |         if (r2 == 0) {
    0x000259da cbz r2, 0x25a1c                               |             goto label_10;
                                                             |         }
    0x000259dc str r7, [r3, 8]                               |         *((r3 + 8)) = r7;
    0x000259de add.w ip, ip, 1                               |         
    0x000259e2 str r7, [r3, 0xc]                             |         *((r3 + 0xc)) = r7;
    0x000259e4 cmp ip, r5                                    |         
    0x000259e6 bne 0x25984                                   |         
                                                             |     } while (ip != r5);
                                                             | label_2:
    0x000259e8 ldr.w r3, [lr, 0x84]                          |     r3 = *((lr + 0x84));
                                                             |     if (r3 == 0) {
    0x000259ec cbz r3, 0x25a1c                               |         goto label_10;
                                                             |     }
    0x000259ee movs r3, 0                                    |     r3 = 0;
    0x000259f0 str r3, [r0, 0x30]                            |     *((r0 + 0x30)) = r3;
                                                             | label_8:
    0x000259f2 pop.w {r3, r4, r5, r6, r7, r8, sb, pc}        |     
                                                             | label_5:
    0x000259f6 cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x000259f8 bne 0x2590a                                   |         goto label_1;
                                                             |     }
    0x000259fa ldr.w r3, [lr, 0x88]                          |     r3 = *((lr + 0x88));
    0x000259fe clz r3, r3                                    |     r3 &= r3;
    0x00025a02 lsrs r3, r3, 5                                |     r3 >>= 5;
    0x00025a04 lsls r3, r3, 0x10                             |     r3 <<= 0x10;
    0x00025a06 str r3, [r0, 8]                               |     *((r0 + 8)) = r3;
    0x00025a08 b 0x259e8                                     |     goto label_2;
                                                             | label_6:
    0x00025a0a mov r3, r5                                    |     r3 = r5;
    0x00025a0c movs r5, 1                                    |     r5 = 1;
                                                             | label_9:
    0x00025a0e ldr.w r2, [lr, 0x88]                          |     r2 = *((lr + 0x88));
    0x00025a12 cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x00025a14 bne 0x2597a                                   |         goto label_3;
                                                             |     }
    0x00025a16 orr r3, r3, 0x10000                           |     r3 |= 0x10000;
    0x00025a1a b 0x2597a                                     |     goto label_3;
                                                             | label_10:
    0x00025a1c bl 0x254c8                                    |     fcn_000254c8 (r0);
                                                             | label_4:
    0x00025a20 movs r3, 0                                    |     r3 = 0;
    0x00025a22 ldr r3, [r3, 0x68]                            |     r3 = *((r3 + 0x68));
    0x00025a24 udf 0xff                                      |     __asm ("udf 0xff");
                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/liblttng-ust.so.1.0.0 @ 0x26354 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00026354 ()                                      | void fcn_00026354 (int16_t arg_4h, int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_224h;
                                                                 |     int16_t var_22ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x00026354 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00026358 mov lr, r0                                        |     lr = r0;
    0x0002635a ldr r0, [pc, 0x1b4]                               |     
    0x0002635c mov r6, r2                                        |     r6 = r2;
    0x0002635e sub.w sp, sp, 0x22c                               |     
    0x00026362 ldr r3, [r2]                                      |     r3 = *(r2);
    0x00026364 ldr r2, [pc, 0x1ac]                               |     r2 = *(0x26514);
    0x00026366 add r0, pc                                        |     r0 = "liblttng_ust[%ld/%ld]: Error: Unknown interpreter register type (%d) (in %s() at ../../../../lttng-ust-2.13.0/src/lib/lttng-ust/lttng-bytecode-interpreter.c:1322)\n";
    0x00026368 ldr.w sl, [pc, 0x1ac]                             |     
    0x0002636c ldr r2, [r0, r2]                                  |     
    0x0002636e add sl, pc                                        |     sl = 0x4c88a;
    0x00026370 ldr r2, [r2]                                      |     r2 = "liblttng_ust[%ld/%ld]: Error: Unknown interpreter register type (%d) (in %s() at ../../../../lttng-ust-2.13.0/src/lib/lttng-ust/lttng-bytecode-interpreter.c:1322)\n";
    0x00026372 str r2, [sp, 0x224]                               |     var_224h = r2;
    0x00026374 mov.w r2, 0                                       |     r2 = 0;
    0x00026378 ldr r2, [r3, 4]                                   |     r2 = *((r3 + 4));
    0x0002637a ldr.w r4, [lr, 0x24]                              |     r4 = *((lr + 0x24));
    0x0002637e cmp r4, r2                                        |     
                                                                 |     if (r4 >= r2) {
    0x00026380 bhs.w 0x2650a                                     |         goto label_3;
                                                                 |     }
    0x00026384 add.w r4, r4, r4, lsl 1                           |     r4 += (r4 << 1);
    0x00026388 ldr.w r0, [lr, 0x28]                              |     r0 = *((lr + 0x28));
    0x0002638c mov r7, r1                                        |     r7 = r1;
    0x0002638e add.w r4, r3, r4, lsl 4                           |     r4 = r3 + (r4 << 4);
    0x00026392 add.w r5, r0, 0x240                               |     r5 = r0 + 0x240;
    0x00026396 ldr r1, [r4, 0x20]                                |     r1 = *((r4 + 0x20));
    0x00026398 cmp r5, r1                                        |     
                                                                 |     if (r5 > r1) {
    0x0002639a bhi.w 0x2650a                                     |         goto label_3;
                                                                 |     }
    0x0002639e ldr r5, [r4, 0x1c]                                |     r5 = *((r4 + 0x1c));
    0x000263a0 ldr.w ip, [lr, 8]                                 |     ip = *((lr + 8));
    0x000263a2 stm r0!, {r3}                                     |     *(r0!) = r3;
    0x000263a4 add r5, r0                                        |     r5 += r0;
    0x000263a6 ldr.w r1, [r5, 0x88]                              |     r1 = *((r5 + 0x88));
    0x000263aa ldr r4, [r5, 0x50]                                |     r4 = *((r5 + 0x50));
    0x000263ac uxth.w r8, ip                                     |     r8 = (int16_t) ip;
    0x000263b0 add.w sb, r4, -1                                  |     sb = r4 + -1;
    0x000263b4 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x000263b6 bne 0x26458                                       |         goto label_4;
                                                                 |     }
                                                                 | label_0:
    0x000263b8 ldr.w r0, [lr, 0x14]                              |     r0 = *((lr + 0x14));
    0x000263bc cmp r2, r0                                        |     
                                                                 |     if (r2 < r0) {
    0x000263be bls 0x26454                                       |         goto label_5;
                                                                 |     }
    0x000263c0 ldr.w r4, [lr, 0x18]                              |     r4 = *((lr + 0x18));
    0x000263c4 add.w r0, r0, r0, lsl 1                           |     r0 += (r0 << 1);
    0x000263c8 add.w lr, r3, r0, lsl 4                           |     lr = r3 + (r0 << 4);
    0x000263cc add.w r4, r4, r8, lsl 3                           |     r4 += (r8 << 3);
    0x000263d0 ldr.w r0, [lr, 0x20]                              |     r0 = *((lr + 0x20));
    0x000263d4 add.w r8, r4, 8                                   |     r8 = r4 + 8;
    0x000263d8 cmp r8, r0                                        |     
                                                                 |     if (r8 > r0) {
    0x000263da bhi 0x26454                                       |         goto label_5;
                                                                 |     }
    0x000263dc ldr.w r8, [lr, 0x1c]                              |     r8 = *((lr + 0x1c));
    0x000263e0 adds.w fp, r8, r4                                 |     
                                                                 |     if (fp == r8) {
    0x000263e4 beq 0x26454                                       |         goto label_5;
                                                                 |     }
    0x000263e6 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000263e8 beq 0x2645c                                       |         goto label_6;
                                                                 |     }
                                                                 | label_1:
    0x000263ea ldr.w r1, [r8, r4]                                |     r1 = *((r8 + r4));
    0x000263ee cmp r2, r1                                        |     
                                                                 |     if (r2 < r1) {
    0x000263f0 bls 0x26454                                       |         goto label_5;
                                                                 |     }
    0x000263f2 add.w r1, r1, r1, lsl 1                           |     r1 += (r1 << 1);
    0x000263f6 ldr.w r0, [fp, 4]                                 |     r0 = *(arg_4h);
    0x000263fa add.w r1, r3, r1, lsl 4                           |     r1 = r3 + (r1 << 4);
    0x000263fe add.w r6, r0, 0x28                                |     r6 = r0 + 0x28;
    0x00026402 ldr r4, [r1, 0x20]                                |     r4 = *((r1 + 0x20));
    0x00026404 cmp r6, r4                                        |     
                                                                 |     if (r6 > r4) {
    0x00026406 bhi 0x26454                                       |         goto label_5;
                                                                 |     }
    0x00026408 ldr r1, [r1, 0x1c]                                |     r1 = *((r1 + 0x1c));
    0x0002640a adds r0, r1, r0                                   |     r0 = r1 + r0;
                                                                 |     if (r0 == r1) {
    0x0002640c beq 0x26454                                       |         goto label_5;
                                                                 |     }
    0x0002640e ldr r1, [r5, 0x54]                                |     r1 = *((r5 + 0x54));
    0x00026410 ldr r4, [r0, 0x10]                                |     r4 = *((r0 + 0x10));
    0x00026412 subs r1, 1                                        |     r1--;
    0x00026414 cmp r2, r4                                        |     
    0x00026416 and.w r1, r1, sb                                  |     r1 &= sb;
    0x0002641a and.w r1, r1, r7                                  |     r1 &= r7;
                                                                 |     if (r2 < r4) {
    0x0002641e bls 0x26454                                       |         goto label_5;
                                                                 |     }
    0x00026420 add.w r4, r4, r4, lsl 1                           |     r4 += (r4 << 1);
    0x00026424 ldr r2, [r0, 0x14]                                |     r2 = *((r0 + 0x14));
    0x00026426 add.w r3, r3, r4, lsl 4                           |     r3 += (r4 << 4);
    0x0002642a add r2, r1                                        |     r2 += r1;
    0x0002642c ldr r1, [r3, 0x20]                                |     r1 = *((r3 + 0x20));
    0x0002642e adds r0, r2, 1                                    |     r0 = r2 + 1;
    0x00026430 cmp r0, r1                                        |     
                                                                 |     if (r0 > r1) {
    0x00026432 bhi 0x26454                                       |         goto label_5;
                                                                 |     }
    0x00026434 ldr r0, [r3, 0x1c]                                |     r0 = *((r3 + 0x1c));
    0x00026436 add r0, r2                                        |     r0 += r2;
                                                                 |     do {
    0x00026438 ldr r2, [pc, 0xe0]                                |         
    0x0002643a ldr r3, [pc, 0xd8]                                |         r3 = *(0x26516);
    0x0002643c add r2, pc                                        |         r2 = 0x4c95c;
    0x0002643e ldr r3, [r2, r3]                                  |         r3 = *(0x4c95c);
    0x00026440 ldr r2, [r3]                                      |         r2 = *(0x4c95c);
    0x00026442 ldr r3, [sp, 0x224]                               |         r3 = var_224h;
    0x00026444 eors r2, r3                                       |         r2 ^= r3;
    0x00026446 mov.w r3, 0                                       |         r3 = 0;
    0x00026448 lsls r0, r0, 0xc                                  |         r0 <<= 0xc;
                                                                 |         if (r0 != r0) {
    0x0002644a bne 0x26506                                       |             goto label_7;
                                                                 |         }
    0x0002644c add.w sp, sp, 0x22c                               |         
    0x00026450 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_5:
    0x00026454 movs r0, 0                                        |         r0 = 0;
    0x00026456 b 0x26438                                         |         
                                                                 |     } while (1);
                                                                 | label_4:
    0x00026458 mov r8, ip                                        |     r8 = ip;
    0x0002645a b 0x263b8                                         |     goto label_0;
                                                                 | label_6:
    0x0002645c tst.w ip, 0x10000                                 |     
                                                                 |     if ((ip & 0x10000) == 0) {
    0x00026460 beq 0x263ea                                       |         goto label_1;
                                                                 |     }
    0x00026462 dmb ish                                           |     __asm ("dmb ish");
                                                                 |     do {
    0x00026466 ldrex r3, [r5]                                    |         __asm ("ldrex r3, [r5]");
    0x0002646a adds r3, 1                                        |         r3++;
    0x0002646c strex r2, r3, [r5]                                |         __asm ("strex r2, r3, [r5]");
    0x00026470 cmp r2, 0                                         |         
    0x00026472 bne 0x26466                                       |         
                                                                 |     } while (r2 != 0);
    0x00026474 dmb ish                                           |     __asm ("dmb ish");
    0x00026478 ldr r3, [pc, 0xa4]                                |     
    0x0002647a add r3, pc                                        |     r3 = 0x4c99e;
    0x0002647c ldr r2, [r3]                                      |     r2 = *(0x4c99e);
    0x0002647e str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00026480 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00026482 beq 0x264f8                                       |         goto label_8;
                                                                 |     }
                                                                 | label_2:
    0x00026484 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00026486 cmp r3, 2                                         |     
    0x00026488 beq 0x26490                                       |     
                                                                 |     while (1) {
    0x0002648a ldr r3, [r6]                                      |         r3 = *(r6);
    0x0002648c ldr r2, [r3, 4]                                   |         r2 = *((r3 + 4));
    0x0002648e b 0x263ea                                         |         goto label_1;
    0x00026490 blx 0x6908                                        |         r0 = fcn_00006908 ();
    0x00026494 ldr r2, [r0]                                      |         r2 = *(r0);
    0x00026496 str r0, [sp, 0x18]                                |         var_18h = r0;
    0x00026498 str r2, [sp, 0x1c]                                |         var_1ch = r2;
    0x0002649a blx 0x6890                                        |         fcn_00006890 ();
    0x0002649e str r0, [sp, 0x14]                                |         var_14h = r0;
    0x000264a0 blx 0x6554                                        |         fcn_00006554 ();
    0x000264a4 ldr r2, [pc, 0x7c]                                |         
    0x000264a6 mov.w r1, 0x200                                   |         r1 = 0x200;
    0x000264aa ldr r3, [sp, 0x14]                                |         r3 = var_14h;
    0x000264ac str r0, [sp]                                      |         *(sp) = r0;
    0x000264ae add r0, sp, 0x24                                  |         r0 += var_24h;
    0x000264b0 add r2, pc                                        |         r2 = 0x4c9d8;
    0x000264b2 str r0, [sp, 0x14]                                |         var_14h = r0;
    0x000264b4 adds r2, 0x3c                                     |         r2 += 0x3c;
    0x000264b6 str r2, [sp, 0xc]                                 |         var_ch = r2;
    0x000264b8 ldr r2, [pc, 0x6c]                                |         
    0x000264ba add r2, pc                                        |         r2 = 0x4c9e6;
    0x000264bc str r2, [sp, 4]                                   |         var_4h = r2;
    0x000264be movw r2, 0x21f                                    |         r2 = 0x21f;
    0x000264c2 str r2, [sp, 8]                                   |         var_8h = r2;
    0x000264c4 ldr r2, [pc, 0x64]                                |         
    0x000264c6 add r2, pc                                        |         r2 = 0x4c9f6;
    0x000264c8 bl 0x3e064                                        |         fcn_0003e064 (r0, r1, r2, r3);
    0x000264cc ldr r2, [sp, 0x14]                                |         r2 = var_14h;
    0x000264ce movs r3, 0                                        |         r3 = 0;
    0x000264d0 strb.w r3, [r2, 0x1ff]                            |         *((r2 + 0x1ff)) = r3;
    0x000264d4 mov r0, r2                                        |         r0 = r2;
    0x000264d6 blx 0x68b4                                        |         r0 = fcn_000068b4 ();
    0x000264da mov r2, r0                                        |         r2 = r0;
    0x000264dc ldrd r0, r1, [sp, 0x10]                           |         __asm ("ldrd r0, r1, [var_10h]");
    0x000264e0 bl 0x3d5e4                                        |         fcn_0003d5e4 (r0, r1, r2);
    0x000264e4 ldrd r3, r2, [sp, 0x18]                           |         __asm ("ldrd r3, r2, [var_18h]");
    0x000264e8 str r2, [r3]                                      |         *(r3) = r2;
    0x000264ea ldr r3, [pc, 0x44]                                |         r3 = *(0x26532);
    0x000264ec ldr.w r3, [sl, r3]                                |         r3 = *((sl + r3));
    0x000264f0 ldr r0, [r3]                                      |         r0 = *(0x26532);
    0x000264f2 blx 0x6560                                        |         fcn_00006560 ();
    0x000264f6 b 0x2648a                                         |         
                                                                 |     }
                                                                 | label_8:
    0x000264f8 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x000264fa bl 0x3d3f0                                        |     fcn_0003d3f0 ();
    0x000264fe ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00026500 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00026502 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00026504 b 0x26484                                         |     goto label_2;
                                                                 | label_7:
    0x00026506 blx 0x66b4                                        |     fcn_000066b4 ();
                                                                 | label_3:
    0x0002650a movs r3, 0                                        |     r3 = 0;
    0x0002650c ldr r3, [r3, 0x50]                                |     r3 = *((r3 + 0x50));
    0x0002650e udf 0xff                                          |     __asm ("udf 0xff");
                                                                 | }

[*] Function popen used 1 times liblttng-ust.so.1.0.0